summaryrefslogtreecommitdiff
path: root/iup
diff options
context:
space:
mode:
Diffstat (limited to 'iup')
-rwxr-xr-xiup/COPYRIGHT32
-rwxr-xr-xiup/Makefile29
-rwxr-xr-xiup/README12
-rwxr-xr-xiup/dox/iup.dox264
-rwxr-xr-xiup/etc/iup.manifest22
-rwxr-xr-xiup/etc/iup.rc44
-rwxr-xr-xiup/etc/iup64.manifest22
-rwxr-xr-xiup/etc/pen.curbin0 -> 326 bytes
-rwxr-xr-xiup/etc/tecgraf.icobin0 -> 7438 bytes
-rwxr-xr-xiup/fix_permission1
-rwxr-xr-xiup/include/iup.h363
-rwxr-xr-xiup/include/iup_pplot.h40
-rwxr-xr-xiup/include/iupcb.h1
-rwxr-xr-xiup/include/iupcbox.h1
-rwxr-xr-xiup/include/iupcbs.h43
-rwxr-xr-xiup/include/iupcells.h1
-rwxr-xr-xiup/include/iupcolorbar.h1
-rwxr-xr-xiup/include/iupcontrols.h46
-rwxr-xr-xiup/include/iupdef.h725
-rwxr-xr-xiup/include/iupdial.h1
-rwxr-xr-xiup/include/iupgauge.h1
-rwxr-xr-xiup/include/iupgc.h1
-rwxr-xr-xiup/include/iupgetparam.h1
-rwxr-xr-xiup/include/iupgl.h96
-rwxr-xr-xiup/include/iupim.h27
-rwxr-xr-xiup/include/iupkey.h457
-rwxr-xr-xiup/include/iuplua.h41
-rwxr-xr-xiup/include/iuplua_pplot.h26
-rwxr-xr-xiup/include/iupluacontrols.h27
-rwxr-xr-xiup/include/iupluagl.h26
-rwxr-xr-xiup/include/iupluaim.h26
-rwxr-xr-xiup/include/iupluaole.h26
-rwxr-xr-xiup/include/iupmask.h41
-rwxr-xr-xiup/include/iupmatrix.h1
-rwxr-xr-xiup/include/iupole.h24
-rwxr-xr-xiup/include/iupsbox.h1
-rwxr-xr-xiup/include/iupspin.h1
-rwxr-xr-xiup/include/iuptabs.h1
-rwxr-xr-xiup/include/iuptree.h1
-rwxr-xr-xiup/include/iupval.h1
-rwxr-xr-xiup/mak.vc8/iup.sln347
-rwxr-xr-xiup/mak.vc8/iup_pplot.vcproj137
-rwxr-xr-xiup/mak.vc8/iupcd.vcproj104
-rwxr-xr-xiup/mak.vc8/iupcontrols.vcproj335
-rwxr-xr-xiup/mak.vc8/iupcore.vcproj600
-rwxr-xr-xiup/mak.vc8/iupgl.vcproj127
-rwxr-xr-xiup/mak.vc8/iupgtk.vcproj217
-rwxr-xr-xiup/mak.vc8/iupim.vcproj103
-rwxr-xr-xiup/mak.vc8/iupimglib.vcproj142
-rwxr-xr-xiup/mak.vc8/iuplua3.vcproj194
-rwxr-xr-xiup/mak.vc8/iuplua5.vcproj462
-rwxr-xr-xiup/mak.vc8/iuplua_pplot3.vcproj110
-rwxr-xr-xiup/mak.vc8/iuplua_pplot5.vcproj122
-rwxr-xr-xiup/mak.vc8/iupluacd3.vcproj99
-rwxr-xr-xiup/mak.vc8/iupluacd5.vcproj99
-rwxr-xr-xiup/mak.vc8/iupluacontrols3.vcproj170
-rwxr-xr-xiup/mak.vc8/iupluacontrols5.vcproj182
-rwxr-xr-xiup/mak.vc8/iupluaexe3.vcproj120
-rwxr-xr-xiup/mak.vc8/iupluaexe5.vcproj121
-rwxr-xr-xiup/mak.vc8/iupluaexe5gtk.vcproj117
-rwxr-xr-xiup/mak.vc8/iupluagl3.vcproj101
-rwxr-xr-xiup/mak.vc8/iupluagl5.vcproj118
-rwxr-xr-xiup/mak.vc8/iupluaim3.vcproj101
-rwxr-xr-xiup/mak.vc8/iupluaim5.vcproj101
-rwxr-xr-xiup/mak.vc8/iupluaimglib5.vcproj97
-rwxr-xr-xiup/mak.vc8/iupluaole3.vcproj101
-rwxr-xr-xiup/mak.vc8/iupluaole5.vcproj114
-rwxr-xr-xiup/mak.vc8/iupmot.vcproj235
-rwxr-xr-xiup/mak.vc8/iupole.vcproj182
-rwxr-xr-xiup/mak.vc8/iupsample.vcproj1172
-rwxr-xr-xiup/mak.vc8/iupsamplegtk.vcproj791
-rwxr-xr-xiup/mak.vc8/iuptest.vcproj304
-rwxr-xr-xiup/mak.vc8/iuptestgtk.vcproj295
-rwxr-xr-xiup/mak.vc8/iupview.vcproj117
-rwxr-xr-xiup/mak.vc8/iupviewgtk.vcproj113
-rwxr-xr-xiup/mak.vc8/iupwin.vcproj250
-rwxr-xr-xiup/mak.vc8/ledc.vcproj120
-rwxr-xr-xiup/mak.vc9/iup.sln347
-rwxr-xr-xiup/mak.vc9/iup_pplot.vcproj137
-rwxr-xr-xiup/mak.vc9/iupcd.vcproj104
-rwxr-xr-xiup/mak.vc9/iupcontrols.vcproj335
-rwxr-xr-xiup/mak.vc9/iupcore.vcproj600
-rwxr-xr-xiup/mak.vc9/iupgl.vcproj127
-rwxr-xr-xiup/mak.vc9/iupgtk.vcproj221
-rwxr-xr-xiup/mak.vc9/iupim.vcproj103
-rwxr-xr-xiup/mak.vc9/iupimglib.vcproj142
-rwxr-xr-xiup/mak.vc9/iuplua3.vcproj194
-rwxr-xr-xiup/mak.vc9/iuplua5.vcproj470
-rwxr-xr-xiup/mak.vc9/iuplua_pplot3.vcproj110
-rwxr-xr-xiup/mak.vc9/iuplua_pplot5.vcproj122
-rwxr-xr-xiup/mak.vc9/iupluacd3.vcproj99
-rwxr-xr-xiup/mak.vc9/iupluacd5.vcproj99
-rwxr-xr-xiup/mak.vc9/iupluacontrols3.vcproj170
-rwxr-xr-xiup/mak.vc9/iupluacontrols5.vcproj182
-rwxr-xr-xiup/mak.vc9/iupluaexe3.vcproj120
-rwxr-xr-xiup/mak.vc9/iupluaexe5.vcproj121
-rwxr-xr-xiup/mak.vc9/iupluaexe5gtk.vcproj117
-rwxr-xr-xiup/mak.vc9/iupluagl3.vcproj101
-rwxr-xr-xiup/mak.vc9/iupluagl5.vcproj118
-rwxr-xr-xiup/mak.vc9/iupluaim3.vcproj101
-rwxr-xr-xiup/mak.vc9/iupluaim5.vcproj101
-rwxr-xr-xiup/mak.vc9/iupluaimglib5.vcproj97
-rwxr-xr-xiup/mak.vc9/iupluaole3.vcproj101
-rwxr-xr-xiup/mak.vc9/iupluaole5.vcproj114
-rwxr-xr-xiup/mak.vc9/iupmot.vcproj239
-rwxr-xr-xiup/mak.vc9/iupole.vcproj182
-rwxr-xr-xiup/mak.vc9/iupsample.vcproj1179
-rwxr-xr-xiup/mak.vc9/iupsamplegtk.vcproj798
-rwxr-xr-xiup/mak.vc9/iuptest.vcproj320
-rwxr-xr-xiup/mak.vc9/iuptestgtk.vcproj311
-rwxr-xr-xiup/mak.vc9/iupview.vcproj117
-rwxr-xr-xiup/mak.vc9/iupviewgtk.vcproj113
-rwxr-xr-xiup/mak.vc9/iupwin.vcproj254
-rwxr-xr-xiup/mak.vc9/ledc.vcproj120
-rwxr-xr-xiup/make_uname49
-rwxr-xr-xiup/make_uname.bat5
-rwxr-xr-xiup/make_uname_lib.bat6
-rwxr-xr-xiup/src/Makefile9
-rwxr-xr-xiup/src/config.mak118
-rwxr-xr-xiup/src/gtk/iupgtk_button.c477
-rwxr-xr-xiup/src/gtk/iupgtk_canvas.c624
-rwxr-xr-xiup/src/gtk/iupgtk_clipboard.c125
-rwxr-xr-xiup/src/gtk/iupgtk_colordlg.c211
-rwxr-xr-xiup/src/gtk/iupgtk_common.c830
-rwxr-xr-xiup/src/gtk/iupgtk_dialog.c1023
-rwxr-xr-xiup/src/gtk/iupgtk_drv.h82
-rwxr-xr-xiup/src/gtk/iupgtk_filedlg.c536
-rwxr-xr-xiup/src/gtk/iupgtk_focus.c44
-rwxr-xr-xiup/src/gtk/iupgtk_font.c413
-rwxr-xr-xiup/src/gtk/iupgtk_fontdlg.c91
-rwxr-xr-xiup/src/gtk/iupgtk_frame.c155
-rwxr-xr-xiup/src/gtk/iupgtk_globalattrib.c211
-rwxr-xr-xiup/src/gtk/iupgtk_help.c52
-rwxr-xr-xiup/src/gtk/iupgtk_image.c430
-rwxr-xr-xiup/src/gtk/iupgtk_key.c422
-rwxr-xr-xiup/src/gtk/iupgtk_label.c318
-rwxr-xr-xiup/src/gtk/iupgtk_list.c1439
-rwxr-xr-xiup/src/gtk/iupgtk_loop.c93
-rwxr-xr-xiup/src/gtk/iupgtk_menu.c525
-rwxr-xr-xiup/src/gtk/iupgtk_messagedlg.c128
-rwxr-xr-xiup/src/gtk/iupgtk_open.c172
-rwxr-xr-xiup/src/gtk/iupgtk_progressbar.c131
-rwxr-xr-xiup/src/gtk/iupgtk_tabs.c444
-rwxr-xr-xiup/src/gtk/iupgtk_text.c1716
-rwxr-xr-xiup/src/gtk/iupgtk_timer.c61
-rwxr-xr-xiup/src/gtk/iupgtk_tips.c100
-rwxr-xr-xiup/src/gtk/iupgtk_toggle.c519
-rwxr-xr-xiup/src/gtk/iupgtk_tree.c2369
-rwxr-xr-xiup/src/gtk/iupgtk_val.c208
-rwxr-xr-xiup/src/iup.c86
-rwxr-xr-xiup/src/iup.def353
-rw-r--r--iup/src/iup.dep334
-rwxr-xr-xiup/src/iup_array.c108
-rwxr-xr-xiup/src/iup_array.h63
-rwxr-xr-xiup/src/iup_assert.c54
-rwxr-xr-xiup/src/iup_assert.h68
-rwxr-xr-xiup/src/iup_attrib.c673
-rwxr-xr-xiup/src/iup_attrib.h137
-rwxr-xr-xiup/src/iup_box.c238
-rwxr-xr-xiup/src/iup_box.h40
-rwxr-xr-xiup/src/iup_button.c206
-rwxr-xr-xiup/src/iup_button.h39
-rwxr-xr-xiup/src/iup_callback.c90
-rwxr-xr-xiup/src/iup_canvas.c169
-rwxr-xr-xiup/src/iup_canvas.h37
-rwxr-xr-xiup/src/iup_cbox.c143
-rwxr-xr-xiup/src/iup_childtree.c455
-rwxr-xr-xiup/src/iup_childtree.h54
-rwxr-xr-xiup/src/iup_class.c314
-rwxr-xr-xiup/src/iup_class.h414
-rwxr-xr-xiup/src/iup_classattrib.c508
-rwxr-xr-xiup/src/iup_classbase.c466
-rwxr-xr-xiup/src/iup_classbase.h175
-rwxr-xr-xiup/src/iup_colordlg.c44
-rwxr-xr-xiup/src/iup_dialog.c747
-rwxr-xr-xiup/src/iup_dialog.h89
-rwxr-xr-xiup/src/iup_dlglist.c130
-rwxr-xr-xiup/src/iup_dlglist.h58
-rwxr-xr-xiup/src/iup_dll.rc41
-rwxr-xr-xiup/src/iup_drv.h99
-rwxr-xr-xiup/src/iup_drvfont.h116
-rwxr-xr-xiup/src/iup_drvinfo.h103
-rwxr-xr-xiup/src/iup_filedlg.c67
-rwxr-xr-xiup/src/iup_fill.c242
-rwxr-xr-xiup/src/iup_focus.c281
-rwxr-xr-xiup/src/iup_focus.h53
-rwxr-xr-xiup/src/iup_font.c714
-rwxr-xr-xiup/src/iup_fontdlg.c48
-rwxr-xr-xiup/src/iup_frame.c165
-rwxr-xr-xiup/src/iup_frame.h22
-rwxr-xr-xiup/src/iup_func.c78
-rwxr-xr-xiup/src/iup_func.h28
-rwxr-xr-xiup/src/iup_getparam.c1254
-rwxr-xr-xiup/src/iup_globalattrib.c153
-rwxr-xr-xiup/src/iup_globalattrib.h33
-rwxr-xr-xiup/src/iup_hbox.c309
-rwxr-xr-xiup/src/iup_image.c1017
-rwxr-xr-xiup/src/iup_image.h61
-rwxr-xr-xiup/src/iup_key.c269
-rwxr-xr-xiup/src/iup_key.h70
-rwxr-xr-xiup/src/iup_label.c183
-rwxr-xr-xiup/src/iup_label.h37
-rwxr-xr-xiup/src/iup_layout.c273
-rwxr-xr-xiup/src/iup_layout.h28
-rwxr-xr-xiup/src/iup_ledlex.c366
-rwxr-xr-xiup/src/iup_ledlex.h54
-rwxr-xr-xiup/src/iup_ledparse.c288
-rwxr-xr-xiup/src/iup_list.c711
-rwxr-xr-xiup/src/iup_list.h53
-rwxr-xr-xiup/src/iup_mask.c146
-rwxr-xr-xiup/src/iup_mask.h55
-rwxr-xr-xiup/src/iup_maskmatch.c582
-rwxr-xr-xiup/src/iup_maskmatch.h62
-rwxr-xr-xiup/src/iup_maskparse.c547
-rwxr-xr-xiup/src/iup_maskparse.h46
-rwxr-xr-xiup/src/iup_menu.c364
-rwxr-xr-xiup/src/iup_menu.h35
-rwxr-xr-xiup/src/iup_messagedlg.c70
-rwxr-xr-xiup/src/iup_names.c193
-rwxr-xr-xiup/src/iup_names.h34
-rwxr-xr-xiup/src/iup_normalizer.c188
-rwxr-xr-xiup/src/iup_object.c180
-rwxr-xr-xiup/src/iup_object.h132
-rwxr-xr-xiup/src/iup_open.c119
-rwxr-xr-xiup/src/iup_predial.c510
-rwxr-xr-xiup/src/iup_predial.h32
-rwxr-xr-xiup/src/iup_progressbar.c118
-rwxr-xr-xiup/src/iup_progressbar.h35
-rwxr-xr-xiup/src/iup_radio.c195
-rwxr-xr-xiup/src/iup_register.c123
-rwxr-xr-xiup/src/iup_register.h47
-rwxr-xr-xiup/src/iup_sbox.c413
-rwxr-xr-xiup/src/iup_scanf.c200
-rwxr-xr-xiup/src/iup_show.c256
-rwxr-xr-xiup/src/iup_spin.c301
-rwxr-xr-xiup/src/iup_stdcontrols.h76
-rwxr-xr-xiup/src/iup_str.c716
-rwxr-xr-xiup/src/iup_str.h183
-rwxr-xr-xiup/src/iup_strmessage.c137
-rwxr-xr-xiup/src/iup_strmessage.h45
-rwxr-xr-xiup/src/iup_table.c736
-rwxr-xr-xiup/src/iup_table.h143
-rwxr-xr-xiup/src/iup_tabs.c471
-rwxr-xr-xiup/src/iup_tabs.h50
-rwxr-xr-xiup/src/iup_text.c513
-rwxr-xr-xiup/src/iup_text.h48
-rwxr-xr-xiup/src/iup_timer.c80
-rwxr-xr-xiup/src/iup_timer.h24
-rwxr-xr-xiup/src/iup_toggle.c140
-rwxr-xr-xiup/src/iup_toggle.h37
-rwxr-xr-xiup/src/iup_tree.c499
-rwxr-xr-xiup/src/iup_tree.h57
-rwxr-xr-xiup/src/iup_user.c41
-rwxr-xr-xiup/src/iup_val.c209
-rwxr-xr-xiup/src/iup_val.h42
-rwxr-xr-xiup/src/iup_vbox.c311
-rwxr-xr-xiup/src/iup_zbox.c375
-rw-r--r--iup/src/iupgtk.dep259
-rwxr-xr-xiup/src/iupstub.mak12
-rwxr-xr-xiup/src/make_uname4
-rwxr-xr-xiup/src/make_uname.bat55
-rwxr-xr-xiup/src/mot/iupmot_button.c301
-rwxr-xr-xiup/src/mot/iupmot_canvas.c639
-rwxr-xr-xiup/src/mot/iupmot_clipboard.c208
-rwxr-xr-xiup/src/mot/iupmot_color.c380
-rwxr-xr-xiup/src/mot/iupmot_color.h36
-rwxr-xr-xiup/src/mot/iupmot_colordlg.c31
-rwxr-xr-xiup/src/mot/iupmot_common.c630
-rwxr-xr-xiup/src/mot/iupmot_dialog.c1069
-rwxr-xr-xiup/src/mot/iupmot_drv.h75
-rwxr-xr-xiup/src/mot/iupmot_filedlg.c578
-rwxr-xr-xiup/src/mot/iupmot_focus.c35
-rwxr-xr-xiup/src/mot/iupmot_font.c443
-rwxr-xr-xiup/src/mot/iupmot_fontdlg.c31
-rwxr-xr-xiup/src/mot/iupmot_frame.c257
-rwxr-xr-xiup/src/mot/iupmot_globalattrib.c155
-rwxr-xr-xiup/src/mot/iupmot_image.c397
-rwxr-xr-xiup/src/mot/iupmot_key.c425
-rwxr-xr-xiup/src/mot/iupmot_label.c256
-rwxr-xr-xiup/src/mot/iupmot_list.c1404
-rwxr-xr-xiup/src/mot/iupmot_loop.c108
-rwxr-xr-xiup/src/mot/iupmot_menu.c457
-rwxr-xr-xiup/src/mot/iupmot_messagedlg.c191
-rwxr-xr-xiup/src/mot/iupmot_open.c141
-rwxr-xr-xiup/src/mot/iupmot_progressbar.c165
-rwxr-xr-xiup/src/mot/iupmot_tabs.c593
-rwxr-xr-xiup/src/mot/iupmot_text.c1165
-rwxr-xr-xiup/src/mot/iupmot_timer.c70
-rwxr-xr-xiup/src/mot/iupmot_tips.c226
-rwxr-xr-xiup/src/mot/iupmot_toggle.c469
-rwxr-xr-xiup/src/mot/iupmot_tree.c2848
-rwxr-xr-xiup/src/mot/iupmot_val.c488
-rwxr-xr-xiup/src/mot/iupunix_help.c44
-rwxr-xr-xiup/src/mot/iupunix_info.c305
-rwxr-xr-xiup/src/win/iupwin_brush.c62
-rwxr-xr-xiup/src/win/iupwin_brush.h26
-rwxr-xr-xiup/src/win/iupwin_button.c715
-rwxr-xr-xiup/src/win/iupwin_canvas.c724
-rwxr-xr-xiup/src/win/iupwin_clipboard.c190
-rwxr-xr-xiup/src/win/iupwin_colordlg.c133
-rwxr-xr-xiup/src/win/iupwin_common.c865
-rwxr-xr-xiup/src/win/iupwin_dialog.c1439
-rwxr-xr-xiup/src/win/iupwin_draw.c328
-rwxr-xr-xiup/src/win/iupwin_draw.h47
-rwxr-xr-xiup/src/win/iupwin_drv.h113
-rwxr-xr-xiup/src/win/iupwin_filedlg.c580
-rwxr-xr-xiup/src/win/iupwin_focus.c62
-rwxr-xr-xiup/src/win/iupwin_font.c342
-rwxr-xr-xiup/src/win/iupwin_fontdlg.c160
-rwxr-xr-xiup/src/win/iupwin_frame.c203
-rwxr-xr-xiup/src/win/iupwin_globalattrib.c243
-rwxr-xr-xiup/src/win/iupwin_handle.c56
-rwxr-xr-xiup/src/win/iupwin_handle.h28
-rwxr-xr-xiup/src/win/iupwin_image.c668
-rwxr-xr-xiup/src/win/iupwin_info.c277
-rwxr-xr-xiup/src/win/iupwin_info.h29
-rwxr-xr-xiup/src/win/iupwin_key.c348
-rwxr-xr-xiup/src/win/iupwin_label.c339
-rwxr-xr-xiup/src/win/iupwin_list.c1460
-rwxr-xr-xiup/src/win/iupwin_loop.c135
-rwxr-xr-xiup/src/win/iupwin_menu.c667
-rwxr-xr-xiup/src/win/iupwin_messagedlg.c105
-rwxr-xr-xiup/src/win/iupwin_open.c124
-rwxr-xr-xiup/src/win/iupwin_progressbar.c164
-rwxr-xr-xiup/src/win/iupwin_tabs.c680
-rwxr-xr-xiup/src/win/iupwin_text.c1993
-rwxr-xr-xiup/src/win/iupwin_timer.c88
-rwxr-xr-xiup/src/win/iupwin_tips.c191
-rwxr-xr-xiup/src/win/iupwin_toggle.c693
-rwxr-xr-xiup/src/win/iupwin_tree.c2542
-rwxr-xr-xiup/src/win/iupwin_val.c315
-rwxr-xr-xiup/src/win/iupwindows_help.c32
-rwxr-xr-xiup/src/win/iupwindows_info.c212
-rwxr-xr-xiup/src/win/iupwindows_main.c66
-rwxr-xr-xiup/srccd/Makefile6
-rwxr-xr-xiup/srccd/config.mak14
-rwxr-xr-xiup/srccd/iup_cd.c70
-rwxr-xr-xiup/srccd/iupcd.def2
-rw-r--r--iup/srccd/iupcd.dep3
-rwxr-xr-xiup/srccd/make_uname3
-rwxr-xr-xiup/srccd/make_uname.bat4
-rwxr-xr-xiup/srcconsole/Makefile12
-rwxr-xr-xiup/srcconsole/config.mak138
-rwxr-xr-xiup/srcconsole/console3.lua181
-rwxr-xr-xiup/srcconsole/console5.lua204
-rwxr-xr-xiup/srcconsole/copy_all_so11
-rwxr-xr-xiup/srcconsole/copy_dll.bat10
-rwxr-xr-xiup/srcconsole/copy_dll_64.bat10
-rwxr-xr-xiup/srcconsole/copy_so4
-rwxr-xr-xiup/srcconsole/iup_lua3.c128
-rwxr-xr-xiup/srcconsole/iup_lua51.c493
-rw-r--r--iup/srcconsole/iuplua3.bat3
-rwxr-xr-xiup/srcconsole/iuplua3.mak90
-rwxr-xr-xiup/srcconsole/iuplua3.rc45
-rwxr-xr-xiup/srcconsole/iuplua5.rc59
-rwxr-xr-xiup/srcconsole/iuplua516
-rw-r--r--iup/srcconsole/iuplua51.bat3
-rw-r--r--iup/srcconsole/iuplua51.dep4
-rwxr-xr-xiup/srcconsole/iuplua51mot6
-rw-r--r--iup/srcconsole/iuplua51mot.dep12
-rwxr-xr-xiup/srcconsole/loh/console3.loh254
-rwxr-xr-xiup/srcconsole/loh/console3_be32.loh254
-rwxr-xr-xiup/srcconsole/loh/console3_be64.loh254
-rwxr-xr-xiup/srcconsole/loh/console3_le64.loh251
-rwxr-xr-xiup/srcconsole/loh/console3_le64w.loh251
-rwxr-xr-xiup/srcconsole/loh/console5.loh475
-rwxr-xr-xiup/srcconsole/loh/console5_be32.loh475
-rwxr-xr-xiup/srcconsole/loh/console5_be64.loh524
-rwxr-xr-xiup/srcconsole/loh/console5_le64.loh524
-rwxr-xr-xiup/srcconsole/loh/console5_le64w.loh525
-rwxr-xr-xiup/srcconsole/lua.icobin0 -> 22486 bytes
-rwxr-xr-xiup/srcconsole/make_uname6
-rwxr-xr-xiup/srcconsole/make_uname.bat30
-rwxr-xr-xiup/srcconsole/wlua_dll8_x64.manifest33
-rwxr-xr-xiup/srcconsole/wlua_dll8_x86.manifest33
-rwxr-xr-xiup/srcconsole/wlua_dll9_x64.manifest33
-rwxr-xr-xiup/srcconsole/wlua_dll9_x86.manifest33
-rwxr-xr-xiup/srccontrols/Makefile6
-rwxr-xr-xiup/srccontrols/color/iup_colorbrowser.c849
-rwxr-xr-xiup/srccontrols/color/iup_colorbrowserdlg.c1120
-rwxr-xr-xiup/srccontrols/color/iup_colorhsi.c358
-rwxr-xr-xiup/srccontrols/color/iup_colorhsi.h44
-rwxr-xr-xiup/srccontrols/config.mak48
-rwxr-xr-xiup/srccontrols/iup_cdutil.c153
-rwxr-xr-xiup/srccontrols/iup_cdutil.h35
-rwxr-xr-xiup/srccontrols/iup_cells.c974
-rwxr-xr-xiup/srccontrols/iup_colorbar.c1082
-rwxr-xr-xiup/srccontrols/iup_controls.c56
-rwxr-xr-xiup/srccontrols/iup_controls.h33
-rwxr-xr-xiup/srccontrols/iup_dial.c864
-rwxr-xr-xiup/srccontrols/iup_gauge.c435
-rwxr-xr-xiup/srccontrols/iup_oldmask.c208
-rwxr-xr-xiup/srccontrols/iup_oldtabs.c2616
-rwxr-xr-xiup/srccontrols/iup_oldval.c809
-rwxr-xr-xiup/srccontrols/iupcontrols.def35
-rw-r--r--iup/srccontrols/iupcontrols.dep173
-rwxr-xr-xiup/srccontrols/make_uname3
-rwxr-xr-xiup/srccontrols/make_uname.bat4
-rwxr-xr-xiup/srccontrols/matrix/iupmat_aux.c480
-rwxr-xr-xiup/srccontrols/matrix/iupmat_aux.h37
-rwxr-xr-xiup/srccontrols/matrix/iupmat_cd.h25
-rwxr-xr-xiup/srccontrols/matrix/iupmat_colres.c182
-rwxr-xr-xiup/srccontrols/matrix/iupmat_colres.h24
-rwxr-xr-xiup/srccontrols/matrix/iupmat_def.h122
-rwxr-xr-xiup/srccontrols/matrix/iupmat_draw.c866
-rwxr-xr-xiup/srccontrols/matrix/iupmat_draw.h31
-rwxr-xr-xiup/srccontrols/matrix/iupmat_edit.c450
-rwxr-xr-xiup/srccontrols/matrix/iupmat_edit.h26
-rwxr-xr-xiup/srccontrols/matrix/iupmat_focus.c58
-rwxr-xr-xiup/srccontrols/matrix/iupmat_focus.h21
-rwxr-xr-xiup/srccontrols/matrix/iupmat_getset.c358
-rwxr-xr-xiup/srccontrols/matrix/iupmat_getset.h37
-rwxr-xr-xiup/srccontrols/matrix/iupmat_key.c229
-rwxr-xr-xiup/srccontrols/matrix/iupmat_key.h23
-rwxr-xr-xiup/srccontrols/matrix/iupmat_mark.c720
-rwxr-xr-xiup/srccontrols/matrix/iupmat_mark.h42
-rwxr-xr-xiup/srccontrols/matrix/iupmat_mem.c319
-rwxr-xr-xiup/srccontrols/matrix/iupmat_mem.h24
-rwxr-xr-xiup/srccontrols/matrix/iupmat_mouse.c212
-rwxr-xr-xiup/srccontrols/matrix/iupmat_mouse.h22
-rwxr-xr-xiup/srccontrols/matrix/iupmat_numlc.c495
-rwxr-xr-xiup/srccontrols/matrix/iupmat_numlc.h27
-rwxr-xr-xiup/srccontrols/matrix/iupmat_scroll.c495
-rwxr-xr-xiup/srccontrols/matrix/iupmat_scroll.h69
-rwxr-xr-xiup/srccontrols/matrix/iupmatrix.c980
-rwxr-xr-xiup/srcgl/Makefile6
-rwxr-xr-xiup/srcgl/config.mak20
-rwxr-xr-xiup/srcgl/iup_glcanvas_win.c411
-rwxr-xr-xiup/srcgl/iup_glcanvas_x.c448
-rwxr-xr-xiup/srcgl/iupgl.def9
-rw-r--r--iup/srcgl/iupgl.dep5
-rwxr-xr-xiup/srcgl/make_uname3
-rwxr-xr-xiup/srcgl/make_uname.bat4
-rwxr-xr-xiup/srcim/Makefile6
-rwxr-xr-xiup/srcim/config.mak15
-rwxr-xr-xiup/srcim/iup_im.c306
-rwxr-xr-xiup/srcim/iupim.def3
-rw-r--r--iup/srcim/iupim.dep7
-rwxr-xr-xiup/srcim/make_uname3
-rwxr-xr-xiup/srcim/make_uname.bat4
-rwxr-xr-xiup/srcimglib/Makefile6
-rwxr-xr-xiup/srcimglib/config.mak14
-rwxr-xr-xiup/srcimglib/iup_image_library.c403
-rwxr-xr-xiup/srcimglib/iup_imglib_bitmaps.h1248
-rwxr-xr-xiup/srcimglib/iup_imglib_bitmaps8.h14421
-rwxr-xr-xiup/srcimglib/iup_imglib_bitmapsgtk.h224
-rwxr-xr-xiup/srcimglib/iup_imglib_icons.h240
-rwxr-xr-xiup/srcimglib/iup_imglib_icons8.h1788
-rwxr-xr-xiup/srcimglib/iup_imglib_logos.h1319
-rwxr-xr-xiup/srcimglib/iup_imglib_logos8.h1915
-rwxr-xr-xiup/srcimglib/iupimglib.def4
-rw-r--r--iup/srcimglib/iupimglib.dep5
-rwxr-xr-xiup/srcimglib/make_uname3
-rwxr-xr-xiup/srcimglib/make_uname.bat4
-rwxr-xr-xiup/srcledc/Makefile6
-rwxr-xr-xiup/srcledc/config.mak22
-rwxr-xr-xiup/srcledc/ledc6
-rw-r--r--iup/srcledc/ledc.bat3
-rwxr-xr-xiup/srcledc/ledc.c920
-rw-r--r--iup/srcledc/ledc.dep3
-rwxr-xr-xiup/srcledc/ledc.h84
-rwxr-xr-xiup/srcledc/ledc.l65
-rwxr-xr-xiup/srcledc/ledc.y189
-rwxr-xr-xiup/srcledc/lex.yy.c1604
-rwxr-xr-xiup/srcledc/make_uname3
-rwxr-xr-xiup/srcledc/make_uname.bat22
-rwxr-xr-xiup/srcledc/y.tab.c507
-rwxr-xr-xiup/srcledc/y.tab.h10
-rwxr-xr-xiup/srclua3/Makefile21
-rwxr-xr-xiup/srclua3/cells.lua37
-rwxr-xr-xiup/srclua3/colorbar.lua21
-rwxr-xr-xiup/srclua3/colorbrowser.lua17
-rwxr-xr-xiup/srclua3/config.mak19
-rwxr-xr-xiup/srclua3/constants.lua148
-rwxr-xr-xiup/srclua3/dial.lua15
-rwxr-xr-xiup/srclua3/gauge.lua10
-rwxr-xr-xiup/srclua3/il.h81
-rwxr-xr-xiup/srclua3/il_cbox.c36
-rwxr-xr-xiup/srclua3/il_cells.c150
-rwxr-xr-xiup/srclua3/il_colorbar.c97
-rwxr-xr-xiup/srclua3/il_colorbrowser.c72
-rwxr-xr-xiup/srclua3/il_controls.h26
-rwxr-xr-xiup/srclua3/il_dial.c53
-rwxr-xr-xiup/srclua3/il_gauge.c52
-rwxr-xr-xiup/srclua3/il_getcolor.c42
-rwxr-xr-xiup/srclua3/il_getparam.c171
-rwxr-xr-xiup/srclua3/il_mask.c138
-rwxr-xr-xiup/srclua3/il_matrix.c308
-rwxr-xr-xiup/srclua3/il_sbox.c50
-rwxr-xr-xiup/srclua3/il_scanf.c181
-rwxr-xr-xiup/srclua3/il_spin.c66
-rwxr-xr-xiup/srclua3/il_tabs.c67
-rwxr-xr-xiup/srclua3/il_tree.c283
-rwxr-xr-xiup/srclua3/il_val.c77
-rwxr-xr-xiup/srclua3/iup_pplot.mak15
-rwxr-xr-xiup/srclua3/iupcd.mak19
-rwxr-xr-xiup/srclua3/iupcontrols.mak19
-rwxr-xr-xiup/srclua3/iupgl.mak12
-rwxr-xr-xiup/srclua3/iupim.mak12
-rwxr-xr-xiup/srclua3/iuplua.c494
-rwxr-xr-xiup/srclua3/iuplua.lua134
-rwxr-xr-xiup/srclua3/iuplua3.def16
-rwxr-xr-xiup/srclua3/iuplua_api.c762
-rwxr-xr-xiup/srclua3/iuplua_cd.c43
-rwxr-xr-xiup/srclua3/iuplua_controls.c25
-rwxr-xr-xiup/srclua3/iuplua_glcanvas.c112
-rwxr-xr-xiup/srclua3/iuplua_im.c39
-rwxr-xr-xiup/srclua3/iuplua_olecontrol.c34
-rwxr-xr-xiup/srclua3/iuplua_pplot.c241
-rwxr-xr-xiup/srclua3/iuplua_pplot3.def2
-rwxr-xr-xiup/srclua3/iuplua_widgets.c662
-rwxr-xr-xiup/srclua3/iuplua_widgets.lua942
-rwxr-xr-xiup/srclua3/iupluacd3.def3
-rwxr-xr-xiup/srclua3/iupluacontrols3.def2
-rwxr-xr-xiup/srclua3/iupluagl3.def2
-rwxr-xr-xiup/srclua3/iupluaim3.def2
-rwxr-xr-xiup/srclua3/iupluaole3.def2
-rwxr-xr-xiup/srclua3/iupole.mak13
-rwxr-xr-xiup/srclua3/loh/cells.loh76
-rwxr-xr-xiup/srclua3/loh/cells_be32.loh76
-rwxr-xr-xiup/srclua3/loh/cells_be64.loh75
-rwxr-xr-xiup/srclua3/loh/cells_le64.loh76
-rwxr-xr-xiup/srclua3/loh/cells_le64w.loh76
-rwxr-xr-xiup/srclua3/loh/colorbar.loh49
-rwxr-xr-xiup/srclua3/loh/colorbar_be32.loh49
-rwxr-xr-xiup/srclua3/loh/colorbar_be64.loh48
-rwxr-xr-xiup/srclua3/loh/colorbar_le64.loh49
-rwxr-xr-xiup/srclua3/loh/colorbar_le64w.loh49
-rwxr-xr-xiup/srclua3/loh/colorbrowser.loh39
-rwxr-xr-xiup/srclua3/loh/colorbrowser_be32.loh39
-rwxr-xr-xiup/srclua3/loh/colorbrowser_be64.loh40
-rwxr-xr-xiup/srclua3/loh/colorbrowser_le64.loh39
-rwxr-xr-xiup/srclua3/loh/colorbrowser_le64w.loh39
-rwxr-xr-xiup/srclua3/loh/constants.loh301
-rwxr-xr-xiup/srclua3/loh/constants_be32.loh289
-rwxr-xr-xiup/srclua3/loh/constants_be64.loh301
-rwxr-xr-xiup/srclua3/loh/constants_le64.loh289
-rwxr-xr-xiup/srclua3/loh/constants_le64w.loh301
-rwxr-xr-xiup/srclua3/loh/dial.loh31
-rwxr-xr-xiup/srclua3/loh/dial_be32.loh31
-rwxr-xr-xiup/srclua3/loh/dial_be64.loh30
-rwxr-xr-xiup/srclua3/loh/dial_le64.loh31
-rwxr-xr-xiup/srclua3/loh/dial_le64w.loh31
-rwxr-xr-xiup/srclua3/loh/gauge.loh28
-rwxr-xr-xiup/srclua3/loh/gauge_be32.loh28
-rwxr-xr-xiup/srclua3/loh/gauge_be64.loh27
-rwxr-xr-xiup/srclua3/loh/gauge_le64.loh28
-rwxr-xr-xiup/srclua3/loh/gauge_le64w.loh28
-rwxr-xr-xiup/srclua3/loh/iuplua.loh170
-rwxr-xr-xiup/srclua3/loh/iuplua_be32.loh170
-rwxr-xr-xiup/srclua3/loh/iuplua_be64.loh170
-rwxr-xr-xiup/srclua3/loh/iuplua_le64.loh170
-rwxr-xr-xiup/srclua3/loh/iuplua_le64w.loh170
-rwxr-xr-xiup/srclua3/loh/iuplua_widgets.loh939
-rwxr-xr-xiup/srclua3/loh/iuplua_widgets_be32.loh939
-rwxr-xr-xiup/srclua3/loh/iuplua_widgets_be64.loh939
-rwxr-xr-xiup/srclua3/loh/iuplua_widgets_le64.loh939
-rwxr-xr-xiup/srclua3/loh/iuplua_widgets_le64w.loh920
-rwxr-xr-xiup/srclua3/loh/matrix.loh120
-rwxr-xr-xiup/srclua3/loh/matrix_be32.loh120
-rwxr-xr-xiup/srclua3/loh/matrix_be64.loh120
-rwxr-xr-xiup/srclua3/loh/matrix_le64.loh120
-rwxr-xr-xiup/srclua3/loh/matrix_le64w.loh118
-rwxr-xr-xiup/srclua3/loh/pplot.loh68
-rwxr-xr-xiup/srclua3/loh/pplot_be32.loh68
-rwxr-xr-xiup/srclua3/loh/pplot_be64.loh68
-rwxr-xr-xiup/srclua3/loh/pplot_le64.loh68
-rwxr-xr-xiup/srclua3/loh/pplot_le64w.loh69
-rwxr-xr-xiup/srclua3/loh/sbox.loh27
-rwxr-xr-xiup/srclua3/loh/sbox_be32.loh27
-rwxr-xr-xiup/srclua3/loh/sbox_be64.loh27
-rwxr-xr-xiup/srclua3/loh/sbox_le64.loh27
-rwxr-xr-xiup/srclua3/loh/sbox_le64w.loh27
-rwxr-xr-xiup/srclua3/loh/spin.loh43
-rwxr-xr-xiup/srclua3/loh/spin_be32.loh43
-rwxr-xr-xiup/srclua3/loh/spin_be64.loh43
-rwxr-xr-xiup/srclua3/loh/spin_le64.loh43
-rwxr-xr-xiup/srclua3/loh/spin_le64w.loh44
-rwxr-xr-xiup/srclua3/loh/tabs.loh33
-rwxr-xr-xiup/srclua3/loh/tabs_be32.loh33
-rwxr-xr-xiup/srclua3/loh/tabs_be64.loh33
-rwxr-xr-xiup/srclua3/loh/tabs_le64.loh33
-rwxr-xr-xiup/srclua3/loh/tabs_le64w.loh34
-rwxr-xr-xiup/srclua3/loh/tree.loh115
-rwxr-xr-xiup/srclua3/loh/tree_be32.loh115
-rwxr-xr-xiup/srclua3/loh/tree_be64.loh115
-rwxr-xr-xiup/srclua3/loh/tree_le64.loh115
-rwxr-xr-xiup/srclua3/loh/tree_le64w.loh116
-rwxr-xr-xiup/srclua3/loh/val.loh45
-rwxr-xr-xiup/srclua3/loh/val_be32.loh45
-rwxr-xr-xiup/srclua3/loh/val_be64.loh45
-rwxr-xr-xiup/srclua3/loh/val_le64.loh45
-rwxr-xr-xiup/srclua3/loh/val_le64w.loh45
-rwxr-xr-xiup/srclua3/make_uname8
-rwxr-xr-xiup/srclua3/make_uname.bat10
-rwxr-xr-xiup/srclua3/matrix.lua54
-rwxr-xr-xiup/srclua3/pplot.lua23
-rwxr-xr-xiup/srclua3/sbox.lua10
-rwxr-xr-xiup/srclua3/spin.lua24
-rwxr-xr-xiup/srclua3/tabs.lua13
-rwxr-xr-xiup/srclua3/tree.lua68
-rwxr-xr-xiup/srclua3/val.lua22
-rwxr-xr-xiup/srclua5/Makefile24
-rwxr-xr-xiup/srclua5/button.lua18
-rwxr-xr-xiup/srclua5/canvas.lua29
-rwxr-xr-xiup/srclua5/cbox.lua28
-rwxr-xr-xiup/srclua5/cells.lua32
-rwxr-xr-xiup/srclua5/clipboard.lua17
-rwxr-xr-xiup/srclua5/colorbar.lua26
-rwxr-xr-xiup/srclua5/colorbrowser.lua21
-rwxr-xr-xiup/srclua5/colordlg.lua26
-rwxr-xr-xiup/srclua5/config.mak31
-rwxr-xr-xiup/srclua5/constants.lua72
-rwxr-xr-xiup/srclua5/ctrl_template.lua94
-rwxr-xr-xiup/srclua5/dial.lua21
-rwxr-xr-xiup/srclua5/dialog.lua36
-rwxr-xr-xiup/srclua5/filedlg.lua28
-rwxr-xr-xiup/srclua5/fill.lua16
-rwxr-xr-xiup/srclua5/fontdlg.lua26
-rwxr-xr-xiup/srclua5/frame.lua16
-rwxr-xr-xiup/srclua5/gauge.lua17
-rwxr-xr-xiup/srclua5/generator.lua222
-rwxr-xr-xiup/srclua5/glcanvas.lua46
-rwxr-xr-xiup/srclua5/hbox.lua20
-rwxr-xr-xiup/srclua5/il.h161
-rwxr-xr-xiup/srclua5/il_button.c59
-rwxr-xr-xiup/srclua5/il_canvas.c159
-rwxr-xr-xiup/srclua5/il_cbox.c53
-rwxr-xr-xiup/srclua5/il_cells.c136
-rw-r--r--iup/srclua5/il_clipboard.c52
-rwxr-xr-xiup/srclua5/il_colorbar.c87
-rwxr-xr-xiup/srclua5/il_colorbrowser.c73
-rwxr-xr-xiup/srclua5/il_colordlg.c52
-rwxr-xr-xiup/srclua5/il_controls.h26
-rwxr-xr-xiup/srclua5/il_dial.c61
-rwxr-xr-xiup/srclua5/il_dialog.c111
-rwxr-xr-xiup/srclua5/il_filedlg.c61
-rwxr-xr-xiup/srclua5/il_fill.c52
-rwxr-xr-xiup/srclua5/il_fontdlg.c52
-rwxr-xr-xiup/srclua5/il_frame.c52
-rwxr-xr-xiup/srclua5/il_gauge.c53
-rwxr-xr-xiup/srclua5/il_getcolor.c46
-rwxr-xr-xiup/srclua5/il_getparam.c177
-rwxr-xr-xiup/srclua5/il_glcanvas.c90
-rwxr-xr-xiup/srclua5/il_hbox.c52
-rwxr-xr-xiup/srclua5/il_image.c119
-rwxr-xr-xiup/srclua5/il_imagergb.c57
-rwxr-xr-xiup/srclua5/il_imagergba.c57
-rwxr-xr-xiup/srclua5/il_item.c66
-rwxr-xr-xiup/srclua5/il_label.c52
-rwxr-xr-xiup/srclua5/il_list.c96
-rwxr-xr-xiup/srclua5/il_mask.c132
-rwxr-xr-xiup/srclua5/il_matrix.c247
-rwxr-xr-xiup/srclua5/il_matrix_aux.c85
-rwxr-xr-xiup/srclua5/il_menu.c66
-rwxr-xr-xiup/srclua5/il_messagedlg.c52
-rwxr-xr-xiup/srclua5/il_multiline.c61
-rwxr-xr-xiup/srclua5/il_normalizer.c52
-rwxr-xr-xiup/srclua5/il_olecontrol.c77
-rwxr-xr-xiup/srclua5/il_pplot.c151
-rwxr-xr-xiup/srclua5/il_progressbar.c52
-rwxr-xr-xiup/srclua5/il_radio.c52
-rwxr-xr-xiup/srclua5/il_sbox.c52
-rwxr-xr-xiup/srclua5/il_scanf.c197
-rwxr-xr-xiup/srclua5/il_separator.c52
-rwxr-xr-xiup/srclua5/il_spin.c60
-rwxr-xr-xiup/srclua5/il_spinbox.c60
-rwxr-xr-xiup/srclua5/il_submenu.c52
-rwxr-xr-xiup/srclua5/il_tabs.c63
-rwxr-xr-xiup/srclua5/il_text.c78
-rwxr-xr-xiup/srclua5/il_timer.c59
-rwxr-xr-xiup/srclua5/il_toggle.c60
-rwxr-xr-xiup/srclua5/il_tree.c152
-rwxr-xr-xiup/srclua5/il_tree_aux.c184
-rwxr-xr-xiup/srclua5/il_user.c52
-rwxr-xr-xiup/srclua5/il_val.c76
-rwxr-xr-xiup/srclua5/il_vbox.c52
-rwxr-xr-xiup/srclua5/il_zbox.c52
-rwxr-xr-xiup/srclua5/image.lua96
-rwxr-xr-xiup/srclua5/imagergb.lua31
-rwxr-xr-xiup/srclua5/imagergba.lua31
-rwxr-xr-xiup/srclua5/item.lua19
-rwxr-xr-xiup/srclua5/iup_pplot.mak26
-rwxr-xr-xiup/srclua5/iupcd.mak21
-rwxr-xr-xiup/srclua5/iupcontrols.mak26
-rwxr-xr-xiup/srclua5/iupgl.mak27
-rwxr-xr-xiup/srclua5/iupim.mak17
-rwxr-xr-xiup/srclua5/iupimglib.mak17
-rwxr-xr-xiup/srclua5/iuplua.c918
-rwxr-xr-xiup/srclua5/iuplua.lua285
-rwxr-xr-xiup/srclua5/iuplua5.def27
-rw-r--r--iup/srclua5/iuplua51.dep177
-rwxr-xr-xiup/srclua5/iuplua_api.c874
-rwxr-xr-xiup/srclua5/iuplua_cd.c56
-rwxr-xr-xiup/srclua5/iuplua_controls.c55
-rwxr-xr-xiup/srclua5/iuplua_glcanvas.c82
-rwxr-xr-xiup/srclua5/iuplua_im.c54
-rwxr-xr-xiup/srclua5/iuplua_imglib.c44
-rwxr-xr-xiup/srclua5/iuplua_pplot.c159
-rwxr-xr-xiup/srclua5/iuplua_pplot5.def4
-rw-r--r--iup/srclua5/iuplua_pplot51.dep11
-rwxr-xr-xiup/srclua5/iupluacd5.def4
-rw-r--r--iup/srclua5/iupluacd51.dep6
-rwxr-xr-xiup/srclua5/iupluacontrols5.def6
-rw-r--r--iup/srclua5/iupluacontrols51.dep46
-rwxr-xr-xiup/srclua5/iupluagl5.def5
-rw-r--r--iup/srclua5/iupluagl51.dep10
-rwxr-xr-xiup/srclua5/iupluaim5.def5
-rw-r--r--iup/srclua5/iupluaim51.dep5
-rwxr-xr-xiup/srclua5/iupluaimglib5.def4
-rw-r--r--iup/srclua5/iupluaimglib51.dep4
-rwxr-xr-xiup/srclua5/iupluaole5.def5
-rwxr-xr-xiup/srclua5/iupole.mak23
-rwxr-xr-xiup/srclua5/label.lua16
-rwxr-xr-xiup/srclua5/list.lua22
-rwxr-xr-xiup/srclua5/loh/button.loh38
-rwxr-xr-xiup/srclua5/loh/button_be32.loh38
-rwxr-xr-xiup/srclua5/loh/button_be64.loh42
-rwxr-xr-xiup/srclua5/loh/button_le64.loh42
-rwxr-xr-xiup/srclua5/loh/button_le64w.loh42
-rwxr-xr-xiup/srclua5/loh/canvas.loh54
-rwxr-xr-xiup/srclua5/loh/canvas_be32.loh54
-rwxr-xr-xiup/srclua5/loh/canvas_be64.loh61
-rwxr-xr-xiup/srclua5/loh/canvas_le64.loh61
-rwxr-xr-xiup/srclua5/loh/canvas_le64w.loh61
-rwxr-xr-xiup/srclua5/loh/cbox.loh50
-rwxr-xr-xiup/srclua5/loh/cbox_be32.loh52
-rwxr-xr-xiup/srclua5/loh/cbox_be64.loh54
-rwxr-xr-xiup/srclua5/loh/cbox_le64.loh56
-rwxr-xr-xiup/srclua5/loh/cbox_le64w.loh54
-rwxr-xr-xiup/srclua5/loh/cells.loh57
-rwxr-xr-xiup/srclua5/loh/cells_be32.loh57
-rwxr-xr-xiup/srclua5/loh/cells_be64.loh64
-rwxr-xr-xiup/srclua5/loh/cells_le64.loh64
-rwxr-xr-xiup/srclua5/loh/cells_le64w.loh64
-rw-r--r--iup/srclua5/loh/clipboard.loh36
-rwxr-xr-xiup/srclua5/loh/clipboard_be32.loh36
-rw-r--r--iup/srclua5/loh/clipboard_be64.loh40
-rwxr-xr-xiup/srclua5/loh/clipboard_le64.loh40
-rwxr-xr-xiup/srclua5/loh/colorbar.loh53
-rwxr-xr-xiup/srclua5/loh/colorbar_be32.loh49
-rwxr-xr-xiup/srclua5/loh/colorbar_be64.loh59
-rwxr-xr-xiup/srclua5/loh/colorbar_le64.loh55
-rwxr-xr-xiup/srclua5/loh/colorbar_le64w.loh59
-rwxr-xr-xiup/srclua5/loh/colorbrowser.loh45
-rwxr-xr-xiup/srclua5/loh/colorbrowser_be32.loh44
-rwxr-xr-xiup/srclua5/loh/colorbrowser_be64.loh49
-rwxr-xr-xiup/srclua5/loh/colorbrowser_le64.loh49
-rwxr-xr-xiup/srclua5/loh/colorbrowser_le64w.loh49
-rwxr-xr-xiup/srclua5/loh/colordlg.loh54
-rwxr-xr-xiup/srclua5/loh/colordlg_be32.loh54
-rwxr-xr-xiup/srclua5/loh/colordlg_be64.loh60
-rwxr-xr-xiup/srclua5/loh/colordlg_le64.loh60
-rwxr-xr-xiup/srclua5/loh/colordlg_le64w.loh60
-rwxr-xr-xiup/srclua5/loh/constants.loh102
-rwxr-xr-xiup/srclua5/loh/constants_be32.loh88
-rwxr-xr-xiup/srclua5/loh/constants_be64.loh113
-rwxr-xr-xiup/srclua5/loh/constants_le64.loh97
-rwxr-xr-xiup/srclua5/loh/constants_le64w.loh113
-rwxr-xr-xiup/srclua5/loh/dial.loh40
-rwxr-xr-xiup/srclua5/loh/dial_be32.loh40
-rwxr-xr-xiup/srclua5/loh/dial_be64.loh44
-rwxr-xr-xiup/srclua5/loh/dial_le64.loh44
-rwxr-xr-xiup/srclua5/loh/dial_le64w.loh44
-rwxr-xr-xiup/srclua5/loh/dialog.loh72
-rwxr-xr-xiup/srclua5/loh/dialog_be32.loh72
-rwxr-xr-xiup/srclua5/loh/dialog_be64.loh81
-rwxr-xr-xiup/srclua5/loh/dialog_le64.loh81
-rwxr-xr-xiup/srclua5/loh/dialog_le64w.loh79
-rwxr-xr-xiup/srclua5/loh/filedlg.loh55
-rwxr-xr-xiup/srclua5/loh/filedlg_be32.loh55
-rwxr-xr-xiup/srclua5/loh/filedlg_be64.loh61
-rwxr-xr-xiup/srclua5/loh/filedlg_le64.loh61
-rwxr-xr-xiup/srclua5/loh/filedlg_le64w.loh61
-rwxr-xr-xiup/srclua5/loh/fill.loh36
-rwxr-xr-xiup/srclua5/loh/fill_be32.loh36
-rwxr-xr-xiup/srclua5/loh/fill_be64.loh39
-rwxr-xr-xiup/srclua5/loh/fill_le64.loh39
-rwxr-xr-xiup/srclua5/loh/fill_le64w.loh39
-rwxr-xr-xiup/srclua5/loh/fontdlg.loh54
-rwxr-xr-xiup/srclua5/loh/fontdlg_be32.loh54
-rwxr-xr-xiup/srclua5/loh/fontdlg_be64.loh59
-rwxr-xr-xiup/srclua5/loh/fontdlg_le64.loh59
-rwxr-xr-xiup/srclua5/loh/fontdlg_le64w.loh59
-rwxr-xr-xiup/srclua5/loh/frame.loh37
-rwxr-xr-xiup/srclua5/loh/frame_be32.loh37
-rwxr-xr-xiup/srclua5/loh/frame_be64.loh40
-rwxr-xr-xiup/srclua5/loh/frame_le64.loh40
-rwxr-xr-xiup/srclua5/loh/frame_le64w.loh40
-rwxr-xr-xiup/srclua5/loh/gauge.loh39
-rwxr-xr-xiup/srclua5/loh/gauge_be32.loh39
-rwxr-xr-xiup/srclua5/loh/gauge_be64.loh43
-rwxr-xr-xiup/srclua5/loh/gauge_le64.loh43
-rwxr-xr-xiup/srclua5/loh/gauge_le64w.loh43
-rwxr-xr-xiup/srclua5/loh/glcanvas.loh65
-rwxr-xr-xiup/srclua5/loh/glcanvas_be32.loh65
-rwxr-xr-xiup/srclua5/loh/glcanvas_be64.loh70
-rwxr-xr-xiup/srclua5/loh/glcanvas_le64.loh70
-rwxr-xr-xiup/srclua5/loh/glcanvas_le64w.loh70
-rwxr-xr-xiup/srclua5/loh/hbox.loh43
-rwxr-xr-xiup/srclua5/loh/hbox_be32.loh43
-rwxr-xr-xiup/srclua5/loh/hbox_be64.loh48
-rwxr-xr-xiup/srclua5/loh/hbox_le64.loh48
-rwxr-xr-xiup/srclua5/loh/hbox_le64w.loh48
-rwxr-xr-xiup/srclua5/loh/image.loh127
-rwxr-xr-xiup/srclua5/loh/image_be32.loh127
-rwxr-xr-xiup/srclua5/loh/image_be64.loh132
-rwxr-xr-xiup/srclua5/loh/image_le64.loh132
-rwxr-xr-xiup/srclua5/loh/image_le64w.loh90
-rwxr-xr-xiup/srclua5/loh/imagergb.loh58
-rwxr-xr-xiup/srclua5/loh/imagergb_be32.loh58
-rwxr-xr-xiup/srclua5/loh/imagergb_be64.loh62
-rwxr-xr-xiup/srclua5/loh/imagergb_le64.loh62
-rwxr-xr-xiup/srclua5/loh/imagergb_le64w.loh62
-rwxr-xr-xiup/srclua5/loh/imagergba.loh58
-rwxr-xr-xiup/srclua5/loh/imagergba_be32.loh58
-rwxr-xr-xiup/srclua5/loh/imagergba_be64.loh63
-rwxr-xr-xiup/srclua5/loh/imagergba_le64.loh63
-rwxr-xr-xiup/srclua5/loh/imagergba_le64w.loh63
-rwxr-xr-xiup/srclua5/loh/item.loh39
-rwxr-xr-xiup/srclua5/loh/item_be32.loh39
-rwxr-xr-xiup/srclua5/loh/item_be64.loh44
-rwxr-xr-xiup/srclua5/loh/item_le64.loh44
-rwxr-xr-xiup/srclua5/loh/item_le64w.loh44
-rwxr-xr-xiup/srclua5/loh/iuplua.loh487
-rwxr-xr-xiup/srclua5/loh/iuplua_be32.loh489
-rwxr-xr-xiup/srclua5/loh/iuplua_be64.loh545
-rwxr-xr-xiup/srclua5/loh/iuplua_le64.loh545
-rwxr-xr-xiup/srclua5/loh/iuplua_le64w.loh531
-rwxr-xr-xiup/srclua5/loh/label.loh37
-rwxr-xr-xiup/srclua5/loh/label_be32.loh37
-rwxr-xr-xiup/srclua5/loh/label_be64.loh40
-rwxr-xr-xiup/srclua5/loh/label_le64.loh40
-rwxr-xr-xiup/srclua5/loh/label_le64w.loh40
-rwxr-xr-xiup/srclua5/loh/list.loh43
-rwxr-xr-xiup/srclua5/loh/list_be32.loh40
-rwxr-xr-xiup/srclua5/loh/list_be64.loh48
-rwxr-xr-xiup/srclua5/loh/list_le64.loh45
-rwxr-xr-xiup/srclua5/loh/list_le64w.loh48
-rwxr-xr-xiup/srclua5/loh/matrix.loh94
-rwxr-xr-xiup/srclua5/loh/matrix_be32.loh94
-rwxr-xr-xiup/srclua5/loh/matrix_be64.loh107
-rwxr-xr-xiup/srclua5/loh/matrix_le64.loh107
-rwxr-xr-xiup/srclua5/loh/matrix_le64w.loh103
-rwxr-xr-xiup/srclua5/loh/menu.loh122
-rwxr-xr-xiup/srclua5/loh/menu_be32.loh122
-rwxr-xr-xiup/srclua5/loh/menu_be64.loh134
-rwxr-xr-xiup/srclua5/loh/menu_le64.loh134
-rwxr-xr-xiup/srclua5/loh/menu_le64w.loh136
-rwxr-xr-xiup/srclua5/loh/messagedlg.loh54
-rwxr-xr-xiup/srclua5/loh/messagedlg_be32.loh54
-rwxr-xr-xiup/srclua5/loh/messagedlg_be64.loh60
-rwxr-xr-xiup/srclua5/loh/messagedlg_le64.loh60
-rwxr-xr-xiup/srclua5/loh/messagedlg_le64w.loh60
-rwxr-xr-xiup/srclua5/loh/multiline.loh40
-rwxr-xr-xiup/srclua5/loh/multiline_be32.loh40
-rwxr-xr-xiup/srclua5/loh/multiline_be64.loh44
-rwxr-xr-xiup/srclua5/loh/multiline_le64.loh44
-rwxr-xr-xiup/srclua5/loh/multiline_le64w.loh44
-rwxr-xr-xiup/srclua5/loh/normalizer.loh63
-rwxr-xr-xiup/srclua5/loh/normalizer_be32.loh63
-rwxr-xr-xiup/srclua5/loh/normalizer_be64.loh70
-rwxr-xr-xiup/srclua5/loh/normalizer_le64.loh70
-rwxr-xr-xiup/srclua5/loh/normalizer_le64w.loh72
-rwxr-xr-xiup/srclua5/loh/olecontrol.loh79
-rwxr-xr-xiup/srclua5/loh/olecontrol_be64.loh85
-rwxr-xr-xiup/srclua5/loh/olecontrol_le64w.loh80
-rwxr-xr-xiup/srclua5/loh/pplot.loh58
-rwxr-xr-xiup/srclua5/loh/pplot_be32.loh58
-rwxr-xr-xiup/srclua5/loh/pplot_be64.loh65
-rwxr-xr-xiup/srclua5/loh/pplot_le64.loh65
-rwxr-xr-xiup/srclua5/loh/pplot_le64w.loh65
-rwxr-xr-xiup/srclua5/loh/progressbar.loh39
-rwxr-xr-xiup/srclua5/loh/progressbar_be32.loh39
-rwxr-xr-xiup/srclua5/loh/progressbar_be64.loh43
-rwxr-xr-xiup/srclua5/loh/progressbar_le64.loh43
-rwxr-xr-xiup/srclua5/loh/progressbar_le64w.loh43
-rwxr-xr-xiup/srclua5/loh/radio.loh64
-rwxr-xr-xiup/srclua5/loh/radio_be32.loh64
-rwxr-xr-xiup/srclua5/loh/radio_be64.loh70
-rwxr-xr-xiup/srclua5/loh/radio_le64.loh70
-rwxr-xr-xiup/srclua5/loh/radio_le64w.loh70
-rwxr-xr-xiup/srclua5/loh/sbox.loh37
-rwxr-xr-xiup/srclua5/loh/sbox_be32.loh37
-rwxr-xr-xiup/srclua5/loh/sbox_be64.loh40
-rwxr-xr-xiup/srclua5/loh/sbox_le64.loh40
-rwxr-xr-xiup/srclua5/loh/sbox_le64w.loh40
-rwxr-xr-xiup/srclua5/loh/separator.loh36
-rwxr-xr-xiup/srclua5/loh/separator_be32.loh36
-rwxr-xr-xiup/srclua5/loh/separator_be64.loh40
-rwxr-xr-xiup/srclua5/loh/separator_le64.loh40
-rwxr-xr-xiup/srclua5/loh/separator_le64w.loh40
-rwxr-xr-xiup/srclua5/loh/spin.loh38
-rwxr-xr-xiup/srclua5/loh/spin_be32.loh38
-rwxr-xr-xiup/srclua5/loh/spin_be64.loh42
-rwxr-xr-xiup/srclua5/loh/spin_le64.loh44
-rwxr-xr-xiup/srclua5/loh/spin_le64w.loh44
-rwxr-xr-xiup/srclua5/loh/spinbox.loh38
-rwxr-xr-xiup/srclua5/loh/spinbox_be32.loh40
-rwxr-xr-xiup/srclua5/loh/spinbox_be64.loh44
-rwxr-xr-xiup/srclua5/loh/spinbox_le64.loh44
-rwxr-xr-xiup/srclua5/loh/spinbox_le64w.loh44
-rwxr-xr-xiup/srclua5/loh/submenu.loh38
-rwxr-xr-xiup/srclua5/loh/submenu_be32.loh38
-rwxr-xr-xiup/srclua5/loh/submenu_be64.loh42
-rwxr-xr-xiup/srclua5/loh/submenu_le64.loh42
-rwxr-xr-xiup/srclua5/loh/submenu_le64w.loh42
-rwxr-xr-xiup/srclua5/loh/tabs.loh51
-rwxr-xr-xiup/srclua5/loh/tabs_be32.loh51
-rwxr-xr-xiup/srclua5/loh/tabs_be64.loh56
-rwxr-xr-xiup/srclua5/loh/tabs_le64.loh56
-rwxr-xr-xiup/srclua5/loh/tabs_le64w.loh56
-rwxr-xr-xiup/srclua5/loh/text.loh40
-rwxr-xr-xiup/srclua5/loh/text_be32.loh40
-rwxr-xr-xiup/srclua5/loh/text_be64.loh45
-rwxr-xr-xiup/srclua5/loh/text_le64.loh45
-rwxr-xr-xiup/srclua5/loh/text_le64w.loh43
-rwxr-xr-xiup/srclua5/loh/timer.loh37
-rwxr-xr-xiup/srclua5/loh/timer_be32.loh37
-rwxr-xr-xiup/srclua5/loh/timer_be64.loh41
-rwxr-xr-xiup/srclua5/loh/timer_le64.loh41
-rwxr-xr-xiup/srclua5/loh/timer_le64w.loh41
-rwxr-xr-xiup/srclua5/loh/toggle.loh38
-rwxr-xr-xiup/srclua5/loh/toggle_be32.loh38
-rwxr-xr-xiup/srclua5/loh/toggle_be64.loh42
-rwxr-xr-xiup/srclua5/loh/toggle_le64.loh42
-rwxr-xr-xiup/srclua5/loh/toggle_le64w.loh42
-rwxr-xr-xiup/srclua5/loh/tree.loh177
-rwxr-xr-xiup/srclua5/loh/tree_be32.loh177
-rwxr-xr-xiup/srclua5/loh/tree_be64.loh195
-rwxr-xr-xiup/srclua5/loh/tree_le64.loh195
-rwxr-xr-xiup/srclua5/loh/tree_le64w.loh112
-rwxr-xr-xiup/srclua5/loh/user.loh36
-rwxr-xr-xiup/srclua5/loh/user_be32.loh36
-rwxr-xr-xiup/srclua5/loh/user_be64.loh39
-rwxr-xr-xiup/srclua5/loh/user_le64.loh39
-rwxr-xr-xiup/srclua5/loh/user_le64w.loh39
-rwxr-xr-xiup/srclua5/loh/val.loh41
-rwxr-xr-xiup/srclua5/loh/val_be32.loh43
-rwxr-xr-xiup/srclua5/loh/val_be64.loh45
-rwxr-xr-xiup/srclua5/loh/val_le64.loh47
-rwxr-xr-xiup/srclua5/loh/val_le64w.loh45
-rwxr-xr-xiup/srclua5/loh/vbox.loh43
-rwxr-xr-xiup/srclua5/loh/vbox_be32.loh43
-rwxr-xr-xiup/srclua5/loh/vbox_be64.loh48
-rwxr-xr-xiup/srclua5/loh/vbox_le64.loh48
-rwxr-xr-xiup/srclua5/loh/vbox_le64w.loh48
-rwxr-xr-xiup/srclua5/loh/zbox.loh61
-rwxr-xr-xiup/srclua5/loh/zbox_be32.loh61
-rwxr-xr-xiup/srclua5/loh/zbox_be64.loh67
-rwxr-xr-xiup/srclua5/loh/zbox_le64.loh67
-rwxr-xr-xiup/srclua5/loh/zbox_le64w.loh67
-rwxr-xr-xiup/srclua5/make_uname9
-rwxr-xr-xiup/srclua5/make_uname.bat11
-rwxr-xr-xiup/srclua5/matrix.lua46
-rwxr-xr-xiup/srclua5/menu.lua55
-rwxr-xr-xiup/srclua5/messagedlg.lua26
-rwxr-xr-xiup/srclua5/multiline.lua19
-rwxr-xr-xiup/srclua5/normalizer.lua28
-rwxr-xr-xiup/srclua5/olecontrol.lua54
-rwxr-xr-xiup/srclua5/pplot.lua31
-rwxr-xr-xiup/srclua5/progressbar.lua17
-rwxr-xr-xiup/srclua5/radio.lua33
-rwxr-xr-xiup/srclua5/sbox.lua16
-rwxr-xr-xiup/srclua5/separator.lua16
-rwxr-xr-xiup/srclua5/spin.lua18
-rwxr-xr-xiup/srclua5/spinbox.lua18
-rwxr-xr-xiup/srclua5/submenu.lua19
-rwxr-xr-xiup/srclua5/tabs.lua31
-rwxr-xr-xiup/srclua5/text.lua20
-rwxr-xr-xiup/srclua5/timer.lua18
-rwxr-xr-xiup/srclua5/toggle.lua18
-rwxr-xr-xiup/srclua5/tree.lua76
-rwxr-xr-xiup/srclua5/user.lua17
-rwxr-xr-xiup/srclua5/val.lua20
-rwxr-xr-xiup/srclua5/vbox.lua20
-rwxr-xr-xiup/srclua5/zbox.lua32
-rwxr-xr-xiup/srcole/config.mak17
-rwxr-xr-xiup/srcole/iup_olecontrol.cpp200
-rwxr-xr-xiup/srcole/iupole.def3
-rwxr-xr-xiup/srcole/make_uname.bat4
-rwxr-xr-xiup/srcole/tAmbientProperties.cpp157
-rwxr-xr-xiup/srcole/tAmbientProperties.h47
-rwxr-xr-xiup/srcole/tDispatch.cpp236
-rwxr-xr-xiup/srcole/tDispatch.h40
-rwxr-xr-xiup/srcole/tLegacy.cpp240
-rwxr-xr-xiup/srcole/tLegacy.h550
-rwxr-xr-xiup/srcole/tOleClientSite.cpp148
-rwxr-xr-xiup/srcole/tOleClientSite.h40
-rwxr-xr-xiup/srcole/tOleControlSite.cpp301
-rwxr-xr-xiup/srcole/tOleControlSite.h39
-rwxr-xr-xiup/srcole/tOleHandler.cpp1123
-rwxr-xr-xiup/srcole/tOleHandler.h139
-rwxr-xr-xiup/srcole/tOleInPlaceFrame.cpp429
-rwxr-xr-xiup/srcole/tOleInPlaceFrame.h67
-rwxr-xr-xiup/srcole/tOleInPlaceSite.cpp485
-rwxr-xr-xiup/srcole/tOleInPlaceSite.h47
-rwxr-xr-xiup/srcpplot/Makefile6
-rwxr-xr-xiup/srcpplot/config.mak25
-rwxr-xr-xiup/srcpplot/iupPPlot.cpp2470
-rwxr-xr-xiup/srcpplot/iupPPlot.h645
-rwxr-xr-xiup/srcpplot/iupPPlotInteraction.cpp832
-rwxr-xr-xiup/srcpplot/iupPPlotInteraction.h328
-rwxr-xr-xiup/srcpplot/iup_pplot.cpp2959
-rwxr-xr-xiup/srcpplot/iup_pplot.def11
-rw-r--r--iup/srcpplot/iup_pplot.dep12
-rwxr-xr-xiup/srcpplot/iuppplot.hpp137
-rwxr-xr-xiup/srcpplot/make_uname3
-rwxr-xr-xiup/srcpplot/make_uname.bat4
-rwxr-xr-xiup/srcview/Makefile9
-rwxr-xr-xiup/srcview/config.mak59
-rwxr-xr-xiup/srcview/iup_view.c851
-rwxr-xr-xiup/srcview/iupview6
-rw-r--r--iup/srcview/iupview.bat3
-rw-r--r--iup/srcview/iupview.dep3
-rwxr-xr-xiup/srcview/make_uname4
-rwxr-xr-xiup/srcview/make_uname.bat26
-rwxr-xr-xiup/tecmake_compact.mak1172
-rwxr-xr-xiup/test/bigtest.c194
-rwxr-xr-xiup/test/button.c411
-rwxr-xr-xiup/test/canvas.c346
-rwxr-xr-xiup/test/canvas_cddbuffer.c124
-rwxr-xr-xiup/test/canvas_cdsimple.c91
-rwxr-xr-xiup/test/canvas_scrollbar.c191
-rwxr-xr-xiup/test/cells_checkboard.c83
-rwxr-xr-xiup/test/cells_degrade.c150
-rwxr-xr-xiup/test/cells_numbering.c102
-rwxr-xr-xiup/test/class_conf.c278
-rwxr-xr-xiup/test/clipboard.c53
-rwxr-xr-xiup/test/colorbar.c162
-rwxr-xr-xiup/test/colorbrowser.c91
-rwxr-xr-xiup/test/config.mak115
-rwxr-xr-xiup/test/dial.c111
-rwxr-xr-xiup/test/dial.led49
-rwxr-xr-xiup/test/dialog.c473
-rwxr-xr-xiup/test/file_large.xbm14
-rwxr-xr-xiup/test/frame.c68
-rwxr-xr-xiup/test/gauge.c305
-rwxr-xr-xiup/test/getcolor.c28
-rwxr-xr-xiup/test/getparam.c98
-rwxr-xr-xiup/test/glcanvas.c77
-rwxr-xr-xiup/test/glcanvas_cube.c234
-rwxr-xr-xiup/test/hbox.c114
-rwxr-xr-xiup/test/idle.c55
-rwxr-xr-xiup/test/iuptest.rc31
-rwxr-xr-xiup/test/label.c217
-rwxr-xr-xiup/test/list.c366
-rwxr-xr-xiup/test/make_uname4
-rwxr-xr-xiup/test/matrix.c115
-rwxr-xr-xiup/test/matrix_cbmode.c85
-rwxr-xr-xiup/test/matrix_cbs.c341
-rwxr-xr-xiup/test/mdi.c150
-rwxr-xr-xiup/test/menu.c396
-rwxr-xr-xiup/test/ole.cpp108
-rwxr-xr-xiup/test/pplot.c699
-rwxr-xr-xiup/test/predialogs.c472
-rwxr-xr-xiup/test/progressbar.c330
-rwxr-xr-xiup/test/sample.c407
-rwxr-xr-xiup/test/sbox.c46
-rwxr-xr-xiup/test/scanf.c39
-rwxr-xr-xiup/test/spin.c43
-rwxr-xr-xiup/test/sysinfo.c60
-rwxr-xr-xiup/test/tabs.c403
-rwxr-xr-xiup/test/tecgraf.bmpbin0 -> 6966 bytes
-rwxr-xr-xiup/test/text.c433
-rwxr-xr-xiup/test/text_spin.c74
-rwxr-xr-xiup/test/timer.c70
-rwxr-xr-xiup/test/toggle.c306
-rwxr-xr-xiup/test/tray.c120
-rwxr-xr-xiup/test/tree.c518
-rwxr-xr-xiup/test/val.c199
-rwxr-xr-xiup/test/vbox.c122
-rwxr-xr-xiup/test/zbox.c98
1073 files changed, 202868 insertions, 0 deletions
diff --git a/iup/COPYRIGHT b/iup/COPYRIGHT
new file mode 100755
index 0000000..dd31d6c
--- /dev/null
+++ b/iup/COPYRIGHT
@@ -0,0 +1,32 @@
+IUP License
+-----------
+
+IUP is licensed under the terms of the MIT license reproduced below.
+This means that IUP is free software and can be used for both academic
+and commercial purposes at absolutely no cost.
+
+===============================================================================
+
+Copyright (C) 1994-2009 Tecgraf, PUC-Rio.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without lIUPitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IUPPLIED, INCLUDING BUT NOT LIUPITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIUP, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+===============================================================================
+
+(end of COPYRIGHT)
diff --git a/iup/Makefile b/iup/Makefile
new file mode 100755
index 0000000..1bcb9c7
--- /dev/null
+++ b/iup/Makefile
@@ -0,0 +1,29 @@
+
+.PHONY: do_all iup iupgtk iupcd iupcontrols iupgl iup_pplot iupim iupimglib ledc iupview iuplua3 iuplua5 iupconsole
+#do_all: iup iupgtk iupcd iupcontrols iupgl iup_pplot iupim iupimglib ledc iupview iuplua3 iuplua5 iupconsole
+do_all: iup iupgtk iupcd iupcontrols iupgl iup_pplot iupim iupimglib ledc iupview iuplua5 iupconsole
+
+iup iupgtk:
+ @$(MAKE) --no-print-directory -C ./src/ $@
+iupcd:
+ @$(MAKE) --no-print-directory -C ./srccd/
+iupcontrols:
+ @$(MAKE) --no-print-directory -C ./srccontrols/
+iup_pplot:
+ @$(MAKE) --no-print-directory -C ./srcpplot/
+iupgl:
+ @$(MAKE) --no-print-directory -C ./srcgl/
+iupim:
+ @$(MAKE) --no-print-directory -C ./srcim/
+iupimglib:
+ @$(MAKE) --no-print-directory -C ./srcimglib/
+iuplua3:
+ @$(MAKE) --no-print-directory -C ./srclua3/
+iuplua5:
+ @$(MAKE) --no-print-directory -C ./srclua5/
+iupconsole:
+ @$(MAKE) --no-print-directory -C ./srcconsole/
+ledc:
+ @$(MAKE) --no-print-directory -C ./srcledc/
+iupview: iupcontrols iup
+ @$(MAKE) --no-print-directory -C ./srcview/
diff --git a/iup/README b/iup/README
new file mode 100755
index 0000000..9e96928
--- /dev/null
+++ b/iup/README
@@ -0,0 +1,12 @@
+README for IUP
+
+ IUP is a portable toolkit for building graphical user interfaces. It offers a configuration API in three basic languages: C, Lua and LED. IUP's purpose is to allow a program to be executed in different systems without any modification, therefore it is highly portable. Its main advantages are:
+ * high performance, due to the fact that it uses native interface elements.
+ * fast learning by the user, due to the simplicity of its API.
+
+ Build instructions and usage are available in the IUP documentation.
+
+ For complete information, visit IUP's web site at http://www.tecgraf.puc-rio.br/iup
+ or access its documentation in the HTML folder.
+
+(end of README)
diff --git a/iup/dox/iup.dox b/iup/dox/iup.dox
new file mode 100755
index 0000000..f20c7c3
--- /dev/null
+++ b/iup/dox/iup.dox
@@ -0,0 +1,264 @@
+# Doxyfile 1.5.7.1
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+DOXYFILE_ENCODING = UTF-8
+PROJECT_NAME = IUP
+PROJECT_NUMBER = 3.0
+OUTPUT_DIRECTORY = ../html
+CREATE_SUBDIRS = NO
+OUTPUT_LANGUAGE = English
+BRIEF_MEMBER_DESC = NO
+REPEAT_BRIEF = NO
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
+ALWAYS_DETAILED_SEC = NO
+INLINE_INHERITED_MEMB = NO
+FULL_PATH_NAMES = NO
+STRIP_FROM_PATH =
+STRIP_FROM_INC_PATH =
+SHORT_NAMES = NO
+JAVADOC_AUTOBRIEF = NO
+QT_AUTOBRIEF = NO
+MULTILINE_CPP_IS_BRIEF = NO
+INHERIT_DOCS = YES
+SEPARATE_MEMBER_PAGES = NO
+TAB_SIZE = 8
+ALIASES =
+OPTIMIZE_OUTPUT_FOR_C = YES
+OPTIMIZE_OUTPUT_JAVA = NO
+OPTIMIZE_FOR_FORTRAN = NO
+OPTIMIZE_OUTPUT_VHDL = NO
+BUILTIN_STL_SUPPORT = NO
+CPP_CLI_SUPPORT = NO
+SIP_SUPPORT = NO
+IDL_PROPERTY_SUPPORT = YES
+DISTRIBUTE_GROUP_DOC = YES
+SUBGROUPING = YES
+TYPEDEF_HIDES_STRUCT = NO
+SYMBOL_CACHE_SIZE = 0
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL = NO
+EXTRACT_PRIVATE = NO
+EXTRACT_STATIC = NO
+EXTRACT_LOCAL_CLASSES = NO
+EXTRACT_LOCAL_METHODS = NO
+EXTRACT_ANON_NSPACES = NO
+HIDE_UNDOC_MEMBERS = NO
+HIDE_UNDOC_CLASSES = YES
+HIDE_FRIEND_COMPOUNDS = NO
+HIDE_IN_BODY_DOCS = NO
+INTERNAL_DOCS = NO
+CASE_SENSE_NAMES = YES
+HIDE_SCOPE_NAMES = NO
+SHOW_INCLUDE_FILES = NO
+INLINE_INFO = YES
+SORT_MEMBER_DOCS = NO
+SORT_BRIEF_DOCS = NO
+SORT_GROUP_NAMES = NO
+SORT_BY_SCOPE_NAME = NO
+GENERATE_TODOLIST = NO
+GENERATE_TESTLIST = NO
+GENERATE_BUGLIST = NO
+GENERATE_DEPRECATEDLIST= NO
+ENABLED_SECTIONS =
+MAX_INITIALIZER_LINES = 30
+SHOW_USED_FILES = NO
+SHOW_DIRECTORIES = NO
+SHOW_FILES = YES
+SHOW_NAMESPACES = YES
+FILE_VERSION_FILTER =
+LAYOUT_FILE =
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET = YES
+WARNINGS = YES
+WARN_IF_UNDOCUMENTED = NO
+WARN_IF_DOC_ERROR = YES
+WARN_NO_PARAMDOC = NO
+WARN_FORMAT = "$file:$line: $text"
+WARN_LOGFILE =
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT = ../src
+INPUT_ENCODING = UTF-8
+FILE_PATTERNS = *.h \
+ iup.c
+RECURSIVE = YES
+EXCLUDE =
+EXCLUDE_SYMLINKS = NO
+EXCLUDE_PATTERNS =
+EXCLUDE_SYMBOLS =
+EXAMPLE_PATH =
+EXAMPLE_PATTERNS = *
+EXAMPLE_RECURSIVE = NO
+IMAGE_PATH =
+INPUT_FILTER =
+FILTER_PATTERNS =
+FILTER_SOURCE_FILES = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER = NO
+INLINE_SOURCES = NO
+STRIP_CODE_COMMENTS = NO
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION = YES
+REFERENCES_LINK_SOURCE = YES
+USE_HTAGS = NO
+VERBATIM_HEADERS = NO
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX = NO
+COLS_IN_ALPHA_INDEX = 5
+IGNORE_PREFIX =
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML = YES
+HTML_OUTPUT = doxygen/
+HTML_FILE_EXTENSION = .html
+HTML_HEADER =
+HTML_FOOTER =
+HTML_STYLESHEET =
+HTML_ALIGN_MEMBERS = YES
+HTML_DYNAMIC_SECTIONS = NO
+GENERATE_DOCSET = NO
+DOCSET_FEEDNAME = "Doxygen generated docs"
+DOCSET_BUNDLE_ID = org.doxygen.Project
+GENERATE_HTMLHELP = NO
+CHM_FILE =
+HHC_LOCATION =
+GENERATE_CHI = NO
+CHM_INDEX_ENCODING =
+BINARY_TOC = NO
+TOC_EXPAND = NO
+GENERATE_QHP = NO
+QCH_FILE =
+QHP_NAMESPACE = org.doxygen.Project
+QHP_VIRTUAL_FOLDER = doc
+QHG_LOCATION =
+DISABLE_INDEX = YES
+ENUM_VALUES_PER_LINE = 4
+GENERATE_TREEVIEW = FRAME
+TREEVIEW_WIDTH = 250
+FORMULA_FONTSIZE = 10
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX = NO
+LATEX_OUTPUT = latex
+LATEX_CMD_NAME = latex
+MAKEINDEX_CMD_NAME = makeindex
+COMPACT_LATEX = NO
+PAPER_TYPE = a4wide
+EXTRA_PACKAGES =
+LATEX_HEADER =
+PDF_HYPERLINKS = YES
+USE_PDFLATEX = YES
+LATEX_BATCHMODE = NO
+LATEX_HIDE_INDICES = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF = NO
+RTF_OUTPUT = rtf
+COMPACT_RTF = NO
+RTF_HYPERLINKS = NO
+RTF_STYLESHEET_FILE =
+RTF_EXTENSIONS_FILE =
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN = NO
+MAN_OUTPUT = man
+MAN_EXTENSION = .3
+MAN_LINKS = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML = NO
+XML_OUTPUT = xml
+XML_SCHEMA =
+XML_DTD =
+XML_PROGRAMLISTING = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD = NO
+PERLMOD_LATEX = NO
+PERLMOD_PRETTY = YES
+PERLMOD_MAKEVAR_PREFIX =
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING = YES
+MACRO_EXPANSION = NO
+EXPAND_ONLY_PREDEF = NO
+SEARCH_INCLUDES = YES
+INCLUDE_PATH = ../include/
+INCLUDE_FILE_PATTERNS =
+PREDEFINED = IUP_ASSERT
+EXPAND_AS_DEFINED =
+SKIP_FUNCTION_MACROS = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+TAGFILES =
+GENERATE_TAGFILE =
+ALLEXTERNALS = NO
+EXTERNAL_GROUPS = YES
+PERL_PATH = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS = NO
+MSCGEN_PATH =
+HIDE_UNDOC_RELATIONS = YES
+HAVE_DOT = YES
+DOT_FONTNAME = FreeSans
+DOT_FONTSIZE = 10
+DOT_FONTPATH =
+CLASS_GRAPH = YES
+COLLABORATION_GRAPH = YES
+GROUP_GRAPHS = YES
+UML_LOOK = NO
+TEMPLATE_RELATIONS = NO
+INCLUDE_GRAPH = YES
+INCLUDED_BY_GRAPH = YES
+CALL_GRAPH = NO
+CALLER_GRAPH = NO
+GRAPHICAL_HIERARCHY = YES
+DIRECTORY_GRAPH = YES
+DOT_IMAGE_FORMAT = png
+DOT_PATH =
+DOTFILE_DIRS =
+DOT_GRAPH_MAX_NODES = 50
+MAX_DOT_GRAPH_DEPTH = 1000
+DOT_TRANSPARENT = NO
+DOT_MULTI_TARGETS = NO
+GENERATE_LEGEND = YES
+DOT_CLEANUP = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
diff --git a/iup/etc/iup.manifest b/iup/etc/iup.manifest
new file mode 100755
index 0000000..2988531
--- /dev/null
+++ b/iup/etc/iup.manifest
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+ version="3.0.0.0"
+ processorArchitecture="x86"
+ name="IupApp"
+ type="win32"
+/>
+<description>Iup Application</description>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="x86"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+</assembly>
diff --git a/iup/etc/iup.rc b/iup/etc/iup.rc
new file mode 100755
index 0000000..eab8cf5
--- /dev/null
+++ b/iup/etc/iup.rc
@@ -0,0 +1,44 @@
+TECGRAF_ICON ICON "tecgraf.ico"
+
+1 VERSIONINFO
+ FILEVERSION 3,0,0,0
+ PRODUCTVERSION 3,0,0,0
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "www.tecgraf.puc-rio.br/iup\0"
+ VALUE "CompanyName", "Tecgraf/PUC-Rio\0"
+ VALUE "FileDescription", "IUP - Portable User Interface\0"
+ VALUE "FileVersion", "3.0.0\0"
+ VALUE "LegalCopyright", "Copyright © 1994-2009 Tecgraf, PUC-Rio.\0"
+ VALUE "OriginalFilename", "iup.dll\0"
+ VALUE "ProductName", "IUP for Windows\0"
+ VALUE "ProductVersion", "3.0.0\0"
+ END
+ END
+END
+
+CURSOR_PEN CURSOR "pen.cur"
+
+/* To avoid the inclusion of <winuser.h> */
+#define WS_CHILD 0x40000000L
+#define WS_VISIBLE 0x10000000L
+#define WS_CLIPSIBLINGS 0x04000000L
+#define DS_3DLOOK 0x0004L
+#define DS_CONTROL 0x0400L
+#define SS_OWNERDRAW 0x0000000DL
+#define WS_EX_STATICEDGE 0x00020000L
+
+#define IUP_PREVIEWCANVAS 3000
+
+iupPreviewDlg DIALOG DISCARDABLE 0, 0, 250, 95
+STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "", IUP_PREVIEWCANVAS, "STATIC", SS_OWNERDRAW, 70, 0, 120, 90, WS_EX_STATICEDGE
+END
+
+/* The following line will enable Windows XP Visual Styles */
+1 24 "iup.manifest"
diff --git a/iup/etc/iup64.manifest b/iup/etc/iup64.manifest
new file mode 100755
index 0000000..e399771
--- /dev/null
+++ b/iup/etc/iup64.manifest
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+ version="3.0.0.0"
+ processorArchitecture="amd64"
+ name="IupApp"
+ type="win32"
+/>
+<description>Iup Application</description>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="amd64"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+</assembly>
diff --git a/iup/etc/pen.cur b/iup/etc/pen.cur
new file mode 100755
index 0000000..5912b15
--- /dev/null
+++ b/iup/etc/pen.cur
Binary files differ
diff --git a/iup/etc/tecgraf.ico b/iup/etc/tecgraf.ico
new file mode 100755
index 0000000..0db610e
--- /dev/null
+++ b/iup/etc/tecgraf.ico
Binary files differ
diff --git a/iup/fix_permission b/iup/fix_permission
new file mode 100755
index 0000000..453aead
--- /dev/null
+++ b/iup/fix_permission
@@ -0,0 +1 @@
+find . -name make_\* -type f -exec chmod ug+x {} \;
diff --git a/iup/include/iup.h b/iup/include/iup.h
new file mode 100755
index 0000000..9913329
--- /dev/null
+++ b/iup/include/iup.h
@@ -0,0 +1,363 @@
+/** \file
+ * \brief User API
+ * IUP - A Portable User Interface Toolkit
+ * Tecgraf: Computer Graphics Technology Group, PUC-Rio, Brazil
+ * http://www.tecgraf.puc-rio.br/iup mailto:iup@tecgraf.puc-rio.br
+ *
+ * See Copyright Notice at the end of this file
+ */
+
+#ifndef __IUP_H
+#define __IUP_H
+
+#include <iupkey.h>
+#include <iupdef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define IUP_NAME "IUP - Portable User Interface"
+#define IUP_COPYRIGHT "Copyright (C) 1994-2009 Tecgraf, PUC-Rio."
+#define IUP_DESCRIPTION "Portable toolkit for building graphical user interfaces."
+#define IUP_VERSION "3.0" /* bug fixes are reported only by IupVersion functions */
+#define IUP_VERSION_NUMBER 300000
+#define IUP_VERSION_DATE "2009/10/02"
+
+typedef struct Ihandle_ Ihandle;
+typedef int (*Icallback)(Ihandle*);
+
+/************************************************************************/
+/* Main API */
+/************************************************************************/
+
+int IupOpen (int *argc, char ***argv);
+void IupClose (void);
+void IupImageLibOpen (void);
+
+int IupMainLoop (void);
+int IupLoopStep (void);
+int IupMainLoopLevel (void);
+void IupFlush (void);
+void IupExitLoop (void);
+
+void IupUpdate (Ihandle* ih);
+void IupUpdateChildren(Ihandle* ih);
+void IupRedraw (Ihandle* ih, int children);
+void IupRefresh (Ihandle* ih);
+
+char* IupMapFont (const char *iupfont);
+char* IupUnMapFont (const char *driverfont);
+int IupHelp (const char* url);
+char* IupLoad (const char *filename);
+char* IupLoadBuffer (const char *buffer);
+
+char* IupVersion (void);
+char* IupVersionDate (void);
+int IupVersionNumber (void);
+void IupSetLanguage (const char *lng);
+char* IupGetLanguage (void);
+
+void IupDestroy (Ihandle* ih);
+void IupDetach (Ihandle* child);
+Ihandle* IupAppend (Ihandle* ih, Ihandle* child);
+Ihandle* IupInsert (Ihandle* ih, Ihandle* ref_child, Ihandle* child);
+Ihandle* IupGetChild (Ihandle* ih, int pos);
+int IupGetChildPos (Ihandle* ih, Ihandle* child);
+int IupGetChildCount(Ihandle* ih);
+Ihandle* IupGetNextChild (Ihandle* ih, Ihandle* child);
+Ihandle* IupGetBrother (Ihandle* ih);
+Ihandle* IupGetParent (Ihandle* ih);
+Ihandle* IupGetDialog (Ihandle* ih);
+Ihandle* IupGetDialogChild(Ihandle* ih, const char* name);
+int IupReparent (Ihandle* ih, Ihandle* new_parent);
+
+int IupPopup (Ihandle* ih, int x, int y);
+int IupShow (Ihandle* ih);
+int IupShowXY (Ihandle* ih, int x, int y);
+int IupHide (Ihandle* ih);
+int IupMap (Ihandle* ih);
+void IupUnmap (Ihandle *ih);
+
+void IupSetAttribute (Ihandle* ih, const char* name, const char* value);
+void IupStoreAttribute(Ihandle* ih, const char* name, const char* value);
+Ihandle* IupSetAttributes (Ihandle* ih, const char *str);
+char* IupGetAttribute (Ihandle* ih, const char* name);
+char* IupGetAttributes (Ihandle* ih);
+int IupGetInt (Ihandle* ih, const char* name);
+int IupGetInt2 (Ihandle* ih, const char* name);
+int IupGetIntInt (Ihandle *ih, const char* name, int *i1, int *i2);
+float IupGetFloat (Ihandle* ih, const char* name);
+void IupSetfAttribute (Ihandle* ih, const char* name, const char* format, ...);
+int IupGetAllAttributes(Ihandle* ih, char** names, int n);
+Ihandle* IupSetAtt(const char* handle_name, Ihandle* ih, const char* name, ...);
+
+void IupSetGlobal (const char* name, const char* value);
+void IupStoreGlobal (const char* name, const char* value);
+char* IupGetGlobal (const char* name);
+
+Ihandle* IupSetFocus (Ihandle* ih);
+Ihandle* IupGetFocus (void);
+Ihandle* IupPreviousField (Ihandle* ih);
+Ihandle* IupNextField (Ihandle* ih);
+
+Icallback IupGetCallback(Ihandle* ih, const char *name);
+Icallback IupSetCallback(Ihandle* ih, const char *name, Icallback func);
+Ihandle* IupSetCallbacks(Ihandle* ih, const char *name, Icallback func, ...);
+
+Icallback IupGetFunction (const char *name);
+Icallback IupSetFunction (const char *name, Icallback func);
+const char* IupGetActionName (void);
+
+Ihandle* IupGetHandle (const char *name);
+Ihandle* IupSetHandle (const char *name, Ihandle* ih);
+int IupGetAllNames (char** names, int n);
+int IupGetAllDialogs (char** names, int n);
+char* IupGetName (Ihandle* ih);
+
+void IupSetAttributeHandle(Ihandle* ih, const char* name, Ihandle* ih_named);
+Ihandle* IupGetAttributeHandle(Ihandle* ih, const char* name);
+
+char* IupGetClassName(Ihandle* ih);
+char* IupGetClassType(Ihandle* ih);
+int IupGetClassAttributes(const char* classname, char** names, int n);
+void IupSaveClassAttributes(Ihandle* ih);
+void IupSetClassDefaultAttribute(const char* classname, const char *name, const char* value);
+
+Ihandle* IupCreate (const char *classname);
+Ihandle* IupCreatev(const char *classname, void* *params);
+Ihandle* IupCreatep(const char *classname, void *first, ...);
+
+/************************************************************************/
+/* Elements */
+/************************************************************************/
+
+Ihandle* IupFill (void);
+Ihandle* IupRadio (Ihandle* child);
+Ihandle* IupVbox (Ihandle* child, ...);
+Ihandle* IupVboxv (Ihandle* *children);
+Ihandle* IupZbox (Ihandle* child, ...);
+Ihandle* IupZboxv (Ihandle* *children);
+Ihandle* IupHbox (Ihandle* child,...);
+Ihandle* IupHboxv (Ihandle* *children);
+
+Ihandle* IupNormalizer (Ihandle* ih_first, ...);
+Ihandle* IupNormalizerv(Ihandle* *ih_list);
+
+Ihandle* IupCbox (Ihandle* child, ...);
+Ihandle* IupCboxv (Ihandle* *children);
+Ihandle* IupSbox (Ihandle *child);
+
+Ihandle* IupFrame (Ihandle* child);
+
+Ihandle* IupImage (int width, int height, const unsigned char *pixmap);
+Ihandle* IupImageRGB (int width, int height, const unsigned char *pixmap);
+Ihandle* IupImageRGBA (int width, int height, const unsigned char *pixmap);
+
+Ihandle* IupItem (const char* title, const char* action);
+Ihandle* IupSubmenu (const char* title, Ihandle* child);
+Ihandle* IupSeparator (void);
+Ihandle* IupMenu (Ihandle* child,...);
+Ihandle* IupMenuv (Ihandle* *children);
+
+Ihandle* IupButton (const char* title, const char* action);
+Ihandle* IupCanvas (const char* action);
+Ihandle* IupDialog (Ihandle* child);
+Ihandle* IupUser (void);
+Ihandle* IupLabel (const char* title);
+Ihandle* IupList (const char* action);
+Ihandle* IupText (const char* action);
+Ihandle* IupMultiLine (const char* action);
+Ihandle* IupToggle (const char* title, const char* action);
+Ihandle* IupTimer (void);
+Ihandle* IupClipboard (void);
+Ihandle* IupProgressBar(void);
+Ihandle* IupVal (const char *type);
+Ihandle* IupTabs (Ihandle* child, ...);
+Ihandle* IupTabsv (Ihandle* *children);
+Ihandle* IupTree (void);
+
+Ihandle* IupSpin (void);
+Ihandle* IupSpinbox (Ihandle* child);
+
+
+/* IupImage utility */
+int IupSaveImageAsText(Ihandle* ih, const char* file_name, const char* format, const char* name);
+
+/* IupText utilities */
+void IupTextConvertLinColToPos(Ihandle* ih, int lin, int col, int *pos);
+void IupTextConvertPosToLinCol(Ihandle* ih, int pos, int *lin, int *col);
+
+/* IupText, IupList and IupTree utility */
+int IupConvertXYToPos(Ihandle* ih, int x, int y);
+
+/* IupTree utilities */
+int IupTreeSetUserId(Ihandle* ih, int id, void* userid);
+void* IupTreeGetUserId(Ihandle* ih, int id);
+int IupTreeGetId(Ihandle* ih, void *userid);
+
+void IupTreeSetAttribute (Ihandle* ih, const char* name, int id, char* value);
+void IupTreeStoreAttribute(Ihandle* ih, const char* name, int id, char* value);
+char* IupTreeGetAttribute (Ihandle* ih, const char* name, int id);
+int IupTreeGetInt (Ihandle* ih, const char* name, int id);
+float IupTreeGetFloat (Ihandle* ih, const char* name, int id);
+void IupTreeSetfAttribute (Ihandle* ih, const char* name, int id, char* format, ...);
+
+
+/************************************************************************/
+/* Pre-definided dialogs */
+/************************************************************************/
+
+Ihandle* IupFileDlg(void);
+Ihandle* IupMessageDlg(void);
+Ihandle* IupColorDlg(void);
+Ihandle* IupFontDlg(void);
+
+int IupGetFile(char *arq);
+void IupMessage(const char *title, const char *msg);
+void IupMessagef(const char *title, const char *format, ...);
+int IupAlarm(const char *title, const char *msg, const char *b1, const char *b2, const char *b3);
+int IupScanf(const char *format, ...);
+int IupListDialog(int type, const char *title, int size, const char** list,
+ int op, int max_col, int max_lin, int* marks);
+int IupGetText(const char* title, char* text);
+int IupGetColor(int x, int y, unsigned char* r, unsigned char* g, unsigned char* b);
+
+typedef int (*Iparamcb)(Ihandle* dialog, int param_index, void* user_data);
+int IupGetParam(const char* title, Iparamcb action, void* user_data, const char* format,...);
+int IupGetParamv(const char* title, Iparamcb action, void* user_data, const char* format, int param_count, int param_extra, void** param_data);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+/************************************************************************/
+/* Common Return Values */
+/************************************************************************/
+#define IUP_ERROR 1
+#define IUP_NOERROR 0
+#define IUP_OPENED -1
+#define IUP_INVALID -1
+
+/************************************************************************/
+/* Callback Return Values */
+/************************************************************************/
+#define IUP_IGNORE -1
+#define IUP_DEFAULT -2
+#define IUP_CLOSE -3
+#define IUP_CONTINUE -4
+
+/************************************************************************/
+/* IupPopup and IupShowXY Parameter Values */
+/************************************************************************/
+#define IUP_CENTER 0xFFFF /* 65535 */
+#define IUP_LEFT 0xFFFE /* 65534 */
+#define IUP_RIGHT 0xFFFD /* 65533 */
+#define IUP_MOUSEPOS 0xFFFC /* 65532 */
+#define IUP_CURRENT 0xFFFB /* 65531 */
+#define IUP_CENTERPARENT 0xFFFA /* 65530 */
+#define IUP_TOP IUP_LEFT
+#define IUP_BOTTOM IUP_RIGHT
+
+/************************************************************************/
+/* SHOW_CB Callback Values */
+/************************************************************************/
+enum{IUP_SHOW, IUP_RESTORE, IUP_MINIMIZE, IUP_MAXIMIZE, IUP_HIDE};
+
+/************************************************************************/
+/* SCROLL_CB Callback Values */
+/************************************************************************/
+enum{IUP_SBUP, IUP_SBDN, IUP_SBPGUP, IUP_SBPGDN, IUP_SBPOSV, IUP_SBDRAGV,
+ IUP_SBLEFT, IUP_SBRIGHT, IUP_SBPGLEFT, IUP_SBPGRIGHT, IUP_SBPOSH, IUP_SBDRAGH};
+
+/************************************************************************/
+/* Mouse Button Values and Macros */
+/************************************************************************/
+#define IUP_BUTTON1 '1'
+#define IUP_BUTTON2 '2'
+#define IUP_BUTTON3 '3'
+#define IUP_BUTTON4 '4'
+#define IUP_BUTTON5 '5'
+
+#define iup_isshift(_s) (_s[0]=='S')
+#define iup_iscontrol(_s) (_s[1]=='C')
+#define iup_isbutton1(_s) (_s[2]=='1')
+#define iup_isbutton2(_s) (_s[3]=='2')
+#define iup_isbutton3(_s) (_s[4]=='3')
+#define iup_isdouble(_s) (_s[5]=='D')
+#define iup_isalt(_s) (_s[6]=='A')
+#define iup_issys(_s) (_s[7]=='Y')
+#define iup_isbutton4(_s) (_s[8]=='4')
+#define iup_isbutton5(_s) (_s[9]=='5')
+
+/* Old definitions for backward compatibility */
+#define isshift iup_isshift
+#define iscontrol iup_iscontrol
+#define isbutton1 iup_isbutton1
+#define isbutton2 iup_isbutton2
+#define isbutton3 iup_isbutton3
+#define isdouble iup_isdouble
+#define isalt iup_isalt
+#define issys iup_issys
+#define isbutton4 iup_isbutton4
+#define isbutton5 iup_isbutton5
+
+
+/************************************************************************/
+/* Pre-Defined Masks */
+/************************************************************************/
+#define IUP_MASK_FLOAT "[+/-]?(/d+/.?/d*|/./d+)"
+#define IUP_MASK_UFLOAT "(/d+/.?/d*|/./d+)"
+#define IUP_MASK_EFLOAT "[+/-]?(/d+/.?/d*|/./d+)([eE][+/-]?/d+)?"
+#define IUP_MASK_INT "[+/-]?/d+"
+#define IUP_MASK_UINT "/d+"
+
+/* Old definitions for backward compatibility */
+#define IUPMASK_FLOAT IUP_MASK_FLOAT
+#define IUPMASK_UFLOAT IUP_MASK_UFLOAT
+#define IUPMASK_EFLOAT IUP_MASK_EFLOAT
+#define IUPMASK_INT IUP_MASK_INT
+#define IUPMASK_UINT IUP_MASK_UINT
+
+
+/************************************************************************/
+/* Replacement for the WinMain in Windows, */
+/* this allows the application to start from "main". */
+/* Used only for Watcom. */
+/************************************************************************/
+#if defined (__WATCOMC__)
+#ifdef __cplusplus
+extern "C" {
+int IupMain (int argc, char** argv); /* In C++ we have to declare the prototype */
+}
+#endif
+#define main IupMain /* this is the trick for Watcom and MetroWerks */
+#endif
+
+/******************************************************************************
+* Copyright (C) 1994-2009 Tecgraf, PUC-Rio.
+*
+* Permission is hereby granted, free of charge, to any person obtaining
+* a copy of this software and associated documentation files (the
+* "Software"), to deal in the Software without restriction, including
+* without limitation the rights to use, copy, modify, merge, publish,
+* distribute, sublicense, and/or sell copies of the Software, and to
+* permit persons to whom the Software is furnished to do so, subject to
+* the following conditions:
+*
+* The above copyright notice and this permission notice shall be
+* included in all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+******************************************************************************/
+
+#endif
diff --git a/iup/include/iup_pplot.h b/iup/include/iup_pplot.h
new file mode 100755
index 0000000..59c3453
--- /dev/null
+++ b/iup/include/iup_pplot.h
@@ -0,0 +1,40 @@
+/** \file
+ * \brief PPlot component for Iup.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPPPLOT_H
+#define __IUPPPLOT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Initialize PPlot widget class */
+void IupPPlotOpen(void);
+
+/* Create an PPlot widget instance */
+Ihandle* IupPPlot(void);
+
+/* Add dataset to plot */
+void IupPPlotBegin(Ihandle *ih, int strXdata);
+void IupPPlotAdd(Ihandle *ih, float x, float y);
+void IupPPlotAddStr(Ihandle *ih, const char* x, float y);
+int IupPPlotEnd(Ihandle *ih);
+
+void IupPPlotInsertStr(Ihandle *ih, int index, int sample_index, const char* x, float y);
+void IupPPlotInsert(Ihandle *ih, int index, int sample_index, float x, float y);
+
+/* convert from plot coordinates to pixels */
+void IupPPlotTransform(Ihandle* ih, float x, float y, int *ix, int *iy);
+
+/* Plot on the given device. Uses a "cdCanvas*". */
+void IupPPlotPaintTo(Ihandle *ih, void *cnv);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/include/iupcb.h b/iup/include/iupcb.h
new file mode 100755
index 0000000..1285b04
--- /dev/null
+++ b/iup/include/iupcb.h
@@ -0,0 +1 @@
+#include <iupcontrols.h>
diff --git a/iup/include/iupcbox.h b/iup/include/iupcbox.h
new file mode 100755
index 0000000..5ae1901
--- /dev/null
+++ b/iup/include/iupcbox.h
@@ -0,0 +1 @@
+#include <iup.h>
diff --git a/iup/include/iupcbs.h b/iup/include/iupcbs.h
new file mode 100755
index 0000000..f33166b
--- /dev/null
+++ b/iup/include/iupcbs.h
@@ -0,0 +1,43 @@
+/** \file
+ * \brief Contains all function pointer typedefs.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPCBS_H
+#define __IUPCBS_H
+
+typedef int (*IFidle)(void); /* idle */
+
+typedef int (*IFn)(Ihandle*); /* default definition, same as Icallback (ncols_cb, nlines_cb)*/
+typedef int (*IFni)(Ihandle*, int); /* k_any, show_cb, toggle_action, spin_cb, branchopen_cb, branchclose_cb, executeleaf_cb, showrename_cb, rightclick_cb, extended_cb, height_cb, width_cb */
+typedef int (*IFnii)(Ihandle*, int, int); /* resize_cb, caret_cb, matrix_mousemove_cb, enteritem_cb, leaveitem_cb, scrolltop_cb, dropcheck_cb, selection_cb, select_cb, switch_cb, scrolling_cb, vspan_cb, hspan_cb */
+typedef int (*IFniii)(Ihandle*, int, int, int); /* trayclick_cb, edition_cb */
+typedef int (*IFniiii)(Ihandle*, int, int, int, int); /* dragdrop_cb */
+typedef int (*IFniiiiii)(Ihandle*, int, int, int, int, int, int); /* draw_cb */
+
+typedef int (*IFnff)(Ihandle*, float, float); /* canvas_action */
+typedef int (*IFniff)(Ihandle*,int,float,float); /* scroll_cb */
+typedef int (*IFnfiis)(Ihandle*,float,int,int,char*); /* wheel_cb */
+
+typedef int (*IFnnii)(Ihandle*, Ihandle*, int, int); /* drop_cb */
+typedef int (*IFnnn)(Ihandle*, Ihandle*, Ihandle*); /* tabchange_cb */
+typedef int (*IFnss)(Ihandle*, char *, char *); /* file_cb */
+typedef int (*IFns)(Ihandle*, char *); /* multiselect_cb */
+typedef int (*IFnis)(Ihandle*, int, char *); /* text_action, multiline_action, edit_cb, renamenode_cb, rename_cb */
+typedef int (*IFnsii)(Ihandle*, char*, int, int); /* list_action */
+typedef int (*IFnsiii)(Ihandle*, char*, int, int, int); /* dropfiles_cb */
+typedef int (*IFniis)(Ihandle*, int, int, char*); /* motion_cb, click_cb, value_edit_cb */
+typedef int (*IFniiiis)(Ihandle*, int, int, int, int, char*); /* button_cb, matrix_action, mousemotion_cb */
+typedef int (*IFniiiiiis)(Ihandle*, int, int, int, int, int, int, char*); /* mouseclick_cb */
+
+typedef int (*IFnIi)(Ihandle*, int*, int); /* multiselection_cb, multiselection_cb */
+typedef int (*IFnd)(Ihandle*, double); /* mousemove_cb, button_press_cb, button_release_cb */
+typedef int (*IFniiIII)(Ihandle*, int, int, int*, int*, int*); /* fgcolor_cb, bgcolor_cb */
+typedef int (*IFniinsii)(Ihandle*, int, int, Ihandle*, char*, int, int); /* dropselect_cb */
+typedef int (*IFnccc)(Ihandle*, unsigned char, unsigned char, unsigned char); /* drag_cb, change_cb */
+
+typedef char* (*sIFnii)(Ihandle*, int, int); /* value_cb */
+typedef char* (*sIFni)(Ihandle*, int); /* cell_cb */
+
+#endif
diff --git a/iup/include/iupcells.h b/iup/include/iupcells.h
new file mode 100755
index 0000000..1285b04
--- /dev/null
+++ b/iup/include/iupcells.h
@@ -0,0 +1 @@
+#include <iupcontrols.h>
diff --git a/iup/include/iupcolorbar.h b/iup/include/iupcolorbar.h
new file mode 100755
index 0000000..1285b04
--- /dev/null
+++ b/iup/include/iupcolorbar.h
@@ -0,0 +1 @@
+#include <iupcontrols.h>
diff --git a/iup/include/iupcontrols.h b/iup/include/iupcontrols.h
new file mode 100755
index 0000000..c7bc566
--- /dev/null
+++ b/iup/include/iupcontrols.h
@@ -0,0 +1,46 @@
+/** \file
+ * \brief initializes dial, gauge, colorbrowser, colorbar controls.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPCONTROLS_H
+#define __IUPCONTROLS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+int IupControlsOpen(void);
+void IupControlsClose(void); /* for backward compatibility only, does nothing since IUP 3 */
+
+void IupOldValOpen(void);
+void IupOldTabsOpen(void);
+
+Ihandle* IupColorbar(void);
+Ihandle* IupCells(void);
+Ihandle *IupColorBrowser(void);
+Ihandle *IupColorBrowser(void);
+Ihandle *IupGauge(void);
+Ihandle *IupDial(const char* type);
+Ihandle* IupMatrix(const char *action);
+
+/* IupMatrix utilities */
+void IupMatSetAttribute (Ihandle* ih, const char* name, int lin, int col, char* value);
+void IupMatStoreAttribute(Ihandle* ih, const char* name, int lin, int col, char* value);
+char* IupMatGetAttribute (Ihandle* ih, const char* name, int lin, int col);
+int IupMatGetInt (Ihandle* ih, const char* name, int lin, int col);
+float IupMatGetFloat (Ihandle* ih, const char* name, int lin, int col);
+void IupMatSetfAttribute (Ihandle* ih, const char* name, int lin, int col, char* format, ...);
+
+/* Used by IupColorbar */
+#define IUP_PRIMARY -1
+#define IUP_SECONDARY -2
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/include/iupdef.h b/iup/include/iupdef.h
new file mode 100755
index 0000000..e8f436e
--- /dev/null
+++ b/iup/include/iupdef.h
@@ -0,0 +1,725 @@
+/** \file
+ * \brief Callbacks, Attributes and Attribute Values definitions.
+ * Avoid using these definitions. Use the strings instead.
+ *
+ * See Copyright Notice in iup.h
+ */
+
+#ifndef __IUPDEF_H
+#define __IUPDEF_H
+
+/* OLD definitions */
+/* Avoid using these definitions. Use the strings instead. */
+/* Define __IUPDEF_H to avoid the inclusion of this header */
+
+#define IUP_RUN "RUN"
+#define IUP_ENGLISH "ENGLISH"
+#define IUP_PORTUGUESE "PORTUGUESE"
+#define IUP_SBH "SBH"
+#define IUP_SBV "SBV"
+
+/************************************************************************/
+/* Callbacks */
+/************************************************************************/
+
+#define IUP_DEFAULT_ACTION "DEFAULT_ACTION"
+#define IUP_IDLE_ACTION "IDLE_ACTION"
+
+#define IUP_ACTION "ACTION"
+#define IUP_GETFOCUS_CB "GETFOCUS_CB"
+#define IUP_KILLFOCUS_CB "KILLFOCUS_CB"
+#define IUP_K_ANY "K_ANY"
+#define IUP_KEYPRESS_CB "KEYPRESS_CB"
+#define IUP_HELP_CB "HELP_CB"
+
+#define IUP_SCROLL_CB "SCROLL_CB"
+#define IUP_RESIZE_CB "RESIZE_CB"
+#define IUP_MOTION_CB "MOTION_CB"
+#define IUP_BUTTON_CB "BUTTON_CB"
+#define IUP_ENTERWINDOW_CB "ENTERWINDOW_CB"
+#define IUP_LEAVEWINDOW_CB "LEAVEWINDOW_CB"
+#define IUP_WHEEL_CB "WHEEL_CB"
+
+#define IUP_MASK_CB "MASK_CB"
+#define IUP_OPEN_CB "OPEN_CB"
+#define IUP_HIGHLIGHT_CB "HIGHLIGHT_CB"
+#define IUP_MENUCLOSE_CB "MENUCLOSE_CB"
+
+#define IUP_MAP_CB "MAP_CB"
+#define IUP_CLOSE_CB "CLOSE_CB"
+#define IUP_SHOW_CB "SHOW_CB"
+
+#define IUP_DROPFILES_CB "DROPFILES_CB"
+#define IUP_WOM_CB "WOM_CB"
+
+/************************************************************************/
+/* Attributes */
+/************************************************************************/
+
+#define IUP_DIRECTION "DIRECTION"
+#define IUP_ACTIVE "ACTIVE"
+#define IUP_BGCOLOR "BGCOLOR"
+#define IUP_FRAMECOLOR "FRAMECOLOR"
+#define IUP_FGCOLOR "FGCOLOR"
+#define IUP_COLOR "COLOR"
+#define IUP_WID "WID"
+#define IUP_SIZE "SIZE"
+#define IUP_RASTERSIZE "RASTERSIZE"
+#define IUP_TITLE "TITLE"
+#define IUP_VALUE "VALUE"
+#define IUP_VISIBLE "VISIBLE"
+#define IUP_FONT "FONT"
+#define IUP_TIP "TIP"
+#define IUP_EXPAND "EXPAND"
+#define IUP_SEPARATOR "SEPARATOR"
+
+#define IUP_HOTSPOT "HOTSPOT"
+#define IUP_HEIGHT "HEIGHT"
+#define IUP_WIDTH "WIDTH"
+
+#define IUP_KEY "KEY"
+
+#define IUP_MULTIPLE "MULTIPLE"
+#define IUP_DROPDOWN "DROPDOWN"
+#define IUP_VISIBLE_ITEMS "VISIBLE_ITEMS"
+
+#define IUP_MARGIN "MARGIN"
+#define IUP_GAP "GAP"
+#define IUP_ALIGNMENT "ALIGNMENT"
+
+#define IUP_IMAGE "IMAGE"
+#define IUP_IMINACTIVE "IMINACTIVE"
+#define IUP_IMPRESS "IMPRESS"
+#define IUP_WIN_SAVEBITS "WIN_SAVEBITS"
+
+#define IUP_NC "NC"
+#define IUP_MASK "MASK"
+
+#define IUP_APPEND "APPEND"
+#define IUP_BORDER "BORDER"
+
+#define IUP_CARET "CARET"
+#define IUP_SELECTION "SELECTION"
+#define IUP_SELECTEDTEXT "SELECTEDTEXT"
+#define IUP_INSERT "INSERT"
+
+#define IUP_CONID "CONID"
+#define IUP_CURSOR "CURSOR"
+
+#define IUP_ICON "ICON"
+#define IUP_MENUBOX "MENUBOX"
+#define IUP_MINBOX "MINBOX"
+#define IUP_MAXBOX "MAXBOX"
+#define IUP_RESIZE "RESIZE"
+#define IUP_MENU "MENU"
+#define IUP_STARTFOCUS "STARTFOCUS"
+#define IUP_PARENTDIALOG "PARENTDIALOG"
+#define IUP_SHRINK "SHRINK"
+#define IUP_DEFAULTENTER "DEFAULTENTER"
+#define IUP_DEFAULTESC "DEFAULTESC"
+#define IUP_X "X"
+#define IUP_Y "Y"
+#define IUP_TOOLBOX "TOOLBOX"
+#define IUP_CONTROL "CONTROL"
+#define IUP_READONLY "READONLY"
+
+#define IUP_SCROLLBAR "SCROLLBAR"
+#define IUP_POSY "POSY"
+#define IUP_POSX "POSX"
+#define IUP_DX "DX"
+#define IUP_DY "DY"
+#define IUP_XMAX "XMAX"
+#define IUP_XMIN "XMIN"
+#define IUP_YMAX "YMAX"
+#define IUP_YMIN "YMIN"
+
+#define IUP_RED "255 0 0"
+#define IUP_GREEN "0 255 0"
+#define IUP_BLUE "0 0 255"
+
+#define IUP_MIN "MIN"
+#define IUP_MAX "MAX"
+
+#define IUP_TIME "TIME"
+#define IUP_DRAG "DRAG"
+#define IUP_DROP "DROP"
+#define IUP_REPAINT "REPAINT"
+#define IUP_TOPMOST "TOPMOST"
+#define IUP_CLIPCHILDREN "CLIPCHILDREN"
+
+#define IUP_DIALOGTYPE "DIALOGTYPE"
+#define IUP_FILE "FILE"
+#define IUP_MULTIPLEFILES "MULTIPLEFILES"
+#define IUP_FILTER "FILTER"
+#define IUP_FILTERUSED "FILTERUSED"
+#define IUP_FILTERINFO "FILTERINFO"
+#define IUP_EXTFILTER "EXTFILTER"
+#define IUP_DIRECTORY "DIRECTORY"
+#define IUP_ALLOWNEW "ALLOWNEW"
+#define IUP_NOOVERWRITEPROMPT "NOOVERWRITEPROMPT"
+#define IUP_NOCHANGEDIR "NOCHANGEDIR"
+#define IUP_FILEEXIST "FILEEXIST"
+#define IUP_STATUS "STATUS"
+
+#define IUP_LOCKLOOP "LOCKLOOP"
+#define IUP_SYSTEM "SYSTEM"
+#define IUP_DRIVER "DRIVER"
+#define IUP_SCREENSIZE "SCREENSIZE"
+#define IUP_SYSTEMLANGUAGE "SYSTEMLANGUAGE"
+#define IUP_COMPUTERNAME "COMPUTERNAME"
+#define IUP_USERNAME "USERNAME"
+
+#define IUP_OPEN "OPEN"
+#define IUP_SAVE "SAVE"
+#define IUP_DIR "DIR"
+
+#define IUP_HORIZONTAL "HORIZONTAL"
+#define IUP_VERTICAL "VERTICAL"
+
+/************************************************************************/
+/* Attribute Values */
+/************************************************************************/
+
+#define IUP_YES "YES"
+#define IUP_NO "NO"
+#define IUP_ON "ON"
+#define IUP_OFF "OFF"
+
+#define IUP_ACENTER "ACENTER"
+#define IUP_ALEFT "ALEFT"
+#define IUP_ARIGHT "ARIGHT"
+#define IUP_ATOP "ATOP"
+#define IUP_ABOTTOM "ABOTTOM"
+
+#define IUP_NORTH "NORTH"
+#define IUP_SOUTH "SOUTH"
+#define IUP_WEST "WEST"
+#define IUP_EAST "EAST"
+#define IUP_NE "NE"
+#define IUP_SE "SE"
+#define IUP_NW "NW"
+#define IUP_SW "SW"
+
+#define IUP_FULLSCREEN "FULLSCREEN"
+#define IUP_FULL "FULL"
+#define IUP_HALF "HALF"
+#define IUP_THIRD "THIRD"
+#define IUP_QUARTER "QUARTER"
+#define IUP_EIGHTH "EIGHTH"
+
+#define IUP_ARROW "ARROW"
+#define IUP_BUSY "BUSY"
+#define IUP_RESIZE_N "RESIZE_N"
+#define IUP_RESIZE_S "RESIZE_S"
+#define IUP_RESIZE_E "RESIZE_E"
+#define IUP_RESIZE_W "RESIZE_W"
+#define IUP_RESIZE_NE "RESIZE_NE"
+#define IUP_RESIZE_NW "RESIZE_NW"
+#define IUP_RESIZE_SE "RESIZE_SE"
+#define IUP_RESIZE_SW "RESIZE_SW"
+#define IUP_MOVE "MOVE"
+#define IUP_HAND "HAND"
+#define IUP_NONE "NONE"
+#define IUP_IUP "IUP"
+#define IUP_CROSS "CROSS"
+#define IUP_PEN "PEN"
+#define IUP_TEXT "TEXT"
+#define IUP_RESIZE_C "RESIZE_C"
+#define IUP_OPENHAND "OPENHAND"
+
+/*****************/
+/* Fonts */
+/*****************/
+
+#define IUP_HELVETICA_NORMAL_8 "HELVETICA_NORMAL_8"
+#define IUP_HELVETICA_ITALIC_8 "HELVETICA_ITALIC_8"
+#define IUP_HELVETICA_BOLD_8 "HELVETICA_BOLD_8"
+#define IUP_HELVETICA_NORMAL_10 "HELVETICA_NORMAL_10"
+#define IUP_HELVETICA_ITALIC_10 "HELVETICA_ITALIC_10"
+#define IUP_HELVETICA_BOLD_10 "HELVETICA_BOLD_10"
+#define IUP_HELVETICA_NORMAL_12 "HELVETICA_NORMAL_12"
+#define IUP_HELVETICA_ITALIC_12 "HELVETICA_ITALIC_12"
+#define IUP_HELVETICA_BOLD_12 "HELVETICA_BOLD_12"
+#define IUP_HELVETICA_NORMAL_14 "HELVETICA_NORMAL_14"
+#define IUP_HELVETICA_ITALIC_14 "HELVETICA_ITALIC_14"
+#define IUP_HELVETICA_BOLD_14 "HELVETICA_BOLD_14"
+#define IUP_COURIER_NORMAL_8 "COURIER_NORMAL_8"
+#define IUP_COURIER_ITALIC_8 "COURIER_ITALIC_8"
+#define IUP_COURIER_BOLD_8 "COURIER_BOLD_8"
+#define IUP_COURIER_NORMAL_10 "COURIER_NORMAL_10"
+#define IUP_COURIER_ITALIC_10 "COURIER_ITALIC_10"
+#define IUP_COURIER_BOLD_10 "COURIER_BOLD_10"
+#define IUP_COURIER_NORMAL_12 "COURIER_NORMAL_12"
+#define IUP_COURIER_ITALIC_12 "COURIER_ITALIC_12"
+#define IUP_COURIER_BOLD_12 "COURIER_BOLD_12"
+#define IUP_COURIER_NORMAL_14 "COURIER_NORMAL_14"
+#define IUP_COURIER_ITALIC_14 "COURIER_ITALIC_14"
+#define IUP_COURIER_BOLD_14 "COURIER_BOLD_14"
+#define IUP_TIMES_NORMAL_8 "TIMES_NORMAL_8"
+#define IUP_TIMES_ITALIC_8 "TIMES_ITALIC_8"
+#define IUP_TIMES_BOLD_8 "TIMES_BOLD_8"
+#define IUP_TIMES_NORMAL_10 "TIMES_NORMAL_10"
+#define IUP_TIMES_ITALIC_10 "TIMES_ITALIC_10"
+#define IUP_TIMES_BOLD_10 "TIMES_BOLD_10"
+#define IUP_TIMES_NORMAL_12 "TIMES_NORMAL_12"
+#define IUP_TIMES_ITALIC_12 "TIMES_ITALIC_12"
+#define IUP_TIMES_BOLD_12 "TIMES_BOLD_12"
+#define IUP_TIMES_NORMAL_14 "TIMES_NORMAL_14"
+#define IUP_TIMES_ITALIC_14 "TIMES_ITALIC_14"
+#define IUP_TIMES_BOLD_14 "TIMES_BOLD_14"
+
+/************************************************************************/
+/* Keys */
+/************************************************************************/
+
+#define IUP_K_exclam "K_exclam"
+#define IUP_K_quotedbl "K_quotedbl"
+#define IUP_K_numbersign "K_numbersign"
+#define IUP_K_dollar "K_dollar"
+#define IUP_K_percent "K_percent"
+#define IUP_K_ampersand "K_ampersand"
+#define IUP_K_quoteright "K_quoteright"
+#define IUP_K_parentleft "K_parentleft"
+#define IUP_K_parentright "K_parentright"
+#define IUP_K_asterisk "K_asterisk"
+#define IUP_K_plus "K_plus"
+#define IUP_K_comma "K_comma"
+#define IUP_K_minus "K_minus"
+#define IUP_K_period "K_period"
+#define IUP_K_slash "K_slash"
+#define IUP_K_0 "K_0"
+#define IUP_K_1 "K_1"
+#define IUP_K_2 "K_2"
+#define IUP_K_3 "K_3"
+#define IUP_K_4 "K_4"
+#define IUP_K_5 "K_5"
+#define IUP_K_6 "K_6"
+#define IUP_K_7 "K_7"
+#define IUP_K_8 "K_8"
+#define IUP_K_9 "K_9"
+#define IUP_K_colon "K_colon"
+#define IUP_K_semicolon "K_semicolon "
+#define IUP_K_less "K_less"
+#define IUP_K_equal "K_equal"
+#define IUP_K_greater "K_greater"
+#define IUP_K_question "K_question"
+#define IUP_K_at "K_at"
+#define IUP_K_A "K_A"
+#define IUP_K_B "K_B"
+#define IUP_K_C "K_C"
+#define IUP_K_D "K_D"
+#define IUP_K_E "K_E"
+#define IUP_K_F "K_F"
+#define IUP_K_G "K_G"
+#define IUP_K_H "K_H"
+#define IUP_K_I "K_I"
+#define IUP_K_J "K_J"
+#define IUP_K_K "K_K"
+#define IUP_K_L "K_L"
+#define IUP_K_M "K_M"
+#define IUP_K_N "K_N"
+#define IUP_K_O "K_O"
+#define IUP_K_P "K_P"
+#define IUP_K_Q "K_Q"
+#define IUP_K_R "K_R"
+#define IUP_K_S "K_S"
+#define IUP_K_T "K_T"
+#define IUP_K_U "K_U"
+#define IUP_K_V "K_V"
+#define IUP_K_W "K_W"
+#define IUP_K_X "K_X"
+#define IUP_K_Y "K_Y"
+#define IUP_K_Z "K_Z"
+#define IUP_K_bracketleft "K_bracketleft"
+#define IUP_K_backslash "K_backslash"
+#define IUP_K_bracketright "K_bracketright"
+#define IUP_K_circum "K_circum"
+#define IUP_K_underscore "K_underscore"
+#define IUP_K_quoteleft "K_quoteleft"
+#define IUP_K_a "K_a"
+#define IUP_K_b "K_b"
+#define IUP_K_c "K_c"
+#define IUP_K_d "K_d"
+#define IUP_K_e "K_e"
+#define IUP_K_f "K_f"
+#define IUP_K_g "K_g"
+#define IUP_K_h "K_h"
+#define IUP_K_i "K_i"
+#define IUP_K_j "K_j"
+#define IUP_K_k "K_k"
+#define IUP_K_l "K_l"
+#define IUP_K_m "K_m"
+#define IUP_K_n "K_n"
+#define IUP_K_o "K_o"
+#define IUP_K_p "K_p"
+#define IUP_K_q "K_q"
+#define IUP_K_r "K_r"
+#define IUP_K_s "K_s"
+#define IUP_K_t "K_t"
+#define IUP_K_u "K_u"
+#define IUP_K_v "K_v"
+#define IUP_K_w "K_w"
+#define IUP_K_x "K_x"
+#define IUP_K_y "K_y"
+#define IUP_K_z "K_z"
+#define IUP_K_braceleft "K_braceleft"
+#define IUP_K_bar "K_bar"
+#define IUP_K_braceright "K_braceright"
+#define IUP_K_tilde "K_tilde"
+
+#define IUP_K_cA "K_cA"
+#define IUP_K_cB "K_cB"
+#define IUP_K_cC "K_cC"
+#define IUP_K_cD "K_cD"
+#define IUP_K_cE "K_cE"
+#define IUP_K_cF "K_cF"
+#define IUP_K_cG "K_cG"
+#define IUP_K_cJ "K_cJ"
+#define IUP_K_cK "K_cK"
+#define IUP_K_cL "K_cL"
+#define IUP_K_cN "K_cN"
+#define IUP_K_cO "K_cO"
+#define IUP_K_cP "K_cP"
+#define IUP_K_cQ "K_cQ"
+#define IUP_K_cR "K_cR"
+#define IUP_K_cS "K_cS"
+#define IUP_K_cT "K_cT"
+#define IUP_K_cU "K_cU"
+#define IUP_K_cV "K_cV"
+#define IUP_K_cW "K_cW"
+#define IUP_K_cX "K_cX"
+#define IUP_K_cY "K_cY"
+#define IUP_K_cZ "K_cZ"
+#define IUP_K_mA "K_mA"
+#define IUP_K_mB "K_mB"
+#define IUP_K_mC "K_mC"
+#define IUP_K_mD "K_mD"
+#define IUP_K_mE "K_mE"
+#define IUP_K_mF "K_mF"
+#define IUP_K_mG "K_mG"
+#define IUP_K_mH "K_mH"
+#define IUP_K_mI "K_mI"
+#define IUP_K_mJ "K_mJ"
+#define IUP_K_mK "K_mK"
+#define IUP_K_mL "K_mL"
+#define IUP_K_mM "K_mM"
+#define IUP_K_mN "K_mN"
+#define IUP_K_mO "K_mO"
+#define IUP_K_mP "K_mP"
+#define IUP_K_mQ "K_mQ"
+#define IUP_K_mR "K_mR"
+#define IUP_K_mS "K_mS"
+#define IUP_K_mT "K_mT"
+#define IUP_K_mU "K_mU"
+#define IUP_K_mV "K_mV"
+#define IUP_K_mW "K_mW"
+#define IUP_K_mX "K_mX"
+#define IUP_K_mY "K_mY"
+#define IUP_K_mZ "K_mZ"
+#define IUP_K_BS "K_BS"
+#define IUP_K_TAB "K_TAB"
+#define IUP_K_CR "K_CR"
+#define IUP_K_SP "K_SP"
+#define IUP_K_ESC "K_ESC"
+#define IUP_K_sCR "K_sCR"
+#define IUP_K_sTAB "K_sTAB"
+#define IUP_K_cTAB "K_cTAB"
+#define IUP_K_mTAB "K_mTAB"
+#define IUP_K_HOME "K_HOME"
+#define IUP_K_UP "K_UP"
+#define IUP_K_PGUP "K_PGUP"
+#define IUP_K_LEFT "K_LEFT"
+#define IUP_K_RIGHT "K_RIGHT"
+#define IUP_K_END "K_END"
+#define IUP_K_DOWN "K_DOWN"
+#define IUP_K_PGDN "K_PGDN"
+#define IUP_K_MIDDLE "K_MIDDLE"
+#define IUP_K_INS "K_INS"
+#define IUP_K_DEL "K_DEL"
+#define IUP_K_sHOME "K_sHOME"
+#define IUP_K_sUP "K_sUP"
+#define IUP_K_sPGUP "K_sPGUP"
+#define IUP_K_sLEFT "K_sLEFT"
+#define IUP_K_sRIGHT "K_sRIGHT"
+#define IUP_K_sEND "K_sEND"
+#define IUP_K_sDOWN "K_sDOWN"
+#define IUP_K_sPGDN "K_sPGDN"
+#define IUP_K_cHOME "K_cHOME"
+#define IUP_K_cPGUP "K_cPGUP"
+#define IUP_K_cLEFT "K_cLEFT"
+#define IUP_K_cRIGHT "K_cRIGHT"
+#define IUP_K_cEND "K_cEND"
+#define IUP_K_cPGDN "K_cPGDN"
+#define IUP_K_cUP "K_cUP"
+#define IUP_K_cDOWN "K_cDOWN"
+#define IUP_K_cMIDDLE "K_cMIDDLE"
+#define IUP_K_cINS "K_cINS"
+#define IUP_K_cDEL "K_cDEL"
+#define IUP_K_mHOME "K_mHOME"
+#define IUP_K_mPGUP "K_mPGUP"
+#define IUP_K_mLEFT "K_mLEFT"
+#define IUP_K_mRIGHT "K_mRIGHT"
+#define IUP_K_mEND "K_mEND"
+#define IUP_K_mPGDN "K_mPGDN"
+#define IUP_K_mUP "K_mUP"
+#define IUP_K_mDOWN "K_mDOWN"
+#define IUP_K_mINS "K_mINS"
+#define IUP_K_mDEL "K_mDEL"
+#define IUP_K_F1 "K_F1"
+#define IUP_K_F2 "K_F2"
+#define IUP_K_F3 "K_F3"
+#define IUP_K_F4 "K_F4"
+#define IUP_K_F5 "K_F5"
+#define IUP_K_F6 "K_F6"
+#define IUP_K_F7 "K_F7"
+#define IUP_K_F8 "K_F8"
+#define IUP_K_F9 "K_F9"
+#define IUP_K_F10 "K_F10"
+#define IUP_K_F11 "K_F11"
+#define IUP_K_F12 "K_F12"
+#define IUP_K_sF1 "K_sF1"
+#define IUP_K_sF2 "K_sF2"
+#define IUP_K_sF3 "K_sF3"
+#define IUP_K_sF4 "K_sF4"
+#define IUP_K_sF5 "K_sF5"
+#define IUP_K_sF6 "K_sF6"
+#define IUP_K_sF7 "K_sF7"
+#define IUP_K_sF8 "K_sF8"
+#define IUP_K_sF9 "K_sF9"
+#define IUP_K_sF10 "K_sF10"
+#define IUP_K_sF11 "K_sF11"
+#define IUP_K_sF12 "K_sF12"
+#define IUP_K_cF1 "K_cF1"
+#define IUP_K_cF2 "K_cF2"
+#define IUP_K_cF3 "K_cF3"
+#define IUP_K_cF4 "K_cF4"
+#define IUP_K_cF5 "K_cF5"
+#define IUP_K_cF6 "K_cF6"
+#define IUP_K_cF7 "K_cF7"
+#define IUP_K_cF8 "K_cF8"
+#define IUP_K_cF9 "K_cF9"
+#define IUP_K_cF10 "K_cF10"
+#define IUP_K_cF11 "K_cF11"
+#define IUP_K_cF12 "K_cF12"
+#define IUP_K_mF1 "K_mF1"
+#define IUP_K_mF2 "K_mF2"
+#define IUP_K_mF3 "K_mF3"
+#define IUP_K_mF4 "K_mF4"
+#define IUP_K_mF5 "K_mF5"
+#define IUP_K_mF6 "K_mF6"
+#define IUP_K_mF7 "K_mF7"
+#define IUP_K_mF8 "K_mF8"
+#define IUP_K_mF9 "K_mF9"
+#define IUP_K_mF10 "K_mF10"
+#define IUP_K_m1 "K_m1"
+#define IUP_K_m2 "K_m2"
+#define IUP_K_m3 "K_m3"
+#define IUP_K_m4 "K_m4"
+#define IUP_K_m5 "K_m5"
+#define IUP_K_m6 "K_m6"
+#define IUP_K_m7 "K_m7"
+#define IUP_K_m8 "K_m8"
+#define IUP_K_m9 "K_m9"
+#define IUP_K_m0 "K_m0"
+
+/************/
+/* Colorbar */
+/************/
+
+#define IUP_NUM_PARTS "NUM_PARTS"
+#define IUP_NUM_CELLS "NUM_CELLS"
+#define IUP_CELL "CELL"
+#define IUP_PREVIEW_SIZE "PREVIEW_SIZE"
+#define IUP_SHOW_PREVIEW "SHOW_PREVIEW"
+#define IUP_SHOW_SECONDARY "SHOW_SECONDARY"
+#define IUP_PRIMARY_CELL "PRIMARY_CELL"
+#define IUP_SECONDARY_CELL "SECONDARY_CELL"
+#define IUP_ORIENTATION "ORIENTATION"
+#define IUP_SQUARED "SQUARED"
+#define IUP_SHADOWED "SHADOWED"
+#define IUP_BUFFERIZE "BUFFERIZE"
+#define IUP_TRANSPARENCY "TRANSPARENCY"
+#define IUP_CELL_CB "CELL_CB"
+#define IUP_EXTENDED_CB "EXTENDED_CB"
+#define IUP_SELECT_CB "SELECT_CB"
+#define IUP_SWITCH_CB "SWITCH_CB"
+#define IUP_VERTICAL "VERTICAL"
+#define IUP_HORIZONTAL "HORIZONTAL"
+
+/************/
+/* Cells */
+/************/
+
+#define IUP_ALL "ALL"
+#define IUP_BOXED "BOXED"
+#define IUP_CLIPPED "CLIPPED"
+#define IUP_TRANSPARENT "TRANSPARENT"
+#define IUP_NON_SCROLLABLE_LINES "NON_SCROLLABLE_LINES"
+#define IUP_NON_SCROLLABLE_COLS "NON_SCROLLABLE_COLS"
+#define IUP_ORIGIN "ORIGIN"
+#define IUP_NO_COLOR "NO_COLOR"
+#define IUP_FIRST_LINE "FIRST_LINE"
+#define IUP_FIRST_COL "FIRST_COL"
+#define IUP_DOUBLE_BUFFER "DOUBLE_BUFFER"
+#define IUP_LIMITS "LIMITS"
+#define IUP_CANVAS "CANVAS"
+#define IUP_IMAGE_CANVAS "IMAGE_CANVAS"
+#define IUP_FULL_VISIBLE "FULL_VISIBLE"
+#define IUP_MOUSECLICK_CB "MOUSECLICK_CB"
+#define IUP_MOUSEMOTION_CB "MOUSEMOTION_CB"
+#define IUP_DRAW_CB "DRAW_CB"
+#define IUP_WIDTH_CB "WIDTH_CB"
+#define IUP_HEIGHT_CB "HEIGHT_CB"
+#define IUP_NLINES_CB "NLINES_CB"
+#define IUP_NCOLS_CB "NCOLS_CB"
+#define IUP_HSPAN_CB "HSPAN_CB"
+#define IUP_VSPAN_CB "VSPAN_CB"
+#define IUP_SCROLLING_CB "SCROLLING_CB"
+
+/*****************/
+/* ColorBrowser */
+/*****************/
+
+#define IUP_RGB "RGB"
+#define IUP_CHANGE_CB "CHANGE_CB"
+#define IUP_DRAG_CB "DRAG_CB"
+
+/*****************/
+/* Val */
+/*****************/
+
+#define ICTL_MOUSEMOVE_CB "MOUSEMOVE_CB"
+#define ICTL_BUTTON_PRESS_CB "BUTTON_PRESS_CB"
+#define ICTL_BUTTON_RELEASE_CB "BUTTON_RELEASE_CB"
+#define ICTL_HORIZONTAL "HORIZONTAL"
+#define ICTL_VERTICAL "VERTICAL"
+#define ICTL_SHOWTICKS "SHOWTICKS"
+
+/*****************/
+/* Tabs */
+/*****************/
+
+#define ICTL_TOP "TOP"
+#define ICTL_BOTTOM "BOTTOM"
+#define ICTL_LEFT "LEFT"
+#define ICTL_RIGHT "RIGHT"
+#define ICTL_TABTYPE "TABTYPE"
+#define ICTL_TABTITLE "TABTITLE"
+#define ICTL_TABSIZE "TABSIZE"
+#define ICTL_TABCHANGE_CB "TABCHANGE_CB"
+#define ICTL_FONT "FONT"
+#define ICTL_FONT_ACTIVE "FONT_ACTIVE"
+#define ICTL_FONT_INACTIVE "FONT_INACTIVE"
+
+/*****************/
+/* Gauge */
+/*****************/
+
+#define ICTL_SHOW_TEXT "SHOW_TEXT"
+#define ICTL_DASHED "DASHED"
+#define ICTL_MARGIN "MARGIN"
+#define ICTL_TEXT "TEXT"
+
+/*****************/
+/* Dial */
+/*****************/
+
+#define ICTL_DENSITY "DENSITY"
+#define ICTL_HORIZONTAL "HORIZONTAL"
+#define ICTL_VERTICAL "VERTICAL"
+#define ICTL_CIRCULAR "CIRCULAR"
+#define ICTL_UNIT "UNIT"
+
+/*****************/
+/* Matrix */
+/*****************/
+
+#define IUP_ENTERITEM_CB "ENTERITEM_CB"
+#define IUP_LEAVEITEM_CB "LEAVEITEM_CB"
+#define IUP_EDITION_CB "EDITION_CB"
+#define IUP_CLICK_CB "CLICK_CB"
+#define IUP_DROP_CB "DROP_CB"
+#define IUP_DROPSELECT_CB "DROPSELECT_CB"
+#define IUP_DROPCHECK_CB "DROPCHECK_CB"
+#define IUP_SCROLL_CB "SCROLL_CB"
+#define IUP_VALUE_CB "VALUE_CB"
+#define IUP_VALUE_EDIT_CB "VALUE_EDIT_CB"
+#define IUP_FIELD_CB "FIELD_CB"
+#define IUP_RESIZEMATRIX "RESIZEMATRIX"
+#define IUP_ADDLIN "ADDLIN"
+#define IUP_ADDCOL "ADDCOL"
+#define IUP_DELLIN "DELLIN"
+#define IUP_DELCOL "DELCOL"
+#define IUP_NUMLIN "NUMLIN"
+#define IUP_NUMCOL "NUMCOL"
+#define IUP_NUMLIN_VISIBLE "NUMLIN_VISIBLE"
+#define IUP_NUMCOL_VISIBLE "NUMCOL_VISIBLE"
+#define IUP_MARKED "MARKED"
+#define IUP_WIDTHDEF "WIDTHDEF"
+#define IUP_HEIGHTDEF "HEIGHTDEF"
+#define IUP_AREA "AREA"
+#define IUP_MARK_MODE "MARK_MODE"
+#define IUP_LIN "LIN"
+#define IUP_COL "COL"
+#define IUP_LINCOL "LINCOL"
+#define IUP_CELL "CELL"
+#define IUP_EDIT_MODE "EDIT_MODE"
+#define IUP_FOCUS_CELL "FOCUS_CELL"
+#define IUP_ORIGIN "ORIGIN"
+#define IUP_REDRAW "REDRAW"
+#define IUP_PREVIOUSVALUE "PREVIOUSVALUE"
+#define IUP_MOUSEMOVE_CB "MOUSEMOVE_CB"
+
+/*****************/
+/* Tree */
+/*****************/
+
+#define IUP_ADDLEAF "ADDLEAF"
+#define IUP_ADDBRANCH "ADDBRANCH"
+#define IUP_DELNODE "DELNODE"
+#define IUP_IMAGELEAF "IMAGELEAF"
+#define IUP_IMAGEBRANCHCOLLAPSED "IMAGEBRANCHCOLLAPSED"
+#define IUP_IMAGEBRANCHEXPANDED "IMAGEBRANCHEXPANDED"
+#define IUP_IMAGEEXPANDED "IMAGEEXPANDED"
+#define IUP_KIND "KIND"
+#define IUP_PARENT "PARENT"
+#define IUP_DEPTH "DEPTH"
+#define IUP_MARKED "MARKED"
+#define IUP_ADDEXPANDED "ADDEXPANDED"
+#define IUP_CTRL "CTRL"
+#define IUP_SHIFT "SHIFT"
+#define IUP_STATE "STATE"
+#define IUP_STARTING "STARTING"
+#define IUP_LEAF "LEAF"
+#define IUP_BRANCH "BRANCH"
+#define IUP_SELECTED "SELECTED"
+#define IUP_CHILDREN "CHILDREN"
+#define IUP_MARKED "MARKED"
+#define IUP_ROOT "ROOT"
+#define IUP_LAST "LAST"
+#define IUP_PGUP "PGUP"
+#define IUP_PGDN "PGDN"
+#define IUP_NEXT "NEXT"
+#define IUP_PREVIOUS "PREVIOUS"
+#define IUP_INVERT "INVERT"
+#define IUP_BLOCK "BLOCK"
+#define IUP_CLEARALL "CLEARALL"
+#define IUP_MARKALL "MARKALL"
+#define IUP_INVERTALL "INVERTALL"
+#define IUP_REDRAW "REDRAW"
+#define IUP_COLLAPSED "COLLAPSED"
+#define IUP_EXPANDED "EXPANDED"
+#define IUP_SELECTION_CB "SELECTION_CB"
+#define IUP_BRANCHOPEN_CB "BRANCHOPEN_CB"
+#define IUP_BRANCHCLOSE_CB "BRANCHCLOSE_CB"
+#define IUP_RIGHTCLICK_CB "RIGHTCLICK_CB"
+#define IUP_EXECUTELEAF_CB "EXECUTELEAF_CB"
+#define IUP_RENAMENODE_CB "RENAMENODE_CB"
+#define IUP_IMGLEAF "IMGLEAF"
+#define IUP_IMGCOLLAPSED "IMGCOLLAPSED"
+#define IUP_IMGEXPANDED "IMGEXPANDED"
+#define IUP_IMGBLANK "IMGBLANK"
+#define IUP_IMGPAPER "IMGPAPER"
+
+#endif
+
diff --git a/iup/include/iupdial.h b/iup/include/iupdial.h
new file mode 100755
index 0000000..1285b04
--- /dev/null
+++ b/iup/include/iupdial.h
@@ -0,0 +1 @@
+#include <iupcontrols.h>
diff --git a/iup/include/iupgauge.h b/iup/include/iupgauge.h
new file mode 100755
index 0000000..1285b04
--- /dev/null
+++ b/iup/include/iupgauge.h
@@ -0,0 +1 @@
+#include <iupcontrols.h>
diff --git a/iup/include/iupgc.h b/iup/include/iupgc.h
new file mode 100755
index 0000000..5ae1901
--- /dev/null
+++ b/iup/include/iupgc.h
@@ -0,0 +1 @@
+#include <iup.h>
diff --git a/iup/include/iupgetparam.h b/iup/include/iupgetparam.h
new file mode 100755
index 0000000..5ae1901
--- /dev/null
+++ b/iup/include/iupgetparam.h
@@ -0,0 +1 @@
+#include <iup.h>
diff --git a/iup/include/iupgl.h b/iup/include/iupgl.h
new file mode 100755
index 0000000..2f258c7
--- /dev/null
+++ b/iup/include/iupgl.h
@@ -0,0 +1,96 @@
+/** \file
+ * \brief OpenGL canvas for Iup.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPGL_H
+#define __IUPGL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Attributes
+** To set the appropriate visual (pixel format) the following
+** attributes may be specified. Their values should be set
+** before the canvas is mapped to the scrren.
+** After mapping, changing their values has no effect.
+*/
+#ifndef IUP_BUFFER /* IUP_SINGLE (defaut) or IUP_DOUBLE */
+#define IUP_BUFFER "BUFFER"
+#endif
+#ifndef IUP_STEREO /* IUP_NO (defaut) or IUP_YES */
+#define IUP_STEREO "STEREO"
+#endif
+#ifndef IUP_BUFFER_SIZE /* Number of bits if index mode */
+#define IUP_BUFFER_SIZE "BUFFER_SIZE"
+#endif
+#ifndef IUP_RED_SIZE /* Number of red bits */
+#define IUP_RED_SIZE "RED_SIZE"
+#endif
+#ifndef IUP_GREEN_SIZE /* Number of green bits */
+#define IUP_GREEN_SIZE "GREEN_SIZE"
+#endif
+#ifndef IUP_BLUE_SIZE /* Number of blue bits */
+#define IUP_BLUE_SIZE "BLUE_SIZE"
+#endif
+#ifndef IUP_ALPHA_SIZE /* Number of alpha bits */
+#define IUP_ALPHA_SIZE "ALPHA_SIZE"
+#endif
+#ifndef IUP_DEPTH_SIZE /* Number of bits in depth buffer */
+#define IUP_DEPTH_SIZE "DEPTH_SIZE"
+#endif
+#ifndef IUP_STENCIL_SIZE /* Number of bits in stencil buffer */
+#define IUP_STENCIL_SIZE "STENCIL_SIZE"
+#endif
+#ifndef IUP_ACCUM_RED_SIZE /* Number of red bits in accum. buffer */
+#define IUP_ACCUM_RED_SIZE "ACCUM_RED_SIZE"
+#endif
+#ifndef IUP_ACCUM_GREEN_SIZE /* Number of green bits in accum. buffer */
+#define IUP_ACCUM_GREEN_SIZE "ACCUM_GREEN_SIZE"
+#endif
+#ifndef IUP_ACCUM_BLUE_SIZE /* Number of blue bits in accum. buffer */
+#define IUP_ACCUM_BLUE_SIZE "ACCUM_BLUE_SIZE"
+#endif
+#ifndef IUP_ACCUM_ALPHA_SIZE /* Number of alpha bits in accum. buffer */
+#define IUP_ACCUM_ALPHA_SIZE "ACCUM_ALPHA_SIZE"
+#endif
+
+
+/* Attribute values */
+#ifndef IUP_DOUBLE
+#define IUP_DOUBLE "DOUBLE"
+#endif
+#ifndef IUP_SINGLE
+#define IUP_SINGLE "SINGLE"
+#endif
+#ifndef IUP_INDEX
+#define IUP_INDEX "INDEX"
+#endif
+#ifndef IUP_RGBA
+#define IUP_RGBA "RGBA"
+#endif
+#ifndef IUP_YES
+#define IUP_YES "YES"
+#endif
+#ifndef IUP_NO
+#define IUP_NO "NO"
+#endif
+
+void IupGLCanvasOpen(void);
+
+Ihandle *IupGLCanvas(const char *action);
+
+void IupGLMakeCurrent(Ihandle* ih);
+int IupGLIsCurrent(Ihandle* ih);
+void IupGLSwapBuffers(Ihandle* ih);
+void IupGLPalette(Ihandle* ih, int index, float r, float g, float b);
+void IupGLUseFont(Ihandle* ih, int first, int count, int list_base);
+void IupGLWait(int gl);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/include/iupim.h b/iup/include/iupim.h
new file mode 100755
index 0000000..03b712c
--- /dev/null
+++ b/iup/include/iupim.h
@@ -0,0 +1,27 @@
+/** \file
+ * \brief Utilities using IM
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPIM_H
+#define __IUPIM_H
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+Ihandle* IupLoadImage(const char* file_name);
+int IupSaveImage(Ihandle* ih, const char* file_name, const char* format);
+
+#ifdef __IM_IMAGE_H
+imImage* IupGetNativeHandleImage(void* handle);
+void* IupGetImageNativeHandle(imImage* image);
+#endif
+
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif
diff --git a/iup/include/iupkey.h b/iup/include/iupkey.h
new file mode 100755
index 0000000..b80c47e
--- /dev/null
+++ b/iup/include/iupkey.h
@@ -0,0 +1,457 @@
+/** \file
+ * \brief Keyboard Keys definitions.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPKEY_H
+#define __IUPKEY_H
+
+/* from 32 to 126, all character sets are equal,
+ the key code i the same as the character code. */
+
+#define K_SP ' ' /* 32 (0x20) */
+#define K_exclam '!' /* 33 */
+#define K_quotedbl '\"' /* 34 */
+#define K_numbersign '#' /* 35 */
+#define K_dollar '$' /* 36 */
+#define K_percent '%' /* 37 */
+#define K_ampersand '&' /* 38 */
+#define K_apostrophe '\'' /* 39 */
+#define K_parentleft '(' /* 40 */
+#define K_parentright ')' /* 41 */
+#define K_asterisk '*' /* 42 */
+#define K_plus '+' /* 43 */
+#define K_comma ',' /* 44 */
+#define K_minus '-' /* 45 */
+#define K_period '.' /* 46 */
+#define K_slash '/' /* 47 */
+#define K_0 '0' /* 48 (0x30) */
+#define K_1 '1' /* 49 */
+#define K_2 '2' /* 50 */
+#define K_3 '3' /* 51 */
+#define K_4 '4' /* 52 */
+#define K_5 '5' /* 53 */
+#define K_6 '6' /* 54 */
+#define K_7 '7' /* 55 */
+#define K_8 '8' /* 56 */
+#define K_9 '9' /* 57 */
+#define K_colon ':' /* 58 */
+#define K_semicolon ';' /* 59 */
+#define K_less '<' /* 60 */
+#define K_equal '=' /* 61 */
+#define K_greater '>' /* 62 */
+#define K_question '?' /* 63 */
+#define K_at '@' /* 64 */
+#define K_A 'A' /* 65 (0x41) */
+#define K_B 'B' /* 66 */
+#define K_C 'C' /* 67 */
+#define K_D 'D' /* 68 */
+#define K_E 'E' /* 69 */
+#define K_F 'F' /* 70 */
+#define K_G 'G' /* 71 */
+#define K_H 'H' /* 72 */
+#define K_I 'I' /* 73 */
+#define K_J 'J' /* 74 */
+#define K_K 'K' /* 75 */
+#define K_L 'L' /* 76 */
+#define K_M 'M' /* 77 */
+#define K_N 'N' /* 78 */
+#define K_O 'O' /* 79 */
+#define K_P 'P' /* 80 */
+#define K_Q 'Q' /* 81 */
+#define K_R 'R' /* 82 */
+#define K_S 'S' /* 83 */
+#define K_T 'T' /* 84 */
+#define K_U 'U' /* 85 */
+#define K_V 'V' /* 86 */
+#define K_W 'W' /* 87 */
+#define K_X 'X' /* 88 */
+#define K_Y 'Y' /* 89 */
+#define K_Z 'Z' /* 90 */
+#define K_bracketleft '[' /* 91 */
+#define K_backslash '\\' /* 92 */
+#define K_bracketright ']' /* 93 */
+#define K_circum '^' /* 94 */
+#define K_underscore '_' /* 95 */
+#define K_grave '`' /* 96 */
+#define K_a 'a' /* 97 (0x61) */
+#define K_b 'b' /* 98 */
+#define K_c 'c' /* 99 */
+#define K_d 'd' /* 100 */
+#define K_e 'e' /* 101 */
+#define K_f 'f' /* 102 */
+#define K_g 'g' /* 103 */
+#define K_h 'h' /* 104 */
+#define K_i 'i' /* 105 */
+#define K_j 'j' /* 106 */
+#define K_k 'k' /* 107 */
+#define K_l 'l' /* 108 */
+#define K_m 'm' /* 109 */
+#define K_n 'n' /* 110 */
+#define K_o 'o' /* 111 */
+#define K_p 'p' /* 112 */
+#define K_q 'q' /* 113 */
+#define K_r 'r' /* 114 */
+#define K_s 's' /* 115 */
+#define K_t 't' /* 116 */
+#define K_u 'u' /* 117 */
+#define K_v 'v' /* 118 */
+#define K_w 'w' /* 119 */
+#define K_x 'x' /* 120 */
+#define K_y 'y' /* 121 */
+#define K_z 'z' /* 122 */
+#define K_braceleft '{' /* 123 */
+#define K_bar '|' /* 124 */
+#define K_braceright '}' /* 125 */
+#define K_tilde '~' /* 126 */
+
+#define iup_isprint(_c) ((_c) > 31 && (_c) < 127)
+
+/* also define the escape sequences that have keys associated */
+
+#define K_BS '\b' /* 8 */
+#define K_TAB '\t' /* 9 */
+#define K_LF '\n' /* 10 (0x0A) not a real key, is a combination of CR with a modifier, just to document */
+#define K_CR '\r' /* 13 (0x0D) */
+
+/* backward compatible definitions */
+
+#define K_quoteleft K_grave
+#define K_quoteright K_apostrophe
+#define isxkey iup_isXkey
+
+/* IUP Extended Key Codes, range start at 128 */
+/* Modifiers use 256 interval */
+/* These key code definitions are specific to IUP */
+
+#define iup_isXkey(_c) ((_c) > 128)
+#define iup_isShiftXkey(_c) (((_c) > 256) && ((_c) < 512))
+#define iup_isCtrlXkey(_c) (((_c) > 512) && ((_c) < 768))
+#define iup_isAltXkey(_c) (((_c) > 768) && ((_c) < 1024))
+#define iup_isSysXkey(_c) (((_c) > 1024) && ((_c) < 1280))
+
+#define IUPxCODE(_c) ((_c) + 128) /* Normal (must be above 128) */
+#define IUPsxCODE(_c) ((_c) + 256) /* Shift (must have range to include the standard keys and the normal extended keys, so must be above 256 */
+#define IUPcxCODE(_c) ((_c) + 512) /* Ctrl */
+#define IUPmxCODE(_c) ((_c) + 768) /* Alt */
+#define IUPyxCODE(_c) ((_c) + 1024) /* Sys (Win or Apple) */
+
+#define IUP_NUMMAXCODES 1280 /* 5*256=1280 Normal+Shift+Ctrl+Alt+Sys */
+
+#define K_HOME IUPxCODE(1)
+#define K_UP IUPxCODE(2)
+#define K_PGUP IUPxCODE(3)
+#define K_LEFT IUPxCODE(4)
+#define K_MIDDLE IUPxCODE(5)
+#define K_RIGHT IUPxCODE(6)
+#define K_END IUPxCODE(7)
+#define K_DOWN IUPxCODE(8)
+#define K_PGDN IUPxCODE(9)
+#define K_INS IUPxCODE(10)
+#define K_DEL IUPxCODE(11)
+#define K_PAUSE IUPxCODE(12)
+#define K_ESC IUPxCODE(13)
+#define K_ccedilla IUPxCODE(14)
+#define K_F1 IUPxCODE(15)
+#define K_F2 IUPxCODE(16)
+#define K_F3 IUPxCODE(17)
+#define K_F4 IUPxCODE(18)
+#define K_F5 IUPxCODE(19)
+#define K_F6 IUPxCODE(20)
+#define K_F7 IUPxCODE(21)
+#define K_F8 IUPxCODE(22)
+#define K_F9 IUPxCODE(23)
+#define K_F10 IUPxCODE(24)
+#define K_F11 IUPxCODE(25)
+#define K_F12 IUPxCODE(26)
+#define K_Print IUPxCODE(27)
+#define K_Menu IUPxCODE(28)
+
+#define K_acute IUPxCODE(29) /* no Shift/Ctrl/Alt */
+
+#define K_sHOME IUPsxCODE(K_HOME )
+#define K_sUP IUPsxCODE(K_UP )
+#define K_sPGUP IUPsxCODE(K_PGUP )
+#define K_sLEFT IUPsxCODE(K_LEFT )
+#define K_sMIDDLE IUPsxCODE(K_MIDDLE )
+#define K_sRIGHT IUPsxCODE(K_RIGHT )
+#define K_sEND IUPsxCODE(K_END )
+#define K_sDOWN IUPsxCODE(K_DOWN )
+#define K_sPGDN IUPsxCODE(K_PGDN )
+#define K_sINS IUPsxCODE(K_INS )
+#define K_sDEL IUPsxCODE(K_DEL )
+#define K_sSP IUPsxCODE(K_SP )
+#define K_sTAB IUPsxCODE(K_TAB )
+#define K_sCR IUPsxCODE(K_CR )
+#define K_sBS IUPsxCODE(K_BS )
+#define K_sPAUSE IUPsxCODE(K_PAUSE )
+#define K_sESC IUPsxCODE(K_ESC )
+#define K_Ccedilla IUPsxCODE(K_ccedilla)
+#define K_sF1 IUPsxCODE(K_F1 )
+#define K_sF2 IUPsxCODE(K_F2 )
+#define K_sF3 IUPsxCODE(K_F3 )
+#define K_sF4 IUPsxCODE(K_F4 )
+#define K_sF5 IUPsxCODE(K_F5 )
+#define K_sF6 IUPsxCODE(K_F6 )
+#define K_sF7 IUPsxCODE(K_F7 )
+#define K_sF8 IUPsxCODE(K_F8 )
+#define K_sF9 IUPsxCODE(K_F9 )
+#define K_sF10 IUPsxCODE(K_F10 )
+#define K_sF11 IUPsxCODE(K_F11 )
+#define K_sF12 IUPsxCODE(K_F12 )
+#define K_sPrint IUPsxCODE(K_Print )
+#define K_sMenu IUPsxCODE(K_Menu )
+
+#define K_cHOME IUPcxCODE(K_HOME )
+#define K_cUP IUPcxCODE(K_UP )
+#define K_cPGUP IUPcxCODE(K_PGUP )
+#define K_cLEFT IUPcxCODE(K_LEFT )
+#define K_cMIDDLE IUPcxCODE(K_MIDDLE )
+#define K_cRIGHT IUPcxCODE(K_RIGHT )
+#define K_cEND IUPcxCODE(K_END )
+#define K_cDOWN IUPcxCODE(K_DOWN )
+#define K_cPGDN IUPcxCODE(K_PGDN )
+#define K_cINS IUPcxCODE(K_INS )
+#define K_cDEL IUPcxCODE(K_DEL )
+#define K_cSP IUPcxCODE(K_SP )
+#define K_cTAB IUPcxCODE(K_TAB )
+#define K_cCR IUPcxCODE(K_CR )
+#define K_cBS IUPcxCODE(K_BS )
+#define K_cPAUSE IUPcxCODE(K_PAUSE )
+#define K_cESC IUPcxCODE(K_ESC )
+#define K_cCcedilla IUPcxCODE(K_ccedilla)
+#define K_cF1 IUPcxCODE(K_F1 )
+#define K_cF2 IUPcxCODE(K_F2 )
+#define K_cF3 IUPcxCODE(K_F3 )
+#define K_cF4 IUPcxCODE(K_F4 )
+#define K_cF5 IUPcxCODE(K_F5 )
+#define K_cF6 IUPcxCODE(K_F6 )
+#define K_cF7 IUPcxCODE(K_F7 )
+#define K_cF8 IUPcxCODE(K_F8 )
+#define K_cF9 IUPcxCODE(K_F9 )
+#define K_cF10 IUPcxCODE(K_F10 )
+#define K_cF11 IUPcxCODE(K_F11 )
+#define K_cF12 IUPcxCODE(K_F12 )
+#define K_cPrint IUPcxCODE(K_Print )
+#define K_cMenu IUPcxCODE(K_Menu )
+
+#define K_mHOME IUPmxCODE(K_HOME )
+#define K_mUP IUPmxCODE(K_UP )
+#define K_mPGUP IUPmxCODE(K_PGUP )
+#define K_mLEFT IUPmxCODE(K_LEFT )
+#define K_mMIDDLE IUPmxCODE(K_MIDDLE )
+#define K_mRIGHT IUPmxCODE(K_RIGHT )
+#define K_mEND IUPmxCODE(K_END )
+#define K_mDOWN IUPmxCODE(K_DOWN )
+#define K_mPGDN IUPmxCODE(K_PGDN )
+#define K_mINS IUPmxCODE(K_INS )
+#define K_mDEL IUPmxCODE(K_DEL )
+#define K_mSP IUPmxCODE(K_SP )
+#define K_mTAB IUPmxCODE(K_TAB )
+#define K_mCR IUPmxCODE(K_CR )
+#define K_mBS IUPmxCODE(K_BS )
+#define K_mPAUSE IUPmxCODE(K_PAUSE )
+#define K_mESC IUPmxCODE(K_ESC )
+#define K_mCcedilla IUPmxCODE(K_ccedilla)
+#define K_mF1 IUPmxCODE(K_F1 )
+#define K_mF2 IUPmxCODE(K_F2 )
+#define K_mF3 IUPmxCODE(K_F3 )
+#define K_mF4 IUPmxCODE(K_F4 )
+#define K_mF5 IUPmxCODE(K_F5 )
+#define K_mF6 IUPmxCODE(K_F6 )
+#define K_mF7 IUPmxCODE(K_F7 )
+#define K_mF8 IUPmxCODE(K_F8 )
+#define K_mF9 IUPmxCODE(K_F9 )
+#define K_mF10 IUPmxCODE(K_F10 )
+#define K_mF11 IUPmxCODE(K_F11 )
+#define K_mF12 IUPmxCODE(K_F12 )
+#define K_mPrint IUPmxCODE(K_Print )
+#define K_mMenu IUPmxCODE(K_Menu )
+
+#define K_yHOME IUPyxCODE(K_HOME )
+#define K_yUP IUPyxCODE(K_UP )
+#define K_yPGUP IUPyxCODE(K_PGUP )
+#define K_yLEFT IUPyxCODE(K_LEFT )
+#define K_yMIDDLE IUPyxCODE(K_MIDDLE )
+#define K_yRIGHT IUPyxCODE(K_RIGHT )
+#define K_yEND IUPyxCODE(K_END )
+#define K_yDOWN IUPyxCODE(K_DOWN )
+#define K_yPGDN IUPyxCODE(K_PGDN )
+#define K_yINS IUPyxCODE(K_INS )
+#define K_yDEL IUPyxCODE(K_DEL )
+#define K_ySP IUPyxCODE(K_SP )
+#define K_yTAB IUPyxCODE(K_TAB )
+#define K_yCR IUPyxCODE(K_CR )
+#define K_yBS IUPyxCODE(K_BS )
+#define K_yPAUSE IUPyxCODE(K_PAUSE )
+#define K_yESC IUPyxCODE(K_ESC )
+#define K_yCcedilla IUPyxCODE(K_ccedilla)
+#define K_yF1 IUPyxCODE(K_F1 )
+#define K_yF2 IUPyxCODE(K_F2 )
+#define K_yF3 IUPyxCODE(K_F3 )
+#define K_yF4 IUPyxCODE(K_F4 )
+#define K_yF5 IUPyxCODE(K_F5 )
+#define K_yF6 IUPyxCODE(K_F6 )
+#define K_yF7 IUPyxCODE(K_F7 )
+#define K_yF8 IUPyxCODE(K_F8 )
+#define K_yF9 IUPyxCODE(K_F9 )
+#define K_yF10 IUPyxCODE(K_F10 )
+#define K_yF11 IUPyxCODE(K_F11 )
+#define K_yF12 IUPyxCODE(K_F12 )
+#define K_yPrint IUPyxCODE(K_Print )
+#define K_yMenu IUPyxCODE(K_Menu )
+
+#define K_sPlus IUPsxCODE(K_plus )
+#define K_sComma IUPsxCODE(K_comma )
+#define K_sMinus IUPsxCODE(K_minus )
+#define K_sPeriod IUPsxCODE(K_period )
+#define K_sSlash IUPsxCODE(K_slash )
+#define K_sAsterisk IUPsxCODE(K_asterisk)
+
+#define K_cA IUPcxCODE(K_A)
+#define K_cB IUPcxCODE(K_B)
+#define K_cC IUPcxCODE(K_C)
+#define K_cD IUPcxCODE(K_D)
+#define K_cE IUPcxCODE(K_E)
+#define K_cF IUPcxCODE(K_F)
+#define K_cG IUPcxCODE(K_G)
+#define K_cH IUPcxCODE(K_H)
+#define K_cI IUPcxCODE(K_I)
+#define K_cJ IUPcxCODE(K_J)
+#define K_cK IUPcxCODE(K_K)
+#define K_cL IUPcxCODE(K_L)
+#define K_cM IUPcxCODE(K_M)
+#define K_cN IUPcxCODE(K_N)
+#define K_cO IUPcxCODE(K_O)
+#define K_cP IUPcxCODE(K_P)
+#define K_cQ IUPcxCODE(K_Q)
+#define K_cR IUPcxCODE(K_R)
+#define K_cS IUPcxCODE(K_S)
+#define K_cT IUPcxCODE(K_T)
+#define K_cU IUPcxCODE(K_U)
+#define K_cV IUPcxCODE(K_V)
+#define K_cW IUPcxCODE(K_W)
+#define K_cX IUPcxCODE(K_X)
+#define K_cY IUPcxCODE(K_Y)
+#define K_cZ IUPcxCODE(K_Z)
+#define K_c1 IUPcxCODE(K_1)
+#define K_c2 IUPcxCODE(K_2)
+#define K_c3 IUPcxCODE(K_3)
+#define K_c4 IUPcxCODE(K_4)
+#define K_c5 IUPcxCODE(K_5)
+#define K_c6 IUPcxCODE(K_6)
+#define K_c7 IUPcxCODE(K_7)
+#define K_c8 IUPcxCODE(K_8)
+#define K_c9 IUPcxCODE(K_9)
+#define K_c0 IUPcxCODE(K_0)
+#define K_cPlus IUPcxCODE(K_plus )
+#define K_cComma IUPcxCODE(K_comma )
+#define K_cMinus IUPcxCODE(K_minus )
+#define K_cPeriod IUPcxCODE(K_period )
+#define K_cSlash IUPcxCODE(K_slash )
+#define K_cSemicolon IUPcxCODE(K_semicolon )
+#define K_cEqual IUPcxCODE(K_equal )
+#define K_cBracketleft IUPcxCODE(K_bracketleft )
+#define K_cBracketright IUPcxCODE(K_bracketright)
+#define K_cBackslash IUPcxCODE(K_backslash )
+#define K_cAsterisk IUPcxCODE(K_asterisk )
+
+#define K_mA IUPmxCODE(K_A)
+#define K_mB IUPmxCODE(K_B)
+#define K_mC IUPmxCODE(K_C)
+#define K_mD IUPmxCODE(K_D)
+#define K_mE IUPmxCODE(K_E)
+#define K_mF IUPmxCODE(K_F)
+#define K_mG IUPmxCODE(K_G)
+#define K_mH IUPmxCODE(K_H)
+#define K_mI IUPmxCODE(K_I)
+#define K_mJ IUPmxCODE(K_J)
+#define K_mK IUPmxCODE(K_K)
+#define K_mL IUPmxCODE(K_L)
+#define K_mM IUPmxCODE(K_M)
+#define K_mN IUPmxCODE(K_N)
+#define K_mO IUPmxCODE(K_O)
+#define K_mP IUPmxCODE(K_P)
+#define K_mQ IUPmxCODE(K_Q)
+#define K_mR IUPmxCODE(K_R)
+#define K_mS IUPmxCODE(K_S)
+#define K_mT IUPmxCODE(K_T)
+#define K_mU IUPmxCODE(K_U)
+#define K_mV IUPmxCODE(K_V)
+#define K_mW IUPmxCODE(K_W)
+#define K_mX IUPmxCODE(K_X)
+#define K_mY IUPmxCODE(K_Y)
+#define K_mZ IUPmxCODE(K_Z)
+#define K_m1 IUPmxCODE(K_1)
+#define K_m2 IUPmxCODE(K_2)
+#define K_m3 IUPmxCODE(K_3)
+#define K_m4 IUPmxCODE(K_4)
+#define K_m5 IUPmxCODE(K_5)
+#define K_m6 IUPmxCODE(K_6)
+#define K_m7 IUPmxCODE(K_7)
+#define K_m8 IUPmxCODE(K_8)
+#define K_m9 IUPmxCODE(K_9)
+#define K_m0 IUPmxCODE(K_0)
+#define K_mPlus IUPmxCODE(K_plus )
+#define K_mComma IUPmxCODE(K_comma )
+#define K_mMinus IUPmxCODE(K_minus )
+#define K_mPeriod IUPmxCODE(K_period )
+#define K_mSlash IUPmxCODE(K_slash )
+#define K_mSemicolon IUPmxCODE(K_semicolon )
+#define K_mEqual IUPmxCODE(K_equal )
+#define K_mBracketleft IUPmxCODE(K_bracketleft )
+#define K_mBracketright IUPmxCODE(K_bracketright)
+#define K_mBackslash IUPmxCODE(K_backslash )
+#define K_mAsterisk IUPmxCODE(K_asterisk )
+
+#define K_yA IUPyxCODE(K_A)
+#define K_yB IUPyxCODE(K_B)
+#define K_yC IUPyxCODE(K_C)
+#define K_yD IUPyxCODE(K_D)
+#define K_yE IUPyxCODE(K_E)
+#define K_yF IUPyxCODE(K_F)
+#define K_yG IUPyxCODE(K_G)
+#define K_yH IUPyxCODE(K_H)
+#define K_yI IUPyxCODE(K_I)
+#define K_yJ IUPyxCODE(K_J)
+#define K_yK IUPyxCODE(K_K)
+#define K_yL IUPyxCODE(K_L)
+#define K_yM IUPyxCODE(K_M)
+#define K_yN IUPyxCODE(K_N)
+#define K_yO IUPyxCODE(K_O)
+#define K_yP IUPyxCODE(K_P)
+#define K_yQ IUPyxCODE(K_Q)
+#define K_yR IUPyxCODE(K_R)
+#define K_yS IUPyxCODE(K_S)
+#define K_yT IUPyxCODE(K_T)
+#define K_yU IUPyxCODE(K_U)
+#define K_yV IUPyxCODE(K_V)
+#define K_yW IUPyxCODE(K_W)
+#define K_yX IUPyxCODE(K_X)
+#define K_yY IUPyxCODE(K_Y)
+#define K_yZ IUPyxCODE(K_Z)
+#define K_y1 IUPyxCODE(K_1)
+#define K_y2 IUPyxCODE(K_2)
+#define K_y3 IUPyxCODE(K_3)
+#define K_y4 IUPyxCODE(K_4)
+#define K_y5 IUPyxCODE(K_5)
+#define K_y6 IUPyxCODE(K_6)
+#define K_y7 IUPyxCODE(K_7)
+#define K_y8 IUPyxCODE(K_8)
+#define K_y9 IUPyxCODE(K_9)
+#define K_y0 IUPyxCODE(K_0)
+#define K_yPlus IUPyxCODE(K_plus )
+#define K_yComma IUPyxCODE(K_comma )
+#define K_yMinus IUPyxCODE(K_minus )
+#define K_yPeriod IUPyxCODE(K_period )
+#define K_ySlash IUPyxCODE(K_slash )
+#define K_ySemicolon IUPyxCODE(K_semicolon )
+#define K_yEqual IUPyxCODE(K_equal )
+#define K_yBracketleft IUPyxCODE(K_bracketleft )
+#define K_yBracketright IUPyxCODE(K_bracketright)
+#define K_yBackslash IUPyxCODE(K_backslash )
+#define K_yAsterisk IUPyxCODE(K_asterisk )
+
+
+#endif
diff --git a/iup/include/iuplua.h b/iup/include/iuplua.h
new file mode 100755
index 0000000..dc660b5
--- /dev/null
+++ b/iup/include/iuplua.h
@@ -0,0 +1,41 @@
+/** \file
+ * \brief IUP Binding for Lua.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPLUA_H
+#define __IUPLUA_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef LUA_NOOBJECT /* Lua 3 */
+int iuplua_open (void);
+int iupkey_open (void);
+
+/* utilities */
+Ihandle* iuplua_checkihandle(int pos);
+void iuplua_pushihandle(Ihandle *n);
+int iuplua_dofile (char *filename);
+#endif
+
+#ifdef LUA_TNONE /* Lua 5 */
+int iuplua_open(lua_State *L);
+int iupkey_open(lua_State *L);
+int iuplua_close(lua_State * L);
+
+/* utilities */
+Ihandle* iuplua_checkihandle(lua_State *L, int pos);
+void iuplua_pushihandle(lua_State *L, Ihandle *n);
+int iuplua_dofile(lua_State *L, const char *filename);
+int iuplua_dostring(lua_State *L, const char *string, const char *chunk_name);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/include/iuplua_pplot.h b/iup/include/iuplua_pplot.h
new file mode 100755
index 0000000..522941b
--- /dev/null
+++ b/iup/include/iuplua_pplot.h
@@ -0,0 +1,26 @@
+/** \file
+ * \brief iup_pplot Binding for Lua.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPLUA_PPLOT_H
+#define __IUPLUA_PPLOT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef LUA_NOOBJECT /* Lua 3 */
+int iup_pplotlua_open (void);
+#endif
+
+#ifdef LUA_TNONE /* Lua 5 */
+int iup_pplotlua_open (lua_State * L);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/include/iupluacontrols.h b/iup/include/iupluacontrols.h
new file mode 100755
index 0000000..174192e
--- /dev/null
+++ b/iup/include/iupluacontrols.h
@@ -0,0 +1,27 @@
+/** \file
+ * \brief iupcontrols Binding for Lua.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPLUACONTROLS_H
+#define __IUPLUACONTROLS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef LUA_NOOBJECT /* Lua 3 */
+int iupcontrolslua_open (void);
+#endif
+
+#ifdef LUA_TNONE /* Lua 5 */
+int iupcontrolslua_open (lua_State * L);
+int iupcontrolslua_close(lua_State * L);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/include/iupluagl.h b/iup/include/iupluagl.h
new file mode 100755
index 0000000..8b65f6b
--- /dev/null
+++ b/iup/include/iupluagl.h
@@ -0,0 +1,26 @@
+/** \file
+ * \brief Binding of iupglcanvas to Lua.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPLUAGL_H
+#define __IUPLUAGL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef LUA_NOOBJECT /* Lua 3 */
+int iupgllua_open(void);
+#endif
+
+#ifdef LUA_TNONE /* Lua 5 */
+int iupgllua_open (lua_State * L);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/include/iupluaim.h b/iup/include/iupluaim.h
new file mode 100755
index 0000000..2544057
--- /dev/null
+++ b/iup/include/iupluaim.h
@@ -0,0 +1,26 @@
+/** \file
+ * \brief Bindig of iupim functions to Lua.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPLUAIM_H
+#define __IUPLUAIM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef LUA_NOOBJECT /* Lua 3 */
+void iupimlua_open(void);
+#endif
+
+#ifdef LUA_TNONE /* Lua 5 */
+int iupimlua_open(lua_State * L);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/include/iupluaole.h b/iup/include/iupluaole.h
new file mode 100755
index 0000000..9a0ad08
--- /dev/null
+++ b/iup/include/iupluaole.h
@@ -0,0 +1,26 @@
+/** \file
+ * \brief Binding of iupolecontrol to Lua.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPLUAOLE_H
+#define __IUPLUAOLE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef LUA_NOOBJECT /* Lua 3 */
+int iupolelua_open(void);
+#endif
+
+#ifdef LUA_TNONE /* Lua 5 */
+int iupolelua_open (lua_State * L);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/include/iupmask.h b/iup/include/iupmask.h
new file mode 100755
index 0000000..faf71d7
--- /dev/null
+++ b/iup/include/iupmask.h
@@ -0,0 +1,41 @@
+/** \file
+ * \brief iupmask functions.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_OLDMASK_H
+#define __IUP_OLDMASK_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#pragma message("Warning: Using OLD iupMask definitions, use the MASK attribute in IupText or IupMatrix.")
+
+/* OLD definitions, use the MASK attribute in IupText or IupMatrix */
+int iupmaskSet (Ihandle *h, const char *mask, int autofill, int casei);
+int iupmaskSetInt (Ihandle *h, int autofill, int min , int max);
+int iupmaskSetFloat(Ihandle *h, int autofill, float min , float max);
+void iupmaskRemove (Ihandle *h);
+int iupmaskCheck (Ihandle *h);
+int iupmaskGet (Ihandle *h, char **val);
+int iupmaskGetFloat (Ihandle *h, float *fval);
+int iupmaskGetDouble(Ihandle *h, double *dval);
+int iupmaskGetInt (Ihandle *h, int *ival);
+int iupmaskMatSet (Ihandle *h, const char *mask, int autofill, int casei, int lin, int col);
+int iupmaskMatSetInt (Ihandle *h, int autofill, int min, int max, int lin, int col);
+int iupmaskMatSetFloat(Ihandle *h, int autofill, float min, float max, int lin, int col);
+void iupmaskMatRemove (Ihandle *h, int lin, int col);
+int iupmaskMatCheck (Ihandle *h, int lin, int col);
+int iupmaskMatGet (Ihandle *h, char **val, int lin, int col);
+int iupmaskMatGetFloat (Ihandle *h, float *fval, int lin, int col);
+int iupmaskMatGetDouble(Ihandle *h, double *dval, int lin, int col);
+int iupmaskMatGetInt (Ihandle *h, int *ival, int lin, int col);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/include/iupmatrix.h b/iup/include/iupmatrix.h
new file mode 100755
index 0000000..1285b04
--- /dev/null
+++ b/iup/include/iupmatrix.h
@@ -0,0 +1 @@
+#include <iupcontrols.h>
diff --git a/iup/include/iupole.h b/iup/include/iupole.h
new file mode 100755
index 0000000..8c7d4ba
--- /dev/null
+++ b/iup/include/iupole.h
@@ -0,0 +1,24 @@
+/** \file
+ * \brief Ole control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPOLE_H
+#define __IUPOLE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+Ihandle *IupOleControl(const char* progid);
+
+int IupOleControlOpen(void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/include/iupsbox.h b/iup/include/iupsbox.h
new file mode 100755
index 0000000..5ae1901
--- /dev/null
+++ b/iup/include/iupsbox.h
@@ -0,0 +1 @@
+#include <iup.h>
diff --git a/iup/include/iupspin.h b/iup/include/iupspin.h
new file mode 100755
index 0000000..5ae1901
--- /dev/null
+++ b/iup/include/iupspin.h
@@ -0,0 +1 @@
+#include <iup.h>
diff --git a/iup/include/iuptabs.h b/iup/include/iuptabs.h
new file mode 100755
index 0000000..5ae1901
--- /dev/null
+++ b/iup/include/iuptabs.h
@@ -0,0 +1 @@
+#include <iup.h>
diff --git a/iup/include/iuptree.h b/iup/include/iuptree.h
new file mode 100755
index 0000000..1285b04
--- /dev/null
+++ b/iup/include/iuptree.h
@@ -0,0 +1 @@
+#include <iupcontrols.h>
diff --git a/iup/include/iupval.h b/iup/include/iupval.h
new file mode 100755
index 0000000..5ae1901
--- /dev/null
+++ b/iup/include/iupval.h
@@ -0,0 +1 @@
+#include <iup.h>
diff --git a/iup/mak.vc8/iup.sln b/iup/mak.vc8/iup.sln
new file mode 100755
index 0000000..c0fe994
--- /dev/null
+++ b/iup/mak.vc8/iup.sln
@@ -0,0 +1,347 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupcore", "iupcore.vcproj", "{2C7E83B9-7FE8-432A-97BA-FCF4D0728408}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupgtk", "iupgtk.vcproj", "{2C7E83B9-7FE8-5555-97BA-FCF4D0728408}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupmot", "iupmot.vcproj", "{2C7E83B9-1234-432A-97BA-FCF4D0728408}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuptest", "iuptest.vcproj", "{2F92EC58-D94C-40BF-8C82-77607C72E1E3}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA}
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuptestgtk", "iuptestgtk.vcproj", "{2F92EC58-1234-40BF-5678-77607C72E1E3}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}
+ {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupwin", "iupwin.vcproj", "{2C7E83B9-123A-BCDF-97BA-FCF4D0728408}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupgl", "iupgl.vcproj", "{E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupcontrols", "iupcontrols.vcproj", "{5EEFE977-C56D-462F-BDEE-12A5452EB8CC}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iup_pplot", "iup_pplot.vcproj", "{5A42018B-95AC-A789-E4E4-59A692649DCA}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupole", "iupole.vcproj", "{0C80BBEE-1B00-4567-1234-067292C84EDB}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupimglib", "iupimglib.vcproj", "{E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupcd", "iupcd.vcproj", "{BE7472E1-E76E-4969-A35F-054614F5884E}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupim", "iupim.vcproj", "{E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua3", "iuplua3.vcproj", "{1EBC7A53-4677-4C3A-8DFF-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua3_exe", "iupluaexe3.vcproj", "{A60D658D-766C-40DB-BAFF-59AB884D86FB}"
+ ProjectSection(ProjectDependencies) = postProject
+ {1EBC7A53-4677-4C3A-8DFF-269001F17D85} = {1EBC7A53-4677-4C3A-8DFF-269001F17D85}
+ {1EBC7A53-4677-4C3A-8DFF-49D301F17D85} = {1EBC7A53-4677-4C3A-8DFF-49D301F17D85}
+ {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85} = {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}
+ {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85} = {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua5", "iuplua5.vcproj", "{1EBC7A53-4677-4C3A-8D4A-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua5_exe", "iupluaexe5.vcproj", "{A60D658D-766C-40DB-BAE4-59AB884D86FB}"
+ ProjectSection(ProjectDependencies) = postProject
+ {1EBC7A53-4677-4C3A-8D4A-49D301157985} = {1EBC7A53-4677-4C3A-8D4A-49D301157985}
+ {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} = {1EBC7A53-4677-4C3A-8D4A-49D301F17D85}
+ {1EBC7A53-4677-AAAA-1234-49D301F17D85} = {1EBC7A53-4677-AAAA-1234-49D301F17D85}
+ {1EBC7A53-4677-75D7-8D4A-49D301F17D85} = {1EBC7A53-4677-75D7-8D4A-49D301F17D85}
+ {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} = {1EBC7A53-4677-ADF1-8D4A-49D301F17D85}
+ {B4823266-DF8C-4EFB-91C0-C7688C234EAC} = {B4823266-DF8C-4EFB-91C0-C7688C234EAC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA}
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ledc", "ledc.vcproj", "{0F789DF8-22CC-4392-98DB-AC3960FAD4EA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupview", "iupview.vcproj", "{2F92EC58-D94C-40BF-4444-77607C72E1E3}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaim5", "iupluaim5.vcproj", "{1EBC7A53-4677-ADF1-8D4A-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaim3", "iupluaim3.vcproj", "{1EBC7A53-4677-4C3A-8DFF-269001F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacontrols5", "iupluacontrols5.vcproj", "{1EBC7A53-4677-75D7-8D4A-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacontrols3", "iupluacontrols3.vcproj", "{1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluagl5", "iupluagl5.vcproj", "{1EBC7A53-4677-4C3A-8D4A-49D301157985}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluagl3", "iupluagl3.vcproj", "{1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaole3", "iupluaole3.vcproj", "{1EBC7A53-33FF-7890-7890-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaole5", "iupluaole5.vcproj", "{1EBC7A53-4677-5555-2222-49D301157985}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua_pplot5", "iuplua_pplot5.vcproj", "{1EBC7A53-4677-AAAA-1234-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua_pplot3", "iuplua_pplot3.vcproj", "{1EBC7A53-4677-1234-DDDD-49DFF4417D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacd3", "iupluacd3.vcproj", "{B4823266-DF8C-4EFB-91C0-C7E78C234EAC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacd5", "iupluacd5.vcproj", "{B4823266-DF8C-4EFB-91C0-C7688C234EAC}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lua5", "Lua5", "{1CBEAA34-BA34-497D-A775-B9AF6F905696}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lua3", "Lua3", "{11041D08-354A-4300-9624-41277E67DE34}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaimglib5", "iupluaimglib5.vcproj", "{1EBC7A53-4677-FFFF-1234-49D301F17D85}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{FC52B7B5-744E-45D6-815C-3502F9D965E7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupsample", "iupsample.vcproj", "{9462FDEA-3E53-4250-8710-DD50AF48607C}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupsamplegtk", "iupsamplegtk.vcproj", "{C684B76D-52EC-49CE-84F2-B031509419A5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupviewgtk", "iupviewgtk.vcproj", "{E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua5gtk_exe", "iupluaexe5gtk.vcproj", "{389DF3C9-A628-4F6D-8C52-8924FA01DE66}"
+ ProjectSection(ProjectDependencies) = postProject
+ {1EBC7A53-4677-4C3A-8D4A-49D301157985} = {1EBC7A53-4677-4C3A-8D4A-49D301157985}
+ {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} = {1EBC7A53-4677-4C3A-8D4A-49D301F17D85}
+ {1EBC7A53-4677-AAAA-1234-49D301F17D85} = {1EBC7A53-4677-AAAA-1234-49D301F17D85}
+ {1EBC7A53-4677-75D7-8D4A-49D301F17D85} = {1EBC7A53-4677-75D7-8D4A-49D301F17D85}
+ {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} = {1EBC7A53-4677-ADF1-8D4A-49D301F17D85}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}
+ {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}.Debug|Win32.Build.0 = Debug|Win32
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}.Debug|Win32.Build.0 = Debug|Win32
+ {2C7E83B9-1234-432A-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2F92EC58-D94C-40BF-8C82-77607C72E1E3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2F92EC58-D94C-40BF-8C82-77607C72E1E3}.Debug|Win32.Build.0 = Debug|Win32
+ {2F92EC58-1234-40BF-5678-77607C72E1E3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2F92EC58-1234-40BF-5678-77607C72E1E3}.Debug|Win32.Build.0 = Debug|Win32
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}.Debug|Win32.Build.0 = Debug|Win32
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}.Debug|Win32.Build.0 = Debug|Win32
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}.Debug|Win32.Build.0 = Debug|Win32
+ {5A42018B-95AC-A789-E4E4-59A692649DCA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5A42018B-95AC-A789-E4E4-59A692649DCA}.Debug|Win32.Build.0 = Debug|Win32
+ {0C80BBEE-1B00-4567-1234-067292C84EDB}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0C80BBEE-1B00-4567-1234-067292C84EDB}.Debug|Win32.Build.0 = Debug|Win32
+ {E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}.Debug|Win32.Build.0 = Debug|Win32
+ {BE7472E1-E76E-4969-A35F-054614F5884E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BE7472E1-E76E-4969-A35F-054614F5884E}.Debug|Win32.Build.0 = Debug|Win32
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-4C3A-8DFF-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-4C3A-8DFF-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {A60D658D-766C-40DB-BAFF-59AB884D86FB}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A60D658D-766C-40DB-BAFF-59AB884D86FB}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-4C3A-8D4A-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-4C3A-8D4A-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {A60D658D-766C-40DB-BAE4-59AB884D86FB}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A60D658D-766C-40DB-BAE4-59AB884D86FB}.Debug|Win32.Build.0 = Debug|Win32
+ {0F789DF8-22CC-4392-98DB-AC3960FAD4EA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0F789DF8-22CC-4392-98DB-AC3960FAD4EA}.Debug|Win32.Build.0 = Debug|Win32
+ {2F92EC58-D94C-40BF-4444-77607C72E1E3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2F92EC58-D94C-40BF-4444-77607C72E1E3}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-ADF1-8D4A-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-ADF1-8D4A-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-4C3A-8DFF-269001F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-4C3A-8DFF-269001F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-75D7-8D4A-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-75D7-8D4A-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-4C3A-8D4A-49D301157985}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-4C3A-8D4A-49D301157985}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-33FF-7890-7890-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-33FF-7890-7890-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-5555-2222-49D301157985}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-5555-2222-49D301157985}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-AAAA-1234-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-AAAA-1234-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-1234-DDDD-49DFF4417D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-1234-DDDD-49DFF4417D85}.Debug|Win32.Build.0 = Debug|Win32
+ {B4823266-DF8C-4EFB-91C0-C7E78C234EAC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B4823266-DF8C-4EFB-91C0-C7E78C234EAC}.Debug|Win32.Build.0 = Debug|Win32
+ {B4823266-DF8C-4EFB-91C0-C7688C234EAC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B4823266-DF8C-4EFB-91C0-C7688C234EAC}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-FFFF-1234-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-FFFF-1234-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {9462FDEA-3E53-4250-8710-DD50AF48607C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9462FDEA-3E53-4250-8710-DD50AF48607C}.Debug|Win32.Build.0 = Debug|Win32
+ {C684B76D-52EC-49CE-84F2-B031509419A5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C684B76D-52EC-49CE-84F2-B031509419A5}.Debug|Win32.Build.0 = Debug|Win32
+ {E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}.Debug|Win32.Build.0 = Debug|Win32
+ {389DF3C9-A628-4F6D-8C52-8924FA01DE66}.Debug|Win32.ActiveCfg = Debug|Win32
+ {389DF3C9-A628-4F6D-8C52-8924FA01DE66}.Debug|Win32.Build.0 = Debug|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD}
+ {2C7E83B9-1234-432A-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD}
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD}
+ {2F92EC58-1234-40BF-5678-77607C72E1E3} = {FC52B7B5-744E-45D6-815C-3502F9D965E7}
+ {2F92EC58-D94C-40BF-8C82-77607C72E1E3} = {FC52B7B5-744E-45D6-815C-3502F9D965E7}
+ {9462FDEA-3E53-4250-8710-DD50AF48607C} = {FC52B7B5-744E-45D6-815C-3502F9D965E7}
+ {C684B76D-52EC-49CE-84F2-B031509419A5} = {FC52B7B5-744E-45D6-815C-3502F9D965E7}
+ {A60D658D-766C-40DB-BAFF-59AB884D86FB} = {11041D08-354A-4300-9624-41277E67DE34}
+ {1EBC7A53-4677-4C3A-8DFF-269001F17D85} = {11041D08-354A-4300-9624-41277E67DE34}
+ {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85} = {11041D08-354A-4300-9624-41277E67DE34}
+ {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85} = {11041D08-354A-4300-9624-41277E67DE34}
+ {1EBC7A53-33FF-7890-7890-49D301F17D85} = {11041D08-354A-4300-9624-41277E67DE34}
+ {1EBC7A53-4677-1234-DDDD-49DFF4417D85} = {11041D08-354A-4300-9624-41277E67DE34}
+ {B4823266-DF8C-4EFB-91C0-C7E78C234EAC} = {11041D08-354A-4300-9624-41277E67DE34}
+ {1EBC7A53-4677-4C3A-8DFF-49D301F17D85} = {11041D08-354A-4300-9624-41277E67DE34}
+ {A60D658D-766C-40DB-BAE4-59AB884D86FB} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-75D7-8D4A-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-4C3A-8D4A-49D301157985} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-5555-2222-49D301157985} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-AAAA-1234-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {B4823266-DF8C-4EFB-91C0-C7688C234EAC} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-FFFF-1234-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {389DF3C9-A628-4F6D-8C52-8924FA01DE66} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/iup/mak.vc8/iup_pplot.vcproj b/iup/mak.vc8/iup_pplot.vcproj
new file mode 100755
index 0000000..0a4e7a2
--- /dev/null
+++ b/iup/mak.vc8/iup_pplot.vcproj
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iup_pplot"
+ ProjectGUID="{5A42018B-95AC-A789-E4E4-59A692649DCA}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src;..\srcpplot;..\..\cd\include"
+ PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE;_IUP_PPLOT_;CD_NO_OLD_INTERFACE;_DEBUG;IUP_ASSERT"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\srcpplot\iupPPlot.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcpplot\iuppplot.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcpplot\iupPPlotInteraction.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="include"
+ >
+ <File
+ RelativePath="..\include\iup_pplot.h"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\srcpplot\iup_pplot.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcpplot\iup_pplot.def"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\srcpplot\iupPPlot.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcpplot\iupPPlotInteraction.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupcd.vcproj b/iup/mak.vc8/iupcd.vcproj
new file mode 100755
index 0000000..8b4fcf2
--- /dev/null
+++ b/iup/mak.vc8/iupcd.vcproj
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupcd"
+ ProjectGUID="{BE7472E1-E76E-4969-A35F-054614F5884E}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\..\cd\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_WINDOWS,CD_NO_OLD_INTERFACE,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ PrecompiledHeaderFile="..\obj\iup/iupcd.pch"
+ AssemblerListingLocation=""
+ ObjectFile="$(IntDir)\"
+ ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srccd\iup_cd.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccd\iupcd.def"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupcontrols.vcproj b/iup/mak.vc8/iupcontrols.vcproj
new file mode 100755
index 0000000..a780f89
--- /dev/null
+++ b/iup/mak.vc8/iupcontrols.vcproj
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupcontrols"
+ ProjectGUID="{5EEFE977-C56D-462F-BDEE-12A5452EB8CC}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src;..\srccontrols;..\..\cd\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;CD_NO_OLD_INTERFACE;_CRT_SECURE_NO_DEPRECATE;IUP_ASSERT"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="include"
+ >
+ <File
+ RelativePath="..\include\iupcb.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupcells.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupcolorbar.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupcontrols.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupdial.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupgauge.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupmask.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupmatrix.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iuptabs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iuptree.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupval.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\srccontrols\iup_cdutil.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_controls.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="colorbrowser"
+ >
+ <File
+ RelativePath="..\srccontrols\color\iup_colorbrowser.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\color\iup_colorbrowserdlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\color\iup_colorhsi.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\color\iup_colorhsi.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="matrix"
+ >
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_aux.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_colres.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_draw.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_edit.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_focus.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_getset.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_key.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_mark.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_mem.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_mouse.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_numlc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_scroll.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmatrix.c"
+ >
+ </File>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_aux.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_cd.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_colres.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_def.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_draw.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_edit.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_focus.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_getset.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_key.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_mark.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_mem.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_mouse.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_numlc.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_scroll.h"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <File
+ RelativePath="..\srccontrols\iup_cdutil.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_cells.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_colorbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_controls.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_dial.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_gauge.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_oldmask.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_oldtabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_oldval.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iupcontrols.def"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupcore.vcproj b/iup/mak.vc8/iupcore.vcproj
new file mode 100755
index 0000000..4b5b4a3
--- /dev/null
+++ b/iup/mak.vc8/iupcore.vcproj
@@ -0,0 +1,600 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupcore"
+ ProjectGUID="{2C7E83B9-7FE8-432A-97BA-FCF4D0728408}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\src\win;..\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;IUP_ASSERT"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)\$(ProjectName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="src"
+ >
+ <File
+ RelativePath="..\src\iup.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_array.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_assert.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_attrib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_callback.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_childtree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_class.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_classattrib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_classbase.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_dlglist.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_focus.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_font.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_func.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_globalattrib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_key.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_layout.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_ledlex.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_ledparse.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_mask.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_maskmatch.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_maskparse.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_names.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_object.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_register.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_show.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_str.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_strmessage.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_table.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\src\iup_array.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_assert.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_attrib.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_childtree.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_class.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_classbase.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_dlglist.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_drv.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_drvfont.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_drvinfo.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_focus.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_func.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_globalattrib.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_key.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_layout.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_ledlex.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_mask.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_maskmatch.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_maskparse.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_names.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_object.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_predial.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_register.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_str.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_strmessage.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_table.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="include"
+ Filter="h;hpp;hxx;hm;inl;inc"
+ >
+ <File
+ RelativePath="..\include\iup.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupcbs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupkey.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupspin.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="windows"
+ >
+ <File
+ RelativePath="..\src\win\iupwindows_help.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_WIN32_WINNT=0x0500;_WIN32_IE=0x0500"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win\iupwindows_info.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_WIN32_WINNT=0x0500;_WIN32_IE=0x0500"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win\iupwindows_main.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_WIN32_WINNT=0x0500;_WIN32_IE=0x0500"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="src_controls"
+ >
+ <File
+ RelativePath="..\src\iup_box.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_cbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_colordlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_filedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_fill.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_fontdlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_getparam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_hbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_image.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_messagedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_normalizer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_predial.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_radio.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_sbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_scanf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_user.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_val.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_vbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_zbox.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="inc_controls"
+ >
+ <File
+ RelativePath="..\src\iup_box.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_button.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_canvas.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_dialog.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_frame.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_image.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_label.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_list.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_menu.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_progressbar.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_stdcontrols.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_tabs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_text.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_timer.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_toggle.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_tree.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_val.h"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\src\iup.def"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupgl.vcproj b/iup/mak.vc8/iupgl.vcproj
new file mode 100755
index 0000000..3cdeb89
--- /dev/null
+++ b/iup/mak.vc8/iupgl.vcproj
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupgl"
+ ProjectGUID="{E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;IUP_ASSERT"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srcgl\iup_glcanvas_win.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srcgl\iup_glcanvas_x.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="d:\lng\x11inc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\srcgl\iupgl.def"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\include\iupgl.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupgtk.vcproj b/iup/mak.vc8/iupgtk.vcproj
new file mode 100755
index 0000000..5d0a8e2
--- /dev/null
+++ b/iup/mak.vc8/iupgtk.vcproj
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupgtk"
+ ProjectGUID="{2C7E83B9-7FE8-5555-97BA-FCF4D0728408}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\src\gtk;..\include;&quot;d:\lng\gtk\include\atk-1.0&quot;;d:\lng\gtk\include\cairo;&quot;d:\lng\gtk\include\glib-2.0&quot;;&quot;d:\lng\gtk\include\gtk-2.0&quot;;&quot;d:\lng\gtk\include\pango-1.0&quot;;&quot;d:\lng\gtk\lib\gtk-2.0\include&quot;;&quot;d:\lng\gtk\lib\glib-2.0\include&quot;"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_WIN32_WINNT=0x0500;_WIN32_IE=0x0500;IUP_ASSERT;_CRT_SECURE_NO_DEPRECATE;GTK_DISABLE_DEPRECATED"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ AdditionalDependencies="iupcore.lib"
+ AdditionalLibraryDirectories="$(OutDir)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="src"
+ >
+ <File
+ RelativePath="..\src\gtk\iupgtk_common.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_focus.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_font.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_globalattrib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_key.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_loop.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_tips.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\src\gtk\iupgtk_drv.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="src_controls"
+ >
+ <File
+ RelativePath="..\src\gtk\iupgtk_button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_colordlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_filedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_fontdlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_image.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_messagedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_val.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupim.vcproj b/iup/mak.vc8/iupim.vcproj
new file mode 100755
index 0000000..62a26b2
--- /dev/null
+++ b/iup/mak.vc8/iupim.vcproj
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupim"
+ ProjectGUID="{E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src;..\..\im\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CRT_SECURE_NO_DEPRECATE;IUP_ASSERT"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srcim\iup_im.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupim.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupimglib.vcproj b/iup/mak.vc8/iupimglib.vcproj
new file mode 100755
index 0000000..17711a3
--- /dev/null
+++ b/iup/mak.vc8/iupimglib.vcproj
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupimglib"
+ ProjectGUID="{E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\srcimglib\iup_imglib_bitmaps.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iup_imglib_bitmaps8.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iup_imglib_bitmapsgtk.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iup_imglib_icons.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iup_imglib_icons8.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iup_imglib_logos.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iup_imglib_logos8.h"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\srcimglib\iup_image_library.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iupimglib.def"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iuplua3.vcproj b/iup/mak.vc8/iuplua3.vcproj
new file mode 100755
index 0000000..2e5e78f
--- /dev/null
+++ b/iup/mak.vc8/iuplua3.vcproj
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iuplua3"
+ ProjectGUID="{1EBC7A53-4677-4C3A-8DFF-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\..\lua\include;..\..\cd\include;..\srclua3"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua3\il_cbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_getcolor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_getparam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_sbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_scanf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_val.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\iuplua.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\iuplua_api.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\iuplua_widgets.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua3\constants.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\iuplua.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\iuplua_widgets.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\sbox.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\spin.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\tabs.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\tree.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\val.lua"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Includes"
+ >
+ <File
+ RelativePath="..\srclua3\il.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iuplua.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iuplua5.vcproj b/iup/mak.vc8/iuplua5.vcproj
new file mode 100755
index 0000000..0c62f76
--- /dev/null
+++ b/iup/mak.vc8/iuplua5.vcproj
@@ -0,0 +1,462 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iuplua5"
+ ProjectGUID="{1EBC7A53-4677-4C3A-8D4A-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua5\iuplua.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ WarningLevel="4"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\srclua5\iuplua_api.c"
+ >
+ </File>
+ <Filter
+ Name="controls"
+ >
+ <File
+ RelativePath="..\srclua5\il_button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_cbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_colordlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_filedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_fill.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_fontdlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_getcolor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_getparam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_hbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_image.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_imagergb.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_imagergba.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_item.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_messagedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_multiline.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_normalizer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_radio.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_sbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_scanf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_separator.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_spinbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_submenu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_tree_aux.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_user.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_val.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_vbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_zbox.c"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua5\constants.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\ctrl_template.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\generator.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\iuplua.lua"
+ >
+ </File>
+ <Filter
+ Name="controls"
+ >
+ <File
+ RelativePath="..\srclua5\button.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\canvas.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\cbox.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\colordlg.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\dialog.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\filedlg.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\fill.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\fontdlg.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\frame.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\hbox.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\image.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\imagergb.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\imagergba.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\item.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\label.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\list.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\menu.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\messagedlg.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\multiline.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\normalizer.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\progressbar.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\radio.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\sbox.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\separator.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\spin.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\spinbox.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\submenu.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\tabs.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\text.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\timer.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\toggle.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\tree.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\user.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\val.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\vbox.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\zbox.lua"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Includes"
+ >
+ <File
+ RelativePath="..\srclua5\il.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iuplua.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\scanf.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iuplua_pplot3.vcproj b/iup/mak.vc8/iuplua_pplot3.vcproj
new file mode 100755
index 0000000..810f451
--- /dev/null
+++ b/iup/mak.vc8/iuplua_pplot3.vcproj
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iuplua_pplot3"
+ ProjectGUID="{1EBC7A53-4677-1234-DDDD-49DFF4417D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\..\lua\include;..\..\cd\include;..\srclua3"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua3\iuplua_pplot.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua3\pplot.lua"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iuplua_pplot5.vcproj b/iup/mak.vc8/iuplua_pplot5.vcproj
new file mode 100755
index 0000000..95b5d91
--- /dev/null
+++ b/iup/mak.vc8/iuplua_pplot5.vcproj
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iuplua_pplot5"
+ ProjectGUID="{1EBC7A53-4677-AAAA-1234-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include;..\..\cd\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua5\il_pplot.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\iuplua_pplot.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua5\pplot.lua"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Includes"
+ >
+ <File
+ RelativePath="..\include\iuplua_pplot.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluacd3.vcproj b/iup/mak.vc8/iupluacd3.vcproj
new file mode 100755
index 0000000..0ef35f5
--- /dev/null
+++ b/iup/mak.vc8/iupluacd3.vcproj
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupluacd3"
+ ProjectGUID="{B4823266-DF8C-4EFB-91C0-C7E78C234EAC}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\..\lua\include;..\..\cd\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_WINDOWS,CD_NO_OLD_INTERFACE,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ PrecompiledHeaderFile=""
+ AssemblerListingLocation=""
+ ObjectFile="$(IntDir)\"
+ ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua3\iuplua_cd.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluacd5.vcproj b/iup/mak.vc8/iupluacd5.vcproj
new file mode 100755
index 0000000..118f1a4
--- /dev/null
+++ b/iup/mak.vc8/iupluacd5.vcproj
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupluacd5"
+ ProjectGUID="{B4823266-DF8C-4EFB-91C0-C7688C234EAC}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\..\lua5.1\include;..\..\cd\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_WINDOWS,CD_NO_OLD_INTERFACE,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ PrecompiledHeaderFile=""
+ AssemblerListingLocation=""
+ ObjectFile="$(IntDir)\"
+ ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua5\iuplua_cd.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluacontrols3.vcproj b/iup/mak.vc8/iupluacontrols3.vcproj
new file mode 100755
index 0000000..d482502
--- /dev/null
+++ b/iup/mak.vc8/iupluacontrols3.vcproj
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupluacontrols3"
+ ProjectGUID="{1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\..\lua\include;..\..\cd\include;..\srclua3"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua3\il_cells.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_colorbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_colorbrowser.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_dial.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_gauge.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_mask.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_matrix.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\iuplua_controls.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua3\cells.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\colorbar.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\colorbrowser.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\dial.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\gauge.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\matrix.lua"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Includes"
+ >
+ <File
+ RelativePath="..\srclua3\il_controls.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluacontrols.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluacontrols5.vcproj b/iup/mak.vc8/iupluacontrols5.vcproj
new file mode 100755
index 0000000..2458549
--- /dev/null
+++ b/iup/mak.vc8/iupluacontrols5.vcproj
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupluacontrols5"
+ ProjectGUID="{1EBC7A53-4677-75D7-8D4A-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include;..\..\cd\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua5\il_cells.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_colorbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_colorbrowser.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_dial.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_gauge.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_mask.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_matrix.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_matrix_aux.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\iuplua_controls.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua5\cells.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\colorbar.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\colorbrowser.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\dial.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\gauge.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\matrix.lua"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Includes"
+ >
+ <File
+ RelativePath="..\srclua5\il_controls.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluacontrols.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\luagetparam.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\luamask.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluaexe3.vcproj b/iup/mak.vc8/iupluaexe3.vcproj
new file mode 100755
index 0000000..d63e803
--- /dev/null
+++ b/iup/mak.vc8/iupluaexe3.vcproj
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iuplua3_exe"
+ ProjectGUID="{A60D658D-766C-40DB-BAFF-59AB884D86FB}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src;..\..\lua\include;..\..\cd\include;..\..\im\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="iup.lib comctl32.lib iupcontrols.lib iup_pplot.lib iuplua_pplot3.lib iupgl.lib cd.lib freetype6.lib iupcd.lib iupluagl3.lib iupim.lib iupluaim3.lib iupluacontrols3.lib lua.lib lualib.lib iuplua3.lib opengl32.lib glu32.lib im.lib cdlua3.lib iupluacd3.lib imlua3.lib"
+ OutputFile="$(OutDir)/iuplua3.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\im\lib;..\..\cd\lib;..\lib;..\..\lua\lib\vc9"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srcconsole\console3.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srcconsole\iup_lua3.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srcconsole\iuplua3.rc"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluaexe5.vcproj b/iup/mak.vc8/iupluaexe5.vcproj
new file mode 100755
index 0000000..854191e
--- /dev/null
+++ b/iup/mak.vc8/iupluaexe5.vcproj
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iuplua5_exe"
+ ProjectGUID="{A60D658D-766C-40DB-BAE4-59AB884D86FB}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\iupluaexe5.tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\srclua5;..\..\lua5.1\include;..\..\cd\include;..\..\im\include;..\..\luagl\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;IUPLUA_IMGLIB;USE_STATIC"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="iup.lib comctl32.lib iupcontrols.lib iupimglib.lib iup_pplot.lib iupgl.lib cd.lib iupcd.lib freetype6.lib cdcontextplus.lib lua5.1.lib iuplua51.lib iupluaim51.lib iupluaimglib51.lib iupluagl51.lib iupluacontrols51.lib iuplua_pplot51.lib iupim.lib opengl32.lib glu32.lib gdiplus.lib im.lib cdlua51.lib iupluacd51.lib imlua51.lib imlua_process51.lib cdluaim51.lib im_process.lib"
+ OutputFile="$(OutDir)/iuplua51.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\im\lib;..\..\cd\lib;..\lib;..\..\lua5.1\lib\vc9;..\..\luagl\lib\static"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srcconsole\console5.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srcconsole\iup_lua51.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srcconsole\iuplua5.rc"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluaexe5gtk.vcproj b/iup/mak.vc8/iupluaexe5gtk.vcproj
new file mode 100755
index 0000000..4d729fa
--- /dev/null
+++ b/iup/mak.vc8/iupluaexe5gtk.vcproj
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iuplua5gtk_exe"
+ ProjectGUID="{389DF3C9-A628-4F6D-8C52-8924FA01DE66}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\iupluaexe5.tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\srclua5;..\..\lua5.1\include;..\..\cd\include;..\..\im\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;IUPLUA_IMGLIB;USE_STATIC"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="iupgtk.lib comctl32.lib gtk-win32-2.0.lib gdk-win32-2.0.lib gdk_pixbuf-2.0.lib pango-1.0.lib pangowin32-1.0.lib gobject-2.0.lib gmodule-2.0.lib glib-2.0.lib iupcontrols.lib iupimglib.lib iup_pplot.lib iupgl.lib cd.lib iupcd.lib freetype6.lib cdcontextplus.lib lua5.1.lib iuplua51.lib iupluaim51.lib iupluaimglib51.lib iupluagl51.lib iupluacontrols51.lib iuplua_pplot51.lib iupim.lib opengl32.lib glu32.lib gdiplus.lib im.lib cdlua51.lib iupluacd51.lib imlua51.lib imlua_process51.lib cdluaim51.lib im_process.lib"
+ OutputFile="$(OutDir)/iuplua51gtk.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\im\lib;d:\lng\gtk\lib;..\..\cd\lib;..\lib;..\..\lua5.1\lib\vc9"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srcconsole\console5.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srcconsole\iup_lua51.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluagl3.vcproj b/iup/mak.vc8/iupluagl3.vcproj
new file mode 100755
index 0000000..ccf7465
--- /dev/null
+++ b/iup/mak.vc8/iupluagl3.vcproj
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupluagl3"
+ ProjectGUID="{1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\..\lua\include;..\..\cd\include;..\srclua3"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua3\iuplua_glcanvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluagl.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluagl5.vcproj b/iup/mak.vc8/iupluagl5.vcproj
new file mode 100755
index 0000000..12822d6
--- /dev/null
+++ b/iup/mak.vc8/iupluagl5.vcproj
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupluagl5"
+ ProjectGUID="{1EBC7A53-4677-4C3A-8D4A-49D301157985}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua5\il_glcanvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\iuplua_glcanvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluagl.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua5\glcanvas.lua"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluaim3.vcproj b/iup/mak.vc8/iupluaim3.vcproj
new file mode 100755
index 0000000..f928818
--- /dev/null
+++ b/iup/mak.vc8/iupluaim3.vcproj
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupluaim3"
+ ProjectGUID="{1EBC7A53-4677-4C3A-8DFF-269001F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\..\lua\include;..\..\cd\include;..\srclua3"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua3\iuplua_im.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluaim.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluaim5.vcproj b/iup/mak.vc8/iupluaim5.vcproj
new file mode 100755
index 0000000..e596071
--- /dev/null
+++ b/iup/mak.vc8/iupluaim5.vcproj
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupluaim5"
+ ProjectGUID="{1EBC7A53-4677-ADF1-8D4A-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua5\iuplua_im.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluaim.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluaimglib5.vcproj b/iup/mak.vc8/iupluaimglib5.vcproj
new file mode 100755
index 0000000..1a09336
--- /dev/null
+++ b/iup/mak.vc8/iupluaimglib5.vcproj
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupluaimglib5"
+ ProjectGUID="{1EBC7A53-4677-FFFF-1234-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua5\iuplua_imglib.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluaole3.vcproj b/iup/mak.vc8/iupluaole3.vcproj
new file mode 100755
index 0000000..f37e980
--- /dev/null
+++ b/iup/mak.vc8/iupluaole3.vcproj
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupluaole3"
+ ProjectGUID="{1EBC7A53-33FF-7890-7890-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\..\lua\include;..\..\cd\include;..\srclua3"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua3\iuplua_olecontrol.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluaole.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupluaole5.vcproj b/iup/mak.vc8/iupluaole5.vcproj
new file mode 100755
index 0000000..c8abb2f
--- /dev/null
+++ b/iup/mak.vc8/iupluaole5.vcproj
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupluaole5"
+ ProjectGUID="{1EBC7A53-4677-5555-2222-49D301157985}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua5\il_olecontrol.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluaole.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua5\olecontrol.lua"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupmot.vcproj b/iup/mak.vc8/iupmot.vcproj
new file mode 100755
index 0000000..aedd67e
--- /dev/null
+++ b/iup/mak.vc8/iupmot.vcproj
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupmot"
+ ProjectGUID="{2C7E83B9-1234-432A-97BA-FCF4D0728408}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\src\mot;..\include;d:\lng\x11inc;D:\_goodies\iup\_libs\openmotif2.1.30\lib"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_WIN32_WINNT=0x0500;_WIN32_IE=0x0500;IUP_ASSERT;_CRT_SECURE_NO_DEPRECATE"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="unix"
+ >
+ <File
+ RelativePath="..\src\mot\iupunix_help.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupunix_info.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="src"
+ >
+ <File
+ RelativePath="..\src\mot\iupmot_color.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_common.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_focus.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_font.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_globalattrib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_key.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_loop.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_tips.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\src\mot\iupmot_color.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_drv.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="src_controls"
+ >
+ <File
+ RelativePath="..\src\mot\iupmot_button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_colordlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_filedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_fontdlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_image.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_messagedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_val.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupole.vcproj b/iup/mak.vc8/iupole.vcproj
new file mode 100755
index 0000000..f6afc87
--- /dev/null
+++ b/iup/mak.vc8/iupole.vcproj
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupole"
+ ProjectGUID="{0C80BBEE-1B00-4567-1234-067292C84EDB}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="inc"
+ Filter="h;hpp;hxx;hm;inl;inc"
+ >
+ <File
+ RelativePath="..\srcole\tAmbientProperties.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tDispatch.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tLegacy.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleClientSite.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleControlSite.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleHandler.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleInPlaceFrame.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleInPlaceSite.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="src"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+ >
+ <File
+ RelativePath="..\srcole\iup_olecontrol.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tAmbientProperties.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tDispatch.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tLegacy.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleClientSite.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleControlSite.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleHandler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleInPlaceFrame.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleInPlaceSite.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="include"
+ >
+ <File
+ RelativePath="..\include\iupole.h"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\srcole\iupole.def"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupsample.vcproj b/iup/mak.vc8/iupsample.vcproj
new file mode 100755
index 0000000..bddc4f6
--- /dev/null
+++ b/iup/mak.vc8/iupsample.vcproj
@@ -0,0 +1,1172 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupsample"
+ ProjectGUID="{9462FDEA-3E53-4250-8710-DD50AF48607C}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\$(ProjectName).tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\..\cd\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WIN32_WINNT=0x0500;_WIN32_IE=0x0500;_CRT_SECURE_NO_DEPRECATE;__IUPDEF_H"
+ ExceptionHandling="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="comctl32.lib ole32.lib opengl32.lib glu32.lib iup.lib iupgl.lib iupcontrols.lib iupimglib.lib cd.lib freetype6.lib iupcd.lib iup_pplot.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\lib;..\..\cd\lib;d:\lng\SpeechSDK\Lib\i386"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="C"
+ >
+ <File
+ RelativePath="..\html\examples\C\alarm.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\button.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\canvas1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\canvas2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\canvas3.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\cbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\cells_checkboard.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\cells_degrade.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\iup\html\examples\C\cells_numbering.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\colorbar.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\colorbrowser.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\dialog1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\dialog2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\filedlg.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\fill.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\frame.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\gauge.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getattribute.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getcolor.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getfile.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getparam.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\glcanvas.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\hbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\idle.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\image.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\item.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\label.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\list1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\list2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\listdialog.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\lua_init.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\mask.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\matrix.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\mdi.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\menu.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\message.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\multiline1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\multiline2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\ole_browser.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\pplot.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\progressbar.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\radio.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\sample.c"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\C\sbox1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\sbox2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\scanf.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\scrollbar.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\separator.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\submenu.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\tabs.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\text.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\timer.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\toggle.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\tree.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\val.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\vbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\zbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\html\examples\Lua\alarm.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\button.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\canvas.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\colorbrowser.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\console.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\dial.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\dialog.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\filedlg.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\fill.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\fonts.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\frame.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\gauge.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\getcolor.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\getfile.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\getparam.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\glcanvas.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\hbox.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\idle.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\image.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\imagelib.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\item.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\label.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\list.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\listdialog.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\luagl.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\mask.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\mask_matrix.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\matrix.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\matrix_cbmode.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\menu.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\message.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\multiline.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\radio.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\sample.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\sbox.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\scanf.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\separator.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\submenu.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\tabs.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\text.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\timer.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\toggle.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\tray.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\tree1.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\tree2.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\tree3.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\val.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\vbox.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\zbox.wlua"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="LED"
+ >
+ <File
+ RelativePath="..\html\examples\LED\button.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\canvas.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\colorbrowser.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\dial.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\dialog.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\filedlg.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\fill.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\frame.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\gauge.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\hbox.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\image.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\label.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\list.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\matrix.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\menu.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\radio.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\sample.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\submenu.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\tabs.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\text.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\toggle.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\val.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\vbox.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\zbox.led"
+ >
+ </File>
+ <Filter
+ Name="src"
+ >
+ <File
+ RelativePath="..\html\examples\LED\dial.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\filedlg.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\gauge.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\matrix.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\tabs.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\toggle.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Filter>
+ <File
+ RelativePath="..\test\iuptest.rc"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupsamplegtk.vcproj b/iup/mak.vc8/iupsamplegtk.vcproj
new file mode 100755
index 0000000..b4792dd
--- /dev/null
+++ b/iup/mak.vc8/iupsamplegtk.vcproj
@@ -0,0 +1,791 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupsamplegtk"
+ ProjectGUID="{C684B76D-52EC-49CE-84F2-B031509419A5}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\$(ProjectName).tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;&quot;d:\lng\gtk\include\atk-1.0&quot;;d:\lng\gtk\include\cairo;&quot;d:\lng\gtk\include\glib-2.0&quot;;&quot;d:\lng\gtk\include\gtk-2.0&quot;;&quot;d:\lng\gtk\include\pango-1.0&quot;;&quot;d:\lng\gtk\lib\gtk-2.0\include&quot;;&quot;d:\lng\gtk\lib\glib-2.0\include&quot;;..\..\cd\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WIN32_WINNT=0x0400;_CRT_SECURE_NO_DEPRECATE;USE_GTK"
+ ExceptionHandling="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="comctl32.lib ole32.lib opengl32.lib glu32.lib gtk-win32-2.0.lib gdk-win32-2.0.lib gdk_pixbuf-2.0.lib pango-1.0.lib pangowin32-1.0.lib gobject-2.0.lib gmodule-2.0.lib glib-2.0.lib iupgtk.lib iupgl.lib iupcontrols.lib iupimglib.lib iup_pplot.lib cd.lib freetype6.lib iupcd.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\lib;d:\lng\gtk\lib;..\..\cd\lib"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="C"
+ >
+ <File
+ RelativePath="..\html\examples\C\alarm.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\button.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\canvas1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\canvas2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\canvas3.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\cbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\cells_checkboard.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\cells_degrade.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\iup\html\examples\C\cells_numbering.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\colorbar.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\colorbrowser.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\dialog1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\dialog2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\filedlg.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\fill.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\frame.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\gauge.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getattribute.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getcolor.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getfile.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getparam.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\glcanvas.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\hbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\idle.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\image.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\item.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\label.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\list1.c"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\C\list2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\listdialog.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\lua_init.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\mask.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\matrix.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\mdi.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\menu.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\message.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\multiline1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\multiline2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\ole_browser.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\pplot.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\progressbar.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\radio.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\sample.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\sbox1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\sbox2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\scanf.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\scrollbar.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\separator.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\submenu.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\tabs.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\text.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\timer.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\toggle.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\tree.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\val.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\vbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\zbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iuptest.vcproj b/iup/mak.vc8/iuptest.vcproj
new file mode 100755
index 0000000..375d83f
--- /dev/null
+++ b/iup/mak.vc8/iuptest.vcproj
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iuptest"
+ ProjectGUID="{2F92EC58-D94C-40BF-8C82-77607C72E1E3}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\$(ProjectName).tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\..\cd\include;D:\LNG\vld\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WIN32_WINNT=0x0500;_WIN32_IE=0x0500;_CRT_SECURE_NO_DEPRECATE;__IUPDEF_H;BIG_TEST;USE_OPENGL;PPLOT_TEST"
+ ExceptionHandling="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="comctl32.lib ole32.lib opengl32.lib glu32.lib iup.lib iupgl.lib iupcontrols.lib iupimglib.lib cd.lib freetype6.lib iupcd.lib iup_pplot.lib vld.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\lib;..\..\cd\lib;d:\lng\SpeechSDK\Lib\i386;D:\LNG\vld\lib"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Resources"
+ >
+ <File
+ RelativePath="..\test\dial.led"
+ >
+ </File>
+ <File
+ RelativePath="..\test\iuptest.rc"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\test\bigtest.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas_cddbuffer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas_cdsimple.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas_scrollbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\cells_checkboard.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\cells_degrade.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\cells_numbering.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\class_conf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\colorbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\colorbrowser.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\dial.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\gauge.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\getcolor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\getparam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\glcanvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\glcanvas_cube.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\hbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\idle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\matrix.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\matrix_cbmode.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\matrix_cbs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\mdi.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\ole.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\test\pplot.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\predialogs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\sample.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\sysinfo.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\text_spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\tray.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\val.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\vbox.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iuptestgtk.vcproj b/iup/mak.vc8/iuptestgtk.vcproj
new file mode 100755
index 0000000..46d9e49
--- /dev/null
+++ b/iup/mak.vc8/iuptestgtk.vcproj
@@ -0,0 +1,295 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iuptestgtk"
+ ProjectGUID="{2F92EC58-1234-40BF-5678-77607C72E1E3}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\$(ProjectName).tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;&quot;d:\lng\gtk\include\atk-1.0&quot;;d:\lng\gtk\include\cairo;&quot;d:\lng\gtk\include\glib-2.0&quot;;&quot;d:\lng\gtk\include\gtk-2.0&quot;;&quot;d:\lng\gtk\include\pango-1.0&quot;;&quot;d:\lng\gtk\lib\gtk-2.0\include&quot;;&quot;d:\lng\gtk\lib\glib-2.0\include&quot;;..\..\cd\include;D:\LNG\vld\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WIN32_WINNT=0x0400;_CRT_SECURE_NO_DEPRECATE;BIG_TEST;USE_OPENGL;PPLOT_TEST"
+ ExceptionHandling="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="comctl32.lib ole32.lib opengl32.lib glu32.lib gtk-win32-2.0.lib gdk-win32-2.0.lib gdk_pixbuf-2.0.lib pango-1.0.lib pangowin32-1.0.lib gobject-2.0.lib gmodule-2.0.lib glib-2.0.lib iupgtk.lib iupgl.lib iupcontrols.lib iupimglib.lib iup_pplot.lib cd.lib freetype6.lib iupcd.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\lib;d:\lng\gtk\lib;..\..\cd\lib;D:\LNG\vld\lib"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Resources"
+ >
+ <File
+ RelativePath="..\test\dial.led"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\test\bigtest.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas_cddbuffer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas_cdsimple.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas_scrollbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\cells_checkboard.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\cells_degrade.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\cells_numbering.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\class_conf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\colorbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\colorbrowser.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\dial.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\gauge.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\getcolor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\getparam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\glcanvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\glcanvas_cube.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\hbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\idle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\matrix.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\matrix_cbmode.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\matrix_cbs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\mdi.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\pplot.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\predialogs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\sample.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\sysinfo.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\text_spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\tray.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\val.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\vbox.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupview.vcproj b/iup/mak.vc8/iupview.vcproj
new file mode 100755
index 0000000..9a61127
--- /dev/null
+++ b/iup/mak.vc8/iupview.vcproj
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupview"
+ ProjectGUID="{2F92EC58-D94C-40BF-4444-77607C72E1E3}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\debug/iupview.tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src"
+ PreprocessorDefinitions="WIN32,_DEBUG,USE_IM,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="comctl32.lib ole32.lib iup.lib iupcontrols.lib cd.lib freetype6.lib iupcd.lib iupgl.lib opengl32.lib glu32.lib iupimglib.lib im.lib iupim.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\im\lib;..\..\cd\lib;..\lib"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="..\bin\iupview.pdb"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\etc\iup.rc"
+ >
+ </File>
+ <File
+ RelativePath="..\srcview\iup_view.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupviewgtk.vcproj b/iup/mak.vc8/iupviewgtk.vcproj
new file mode 100755
index 0000000..9276b02
--- /dev/null
+++ b/iup/mak.vc8/iupviewgtk.vcproj
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupviewgtk"
+ ProjectGUID="{E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\debug/iupviewgtk.tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src"
+ PreprocessorDefinitions="WIN32,_DEBUG,USE_IM,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="comctl32.lib ole32.lib gtk-win32-2.0.lib gdk-win32-2.0.lib gdk_pixbuf-2.0.lib pango-1.0.lib pangowin32-1.0.lib gobject-2.0.lib gmodule-2.0.lib glib-2.0.lib iupgtk.lib iupcontrols.lib cd.lib freetype6.lib iupcd.lib iupgl.lib opengl32.lib glu32.lib iupimglib.lib im.lib iupim.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\im\lib;d:\lng\gtk\lib;..\..\cd\lib;..\lib"
+ GenerateManifest="true"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="..\bin\iupviewgtk.pdb"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srcview\iup_view.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/iupwin.vcproj b/iup/mak.vc8/iupwin.vcproj
new file mode 100755
index 0000000..c1e2434
--- /dev/null
+++ b/iup/mak.vc8/iupwin.vcproj
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="iupwin"
+ ProjectGUID="{2C7E83B9-123A-BCDF-97BA-FCF4D0728408}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_WIN32_WINNT=0x0500;_WIN32_IE=0x0500;WINVER=0x0500;IUP_ASSERT;_CRT_SECURE_NO_DEPRECATE;NOTREEVIEW"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ AdditionalDependencies="iupcore.lib"
+ OutputFile="$(OutDir)\iup.lib"
+ AdditionalLibraryDirectories="$(OutDir)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\src\win\iupwin_brush.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_draw.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_drv.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_handle.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_info.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="src"
+ >
+ <File
+ RelativePath="..\src\win\iupwin_brush.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_common.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_draw.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_focus.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_font.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_globalattrib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_handle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_info.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_key.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_loop.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_tips.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="src_controls"
+ >
+ <File
+ RelativePath="..\src\win\iupwin_button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_colordlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_filedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_fontdlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_image.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_messagedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_val.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc8/ledc.vcproj b/iup/mak.vc8/ledc.vcproj
new file mode 100755
index 0000000..766db48
--- /dev/null
+++ b/iup/mak.vc8/ledc.vcproj
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="ledc"
+ ProjectGUID="{0F789DF8-22CC-4392-98DB-AC3960FAD4EA}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/ledc.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(OutDir)/ledc.pdb"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\etc\iup.rc"
+ >
+ </File>
+ <File
+ RelativePath="..\srcledc\ledc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srcledc\lex.yy.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srcledc\y.tab.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iup.sln b/iup/mak.vc9/iup.sln
new file mode 100755
index 0000000..898c75f
--- /dev/null
+++ b/iup/mak.vc9/iup.sln
@@ -0,0 +1,347 @@
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupcore", "iupcore.vcproj", "{2C7E83B9-7FE8-432A-97BA-FCF4D0728408}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupgtk", "iupgtk.vcproj", "{2C7E83B9-7FE8-5555-97BA-FCF4D0728408}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupmot", "iupmot.vcproj", "{2C7E83B9-1234-432A-97BA-FCF4D0728408}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuptest", "iuptest.vcproj", "{2F92EC58-D94C-40BF-8C82-77607C72E1E3}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA}
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuptestgtk", "iuptestgtk.vcproj", "{2F92EC58-1234-40BF-5678-77607C72E1E3}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}
+ {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupwin", "iupwin.vcproj", "{2C7E83B9-123A-BCDF-97BA-FCF4D0728408}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupgl", "iupgl.vcproj", "{E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupcontrols", "iupcontrols.vcproj", "{5EEFE977-C56D-462F-BDEE-12A5452EB8CC}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iup_pplot", "iup_pplot.vcproj", "{5A42018B-95AC-A789-E4E4-59A692649DCA}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupole", "iupole.vcproj", "{0C80BBEE-1B00-4567-1234-067292C84EDB}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupimglib", "iupimglib.vcproj", "{E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupcd", "iupcd.vcproj", "{BE7472E1-E76E-4969-A35F-054614F5884E}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupim", "iupim.vcproj", "{E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua3", "iuplua3.vcproj", "{1EBC7A53-4677-4C3A-8DFF-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua3_exe", "iupluaexe3.vcproj", "{A60D658D-766C-40DB-BAFF-59AB884D86FB}"
+ ProjectSection(ProjectDependencies) = postProject
+ {1EBC7A53-4677-4C3A-8DFF-269001F17D85} = {1EBC7A53-4677-4C3A-8DFF-269001F17D85}
+ {1EBC7A53-4677-4C3A-8DFF-49D301F17D85} = {1EBC7A53-4677-4C3A-8DFF-49D301F17D85}
+ {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85} = {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}
+ {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85} = {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua5", "iuplua5.vcproj", "{1EBC7A53-4677-4C3A-8D4A-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua5_exe", "iupluaexe5.vcproj", "{A60D658D-766C-40DB-BAE4-59AB884D86FB}"
+ ProjectSection(ProjectDependencies) = postProject
+ {1EBC7A53-4677-4C3A-8D4A-49D301157985} = {1EBC7A53-4677-4C3A-8D4A-49D301157985}
+ {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} = {1EBC7A53-4677-4C3A-8D4A-49D301F17D85}
+ {1EBC7A53-4677-AAAA-1234-49D301F17D85} = {1EBC7A53-4677-AAAA-1234-49D301F17D85}
+ {1EBC7A53-4677-75D7-8D4A-49D301F17D85} = {1EBC7A53-4677-75D7-8D4A-49D301F17D85}
+ {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} = {1EBC7A53-4677-ADF1-8D4A-49D301F17D85}
+ {B4823266-DF8C-4EFB-91C0-C7688C234EAC} = {B4823266-DF8C-4EFB-91C0-C7688C234EAC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA}
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ledc", "ledc.vcproj", "{0F789DF8-22CC-4392-98DB-AC3960FAD4EA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupview", "iupview.vcproj", "{2F92EC58-D94C-40BF-4444-77607C72E1E3}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaim5", "iupluaim5.vcproj", "{1EBC7A53-4677-ADF1-8D4A-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaim3", "iupluaim3.vcproj", "{1EBC7A53-4677-4C3A-8DFF-269001F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacontrols5", "iupluacontrols5.vcproj", "{1EBC7A53-4677-75D7-8D4A-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacontrols3", "iupluacontrols3.vcproj", "{1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluagl5", "iupluagl5.vcproj", "{1EBC7A53-4677-4C3A-8D4A-49D301157985}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluagl3", "iupluagl3.vcproj", "{1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaole3", "iupluaole3.vcproj", "{1EBC7A53-33FF-7890-7890-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaole5", "iupluaole5.vcproj", "{1EBC7A53-4677-5555-2222-49D301157985}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua_pplot5", "iuplua_pplot5.vcproj", "{1EBC7A53-4677-AAAA-1234-49D301F17D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua_pplot3", "iuplua_pplot3.vcproj", "{1EBC7A53-4677-1234-DDDD-49DFF4417D85}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacd3", "iupluacd3.vcproj", "{B4823266-DF8C-4EFB-91C0-C7E78C234EAC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacd5", "iupluacd5.vcproj", "{B4823266-DF8C-4EFB-91C0-C7688C234EAC}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lua5", "Lua5", "{1CBEAA34-BA34-497D-A775-B9AF6F905696}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lua3", "Lua3", "{11041D08-354A-4300-9624-41277E67DE34}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaimglib5", "iupluaimglib5.vcproj", "{1EBC7A53-4677-FFFF-1234-49D301F17D85}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{FC52B7B5-744E-45D6-815C-3502F9D965E7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupsample", "iupsample.vcproj", "{9462FDEA-3E53-4250-8710-DD50AF48607C}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupsamplegtk", "iupsamplegtk.vcproj", "{C684B76D-52EC-49CE-84F2-B031509419A5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupviewgtk", "iupviewgtk.vcproj", "{E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua5gtk_exe", "iupluaexe5gtk.vcproj", "{389DF3C9-A628-4F6D-8C52-8924FA01DE66}"
+ ProjectSection(ProjectDependencies) = postProject
+ {1EBC7A53-4677-4C3A-8D4A-49D301157985} = {1EBC7A53-4677-4C3A-8D4A-49D301157985}
+ {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} = {1EBC7A53-4677-4C3A-8D4A-49D301F17D85}
+ {1EBC7A53-4677-AAAA-1234-49D301F17D85} = {1EBC7A53-4677-AAAA-1234-49D301F17D85}
+ {1EBC7A53-4677-75D7-8D4A-49D301F17D85} = {1EBC7A53-4677-75D7-8D4A-49D301F17D85}
+ {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} = {1EBC7A53-4677-ADF1-8D4A-49D301F17D85}
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}
+ {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}
+ {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E}
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}.Debug|Win32.Build.0 = Debug|Win32
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}.Debug|Win32.Build.0 = Debug|Win32
+ {2C7E83B9-1234-432A-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2F92EC58-D94C-40BF-8C82-77607C72E1E3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2F92EC58-D94C-40BF-8C82-77607C72E1E3}.Debug|Win32.Build.0 = Debug|Win32
+ {2F92EC58-1234-40BF-5678-77607C72E1E3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2F92EC58-1234-40BF-5678-77607C72E1E3}.Debug|Win32.Build.0 = Debug|Win32
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}.Debug|Win32.Build.0 = Debug|Win32
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}.Debug|Win32.Build.0 = Debug|Win32
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}.Debug|Win32.Build.0 = Debug|Win32
+ {5A42018B-95AC-A789-E4E4-59A692649DCA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5A42018B-95AC-A789-E4E4-59A692649DCA}.Debug|Win32.Build.0 = Debug|Win32
+ {0C80BBEE-1B00-4567-1234-067292C84EDB}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0C80BBEE-1B00-4567-1234-067292C84EDB}.Debug|Win32.Build.0 = Debug|Win32
+ {E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}.Debug|Win32.Build.0 = Debug|Win32
+ {BE7472E1-E76E-4969-A35F-054614F5884E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BE7472E1-E76E-4969-A35F-054614F5884E}.Debug|Win32.Build.0 = Debug|Win32
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-4C3A-8DFF-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-4C3A-8DFF-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {A60D658D-766C-40DB-BAFF-59AB884D86FB}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A60D658D-766C-40DB-BAFF-59AB884D86FB}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-4C3A-8D4A-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-4C3A-8D4A-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {A60D658D-766C-40DB-BAE4-59AB884D86FB}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A60D658D-766C-40DB-BAE4-59AB884D86FB}.Debug|Win32.Build.0 = Debug|Win32
+ {0F789DF8-22CC-4392-98DB-AC3960FAD4EA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0F789DF8-22CC-4392-98DB-AC3960FAD4EA}.Debug|Win32.Build.0 = Debug|Win32
+ {2F92EC58-D94C-40BF-4444-77607C72E1E3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2F92EC58-D94C-40BF-4444-77607C72E1E3}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-ADF1-8D4A-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-ADF1-8D4A-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-4C3A-8DFF-269001F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-4C3A-8DFF-269001F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-75D7-8D4A-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-75D7-8D4A-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-4C3A-8D4A-49D301157985}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-4C3A-8D4A-49D301157985}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-33FF-7890-7890-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-33FF-7890-7890-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-5555-2222-49D301157985}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-5555-2222-49D301157985}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-AAAA-1234-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-AAAA-1234-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-1234-DDDD-49DFF4417D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-1234-DDDD-49DFF4417D85}.Debug|Win32.Build.0 = Debug|Win32
+ {B4823266-DF8C-4EFB-91C0-C7E78C234EAC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B4823266-DF8C-4EFB-91C0-C7E78C234EAC}.Debug|Win32.Build.0 = Debug|Win32
+ {B4823266-DF8C-4EFB-91C0-C7688C234EAC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B4823266-DF8C-4EFB-91C0-C7688C234EAC}.Debug|Win32.Build.0 = Debug|Win32
+ {1EBC7A53-4677-FFFF-1234-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EBC7A53-4677-FFFF-1234-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32
+ {9462FDEA-3E53-4250-8710-DD50AF48607C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9462FDEA-3E53-4250-8710-DD50AF48607C}.Debug|Win32.Build.0 = Debug|Win32
+ {C684B76D-52EC-49CE-84F2-B031509419A5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C684B76D-52EC-49CE-84F2-B031509419A5}.Debug|Win32.Build.0 = Debug|Win32
+ {E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}.Debug|Win32.Build.0 = Debug|Win32
+ {389DF3C9-A628-4F6D-8C52-8924FA01DE66}.Debug|Win32.ActiveCfg = Debug|Win32
+ {389DF3C9-A628-4F6D-8C52-8924FA01DE66}.Debug|Win32.Build.0 = Debug|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD}
+ {2C7E83B9-1234-432A-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD}
+ {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD}
+ {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD}
+ {2F92EC58-1234-40BF-5678-77607C72E1E3} = {FC52B7B5-744E-45D6-815C-3502F9D965E7}
+ {2F92EC58-D94C-40BF-8C82-77607C72E1E3} = {FC52B7B5-744E-45D6-815C-3502F9D965E7}
+ {9462FDEA-3E53-4250-8710-DD50AF48607C} = {FC52B7B5-744E-45D6-815C-3502F9D965E7}
+ {C684B76D-52EC-49CE-84F2-B031509419A5} = {FC52B7B5-744E-45D6-815C-3502F9D965E7}
+ {A60D658D-766C-40DB-BAFF-59AB884D86FB} = {11041D08-354A-4300-9624-41277E67DE34}
+ {1EBC7A53-4677-4C3A-8DFF-269001F17D85} = {11041D08-354A-4300-9624-41277E67DE34}
+ {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85} = {11041D08-354A-4300-9624-41277E67DE34}
+ {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85} = {11041D08-354A-4300-9624-41277E67DE34}
+ {1EBC7A53-33FF-7890-7890-49D301F17D85} = {11041D08-354A-4300-9624-41277E67DE34}
+ {1EBC7A53-4677-1234-DDDD-49DFF4417D85} = {11041D08-354A-4300-9624-41277E67DE34}
+ {B4823266-DF8C-4EFB-91C0-C7E78C234EAC} = {11041D08-354A-4300-9624-41277E67DE34}
+ {1EBC7A53-4677-4C3A-8DFF-49D301F17D85} = {11041D08-354A-4300-9624-41277E67DE34}
+ {A60D658D-766C-40DB-BAE4-59AB884D86FB} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-75D7-8D4A-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-4C3A-8D4A-49D301157985} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-5555-2222-49D301157985} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-AAAA-1234-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {B4823266-DF8C-4EFB-91C0-C7688C234EAC} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {1EBC7A53-4677-FFFF-1234-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ {389DF3C9-A628-4F6D-8C52-8924FA01DE66} = {1CBEAA34-BA34-497D-A775-B9AF6F905696}
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+ GlobalSection(DevPartner) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/iup/mak.vc9/iup_pplot.vcproj b/iup/mak.vc9/iup_pplot.vcproj
new file mode 100755
index 0000000..8887000
--- /dev/null
+++ b/iup/mak.vc9/iup_pplot.vcproj
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iup_pplot"
+ ProjectGUID="{5A42018B-95AC-A789-E4E4-59A692649DCA}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src;..\srcpplot;..\..\cd\include"
+ PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE;_IUP_PPLOT_;CD_NO_OLD_INTERFACE;_DEBUG;IUP_ASSERT"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\srcpplot\iupPPlot.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcpplot\iuppplot.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcpplot\iupPPlotInteraction.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="include"
+ >
+ <File
+ RelativePath="..\include\iup_pplot.h"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\srcpplot\iup_pplot.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcpplot\iup_pplot.def"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\srcpplot\iupPPlot.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcpplot\iupPPlotInteraction.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupcd.vcproj b/iup/mak.vc9/iupcd.vcproj
new file mode 100755
index 0000000..ddc990f
--- /dev/null
+++ b/iup/mak.vc9/iupcd.vcproj
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupcd"
+ ProjectGUID="{BE7472E1-E76E-4969-A35F-054614F5884E}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\..\cd\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_WINDOWS,CD_NO_OLD_INTERFACE,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ PrecompiledHeaderFile="..\obj\iup/iupcd.pch"
+ AssemblerListingLocation=""
+ ObjectFile="$(IntDir)\"
+ ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srccd\iup_cd.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccd\iupcd.def"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupcontrols.vcproj b/iup/mak.vc9/iupcontrols.vcproj
new file mode 100755
index 0000000..6a452af
--- /dev/null
+++ b/iup/mak.vc9/iupcontrols.vcproj
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupcontrols"
+ ProjectGUID="{5EEFE977-C56D-462F-BDEE-12A5452EB8CC}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src;..\srccontrols;..\..\cd\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;CD_NO_OLD_INTERFACE;_CRT_SECURE_NO_DEPRECATE;IUP_ASSERT"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="include"
+ >
+ <File
+ RelativePath="..\include\iupcb.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupcells.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupcolorbar.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupcontrols.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupdial.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupgauge.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupmask.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupmatrix.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iuptabs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iuptree.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupval.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\srccontrols\iup_cdutil.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_controls.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="colorbrowser"
+ >
+ <File
+ RelativePath="..\srccontrols\color\iup_colorbrowser.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\color\iup_colorbrowserdlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\color\iup_colorhsi.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\color\iup_colorhsi.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="matrix"
+ >
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_aux.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_colres.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_draw.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_edit.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_focus.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_getset.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_key.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_mark.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_mem.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_mouse.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_numlc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_scroll.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmatrix.c"
+ >
+ </File>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_aux.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_cd.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_colres.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_def.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_draw.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_edit.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_focus.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_getset.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_key.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_mark.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_mem.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_mouse.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_numlc.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\matrix\iupmat_scroll.h"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <File
+ RelativePath="..\srccontrols\iup_cdutil.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_cells.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_colorbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_controls.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_dial.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_gauge.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_oldmask.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_oldtabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iup_oldval.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srccontrols\iupcontrols.def"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupcore.vcproj b/iup/mak.vc9/iupcore.vcproj
new file mode 100755
index 0000000..fbe0017
--- /dev/null
+++ b/iup/mak.vc9/iupcore.vcproj
@@ -0,0 +1,600 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupcore"
+ ProjectGUID="{2C7E83B9-7FE8-432A-97BA-FCF4D0728408}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\src\win;..\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;IUP_ASSERT"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)\$(ProjectName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="src"
+ >
+ <File
+ RelativePath="..\src\iup.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_array.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_assert.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_attrib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_callback.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_childtree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_class.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_classattrib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_classbase.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_dlglist.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_focus.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_font.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_func.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_globalattrib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_key.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_layout.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_ledlex.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_ledparse.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_mask.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_maskmatch.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_maskparse.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_names.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_object.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_register.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_show.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_str.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_strmessage.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_table.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\src\iup_array.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_assert.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_attrib.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_childtree.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_class.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_classbase.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_dlglist.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_drv.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_drvfont.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_drvinfo.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_focus.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_func.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_globalattrib.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_key.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_layout.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_ledlex.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_mask.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_maskmatch.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_maskparse.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_names.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_object.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_predial.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_register.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_str.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_strmessage.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_table.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="include"
+ Filter="h;hpp;hxx;hm;inl;inc"
+ >
+ <File
+ RelativePath="..\include\iup.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupcbs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupkey.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupspin.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="windows"
+ >
+ <File
+ RelativePath="..\src\win\iupwindows_help.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_WIN32_WINNT=0x0500;_WIN32_IE=0x0500"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win\iupwindows_info.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_WIN32_WINNT=0x0500;_WIN32_IE=0x0500"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win\iupwindows_main.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_WIN32_WINNT=0x0500;_WIN32_IE=0x0500"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="src_controls"
+ >
+ <File
+ RelativePath="..\src\iup_box.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_cbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_colordlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_filedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_fill.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_fontdlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_getparam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_hbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_image.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_messagedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_normalizer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_predial.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_radio.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_sbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_scanf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_user.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_val.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_vbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_zbox.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="inc_controls"
+ >
+ <File
+ RelativePath="..\src\iup_box.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_button.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_canvas.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_dialog.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_frame.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_image.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_label.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_list.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_menu.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_progressbar.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_stdcontrols.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_tabs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_text.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_timer.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_toggle.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_tree.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\iup_val.h"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\src\iup.def"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupgl.vcproj b/iup/mak.vc9/iupgl.vcproj
new file mode 100755
index 0000000..e8d7b71
--- /dev/null
+++ b/iup/mak.vc9/iupgl.vcproj
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupgl"
+ ProjectGUID="{E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;IUP_ASSERT"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srcgl\iup_glcanvas_win.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srcgl\iup_glcanvas_x.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="d:\lng\x11inc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\srcgl\iupgl.def"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\include\iupgl.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupgtk.vcproj b/iup/mak.vc9/iupgtk.vcproj
new file mode 100755
index 0000000..17281f1
--- /dev/null
+++ b/iup/mak.vc9/iupgtk.vcproj
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupgtk"
+ ProjectGUID="{2C7E83B9-7FE8-5555-97BA-FCF4D0728408}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\src\gtk;..\include;&quot;d:\lng\gtk\include\atk-1.0&quot;;d:\lng\gtk\include\cairo;&quot;d:\lng\gtk\include\glib-2.0&quot;;&quot;d:\lng\gtk\include\gtk-2.0&quot;;&quot;d:\lng\gtk\include\pango-1.0&quot;;&quot;d:\lng\gtk\lib\gtk-2.0\include&quot;;&quot;d:\lng\gtk\lib\glib-2.0\include&quot;"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_WIN32_WINNT=0x0500;_WIN32_IE=0x0500;IUP_ASSERT;_CRT_SECURE_NO_DEPRECATE;GTK_DISABLE_DEPRECATED"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ AdditionalDependencies="iupcore.lib"
+ AdditionalLibraryDirectories="$(OutDir)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="src"
+ >
+ <File
+ RelativePath="..\src\gtk\iupgtk_common.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_focus.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_font.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_globalattrib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_key.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_loop.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_tips.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\src\gtk\iupgtk_drv.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="src_controls"
+ >
+ <File
+ RelativePath="..\src\gtk\iupgtk_button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_clipboard.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_colordlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_filedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_fontdlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_image.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_messagedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\gtk\iupgtk_val.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupim.vcproj b/iup/mak.vc9/iupim.vcproj
new file mode 100755
index 0000000..103a318
--- /dev/null
+++ b/iup/mak.vc9/iupim.vcproj
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupim"
+ ProjectGUID="{E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src;..\..\im\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CRT_SECURE_NO_DEPRECATE;IUP_ASSERT"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srcim\iup_im.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupim.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupimglib.vcproj b/iup/mak.vc9/iupimglib.vcproj
new file mode 100755
index 0000000..0a21853
--- /dev/null
+++ b/iup/mak.vc9/iupimglib.vcproj
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupimglib"
+ ProjectGUID="{E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\srcimglib\iup_imglib_bitmaps.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iup_imglib_bitmaps8.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iup_imglib_bitmapsgtk.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iup_imglib_icons.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iup_imglib_icons8.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iup_imglib_logos.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iup_imglib_logos8.h"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\srcimglib\iup_image_library.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srcimglib\iupimglib.def"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iuplua3.vcproj b/iup/mak.vc9/iuplua3.vcproj
new file mode 100755
index 0000000..9993c1c
--- /dev/null
+++ b/iup/mak.vc9/iuplua3.vcproj
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iuplua3"
+ ProjectGUID="{1EBC7A53-4677-4C3A-8DFF-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\..\lua\include;..\..\cd\include;..\srclua3"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua3\il_cbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_getcolor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_getparam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_sbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_scanf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_val.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\iuplua.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\iuplua_api.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\iuplua_widgets.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua3\constants.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\iuplua.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\iuplua_widgets.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\sbox.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\spin.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\tabs.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\tree.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\val.lua"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Includes"
+ >
+ <File
+ RelativePath="..\srclua3\il.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iuplua.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iuplua5.vcproj b/iup/mak.vc9/iuplua5.vcproj
new file mode 100755
index 0000000..17d9a55
--- /dev/null
+++ b/iup/mak.vc9/iuplua5.vcproj
@@ -0,0 +1,470 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iuplua5"
+ ProjectGUID="{1EBC7A53-4677-4C3A-8D4A-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua5\iuplua.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ WarningLevel="4"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\srclua5\iuplua_api.c"
+ >
+ </File>
+ <Filter
+ Name="controls"
+ >
+ <File
+ RelativePath="..\srclua5\il_button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_cbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_clipboard.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_colordlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_filedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_fill.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_fontdlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_getcolor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_getparam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_hbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_image.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_imagergb.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_imagergba.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_item.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_messagedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_multiline.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_normalizer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_radio.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_sbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_scanf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_separator.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_spinbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_submenu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_tree_aux.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_user.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_val.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_vbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_zbox.c"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua5\constants.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\ctrl_template.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\generator.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\iuplua.lua"
+ >
+ </File>
+ <Filter
+ Name="controls"
+ >
+ <File
+ RelativePath="..\srclua5\button.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\canvas.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\cbox.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\clipboard.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\colordlg.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\dialog.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\filedlg.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\fill.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\fontdlg.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\frame.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\hbox.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\image.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\imagergb.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\imagergba.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\item.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\label.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\list.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\menu.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\messagedlg.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\multiline.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\normalizer.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\progressbar.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\radio.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\sbox.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\separator.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\spin.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\spinbox.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\submenu.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\tabs.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\text.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\timer.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\toggle.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\tree.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\user.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\val.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\vbox.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\zbox.lua"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Includes"
+ >
+ <File
+ RelativePath="..\srclua5\il.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iuplua.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\scanf.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iuplua_pplot3.vcproj b/iup/mak.vc9/iuplua_pplot3.vcproj
new file mode 100755
index 0000000..9965d01
--- /dev/null
+++ b/iup/mak.vc9/iuplua_pplot3.vcproj
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iuplua_pplot3"
+ ProjectGUID="{1EBC7A53-4677-1234-DDDD-49DFF4417D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\..\lua\include;..\..\cd\include;..\srclua3"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua3\iuplua_pplot.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua3\pplot.lua"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iuplua_pplot5.vcproj b/iup/mak.vc9/iuplua_pplot5.vcproj
new file mode 100755
index 0000000..0666045
--- /dev/null
+++ b/iup/mak.vc9/iuplua_pplot5.vcproj
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iuplua_pplot5"
+ ProjectGUID="{1EBC7A53-4677-AAAA-1234-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include;..\..\cd\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua5\il_pplot.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\iuplua_pplot.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua5\pplot.lua"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Includes"
+ >
+ <File
+ RelativePath="..\include\iuplua_pplot.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluacd3.vcproj b/iup/mak.vc9/iupluacd3.vcproj
new file mode 100755
index 0000000..59a0d02
--- /dev/null
+++ b/iup/mak.vc9/iupluacd3.vcproj
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupluacd3"
+ ProjectGUID="{B4823266-DF8C-4EFB-91C0-C7E78C234EAC}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\..\lua\include;..\..\cd\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_WINDOWS,CD_NO_OLD_INTERFACE,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ PrecompiledHeaderFile=""
+ AssemblerListingLocation=""
+ ObjectFile="$(IntDir)\"
+ ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua3\iuplua_cd.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluacd5.vcproj b/iup/mak.vc9/iupluacd5.vcproj
new file mode 100755
index 0000000..83aeede
--- /dev/null
+++ b/iup/mak.vc9/iupluacd5.vcproj
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupluacd5"
+ ProjectGUID="{B4823266-DF8C-4EFB-91C0-C7688C234EAC}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\..\lua5.1\include;..\..\cd\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_WINDOWS,CD_NO_OLD_INTERFACE,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ PrecompiledHeaderFile=""
+ AssemblerListingLocation=""
+ ObjectFile="$(IntDir)\"
+ ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua5\iuplua_cd.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluacontrols3.vcproj b/iup/mak.vc9/iupluacontrols3.vcproj
new file mode 100755
index 0000000..b2babd2
--- /dev/null
+++ b/iup/mak.vc9/iupluacontrols3.vcproj
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupluacontrols3"
+ ProjectGUID="{1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\..\lua\include;..\..\cd\include;..\srclua3"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua3\il_cells.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_colorbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_colorbrowser.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_dial.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_gauge.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_mask.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\il_matrix.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\iuplua_controls.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua3\cells.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\colorbar.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\colorbrowser.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\dial.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\gauge.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua3\matrix.lua"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Includes"
+ >
+ <File
+ RelativePath="..\srclua3\il_controls.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluacontrols.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluacontrols5.vcproj b/iup/mak.vc9/iupluacontrols5.vcproj
new file mode 100755
index 0000000..bc1d6fe
--- /dev/null
+++ b/iup/mak.vc9/iupluacontrols5.vcproj
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupluacontrols5"
+ ProjectGUID="{1EBC7A53-4677-75D7-8D4A-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include;..\..\cd\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua5\il_cells.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_colorbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_colorbrowser.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_dial.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_gauge.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_mask.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_matrix.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\il_matrix_aux.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\iuplua_controls.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua5\cells.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\colorbar.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\colorbrowser.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\dial.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\gauge.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\matrix.lua"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Includes"
+ >
+ <File
+ RelativePath="..\srclua5\il_controls.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluacontrols.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\luagetparam.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\luamask.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluaexe3.vcproj b/iup/mak.vc9/iupluaexe3.vcproj
new file mode 100755
index 0000000..3ed6105
--- /dev/null
+++ b/iup/mak.vc9/iupluaexe3.vcproj
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iuplua3_exe"
+ ProjectGUID="{A60D658D-766C-40DB-BAFF-59AB884D86FB}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src;..\..\lua\include;..\..\cd\include;..\..\im\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="iup.lib comctl32.lib iupcontrols.lib iup_pplot.lib iuplua_pplot3.lib iupgl.lib cd.lib freetype6.lib iupcd.lib iupluagl3.lib iupim.lib iupluaim3.lib iupluacontrols3.lib lua.lib lualib.lib iuplua3.lib opengl32.lib glu32.lib im.lib cdlua3.lib iupluacd3.lib imlua3.lib"
+ OutputFile="$(OutDir)/iuplua3.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\im\lib;..\..\cd\lib;..\lib;..\..\lua\lib\vc9"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srcconsole\console3.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srcconsole\iup_lua3.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srcconsole\iuplua3.rc"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluaexe5.vcproj b/iup/mak.vc9/iupluaexe5.vcproj
new file mode 100755
index 0000000..db6804a
--- /dev/null
+++ b/iup/mak.vc9/iupluaexe5.vcproj
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iuplua5_exe"
+ ProjectGUID="{A60D658D-766C-40DB-BAE4-59AB884D86FB}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\iupluaexe5.tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\srclua5;..\..\lua5.1\include;..\..\cd\include;..\..\im\include;..\..\luagl\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;IUPLUA_IMGLIB;USE_STATIC"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="iup.lib comctl32.lib iupcontrols.lib iupimglib.lib iup_pplot.lib iupgl.lib cd.lib iupcd.lib freetype6.lib cdcontextplus.lib lua5.1.lib iuplua51.lib iupluaim51.lib iupluaimglib51.lib iupluagl51.lib iupluacontrols51.lib iuplua_pplot51.lib iupim.lib opengl32.lib glu32.lib gdiplus.lib im.lib cdlua51.lib iupluacd51.lib imlua51.lib imlua_process51.lib cdluaim51.lib im_process.lib"
+ OutputFile="$(OutDir)/iuplua51.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\im\lib;..\..\cd\lib;..\lib;..\..\lua5.1\lib\vc9;..\..\luagl\lib\static"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srcconsole\console5.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srcconsole\iup_lua51.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srcconsole\iuplua5.rc"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluaexe5gtk.vcproj b/iup/mak.vc9/iupluaexe5gtk.vcproj
new file mode 100755
index 0000000..038790d
--- /dev/null
+++ b/iup/mak.vc9/iupluaexe5gtk.vcproj
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iuplua5gtk_exe"
+ ProjectGUID="{389DF3C9-A628-4F6D-8C52-8924FA01DE66}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\iupluaexe5.tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\srclua5;..\..\lua5.1\include;..\..\cd\include;..\..\im\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;IUPLUA_IMGLIB;USE_STATIC"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="iupgtk.lib comctl32.lib gtk-win32-2.0.lib gdk-win32-2.0.lib gdk_pixbuf-2.0.lib pango-1.0.lib pangowin32-1.0.lib gobject-2.0.lib gmodule-2.0.lib glib-2.0.lib iupcontrols.lib iupimglib.lib iup_pplot.lib iupgl.lib cd.lib iupcd.lib freetype6.lib cdcontextplus.lib lua5.1.lib iuplua51.lib iupluaim51.lib iupluaimglib51.lib iupluagl51.lib iupluacontrols51.lib iuplua_pplot51.lib iupim.lib opengl32.lib glu32.lib gdiplus.lib im.lib cdlua51.lib iupluacd51.lib imlua51.lib imlua_process51.lib cdluaim51.lib im_process.lib"
+ OutputFile="$(OutDir)/iuplua51gtk.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\im\lib;d:\lng\gtk\lib;..\..\cd\lib;..\lib;..\..\lua5.1\lib\vc9"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srcconsole\console5.lua"
+ >
+ </File>
+ <File
+ RelativePath="..\srcconsole\iup_lua51.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluagl3.vcproj b/iup/mak.vc9/iupluagl3.vcproj
new file mode 100755
index 0000000..f920704
--- /dev/null
+++ b/iup/mak.vc9/iupluagl3.vcproj
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupluagl3"
+ ProjectGUID="{1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\..\lua\include;..\..\cd\include;..\srclua3"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua3\iuplua_glcanvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluagl.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluagl5.vcproj b/iup/mak.vc9/iupluagl5.vcproj
new file mode 100755
index 0000000..d8d08e4
--- /dev/null
+++ b/iup/mak.vc9/iupluagl5.vcproj
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupluagl5"
+ ProjectGUID="{1EBC7A53-4677-4C3A-8D4A-49D301157985}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua5\il_glcanvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srclua5\iuplua_glcanvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluagl.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua5\glcanvas.lua"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluaim3.vcproj b/iup/mak.vc9/iupluaim3.vcproj
new file mode 100755
index 0000000..ee5ce8e
--- /dev/null
+++ b/iup/mak.vc9/iupluaim3.vcproj
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupluaim3"
+ ProjectGUID="{1EBC7A53-4677-4C3A-8DFF-269001F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\..\lua\include;..\..\cd\include;..\srclua3"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua3\iuplua_im.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluaim.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluaim5.vcproj b/iup/mak.vc9/iupluaim5.vcproj
new file mode 100755
index 0000000..f5c7a79
--- /dev/null
+++ b/iup/mak.vc9/iupluaim5.vcproj
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupluaim5"
+ ProjectGUID="{1EBC7A53-4677-ADF1-8D4A-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua5\iuplua_im.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluaim.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluaimglib5.vcproj b/iup/mak.vc9/iupluaimglib5.vcproj
new file mode 100755
index 0000000..8dc8a4d
--- /dev/null
+++ b/iup/mak.vc9/iupluaimglib5.vcproj
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupluaimglib5"
+ ProjectGUID="{1EBC7A53-4677-FFFF-1234-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua5\iuplua_imglib.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluaole3.vcproj b/iup/mak.vc9/iupluaole3.vcproj
new file mode 100755
index 0000000..dc60ae0
--- /dev/null
+++ b/iup/mak.vc9/iupluaole3.vcproj
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupluaole3"
+ ProjectGUID="{1EBC7A53-33FF-7890-7890-49D301F17D85}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\..\lua\include;..\..\cd\include;..\srclua3"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srclua3\iuplua_olecontrol.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluaole.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupluaole5.vcproj b/iup/mak.vc9/iupluaole5.vcproj
new file mode 100755
index 0000000..bd86330
--- /dev/null
+++ b/iup/mak.vc9/iupluaole5.vcproj
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupluaole5"
+ ProjectGUID="{1EBC7A53-4677-5555-2222-49D301157985}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include;..\srclua5;..\..\lua5.1\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,IUPLUA_USELOH,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName)1.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\srclua5\il_olecontrol.c"
+ >
+ </File>
+ <File
+ RelativePath="..\include\iupluaole.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\srclua5\olecontrol.lua"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupmot.vcproj b/iup/mak.vc9/iupmot.vcproj
new file mode 100755
index 0000000..9bbfa5c
--- /dev/null
+++ b/iup/mak.vc9/iupmot.vcproj
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupmot"
+ ProjectGUID="{2C7E83B9-1234-432A-97BA-FCF4D0728408}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\src\mot;..\include;d:\lng\x11inc;D:\_goodies\iup\_libs\openmotif2.1.30\lib"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_WIN32_WINNT=0x0500;_WIN32_IE=0x0500;IUP_ASSERT;_CRT_SECURE_NO_DEPRECATE"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="unix"
+ >
+ <File
+ RelativePath="..\src\mot\iupunix_help.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupunix_info.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="src"
+ >
+ <File
+ RelativePath="..\src\mot\iupmot_color.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_common.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_focus.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_font.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_globalattrib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_key.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_loop.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_tips.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\src\mot\iupmot_color.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_drv.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="src_controls"
+ >
+ <File
+ RelativePath="..\src\mot\iupmot_button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_clipboard.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_colordlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_filedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_fontdlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_image.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_messagedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\mot\iupmot_val.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupole.vcproj b/iup/mak.vc9/iupole.vcproj
new file mode 100755
index 0000000..c1277a5
--- /dev/null
+++ b/iup/mak.vc9/iupole.vcproj
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupole"
+ ProjectGUID="{0C80BBEE-1B00-4567-1234-067292C84EDB}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/$(ProjectName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="inc"
+ Filter="h;hpp;hxx;hm;inl;inc"
+ >
+ <File
+ RelativePath="..\srcole\tAmbientProperties.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tDispatch.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tLegacy.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleClientSite.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleControlSite.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleHandler.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleInPlaceFrame.h"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleInPlaceSite.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="src"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+ >
+ <File
+ RelativePath="..\srcole\iup_olecontrol.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tAmbientProperties.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tDispatch.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tLegacy.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleClientSite.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleControlSite.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleHandler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleInPlaceFrame.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\srcole\tOleInPlaceSite.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="include"
+ >
+ <File
+ RelativePath="..\include\iupole.h"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\srcole\iupole.def"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupsample.vcproj b/iup/mak.vc9/iupsample.vcproj
new file mode 100755
index 0000000..144f3ba
--- /dev/null
+++ b/iup/mak.vc9/iupsample.vcproj
@@ -0,0 +1,1179 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupsample"
+ ProjectGUID="{9462FDEA-3E53-4250-8710-DD50AF48607C}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\$(ProjectName).tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\..\cd\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WIN32_WINNT=0x0500;_WIN32_IE=0x0500;_CRT_SECURE_NO_DEPRECATE;__IUPDEF_H"
+ ExceptionHandling="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="comctl32.lib ole32.lib opengl32.lib glu32.lib iup.lib iupgl.lib iupcontrols.lib iupimglib.lib cd.lib freetype6.lib iupcd.lib iup_pplot.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\lib;..\..\cd\lib;d:\lng\SpeechSDK\Lib\i386"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="C"
+ >
+ <File
+ RelativePath="..\html\examples\C\alarm.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\button.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\canvas1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\canvas2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\canvas3.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\cbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\cells_checkboard.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\cells_degrade.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\iup\html\examples\C\cells_numbering.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\colorbar.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\colorbrowser.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\dialog1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\dialog2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\filedlg.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\fill.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\frame.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\gauge.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getattribute.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getcolor.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getfile.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getparam.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\glcanvas.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\hbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\idle.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\image.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\item.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\label.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\list1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\list2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\listdialog.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\lua_init.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\mask.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\matrix.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\mdi.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\menu.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\message.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\multiline1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\multiline2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\ole_browser.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\pplot.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\progressbar.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\radio.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\sample.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\sbox1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\sbox2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\scanf.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\scrollbar.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\separator.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\submenu.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\tabs.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\text.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\timer.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\toggle.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\tree.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\val.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\vbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\zbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Lua"
+ >
+ <File
+ RelativePath="..\html\examples\Lua\alarm.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\button.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\canvas.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\colorbrowser.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\console.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\dial.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\dialog.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\filedlg.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\fill.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\fonts.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\frame.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\gauge.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\getcolor.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\getfile.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\getparam.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\glcanvas.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\hbox.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\idle.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\image.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\imagelib.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\item.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\label.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\list.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\listdialog.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\luagl.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\mask.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\mask_matrix.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\matrix.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\matrix_cbmode.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\menu.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\message.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\multiline.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\radio.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\sample.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\sbox.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\scanf.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\separator.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\submenu.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\tabs.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\text.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\timer.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\toggle.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\tray.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\tree1.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\tree2.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\tree3.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\val.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\vbox.wlua"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\Lua\zbox.wlua"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="LED"
+ >
+ <File
+ RelativePath="..\html\examples\LED\button.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\canvas.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\colorbrowser.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\dial.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\dialog.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\filedlg.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\fill.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\frame.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\gauge.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\hbox.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\image.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\label.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\list.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\matrix.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\menu.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\radio.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\sample.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\submenu.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\tabs.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\text.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\toggle.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\val.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\vbox.led"
+ >
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\zbox.led"
+ >
+ </File>
+ <Filter
+ Name="src"
+ >
+ <File
+ RelativePath="..\html\examples\LED\dial.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\filedlg.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\gauge.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\matrix.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\tabs.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\LED\toggle.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Filter>
+ <File
+ RelativePath="..\test\iuptest.rc"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupsamplegtk.vcproj b/iup/mak.vc9/iupsamplegtk.vcproj
new file mode 100755
index 0000000..24da672
--- /dev/null
+++ b/iup/mak.vc9/iupsamplegtk.vcproj
@@ -0,0 +1,798 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupsamplegtk"
+ ProjectGUID="{C684B76D-52EC-49CE-84F2-B031509419A5}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\$(ProjectName).tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;&quot;d:\lng\gtk\include\atk-1.0&quot;;d:\lng\gtk\include\cairo;&quot;d:\lng\gtk\include\glib-2.0&quot;;&quot;d:\lng\gtk\include\gtk-2.0&quot;;&quot;d:\lng\gtk\include\pango-1.0&quot;;&quot;d:\lng\gtk\lib\gtk-2.0\include&quot;;&quot;d:\lng\gtk\lib\glib-2.0\include&quot;;..\..\cd\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WIN32_WINNT=0x0400;_CRT_SECURE_NO_DEPRECATE;USE_GTK"
+ ExceptionHandling="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="comctl32.lib ole32.lib opengl32.lib glu32.lib gtk-win32-2.0.lib gdk-win32-2.0.lib gdk_pixbuf-2.0.lib pango-1.0.lib pangowin32-1.0.lib gobject-2.0.lib gmodule-2.0.lib glib-2.0.lib iupgtk.lib iupgl.lib iupcontrols.lib iupimglib.lib iup_pplot.lib cd.lib freetype6.lib iupcd.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\lib;d:\lng\gtk\lib;..\..\cd\lib"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="C"
+ >
+ <File
+ RelativePath="..\html\examples\C\alarm.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\button.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\canvas1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\canvas2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\canvas3.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\cbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\cells_checkboard.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\cells_degrade.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\iup\html\examples\C\cells_numbering.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\colorbar.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\colorbrowser.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\dialog1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\dialog2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\filedlg.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\fill.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\frame.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\gauge.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getattribute.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getcolor.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getfile.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\getparam.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\glcanvas.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\hbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\idle.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\image.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\item.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\label.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\list1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\list2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\listdialog.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\lua_init.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\mask.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\matrix.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\mdi.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\menu.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\message.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\multiline1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\multiline2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\ole_browser.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\pplot.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\progressbar.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\radio.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\sample.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\sbox1.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\sbox2.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\scanf.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\scrollbar.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\separator.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\submenu.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\tabs.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\text.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\timer.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\toggle.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\tree.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\val.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\vbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\html\examples\C\zbox.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iuptest.vcproj b/iup/mak.vc9/iuptest.vcproj
new file mode 100755
index 0000000..213431c
--- /dev/null
+++ b/iup/mak.vc9/iuptest.vcproj
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iuptest"
+ ProjectGUID="{2F92EC58-D94C-40BF-8C82-77607C72E1E3}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\$(ProjectName).tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\..\cd\include;D:\LNG\vld\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WIN32_WINNT=0x0500;_WIN32_IE=0x0500;_CRT_SECURE_NO_DEPRECATE;__IUPDEF_H;BIG_TEST;USE_OPENGL;PPLOT_TEST"
+ ExceptionHandling="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="comctl32.lib ole32.lib opengl32.lib glu32.lib iup.lib iupgl.lib iupcontrols.lib iupimglib.lib cd.lib freetype6.lib iupcd.lib iup_pplot.lib vld.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\lib;..\..\cd\lib;d:\lng\SpeechSDK\Lib\i386;D:\LNG\vld\lib"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Resources"
+ >
+ <File
+ RelativePath="..\test\dial.led"
+ >
+ </File>
+ <File
+ RelativePath="..\test\iuptest.rc"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\test\bigtest.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas_cddbuffer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas_cdsimple.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas_scrollbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\cells_checkboard.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\cells_degrade.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\cells_numbering.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\class_conf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\clipboard.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\colorbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\colorbrowser.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\dial.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\gauge.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\getcolor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\getparam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\glcanvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\glcanvas_cube.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\hbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\idle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\matrix.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\matrix_cbmode.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\matrix_cbs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\mdi.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\ole.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\test\pplot.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\predialogs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\sample.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\sbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\scanf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\sysinfo.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\text_spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\tray.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\val.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\vbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\zbox.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iuptestgtk.vcproj b/iup/mak.vc9/iuptestgtk.vcproj
new file mode 100755
index 0000000..4cbc9da
--- /dev/null
+++ b/iup/mak.vc9/iuptestgtk.vcproj
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iuptestgtk"
+ ProjectGUID="{2F92EC58-1234-40BF-5678-77607C72E1E3}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\$(ProjectName).tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;&quot;d:\lng\gtk\include\atk-1.0&quot;;d:\lng\gtk\include\cairo;&quot;d:\lng\gtk\include\glib-2.0&quot;;&quot;d:\lng\gtk\include\gtk-2.0&quot;;&quot;d:\lng\gtk\include\pango-1.0&quot;;&quot;d:\lng\gtk\lib\gtk-2.0\include&quot;;&quot;d:\lng\gtk\lib\glib-2.0\include&quot;;..\..\cd\include;D:\LNG\vld\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WIN32_WINNT=0x0400;_CRT_SECURE_NO_DEPRECATE;BIG_TEST;USE_OPENGL;PPLOT_TEST"
+ ExceptionHandling="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="comctl32.lib ole32.lib opengl32.lib glu32.lib gtk-win32-2.0.lib gdk-win32-2.0.lib gdk_pixbuf-2.0.lib pango-1.0.lib pangowin32-1.0.lib gobject-2.0.lib gmodule-2.0.lib glib-2.0.lib iupgtk.lib iupgl.lib iupcontrols.lib iupimglib.lib iup_pplot.lib cd.lib freetype6.lib iupcd.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\lib;d:\lng\gtk\lib;..\..\cd\lib;D:\LNG\vld\lib"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Resources"
+ >
+ <File
+ RelativePath="..\test\dial.led"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\test\bigtest.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas_cddbuffer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas_cdsimple.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\canvas_scrollbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\cells_checkboard.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\cells_degrade.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\cells_numbering.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\class_conf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\clipboard.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\colorbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\colorbrowser.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\dial.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\gauge.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\getcolor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\getparam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\glcanvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\glcanvas_cube.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\hbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\idle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\matrix.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\matrix_cbmode.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\matrix_cbs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\mdi.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\pplot.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\predialogs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\sample.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\sbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\scanf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\sysinfo.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\text_spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\tray.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\val.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\vbox.c"
+ >
+ </File>
+ <File
+ RelativePath="..\test\zbox.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupview.vcproj b/iup/mak.vc9/iupview.vcproj
new file mode 100755
index 0000000..440fbde
--- /dev/null
+++ b/iup/mak.vc9/iupview.vcproj
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupview"
+ ProjectGUID="{2F92EC58-D94C-40BF-4444-77607C72E1E3}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\debug/iupview.tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src"
+ PreprocessorDefinitions="WIN32,_DEBUG,USE_IM,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="comctl32.lib ole32.lib iup.lib iupcontrols.lib cd.lib freetype6.lib iupcd.lib iupgl.lib opengl32.lib glu32.lib iupimglib.lib im.lib iupim.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\im\lib;..\..\cd\lib;..\lib"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="..\bin\iupview.pdb"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\etc\iup.rc"
+ >
+ </File>
+ <File
+ RelativePath="..\srcview\iup_view.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupviewgtk.vcproj b/iup/mak.vc9/iupviewgtk.vcproj
new file mode 100755
index 0000000..e622956
--- /dev/null
+++ b/iup/mak.vc9/iupviewgtk.vcproj
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupviewgtk"
+ ProjectGUID="{E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="..\bin\debug/iupviewgtk.tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src"
+ PreprocessorDefinitions="WIN32,_DEBUG,USE_IM,_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1046"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="comctl32.lib ole32.lib gtk-win32-2.0.lib gdk-win32-2.0.lib gdk_pixbuf-2.0.lib pango-1.0.lib pangowin32-1.0.lib gobject-2.0.lib gmodule-2.0.lib glib-2.0.lib iupgtk.lib iupcontrols.lib cd.lib freetype6.lib iupcd.lib iupgl.lib opengl32.lib glu32.lib iupimglib.lib im.lib iupim.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\im\lib;d:\lng\gtk\lib;..\..\cd\lib;..\lib"
+ GenerateManifest="true"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="..\bin\iupviewgtk.pdb"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\srcview\iup_view.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/iupwin.vcproj b/iup/mak.vc9/iupwin.vcproj
new file mode 100755
index 0000000..15578a9
--- /dev/null
+++ b/iup/mak.vc9/iupwin.vcproj
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="iupwin"
+ ProjectGUID="{2C7E83B9-123A-BCDF-97BA-FCF4D0728408}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\lib"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_WIN32_WINNT=0x0500;_WIN32_IE=0x0500;WINVER=0x0500;IUP_ASSERT;_CRT_SECURE_NO_DEPRECATE;NOTREEVIEW"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ AdditionalDependencies="iupcore.lib"
+ OutputFile="$(OutDir)\iup.lib"
+ AdditionalLibraryDirectories="$(OutDir)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="inc"
+ >
+ <File
+ RelativePath="..\src\win\iupwin_brush.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_draw.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_drv.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_handle.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_info.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="src"
+ >
+ <File
+ RelativePath="..\src\win\iupwin_brush.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_common.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_draw.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_focus.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_font.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_globalattrib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_handle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_info.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_key.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_loop.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_tips.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="src_controls"
+ >
+ <File
+ RelativePath="..\src\win\iupwin_button.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_canvas.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_clipboard.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_colordlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_dialog.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_filedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_fontdlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_frame.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_image.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_label.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_menu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_messagedlg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_progressbar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_tabs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_text.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_toggle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_tree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\src\win\iupwin_val.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/mak.vc9/ledc.vcproj b/iup/mak.vc9/ledc.vcproj
new file mode 100755
index 0000000..8925c10
--- /dev/null
+++ b/iup/mak.vc9/ledc.vcproj
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="ledc"
+ ProjectGUID="{0F789DF8-22CC-4392-98DB-AC3960FAD4EA}"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="0"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\bin"
+ IntermediateDirectory="..\obj\Debug\$(ProjectName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ BrowseInformation="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/ledc.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(OutDir)/ledc.pdb"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\etc\iup.rc"
+ >
+ </File>
+ <File
+ RelativePath="..\srcledc\ledc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srcledc\lex.yy.c"
+ >
+ </File>
+ <File
+ RelativePath="..\srcledc\y.tab.c"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/iup/make_uname b/iup/make_uname
new file mode 100755
index 0000000..2f0a48f
--- /dev/null
+++ b/iup/make_uname
@@ -0,0 +1,49 @@
+#This builds all the libraries for 1 uname
+
+cd src
+./make_uname $1 $2 $3 $4 $5 $6 $7 $8
+cd ..
+
+cd srccd
+./make_uname $1 $2 $3 $4 $5 $6 $7 $8
+cd ..
+
+cd srccontrols
+./make_uname $1 $2 $3 $4 $5 $6 $7 $8
+cd ..
+
+cd srcgl
+./make_uname $1 $2 $3 $4 $5 $6 $7 $8
+cd ..
+
+cd srcpplot
+./make_uname $1 $2 $3 $4 $5 $6 $7 $8
+cd ..
+
+cd srcim
+./make_uname $1 $2 $3 $4 $5 $6 $7 $8
+cd ..
+
+cd srcimglib
+./make_uname $1 $2 $3 $4 $5 $6 $7 $8
+cd ..
+
+cd srcledc
+./make_uname $1 $2 $3 $4 $5 $6 $7 $8
+cd ..
+
+cd srcview
+./make_uname $1 $2 $3 $4 $5 $6 $7 $8
+cd ..
+
+#cd srclua3
+#./make_uname $1 $2 $3 $4 $5 $6 $7 $8
+#cd ..
+
+cd srclua5
+./make_uname $1 $2 $3 $4 $5 $6 $7 $8
+cd ..
+
+cd srcconsole
+./make_uname $1 $2 $3 $4 $5 $6 $7 $8
+cd ..
diff --git a/iup/make_uname.bat b/iup/make_uname.bat
new file mode 100755
index 0000000..71d36d7
--- /dev/null
+++ b/iup/make_uname.bat
@@ -0,0 +1,5 @@
+@echo off
+REM This builds all the libraries for 1 uname
+
+REM FOR %%u IN (src srccd srccontrols srcpplot srcgl srcim srcole srcledc srcview srclua3 srclua5 srcconsole) DO call make_uname_lib.bat %%u %1 %2 %3 %4 %5 %6 %7 %8 %9
+FOR %%u IN (src srccd srccontrols srcpplot srcgl srcim srcimglib srcole srcledc srcview srclua5 srcconsole) DO call make_uname_lib.bat %%u %1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/iup/make_uname_lib.bat b/iup/make_uname_lib.bat
new file mode 100755
index 0000000..f155f22
--- /dev/null
+++ b/iup/make_uname_lib.bat
@@ -0,0 +1,6 @@
+@echo off
+REM This builds 1 library for 1 uname
+
+cd %1
+call make_uname %2 %3 %4 %5 %6 %7
+cd ..
diff --git a/iup/src/Makefile b/iup/src/Makefile
new file mode 100755
index 0000000..028047f
--- /dev/null
+++ b/iup/src/Makefile
@@ -0,0 +1,9 @@
+
+.PHONY: do_all iup iupgtk
+do_all: iup iupgtk
+
+iup:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak
+
+iupgtk:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak USE_GTK=Yes
diff --git a/iup/src/config.mak b/iup/src/config.mak
new file mode 100755
index 0000000..e857643
--- /dev/null
+++ b/iup/src/config.mak
@@ -0,0 +1,118 @@
+PROJNAME = iup
+LIBNAME = iup
+OPT = YES
+
+#ifdef DBG
+ DEFINES += IUP_ASSERT
+#endif
+
+INCLUDES = ../include .
+
+SRC = iup_array.c iup_callback.c iup_dlglist.c iup_attrib.c iup_focus.c iup_font.c \
+ iup_globalattrib.c iup_object.c iup_key.c iup_layout.c iup_ledlex.c iup_names.c iup_open.c \
+ iup_ledparse.c iup_predial.c iup_register.c iup_scanf.c iup_show.c iup_str.c iup_table.c \
+ iup_func.c iup_childtree.c iup.c iup_classattrib.c iup_dialog.c iup_assert.c iup_canvas.c \
+ iup_messagedlg.c iup_timer.c iup_image.c iup_label.c iup_fill.c iup_zbox.c \
+ iup_colordlg.c iup_fontdlg.c iup_filedlg.c iup_strmessage.c iup_menu.c iup_frame.c \
+ iup_user.c iup_button.c iup_radio.c iup_toggle.c iup_progressbar.c iup_text.c iup_val.c \
+ iup_box.c iup_hbox.c iup_vbox.c iup_cbox.c iup_class.c iup_classbase.c iup_maskmatch.c \
+ iup_mask.c iup_maskparse.c iup_tabs.c iup_spin.c iup_list.c iup_getparam.c \
+ iup_sbox.c iup_normalizer.c iup_tree.c
+
+ifdef USE_GTK
+ ifndef GTK_DEFAULT
+ # Build GTK version in IRIX,SunOS,AIX,Win32
+ LIBNAME := iupgtk
+ endif
+
+ DEFINES += GTK_DISABLE_DEPRECATED
+ INCLUDES += gtk
+ SRC += gtk/iupgtk_common.c gtk/iupgtk_focus.c gtk/iupgtk_font.c gtk/iupgtk_clipboard.c \
+ gtk/iupgtk_globalattrib.c gtk/iupgtk_key.c gtk/iupgtk_tips.c \
+ gtk/iupgtk_loop.c gtk/iupgtk_open.c gtk/iupgtk_messagedlg.c \
+ gtk/iupgtk_dialog.c gtk/iupgtk_timer.c gtk/iupgtk_image.c gtk/iupgtk_label.c \
+ gtk/iupgtk_colordlg.c gtk/iupgtk_fontdlg.c gtk/iupgtk_filedlg.c \
+ gtk/iupgtk_button.c gtk/iupgtk_toggle.c gtk/iupgtk_progressbar.c \
+ gtk/iupgtk_text.c gtk/iupgtk_val.c gtk/iupgtk_frame.c gtk/iupgtk_canvas.c \
+ gtk/iupgtk_tabs.c gtk/iupgtk_menu.c gtk/iupgtk_list.c gtk/iupgtk_tree.c
+
+ ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ DEFINES += _WIN32_WINNT=0x0500 _WIN32_IE=0x0500 WINVER=0x0500 NOTREEVIEW
+ SRC += win/iupwindows_main.c win/iupwindows_help.c win/iupwindows_info.c
+ else
+ SRC += gtk/iupgtk_help.c mot/iupunix_info.c
+ endif
+
+ ifdef USE_HILDON
+ DEFINES += HILDON
+ INCLUDES += /usr/include/hildon-1
+ LIBS += hildon-1
+ endif
+else
+ ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+
+ SRC += win/iupwin_common.c win/iupwin_brush.c win/iupwin_focus.c win/iupwin_font.c \
+ win/iupwin_globalattrib.c win/iupwin_handle.c win/iupwin_key.c \
+ win/iupwin_loop.c win/iupwin_open.c win/iupwin_tips.c win/iupwin_info.c \
+ win/iupwin_dialog.c win/iupwin_messagedlg.c win/iupwin_timer.c \
+ win/iupwin_image.c win/iupwin_label.c win/iupwin_canvas.c win/iupwin_frame.c \
+ win/iupwin_colordlg.c win/iupwin_fontdlg.c win/iupwin_filedlg.c \
+ win/iupwin_button.c win/iupwin_draw.c win/iupwin_toggle.c win/iupwin_clipboard.c \
+ win/iupwin_progressbar.c win/iupwin_text.c win/iupwin_val.c \
+ win/iupwin_tabs.c win/iupwin_menu.c win/iupwin_list.c win/iupwin_tree.c
+
+ SRC += win/iupwindows_main.c win/iupwindows_help.c win/iupwindows_info.c
+
+ INCLUDES += win
+ DEFINES += _WIN32_WINNT=0x0500 _WIN32_IE=0x0500 WINVER=0x0500 NOTREEVIEW
+ else
+ ifdef GTK_DEFAULT
+ # Build Motif version in Linux,Darwin,FreeBSD
+ LIBNAME := iupmot
+ endif
+
+ SRC += mot/iupmot_common.c mot/iupmot_color.c mot/iupmot_focus.c mot/iupmot_font.c \
+ mot/iupmot_key.c mot/iupmot_loop.c mot/iupmot_open.c mot/iupmot_tips.c \
+ mot/iupmot_globalattrib.c mot/iupmot_dialog.c mot/iupmot_messagedlg.c \
+ mot/iupmot_timer.c mot/iupmot_image.c mot/iupmot_label.c mot/iupmot_canvas.c \
+ mot/iupmot_colordlg.c mot/iupmot_fontdlg.c mot/iupmot_filedlg.c mot/iupmot_frame.c \
+ mot/iupmot_button.c mot/iupmot_toggle.c mot/iupmot_progressbar.c mot/iupmot_clipboard.c \
+ mot/iupmot_text.c mot/iupmot_val.c mot/iupmot_tabs.c mot/iupmot_menu.c \
+ mot/iupmot_list.c mot/iupmot_tree.c
+
+ SRC += mot/iupunix_help.c mot/iupunix_info.c
+
+ INCLUDES += mot
+ USE_MOTIF=Yes
+ endif
+endif
+
+ifeq "$(TEC_SYSNAME)" "SunOS"
+ # Necessary or the fileopen will not work in SunOS (needs to be retested)
+ #DEFINES += NO_PATH_MODE_RELATIVE
+endif
+
+ifneq ($(findstring dll, $(TEC_UNAME)), )
+ DEFINES += IUP_DLL
+ SRC += iup_dll.rc
+ DEF_FILE = iup.def
+endif
+
+ifeq "$(TEC_UNAME)" "vc6"
+ # Necessary because VC6 has an old WinSDK
+ #WINSDK = d:/lng/vc7/PlatformSDK
+ #INCLUDES += $(WINSDK)/include
+ #LDIR = $(WINSDK)/lib
+endif
+
+ifeq "$(TEC_UNAME)" "dll"
+ # Necessary because VC6 has an old WinSDK
+ #WINSDK = d:/lng/vc7/PlatformSDK
+ #INCLUDES += $(WINSDK)/include
+ #LDIR = $(WINSDK)/lib
+endif
+
+ifeq "$(TEC_UNAME)" "owc1"
+ # Necessary or IUP will not work in Open Watcom
+ DBG=Yes
+endif
diff --git a/iup/src/gtk/iupgtk_button.c b/iup/src/gtk/iupgtk_button.c
new file mode 100755
index 0000000..18be87c
--- /dev/null
+++ b/iup/src/gtk/iupgtk_button.c
@@ -0,0 +1,477 @@
+/** \file
+ * \brief Button Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_image.h"
+#include "iup_button.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_image.h"
+#include "iup_key.h"
+
+#include "iupgtk_drv.h"
+
+
+#if !GTK_CHECK_VERSION(2, 6, 0)
+static void gtk_button_set_image(GtkButton *button, GtkWidget *image)
+{
+}
+static GtkWidget* gtk_button_get_image(GtkButton *button)
+{
+ return NULL;
+}
+#endif
+
+void iupdrvButtonAddBorders(int *x, int *y)
+{
+#ifdef WIN32
+ int border_size = 2*5;
+#else
+#ifdef HILDON
+ int border_size = 2*7+1; /* borders are not symetric */
+#else
+ int border_size = 2*5+1; /* borders are not symetric */
+#endif
+#endif
+ (*x) += border_size;
+ (*y) += border_size;
+}
+
+static void gtk_button_children_callback(GtkWidget *widget, gpointer client_data)
+{
+ if (GTK_IS_LABEL(widget))
+ {
+ GtkLabel **label = (GtkLabel**) client_data;
+ *label = (GtkLabel*)widget;
+ }
+}
+
+static GtkLabel* gtkButtonGetLabel(Ihandle* ih)
+{
+ if (ih->data->type == IUP_BUTTON_TEXT) /* text only */
+ return (GtkLabel*)gtk_bin_get_child((GtkBin*)ih->handle);
+ else if (ih->data->type == IUP_BUTTON_BOTH) /* both */
+ {
+ /* when both is set, button contains an GtkAlignment,
+ that contains a GtkBox, that contains a label and an image */
+ GtkContainer *container = (GtkContainer*)gtk_bin_get_child((GtkBin*)gtk_bin_get_child((GtkBin*)ih->handle));
+ GtkLabel* label = NULL;
+ gtk_container_foreach(container, gtk_button_children_callback, &label);
+ return label;
+ }
+ return NULL;
+}
+
+static int gtkButtonSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type != IUP_BUTTON_IMAGE) /* text or both */
+ {
+ GtkLabel* label = gtkButtonGetLabel(ih);
+ iupgtkSetMnemonicTitle(ih, label, value);
+ return 1;
+ }
+
+ return 0;
+}
+
+static int gtkButtonSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ GtkButton* button = (GtkButton*)ih->handle;
+ PangoAlignment alignment;
+ float xalign, yalign;
+ char value1[30]="", value2[30]="";
+
+ iupStrToStrStr(value, value1, value2, ':');
+
+ if (iupStrEqualNoCase(value1, "ARIGHT"))
+ {
+ xalign = 1.0f;
+ alignment = PANGO_ALIGN_RIGHT;
+ }
+ else if (iupStrEqualNoCase(value1, "ACENTER"))
+ {
+ xalign = 0.5f;
+ alignment = PANGO_ALIGN_CENTER;
+ }
+ else /* "ALEFT" */
+ {
+ xalign = 0;
+ alignment = PANGO_ALIGN_LEFT;
+ }
+
+ if (iupStrEqualNoCase(value2, "ABOTTOM"))
+ yalign = 1.0f;
+ else if (iupStrEqualNoCase(value2, "ATOP"))
+ yalign = 0;
+ else /* ACENTER (default) */
+ yalign = 0.5f;
+
+ gtk_button_set_alignment(button, xalign, yalign);
+
+ if (ih->data->type == IUP_BUTTON_TEXT && !GTK_IS_COLOR_BUTTON(ih->handle)) /* text only */
+ {
+ PangoLayout* layout = gtk_label_get_layout(gtkButtonGetLabel(ih));
+ if (layout) pango_layout_set_alignment(layout, alignment);
+ }
+
+ return 1;
+}
+
+static int gtkButtonSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+ if (ih->handle)
+ {
+ if (ih->data->type == IUP_BUTTON_TEXT) /* text only */
+ {
+ GtkMisc* misc = (GtkMisc*)gtk_bin_get_child((GtkBin*)ih->handle);
+ gtk_misc_set_padding(misc, ih->data->horiz_padding, ih->data->vert_padding);
+ }
+ else
+ {
+ GtkAlignment* alignment = (GtkAlignment*)gtk_bin_get_child((GtkBin*)ih->handle);
+ gtk_alignment_set_padding(alignment, ih->data->vert_padding, ih->data->vert_padding,
+ ih->data->horiz_padding, ih->data->horiz_padding);
+ }
+ }
+ return 0;
+}
+
+#ifdef WIN32
+static int gtkButtonSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_BUTTON_TEXT && GTK_IS_COLOR_BUTTON(ih->handle))
+ {
+ GdkColor color;
+ unsigned char r, g, b;
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ iupgdkColorSet(&color, r, g, b);
+ gtk_color_button_set_color((GtkColorButton*)ih->handle, &color);
+ return 1;
+ }
+
+ return iupdrvBaseSetBgColorAttrib(ih, value);
+}
+#endif
+
+static int gtkButtonSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ GtkLabel* label = gtkButtonGetLabel(ih);
+ if (!label) return 0;
+
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ iupgtkBaseSetFgColor((GtkWidget*)label, r, g, b);
+
+ return 1;
+}
+
+static int gtkButtonSetStandardFontAttrib(Ihandle* ih, const char* value)
+{
+ iupdrvSetStandardFontAttrib(ih, value);
+
+ if (ih->handle)
+ {
+ GtkLabel* label = gtkButtonGetLabel(ih);
+ if (!label) return 1;
+
+ gtk_widget_modify_font((GtkWidget*)label, (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih));
+ if (ih->data->type == IUP_BUTTON_TEXT && !GTK_IS_COLOR_BUTTON(ih->handle)) /* text only */
+ iupgtkFontUpdatePangoLayout(ih, gtk_label_get_layout(label));
+ }
+ return 1;
+}
+
+static void gtkButtonSetPixbuf(Ihandle* ih, const char* name, int make_inactive)
+{
+ GtkButton* button = (GtkButton*)ih->handle;
+ GtkImage* image = (GtkImage*)gtk_button_get_image(button);
+
+ if (name && image)
+ {
+ GdkPixbuf* pixbuf = iupImageGetImage(name, ih, make_inactive);
+ GdkPixbuf* old_pixbuf = gtk_image_get_pixbuf(image);
+ if (pixbuf != old_pixbuf)
+ gtk_image_set_from_pixbuf(image, pixbuf);
+ return;
+ }
+
+ /* if not defined */
+#if GTK_CHECK_VERSION(2, 8, 0)
+ if (image)
+ gtk_image_clear(image);
+#endif
+}
+
+static int gtkButtonSetImageAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type != IUP_BUTTON_TEXT) /* image or both */
+ {
+ if (iupdrvIsActive(ih))
+ gtkButtonSetPixbuf(ih, value, 0);
+ else
+ {
+ if (!iupAttribGet(ih, "IMINACTIVE"))
+ {
+ /* if not active and IMINACTIVE is not defined
+ then automaticaly create one based on IMAGE */
+ gtkButtonSetPixbuf(ih, value, 1); /* make_inactive */
+ }
+ }
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int gtkButtonSetImInactiveAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type != IUP_BUTTON_TEXT) /* image or both */
+ {
+ if (!iupdrvIsActive(ih))
+ {
+ if (value)
+ gtkButtonSetPixbuf(ih, value, 0);
+ else
+ {
+ /* if not defined then automaticaly create one based on IMAGE */
+ char* name = iupAttribGet(ih, "IMAGE");
+ gtkButtonSetPixbuf(ih, name, 1); /* make_inactive */
+ }
+ }
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int gtkButtonSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ /* update the inactive image if necessary */
+ if (ih->data->type != IUP_BUTTON_TEXT) /* image or both */
+ {
+ if (!iupStrBoolean(value))
+ {
+ char* name = iupAttribGet(ih, "IMINACTIVE");
+ if (name)
+ gtkButtonSetPixbuf(ih, name, 0);
+ else
+ {
+ /* if not defined then automaticaly create one based on IMAGE */
+ name = iupAttribGet(ih, "IMAGE");
+ gtkButtonSetPixbuf(ih, name, 1); /* make_inactive */
+ }
+ }
+ else
+ {
+ /* must restore the normal image */
+ char* name = iupAttribGet(ih, "IMAGE");
+ gtkButtonSetPixbuf(ih, name, 0);
+ }
+ }
+
+ return iupBaseSetActiveAttrib(ih, value);
+}
+
+static int gtkButtonSetFocusOnClickAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ gtk_button_set_focus_on_click((GtkButton*)ih->handle, TRUE);
+ else
+ gtk_button_set_focus_on_click((GtkButton*)ih->handle, FALSE);
+ return 1;
+}
+
+static gboolean gtkButtonEnterLeaveEvent(GtkWidget *widget, GdkEventCrossing *evt, Ihandle *ih)
+{
+ iupgtkEnterLeaveEvent(widget, evt, ih);
+ (void)widget;
+
+ if (evt->type == GDK_ENTER_NOTIFY)
+ gtk_button_set_relief((GtkButton*)ih->handle, GTK_RELIEF_NORMAL);
+ else if (evt->type == GDK_LEAVE_NOTIFY)
+ gtk_button_set_relief((GtkButton*)ih->handle, GTK_RELIEF_NONE);
+
+ return FALSE;
+}
+
+static gboolean gtkButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih)
+{
+ if (iupgtkButtonEvent(widget, evt, ih)==TRUE)
+ return TRUE;
+
+ if (ih->data->type != IUP_BUTTON_TEXT) /* image or both */
+ {
+ char* name = iupAttribGet(ih, "IMPRESS");
+ if (name)
+ {
+ if (evt->type == GDK_BUTTON_PRESS)
+ gtkButtonSetPixbuf(ih, name, 0);
+ else
+ {
+ name = iupAttribGet(ih, "IMAGE");
+ gtkButtonSetPixbuf(ih, name, 0);
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+static void gtkButtonClicked(GtkButton *widget, Ihandle* ih)
+{
+ Icallback cb = IupGetCallback(ih, "ACTION");
+ if (cb)
+ {
+ if (cb(ih) == IUP_CLOSE)
+ IupExitLoop();
+ }
+ (void)widget;
+}
+
+static int gtkButtonMapMethod(Ihandle* ih)
+{
+ int impress;
+ char* value;
+
+ ih->handle = gtk_button_new();
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ value = iupAttribGet(ih, "IMAGE");
+ if (value)
+ {
+ gtk_button_set_image((GtkButton*)ih->handle, gtk_image_new());
+ ih->data->type = IUP_BUTTON_IMAGE;
+
+ value = iupAttribGet(ih, "TITLE");
+ if (value)
+ {
+ GtkSettings* settings = gtk_widget_get_settings(ih->handle);
+ g_object_set(settings, "gtk-button-images", (int)TRUE, NULL);
+
+ gtk_button_set_label((GtkButton*)ih->handle, value);
+ ih->data->type |= IUP_BUTTON_TEXT;
+
+#if GTK_CHECK_VERSION(2, 10, 0)
+ gtk_button_set_image_position((GtkButton*)ih->handle, ih->data->img_position); /* IUP and GTK have the same Ids */
+#endif
+ }
+ }
+ else
+ {
+ char* title = iupAttribGet(ih, "TITLE");
+ if (!title)
+ {
+#ifdef WIN32
+ if (iupAttribGet(ih, "BGCOLOR"))
+ {
+ gtk_widget_destroy(ih->handle);
+ ih->handle = gtk_color_button_new();
+ }
+ else
+ gtk_button_set_label((GtkButton*)ih->handle, "");
+#else
+ gtk_button_set_label((GtkButton*)ih->handle, "");
+#endif
+ }
+ else
+ gtk_button_set_label((GtkButton*)ih->handle, title);
+ ih->data->type = IUP_BUTTON_TEXT;
+ }
+
+ /* add to the parent, all GTK controls must call this. */
+ iupgtkBaseAddToParent(ih);
+
+ if (!iupAttribGetBoolean(ih, "CANFOCUS"))
+ GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS;
+
+ value = iupAttribGet(ih, "IMPRESS");
+ impress = (ih->data->type & IUP_BUTTON_IMAGE && value)? 1: 0;
+ if (!impress && iupAttribGetBoolean(ih, "FLAT"))
+ {
+ gtk_button_set_relief((GtkButton*)ih->handle, GTK_RELIEF_NONE);
+
+ g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(gtkButtonEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(gtkButtonEnterLeaveEvent), ih);
+ }
+ else
+ {
+ if (impress && !iupAttribGetStr(ih, "IMPRESSBORDER"))
+ gtk_button_set_relief((GtkButton*)ih->handle, GTK_RELIEF_NONE);
+ else
+ gtk_button_set_relief((GtkButton*)ih->handle, GTK_RELIEF_NORMAL);
+
+ g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ }
+
+ g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih);
+
+ g_signal_connect(G_OBJECT(ih->handle), "clicked", G_CALLBACK(gtkButtonClicked), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "button-press-event", G_CALLBACK(gtkButtonEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "button-release-event",G_CALLBACK(gtkButtonEvent), ih);
+
+ gtk_widget_realize(ih->handle);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvButtonInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkButtonMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Overwrite Common */
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, gtkButtonSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED);
+
+ /* Overwrite Visual */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, gtkButtonSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+
+ /* Visual */
+#ifdef WIN32
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkButtonSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+#else
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+#endif
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, gtkButtonSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "TITLE", NULL, gtkButtonSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupButton only */
+ iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, gtkButtonSetAlignmentAttrib, "ACENTER:ACENTER", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, gtkButtonSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, gtkButtonSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMPRESS", NULL, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FOCUSONCLICK", NULL, gtkButtonSetFocusOnClickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "PADDING", iupButtonGetPaddingAttrib, gtkButtonSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "MARKUP", NULL, NULL, NULL, NULL, IUPAF_DEFAULT);
+}
diff --git a/iup/src/gtk/iupgtk_canvas.c b/iup/src/gtk/iupgtk_canvas.c
new file mode 100755
index 0000000..daae4ad
--- /dev/null
+++ b/iup/src/gtk/iupgtk_canvas.c
@@ -0,0 +1,624 @@
+/** \file
+ * \brief Canvas Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+#include <limits.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvinfo.h"
+#include "iup_drvfont.h"
+#include "iup_canvas.h"
+#include "iup_key.h"
+
+#include "iupgtk_drv.h"
+
+
+static int gtkCanvasScroll2Iup(GtkScrollType scroll, int vert)
+{
+ switch(scroll)
+ {
+ case GTK_SCROLL_STEP_UP:
+ return IUP_SBUP;
+ case GTK_SCROLL_STEP_DOWN:
+ return IUP_SBDN;
+ case GTK_SCROLL_PAGE_UP:
+ return IUP_SBPGUP;
+ case GTK_SCROLL_PAGE_DOWN:
+ return IUP_SBPGDN;
+ case GTK_SCROLL_STEP_LEFT:
+ return IUP_SBLEFT;
+ case GTK_SCROLL_STEP_RIGHT:
+ return IUP_SBRIGHT;
+ case GTK_SCROLL_PAGE_LEFT:
+ return IUP_SBPGLEFT;
+ case GTK_SCROLL_PAGE_RIGHT:
+ return IUP_SBPGRIGHT;
+ case GTK_SCROLL_STEP_BACKWARD:
+ return vert? IUP_SBUP: IUP_SBLEFT;
+ case GTK_SCROLL_STEP_FORWARD:
+ return vert? IUP_SBDN: IUP_SBRIGHT;
+ case GTK_SCROLL_PAGE_BACKWARD:
+ return vert? IUP_SBPGUP: IUP_SBPGLEFT;
+ case GTK_SCROLL_PAGE_FORWARD:
+ return vert? IUP_SBPGDN: IUP_SBPGRIGHT;
+ case GTK_SCROLL_JUMP:
+ case GTK_SCROLL_START:
+ case GTK_SCROLL_END:
+ return vert? IUP_SBPOSV: IUP_SBPOSH;
+ case GTK_SCROLL_NONE:
+ return -1;
+ }
+
+ /* No IUP_SBDRAGV or IUP_SBDRAGH support in GTK */
+
+ return -1;
+}
+
+static gboolean gtkCanvasHChangeValue(GtkRange *range, GtkScrollType scroll, double value, Ihandle *ih)
+{
+ double posx, posy;
+ IFniff cb;
+
+ double xmin = iupAttribGetFloat(ih, "XMIN");
+ double xmax = iupAttribGetFloat(ih, "XMAX");
+ double dx = iupAttribGetFloat(ih, "DX");
+ if (value < xmin) value = xmin;
+ if (value > xmax-dx) value = xmax-dx;
+
+ posx = value;
+ ih->data->posx = (float)posx;
+ posy = ih->data->posy;
+
+ cb = (IFniff)IupGetCallback(ih,"SCROLL_CB");
+ if (cb)
+ {
+ int op = gtkCanvasScroll2Iup(scroll, 0);
+ if (op == -1)
+ return FALSE;
+
+ cb(ih, op, (float)posx, (float)posy);
+ }
+ else
+ {
+ IFnff cb = (IFnff)IupGetCallback(ih,"ACTION");
+ if (cb)
+ cb (ih, (float)posx, (float)posy);
+ }
+
+ (void)range;
+ return FALSE;
+}
+
+static gboolean gtkCanvasVChangeValue(GtkRange *range, GtkScrollType scroll, double value, Ihandle *ih)
+{
+ double posx, posy;
+ IFniff cb;
+
+ double ymin = iupAttribGetFloat(ih, "YMIN");
+ double ymax = iupAttribGetFloat(ih, "YMAX");
+ double dy = iupAttribGetFloat(ih, "DY");
+ if (value < ymin) value = ymin;
+ if (value > ymax-dy) value = ymax-dy;
+
+ posy = value;
+ ih->data->posy = (float)posy;
+ posx = ih->data->posx;
+
+ cb = (IFniff)IupGetCallback(ih,"SCROLL_CB");
+ if (cb)
+ {
+ int op = gtkCanvasScroll2Iup(scroll, 1);
+ if (op == -1)
+ return FALSE;
+
+ cb(ih, op, (float)posx, (float)posy);
+ }
+ else
+ {
+ IFnff cb = (IFnff)IupGetCallback(ih,"ACTION");
+ if (cb)
+ cb (ih, (float)posx, (float)posy);
+ }
+
+ (void)range;
+ return FALSE;
+}
+
+static gboolean gtkCanvasScrollEvent(GtkWidget *widget, GdkEventScroll *evt, Ihandle *ih)
+{
+ IFnfiis wcb = (IFnfiis)IupGetCallback(ih, "WHEEL_CB");
+ if (wcb)
+ {
+ int delta = evt->direction==GDK_SCROLL_UP||evt->direction==GDK_SCROLL_LEFT? 1: -1;
+ char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT;
+ int button = evt->direction==GDK_SCROLL_UP||evt->direction==GDK_SCROLL_LEFT? 4: 5;
+ iupgtkButtonKeySetStatus(evt->state, button, status, 0);
+
+ wcb(ih, (float)delta, (int)evt->x, (int)evt->y, status);
+ }
+ else
+ {
+ IFniff scb = (IFniff)IupGetCallback(ih,"SCROLL_CB");
+ int delta = evt->direction==GDK_SCROLL_UP||evt->direction==GDK_SCROLL_LEFT? 1: -1;
+
+ if (evt->direction==GDK_SCROLL_UP || evt->direction==GDK_SCROLL_DOWN)
+ {
+ float posy = ih->data->posy;
+ posy -= delta*iupAttribGetFloat(ih, "DY")/10.0f;
+ IupSetfAttribute(ih, "POSY", "%g", posy);
+ }
+ else
+ {
+ float posx = ih->data->posx;
+ posx -= delta*iupAttribGetFloat(ih, "DX")/10.0f;
+ IupSetfAttribute(ih, "POSX", "%g", posx);
+ }
+
+ if (scb)
+ {
+ int scroll_gtk2iup[4] = {IUP_SBUP, IUP_SBDN, IUP_SBLEFT, IUP_SBRIGHT};
+ int op = scroll_gtk2iup[evt->direction];
+ scb(ih,op,ih->data->posx,ih->data->posy);
+ }
+ }
+ (void)widget;
+ return TRUE;
+}
+
+static gboolean gtkCanvasButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih)
+{
+ if (evt->type == GDK_BUTTON_PRESS)
+ {
+ /* Force focus on canvas click */
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ gtk_widget_grab_focus(ih->handle);
+ }
+
+ return iupgtkButtonEvent(widget, evt, ih);
+}
+
+static int gtkCanvasSetBgColorAttrib(Ihandle* ih, const char* value);
+
+static gboolean gtkCanvasExposeEvent(GtkWidget *widget, GdkEventExpose *evt, Ihandle *ih)
+{
+ IFnff cb = (IFnff)IupGetCallback(ih,"ACTION");
+ if (cb)
+ {
+ if (!iupAttribGet(ih, "_IUPGTK_NO_BGCOLOR"))
+ gtkCanvasSetBgColorAttrib(ih, iupAttribGetStr(ih, "BGCOLOR")); /* reset to update window attributes */
+
+ iupAttribSetStrf(ih, "CLIPRECT", "%d %d %d %d", evt->area.x, evt->area.y, evt->area.x+evt->area.width-1, evt->area.y+evt->area.height-1);
+ cb(ih,ih->data->posx,ih->data->posy);
+ iupAttribSetStr(ih, "CLIPRECT", NULL);
+ }
+
+ (void)widget;
+ return TRUE; /* stop other handlers */
+}
+
+static gboolean gtkCanvasConfigureEvent(GtkWidget *widget, GdkEventConfigure *evt, Ihandle *ih)
+{
+ IFnii cb = (IFnii)IupGetCallback(ih,"RESIZE_CB");
+ if (cb)
+ cb(ih,evt->width,evt->height);
+
+ (void)widget;
+ return FALSE;
+}
+
+static GtkScrolledWindow* gtkCanvasGetScrolledWindow(Ihandle* ih)
+{
+ return (GtkScrolledWindow*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+}
+
+static int gtkCanvasSetXAutoHideAttrib(Ihandle* ih, const char *value)
+{
+ GtkPolicyType vscrollbar_policy;
+ gtk_scrolled_window_get_policy(gtkCanvasGetScrolledWindow(ih), NULL, &vscrollbar_policy);
+
+ if (ih->data->sb & IUP_SB_HORIZ)
+ {
+ GtkPolicyType hscrollbar_policy;
+
+ if (iupStrBoolean(value))
+ hscrollbar_policy = GTK_POLICY_AUTOMATIC;
+ else
+ hscrollbar_policy = GTK_POLICY_ALWAYS;
+
+ gtk_scrolled_window_set_policy(gtkCanvasGetScrolledWindow(ih), hscrollbar_policy, vscrollbar_policy);
+ }
+ else
+ gtk_scrolled_window_set_policy(gtkCanvasGetScrolledWindow(ih), GTK_POLICY_NEVER, vscrollbar_policy);
+
+ return 1;
+}
+
+static int gtkCanvasSetYAutoHideAttrib(Ihandle* ih, const char *value)
+{
+ GtkPolicyType hscrollbar_policy;
+ gtk_scrolled_window_get_policy(gtkCanvasGetScrolledWindow(ih), &hscrollbar_policy, NULL);
+
+ if (ih->data->sb & IUP_SB_VERT)
+ {
+ GtkPolicyType vscrollbar_policy;
+
+ if (iupStrBoolean(value))
+ vscrollbar_policy = GTK_POLICY_AUTOMATIC;
+ else
+ vscrollbar_policy = GTK_POLICY_ALWAYS;
+
+ gtk_scrolled_window_set_policy(gtkCanvasGetScrolledWindow(ih), hscrollbar_policy, vscrollbar_policy);
+ }
+ else
+ gtk_scrolled_window_set_policy(gtkCanvasGetScrolledWindow(ih), hscrollbar_policy, GTK_POLICY_NEVER);
+
+ return 1;
+}
+
+static int gtkCanvasCheckScroll(double min, double max, double *page, double *pos)
+{
+ double old_pos = *pos;
+ double range = max-min;
+ if (*page > range) *page = range;
+ if (*page <= 0) *page = range/10.;
+
+ if (*pos < min) *pos = min;
+ if (*pos > (max - *page)) *pos = max - *page;
+
+ if (old_pos == *pos)
+ return 0;
+ else
+ return 1;
+}
+
+static int gtkCanvasSetDXAttrib(Ihandle* ih, const char *value)
+{
+ if (ih->data->sb & IUP_SB_HORIZ)
+ {
+ double xmin, xmax, linex;
+ float dx;
+ int value_changed;
+ GtkAdjustment* sb_horiz = gtk_scrolled_window_get_hadjustment(gtkCanvasGetScrolledWindow(ih));
+ if (!sb_horiz) return 1;
+
+ if (!iupStrToFloat(value, &dx))
+ return 1;
+
+ xmin = iupAttribGetFloat(ih, "XMIN");
+ xmax = iupAttribGetFloat(ih, "XMAX");
+
+ if (!iupAttribGet(ih,"LINEX"))
+ {
+ linex = dx/10;
+ if (linex==0)
+ linex = 1;
+ }
+ else
+ linex = iupAttribGetFloat(ih,"LINEX");
+
+ sb_horiz->lower = xmin;
+ sb_horiz->upper = xmax;
+ sb_horiz->step_increment = linex;
+ sb_horiz->page_size = dx;
+
+ value_changed = gtkCanvasCheckScroll(xmin, xmax, &sb_horiz->page_size, &sb_horiz->value);
+ sb_horiz->page_increment = sb_horiz->page_size;
+
+ gtk_adjustment_changed(sb_horiz);
+
+ if (value_changed)
+ gtk_adjustment_value_changed(sb_horiz);
+ }
+ return 1;
+}
+
+static int gtkCanvasSetDYAttrib(Ihandle* ih, const char *value)
+{
+ if (ih->data->sb & IUP_SB_VERT)
+ {
+ double ymin, ymax, liney;
+ float dy;
+ int value_changed;
+ GtkAdjustment* sb_vert = gtk_scrolled_window_get_vadjustment(gtkCanvasGetScrolledWindow(ih));
+ if (!sb_vert) return 1;
+
+ if (!iupStrToFloat(value, &dy))
+ return 1;
+
+ ymin = iupAttribGetFloat(ih, "YMIN");
+ ymax = iupAttribGetFloat(ih, "YMAX");
+
+ if (!iupAttribGet(ih,"LINEY"))
+ {
+ liney = dy/10;
+ if (liney==0)
+ liney = 1;
+ }
+ else
+ liney = iupAttribGetFloat(ih,"LINEY");
+
+ sb_vert->lower = ymin;
+ sb_vert->upper = ymax;
+ sb_vert->step_increment = liney;
+ sb_vert->page_size = dy;
+
+ value_changed = gtkCanvasCheckScroll(ymin, ymax, &sb_vert->page_size, &sb_vert->value);
+ sb_vert->page_increment = sb_vert->page_size;
+
+ gtk_adjustment_changed(sb_vert);
+
+ if (value_changed)
+ gtk_adjustment_value_changed(sb_vert);
+ }
+ return 1;
+}
+
+static int gtkCanvasSetPosXAttrib(Ihandle* ih, const char *value)
+{
+ if (ih->data->sb & IUP_SB_HORIZ)
+ {
+ float posx, xmin, xmax, dx;
+ GtkAdjustment* sb_horiz = gtk_scrolled_window_get_hadjustment(gtkCanvasGetScrolledWindow(ih));
+ if (!sb_horiz) return 1;
+
+ if (!iupStrToFloat(value, &posx))
+ return 1;
+
+ xmin = iupAttribGetFloat(ih, "XMIN");
+ xmax = iupAttribGetFloat(ih, "XMAX");
+ dx = iupAttribGetFloat(ih, "DX");
+
+ if (posx < xmin) posx = xmin;
+ if (posx > (xmax - dx)) posx = xmax - dx;
+ ih->data->posx = posx;
+
+ gtk_adjustment_set_value(sb_horiz, posx);
+ }
+ return 1;
+}
+
+static int gtkCanvasSetPosYAttrib(Ihandle* ih, const char *value)
+{
+ if (ih->data->sb & IUP_SB_VERT)
+ {
+ float posy, ymin, ymax, dy;
+ GtkAdjustment* sb_vert = gtk_scrolled_window_get_vadjustment(gtkCanvasGetScrolledWindow(ih));
+ if (!sb_vert) return 1;
+
+ if (!iupStrToFloat(value, &posy))
+ return 1;
+
+ ymin = iupAttribGetFloat(ih, "YMIN");
+ ymax = iupAttribGetFloat(ih, "YMAX");
+ dy = iupAttribGetFloat(ih, "DY");
+
+ if (posy < ymin) posy = ymin;
+ if (posy > (ymax - dy)) posy = ymax - dy;
+ ih->data->posy = posy;
+
+ gtk_adjustment_set_value(sb_vert, posy);
+ }
+ return 1;
+}
+
+static int gtkCanvasSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ GtkScrolledWindow* scrolled_window = gtkCanvasGetScrolledWindow(ih);
+ unsigned char r, g, b;
+
+ /* ignore given value, must use only from parent for the scrollbars */
+ char* parent_value = iupBaseNativeParentGetBgColor(ih);
+
+ if (iupStrToRGB(parent_value, &r, &g, &b))
+ {
+ GtkWidget* sb;
+
+ iupgtkBaseSetBgColor((GtkWidget*)scrolled_window, r, g, b);
+
+#if GTK_CHECK_VERSION(2, 8, 0)
+ sb = gtk_scrolled_window_get_hscrollbar(scrolled_window);
+ if (sb) iupgtkBaseSetBgColor(sb, r, g, b);
+ sb = gtk_scrolled_window_get_vscrollbar(scrolled_window);
+ if (sb) iupgtkBaseSetBgColor(sb, r, g, b);
+#endif
+ }
+
+ if (!IupGetCallback(ih, "ACTION"))
+ {
+ /* enable automatic double buffering */
+ gtk_widget_set_double_buffered(ih->handle, TRUE);
+ gtk_widget_set_double_buffered((GtkWidget*)scrolled_window, TRUE);
+ return iupdrvBaseSetBgColorAttrib(ih, value);
+ }
+ else
+ {
+ /* disable automatic double buffering */
+ gtk_widget_set_double_buffered(ih->handle, FALSE);
+ gtk_widget_set_double_buffered((GtkWidget*)scrolled_window, FALSE);
+ gdk_window_set_back_pixmap(ih->handle->window, NULL, FALSE);
+ iupAttribSetStr(ih, "_IUPGTK_NO_BGCOLOR", "1");
+ return 1;
+ }
+}
+
+static char* gtkCanvasGetDrawableAttrib(Ihandle* ih)
+{
+ return (char*)ih->handle->window;
+}
+
+static void gtkCanvasDummyLogFunc(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data)
+{
+ /* does nothing */
+ (void)log_domain;
+ (void)log_level;
+ (void)message;
+ (void)user_data;
+}
+
+static int gtkCanvasMapMethod(Ihandle* ih)
+{
+ GtkScrolledWindow* scrolled_window;
+ void* visual;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ ih->data->sb = iupBaseGetScrollbar(ih);
+
+ visual = (void*)IupGetAttribute(ih, "VISUAL"); /* defined by the OpenGL Canvas in X11 or NULL */
+ if (visual)
+ iupgtkPushVisualAndColormap(visual, (void*)iupAttribGet(ih, "COLORMAP"));
+
+ ih->handle = gtk_drawing_area_new();
+
+ if (visual)
+ gtk_widget_pop_colormap();
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ scrolled_window = (GtkScrolledWindow*)gtk_scrolled_window_new(NULL, NULL);
+ if (!scrolled_window)
+ return IUP_ERROR;
+
+ {
+ /* to avoid the "cannot add non scrollable widget" warning */
+#if GTK_CHECK_VERSION(2, 6, 0)
+ GLogFunc def_func = g_log_set_default_handler(gtkCanvasDummyLogFunc, NULL);
+#endif
+ gtk_container_add((GtkContainer*)scrolled_window, ih->handle);
+#if GTK_CHECK_VERSION(2, 6, 0)
+ g_log_set_default_handler(def_func, NULL);
+#endif
+ }
+
+ gtk_widget_show((GtkWidget*)scrolled_window);
+
+ iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)scrolled_window);
+
+ /* add to the parent, all GTK controls must call this. */
+ iupgtkBaseAddToParent(ih);
+
+ g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "key-release-event", G_CALLBACK(iupgtkKeyReleaseEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih);
+
+ g_signal_connect(G_OBJECT(ih->handle), "expose-event", G_CALLBACK(gtkCanvasExposeEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "button-press-event", G_CALLBACK(gtkCanvasButtonEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "button-release-event",G_CALLBACK(gtkCanvasButtonEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "motion-notify-event",G_CALLBACK(iupgtkMotionNotifyEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "scroll-event",G_CALLBACK(gtkCanvasScrollEvent), ih);
+
+#if GTK_CHECK_VERSION(2, 8, 0)
+ g_signal_connect(G_OBJECT(gtk_scrolled_window_get_hscrollbar(scrolled_window)), "change-value",G_CALLBACK(gtkCanvasHChangeValue), ih);
+ g_signal_connect(G_OBJECT(gtk_scrolled_window_get_vscrollbar(scrolled_window)), "change-value",G_CALLBACK(gtkCanvasVChangeValue), ih);
+#endif
+
+ /* To receive mouse events on a drawing area, you will need to enable them. */
+ gtk_widget_add_events(ih->handle, GDK_EXPOSURE_MASK|
+ GDK_POINTER_MOTION_MASK|GDK_BUTTON_MOTION_MASK|
+ GDK_BUTTON_PRESS_MASK|GDK_BUTTON_RELEASE_MASK|
+ GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK|
+ GDK_ENTER_NOTIFY_MASK|GDK_LEAVE_NOTIFY_MASK|
+ GDK_FOCUS_CHANGE_MASK|GDK_STRUCTURE_MASK);
+
+ /* To receive keyboard events, you will need to set the GTK_CAN_FOCUS flag on the drawing area. */
+ if (ih->iclass->is_interactive)
+ {
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ GTK_WIDGET_FLAGS(ih->handle) |= GTK_CAN_FOCUS;
+ }
+
+ if (iupAttribGetBoolean(ih, "BORDER"))
+ gtk_scrolled_window_set_shadow_type(scrolled_window, GTK_SHADOW_IN);
+ else
+ gtk_scrolled_window_set_shadow_type(scrolled_window, GTK_SHADOW_NONE);
+
+ gtk_widget_realize((GtkWidget*)scrolled_window);
+ gtk_widget_realize(ih->handle);
+
+ /* must be connected after realize or a RESIZE_CB will happen before MAP_CB
+ works only for the GtkDrawingArea. */
+ g_signal_connect(G_OBJECT(ih->handle), "configure-event", G_CALLBACK(gtkCanvasConfigureEvent), ih);
+
+ /* configure for DRAG&DROP */
+ if (IupGetCallback(ih, "DROPFILES_CB"))
+ iupAttribSetStr(ih, "DRAGDROP", "YES");
+
+ /* update a mnemonic in a label if necessary */
+ iupgtkUpdateMnemonic(ih);
+
+ /* configure scrollbar */
+ if (ih->data->sb)
+ {
+ GtkPolicyType hscrollbar_policy = GTK_POLICY_NEVER, vscrollbar_policy = GTK_POLICY_NEVER;
+ if (ih->data->sb & IUP_SB_HORIZ)
+ hscrollbar_policy = GTK_POLICY_AUTOMATIC;
+ if (ih->data->sb & IUP_SB_VERT)
+ vscrollbar_policy = GTK_POLICY_AUTOMATIC;
+ gtk_scrolled_window_set_policy(scrolled_window, hscrollbar_policy, vscrollbar_policy);
+ }
+ else
+ gtk_scrolled_window_set_policy(scrolled_window, GTK_POLICY_NEVER, GTK_POLICY_NEVER);
+
+ /* force the update of BGCOLOR here, to let derived classes ignore it if ACTION is defined */
+ gtkCanvasSetBgColorAttrib(ih, iupAttribGetStr(ih, "BGCOLOR"));
+
+ return IUP_NOERROR;
+}
+
+void iupdrvCanvasInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkCanvasMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkCanvasSetBgColorAttrib, "255 255 255", NULL, IUPAF_DEFAULT); /* force new default value */
+
+ /* IupCanvas only */
+ iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupgtkSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CURSOR", NULL, iupdrvBaseSetCursorAttrib, IUPAF_SAMEASSYSTEM, "ARROW", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DRAWSIZE", iupdrvBaseGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "DX", NULL, gtkCanvasSetDXAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "DY", NULL, gtkCanvasSetDYAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "POSX", iupCanvasGetPosXAttrib, gtkCanvasSetPosXAttrib, "0.0", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "POSY", iupCanvasGetPosYAttrib, gtkCanvasSetPosYAttrib, "0.0", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "XAUTOHIDE", NULL, gtkCanvasSetXAutoHideAttrib, "YES", NULL, IUPAF_DEFAULT); /* force new default value */
+ iupClassRegisterAttribute(ic, "YAUTOHIDE", NULL, gtkCanvasSetYAutoHideAttrib, "YES", NULL, IUPAF_DEFAULT); /* force new default value */
+
+ iupClassRegisterAttribute(ic, "DRAWABLE", gtkCanvasGetDrawableAttrib, NULL, NULL, NULL, IUPAF_NO_STRING);
+ //iupClassRegisterAttribute(ic, "CD_GDK", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+
+ /* IupCanvas Windows or X only */
+#ifdef WIN32
+ iupClassRegisterAttribute(ic, "HWND", iupgtkGetNativeWindowHandle, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_NO_INHERIT);
+#else
+ iupClassRegisterAttribute(ic, "XWINDOW", iupgtkGetNativeWindowHandle, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "XDISPLAY", (IattribGetFunc)iupdrvGetDisplay, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+#endif
+}
+
diff --git a/iup/src/gtk/iupgtk_clipboard.c b/iup/src/gtk/iupgtk_clipboard.c
new file mode 100755
index 0000000..f07a3e6
--- /dev/null
+++ b/iup/src/gtk/iupgtk_clipboard.c
@@ -0,0 +1,125 @@
+/** \file
+ * \brief Clipboard for the GTK Driver.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <gtk/gtk.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_image.h"
+
+#include "iupgtk_drv.h"
+
+
+static int gtkClipboardSetTextAttrib(Ihandle *ih, const char *value)
+{
+ GtkClipboard *clipboard = gtk_clipboard_get_for_display(gdk_display_get_default(), gdk_atom_intern("CLIPBOARD", FALSE));
+ gtk_clipboard_set_text(clipboard, value, -1);
+ (void)ih;
+ return 0;
+}
+
+static char* gtkClipboardGetTextAttrib(Ihandle *ih)
+{
+ GtkClipboard *clipboard = gtk_clipboard_get(gdk_atom_intern("CLIPBOARD", FALSE));
+ (void)ih;
+ return iupgtkStrConvertFromUTF8(gtk_clipboard_wait_for_text(clipboard));
+}
+
+static int gtkClipboardSetImageAttrib(Ihandle *ih, const char *value)
+{
+#if GTK_CHECK_VERSION(2, 6, 0)
+ GtkClipboard *clipboard = gtk_clipboard_get (gdk_atom_intern("CLIPBOARD", FALSE));
+ GdkPixbuf *pixbuf = (GdkPixbuf*)iupImageGetImage(value, ih, 0);
+ if (pixbuf)
+ gtk_clipboard_set_image (clipboard, pixbuf);
+#endif
+ return 0;
+}
+
+static int gtkClipboardSetNativeImageAttrib(Ihandle *ih, const char *value)
+{
+#if GTK_CHECK_VERSION(2, 6, 0)
+ GtkClipboard *clipboard;
+ (void)ih;
+
+ if (!value)
+ return 0;
+
+ clipboard = gtk_clipboard_get (gdk_atom_intern("CLIPBOARD", FALSE));
+
+ gtk_clipboard_set_image (clipboard, (GdkPixbuf*)value);
+#endif
+ return 0;
+}
+
+static char* gtkClipboardGetNativeImageAttrib(Ihandle *ih)
+{
+#if GTK_CHECK_VERSION(2, 6, 0)
+ GtkClipboard *clipboard = gtk_clipboard_get (gdk_atom_intern("CLIPBOARD", FALSE));
+ (void)ih;
+ return (char*)gtk_clipboard_wait_for_image (clipboard);
+#else
+ return NULL;
+#endif
+}
+
+static char* gtkClipboardGetTextAvailableAttrib(Ihandle *ih)
+{
+ GtkClipboard *clipboard = gtk_clipboard_get (gdk_atom_intern("CLIPBOARD", FALSE));
+ (void)ih;
+ if (gtk_clipboard_wait_is_text_available(clipboard))
+ return "YES";
+ else
+ return "NO";
+}
+
+static char* gtkClipboardGetImageAvailableAttrib(Ihandle *ih)
+{
+#if GTK_CHECK_VERSION(2, 6, 0)
+ GtkClipboard *clipboard = gtk_clipboard_get (gdk_atom_intern("CLIPBOARD", FALSE));
+ (void)ih;
+ if (gtk_clipboard_wait_is_image_available(clipboard))
+ return "YES";
+ else
+ return "NO";
+#else
+ return NULL;
+#endif
+}
+
+/******************************************************************************/
+
+Ihandle* IupClipboard(void)
+{
+ return IupCreate("clipboard");
+}
+
+Iclass* iupClipboardGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "clipboard";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ /* Attribute functions */
+ iupClassRegisterAttribute(ic, "TEXT", gtkClipboardGetTextAttrib, gtkClipboardSetTextAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "NATIVEIMAGE", gtkClipboardGetNativeImageAttrib, gtkClipboardSetNativeImageAttrib, NULL, NULL, IUPAF_NO_STRING|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, gtkClipboardSetImageAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TEXTAVAILABLE", gtkClipboardGetTextAvailableAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGEAVAILABLE", gtkClipboardGetImageAvailableAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
diff --git a/iup/src/gtk/iupgtk_colordlg.c b/iup/src/gtk/iupgtk_colordlg.c
new file mode 100755
index 0000000..9177f91
--- /dev/null
+++ b/iup/src/gtk/iupgtk_colordlg.c
@@ -0,0 +1,211 @@
+/** \file
+ * \brief IupColorDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+
+#include <string.h>
+#include <memory.h>
+#include <stdio.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_dialog.h"
+
+#include "iupgtk_drv.h"
+
+
+static char* gtkColorDlgPaletteToString(const char* palette)
+{
+ char iup_str[20], *gtk_str, *palette_p;
+ char* str = iupStrGetMemory(300);
+ int off = 0, inc;
+ GdkColor color;
+
+ gtk_str = iupStrDup(palette);
+ iupStrReplace(gtk_str, ':', 0);
+
+ while (palette && *palette)
+ {
+ if (!gdk_color_parse (gtk_str, &color))
+ return NULL;
+
+ inc = sprintf(iup_str, "%d %d %d;", (int)iupCOLOR16TO8(color.red), (int)iupCOLOR16TO8(color.green), (int)iupCOLOR16TO8(color.blue));
+ memcpy(str+off, iup_str, inc);
+ off += inc;
+ palette_p = strchr(palette, ':');
+ if (palette_p)
+ {
+ palette_p++;
+ gtk_str += palette_p-palette;
+ }
+ palette = palette_p;
+ }
+ str[off-1] = 0; /* remove last separator */
+ return str;
+}
+
+static void gtkColorDlgGetPalette(Ihandle* ih, GtkColorSelection* colorsel)
+{
+ char *palette, *str;
+
+ GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(colorsel));
+ g_object_get(settings, "gtk-color-palette", &palette, NULL);
+
+ str = gtkColorDlgPaletteToString(palette);
+ if (str) iupAttribStoreStr(ih, "COLORTABLE", str);
+ g_free(palette);
+}
+
+static char* gtkColorDlgStringToPalette(const char* str)
+{
+ char gtk_str[20];
+ char* palette = iupStrGetMemory(200);
+ int off = 0;
+ unsigned char r, g, b;
+
+ while (str && *str)
+ {
+ if (!iupStrToRGB(str, &r, &g, &b))
+ return NULL;
+
+ sprintf(gtk_str, "#%02X%02X%02X:", (int)r, (int)g, (int)b);
+ memcpy(palette+off, gtk_str, 8);
+ off += 8;
+ str = strchr(str, ';');
+ if (str) str++;
+ }
+ palette[off-1] = 0; /* remove last separator */
+ return palette;
+}
+
+static void gtkColorDlgSetPalette(GtkColorSelection* colorsel, char* str)
+{
+ GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(colorsel));
+ gchar* palette = gtkColorDlgStringToPalette(str);
+ if (palette)
+ gtk_settings_set_string_property(settings,
+ "gtk-color-palette",
+ palette,
+ "gtk_color_selection_palette_to_string");
+}
+
+static int gtkColorDlgPopup(Ihandle* ih, int x, int y)
+{
+ InativeHandle* parent = iupDialogGetNativeParent(ih);
+ GtkColorSelectionDialog* dialog;
+ GtkColorSelection* colorsel;
+ GdkColor color;
+ char *value;
+ unsigned char r = 0, g = 0, b = 0, a = 255;
+ int response, ret;
+
+ iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */
+ iupAttribSetInt(ih, "_IUPDLG_Y", y);
+
+ dialog = (GtkColorSelectionDialog*)gtk_color_selection_dialog_new(iupgtkStrConvertToUTF8(iupAttribGet(ih, "TITLE")));
+ if (!dialog)
+ return IUP_ERROR;
+
+ if (parent)
+ gtk_window_set_transient_for((GtkWindow*)dialog, (GtkWindow*)parent);
+
+ ret = iupStrToRGBA(iupAttribGet(ih, "VALUE"), &r, &g, &b, &a);
+
+ colorsel = (GtkColorSelection*)dialog->colorsel;
+ iupgdkColorSet(&color, r, g, b);
+ gtk_color_selection_set_current_color(colorsel, &color);
+
+ value = iupAttribGetStr(ih, "ALPHA");
+ if (value)
+ {
+ int alpha;
+ if (iupStrToInt(value, &alpha))
+ {
+ if (alpha<0) alpha=0;
+ if (alpha>255) alpha=255;
+ gtk_color_selection_set_has_opacity_control(colorsel, TRUE);
+ gtk_color_selection_set_current_alpha(colorsel, iupCOLOR8TO16(alpha));
+ }
+ }
+ else if (iupAttribGetBoolean(ih, "SHOWALPHA") || ret == 4)
+ {
+ gtk_color_selection_set_has_opacity_control(colorsel, TRUE);
+ gtk_color_selection_set_current_alpha(colorsel, iupCOLOR8TO16(a));
+ }
+ else
+ gtk_color_selection_set_has_opacity_control(colorsel, FALSE);
+
+ value = iupAttribGetStr(ih, "COLORTABLE");
+ if (value)
+ {
+ gtk_color_selection_set_has_palette (colorsel, TRUE);
+ gtkColorDlgSetPalette(colorsel, value);
+ }
+ else if (iupAttribGetBoolean(ih, "SHOWCOLORTABLE"))
+ gtk_color_selection_set_has_palette (colorsel, TRUE);
+ else
+ gtk_color_selection_set_has_palette (colorsel, FALSE);
+
+ if (IupGetCallback(ih, "HELP_CB"))
+ gtk_widget_show(dialog->help_button);
+
+ /* initialize the widget */
+ gtk_widget_realize(GTK_WIDGET(dialog));
+
+ ih->handle = GTK_WIDGET(dialog);
+ iupDialogUpdatePosition(ih);
+ ih->handle = NULL;
+
+ do
+ {
+ response = gtk_dialog_run(GTK_DIALOG(dialog));
+
+ if (response == GTK_RESPONSE_HELP)
+ {
+ Icallback cb = IupGetCallback(ih, "HELP_CB");
+ if (cb && cb(ih) == IUP_CLOSE)
+ response = GTK_RESPONSE_CANCEL;
+ }
+ } while (response == GTK_RESPONSE_HELP);
+
+ if (response == GTK_RESPONSE_OK)
+ {
+ GdkColor color;
+ gtk_color_selection_get_current_color(colorsel, &color);
+ IupSetAttribute(ih, "STATUS", "1");
+
+ if (gtk_color_selection_get_has_opacity_control(colorsel))
+ {
+ int alpha = gtk_color_selection_get_current_alpha(colorsel);
+ iupAttribSetInt(ih, "ALPHA", (int)iupCOLOR16TO8(alpha));
+ iupAttribSetStrf(ih, "VALUE", "%d %d %d %d", (int)iupCOLOR16TO8(color.red), (int)iupCOLOR16TO8(color.green), (int)iupCOLOR16TO8(color.blue), (int)iupCOLOR16TO8(alpha));
+ }
+ else
+ iupAttribSetStrf(ih, "VALUE", "%d %d %d", (int)iupCOLOR16TO8(color.red), (int)iupCOLOR16TO8(color.green), (int)iupCOLOR16TO8(color.blue));
+
+ if (gtk_color_selection_get_has_palette(colorsel))
+ gtkColorDlgGetPalette(ih, colorsel);
+ }
+ else
+ {
+ iupAttribSetStr(ih, "ALPHA", NULL);
+ iupAttribSetStr(ih, "VALUE", NULL);
+ iupAttribSetStr(ih, "COLORTABLE", NULL);
+ iupAttribSetStr(ih, "STATUS", NULL);
+ }
+
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+
+ return IUP_NOERROR;
+}
+
+void iupdrvColorDlgInitClass(Iclass* ic)
+{
+ ic->DlgPopup = gtkColorDlgPopup;
+}
diff --git a/iup/src/gtk/iupgtk_common.c b/iup/src/gtk/iupgtk_common.c
new file mode 100755
index 0000000..40368f2
--- /dev/null
+++ b/iup/src/gtk/iupgtk_common.c
@@ -0,0 +1,830 @@
+/** \file
+ * \brief GTK Base Functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+
+#include <gtk/gtk.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_key.h"
+#include "iup_str.h"
+#include "iup_class.h"
+#include "iup_attrib.h"
+#include "iup_focus.h"
+#include "iup_key.h"
+#include "iup_image.h"
+#include "iup_drv.h"
+
+#include "iupgtk_drv.h"
+
+
+/* WARNING: in GTK there are many controls that are not native windows,
+ so "->window" will NOT return a native window exclusive of that control,
+ in fact it can return a base native window shared by many controls.
+ IupCanvas is a special case that uses an exclusive native window. */
+
+/* GTK only has abssolute positioning using a GtkFixed container,
+ so all elements returned by iupChildTreeGetNativeParentHandle should be a GtkFixed.
+ If not looks in the native parent. */
+static GtkFixed* gtkGetFixedParent(Ihandle* ih)
+{
+ GtkWidget* widget = iupChildTreeGetNativeParentHandle(ih);
+ while (widget && !GTK_IS_FIXED(widget))
+ widget = gtk_widget_get_parent(widget);
+ return (GtkFixed*)widget;
+}
+
+void iupgtkUpdateMnemonic(Ihandle* ih)
+{
+ GtkLabel* label = (GtkLabel*)iupAttribGet(ih, "_IUPGTK_LABELMNEMONIC");
+ if (label) gtk_label_set_mnemonic_widget(label, ih->handle);
+}
+
+void iupdrvActivate(Ihandle* ih)
+{
+ gtk_widget_activate(ih->handle);
+}
+
+void iupdrvReparent(Ihandle* ih)
+{
+ GtkFixed* fixed = gtkGetFixedParent(ih);
+ GtkWidget* widget = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (!widget) widget = ih->handle;
+ gtk_widget_reparent(widget, (GtkWidget*)fixed);
+}
+
+void iupgtkBaseAddToParent(Ihandle* ih)
+{
+ GtkFixed* fixed = gtkGetFixedParent(ih);
+ GtkWidget* widget = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (!widget) widget = ih->handle;
+
+ gtk_fixed_put(fixed, widget, 0, 0);
+}
+
+void iupdrvBaseLayoutUpdateMethod(Ihandle *ih)
+{
+ GtkFixed* fixed = gtkGetFixedParent(ih);
+ GtkWidget* widget = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (!widget) widget = ih->handle;
+
+ gtk_fixed_move(fixed, widget, ih->x, ih->y);
+ gtk_widget_set_size_request(widget, ih->currentwidth, ih->currentheight);
+}
+
+void iupdrvBaseUnMapMethod(Ihandle* ih)
+{
+ GtkWidget* widget = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (!widget) widget = ih->handle;
+ gtk_widget_unrealize(widget);
+ gtk_widget_destroy(widget); /* To match the call to gtk_*****_new */
+}
+
+void iupdrvDisplayUpdate(Ihandle *ih)
+{
+ /* Post a REDRAW */
+ gtk_widget_queue_draw(ih->handle);
+}
+
+void iupdrvDisplayRedraw(Ihandle *ih)
+{
+ GdkWindow* window = ih->handle->window;
+ /* Post a REDRAW */
+ gtk_widget_queue_draw(ih->handle);
+ /* Force a REDRAW */
+ if (window)
+ gdk_window_process_updates(window, FALSE);
+}
+
+void iupdrvScreenToClient(Ihandle* ih, int *x, int *y)
+{
+ gint win_x = 0, win_y = 0;
+ GdkWindow* window = ih->handle->window;
+ if (window)
+ gdk_window_get_origin(window, &win_x, &win_y);
+ *x = *x - win_x;
+ *y = *y - win_y;
+}
+
+gboolean iupgtkShowHelp(GtkWidget *widget, GtkWidgetHelpType *arg1, Ihandle *ih)
+{
+ Icallback cb;
+ (void)widget;
+ (void)arg1;
+
+ cb = IupGetCallback(ih, "HELP_CB");
+ if (cb && cb(ih) == IUP_CLOSE)
+ IupExitLoop();
+
+ return FALSE;
+}
+
+gboolean iupgtkEnterLeaveEvent(GtkWidget *widget, GdkEventCrossing *evt, Ihandle *ih)
+{
+ Icallback cb = NULL;
+ (void)widget;
+
+ if (evt->type == GDK_ENTER_NOTIFY)
+ cb = IupGetCallback(ih, "ENTERWINDOW_CB");
+ else if (evt->type == GDK_LEAVE_NOTIFY)
+ cb = IupGetCallback(ih, "LEAVEWINDOW_CB");
+
+ if (cb)
+ cb(ih);
+
+ return FALSE;
+}
+
+int iupgtkSetMnemonicTitle(Ihandle* ih, GtkLabel* label, const char* value)
+{
+ char c = '_';
+ char* str;
+
+ if (!value)
+ value = "";
+
+ str = iupStrProcessMnemonic(value, &c, 1); /* replace & by c, the returned value of c is ignored in GTK */
+ if (str != value)
+ {
+ gtk_label_set_text_with_mnemonic(label, iupgtkStrConvertToUTF8(str));
+ free(str);
+ return 1;
+ }
+ else
+ {
+ if (iupAttribGetBoolean(ih, "MARKUP"))
+ gtk_label_set_markup(label, iupgtkStrConvertToUTF8(str));
+ else
+ gtk_label_set_text(label, iupgtkStrConvertToUTF8(str));
+ }
+ return 0;
+}
+
+int iupdrvBaseSetZorderAttrib(Ihandle* ih, const char* value)
+{
+ if (iupdrvIsVisible(ih))
+ {
+ GdkWindow* window = ih->handle->window;
+ if (iupStrEqualNoCase(value, "TOP"))
+ gdk_window_raise(window);
+ else
+ gdk_window_lower(window);
+ }
+
+ return 0;
+}
+
+void iupdrvSetVisible(Ihandle* ih, int visible)
+{
+ GtkWidget* container = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (visible)
+ {
+ if (container) gtk_widget_show(container);
+ gtk_widget_show(ih->handle);
+ }
+ else
+ {
+ if (container) gtk_widget_hide(container);
+ gtk_widget_hide(ih->handle);
+ }
+}
+
+int iupdrvIsVisible(Ihandle* ih)
+{
+ if (GTK_WIDGET_VISIBLE(ih->handle))
+ {
+ /* if marked as visible, since we use gtk_widget_hide and NOT gtk_widget_hide_all
+ must check its parents. */
+ Ihandle* parent = ih->parent;
+ while (parent)
+ {
+ if (parent->iclass->nativetype != IUP_TYPEVOID)
+ {
+ if (!GTK_WIDGET_VISIBLE(parent->handle))
+ return 0;
+ }
+
+ parent = parent->parent;
+ }
+ return 1;
+ }
+ else
+ return 0;
+}
+
+int iupdrvIsActive(Ihandle *ih)
+{
+ return (GTK_WIDGET_IS_SENSITIVE(ih->handle));
+}
+
+void iupdrvSetActive(Ihandle* ih, int enable)
+{
+ GtkWidget* container = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (container) gtk_widget_set_sensitive(container, enable);
+ gtk_widget_set_sensitive(ih->handle, enable);
+}
+
+char* iupdrvBaseGetXAttrib(Ihandle *ih)
+{
+ GdkWindow* window = ih->handle->window;
+ GtkWidget* container = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (container) window = container->window;
+
+ if (window)
+ {
+ char* str = iupStrGetMemory(20);
+ int x, y;
+ gdk_window_get_origin(window, &x, &y);
+ x += ih->handle->allocation.x;
+ sprintf(str, "%d", x);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+char* iupdrvBaseGetYAttrib(Ihandle *ih)
+{
+ GdkWindow* window = ih->handle->window;
+ GtkWidget* container = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (container) window = container->window;
+
+ if (window)
+ {
+ char* str = iupStrGetMemory(20);
+ int x, y;
+ gdk_window_get_origin(window, &x, &y);
+ y += ih->handle->allocation.y;
+ sprintf(str, "%d", y);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+char* iupdrvBaseGetClientSizeAttrib(Ihandle *ih)
+{
+ char* str = iupStrGetMemory(20);
+ int w, h;
+ GdkWindow* window = ih->handle->window;
+
+ if (window)
+ gdk_drawable_get_size(window, &w, &h);
+ else
+ return NULL;
+
+ sprintf(str, "%dx%d", w, h);
+ return str;
+}
+
+static GdkColor gtkDarkerColor(GdkColor *color)
+{
+ GdkColor dark_color = {0L,0,0,0};
+
+ dark_color.red = (color->red*9)/10;
+ dark_color.green = (color->green*9)/10;
+ dark_color.blue = (color->blue*9)/10;
+
+ return dark_color;
+}
+
+static guint16 gtkCROP16(int x)
+{
+ if (x > 65535) return 65535;
+ return (guint16)x;
+}
+
+static GdkColor gtkLighterColor(GdkColor *color)
+{
+ GdkColor light_color = {0L,0,0,0};
+
+ light_color.red = gtkCROP16(((int)color->red*11)/10);
+ light_color.green = gtkCROP16(((int)color->green*11)/10);
+ light_color.blue = gtkCROP16(((int)color->blue*11)/10);
+
+ return light_color;
+}
+
+void iupgtkBaseSetBgColor(InativeHandle* handle, unsigned char r, unsigned char g, unsigned char b)
+{
+ GtkRcStyle *rc_style;
+ GdkColor color;
+
+ iupgdkColorSet(&color, r, g, b);
+
+ rc_style = gtk_widget_get_modifier_style(handle);
+ rc_style->base[GTK_STATE_NORMAL] = rc_style->bg[GTK_STATE_NORMAL] = rc_style->bg[GTK_STATE_INSENSITIVE] = color;
+ rc_style->bg[GTK_STATE_ACTIVE] = rc_style->base[GTK_STATE_ACTIVE] = gtkDarkerColor(&color);
+ rc_style->base[GTK_STATE_PRELIGHT] = rc_style->bg[GTK_STATE_PRELIGHT] = rc_style->base[GTK_STATE_INSENSITIVE] = gtkLighterColor(&color);
+
+ rc_style->color_flags[GTK_STATE_NORMAL] |= GTK_RC_BASE | GTK_RC_BG;
+ rc_style->color_flags[GTK_STATE_ACTIVE] |= GTK_RC_BASE | GTK_RC_BG;
+ rc_style->color_flags[GTK_STATE_PRELIGHT] |= GTK_RC_BASE | GTK_RC_BG;
+ rc_style->color_flags[GTK_STATE_INSENSITIVE] |= GTK_RC_BASE | GTK_RC_BG;
+
+ gtk_widget_modify_style(handle, rc_style);
+}
+
+int iupdrvBaseSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ iupgtkBaseSetBgColor(ih->handle, r, g, b);
+
+ /* DO NOT NEED TO UPDATE GTK IMAGES SINCE THEY DO NOT DEPEND ON BGCOLOR */
+
+ return 1;
+}
+
+void iupgtkBaseSetFgGdkColor(InativeHandle* handle, GdkColor *color)
+{
+ GtkRcStyle *rc_style;
+
+ rc_style = gtk_widget_get_modifier_style(handle);
+ rc_style->fg[GTK_STATE_ACTIVE] = rc_style->fg[GTK_STATE_NORMAL] = rc_style->fg[GTK_STATE_PRELIGHT] = *color;
+ rc_style->text[GTK_STATE_ACTIVE] = rc_style->text[GTK_STATE_NORMAL] = rc_style->text[GTK_STATE_PRELIGHT] = *color;
+ rc_style->color_flags[GTK_STATE_NORMAL] |= GTK_RC_TEXT | GTK_RC_FG;
+ rc_style->color_flags[GTK_STATE_ACTIVE] |= GTK_RC_TEXT | GTK_RC_FG;
+ rc_style->color_flags[GTK_STATE_PRELIGHT] |= GTK_RC_TEXT | GTK_RC_FG;
+
+ /* do not set at CHILD_CONTAINER */
+ gtk_widget_modify_style(handle, rc_style);
+}
+
+void iupgtkBaseSetFgColor(InativeHandle* handle, unsigned char r, unsigned char g, unsigned char b)
+{
+ GdkColor color;
+ iupgdkColorSet(&color, r, g, b);
+ iupgtkBaseSetFgGdkColor(handle, &color);
+}
+
+int iupdrvBaseSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ iupgtkBaseSetFgColor(ih->handle, r, g, b);
+
+ return 1;
+}
+
+static GdkCursor* gtkEmptyCursor(Ihandle* ih)
+{
+ /* creates an empty cursor */
+ GdkColor cursor_color = {0L,0,0,0};
+ char bitsnull[1] = {0x00};
+
+ GdkWindow* window = ih->handle->window;
+ GdkPixmap* pixmapnull = gdk_bitmap_create_from_data(
+ (GdkDrawable*)window,
+ bitsnull,
+ 1,1);
+ GdkCursor* cur = gdk_cursor_new_from_pixmap(
+ pixmapnull,
+ pixmapnull,
+ &cursor_color,
+ &cursor_color,
+ 0,0);
+
+ g_object_unref(pixmapnull);
+
+ return cur;
+}
+
+static GdkCursor* gtkGetCursor(Ihandle* ih, const char* name)
+{
+ static struct {
+ const char* iupname;
+ int sysname;
+ } table[] = {
+ { "NONE", 0},
+ { "NULL", 0},
+ { "ARROW", GDK_LEFT_PTR},
+ { "BUSY", GDK_WATCH},
+ { "CROSS", GDK_CROSSHAIR},
+ { "HAND", GDK_HAND2},
+ { "HELP", GDK_QUESTION_ARROW},
+ { "IUP", GDK_QUESTION_ARROW},
+ { "MOVE", GDK_FLEUR},
+ { "PEN", GDK_PENCIL},
+ { "RESIZE_N", GDK_TOP_SIDE},
+ { "RESIZE_S", GDK_BOTTOM_SIDE},
+ { "RESIZE_NS", GDK_SB_V_DOUBLE_ARROW},
+ { "RESIZE_W", GDK_LEFT_SIDE},
+ { "RESIZE_E", GDK_RIGHT_SIDE},
+ { "RESIZE_WE", GDK_SB_H_DOUBLE_ARROW},
+ { "RESIZE_NE", GDK_TOP_RIGHT_CORNER},
+ { "RESIZE_SE", GDK_BOTTOM_RIGHT_CORNER},
+ { "RESIZE_NW", GDK_TOP_LEFT_CORNER},
+ { "RESIZE_SW", GDK_BOTTOM_LEFT_CORNER},
+ { "TEXT", GDK_XTERM},
+ { "UPARROW", GDK_CENTER_PTR}
+ };
+
+ GdkCursor* cur;
+ char str[50];
+ int i, count = sizeof(table)/sizeof(table[0]);
+
+ /* check the cursor cache first (per control)*/
+ sprintf(str, "_IUPGTK_CURSOR_%s", name);
+ cur = (GdkCursor*)iupAttribGet(ih, str);
+ if (cur)
+ return cur;
+
+ /* check the pre-defined IUP names first */
+ for (i = 0; i < count; i++)
+ {
+ if (iupStrEqualNoCase(name, table[i].iupname))
+ {
+ if (table[i].sysname)
+ cur = gdk_cursor_new(table[i].sysname);
+ else
+ cur = gtkEmptyCursor(ih);
+
+ break;
+ }
+ }
+
+ if (i == count)
+ {
+ /* check for a name defined cursor */
+ cur = iupImageGetCursor(name);
+ }
+
+ /* save the cursor in cache */
+ iupAttribSetStr(ih, str, (char*)cur);
+
+ return cur;
+}
+
+int iupdrvBaseSetCursorAttrib(Ihandle* ih, const char* value)
+{
+ GdkCursor* cur = gtkGetCursor(ih, value);
+ if (cur)
+ {
+ GdkWindow* window = ih->handle->window;
+ if (window)
+ gdk_window_set_cursor(window, cur);
+ return 1;
+ }
+ return 0;
+}
+
+void iupgdkColorSet(GdkColor* color, unsigned char r, unsigned char g, unsigned char b)
+{
+ color->red = iupCOLOR8TO16(r);
+ color->green = iupCOLOR8TO16(g);
+ color->blue = iupCOLOR8TO16(b);
+ color->pixel = 0;
+}
+
+static void gtkDragDataReceived(GtkWidget* w, GdkDragContext* context, int x, int y,
+ GtkSelectionData* seldata, guint info, guint time, Ihandle* ih)
+{
+ gchar **uris = NULL;
+ int i, count;
+
+ IFnsiii cb = (IFnsiii)IupGetCallback(ih, "DROPFILES_CB");
+ if (!cb) return;
+
+#if GTK_CHECK_VERSION(2, 6, 0)
+ uris = g_uri_list_extract_uris((char*)seldata->data);
+#endif
+
+ if (!uris)
+ return;
+
+ count = 0;
+ while (uris[count])
+ count++;
+
+ for (i=0; i<count; i++)
+ {
+ char* filename = uris[i];
+ if (iupStrEqualPartial(filename, "file://"))
+ {
+ filename += strlen("file://");
+ if (filename[2] == ':') /* in Windows there is an extra '/' at the begining. */
+ filename++;
+ }
+ if (cb(ih, filename, count-i-1, x, y) == IUP_IGNORE)
+ break;
+ }
+
+ g_strfreev (uris);
+ (void)time;
+ (void)info;
+ (void)w;
+ (void)context;
+}
+
+int iupgtkSetDragDropAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ {
+ GtkTargetEntry dragtypes[] = { { "text/uri-list", 0, 0 } };
+ gtk_drag_dest_set(ih->handle, GTK_DEST_DEFAULT_ALL, dragtypes,
+ sizeof(dragtypes) / sizeof(dragtypes[0]), GDK_ACTION_COPY);
+ g_signal_connect(G_OBJECT(ih->handle), "drag_data_received", G_CALLBACK(gtkDragDataReceived), ih);
+ }
+ else
+ {
+ gtk_drag_dest_unset(ih->handle);
+ }
+ return 1;
+}
+
+int iupdrvGetScrollbarSize(void)
+{
+ static int size = 0;
+
+ if (size == 0)
+ {
+ GtkRequisition requisition;
+ GtkWidget* win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ GtkWidget* sb = gtk_vscrollbar_new(NULL);
+ gtk_container_add((GtkContainer*)win, sb);
+ gtk_widget_realize(win);
+ gtk_widget_size_request(sb, &requisition);
+ size = requisition.width;
+ gtk_widget_destroy(win);
+ }
+
+ return size;
+}
+
+void iupdrvDrawFocusRect(Ihandle* ih, void* _gc, int x, int y, int w, int h)
+{
+ GdkWindow* window = ih->handle->window;
+ GtkStyle *style = gtk_widget_get_style(ih->handle);
+ (void)_gc;
+
+ gtk_paint_focus(style, window, GTK_WIDGET_STATE(ih->handle), NULL, ih->handle, NULL, x, y, w, h);
+}
+
+void iupdrvBaseRegisterCommonAttrib(Iclass* ic)
+{
+#ifdef WIN32
+ iupClassRegisterAttribute(ic, "HFONT", iupgtkGetFontIdAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+#else
+ iupClassRegisterAttribute(ic, "XFONTID", iupgtkGetFontIdAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+#endif
+ iupClassRegisterAttribute(ic, "PANGOFONTDESC", iupgtkGetPangoFontDescAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+}
+
+static int gtkStrIsAscii(const char* str)
+{
+ while(*str)
+ {
+ int c = *str;
+ if (c < 0)
+ return 0;
+ str++;
+ }
+ return 1;
+}
+
+static char* gtkStrToUTF8(const char *str, const char* charset)
+{
+ return g_convert(str, -1, "UTF-8", charset, NULL, NULL, NULL);
+}
+
+static char* gtkStrFromUTF8(const char *str, const char* charset)
+{
+ return g_convert(str, -1, charset, "UTF-8", NULL, NULL, NULL);
+}
+
+static char* gktLastConvertUTF8 = NULL;
+
+void iupgtkReleaseConvertUTF8(void)
+{
+ if (gktLastConvertUTF8)
+ g_free(gktLastConvertUTF8);
+}
+
+char* iupgtkStrConvertToUTF8(const char* str) /* From IUP to GTK */
+{
+ if (!str || *str == 0)
+ return (char*)str;
+
+ if (iupgtk_utf8autoconvert) /* this means str is in current locale */
+ {
+ const char *charset = NULL;
+ if (g_get_charset(&charset)==TRUE) /* current locale is already UTF-8 */
+ {
+ if (g_utf8_validate(str, -1, NULL))
+ return (char*)str;
+ else
+ {
+ if (gktLastConvertUTF8)
+ g_free(gktLastConvertUTF8);
+ gktLastConvertUTF8 = gtkStrToUTF8(str, "ISO8859-1"); /* if string is not UTF-8, assume ISO8859-1 */
+ if (!gktLastConvertUTF8) return (char*)str;
+ return gktLastConvertUTF8;
+ }
+ }
+ else
+ {
+ if (gtkStrIsAscii(str) || !charset)
+ return (char*)str;
+ else if (charset)
+ {
+ if (gktLastConvertUTF8)
+ g_free(gktLastConvertUTF8);
+ gktLastConvertUTF8 = gtkStrToUTF8(str, charset);
+ if (!gktLastConvertUTF8) return (char*)str;
+ return gktLastConvertUTF8;
+ }
+ }
+ }
+ return (char*)str;
+}
+
+char* iupgtkStrConvertFromUTF8(const char* str) /* From GTK to IUP */
+{
+ if (!str || *str == 0)
+ return (char*)str;
+
+ if (iupgtk_utf8autoconvert) /* this means str is in current locale */
+ {
+ const gchar *charset = NULL;
+ if (g_get_charset(&charset)==TRUE) /* current locale is already UTF-8 */
+ {
+ if (g_utf8_validate(str, -1, NULL))
+ return (char*)str;
+ else
+ {
+ if (gktLastConvertUTF8)
+ g_free(gktLastConvertUTF8);
+ gktLastConvertUTF8 = gtkStrFromUTF8(str, "ISO8859-1"); /* if string is not UTF-8, assume ISO8859-1 */
+ if (!gktLastConvertUTF8) return (char*)str;
+ return gktLastConvertUTF8;
+ }
+ }
+ else
+ {
+ if (gtkStrIsAscii(str) || !charset)
+ return (char*)str;
+ else if (charset)
+ {
+ if (gktLastConvertUTF8)
+ g_free(gktLastConvertUTF8);
+ gktLastConvertUTF8 = gtkStrFromUTF8(str, charset);
+ if (!gktLastConvertUTF8) return (char*)str;
+ return gktLastConvertUTF8;
+ }
+ }
+ }
+ return (char*)str;
+}
+
+static gboolean gtkGetFilenameCharset(const gchar **filename_charset)
+{
+ const gchar **charsets = NULL;
+ gboolean is_utf8 = FALSE;
+
+#if GTK_CHECK_VERSION(2, 6, 0)
+ is_utf8 = g_get_filename_charsets (&charsets);
+#endif
+
+ if (filename_charset && charsets)
+ *filename_charset = charsets[0];
+
+ return is_utf8;
+}
+
+char* iupgtkStrConvertToFilename(const char* str) /* From IUP to Filename */
+{
+ if (!str || *str == 0)
+ return (char*)str;
+
+ if (iupgtk_utf8autoconvert) /* this means str is in current locale */
+ return (char*)str;
+ else
+ {
+ const gchar *charset = NULL;
+ if (gtkGetFilenameCharset(&charset)==TRUE) /* current locale is already UTF-8 */
+ {
+ if (g_utf8_validate(str, -1, NULL))
+ return (char*)str;
+ else
+ {
+ if (gktLastConvertUTF8)
+ g_free(gktLastConvertUTF8);
+ gktLastConvertUTF8 = gtkStrFromUTF8(str, "ISO8859-1"); /* if string is not UTF-8, assume ISO8859-1 */
+ if (!gktLastConvertUTF8) return (char*)str;
+ return gktLastConvertUTF8;
+ }
+ }
+ else
+ {
+ if (gtkStrIsAscii(str) || !charset)
+ return (char*)str;
+ else if (charset)
+ {
+ if (gktLastConvertUTF8)
+ g_free(gktLastConvertUTF8);
+ gktLastConvertUTF8 = gtkStrFromUTF8(str, charset);
+ if (!gktLastConvertUTF8) return (char*)str;
+ return gktLastConvertUTF8;
+ }
+ }
+ }
+ return (char*)str;
+}
+
+char* iupgtkStrConvertFromFilename(const char* str) /* From Filename to IUP */
+{
+ if (!str || *str == 0)
+ return (char*)str;
+
+ if (iupgtk_utf8autoconvert) /* this means str is in current locale */
+ return (char*)str;
+ else
+ {
+ const char *charset = NULL;
+ if (gtkGetFilenameCharset(&charset)==TRUE) /* current locale is already UTF-8 */
+ {
+ if (g_utf8_validate(str, -1, NULL))
+ return (char*)str;
+ else
+ {
+ if (gktLastConvertUTF8)
+ g_free(gktLastConvertUTF8);
+ gktLastConvertUTF8 = gtkStrToUTF8(str, "ISO8859-1"); /* if string is not UTF-8, assume ISO8859-1 */
+ if (!gktLastConvertUTF8) return (char*)str;
+ return gktLastConvertUTF8;
+ }
+ }
+ else
+ {
+ if (gtkStrIsAscii(str) || !charset)
+ return (char*)str;
+ else if (charset)
+ {
+ if (gktLastConvertUTF8)
+ g_free(gktLastConvertUTF8);
+ gktLastConvertUTF8 = gtkStrToUTF8(str, charset);
+ if (!gktLastConvertUTF8) return (char*)str;
+ return gktLastConvertUTF8;
+ }
+ }
+ }
+ return (char*)str;
+}
+
+gboolean iupgtkMotionNotifyEvent(GtkWidget *widget, GdkEventMotion *evt, Ihandle *ih)
+{
+ IFniis cb = (IFniis)IupGetCallback(ih,"MOTION_CB");
+ if (cb)
+ {
+ char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT;
+ iupgtkButtonKeySetStatus(evt->state, 0, status, 0);
+ cb(ih, (int)evt->x, (int)evt->y, status);
+ }
+
+ (void)widget;
+ return FALSE;
+}
+
+gboolean iupgtkButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih)
+{
+ IFniiiis cb = (IFniiiis)IupGetCallback(ih,"BUTTON_CB");
+ if (cb)
+ {
+ int doubleclick = 0, ret, press = 1;
+ int b = IUP_BUTTON1+(evt->button-1);
+ char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT;
+
+ if (evt->type == GDK_BUTTON_RELEASE)
+ press = 0;
+
+ if (evt->type == GDK_2BUTTON_PRESS)
+ doubleclick = 1;
+
+ iupgtkButtonKeySetStatus(evt->state, evt->button, status, doubleclick);
+
+ ret = cb(ih, b, press, (int)evt->x, (int)evt->y, status);
+ if (ret==IUP_CLOSE)
+ IupExitLoop();
+ else if (ret==IUP_IGNORE)
+ return TRUE;
+ }
+
+ (void)widget;
+ return FALSE;
+}
diff --git a/iup/src/gtk/iupgtk_dialog.c b/iup/src/gtk/iupgtk_dialog.c
new file mode 100755
index 0000000..46c0ce1
--- /dev/null
+++ b/iup/src/gtk/iupgtk_dialog.c
@@ -0,0 +1,1023 @@
+/** \file
+ * \brief IupDialog class
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+
+#ifdef HILDON
+#include <hildon/hildon-program.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+#include <limits.h>
+#include <time.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_class.h"
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_dlglist.h"
+#include "iup_attrib.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_drvinfo.h"
+#include "iup_focus.h"
+#include "iup_str.h"
+#define _IUPDLG_PRIVATE
+#include "iup_dialog.h"
+#include "iup_image.h"
+
+#include "iupgtk_drv.h"
+
+
+static void gtkDialogSetMinMax(Ihandle* ih, int min_w, int min_h, int max_w, int max_h);
+
+/****************************************************************
+ Utilities
+****************************************************************/
+
+int iupdrvDialogIsVisible(Ihandle* ih)
+{
+ return iupdrvIsVisible(ih);
+}
+
+void iupdrvDialogUpdateSize(Ihandle* ih)
+{
+ int width, height;
+ gtk_window_get_size((GtkWindow*)ih->handle, &width, &height);
+ ih->currentwidth = width;
+ ih->currentheight = height;
+}
+
+void iupdrvDialogGetSize(InativeHandle* handle, int *w, int *h)
+{
+ int width, height;
+ gtk_window_get_size((GtkWindow*)handle, &width, &height);
+ if (w) *w = width;
+ if (h) *h = height;
+}
+
+void iupdrvDialogSetVisible(Ihandle* ih, int visible)
+{
+ if (visible)
+ gtk_widget_show(ih->handle);
+ else
+ gtk_widget_hide(ih->handle);
+}
+
+void iupdrvDialogGetPosition(InativeHandle* handle, int *x, int *y)
+{
+ gtk_window_get_position((GtkWindow*)handle, x, y);
+}
+
+void iupdrvDialogSetPosition(Ihandle *ih, int x, int y)
+{
+ gtk_window_move((GtkWindow*)ih->handle, x, y);
+}
+
+static int gtkDialogGetMenuSize(Ihandle* ih)
+{
+#ifdef HILDON
+ return 0;
+#else
+ if (ih->data->menu)
+ return iupdrvMenuGetMenuBarSize(ih->data->menu);
+ else
+ return 0;
+#endif
+}
+
+static int gtkDialogGetWindowDecor(Ihandle* ih, int *win_border, int *win_caption)
+{
+ int x, y, frame_x, frame_y;
+ gdk_window_get_origin(ih->handle->window, &x, &y);
+ gdk_window_get_root_origin(ih->handle->window, &frame_x, &frame_y);
+ *win_border = x-frame_x;
+ *win_caption = y-frame_y-*win_border;
+ return 1; /* just for compatibility with iupdrvGetWindowDecor */
+}
+
+void iupdrvDialogGetDecoration(Ihandle* ih, int *border, int *caption, int *menu)
+{
+#ifdef HILDON
+ /* In Hildon, borders have fixed dimensions, but are drawn as part
+ of the client area! */
+ if (border)
+ *border = (iupAttribGetBoolean(ih, "HILDONWINDOW") && !iupAttribGetBoolean(ih, "FULLSCREEN")) ? 12 : 0;
+ if (caption)
+ *caption = 0;
+ if (menu)
+ *menu = 0;
+#else
+ static int native_border = 0;
+ static int native_caption = 0;
+
+ int has_caption = iupAttribGetBoolean(ih, "MAXBOX") ||
+ iupAttribGetBoolean(ih, "MINBOX") ||
+ iupAttribGetBoolean(ih, "MENUBOX") ||
+ IupGetAttribute(ih, "TITLE"); /* must use IupGetAttribute to check from the native implementation */
+
+ int has_border = has_caption ||
+ iupAttribGetBoolean(ih, "RESIZE") ||
+ iupAttribGetBoolean(ih, "BORDER");
+
+ *menu = gtkDialogGetMenuSize(ih);
+
+ if (ih->handle && iupdrvIsVisible(ih))
+ {
+ int win_border, win_caption;
+
+ if (gtkDialogGetWindowDecor(ih, &win_border, &win_caption))
+ {
+#ifdef WIN32
+ if (*menu)
+ win_caption -= *menu;
+#endif
+
+ *border = 0;
+ if (has_border)
+ *border = win_border;
+
+ *caption = 0;
+ if (has_caption)
+ *caption = win_caption;
+
+ if (!native_border && *border)
+ native_border = win_border;
+
+ if (!native_caption && *caption)
+ native_caption = win_caption;
+ }
+ }
+
+ /* I could not set the size of the window including the decorations when the dialog is hidden */
+ /* So we have to estimate the size of borders and caption when the dialog is hidden */
+
+ *border = 0;
+ if (has_border)
+ {
+ if (native_border)
+ *border = native_border;
+ else
+ *border = 5;
+ }
+
+ *caption = 0;
+ if (has_caption)
+ {
+ if (native_caption)
+ *caption = native_caption;
+ else
+ *caption = 20;
+ }
+#endif
+}
+
+int iupdrvDialogSetPlacement(Ihandle* ih)
+{
+ char* placement;
+ int old_state = ih->data->show_state;
+ ih->data->show_state = IUP_SHOW;
+
+ if (iupAttribGetBoolean(ih, "FULLSCREEN"))
+ {
+ gtk_window_fullscreen((GtkWindow*)ih->handle);
+ return 1;
+ }
+
+ placement = iupAttribGet(ih, "PLACEMENT");
+ if (!placement)
+ {
+ if (old_state == IUP_MAXIMIZE || old_state == IUP_MINIMIZE)
+ ih->data->show_state = IUP_RESTORE;
+
+ gtk_window_unmaximize((GtkWindow*)ih->handle);
+ gtk_window_deiconify((GtkWindow*)ih->handle);
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(placement, "MINIMIZED"))
+ {
+ ih->data->show_state = IUP_MINIMIZE;
+ gtk_window_iconify((GtkWindow*)ih->handle);
+ }
+ else if (iupStrEqualNoCase(placement, "MAXIMIZED"))
+ {
+ ih->data->show_state = IUP_MAXIMIZE;
+ gtk_window_maximize((GtkWindow*)ih->handle);
+ }
+ else if (iupStrEqualNoCase(placement, "FULL"))
+ {
+ int width, height, x, y;
+ int border, caption, menu;
+ iupdrvDialogGetDecoration(ih, &border, &caption, &menu);
+
+ /* position the decoration outside the screen */
+ x = -(border);
+ y = -(border+caption+menu);
+
+ /* the dialog client area will cover the task bar */
+ iupdrvGetFullSize(&width, &height);
+
+ height += menu; /* menu is inside the client area. */
+
+ /* set the new size and position */
+ /* The resize evt will update the layout */
+ gtk_window_move((GtkWindow*)ih->handle, x, y);
+ gtk_window_resize((GtkWindow*)ih->handle, width, height);
+
+ if (old_state == IUP_MAXIMIZE || old_state == IUP_MINIMIZE)
+ ih->data->show_state = IUP_RESTORE;
+ }
+
+ iupAttribSetStr(ih, "PLACEMENT", NULL); /* reset to NORMAL */
+
+ return 1;
+}
+
+
+/****************************************************************
+ Callbacks and Events
+****************************************************************/
+
+
+gboolean iupgtkDialogDeleteEvent(GtkWidget *widget, GdkEvent *evt, Ihandle *ih)
+{
+ Icallback cb;
+ (void)widget;
+ (void)evt;
+
+ /* even when ACTIVE=NO the dialog gets this evt */
+ if (!iupdrvIsActive(ih))
+ return TRUE;
+
+ cb = IupGetCallback(ih, "CLOSE_CB");
+ if (cb)
+ {
+ int ret = cb(ih);
+ if (ret == IUP_IGNORE)
+ return TRUE;
+ if (ret == IUP_CLOSE)
+ IupExitLoop();
+ }
+
+ IupHide(ih); /* default: close the window */
+
+ return TRUE; /* do not propagate */
+}
+
+static gboolean gtkDialogConfigureEvent(GtkWidget *widget, GdkEventConfigure *evt, Ihandle *ih)
+{
+ int old_width, old_height, old_x, old_y;
+ gint x, y;
+ (void)widget;
+
+#ifndef HILDON
+ /* In hildon the menu is not a menubar */
+ if (ih->data->menu && ih->data->menu->handle)
+ gtk_widget_set_size_request(ih->data->menu->handle, evt->width, -1);
+#endif
+
+ if (ih->data->ignore_resize) return FALSE;
+
+ old_width = iupAttribGetInt(ih, "_IUPGTK_OLD_WIDTH");
+ old_height = iupAttribGetInt(ih, "_IUPGTK_OLD_HEIGHT");
+
+ /* Check the size change, because configure is called also for position changes */
+ if (evt->width != old_width || evt->height != old_height)
+ {
+ IFnii cb;
+ int border, caption, menu;
+ iupAttribSetInt(ih, "_IUPGTK_OLD_WIDTH", evt->width);
+ iupAttribSetInt(ih, "_IUPGTK_OLD_HEIGHT", evt->height);
+
+ iupdrvDialogGetDecoration(ih, &border, &caption, &menu);
+
+ /* update dialog size */
+#ifdef HILDON
+ /* In Hildon, the configure event contains the window size, not the client area size */
+ ih->currentwidth = evt->width;
+ ih->currentheight = evt->height;
+#else
+ ih->currentwidth = evt->width + 2*border;
+ ih->currentheight = evt->height + 2*border + caption; /* menu is inside the window client area */
+#endif
+
+ cb = (IFnii)IupGetCallback(ih, "RESIZE_CB");
+ if (!cb || cb(ih, evt->width, evt->height - menu)!=IUP_IGNORE) /* width and height here are for the client area */
+ {
+ ih->data->ignore_resize = 1;
+ IupRefresh(ih);
+ ih->data->ignore_resize = 0;
+ }
+ }
+
+ old_x = iupAttribGetInt(ih, "_IUPGTK_OLD_X");
+ old_y = iupAttribGetInt(ih, "_IUPGTK_OLD_Y");
+ gtk_window_get_position((GtkWindow*)ih->handle, &x, &y); /* ignore evt->x and evt->y because they are the clientpos and not X/Y */
+
+ /* Check the position change, because configure is called also for size changes */
+ if (x != old_x || y != old_y)
+ {
+ IFnii cb;
+ iupAttribSetInt(ih, "_IUPGTK_OLD_X", x);
+ iupAttribSetInt(ih, "_IUPGTK_OLD_Y", y);
+
+ cb = (IFnii)IupGetCallback(ih, "MOVE_CB");
+ if (cb)
+ cb(ih, x, y);
+ }
+
+ return FALSE;
+}
+
+static gboolean gtkDialogWindowStateEvent(GtkWidget *widget, GdkEventWindowState *evt, Ihandle *ih)
+{
+ int state = -1;
+ (void)widget;
+
+ if ((evt->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) && /* if flag changed and */
+ (evt->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) && /* is now set */
+ !(evt->new_window_state & GDK_WINDOW_STATE_WITHDRAWN)) /* is visible */
+ state = IUP_MAXIMIZE;
+ else if ((evt->changed_mask & GDK_WINDOW_STATE_ICONIFIED) &&
+ (evt->new_window_state & GDK_WINDOW_STATE_ICONIFIED) &&
+ !(evt->new_window_state & GDK_WINDOW_STATE_WITHDRAWN))
+ state = IUP_MINIMIZE;
+ else if ((evt->changed_mask & GDK_WINDOW_STATE_ICONIFIED) &&
+ (evt->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) &&
+ !(evt->new_window_state & GDK_WINDOW_STATE_WITHDRAWN))
+ state = IUP_MAXIMIZE;
+ else if (((evt->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) && /* maximized changed */
+ !(evt->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) && /* not maximized */
+ !(evt->new_window_state & GDK_WINDOW_STATE_WITHDRAWN) && /* is visible */
+ !(evt->new_window_state & GDK_WINDOW_STATE_ICONIFIED)) /* not minimized */
+ || /* OR */
+ ((evt->changed_mask & GDK_WINDOW_STATE_ICONIFIED) && /* minimized changed */
+ !(evt->new_window_state & GDK_WINDOW_STATE_ICONIFIED) && /* not minimized */
+ !(evt->new_window_state & GDK_WINDOW_STATE_WITHDRAWN) && /* is visible */
+ !(evt->new_window_state & GDK_WINDOW_STATE_MAXIMIZED))) /* not maximized */
+ state = IUP_RESTORE;
+
+ if (state < 0)
+ return FALSE;
+
+ if (ih->data->show_state != state)
+ {
+ IFni cb;
+ ih->data->show_state = state;
+
+ cb = (IFni)IupGetCallback(ih, "SHOW_CB");
+ if (cb && cb(ih, state) == IUP_CLOSE)
+ IupExitLoop();
+ }
+
+ return FALSE;
+}
+
+static gboolean gtkDialogChildDestroyEvent(GtkWidget *widget, Ihandle *ih)
+{
+ /* It seems that the documentation for this callback is not correct */
+ /* The second parameter must be the user_data or it will fail. */
+ (void)widget;
+
+ /* If the IUP dialog was not destroyed, destroy it here. */
+ if (iupObjectCheck(ih))
+ IupDestroy(ih);
+
+ /* this callback is usefull to destroy children dialogs when the parent is destroyed. */
+ /* The application is responsable for destroying the children before this happen. */
+
+ return FALSE;
+}
+
+
+/****************************************************************
+ Idialog Methods
+****************************************************************/
+
+
+/* replace the common dialog SetChildrenPosition method because of
+ the menu that it is inside the dialog. */
+static void gtkDialogSetChildrenPositionMethod(Ihandle* ih, int x, int y)
+{
+ int menu_h = gtkDialogGetMenuSize(ih);
+ (void)x;
+ (void)y;
+
+ /* Child coordinates are relative to client left-top corner. */
+ iupBaseSetPosition(ih->firstchild, 0, menu_h);
+}
+
+static void* gtkDialogGetInnerNativeContainerHandleMethod(Ihandle* ih, Ihandle* child)
+{
+ (void)child;
+ return (void*)gtk_bin_get_child((GtkBin*)ih->handle);
+}
+
+static int gtkDialogMapMethod(Ihandle* ih)
+{
+ int decorations = 0;
+ int functions = 0;
+ InativeHandle* parent;
+ GtkWidget* fixed;
+
+#ifdef HILDON
+ if (iupAttribGetBoolean(ih, "HILDONWINDOW"))
+ {
+ HildonProgram *program = HILDON_PROGRAM(hildon_program_get_instance());
+ ih->handle = hildon_window_new();
+ if (ih->handle)
+ hildon_program_add_window(program, HILDON_WINDOW(ih->handle));
+ }
+ else
+ {
+ iupAttribSetStr(ih, "DIALOGHINT", "YES"); /* otherwise not displayed correctly */
+ ih->handle = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ }
+#else
+ ih->handle = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+#endif
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ parent = iupDialogGetNativeParent(ih);
+ if (parent)
+ {
+ gtk_window_set_transient_for((GtkWindow*)ih->handle, (GtkWindow*)parent);
+
+ /* manually remove child windows when parent is destroyed */
+ g_signal_connect(G_OBJECT(parent), "destroy", G_CALLBACK(gtkDialogChildDestroyEvent), ih);
+ }
+
+ g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih);
+
+ /* The iupgtkKeyPressEvent of the control with the focus will propagate the key up to the dialog. */
+ /* Inside iupgtkKeyPressEvent we test this to avoid duplicate calls. */
+ g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih);
+
+ g_signal_connect(G_OBJECT(ih->handle), "configure-event", G_CALLBACK(gtkDialogConfigureEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "window-state-event", G_CALLBACK(gtkDialogWindowStateEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "delete-event", G_CALLBACK(iupgtkDialogDeleteEvent), ih);
+
+ gtk_window_set_default_size((GtkWindow*)ih->handle, 100, 100); /* set this to avoid size calculation problems */
+
+ if (iupAttribGetBoolean(ih, "DIALOGHINT"))
+ gtk_window_set_type_hint(GTK_WINDOW(ih->handle), GDK_WINDOW_TYPE_HINT_DIALOG);
+
+ /* the container that will receive the child element. */
+ fixed = gtk_fixed_new();
+ gtk_container_add((GtkContainer*)ih->handle, fixed);
+ gtk_widget_show(fixed);
+
+ /* initialize the widget */
+ gtk_widget_realize(ih->handle);
+
+ if (iupAttribGetBoolean(ih, "DIALOGFRAME")) {
+ iupAttribSetStr(ih, "RESIZE", "NO");
+ }
+
+ if (!iupAttribGetBoolean(ih, "RESIZE")) {
+ iupAttribSetStr(ih, "MAXBOX", "NO"); /* Must also remove these, so RESIZE=NO can work */
+ iupAttribSetStr(ih, "MINBOX", "NO");
+ }
+
+ if (IupGetAttribute(ih, "TITLE")) { /* must use IupGetAttribute to check from the native implementation */
+ functions |= GDK_FUNC_MOVE;
+ decorations |= GDK_DECOR_TITLE;
+ }
+
+ if (iupAttribGetBoolean(ih, "MENUBOX")) {
+ functions |= GDK_FUNC_CLOSE;
+ decorations |= GDK_DECOR_MENU;
+ }
+
+ if (iupAttribGetBoolean(ih, "MINBOX")) {
+ functions |= GDK_FUNC_MINIMIZE;
+ decorations |= GDK_DECOR_MINIMIZE;
+ }
+
+ if (iupAttribGetBoolean(ih, "MAXBOX")) {
+ functions |= GDK_FUNC_MAXIMIZE;
+ decorations |= GDK_DECOR_MAXIMIZE;
+ }
+
+ if (iupAttribGetBoolean(ih, "RESIZE")) {
+ functions |= GDK_FUNC_RESIZE;
+ decorations |= GDK_DECOR_RESIZEH;
+ }
+
+ if (iupAttribGetBoolean(ih, "BORDER"))
+ decorations |= GDK_DECOR_BORDER;
+
+ if (decorations == 0)
+ gtk_window_set_decorated((GtkWindow*)ih->handle, FALSE);
+ else
+ {
+ GdkWindow* window = ih->handle->window;
+ if (window)
+ {
+ gdk_window_set_decorations(window, (GdkWMDecoration)decorations);
+ gdk_window_set_functions(window, (GdkWMFunction)functions);
+ }
+ }
+
+ /* configure for DRAG&DROP */
+ if (IupGetCallback(ih, "DROPFILES_CB"))
+ iupAttribSetStr(ih, "DRAGDROP", "YES");
+
+ {
+ /* Reset the DLGBGCOLOR global attribute
+ if it is the first time a dialog is created.
+ The value returned by gtk_style_new is not accurate. */
+ GtkStyle* style = gtk_widget_get_style(ih->handle);
+ if (style && IupGetGlobal("_IUP_RESET_GLOBALCOLORS"))
+ {
+ iupgtkUpdateGlobalColors(style);
+ IupSetGlobal("_IUP_RESET_GLOBALCOLORS", NULL);
+ }
+ }
+
+ /* configure the size range */
+ gtkDialogSetMinMax(ih, 1, 1, 65535, 65535); /* MINSIZE and MAXSIZE default values */
+
+ /* Ignore VISIBLE before mapping */
+ iupAttribSetStr(ih, "VISIBLE", NULL);
+
+ return IUP_NOERROR;
+}
+
+static void gtkDialogUnMapMethod(Ihandle* ih)
+{
+ GtkWidget* fixed;
+#if GTK_CHECK_VERSION(2, 10, 0)
+ GtkStatusIcon* status_icon;
+#endif
+
+ if (ih->data->menu)
+ {
+ ih->data->menu->handle = NULL; /* the dialog will destroy the native menu */
+ IupDestroy(ih->data->menu);
+ }
+
+#if GTK_CHECK_VERSION(2, 10, 0)
+ status_icon = (GtkStatusIcon*)iupAttribGet(ih, "_IUPDLG_STATUSICON");
+ if (status_icon)
+ g_object_unref(status_icon);
+#endif
+
+ fixed = gtk_bin_get_child((GtkBin*)ih->handle);
+ gtk_widget_unrealize(fixed);
+ gtk_widget_destroy(fixed);
+
+ gtk_widget_unrealize(ih->handle); /* To match the call to gtk_widget_realize */
+ gtk_widget_destroy(ih->handle); /* To match the call to gtk_window_new */
+}
+
+static void gtkDialogLayoutUpdateMethod(Ihandle *ih)
+{
+ int border, caption, menu;
+ int width, height;
+
+ if (ih->data->ignore_resize ||
+ iupAttribGet(ih, "_IUPGTK_FS_STYLE"))
+ return;
+
+ /* for dialogs the position is not updated here */
+ ih->data->ignore_resize = 1;
+
+ iupdrvDialogGetDecoration(ih, &border, &caption, &menu);
+
+ /* set size excluding the border */
+ width = ih->currentwidth - 2*border;
+ height = ih->currentheight - 2*border - caption; /* menu is inside the client area. */
+ gtk_window_resize((GtkWindow*)ih->handle, width, height);
+
+ if (!iupAttribGetBoolean(ih, "RESIZE"))
+ {
+ GdkGeometry geometry;
+ geometry.min_width = width;
+ geometry.min_height = height;
+ geometry.max_width = width;
+ geometry.max_height = height;
+ gtk_window_set_geometry_hints((GtkWindow*)ih->handle, ih->handle,
+ &geometry, (GdkWindowHints)(GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE));
+ }
+
+ ih->data->ignore_resize = 0;
+}
+
+
+/****************************************************************************
+ Attributes
+****************************************************************************/
+
+static void gtkDialogSetMinMax(Ihandle* ih, int min_w, int min_h, int max_w, int max_h)
+{
+ /* The minmax size restricts the client area */
+ GdkGeometry geometry;
+ int decorwidth = 0, decorheight = 0;
+ iupDialogGetDecorSize(ih, &decorwidth, &decorheight);
+
+ geometry.min_width = 1;
+ if (min_w > decorwidth)
+ geometry.min_width = min_w-decorwidth;
+
+ geometry.min_height = 1;
+ if (min_h > decorheight)
+ geometry.min_height = min_h-decorheight;
+
+ geometry.max_width = 65535;
+ if (max_w > decorwidth && max_w > geometry.min_width)
+ geometry.max_width = max_w-decorwidth;
+
+ geometry.max_height = 65535;
+ if (max_h > decorheight && max_w > geometry.min_height)
+ geometry.max_height = max_h-decorheight;
+
+ gtk_window_set_geometry_hints((GtkWindow*)ih->handle, ih->handle,
+ &geometry, (GdkWindowHints)(GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE));
+}
+
+static int gtkDialogSetMinSizeAttrib(Ihandle* ih, const char* value)
+{
+ int min_w = 1, min_h = 1; /* MINSIZE default value */
+ int max_w = 65535, max_h = 65535; /* MAXSIZE default value */
+ iupStrToIntInt(value, &min_w, &min_h, 'x');
+
+ /* if MAXSIZE also set, must be also updated here */
+ iupStrToIntInt(iupAttribGet(ih, "MAXSIZE"), &max_w, &max_h, 'x');
+
+ gtkDialogSetMinMax(ih, min_w, min_h, max_w, max_h);
+ return 1;
+}
+
+static int gtkDialogSetMaxSizeAttrib(Ihandle* ih, const char* value)
+{
+ int min_w = 1, min_h = 1; /* MINSIZE default value */
+ int max_w = 65535, max_h = 65535; /* MAXSIZE default value */
+ iupStrToIntInt(value, &max_w, &max_h, 'x');
+
+ /* if MINSIZE also set, must be also updated here */
+ iupStrToIntInt(iupAttribGet(ih, "MINSIZE"), &min_w, &min_h, 'x');
+
+ gtkDialogSetMinMax(ih, min_w, min_h, max_w, max_h);
+ return 1;
+}
+
+static char* gtkDialogGetXAttrib(Ihandle *ih)
+{
+ char* str = iupStrGetMemory(20);
+
+ gint x = 0;
+ gtk_window_get_position((GtkWindow*)ih->handle, &x, NULL);
+
+ sprintf(str, "%d", x);
+ return str;
+}
+
+static char* gtkDialogGetYAttrib(Ihandle *ih)
+{
+ char* str = iupStrGetMemory(20);
+
+ gint y = 0;
+ gtk_window_get_position((GtkWindow*)ih->handle, NULL, &y);
+
+ sprintf(str, "%d", y);
+ return str;
+}
+
+static int gtkDialogSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ value = "";
+ gtk_window_set_title((GtkWindow*)ih->handle, iupgtkStrConvertToUTF8(value));
+ return 0;
+}
+
+static char* gtkDialogGetTitleAttrib(Ihandle* ih)
+{
+ const char* title = gtk_window_get_title((GtkWindow*)ih->handle);
+
+ if (!title || title[0] == 0)
+ return NULL;
+ else
+ return iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(title));
+}
+
+static char* gtkDialogGetClientSizeAttrib(Ihandle *ih)
+{
+ char* str = iupStrGetMemory(20);
+
+ int width, height;
+ gtk_window_get_size((GtkWindow*)ih->handle, &width, &height);
+ height -= gtkDialogGetMenuSize(ih);
+
+ sprintf(str, "%dx%d", width, height);
+ return str;
+}
+
+static int gtkDialogSetFullScreenAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ {
+ if (!iupAttribGet(ih, "_IUPGTK_FS_STYLE"))
+ {
+ /* save the previous decoration attributes */
+ /* during fullscreen these attributes can be consulted by the application */
+ iupAttribStoreStr(ih, "_IUPGTK_FS_MAXBOX", iupAttribGet(ih, "MAXBOX"));
+ iupAttribStoreStr(ih, "_IUPGTK_FS_MINBOX", iupAttribGet(ih, "MINBOX"));
+ iupAttribStoreStr(ih, "_IUPGTK_FS_MENUBOX",iupAttribGet(ih, "MENUBOX"));
+ iupAttribStoreStr(ih, "_IUPGTK_FS_RESIZE", iupAttribGet(ih, "RESIZE"));
+ iupAttribStoreStr(ih, "_IUPGTK_FS_BORDER", iupAttribGet(ih, "BORDER"));
+ iupAttribStoreStr(ih, "_IUPGTK_FS_TITLE", IupGetAttribute(ih, "TITLE")); /* must use IupGetAttribute to check from the native implementation */
+
+ /* remove the decorations attributes */
+ iupAttribSetStr(ih, "MAXBOX", "NO");
+ iupAttribSetStr(ih, "MINBOX", "NO");
+ iupAttribSetStr(ih, "MENUBOX", "NO");
+ IupSetAttribute(ih, "TITLE", NULL); iupAttribSetStr(ih, "TITLE", NULL); /* remove from the hash table if we are during IupMap */
+ iupAttribSetStr(ih, "RESIZE", "NO");
+ iupAttribSetStr(ih, "BORDER", "NO");
+
+ if (iupdrvIsVisible(ih))
+ gtk_window_fullscreen((GtkWindow*)ih->handle);
+
+ iupAttribSetStr(ih, "_IUPGTK_FS_STYLE", "YES");
+ }
+ }
+ else
+ {
+ char* fs_style = iupAttribGet(ih, "_IUPGTK_FS_STYLE");
+ if (fs_style)
+ {
+ iupAttribSetStr(ih, "_IUPGTK_FS_STYLE", NULL);
+
+ /* restore the decorations attributes */
+ iupAttribStoreStr(ih, "MAXBOX", iupAttribGet(ih, "_IUPGTK_FS_MAXBOX"));
+ iupAttribStoreStr(ih, "MINBOX", iupAttribGet(ih, "_IUPGTK_FS_MINBOX"));
+ iupAttribStoreStr(ih, "MENUBOX",iupAttribGet(ih, "_IUPGTK_FS_MENUBOX"));
+ IupSetAttribute(ih, "TITLE", iupAttribGet(ih, "_IUPGTK_FS_TITLE")); /* must use IupSetAttribute to update the native implementation */
+ iupAttribStoreStr(ih, "RESIZE", iupAttribGet(ih, "_IUPGTK_FS_RESIZE"));
+ iupAttribStoreStr(ih, "BORDER", iupAttribGet(ih, "_IUPGTK_FS_BORDER"));
+
+ if (iupdrvIsVisible(ih))
+ gtk_window_unfullscreen((GtkWindow*)ih->handle);
+
+ /* remove auxiliar attributes */
+ iupAttribSetStr(ih, "_IUPGTK_FS_MAXBOX", NULL);
+ iupAttribSetStr(ih, "_IUPGTK_FS_MINBOX", NULL);
+ iupAttribSetStr(ih, "_IUPGTK_FS_MENUBOX",NULL);
+ iupAttribSetStr(ih, "_IUPGTK_FS_RESIZE", NULL);
+ iupAttribSetStr(ih, "_IUPGTK_FS_BORDER", NULL);
+ iupAttribSetStr(ih, "_IUPGTK_FS_TITLE", NULL);
+ }
+ }
+ return 1;
+}
+
+static int gtkDialogSetTopMostAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ gtk_window_set_keep_above((GtkWindow*)ih->handle, TRUE);
+ else
+ gtk_window_set_keep_above((GtkWindow*)ih->handle, FALSE);
+ return 1;
+}
+
+#if GTK_CHECK_VERSION(2, 12, 0)
+static int gtkDialogSetOpacityAttrib(Ihandle *ih, const char *value)
+{
+ int opacity;
+ if (!iupStrToInt(value, &opacity))
+ return 0;
+
+ gtk_window_set_opacity((GtkWindow*)ih->handle, (double)opacity/255.0);
+ return 1;
+}
+#endif
+
+static int gtkDialogSetIconAttrib(Ihandle* ih, const char *value)
+{
+ if (!value)
+ gtk_window_set_icon((GtkWindow*)ih->handle, NULL);
+ else
+ {
+ GdkPixbuf* icon = (GdkPixbuf*)iupImageGetIcon(value);
+ if (icon)
+ gtk_window_set_icon((GtkWindow*)ih->handle, icon);
+ }
+ return 1;
+}
+
+static int gtkDialogSetBackgroundAttrib(Ihandle* ih, const char* value)
+{
+ if (iupdrvBaseSetBgColorAttrib(ih, value))
+ {
+ GtkStyle *style = gtk_widget_get_style(ih->handle);
+ if (style->bg_pixmap[GTK_STATE_NORMAL])
+ {
+ style = gtk_style_copy(style);
+ style->bg_pixmap[GTK_STATE_NORMAL] = NULL;
+ gtk_widget_set_style(ih->handle, style);
+ }
+ return 1;
+ }
+ else
+ {
+ GdkPixbuf* pixbuf = iupImageGetImage(value, ih, 0);
+ if (pixbuf)
+ {
+ GdkPixmap* pixmap;
+ GtkStyle *style;
+
+ gdk_pixbuf_render_pixmap_and_mask(pixbuf, &pixmap, NULL, 255);
+
+ style = gtk_style_copy(gtk_widget_get_style(ih->handle));
+ style->bg_pixmap[GTK_STATE_NORMAL] = pixmap;
+ gtk_widget_set_style(ih->handle, style);
+
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+#if GTK_CHECK_VERSION(2, 10, 0)
+static int gtkDialogTaskDoubleClick(int button)
+{
+ static int last_button = -1;
+ static GTimer* timer = NULL;
+ if (last_button == -1 || last_button != button)
+ {
+ last_button = button;
+ if (timer)
+ g_timer_destroy(timer);
+ timer = g_timer_new();
+ return 0;
+ }
+ else
+ {
+ double seconds;
+
+ if (!timer) /* just in case */
+ return 0;
+
+ seconds = g_timer_elapsed(timer, NULL);
+ if (seconds < 0.4)
+ {
+ /* reset state */
+ g_timer_destroy(timer);
+ timer = NULL;
+ last_button = -1;
+ return 1;
+ }
+ else
+ {
+ g_timer_reset(timer);
+ return 0;
+ }
+ }
+}
+
+static void gtkDialogTaskAction(GtkStatusIcon *status_icon, Ihandle *ih)
+{
+ /* from GTK source code it is called only when button==1 and pressed==1 */
+ int button = 1;
+ int pressed = 1;
+ int dclick = gtkDialogTaskDoubleClick(button);
+ IFniii cb = (IFniii)IupGetCallback(ih, "TRAYCLICK_CB");
+ if (cb && cb(ih, button, pressed, dclick) == IUP_CLOSE)
+ IupExitLoop();
+ (void)status_icon;
+}
+
+static void gtkDialogTaskPopupMenu(GtkStatusIcon *status_icon, guint gbutton, guint activate_time, Ihandle *ih)
+{
+ /* from GTK source code it is called only when button==3 and pressed==1 */
+ int button = 3;
+ int pressed = 1;
+ int dclick = gtkDialogTaskDoubleClick(button);
+ IFniii cb = (IFniii)IupGetCallback(ih, "TRAYCLICK_CB");
+ if (cb && cb(ih, button, pressed, dclick) == IUP_CLOSE)
+ IupExitLoop();
+ (void)activate_time;
+ (void)gbutton;
+ (void)status_icon;
+}
+
+static GtkStatusIcon* gtkDialogGetStatusIcon(Ihandle *ih)
+{
+ GtkStatusIcon* status_icon = (GtkStatusIcon*)iupAttribGet(ih, "_IUPDLG_STATUSICON");
+ if (!status_icon)
+ {
+ status_icon = gtk_status_icon_new();
+
+ g_signal_connect(G_OBJECT(status_icon), "activate", G_CALLBACK(gtkDialogTaskAction), ih);
+ g_signal_connect(G_OBJECT(status_icon), "popup-menu", G_CALLBACK(gtkDialogTaskPopupMenu), ih);
+
+ iupAttribSetStr(ih, "_IUPDLG_STATUSICON", (char*)status_icon);
+ }
+ return status_icon;
+}
+
+static int gtkDialogSetTrayAttrib(Ihandle *ih, const char *value)
+{
+ GtkStatusIcon* status_icon = gtkDialogGetStatusIcon(ih);
+ gtk_status_icon_set_visible(status_icon, iupStrBoolean(value));
+ return 1;
+}
+
+static int gtkDialogSetTrayTipAttrib(Ihandle *ih, const char *value)
+{
+ GtkStatusIcon* status_icon = gtkDialogGetStatusIcon(ih);
+#if GTK_CHECK_VERSION(2, 16, 0)
+ if (value)
+ {
+ gtk_status_icon_set_has_tooltip(status_icon, TRUE);
+ gtk_status_icon_set_tooltip_text(status_icon, value);
+ }
+ else
+ gtk_status_icon_set_has_tooltip(status_icon, FALSE);
+#else
+ gtk_status_icon_set_tooltip(status_icon, value);
+#endif
+ return 1;
+}
+
+static int gtkDialogSetTrayImageAttrib(Ihandle *ih, const char *value)
+{
+ GtkStatusIcon* status_icon = gtkDialogGetStatusIcon(ih);
+ GdkPixbuf* icon = (GdkPixbuf*)iupImageGetIcon(value);
+ gtk_status_icon_set_from_pixbuf(status_icon, icon);
+ return 1;
+}
+#endif /* GTK_CHECK_VERSION(2, 10, 0) */
+
+void iupdrvDialogInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class methods */
+ ic->Map = gtkDialogMapMethod;
+ ic->UnMap = gtkDialogUnMapMethod;
+ ic->LayoutUpdate = gtkDialogLayoutUpdateMethod;
+ ic->GetInnerNativeContainerHandle = gtkDialogGetInnerNativeContainerHandleMethod;
+ ic->SetChildrenPosition = gtkDialogSetChildrenPositionMethod;
+
+ /* Callback Windows and GTK Only */
+ iupClassRegisterCallback(ic, "TRAYCLICK_CB", "iii");
+
+ /* Driver Dependent Attribute functions */
+
+#ifdef WIN32
+ iupClassRegisterAttribute(ic, "HWND", iupgtkGetNativeWindowHandle, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_NO_INHERIT);
+#else
+ iupClassRegisterAttribute(ic, "XWINDOW", iupgtkGetNativeWindowHandle, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+#endif
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, "DLGBGCOLOR", NULL, IUPAF_DEFAULT); /* force new default value */
+
+ /* Overwrite Visual */
+ iupClassRegisterAttribute(ic, "X", gtkDialogGetXAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "Y", gtkDialogGetYAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT);
+
+ /* Base Container */
+ iupClassRegisterAttribute(ic, "CLIENTSIZE", gtkDialogGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "TITLE", gtkDialogGetTitleAttrib, gtkDialogSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupDialog only */
+ iupClassRegisterAttribute(ic, "BACKGROUND", NULL, gtkDialogSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ICON", NULL, gtkDialogSetIconAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FULLSCREEN", NULL, gtkDialogSetFullScreenAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MINSIZE", NULL, gtkDialogSetMinSizeAttrib, IUPAF_SAMEASSYSTEM, "1x1", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MAXSIZE", NULL, gtkDialogSetMaxSizeAttrib, IUPAF_SAMEASSYSTEM, "65535x65535", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SAVEUNDER", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); /* saveunder not supported in GTK */
+
+ /* IupDialog Windows and GTK Only */
+ iupClassRegisterAttribute(ic, "TOPMOST", NULL, gtkDialogSetTopMostAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupgtkSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DIALOGHINT", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+#if GTK_CHECK_VERSION(2, 12, 0)
+ iupClassRegisterAttribute(ic, "OPACITY", NULL, gtkDialogSetOpacityAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+#endif
+#if GTK_CHECK_VERSION(2, 10, 0)
+ iupClassRegisterAttribute(ic, "TRAY", NULL, gtkDialogSetTrayAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TRAYIMAGE", NULL, gtkDialogSetTrayImageAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TRAYTIP", NULL, gtkDialogSetTrayTipAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+#endif
+}
diff --git a/iup/src/gtk/iupgtk_drv.h b/iup/src/gtk/iupgtk_drv.h
new file mode 100755
index 0000000..ade2a4a
--- /dev/null
+++ b/iup/src/gtk/iupgtk_drv.h
@@ -0,0 +1,82 @@
+/** \file
+ * \brief GTK Driver
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPGTK_DRV_H
+#define __IUPGTK_DRV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* global variables, declared in iupgtk_globalattrib.c */
+extern int iupgtk_utf8autoconvert;
+
+
+/* common */
+gboolean iupgtkEnterLeaveEvent(GtkWidget *widget, GdkEventCrossing *evt, Ihandle* ih);
+gboolean iupgtkShowHelp(GtkWidget *widget, GtkWidgetHelpType *arg1, Ihandle* ih);
+GtkFixed* iupgtkBaseGetFixed(Ihandle* ih);
+void iupgtkBaseAddToParent(Ihandle* ih);
+void iupgdkColorSet(GdkColor* color, unsigned char r, unsigned char g, unsigned char b);
+int iupgtkSetDragDropAttrib(Ihandle* ih, const char* value);
+int iupgtkSetMnemonicTitle(Ihandle* ih, GtkLabel* label, const char* value);
+char* iupgtkStrConvertToUTF8(const char* str);
+char* iupgtkStrConvertFromUTF8(const char* str);
+void iupgtkReleaseConvertUTF8(void);
+char* iupgtkStrConvertFromFilename(const char* str);
+char* iupgtkStrConvertToFilename(const char* str);
+void iupgtkUpdateMnemonic(Ihandle* ih);
+gboolean iupgtkMotionNotifyEvent(GtkWidget *widget, GdkEventMotion *evt, Ihandle *ih);
+gboolean iupgtkButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih);
+void iupgtkBaseSetBgColor(InativeHandle* handle, unsigned char r, unsigned char g, unsigned char b);
+void iupgtkBaseSetFgColor(InativeHandle* handle, unsigned char r, unsigned char g, unsigned char b);
+void iupgtkBaseSetFgGdkColor(InativeHandle* handle, GdkColor *color);
+
+
+/* focus */
+gboolean iupgtkFocusInOutEvent(GtkWidget *widget, GdkEventFocus *evt, Ihandle* ih);
+
+
+/* key */
+gboolean iupgtkKeyPressEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle* ih);
+gboolean iupgtkKeyReleaseEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle* ih);
+void iupgtkButtonKeySetStatus(guint state, unsigned int but, char* status, int doubleclick);
+void iupgtkKeyEncode(int key, guint *keyval, guint *state);
+
+
+/* font */
+char* iupgtkGetPangoFontDescAttrib(Ihandle *ih);
+char* iupgtkGetFontIdAttrib(Ihandle *ih);
+PangoFontDescription* iupgtkGetPangoFontDesc(const char* value);
+char* iupgtkFindPangoFontDesc(PangoFontDescription* fontdesc);
+void iupgtkFontUpdatePangoLayout(Ihandle* ih, PangoLayout* layout);
+void iupgtkFontUpdateObjectPangoLayout(Ihandle* ih, gpointer object);
+
+/* There are PANGO_SCALE Pango units in one device unit.
+ For an output backend where a device unit is a pixel,
+ a size value of 10 * PANGO_SCALE gives 10 pixels. */
+#define IUPGTK_PANGOUNITS2PIXELS(_x) (((_x) + PANGO_SCALE/2) / PANGO_SCALE)
+#define IUPGTK_PIXELS2PANGOUNITS(_x) ((_x) * PANGO_SCALE)
+
+
+/* open */
+char* iupgtkGetNativeWindowHandle(Ihandle* ih);
+void iupgtkPushVisualAndColormap(void* visual, void* colormap);
+void* iupgtkGetNativeGraphicsContext(GtkWidget* widget);
+void iupgtkReleaseNativeGraphicsContext(GtkWidget* widget, void* gc);
+void iupgtkUpdateGlobalColors(GtkStyle* style);
+
+
+/* dialog */
+gboolean iupgtkDialogDeleteEvent(GtkWidget *widget, GdkEvent *evt, Ihandle *ih);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/gtk/iupgtk_filedlg.c b/iup/src/gtk/iupgtk_filedlg.c
new file mode 100755
index 0000000..5426910
--- /dev/null
+++ b/iup/src/gtk/iupgtk_filedlg.c
@@ -0,0 +1,536 @@
+/** \file
+ * \brief IupFileDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <memory.h>
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drvinfo.h"
+#include "iup_dialog.h"
+#include "iup_strmessage.h"
+#include "iup_array.h"
+#include "iup_drvinfo.h"
+
+#include "iupgtk_drv.h"
+
+
+static void iupStrRemoveChar(char* str, char c)
+{
+ char* p = str;
+ while (*str)
+ {
+ if (*str != c)
+ {
+ *p = *str;
+ p++;
+ }
+
+ str++;
+ }
+ *p = 0;
+}
+
+static void gtkFileDlgGetNextFilter(char** str, char** name, char** pattern)
+{
+ int len;
+ *name = *str;
+
+ len = strlen(*name);
+ *pattern = (*name)+len+1;
+
+ len = strlen(*pattern);
+ *str = (*pattern)+len+1;
+
+ iupStrReplace(*pattern, ';', 0); /* remove other patterns */
+}
+
+static void gtkFileDlgGetMultipleFiles(Ihandle* ih, GSList* list)
+{
+ int len, cur_len, dir_len = -1;
+ char *filename, *all_names;
+ Iarray* names_array = iupArrayCreate(1024, 1); /* just set an initial size, but count is 0 */
+
+ while (list)
+ {
+ filename = (char*)list->data;
+ len = strlen(filename);
+
+ if (dir_len == -1)
+ {
+ dir_len = len;
+
+ while (dir_len && (filename[dir_len] != '/' && filename[dir_len] != '\\'))
+ dir_len--;
+
+ cur_len = iupArrayCount(names_array);
+ all_names = iupArrayAdd(names_array, dir_len+1);
+ memcpy(all_names+cur_len, filename, dir_len);
+ all_names[cur_len+dir_len] = '|';
+
+ dir_len++; /* skip separator */
+ }
+ len -= dir_len; /* remove directory */
+
+ cur_len = iupArrayCount(names_array);
+ all_names = iupArrayAdd(names_array, len+1);
+ memcpy(all_names+cur_len, filename+dir_len, len);
+ all_names[cur_len+len] = '|';
+
+ g_free(filename);
+ list = list->next;
+ }
+
+ cur_len = iupArrayCount(names_array);
+ all_names = iupArrayInc(names_array);
+ all_names[cur_len+1] = 0;
+
+ iupAttribStoreStr(ih, "VALUE", iupgtkStrConvertFromFilename(all_names));
+
+ iupArrayDestroy(names_array);
+}
+
+#ifdef WIN32
+#include <gdk/gdkwin32.h>
+#else
+#include <gdk/gdkx.h>
+#endif
+
+static void gtkFileDlgUpdatePreviewGLCanvas(Ihandle* ih)
+{
+ Ihandle* glcanvas = IupGetAttributeHandle(ih, "PREVIEWGLCANVAS");
+ if (glcanvas)
+ {
+#ifdef WIN32
+ iupAttribSetStr(glcanvas, "HWND", iupAttribGet(ih, "HWND"));
+#else
+ iupAttribSetStr(glcanvas, "XWINDOW", iupAttribGet(ih, "XWINDOW"));
+#endif
+ glcanvas->iclass->Map(glcanvas);
+ }
+}
+
+static void gtkFileDlgPreviewRealize(GtkWidget *widget, Ihandle *ih)
+{
+ iupAttribSetStr(ih, "PREVIEWDC", iupgtkGetNativeGraphicsContext(widget));
+ iupAttribSetStr(ih, "WID", (char*)widget);
+
+#ifdef WIN32
+ iupAttribSetStr(ih, "HWND", (char*)GDK_WINDOW_HWND(widget->window));
+#else
+ iupAttribSetStr(ih, "XWINDOW", (char*)GDK_WINDOW_XID(widget->window));
+ iupAttribSetStr(ih, "XDISPLAY", (char*)iupdrvGetDisplay());
+#endif
+ gtkFileDlgUpdatePreviewGLCanvas(ih);
+}
+
+static void gtkFileDlgRealize(GtkWidget *widget, Ihandle *ih)
+{
+ IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ cb(ih, NULL, "INIT");
+
+ (void)widget;
+}
+
+static gboolean gtkFileDlgPreviewConfigureEvent(GtkWidget *widget, GdkEventConfigure *evt, Ihandle *ih)
+{
+ iupAttribSetInt(ih, "PREVIEWWIDTH", evt->width);
+ iupAttribSetInt(ih, "PREVIEWHEIGHT", evt->height);
+
+ (void)widget;
+ return FALSE;
+}
+
+static gboolean gtkFileDlgPreviewExposeEvent(GtkWidget *widget, GdkEventExpose *evt, Ihandle *ih)
+{
+ GtkFileChooser *file_chooser = (GtkFileChooser*)iupAttribGet(ih, "_IUPDLG_FILE_CHOOSER");
+ char *filename = gtk_file_chooser_get_preview_filename(file_chooser);
+
+ IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ if (iupdrvIsFile(filename))
+ cb(ih, iupgtkStrConvertFromFilename(filename), "PAINT");
+ else
+ cb(ih, NULL, "PAINT");
+
+ g_free (filename);
+
+ (void)evt;
+ (void)widget;
+ return TRUE; /* stop other handlers */
+}
+
+static void gtkFileDlgUpdatePreview(GtkFileChooser *file_chooser, Ihandle* ih)
+{
+ char *filename = gtk_file_chooser_get_preview_filename(file_chooser);
+
+ if (iupdrvIsFile(filename))
+ {
+ IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ cb(ih, iupgtkStrConvertFromFilename(filename), "SELECT");
+ }
+
+ g_free (filename);
+
+ gtk_file_chooser_set_preview_widget_active(file_chooser, TRUE);
+}
+
+static int gtkFileDlgPopup(Ihandle* ih, int x, int y)
+{
+ InativeHandle* parent = iupDialogGetNativeParent(ih);
+ GtkWidget* dialog;
+ GtkWidget* preview_canvas = NULL;
+ GtkFileChooserAction action;
+ IFnss file_cb;
+ char* value;
+ int response, filter_count = 0;
+
+ iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */
+ iupAttribSetInt(ih, "_IUPDLG_Y", y);
+
+ value = iupAttribGetStr(ih, "DIALOGTYPE");
+ if (iupStrEqualNoCase(value, "SAVE"))
+ action = GTK_FILE_CHOOSER_ACTION_SAVE;
+ else if (iupStrEqualNoCase(value, "DIR"))
+ action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER;
+ else
+ action = GTK_FILE_CHOOSER_ACTION_OPEN;
+
+ value = iupAttribGet(ih, "TITLE");
+ if (!value)
+ {
+ GtkStockItem item;
+
+ if (action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ value = GTK_STOCK_SAVE_AS;
+ else
+ value = GTK_STOCK_OPEN;
+
+ gtk_stock_lookup(value, &item);
+ value = item.label;
+
+ iupAttribStoreStr(ih, "TITLE", iupgtkStrConvertFromUTF8(value));
+ value = iupAttribGet(ih, "TITLE");
+ iupStrRemoveChar(value, '_');
+ }
+
+ dialog = gtk_file_chooser_dialog_new(iupgtkStrConvertToUTF8(value), (GtkWindow*)parent, action,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ NULL);
+ if (!dialog)
+ return IUP_ERROR;
+
+ if (action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_SAVE, GTK_RESPONSE_OK);
+ else if (action == GTK_FILE_CHOOSER_ACTION_OPEN)
+ gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OPEN, GTK_RESPONSE_OK);
+ else
+ gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK);
+
+ if (IupGetCallback(ih, "HELP_CB"))
+ gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_HELP, GTK_RESPONSE_HELP);
+
+#if GTK_CHECK_VERSION(2, 6, 0)
+ if (iupAttribGetBoolean(ih, "SHOWHIDDEN"))
+ gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(dialog), TRUE);
+#endif
+
+ if (iupAttribGetBoolean(ih, "MULTIPLEFILES") && action == GTK_FILE_CHOOSER_ACTION_OPEN)
+ gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE);
+
+#if GTK_CHECK_VERSION(2, 8, 0)
+ if (!iupAttribGetBoolean(ih, "NOOVERWRITEPROMPT") && action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE);
+#endif
+
+ /* just check for the path inside FILE */
+ value = iupAttribGet(ih, "FILE");
+ if (value && (value[0] == '/' || value[1] == ':'))
+ {
+ char* dir = iupStrFileGetPath(value);
+ int len = strlen(dir);
+ iupAttribStoreStr(ih, "DIRECTORY", dir);
+ free(dir);
+ iupAttribStoreStr(ih, "FILE", value+len);
+ }
+
+ value = iupAttribGet(ih, "DIRECTORY");
+ if (value)
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), iupgtkStrConvertToFilename(value));
+
+ value = iupAttribGet(ih, "FILE");
+ if (value)
+ {
+ if (action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), iupgtkStrConvertToFilename(value));
+ else
+ {
+ if (iupdrvIsFile(value)) /* check if file exists */
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), iupgtkStrConvertToFilename(value));
+ }
+ }
+
+ value = iupAttribGet(ih, "EXTFILTER");
+ if (value)
+ {
+ char *name, *pattern, *filters = iupStrDup(value), *p;
+ char atrib[30];
+ int i;
+ int filter_index = iupAttribGetInt(ih, "FILTERUSED");
+ if (!filter_index)
+ filter_index = 1;
+
+ filter_count = iupStrReplace(filters, '|', 0) / 2;
+
+ p = filters;
+ for (i=0; i<filter_count; i++)
+ {
+ GtkFileFilter *filter = gtk_file_filter_new();
+
+ gtkFileDlgGetNextFilter(&p, &name, &pattern);
+
+ gtk_file_filter_set_name(filter, iupgtkStrConvertToUTF8(name));
+ gtk_file_filter_add_pattern(filter, pattern);
+ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
+
+ sprintf(atrib, "_IUPDLG_FILTER%d", i+1);
+ iupAttribSetStr(ih, atrib, (char*)filter);
+
+ if (i+1 == filter_index)
+ gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter);
+ }
+
+ free(filters);
+ }
+ else
+ {
+ value = iupAttribGet(ih, "FILTER");
+ if (value)
+ {
+ GtkFileFilter *filter = gtk_file_filter_new();
+ char* info = iupAttribGet(ih, "FILTERINFO");
+ if (!info)
+ info = value;
+
+ gtk_file_filter_set_name(filter, iupgtkStrConvertToUTF8(info));
+ gtk_file_filter_add_pattern(filter, value);
+ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
+ }
+ }
+
+ file_cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ if (file_cb && action != GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ {
+ g_signal_connect(GTK_FILE_CHOOSER(dialog), "update-preview", G_CALLBACK(gtkFileDlgUpdatePreview), ih);
+ g_signal_connect(dialog, "realize", G_CALLBACK(gtkFileDlgRealize), ih);
+
+ if (iupAttribGetBoolean(ih, "SHOWPREVIEW"))
+ {
+ GtkWidget* frame = gtk_frame_new(NULL);
+ gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN);
+ gtk_widget_set_size_request(frame, 180, 150);
+
+ preview_canvas = gtk_drawing_area_new();
+ gtk_widget_set_double_buffered(preview_canvas, FALSE);
+ gtk_container_add(GTK_CONTAINER(frame), preview_canvas);
+ gtk_widget_show(preview_canvas);
+
+ g_signal_connect(preview_canvas, "configure-event", G_CALLBACK(gtkFileDlgPreviewConfigureEvent), ih);
+ g_signal_connect(preview_canvas, "expose-event", G_CALLBACK(gtkFileDlgPreviewExposeEvent), ih);
+ g_signal_connect(preview_canvas, "realize", G_CALLBACK(gtkFileDlgPreviewRealize), ih);
+
+ iupAttribSetStr(ih, "_IUPDLG_FILE_CHOOSER", (char*)dialog);
+
+ gtk_file_chooser_set_preview_widget(GTK_FILE_CHOOSER(dialog), frame);
+ }
+ }
+
+ /* initialize the widget */
+ gtk_widget_realize(GTK_WIDGET(dialog));
+
+ ih->handle = GTK_WIDGET(dialog);
+ iupDialogUpdatePosition(ih);
+ ih->handle = NULL; /* reset handle */
+
+ do
+ {
+ response = gtk_dialog_run(GTK_DIALOG(dialog));
+
+ if (response == GTK_RESPONSE_HELP)
+ {
+ Icallback cb = IupGetCallback(ih, "HELP_CB");
+ if (cb && cb(ih) == IUP_CLOSE)
+ response = GTK_RESPONSE_CANCEL;
+ }
+ else if (response == GTK_RESPONSE_OK)
+ {
+ char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+ int file_exist = iupdrvIsFile(filename);
+ int dir_exist = iupdrvIsDirectory(filename);
+ g_free(filename);
+
+ if (action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ {
+ if (!dir_exist)
+ {
+ iupStrMessageShowError(ih, "IUP_INVALIDDIR");
+ response = GTK_RESPONSE_HELP; /* to leave the dialog open */
+ continue;
+ }
+ }
+ else if (!iupAttribGetBoolean(ih, "MULTIPLEFILES"))
+ {
+ if (dir_exist)
+ {
+ iupStrMessageShowError(ih, "IUP_FILEISDIR");
+ response = GTK_RESPONSE_HELP; /* to leave the dialog open */
+ continue;
+ }
+
+ if (!file_exist) /* if do not exist check ALLOWNEW */
+ {
+ value = iupAttribGet(ih, "ALLOWNEW");
+ if (!value)
+ {
+ if (action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ value = "YES";
+ else
+ value = "NO";
+ }
+
+ if (!iupStrBoolean(value))
+ {
+ iupStrMessageShowError(ih, "IUP_FILENOTEXIST");
+ response = GTK_RESPONSE_HELP; /* to leave the dialog open */
+ continue;
+ }
+ }
+
+ if (file_cb)
+ {
+ char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+ int ret = file_cb(ih, iupgtkStrConvertFromFilename(filename), "OK");
+ g_free(filename);
+
+ if (ret == IUP_IGNORE)
+ {
+ response = GTK_RESPONSE_HELP; /* to leave the dialog open */
+ continue;
+ }
+ }
+ }
+ }
+ } while (response == GTK_RESPONSE_HELP);
+
+ if (file_cb)
+ {
+ if (iupAttribGetBoolean(ih, "SHOWPREVIEW"))
+ iupgtkReleaseNativeGraphicsContext(preview_canvas, (void*)iupAttribGet(ih, "PREVIEWDC"));
+
+ file_cb(ih, NULL, "FINISH");
+ }
+
+ if (response == GTK_RESPONSE_OK)
+ {
+ int file_exist, dir_exist;
+
+ if (filter_count)
+ {
+ int i;
+ char atrib[30];
+ GtkFileFilter* filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(dialog));
+
+ for (i=0; i<filter_count; i++)
+ {
+ sprintf(atrib, "_IUPDLG_FILTER%d", i+1);
+ if (filter == (GtkFileFilter*)iupAttribGet(ih, atrib))
+ iupAttribSetInt(ih, "FILTERUSED", i+1);
+ }
+ }
+
+ if (iupAttribGetBoolean(ih, "MULTIPLEFILES"))
+ {
+ GSList* file_list = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));
+
+ if (file_list->next) /* if more than one file */
+ gtkFileDlgGetMultipleFiles(ih, file_list);
+ else
+ {
+ char* filename = (char*)file_list->data;
+ iupAttribStoreStr(ih, "VALUE", iupgtkStrConvertFromFilename(filename));
+ g_free(filename);
+ }
+
+ g_slist_free(file_list);
+ file_exist = 1;
+ dir_exist = 0;
+ }
+ else
+ {
+ char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+ iupAttribStoreStr(ih, "VALUE", iupgtkStrConvertFromFilename(filename));
+ file_exist = iupdrvIsFile(filename);
+ dir_exist = iupdrvIsDirectory(filename);
+ g_free(filename);
+ }
+
+ if (dir_exist)
+ {
+ iupAttribSetStr(ih, "FILEEXIST", NULL);
+ iupAttribSetStr(ih, "STATUS", "0");
+ }
+ else
+ {
+ if (file_exist) /* check if file exists */
+ {
+ iupAttribSetStr(ih, "FILEEXIST", "YES");
+ iupAttribSetStr(ih, "STATUS", "0");
+ }
+ else
+ {
+ iupAttribSetStr(ih, "FILEEXIST", "NO");
+ iupAttribSetStr(ih, "STATUS", "1");
+ }
+ }
+
+ if (action != GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER && !iupAttribGetBoolean(ih, "NOCHANGEDIR")) /* do change the current directory */
+ {
+ /* GtkFileChooser does not change the current directory */
+ char* dir = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(dialog));
+ if (dir) iupdrvSetCurrentDirectory(dir);
+ g_free(dir);
+ }
+ }
+ else
+ {
+ iupAttribSetStr(ih, "FILTERUSED", NULL);
+ iupAttribSetStr(ih, "VALUE", NULL);
+ iupAttribSetStr(ih, "FILEEXIST", NULL);
+ iupAttribSetStr(ih, "STATUS", "-1");
+ }
+
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+
+ return IUP_NOERROR;
+}
+
+void iupdrvFileDlgInitClass(Iclass* ic)
+{
+ ic->DlgPopup = gtkFileDlgPopup;
+
+ /* IupFileDialog Windows and GTK Only */
+ iupClassRegisterAttribute(ic, "EXTFILTER", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FILTERINFO", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FILTERUSED", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MULTIPLEFILES", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/gtk/iupgtk_focus.c b/iup/src/gtk/iupgtk_focus.c
new file mode 100755
index 0000000..fa596ba
--- /dev/null
+++ b/iup/src/gtk/iupgtk_focus.c
@@ -0,0 +1,44 @@
+/** \file
+ * \brief GTK Focus
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+
+#include <stdio.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_focus.h"
+#include "iup_attrib.h"
+#include "iup_drv.h"
+#include "iup_assert.h"
+#include "iup_drv.h"
+
+#include "iupgtk_drv.h"
+
+
+void iupdrvSetFocus(Ihandle *ih)
+{
+ gtk_widget_grab_focus(ih->handle);
+}
+
+gboolean iupgtkFocusInOutEvent(GtkWidget *widget, GdkEventFocus *evt, Ihandle *ih)
+{
+ (void)widget;
+
+ if (evt->in)
+ {
+ /* even when ACTIVE=NO the dialog gets this evt */
+ if (!iupdrvIsActive(ih))
+ return TRUE;
+
+ iupCallGetFocusCb(ih);
+ }
+ else
+ iupCallKillFocusCb(ih);
+
+ return FALSE;
+}
diff --git a/iup/src/gtk/iupgtk_font.c b/iup/src/gtk/iupgtk_font.c
new file mode 100755
index 0000000..f7ff348
--- /dev/null
+++ b/iup/src/gtk/iupgtk_font.c
@@ -0,0 +1,413 @@
+/** \file
+ * \brief GTK Font mapping
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <gtk/gtk.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+#include "iup_attrib.h"
+#include "iup_array.h"
+#include "iup_object.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_assert.h"
+
+#include "iupgtk_drv.h"
+
+
+typedef struct _IgtkFont
+{
+ char standardfont[200];
+ PangoFontDescription* fontdesc;
+ PangoAttribute* strikethrough;
+ PangoAttribute* underline;
+ PangoLayout* layout;
+ int charwidth, charheight;
+} IgtkFont;
+
+static Iarray* gtk_fonts = NULL;
+static PangoContext *gtk_fonts_context = NULL;
+
+static void gtkFontUpdate(IgtkFont* gtkfont)
+{
+ PangoAttrList *attrs;
+
+ pango_layout_set_font_description(gtkfont->layout, gtkfont->fontdesc);
+
+ attrs = pango_layout_get_attributes(gtkfont->layout);
+ if (!attrs)
+ {
+ attrs = pango_attr_list_new();
+ pango_attr_list_insert(attrs, pango_attribute_copy(gtkfont->strikethrough));
+ pango_attr_list_insert(attrs, pango_attribute_copy(gtkfont->underline));
+ pango_layout_set_attributes(gtkfont->layout, attrs);
+ }
+ else
+ {
+ pango_attr_list_change(attrs, pango_attribute_copy(gtkfont->strikethrough));
+ pango_attr_list_change(attrs, pango_attribute_copy(gtkfont->underline));
+ }
+}
+
+static IgtkFont* gtkFindFont(const char *standardfont)
+{
+ PangoFontMetrics* metrics;
+ PangoFontDescription* fontdesc;
+ int i,
+ is_underline = 0,
+ is_strikeout = 0,
+ count = iupArrayCount(gtk_fonts);
+
+ IgtkFont* fonts = (IgtkFont*)iupArrayGetData(gtk_fonts);
+
+ /* Check if the standardfont already exists in cache */
+ for (i = 0; i < count; i++)
+ {
+ if (iupStrEqualNoCase(standardfont, fonts[i].standardfont))
+ return &fonts[i];
+ }
+
+ /* not found, create a new one */
+ {
+ int size = 0, is_pango = 0;
+ int is_bold = 0,
+ is_italic = 0;
+ char typeface[1024];
+ const char* mapped_name;
+
+ /* parse the old Windows format first */
+ if (!iupFontParseWin(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParseX(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParsePango(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ return NULL;
+ else
+ is_pango = 1;
+ }
+ }
+
+ mapped_name = iupFontGetPangoName(typeface);
+ if (mapped_name)
+ strcpy(typeface, mapped_name);
+
+ if (is_pango && !is_underline && !is_strikeout && size>0)
+ fontdesc = pango_font_description_from_string(standardfont);
+ else
+ {
+ char new_standardfont[200];
+ if (size<0)
+ {
+ double res = ((double)gdk_screen_get_width(gdk_screen_get_default()) / (double)gdk_screen_get_width_mm(gdk_screen_get_default())); /* pixels/mm */
+ /* 1 point = 1/72 inch 1 inch = 25.4 mm */
+ /* pixel = ((point/72)*25.4)*pixel/mm */
+ size = (int)((-size/res)*2.83464567 + 0.5); /* from pixels to points */
+ }
+
+ sprintf(new_standardfont, "%s, %s%s%d", typeface, is_bold?"Bold ":"", is_italic?"Italic ":"", size);
+
+ fontdesc = pango_font_description_from_string(new_standardfont);
+ }
+ }
+
+ if (!fontdesc)
+ return NULL;
+
+ /* create room in the array */
+ fonts = (IgtkFont*)iupArrayInc(gtk_fonts);
+
+ strcpy(fonts[i].standardfont, standardfont);
+ fonts[i].fontdesc = fontdesc;
+ fonts[i].strikethrough = pango_attr_strikethrough_new(is_strikeout? TRUE: FALSE);
+ fonts[i].underline = pango_attr_underline_new(is_underline? PANGO_UNDERLINE_SINGLE: PANGO_UNDERLINE_NONE);
+ fonts[i].layout = pango_layout_new(gtk_fonts_context);
+
+ metrics = pango_context_get_metrics(gtk_fonts_context, fontdesc, pango_context_get_language(gtk_fonts_context));
+ fonts[i].charheight = pango_font_metrics_get_ascent(metrics) + pango_font_metrics_get_descent(metrics);
+ fonts[i].charheight = IUPGTK_PANGOUNITS2PIXELS(fonts[i].charheight);
+ fonts[i].charwidth = pango_font_metrics_get_approximate_char_width(metrics);
+ fonts[i].charwidth = IUPGTK_PANGOUNITS2PIXELS(fonts[i].charwidth);
+ pango_font_metrics_unref(metrics);
+
+ gtkFontUpdate(&(fonts[i]));
+
+ return &fonts[i];
+}
+
+static PangoLayout* gtkFontGetWidgetPangoLayout(Ihandle *ih)
+{
+ int inherit;
+ char *def_value;
+ /* only check the native implementation */
+ return (PangoLayout*)iupClassObjectGetAttribute(ih, "PANGOLAYOUT", &def_value, &inherit);
+}
+
+static IgtkFont* gtkFontCreateNativeFont(Ihandle* ih, const char* value)
+{
+ IgtkFont *gtkfont = gtkFindFont(value);
+ if (!gtkfont)
+ {
+ iupERROR1("Failed to create Font: %s", value);
+ return NULL;
+ }
+
+ iupAttribSetStr(ih, "_IUP_GTKFONT", (char*)gtkfont);
+ return gtkfont;
+}
+
+static IgtkFont* gtkFontGet(Ihandle *ih)
+{
+ IgtkFont* gtkfont = (IgtkFont*)iupAttribGet(ih, "_IUP_GTKFONT");
+ if (!gtkfont)
+ gtkfont = gtkFontCreateNativeFont(ih, iupGetFontAttrib(ih));
+ return gtkfont;
+}
+
+void iupgtkFontUpdatePangoLayout(Ihandle* ih, PangoLayout* layout)
+{
+ IgtkFont* gtkfont;
+ PangoAttrList *attrs;
+
+ if (!layout)
+ return;
+
+ gtkfont = gtkFontGet(ih);
+ if (!gtkfont)
+ return;
+
+ attrs = pango_layout_get_attributes(layout);
+ if (!attrs)
+ {
+ attrs = pango_attr_list_new();
+ pango_attr_list_insert(attrs, pango_attribute_copy(gtkfont->strikethrough));
+ pango_attr_list_insert(attrs, pango_attribute_copy(gtkfont->underline));
+ pango_layout_set_attributes(layout, attrs);
+ }
+ else
+ {
+ pango_attr_list_change(attrs, pango_attribute_copy(gtkfont->strikethrough));
+ pango_attr_list_change(attrs, pango_attribute_copy(gtkfont->underline));
+ }
+}
+
+void iupgtkFontUpdateObjectPangoLayout(Ihandle* ih, gpointer object)
+{
+ PangoAttrList *attrs;
+
+ IgtkFont* gtkfont = gtkFontGet(ih);
+ if (!gtkfont)
+ return;
+
+ g_object_get(object, "attributes", &attrs, NULL);
+ if (!attrs)
+ {
+ attrs = pango_attr_list_new();
+ pango_attr_list_insert(attrs, pango_attribute_copy(gtkfont->strikethrough));
+ pango_attr_list_insert(attrs, pango_attribute_copy(gtkfont->underline));
+ g_object_set(object, "attributes", attrs, NULL);
+ }
+ else
+ {
+ pango_attr_list_change(attrs, pango_attribute_copy(gtkfont->strikethrough));
+ pango_attr_list_change(attrs, pango_attribute_copy(gtkfont->underline));
+ }
+}
+
+char* iupdrvGetSystemFont(void)
+{
+ static char systemfont[200] = "";
+ GtkStyle* style;
+ GtkWidget* widget = gtk_invisible_new();
+ gtk_widget_realize(widget);
+ style = gtk_widget_get_style(widget);
+ if (!style || !style->font_desc)
+ strcpy(systemfont, "Sans, 10");
+ else
+ {
+ char* desc = pango_font_description_to_string(style->font_desc);
+ strcpy(systemfont, desc);
+ g_free(desc);
+ }
+ gtk_widget_unrealize(widget);
+ gtk_widget_destroy(widget);
+ return systemfont;
+}
+
+char* iupgtkFindPangoFontDesc(PangoFontDescription* fontdesc)
+{
+ int i, count = iupArrayCount(gtk_fonts);
+ IgtkFont* fonts = (IgtkFont*)iupArrayGetData(gtk_fonts);
+
+ /* Check if the standardfont already exists in cache */
+ for (i = 0; i < count; i++)
+ {
+ if (pango_font_description_equal(fontdesc, fonts[i].fontdesc))
+ return fonts[i].standardfont;
+ }
+
+ return NULL;
+}
+
+PangoFontDescription* iupgtkGetPangoFontDesc(const char* value)
+{
+ IgtkFont *gtkfont = gtkFindFont(value);
+ if (!gtkfont)
+ {
+ iupERROR1("Failed to create Font: %s", value);
+ return NULL;
+ }
+ return gtkfont->fontdesc;
+}
+
+char* iupgtkGetPangoFontDescAttrib(Ihandle *ih)
+{
+ IgtkFont* gtkfont = gtkFontGet(ih);
+ if (!gtkfont)
+ return NULL;
+ else
+ return (char*)gtkfont->fontdesc;
+}
+
+char* iupgtkGetFontIdAttrib(Ihandle *ih)
+{
+ IgtkFont* gtkfont = gtkFontGet(ih);
+ if (!gtkfont)
+ return NULL;
+ else
+ {
+ GdkFont* gdk_font = gdk_font_from_description(gtkfont->fontdesc);
+ return (char*)gdk_font_id(gdk_font); /* In UNIX will return an X Font ID, in Win32 will return an HFONT */
+ }
+}
+
+int iupdrvSetStandardFontAttrib(Ihandle* ih, const char* value)
+{
+ IgtkFont* gtkfont = gtkFontCreateNativeFont(ih, value);
+ if (!gtkfont)
+ return 1;
+
+ /* If FONT is changed, must update the SIZE attribute */
+ iupBaseUpdateSizeFromFont(ih);
+
+ /* FONT attribute must be able to be set before mapping,
+ so the font is enable for size calculation. */
+ if (ih->handle && (ih->iclass->nativetype != IUP_TYPEVOID))
+ {
+ gtk_widget_modify_font(ih->handle, gtkfont->fontdesc);
+ iupgtkFontUpdatePangoLayout(ih, gtkFontGetWidgetPangoLayout(ih));
+ }
+
+ return 1;
+}
+
+void iupdrvFontGetMultiLineStringSize(Ihandle* ih, const char* str, int *w, int *h)
+{
+ int max_w;
+
+ IgtkFont* gtkfont = gtkFontGet(ih);
+ if (!gtkfont)
+ {
+ if (w) *w = 0;
+ if (h) *h = 0;
+ return;
+ }
+
+ if (!str)
+ {
+ if (w) *w = 0;
+ if (h) *h = gtkfont->charheight * 1;
+ return;
+ }
+
+ max_w = 0;
+ if (str[0])
+ {
+ int dummy_h;
+
+ pango_layout_set_attributes(gtkfont->layout, NULL);
+
+ if (iupAttribGetBoolean(ih, "MARKUP"))
+ pango_layout_set_markup(gtkfont->layout, iupgtkStrConvertToUTF8(str), -1);
+ else
+ pango_layout_set_text(gtkfont->layout, iupgtkStrConvertToUTF8(str), -1);
+
+ pango_layout_get_pixel_size(gtkfont->layout, &max_w, &dummy_h);
+ }
+
+ if (w) *w = max_w;
+ if (h) *h = gtkfont->charheight * iupStrLineCount(str);
+}
+
+int iupdrvFontGetStringWidth(Ihandle* ih, const char* str)
+{
+ IgtkFont* gtkfont;
+ int len, w;
+ char* line_end;
+
+ if (!str || str[0]==0)
+ return 0;
+
+ gtkfont = gtkFontGet(ih);
+ if (!gtkfont)
+ return 0;
+
+ line_end = strchr(str, '\n');
+ if (line_end)
+ len = line_end-str;
+ else
+ len = strlen(str);
+
+ if (iupAttribGetBoolean(ih, "MARKUP"))
+ pango_layout_set_markup(gtkfont->layout, iupgtkStrConvertToUTF8(str), len);
+ else
+ pango_layout_set_text(gtkfont->layout, iupgtkStrConvertToUTF8(str), len);
+
+ pango_layout_get_pixel_size(gtkfont->layout, &w, NULL);
+ return w;
+}
+
+void iupdrvFontGetCharSize(Ihandle* ih, int *charwidth, int *charheight)
+{
+ IgtkFont* gtkfont = gtkFontGet(ih);
+ if (!gtkfont)
+ {
+ if (charwidth) *charwidth = 0;
+ if (charheight) *charheight = 0;
+ return;
+ }
+
+ if (charheight)
+ *charheight = gtkfont->charheight;
+
+ if (charwidth)
+ *charwidth = gtkfont->charwidth;
+}
+
+void iupdrvFontInit(void)
+{
+ gtk_fonts = iupArrayCreate(50, sizeof(IgtkFont));
+ gtk_fonts_context = gdk_pango_context_get();
+ pango_context_set_language(gtk_fonts_context, gtk_get_default_language());
+}
+
+void iupdrvFontFinish(void)
+{
+ int i, count = iupArrayCount(gtk_fonts);
+ IgtkFont* fonts = (IgtkFont*)iupArrayGetData(gtk_fonts);
+ for (i = 0; i < count; i++)
+ {
+ pango_font_description_free(fonts[i].fontdesc);
+ pango_attribute_destroy(fonts[i].strikethrough);
+ pango_attribute_destroy(fonts[i].underline);
+ }
+ iupArrayDestroy(gtk_fonts);
+ g_object_unref(gtk_fonts_context);
+}
diff --git a/iup/src/gtk/iupgtk_fontdlg.c b/iup/src/gtk/iupgtk_fontdlg.c
new file mode 100755
index 0000000..5769cbc
--- /dev/null
+++ b/iup/src/gtk/iupgtk_fontdlg.c
@@ -0,0 +1,91 @@
+/** \file
+ * \brief IupFontDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+
+#include <string.h>
+#include <memory.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_dialog.h"
+
+#include "iupgtk_drv.h"
+
+
+static int gtkFontDlgPopup(Ihandle* ih, int x, int y)
+{
+ InativeHandle* parent = iupDialogGetNativeParent(ih);
+ GtkFontSelectionDialog* dialog;
+ int response;
+ char* preview_text;
+
+ iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */
+ iupAttribSetInt(ih, "_IUPDLG_Y", y);
+
+ dialog = (GtkFontSelectionDialog*)gtk_font_selection_dialog_new(iupgtkStrConvertToUTF8(iupAttribGet(ih, "TITLE")));
+ if (!dialog)
+ return IUP_ERROR;
+
+ if (parent)
+ gtk_window_set_transient_for((GtkWindow*)dialog, (GtkWindow*)parent);
+
+ gtk_font_selection_dialog_set_font_name(dialog, iupAttribGet(ih, "VALUE"));
+
+ preview_text = iupAttribGet(ih, "PREVIEWTEXT");
+ if (preview_text)
+ gtk_font_selection_dialog_set_preview_text(dialog, preview_text);
+
+ if (IupGetCallback(ih, "HELP_CB"))
+ gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_HELP, GTK_RESPONSE_HELP);
+
+ /* initialize the widget */
+ gtk_widget_realize(GTK_WIDGET(dialog));
+
+ ih->handle = GTK_WIDGET(dialog);
+ iupDialogUpdatePosition(ih);
+ ih->handle = NULL;
+
+ do
+ {
+ response = gtk_dialog_run(GTK_DIALOG(dialog));
+
+ if (response == GTK_RESPONSE_HELP)
+ {
+ Icallback cb = IupGetCallback(ih, "HELP_CB");
+ if (cb && cb(ih) == IUP_CLOSE)
+ response = GTK_RESPONSE_CANCEL;
+ }
+ } while (response == GTK_RESPONSE_HELP);
+
+ if (response == GTK_RESPONSE_OK)
+ {
+ char* fontname = gtk_font_selection_dialog_get_font_name(dialog);
+ iupAttribStoreStr(ih, "VALUE", fontname);
+ g_free(fontname);
+ iupAttribSetStr(ih, "STATUS", "1");
+ }
+ else
+ {
+ iupAttribSetStr(ih, "VALUE", NULL);
+ iupAttribSetStr(ih, "STATUS", NULL);
+ }
+
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+
+ return IUP_NOERROR;
+}
+
+void iupdrvFontDlgInitClass(Iclass* ic)
+{
+ ic->DlgPopup = gtkFontDlgPopup;
+
+ /* IupFontDialog GTK Only */
+ iupClassRegisterAttribute(ic, "PREVIEWTEXT", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/gtk/iupgtk_frame.c b/iup/src/gtk/iupgtk_frame.c
new file mode 100755
index 0000000..022c6c7
--- /dev/null
+++ b/iup/src/gtk/iupgtk_frame.c
@@ -0,0 +1,155 @@
+/** \file
+ * \brief Frame Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_dialog.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+
+#include "iupgtk_drv.h"
+
+
+void iupdrvFrameGetDecorOffset(Ihandle* ih, int *x, int *y)
+{
+ (void)ih;
+ *x = 0;
+ *y = 0;
+}
+
+static char* gtkFrameGetTitleAttrib(Ihandle* ih)
+{
+ GtkFrame* frame = (GtkFrame*)ih->handle;
+ return iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(gtk_frame_get_label(frame)));
+}
+
+static int gtkFrameSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ GtkFrame* frame = (GtkFrame*)ih->handle;
+ gtk_frame_set_label(frame, iupgtkStrConvertToUTF8(value));
+ return 0;
+}
+
+static int gtkFrameSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ GtkWidget* label = gtk_frame_get_label_widget((GtkFrame*)ih->handle);
+
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ if (label)
+ iupgtkBaseSetBgColor(label, r, g, b);
+
+ iupgtkBaseSetBgColor(ih->handle, r, g, b);
+
+ return 1;
+}
+
+static int gtkFrameSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ GtkWidget* label = gtk_frame_get_label_widget((GtkFrame*)ih->handle);
+ if (!label) return 0;
+
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ iupgtkBaseSetFgColor(label, r, g, b);
+
+ return 1;
+}
+
+static int gtkFrameSetStandardFontAttrib(Ihandle* ih, const char* value)
+{
+ iupdrvSetStandardFontAttrib(ih, value);
+
+ if (ih->handle)
+ {
+ GtkWidget* label = gtk_frame_get_label_widget((GtkFrame*)ih->handle);
+ if (!label) return 1;
+
+ gtk_widget_modify_font(label, (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih));
+ iupgtkFontUpdatePangoLayout(ih, gtk_label_get_layout((GtkLabel*)label));
+ }
+ return 1;
+}
+
+static void* gtkFrameGetInnerNativeContainerHandleMethod(Ihandle* ih, Ihandle* child)
+{
+ (void)child;
+ return (void*)gtk_bin_get_child((GtkBin*)ih->handle);
+}
+
+static int gtkFrameMapMethod(Ihandle* ih)
+{
+ char *value, *title;
+ GtkWidget *fixed;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ title = iupAttribGet(ih, "TITLE");
+
+ ih->handle = gtk_frame_new(NULL);
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ if (title)
+ iupAttribSetStr(ih, "_IUPFRAME_HAS_TITLE", "1");
+ else
+ {
+ value = iupAttribGetStr(ih, "SUNKEN");
+ if (iupStrBoolean(value))
+ gtk_frame_set_shadow_type((GtkFrame*)ih->handle, GTK_SHADOW_IN);
+ else
+ gtk_frame_set_shadow_type((GtkFrame*)ih->handle, GTK_SHADOW_ETCHED_IN);
+ }
+
+ /* the container that will receive the child element. */
+ fixed = gtk_fixed_new();
+ gtk_container_add((GtkContainer*)ih->handle, fixed);
+ gtk_widget_show(fixed);
+
+ /* Add to the parent, all GTK controls must call this. */
+ iupgtkBaseAddToParent(ih);
+
+ gtk_widget_realize(ih->handle);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvFrameInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkFrameMapMethod;
+ ic->GetInnerNativeContainerHandle = gtkFrameGetInnerNativeContainerHandleMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Overwrite Common */
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, gtkFrameSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED);
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkFrameSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, gtkFrameSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "TITLE", gtkFrameGetTitleAttrib, gtkFrameSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/gtk/iupgtk_globalattrib.c b/iup/src/gtk/iupgtk_globalattrib.c
new file mode 100755
index 0000000..eebe799
--- /dev/null
+++ b/iup/src/gtk/iupgtk_globalattrib.c
@@ -0,0 +1,211 @@
+/** \file
+ * \brief GTK Driver iupdrvSetGlobal
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <string.h>
+
+#include <gtk/gtk.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvinfo.h"
+#include "iup_strmessage.h"
+
+#include "iupgtk_drv.h"
+
+
+int iupgtk_utf8autoconvert = 1;
+
+static void gtkGlobalSendKey(int key, int press)
+{
+ Ihandle* focus;
+ gint nkeys = 0;
+ GdkKeymapKey *keys;
+ GdkEventKey evt;
+ memset(&evt, 0, sizeof(GdkEventKey));
+ evt.send_event = TRUE;
+
+ focus = IupGetFocus();
+ if (!focus)
+ return;
+ evt.window = focus->handle->window;
+
+ iupgtkKeyEncode(key, &evt.keyval, &evt.state);
+ if (!evt.keyval)
+ return;
+
+ if (!gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), evt.keyval, &keys, &nkeys))
+ return;
+ evt.hardware_keycode = (guint16)keys[0].keycode;
+ evt.group = (guint8)keys[0].group;
+
+ if (press & 0x01)
+ {
+ evt.type = GDK_KEY_PRESS;
+ gdk_display_put_event(gdk_display_get_default(), (GdkEvent*)&evt);
+ }
+
+ if (press & 0x02)
+ {
+ evt.type = GDK_KEY_RELEASE;
+ gdk_display_put_event(gdk_display_get_default(), (GdkEvent*)&evt);
+ }
+}
+
+int iupdrvSetGlobal(const char *name, const char *value)
+{
+ if (iupStrEqual(name, "LANGUAGE"))
+ {
+ iupStrMessageUpdateLanguage(value);
+ return 1;
+ }
+ if (iupStrEqual(name, "CURSORPOS"))
+ {
+#if GTK_CHECK_VERSION(2, 8, 0)
+ int x, y;
+ if (iupStrToIntInt(value, &x, &y, 'x') == 2)
+ gdk_display_warp_pointer(gdk_display_get_default(), gdk_screen_get_default(), x, y);
+#endif
+ return 0;
+ }
+ if (iupStrEqual(name, "UTF8AUTOCONVERT"))
+ {
+ if (!value || iupStrBoolean(value))
+ iupgtk_utf8autoconvert = 1;
+ else
+ iupgtk_utf8autoconvert = 0;
+ return 0;
+ }
+ if (iupStrEqual(name, "KEYPRESS"))
+ {
+ int key;
+ if (iupStrToInt(value, &key))
+ gtkGlobalSendKey(key, 0x01);
+ return 0;
+ }
+ if (iupStrEqual(name, "KEYRELEASE"))
+ {
+ int key;
+ if (iupStrToInt(value, &key))
+ gtkGlobalSendKey(key, 0x02);
+ return 0;
+ }
+ if (iupStrEqual(name, "KEY"))
+ {
+ int key;
+ if (iupStrToInt(value, &key))
+ gtkGlobalSendKey(key, 0x03);
+ return 0;
+ }
+ return 1;
+}
+
+char *iupdrvGetGlobal(const char *name)
+{
+ if (iupStrEqual(name, "CURSORPOS"))
+ {
+ char *str = iupStrGetMemory(50);
+ int x, y;
+ iupdrvGetCursorPos(&x, &y);
+ sprintf(str, "%dx%d", (int)x, (int)y);
+ return str;
+ }
+ if (iupStrEqual(name, "SHIFTKEY"))
+ {
+ char key[5];
+ iupdrvGetKeyState(key);
+ if (key[0] == 'S')
+ return "ON";
+ else
+ return "OFF";
+ }
+ if (iupStrEqual(name, "CONTROLKEY"))
+ {
+ char key[5];
+ iupdrvGetKeyState(key);
+ if (key[1] == 'C')
+ return "ON";
+ else
+ return "OFF";
+ }
+ if (iupStrEqual(name, "MODKEYSTATE"))
+ {
+ char *str = iupStrGetMemory(5);
+ iupdrvGetKeyState(str);
+ return str;
+ }
+ if (iupStrEqual(name, "SCREENSIZE"))
+ {
+ char *str = iupStrGetMemory(50);
+ int w, h;
+ iupdrvGetScreenSize(&w, &h);
+ sprintf(str, "%dx%d", w, h);
+ return str;
+ }
+ if (iupStrEqual(name, "FULLSIZE"))
+ {
+ char *str = iupStrGetMemory(50);
+ int w, h;
+ iupdrvGetFullSize(&w, &h);
+ sprintf(str, "%dx%d", w, h);
+ return str;
+ }
+ if (iupStrEqual(name, "SCREENDEPTH"))
+ {
+ char *str = iupStrGetMemory(50);
+ int bpp = iupdrvGetScreenDepth();
+ sprintf(str, "%d", bpp);
+ return str;
+ }
+ if (iupStrEqual(name, "VIRTUALSCREEN"))
+ {
+ char *str = iupStrGetMemory(50);
+ GdkScreen *screen = gdk_screen_get_default();
+ GdkWindow *root = gdk_screen_get_root_window(gdk_screen_get_default());
+ int x = 0;
+ int y = 0;
+ int w = gdk_screen_get_width(screen);
+ int h = gdk_screen_get_height(screen);
+ gdk_window_get_root_origin(root, &x, &y);
+ sprintf(str, "%d %d %d %d", x, y, w, h);
+ return str;
+ }
+ if (iupStrEqual(name, "MONITORSINFO"))
+ {
+ int i;
+ GdkScreen *screen = gdk_screen_get_default();
+ int monitors_count = gdk_screen_get_n_monitors(screen);
+ char *str = iupStrGetMemory(monitors_count*50);
+ char* pstr = str;
+ GdkRectangle rect;
+
+ for (i=0; i < monitors_count; i++)
+ {
+ gdk_screen_get_monitor_geometry(screen, i, &rect);
+ pstr += sprintf(pstr, "%d %d %d %d\n", rect.x, rect.y, rect.width, rect.height);
+ }
+
+ return str;
+ }
+ if (iupStrEqual(name, "TRUECOLORCANVAS"))
+ {
+ if (gdk_visual_get_best_depth() > 8)
+ return "YES";
+ else
+ return "NO";
+ }
+ if (iupStrEqual(name, "UTF8AUTOCONVERT"))
+ {
+ if (iupgtk_utf8autoconvert)
+ return "YES";
+ else
+ return "NO";
+ }
+ return NULL;
+}
diff --git a/iup/src/gtk/iupgtk_help.c b/iup/src/gtk/iupgtk_help.c
new file mode 100755
index 0000000..270677f
--- /dev/null
+++ b/iup/src/gtk/iupgtk_help.c
@@ -0,0 +1,52 @@
+/** \file
+ * \brief GTK Driver IupHelp for non Windows systems
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <glib.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+
+int IupHelp(const char *url)
+{
+ GError *error = NULL;
+ gchar *argv[3];
+ int ret;
+ char *browser = getenv("IUP_HELPAPP");
+ if (!browser)
+ browser = IupGetGlobal("HELPAPP");
+
+ if (!browser)
+ {
+ char* system = IupGetGlobal("SYSTEM");
+ if (iupStrEqualNoCase(system, "Linux") ||
+ iupStrEqualNoCase(system, "FreeBSD"))
+ browser = "firefox";
+ else if (iupStrEqualNoCase(system, "Darwin"))
+ browser = "safari";
+ else if (iupStrEqualPartial(system, "CYGWIN"))
+ browser = "iexplore";
+ else
+ browser = "netscape";
+ }
+
+ argv[0] = browser;
+ argv[1] = (gchar*)url;
+ argv[2] = NULL;
+
+ ret = g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &error);
+
+ if (error)
+ g_error_free(error);
+
+ if (!ret)
+ return -1;
+ return 1;
+}
diff --git a/iup/src/gtk/iupgtk_image.c b/iup/src/gtk/iupgtk_image.c
new file mode 100755
index 0000000..b261974
--- /dev/null
+++ b/iup/src/gtk/iupgtk_image.c
@@ -0,0 +1,430 @@
+/** \file
+ * \brief Image Resource.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <memory.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_image.h"
+#include "iup_drvinfo.h"
+
+#include "iupgtk_drv.h"
+
+
+void iupdrvImageGetRawData(void* handle, unsigned char* imgdata)
+{
+ GdkPixbuf* pixbuf = (GdkPixbuf*)handle;
+ int w, h, y, x, bpp;
+ guchar *pixdata, *pixline_data;
+ int rowstride, channels, planesize;
+ unsigned char *r, *g, *b, *a;
+
+ if (!iupdrvImageGetInfo(handle, &w, &h, &bpp))
+ return;
+
+ if (bpp==8)
+ return;
+
+ pixdata = gdk_pixbuf_get_pixels(pixbuf);
+ rowstride = gdk_pixbuf_get_rowstride(pixbuf);
+ channels = gdk_pixbuf_get_n_channels(pixbuf);
+
+ /* planes are separated in imgdata */
+ planesize = w*h;
+ r = imgdata;
+ g = imgdata+planesize;
+ b = imgdata+2*planesize;
+ a = imgdata+3*planesize;
+ for (y=0; y<h; y++)
+ {
+ int lineoffset = (h-1 - y)*w; /* imgdata is bottom up */
+ pixline_data = pixdata + y * rowstride;
+ for(x=0;x<w;x++)
+ {
+ int pos = x*channels;
+ r[lineoffset+x] = pixline_data[pos];
+ g[lineoffset+x] = pixline_data[pos+1];
+ b[lineoffset+x] = pixline_data[pos+2];
+
+ if (bpp == 32)
+ a[lineoffset+x] = pixline_data[pos+3];
+ }
+ }
+}
+
+void* iupdrvImageCreateImageRaw(int width, int height, int bpp, iupColor* colors, int colors_count, unsigned char *imgdata)
+{
+ GdkPixbuf* pixbuf;
+ guchar *pixdata, *pixline_data;
+ int rowstride, channels;
+ unsigned char *line_data;
+ int x, y, has_alpha = (bpp==32);
+ (void)colors_count;
+
+ pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, has_alpha, 8, width, height);
+ if (!pixbuf)
+ return NULL;
+
+ pixdata = gdk_pixbuf_get_pixels(pixbuf);
+ rowstride = gdk_pixbuf_get_rowstride(pixbuf);
+ channels = gdk_pixbuf_get_n_channels(pixbuf);
+
+ /* GdkPixbuf is top-bottom */
+ /* imgdata is bottom up */
+
+ if (bpp == 8)
+ {
+ for (y=0; y<height; y++)
+ {
+ pixline_data = pixdata + y * rowstride;
+ line_data = imgdata + (height-1 - y) * width; /* imgdata is bottom up */
+
+ for (x=0; x<width; x++)
+ {
+ unsigned char index = line_data[x];
+ iupColor* c = &colors[index];
+ guchar *r = &pixline_data[channels*x],
+ *g = r+1,
+ *b = g+1;
+
+ *r = c->r;
+ *g = c->g;
+ *b = c->b;
+ }
+ }
+ }
+ else /* bpp == 32 or bpp == 24 */
+ {
+ /* planes are separated in imgdata */
+ int planesize = width*height;
+ unsigned char *r = imgdata,
+ *g = imgdata+planesize,
+ *b = imgdata+2*planesize,
+ *a = imgdata+3*planesize;
+ for (y=0; y<height; y++)
+ {
+ int lineoffset = (height-1 - y)*width; /* imgdata is bottom up */
+ pixline_data = pixdata + y * rowstride;
+ for(x=0;x<width;x++)
+ {
+ int pos = x*channels;
+ pixline_data[pos] = r[lineoffset+x];
+ pixline_data[pos+1] = g[lineoffset+x];
+ pixline_data[pos+2] = b[lineoffset+x];
+
+ if (bpp == 32)
+ pixline_data[pos+3] = a[lineoffset+x];
+ }
+ }
+ }
+
+ return pixbuf;
+}
+
+void* iupdrvImageCreateImage(Ihandle *ih, const char* bgcolor, int make_inactive)
+{
+ GdkPixbuf* pixbuf;
+ guchar *pixdata, *pixline_data;
+ int rowstride, channels;
+ unsigned char *imgdata, *line_data, bg_r=0, bg_g=0, bg_b=0;
+ int x, y, i, bpp, colors_count = 0, has_alpha = 0;
+ iupColor colors[256];
+
+ bpp = iupAttribGetInt(ih, "BPP");
+
+ if (bpp == 8)
+ has_alpha = iupImageInitColorTable(ih, colors, &colors_count);
+ else if (bpp == 32)
+ has_alpha = 1;
+
+ pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, has_alpha, 8, ih->currentwidth, ih->currentheight);
+ if (!pixbuf)
+ return NULL;
+
+ pixdata = gdk_pixbuf_get_pixels(pixbuf);
+ rowstride = gdk_pixbuf_get_rowstride(pixbuf);
+ channels = gdk_pixbuf_get_n_channels(pixbuf);
+ imgdata = (unsigned char*)iupAttribGetStr(ih, "WID");
+
+ if (make_inactive)
+ iupStrToRGB(bgcolor, &bg_r, &bg_g, &bg_b);
+
+ if (bpp == 8)
+ {
+ if (make_inactive)
+ {
+ for (i=0;i<colors_count;i++)
+ {
+ if (colors[i].a == 0)
+ {
+ colors[i].r = bg_r;
+ colors[i].g = bg_g;
+ colors[i].b = bg_b;
+ colors[i].a = 255;
+ }
+
+ iupImageColorMakeInactive(&(colors[i].r), &(colors[i].g), &(colors[i].b),
+ bg_r, bg_g, bg_b);
+ }
+ }
+
+ for (y=0; y<ih->currentheight; y++)
+ {
+ pixline_data = pixdata + y * rowstride;
+ line_data = imgdata + y * ih->currentwidth;
+
+ for (x=0; x<ih->currentwidth; x++)
+ {
+ unsigned char index = line_data[x];
+ iupColor* c = &colors[index];
+ guchar *r = &pixline_data[channels*x],
+ *g = r+1,
+ *b = g+1,
+ *a = b+1;
+
+ *r = c->r;
+ *g = c->g;
+ *b = c->b;
+
+ if (has_alpha)
+ *a = c->a;
+ }
+ }
+ }
+ else /* bpp == 32 or bpp == 24 */
+ {
+ for (y=0; y<ih->currentheight; y++)
+ {
+ pixline_data = pixdata + y * rowstride;
+ line_data = imgdata + y * ih->currentwidth*channels;
+
+ memcpy(pixline_data, line_data, ih->currentwidth*channels);
+
+ if (make_inactive)
+ {
+ for (x=0; x<ih->currentwidth; x++)
+ {
+ guchar *r = &pixline_data[channels*x],
+ *g = r+1,
+ *b = g+1,
+ *a = b+1;
+
+ if (has_alpha)
+ {
+ if (*a != 255)
+ {
+ *r = iupALPHABLEND(*r, bg_r, *a);
+ *g = iupALPHABLEND(*g, bg_g, *a);
+ *b = iupALPHABLEND(*b, bg_b, *a);
+ }
+ else
+ *a = 255;
+ }
+
+ iupImageColorMakeInactive(r, g, b,
+ bg_r, bg_g, bg_b);
+ }
+ }
+ }
+ }
+
+ return pixbuf;
+}
+
+void* iupdrvImageCreateIcon(Ihandle *ih)
+{
+ return iupdrvImageCreateImage(ih, NULL, 0);
+}
+
+void* iupdrvImageCreateCursor(Ihandle *ih)
+{
+ GdkCursor *cursor;
+ int hx, hy, bpp;
+
+ hx=0; hy=0;
+ iupStrToIntInt(iupAttribGet(ih, "HOTSPOT"), &hx, &hy, ':');
+
+ bpp = iupAttribGetInt(ih, "BPP");
+
+ if (bpp == 8 && !iupAttribGet(ih, "3"))
+ {
+ GdkPixmap *source, *mask;
+ GdkColor fg, bg;
+ unsigned char r, g, b;
+ char *sbits, *mbits, *sb, *mb;
+ int y, x, line_size = (ih->currentwidth+7)/8;
+ int size_bytes = line_size*ih->currentheight;
+ unsigned char* imgdata = (unsigned char*)iupAttribGetStr(ih, "WID");
+
+ r = 255; g = 255; b = 255;
+ iupStrToRGB(iupAttribGet(ih, "1"), &r, &g, &b );
+ iupgdkColorSet(&fg, r, g, b);
+
+ r = 0; g = 0; b = 0;
+ iupStrToRGB(iupAttribGet(ih, "2"), &r, &g, &b );
+ iupgdkColorSet(&bg, r, g, b);
+
+ sbits = (char*)malloc(2*size_bytes);
+ if (!sbits) return NULL;
+ memset(sbits, 0, 2*size_bytes);
+ mbits = sbits + size_bytes;
+
+ sb = sbits;
+ mb = mbits;
+ for (y=0; y<ih->currentheight; y++)
+ {
+ for (x=0; x<ih->currentwidth; x++)
+ {
+ int byte = x/8;
+ int bit = x%8;
+ int index = (int)imgdata[y*ih->currentwidth+x];
+ /* index==0 is transparent */
+ if (index == 1)
+ sb[byte] = (char)(sb[byte] | (1<<bit));
+ if (index != 0)
+ mb[byte] = (char)(mb[byte] | (1<<bit));
+ }
+
+ sb += line_size;
+ mb += line_size;
+ }
+
+ source = gdk_bitmap_create_from_data(NULL, sbits, ih->currentwidth, ih->currentheight);
+ mask = gdk_bitmap_create_from_data(NULL, mbits, ih->currentwidth, ih->currentheight);
+
+ cursor = gdk_cursor_new_from_pixmap(source, mask, &fg, &bg, hx, hy);
+
+ gdk_pixmap_unref(source);
+ gdk_pixmap_unref(mask);
+ free(sbits);
+ }
+ else
+ {
+ GdkPixbuf* pixbuf = iupdrvImageCreateImage(ih, NULL, 0);
+ cursor = gdk_cursor_new_from_pixbuf(gdk_display_get_default(), pixbuf, hx, hy);
+ g_object_unref(pixbuf);
+ }
+
+ return cursor;
+}
+
+void* iupdrvImageCreateMask(Ihandle *ih)
+{
+ int bpp;
+ GdkPixmap *mask;
+ char *bits, *sb;
+ int y, x, line_size = (ih->currentwidth+7)/8;
+ int size_bytes = line_size*ih->currentheight;
+ unsigned char* imgdata = (unsigned char*)iupAttribGetStr(ih, "WID");
+ unsigned char colors[256];
+
+ bpp = iupAttribGetInt(ih, "BPP");
+ if (bpp > 8)
+ return NULL;
+
+ bits = (char*)malloc(size_bytes);
+ if (!bits) return NULL;
+ memset(bits, 0, size_bytes);
+
+ iupImageInitNonBgColors(ih, colors);
+
+ sb = bits;
+ for (y=0; y<ih->currentheight; y++)
+ {
+ for (x=0; x<ih->currentwidth; x++)
+ {
+ int byte = x/8;
+ int bit = x%8;
+ int index = (int)imgdata[y*ih->currentwidth+x];
+ if (colors[index])
+ sb[byte] = (char)(sb[byte] | (1<<bit));
+ }
+
+ sb += line_size;
+ }
+
+ mask = gdk_bitmap_create_from_data(NULL, bits, ih->currentwidth, ih->currentheight);
+
+ free(bits);
+
+ return mask;
+}
+
+void* iupdrvImageLoad(const char* name, int type)
+{
+ if (type == IUPIMAGE_CURSOR)
+#if GTK_CHECK_VERSION(2, 8, 0)
+ return gdk_cursor_new_from_name(gdk_display_get_default(), name);
+#else
+ return NULL;
+#endif
+ else
+ {
+ GtkIconTheme *icon_theme;
+ GdkPixbuf *pixbuf = NULL;
+
+ icon_theme = gtk_icon_theme_get_default();
+ if (gtk_icon_theme_has_icon(icon_theme, name))
+ {
+ GError *error = NULL;
+ pixbuf = gtk_icon_theme_load_icon(icon_theme, name,
+ 24, /* size */
+ 0, /* flags */
+ &error);
+ if (error)
+ g_error_free(error);
+ }
+
+ if (!pixbuf)
+ {
+ GError *error = NULL;
+ pixbuf = gdk_pixbuf_new_from_file(name, &error);
+ if (error)
+ g_error_free(error);
+ }
+
+ return pixbuf;
+ }
+}
+
+int iupdrvImageGetInfo(void* handle, int *w, int *h, int *bpp)
+{
+ GdkPixbuf* pixbuf = (GdkPixbuf*)handle;
+ if (!GDK_IS_PIXBUF(pixbuf))
+ {
+ if (w) *w = 0;
+ if (h) *h = 0;
+ if (bpp) *bpp = 0;
+ return 0;
+ }
+ if (w) *w = gdk_pixbuf_get_width(pixbuf);
+ if (h) *h = gdk_pixbuf_get_height(pixbuf);
+ if (bpp) *bpp = iupImageNormBpp(gdk_pixbuf_get_bits_per_sample(pixbuf)*gdk_pixbuf_get_n_channels(pixbuf));
+ return 1;
+}
+
+int iupdrvImageGetRawInfo(void* handle, int *w, int *h, int *bpp, iupColor* colors, int *colors_count)
+{
+ /* GdkPixbuf are only 24 bpp or 32 bpp */
+ (void)colors;
+ (void)colors_count;
+ return iupdrvImageGetInfo(handle, w, h, bpp);
+}
+
+void iupdrvImageDestroy(void* handle, int type)
+{
+ if (type == IUPIMAGE_CURSOR)
+ gdk_cursor_unref((GdkCursor*)handle);
+ else
+ g_object_unref(handle);
+}
diff --git a/iup/src/gtk/iupgtk_key.c b/iup/src/gtk/iupgtk_key.c
new file mode 100755
index 0000000..5aec919
--- /dev/null
+++ b/iup/src/gtk/iupgtk_key.c
@@ -0,0 +1,422 @@
+/** \file
+ * \brief GTK Driver keyboard mapping
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+
+#include "iup_object.h"
+#include "iup_key.h"
+
+#include "iupgtk_drv.h"
+
+
+typedef struct _Igtk2iupkey
+{
+ guint gtkcode;
+ int iupcode;
+ int s_iupcode;
+ int c_iupcode;
+ int m_iupcode;
+ int y_iupcode;
+} Igtk2iupkey;
+
+static Igtk2iupkey gtkkey_map[] = {
+
+{ GDK_Escape, K_ESC, K_sESC, K_cESC, K_mESC ,K_yESC },
+{ GDK_Pause, K_PAUSE, K_sPAUSE, K_cPAUSE, K_mPAUSE ,K_yPAUSE },
+{ GDK_Print, K_Print, K_sPrint, K_cPrint, K_mPrint ,K_yPrint },
+{ GDK_Menu, K_Menu, K_sMenu, K_cMenu, K_mMenu ,K_yMenu },
+
+{ GDK_Home, K_HOME, K_sHOME, K_cHOME, K_mHOME ,K_yHOME },
+{ GDK_Up, K_UP, K_sUP, K_cUP, K_mUP ,K_yUP },
+{ GDK_Prior, K_PGUP, K_sPGUP, K_cPGUP, K_mPGUP ,K_yPGUP },
+{ GDK_Left, K_LEFT, K_sLEFT, K_cLEFT, K_mLEFT ,K_yLEFT },
+{ GDK_Begin, K_MIDDLE,K_sMIDDLE, K_cMIDDLE,K_mMIDDLE,K_yMIDDLE},
+{ GDK_Right, K_RIGHT, K_sRIGHT, K_cRIGHT, K_mRIGHT ,K_yRIGHT },
+{ GDK_End, K_END, K_sEND, K_cEND, K_mEND ,K_yEND },
+{ GDK_Down, K_DOWN, K_sDOWN, K_cDOWN, K_mDOWN ,K_yDOWN },
+{ GDK_Next, K_PGDN, K_sPGDN, K_cPGDN, K_mPGDN ,K_yPGDN },
+{ GDK_Insert, K_INS, K_sINS, K_cINS, K_mINS ,K_yINS },
+{ GDK_Delete, K_DEL, K_sDEL, K_cDEL, K_mDEL ,K_yDEL },
+{ GDK_space, K_SP, K_sSP, K_cSP, K_mSP ,K_ySP },
+{ GDK_Tab, K_TAB, K_sTAB, K_cTAB, K_mTAB ,K_yTAB },
+{ GDK_Return, K_CR, K_sCR, K_cCR, K_mCR ,K_yCR },
+{ GDK_BackSpace, K_BS, K_sBS, K_cBS, K_mBS ,K_yBS },
+
+{ GDK_1, K_1, K_exclam, K_c1, K_m1, K_y1 },
+{ GDK_2, K_2, K_at, K_c2, K_m2, K_y2 },
+{ GDK_3, K_3, K_numbersign, K_c3, K_m3, K_y3 },
+{ GDK_4, K_4, K_dollar, K_c4, K_m4, K_y4 },
+{ GDK_5, K_5, K_percent, K_c5, K_m5, K_y5 },
+{ GDK_6, K_6, K_circum, K_c6, K_m6, K_y6 },
+{ GDK_7, K_7, K_ampersand, K_c7, K_m7, K_y7 },
+{ GDK_8, K_8, K_asterisk, K_c8, K_m8, K_y8 },
+{ GDK_9, K_9, K_parentleft, K_c9, K_m9, K_y9 },
+{ GDK_0, K_0, K_parentright, K_c0, K_m0, K_y0 },
+
+/* Shift will be flaged so s_iupcode will contain the right code */
+{ GDK_exclam, K_1, K_exclam, K_c1, K_m1, K_y1 },
+{ GDK_at, K_2, K_at, K_c2, K_m2, K_y2 },
+{ GDK_numbersign, K_3, K_numbersign, K_c3, K_m3, K_y3 },
+{ GDK_dollar, K_4, K_dollar, K_c4, K_m4, K_y4 },
+{ GDK_percent, K_5, K_percent, K_c5, K_m5, K_y5 },
+{ GDK_dead_diaeresis, K_6, K_circum, K_c6, K_m6, K_y6 },
+{ GDK_ampersand, K_7, K_ampersand, K_c7, K_m7, K_y7 },
+{ GDK_asterisk, K_8, K_asterisk, K_c8, K_m8, K_y8 },
+{ GDK_parenleft, K_9, K_parentleft, K_c9, K_m9, K_y9 },
+{ GDK_parenright, K_0, K_parentright, K_c0, K_m0, K_y0 },
+
+{ GDK_a, K_a, K_A, K_cA, K_mA, K_yA },
+{ GDK_b, K_b, K_B, K_cB, K_mB, K_yB },
+{ GDK_c, K_c, K_C, K_cC, K_mC, K_yC },
+{ GDK_d, K_d, K_D, K_cD, K_mD, K_yD },
+{ GDK_e, K_e, K_E, K_cE, K_mE, K_yE },
+{ GDK_f, K_f, K_F, K_cF, K_mF, K_yF },
+{ GDK_g, K_g, K_G, K_cG, K_mG, K_yG },
+{ GDK_h, K_h, K_H, K_cH, K_mH, K_yH },
+{ GDK_i, K_i, K_I, K_cI, K_mI, K_yI },
+{ GDK_j, K_j, K_J, K_cJ, K_mJ, K_yJ },
+{ GDK_k, K_k, K_K, K_cK, K_mK, K_yK },
+{ GDK_l, K_l, K_L, K_cL, K_mL, K_yL },
+{ GDK_m, K_m, K_M, K_cM, K_mM, K_yM },
+{ GDK_n, K_n, K_N, K_cN, K_mN, K_yN },
+{ GDK_o, K_o, K_O, K_cO, K_mO, K_yO },
+{ GDK_p, K_p, K_P, K_cP, K_mP, K_yP },
+{ GDK_q, K_q, K_Q, K_cQ, K_mQ, K_yQ },
+{ GDK_r, K_r, K_R, K_cR, K_mR, K_yR },
+{ GDK_s, K_s, K_S, K_cS, K_mS, K_yS },
+{ GDK_t, K_t, K_T, K_cT, K_mT, K_yT },
+{ GDK_u, K_u, K_U, K_cU, K_mU, K_yU },
+{ GDK_v, K_v, K_V, K_cV, K_mV, K_yV },
+{ GDK_w, K_w, K_W, K_cW, K_mW, K_yW },
+{ GDK_x, K_x, K_X, K_cX, K_mX, K_yX },
+{ GDK_y, K_y, K_Y, K_cY, K_mY, K_yY },
+{ GDK_z, K_z, K_Z, K_cZ, K_mZ, K_yZ },
+
+/* Shift will be flaged so s_iupcode will contain the right code */
+{ GDK_A, K_a, K_A, K_cA, K_mA, K_yA },
+{ GDK_B, K_b, K_B, K_cB, K_mB, K_yB },
+{ GDK_C, K_c, K_C, K_cC, K_mC, K_yC },
+{ GDK_D, K_d, K_D, K_cD, K_mD, K_yD },
+{ GDK_E, K_e, K_E, K_cE, K_mE, K_yE },
+{ GDK_F, K_f, K_F, K_cF, K_mF, K_yF },
+{ GDK_G, K_g, K_G, K_cG, K_mG, K_yG },
+{ GDK_H, K_h, K_H, K_cH, K_mH, K_yH },
+{ GDK_I, K_i, K_I, K_cI, K_mI, K_yI },
+{ GDK_J, K_j, K_J, K_cJ, K_mJ, K_yJ },
+{ GDK_K, K_k, K_K, K_cK, K_mK, K_yK },
+{ GDK_L, K_l, K_L, K_cL, K_mL, K_yL },
+{ GDK_M, K_m, K_M, K_cM, K_mM, K_yM },
+{ GDK_N, K_n, K_N, K_cN, K_mN, K_yN },
+{ GDK_O, K_o, K_O, K_cO, K_mO, K_yO },
+{ GDK_P, K_p, K_P, K_cP, K_mP, K_yP },
+{ GDK_Q, K_q, K_Q, K_cQ, K_mQ, K_yQ },
+{ GDK_R, K_r, K_R, K_cR, K_mR, K_yR },
+{ GDK_S, K_s, K_S, K_cS, K_mS, K_yS },
+{ GDK_T, K_t, K_T, K_cT, K_mT, K_yT },
+{ GDK_U, K_u, K_U, K_cU, K_mU, K_yU },
+{ GDK_V, K_v, K_V, K_cV, K_mV, K_yV },
+{ GDK_W, K_w, K_W, K_cW, K_mW, K_yW },
+{ GDK_X, K_x, K_X, K_cX, K_mX, K_yX },
+{ GDK_Y, K_y, K_Y, K_cY, K_mY, K_yY },
+{ GDK_Z, K_z, K_Z, K_cZ, K_mZ, K_yZ },
+
+{ GDK_F1, K_F1, K_sF1, K_cF1, K_mF1, K_yF1 },
+{ GDK_F2, K_F2, K_sF2, K_cF2, K_mF2, K_yF2 },
+{ GDK_F3, K_F3, K_sF3, K_cF3, K_mF3, K_yF3 },
+{ GDK_F4, K_F4, K_sF4, K_cF4, K_mF4, K_yF4 },
+{ GDK_F5, K_F5, K_sF5, K_cF5, K_mF5, K_yF5 },
+{ GDK_F6, K_F6, K_sF6, K_cF6, K_mF6, K_yF6 },
+{ GDK_F7, K_F7, K_sF7, K_cF7, K_mF7, K_yF7 },
+{ GDK_F8, K_F8, K_sF8, K_cF8, K_mF8, K_yF8 },
+{ GDK_F9, K_F9, K_sF9, K_cF9, K_mF9, K_yF9 },
+{ GDK_F10, K_F10, K_sF10, K_cF10, K_mF10, K_yF10 },
+{ GDK_F11, K_F11, K_sF11, K_cF11, K_mF11, K_yF11 },
+{ GDK_F12, K_F12, K_sF12, K_cF12, K_mF12, K_yF12 },
+
+{ GDK_semicolon, K_semicolon, K_colon, K_cSemicolon, K_mSemicolon, K_ySemicolon },
+{ GDK_equal, K_equal, K_plus, K_cEqual, K_mEqual, K_yEqual },
+{ GDK_comma, K_comma, K_less, K_cComma, K_mComma, K_yComma },
+{ GDK_minus, K_minus, K_underscore, K_cMinus, K_mMinus, K_yMinus },
+{ GDK_period, K_period, K_greater, K_cPeriod, K_mPeriod, K_yPeriod },
+{ GDK_slash, K_slash, K_question, K_cSlash, K_mSlash, K_ySlash },
+{ GDK_grave, K_grave, K_tilde, 0, 0, 0 },
+{ GDK_bracketleft, K_bracketleft, K_braceleft, K_cBracketleft, K_mBracketleft, K_yBracketleft },
+{ GDK_backslash, K_backslash, K_bar, K_cBackslash, K_mBackslash, K_yBackslash },
+{ GDK_bracketright,K_bracketright, K_braceright, K_cBracketright,K_mBracketright,K_yBracketright },
+{ GDK_apostrophe, K_apostrophe, K_quotedbl, 0, 0, 0 },
+
+/* Shift will be flaged so s_iupcode will contain the right code */
+{ GDK_colon, K_semicolon, K_colon, K_cSemicolon, K_mSemicolon, K_ySemicolon },
+{ GDK_plus, K_equal, K_plus, K_cEqual, K_mEqual, K_yEqual },
+{ GDK_less, K_comma, K_less, K_cComma, K_mComma, K_yComma },
+{ GDK_underscore, K_minus, K_underscore, K_cMinus, K_mMinus, K_yMinus },
+{ GDK_greater, K_period, K_greater, K_cPeriod, K_mPeriod, K_yPeriod },
+{ GDK_question, K_slash, K_question, K_cSlash, K_mSlash, K_ySlash },
+{ GDK_braceleft, K_bracketleft, K_braceleft, K_cBracketleft, K_mBracketleft, K_yBracketleft },
+{ GDK_bar, K_backslash, K_bar, K_cBackslash, K_mBackslash, K_yBackslash },
+{ GDK_braceright, K_bracketright, K_braceright, K_cBracketright,K_mBracketright,K_yBracketright },
+{ GDK_quotedbl, K_apostrophe, K_quotedbl, 0, 0, 0 },
+
+{ GDK_KP_0, K_0, K_0, K_c0, K_m0, K_y0 },
+{ GDK_KP_1, K_1, K_1, K_c1, K_m1, K_y1 },
+{ GDK_KP_2, K_2, K_2, K_c2, K_m2, K_y2 },
+{ GDK_KP_3, K_3, K_3, K_c3, K_m3, K_y3 },
+{ GDK_KP_4, K_4, K_4, K_c4, K_m4, K_y4 },
+{ GDK_KP_5, K_5, K_5, K_c5, K_m5, K_y5 },
+{ GDK_KP_6, K_6, K_6, K_c6, K_m6, K_y6 },
+{ GDK_KP_7, K_7, K_7, K_c7, K_m7, K_y7 },
+{ GDK_KP_8, K_8, K_8, K_c8, K_m8, K_y8 },
+{ GDK_KP_9, K_9, K_9, K_c9, K_m9, K_y9 },
+{ GDK_KP_Multiply, K_asterisk, K_sAsterisk, K_cAsterisk, K_mAsterisk, K_yAsterisk },
+{ GDK_KP_Add, K_plus, K_sPlus, K_cPlus, K_mPlus, K_yPlus },
+{ GDK_KP_Subtract, K_minus, K_sMinus, K_cMinus, K_mMinus, K_yMinus },
+{ GDK_KP_Decimal, K_period, K_sPeriod, K_cPeriod, K_mPeriod, K_yPeriod },
+{ GDK_KP_Divide, K_slash, K_sSlash, K_cSlash, K_mSlash, K_ySlash },
+{ GDK_KP_Separator, K_comma, K_sComma, K_cComma, K_mComma, K_yComma },
+
+{ GDK_ccedilla, K_ccedilla, K_Ccedilla, K_cCcedilla, K_mCcedilla, K_yCcedilla },
+{ GDK_Ccedilla, K_ccedilla, K_Ccedilla, K_cCcedilla, K_mCcedilla, K_yCcedilla },
+
+{ GDK_dead_tilde, K_tilde, K_circum, 0, 0, 0 },
+{ GDK_dead_acute, K_acute, K_grave, 0, 0, 0 },
+{ GDK_dead_grave, K_grave, K_tilde, 0, 0, 0 },
+{ GDK_dead_circumflex, K_tilde, K_circum, 0, 0, 0 },
+
+{ GDK_KP_F1, K_F1, K_sF1, K_cF1, K_mF1, K_yF1 },
+{ GDK_KP_F2, K_F2, K_sF2, K_cF2, K_mF2, K_yF2 },
+{ GDK_KP_F3, K_F3, K_sF3, K_cF3, K_mF3, K_yF3 },
+{ GDK_KP_F4, K_F4, K_sF4, K_cF4, K_mF4, K_yF4 },
+{ GDK_KP_Space, K_SP, K_sSP, K_cSP, K_mSP ,K_ySP },
+{ GDK_KP_Tab, K_TAB, K_sTAB, K_cTAB, K_mTAB ,K_yTAB },
+{ GDK_KP_Equal, K_equal, 0, K_cEqual, K_mEqual, K_yEqual },
+
+{ GDK_KP_Enter, K_CR, K_sCR, K_cCR, K_mCR, K_yCR },
+{ GDK_KP_Home, K_HOME, K_sHOME, K_cHOME, K_mHOME, K_yHOME },
+{ GDK_KP_Up, K_UP, K_sUP, K_cUP, K_mUP, K_yUP },
+{ GDK_KP_Page_Up, K_PGUP, K_sPGUP, K_cPGUP, K_mPGUP, K_yPGUP },
+{ GDK_KP_Left, K_LEFT, K_sLEFT, K_cLEFT, K_mLEFT, K_yLEFT },
+{ GDK_KP_Begin, K_MIDDLE,K_sMIDDLE, K_cMIDDLE,K_mMIDDLE,K_yMIDDLE},
+{ GDK_KP_Right, K_RIGHT, K_sRIGHT, K_cRIGHT, K_mRIGHT, K_yRIGHT },
+{ GDK_KP_End, K_END, K_sEND, K_cEND, K_mEND, K_yEND },
+{ GDK_KP_Down, K_DOWN, K_sDOWN, K_cDOWN, K_mDOWN, K_yDOWN },
+{ GDK_KP_Page_Down, K_PGDN, K_sPGDN, K_cPGDN, K_mPGDN, K_yPGDN },
+{ GDK_KP_Insert, K_INS, K_sINS, K_cINS, K_mINS, K_yINS },
+{ GDK_KP_Delete, K_DEL, K_sDEL, K_cDEL, K_mDEL, K_yDEL }
+
+};
+
+void iupgtkKeyEncode(int key, guint *keyval, guint *state)
+{
+ int i, iupcode = key & 0xFF; /* 0-255 interval */
+ int count = sizeof(gtkkey_map)/sizeof(gtkkey_map[0]);
+ for (i = 0; i < count; i++)
+ {
+ Igtk2iupkey* key_map = &(gtkkey_map[i]);
+ if (key_map->iupcode == iupcode)
+ {
+ *keyval = key_map->gtkcode;
+ *state = 0;
+
+ if (iupcode != key)
+ {
+ if (key_map->c_iupcode == key)
+ *state = GDK_CONTROL_MASK;
+ else if (key_map->m_iupcode == key)
+ *state = GDK_MOD1_MASK;
+ else if (key_map->y_iupcode == key)
+ *state = GDK_MOD4_MASK;
+ else if (key_map->s_iupcode == key)
+ *state = GDK_SHIFT_MASK;
+ }
+ return;
+ }
+ else if (key_map->s_iupcode == key) /* There are Shift keys bellow 256 */
+ {
+ *keyval = key_map->gtkcode;
+ *state = GDK_SHIFT_MASK;
+
+ if ((*keyval >= GDK_a) &&
+ (*keyval <= GDK_z))
+ {
+ /* remap to upper case */
+ *keyval -= GDK_a-GDK_A;
+ }
+ return;
+ }
+ }
+}
+
+static int gtkKeyMap2Iup(int state, int i)
+{
+ int code = 0;
+ if (state & GDK_CONTROL_MASK) /* Ctrl */
+ code = gtkkey_map[i].c_iupcode;
+ else if (state & GDK_MOD1_MASK ||
+ state & GDK_MOD5_MASK) /* Alt */
+ code = gtkkey_map[i].m_iupcode;
+ else if (state & GDK_MOD4_MASK) /* Apple/Win */
+ code = gtkkey_map[i].y_iupcode;
+ else if (state & GDK_LOCK_MASK) /* CapsLock */
+ {
+ if ((state & GDK_SHIFT_MASK) || !iupKeyCanCaps(gtkkey_map[i].iupcode))
+ return gtkkey_map[i].iupcode;
+ else
+ code = gtkkey_map[i].s_iupcode;
+ }
+ else if (state & GDK_SHIFT_MASK) /* Shift */
+ code = gtkkey_map[i].s_iupcode;
+ else
+ return gtkkey_map[i].iupcode;
+
+ if (!code)
+ code = gtkkey_map[i].iupcode;
+
+ return code;
+}
+
+static int gtkKeyDecode(GdkEventKey *evt)
+{
+ int i;
+ int count = sizeof(gtkkey_map)/sizeof(gtkkey_map[0]);
+ guint keyval = evt->keyval;
+
+ if ((evt->state & GDK_MOD2_MASK) && /* NumLock */
+ (keyval >= GDK_KP_Home) &&
+ (keyval <= GDK_KP_Delete))
+ {
+ /* remap to numeric keys */
+ guint remap_numkey[] = {GDK_KP_7, GDK_KP_4, GDK_KP_8, GDK_KP_6, GDK_KP_2, GDK_KP_9, GDK_KP_3, GDK_KP_1, GDK_KP_5, GDK_KP_0, GDK_KP_Decimal};
+ keyval = remap_numkey[keyval-GDK_KP_Home];
+ }
+
+ for (i = 0; i < count; i++)
+ {
+ if (gtkkey_map[i].gtkcode == keyval)
+ return gtkKeyMap2Iup(evt->state, i);
+ }
+
+ return 0;
+}
+
+gboolean iupgtkKeyPressEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih)
+{
+ int result;
+ int code = gtkKeyDecode(evt);
+ if (code == 0)
+ return FALSE;
+
+ /* Avoid duplicate calls if a child of the dialog contains the focus.
+ GTK will call the callback for the child and for the dialog */
+ if (ih->iclass->nativetype == IUP_TYPEDIALOG && ih != IupGetFocus())
+ return FALSE;
+
+ result = iupKeyCallKeyCb(ih, code);
+ if (result == IUP_CLOSE)
+ {
+ IupExitLoop();
+ return FALSE;
+ }
+ if (result == IUP_IGNORE)
+ return TRUE;
+
+ /* in the previous callback the dialog could be destroyed */
+ if (iupObjectCheck(ih))
+ {
+ /* this is called only for canvas */
+ if (ih->iclass->nativetype == IUP_TYPECANVAS)
+ {
+ result = iupKeyCallKeyPressCb(ih, code, 1);
+ if (result == IUP_CLOSE)
+ {
+ IupExitLoop();
+ return FALSE;
+ }
+ if (result == IUP_IGNORE)
+ return TRUE;
+ }
+
+ if (!iupKeyProcessNavigation(ih, code, evt->state & GDK_SHIFT_MASK))
+ return TRUE;
+
+ /* compensate the show-help limitation.
+ * It is not called on F1, only on Shift+F1 and Ctrl+F1. */
+ if (code == K_F1)
+ {
+ Icallback cb = IupGetCallback(ih, "HELP_CB");
+ if (cb)
+ {
+ if (cb(ih) == IUP_CLOSE)
+ IupExitLoop();
+ }
+ }
+ }
+
+ (void)widget;
+ return FALSE;
+}
+
+gboolean iupgtkKeyReleaseEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih)
+{
+ /* this is called only for canvas */
+ int result;
+ int code = gtkKeyDecode(evt);
+ if (code == 0)
+ return FALSE;
+
+ result = iupKeyCallKeyPressCb(ih, code, 0);
+ if (result == IUP_CLOSE)
+ {
+ IupExitLoop();
+ return FALSE;
+ }
+ if (result == IUP_IGNORE)
+ return TRUE;
+
+ (void)widget;
+ return FALSE;
+}
+
+void iupgtkButtonKeySetStatus(guint state, unsigned int but, char* status, int doubleclick)
+{
+ if (state & GDK_SHIFT_MASK)
+ iupKEYSETSHIFT(status);
+
+ if (state & GDK_CONTROL_MASK)
+ iupKEYSETCONTROL(status);
+
+ if ((state & GDK_BUTTON1_MASK) || but==1)
+ iupKEYSETBUTTON1(status);
+
+ if ((state & GDK_BUTTON2_MASK) || but==2)
+ iupKEYSETBUTTON2(status);
+
+ if ((state & GDK_BUTTON3_MASK) || but==3)
+ iupKEYSETBUTTON3(status);
+
+ if ((state & GDK_BUTTON4_MASK) || but==4)
+ iupKEYSETBUTTON4(status);
+
+ if ((state & GDK_BUTTON5_MASK) || but==5)
+ iupKEYSETBUTTON5(status);
+
+ if (state & GDK_MOD1_MASK || state & GDK_MOD5_MASK) /* Alt */
+ iupKEYSETALT(status);
+
+ if (state & GDK_MOD4_MASK) /* Apple/Win */
+ iupKEYSETSYS(status);
+
+ if (doubleclick)
+ iupKEYSETDOUBLE(status);
+}
+
diff --git a/iup/src/gtk/iupgtk_label.c b/iup/src/gtk/iupgtk_label.c
new file mode 100755
index 0000000..49d5c6d
--- /dev/null
+++ b/iup/src/gtk/iupgtk_label.c
@@ -0,0 +1,318 @@
+/** \file
+ * \brief Label Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_image.h"
+#include "iup_label.h"
+#include "iup_drv.h"
+#include "iup_image.h"
+#include "iup_focus.h"
+
+#include "iupgtk_drv.h"
+
+
+static int gtkLabelSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_LABEL_TEXT)
+ {
+ GtkLabel* label = (GtkLabel*)ih->handle;
+ if (iupgtkSetMnemonicTitle(ih, label, value))
+ {
+ Ihandle* next = iupFocusNextInteractive(ih);
+ if (next)
+ {
+ if (next->handle)
+ gtk_label_set_mnemonic_widget(label, next->handle);
+ else
+ iupAttribSetStr(next, "_IUPGTK_LABELMNEMONIC", (char*)label); /* used by iupgtkUpdateMnemonic */
+ }
+ }
+ return 1;
+ }
+
+ return 0;
+}
+
+static int gtkLabelSetWordWrapAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_LABEL_TEXT)
+ {
+ GtkLabel* label = (GtkLabel*)ih->handle;
+ if (iupStrBoolean(value))
+ gtk_label_set_line_wrap(label, TRUE);
+ else
+ gtk_label_set_line_wrap(label, FALSE);
+ return 1;
+ }
+ return 0;
+}
+
+static int gtkLabelSetEllipsisAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_LABEL_TEXT)
+ {
+#if GTK_CHECK_VERSION(2, 6, 0)
+ GtkLabel* label = (GtkLabel*)ih->handle;
+ if (iupStrBoolean(value))
+ gtk_label_set_ellipsize(label, PANGO_ELLIPSIZE_END);
+ else
+ gtk_label_set_ellipsize(label, PANGO_ELLIPSIZE_NONE);
+#endif
+ return 1;
+ }
+ return 0;
+}
+
+static int gtkLabelSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT)
+ {
+ GtkMisc* misc = (GtkMisc*)ih->handle;
+ PangoAlignment alignment;
+ float xalign, yalign;
+ char value1[30]="", value2[30]="";
+
+ iupStrToStrStr(value, value1, value2, ':');
+
+ if (iupStrEqualNoCase(value1, "ARIGHT"))
+ {
+ xalign = 1.0f;
+ alignment = PANGO_ALIGN_RIGHT;
+ }
+ else if (iupStrEqualNoCase(value1, "ACENTER"))
+ {
+ xalign = 0.5f;
+ alignment = PANGO_ALIGN_CENTER;
+ }
+ else /* "ALEFT" */
+ {
+ xalign = 0;
+ alignment = PANGO_ALIGN_LEFT;
+ }
+
+ if (iupStrEqualNoCase(value2, "ABOTTOM"))
+ yalign = 1.0f;
+ else if (iupStrEqualNoCase(value2, "ATOP"))
+ yalign = 0;
+ else /* ACENTER (default) */
+ yalign = 0.5f;
+
+ gtk_misc_set_alignment(misc, xalign, yalign);
+
+ if (ih->data->type == IUP_LABEL_TEXT)
+ pango_layout_set_alignment(gtk_label_get_layout((GtkLabel*)ih->handle), alignment);
+
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int gtkLabelSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+
+ if (ih->handle && ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT)
+ {
+ GtkMisc* misc = (GtkMisc*)ih->handle;
+ gtk_misc_set_padding(misc, ih->data->horiz_padding, ih->data->vert_padding);
+ }
+ return 0;
+}
+
+static char* gtkLabelGetPangoLayoutAttrib(Ihandle* ih)
+{
+ if (ih->data->type == IUP_LABEL_TEXT)
+ return (char*)gtk_label_get_layout((GtkLabel*)ih->handle);
+ else
+ return NULL;
+}
+
+static void gtkLabelSetPixbuf(Ihandle* ih, const char* name, int make_inactive)
+{
+ GtkImage* image_label = (GtkImage*)ih->handle;
+
+ if (name)
+ {
+ GdkPixbuf* pixbuf = iupImageGetImage(name, ih, make_inactive);
+ GdkPixbuf* old_pixbuf = gtk_image_get_pixbuf(image_label);
+ if (pixbuf != old_pixbuf)
+ gtk_image_set_from_pixbuf(image_label, pixbuf);
+ return;
+ }
+
+ /* if not defined */
+#if GTK_CHECK_VERSION(2, 8, 0)
+ gtk_image_clear(image_label);
+#endif
+}
+
+static int gtkLabelSetImageAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_LABEL_IMAGE)
+ {
+ if (iupdrvIsActive(ih))
+ gtkLabelSetPixbuf(ih, value, 0);
+ else
+ {
+ if (!iupAttribGet(ih, "IMINACTIVE"))
+ {
+ /* if not active and IMINACTIVE is not defined
+ then automaticaly create one based on IMAGE */
+ gtkLabelSetPixbuf(ih, value, 1); /* make_inactive */
+ }
+ }
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int gtkLabelSetImInactiveAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_LABEL_IMAGE)
+ {
+ if (!iupdrvIsActive(ih))
+ {
+ if (value)
+ gtkLabelSetPixbuf(ih, value, 0);
+ else
+ {
+ /* if not defined then automaticaly create one based on IMAGE */
+ char* name = iupAttribGet(ih, "IMAGE");
+ gtkLabelSetPixbuf(ih, name, 1); /* make_inactive */
+ }
+ }
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int gtkLabelSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ /* update the inactive image if necessary */
+ if (ih->data->type == IUP_LABEL_IMAGE)
+ {
+ if (!iupStrBoolean(value))
+ {
+ char* name = iupAttribGet(ih, "IMINACTIVE");
+ if (name)
+ gtkLabelSetPixbuf(ih, name, 0);
+ else
+ {
+ /* if not defined then automaticaly create one based on IMAGE */
+ name = iupAttribGet(ih, "IMAGE");
+ gtkLabelSetPixbuf(ih, name, 1); /* make_inactive */
+ }
+ }
+ else
+ {
+ /* must restore the normal image */
+ char* name = iupAttribGet(ih, "IMAGE");
+ gtkLabelSetPixbuf(ih, name, 0);
+ }
+ }
+
+ return iupBaseSetActiveAttrib(ih, value);
+}
+
+static int gtkLabelMapMethod(Ihandle* ih)
+{
+ char* value;
+ GtkWidget *label;
+
+ value = iupAttribGet(ih, "SEPARATOR");
+ if (value)
+ {
+ if (iupStrEqualNoCase(value, "HORIZONTAL"))
+ {
+ ih->data->type = IUP_LABEL_SEP_HORIZ;
+ label = gtk_hseparator_new();
+ }
+ else /* "VERTICAL" */
+ {
+ ih->data->type = IUP_LABEL_SEP_VERT;
+ label = gtk_vseparator_new();
+ }
+ }
+ else
+ {
+ value = iupAttribGet(ih, "IMAGE");
+ if (value)
+ {
+ ih->data->type = IUP_LABEL_IMAGE;
+ label = gtk_image_new();
+ }
+ else
+ {
+ ih->data->type = IUP_LABEL_TEXT;
+ label = gtk_label_new(NULL);
+ }
+ }
+
+ if (!label)
+ return IUP_ERROR;
+
+ ih->handle = label;
+
+ /* add to the parent, all GTK controls must call this. */
+ iupgtkBaseAddToParent(ih);
+
+ gtk_widget_realize(label);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvLabelInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkLabelMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Common GTK only (when text is in a secondary element) */
+ iupClassRegisterAttribute(ic, "PANGOLAYOUT", gtkLabelGetPangoLayoutAttrib, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+
+ /* Overwrite Visual */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, gtkLabelSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iupdrvBaseSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "TITLE", NULL, gtkLabelSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupLabel only */
+ iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, gtkLabelSetAlignmentAttrib, "ALEFT:ACENTER", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, gtkLabelSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "PADDING", iupLabelGetPaddingAttrib, gtkLabelSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+
+ /* IupLabel GTK and Motif only */
+ iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, gtkLabelSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupLabel Windows and GTK only */
+ iupClassRegisterAttribute(ic, "WORDWRAP", NULL, gtkLabelSetWordWrapAttrib, NULL, NULL, IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "ELLIPSIS", NULL, gtkLabelSetEllipsisAttrib, NULL, NULL, IUPAF_DEFAULT);
+
+ /* IupLabel GTK only */
+ iupClassRegisterAttribute(ic, "MARKUP", NULL, NULL, NULL, NULL, IUPAF_DEFAULT);
+}
diff --git a/iup/src/gtk/iupgtk_list.c b/iup/src/gtk/iupgtk_list.c
new file mode 100755
index 0000000..80f6cce
--- /dev/null
+++ b/iup/src/gtk/iupgtk_list.c
@@ -0,0 +1,1439 @@
+/** \file
+ * \brief List Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_mask.h"
+#include "iup_key.h"
+#include "iup_list.h"
+
+#include "iupgtk_drv.h"
+
+
+static void gtkListSelectionChanged(GtkTreeSelection* selection, Ihandle* ih);
+static void gtkListComboBoxChanged(GtkComboBox* widget, Ihandle* ih);
+
+
+void iupdrvListAddItemSpace(Ihandle* ih, int *h)
+{
+ (void)ih;
+ *h += 3;
+}
+
+void iupdrvListAddBorders(Ihandle* ih, int *x, int *y)
+{
+ int border_size = 2*5;
+ (*x) += border_size;
+ (*y) += border_size;
+
+ if (ih->data->is_dropdown)
+ {
+#ifdef HILDON
+ (*x) += 9; /* extra space for the dropdown button */
+#else
+ (*x) += 5; /* extra space for the dropdown button */
+#endif
+
+ if (ih->data->has_editbox)
+ (*x) += 5; /* another extra space for the dropdown button */
+ else
+ {
+ (*y) += 4; /* extra padding space */
+ (*x) += 4; /* extra padding space */
+ }
+ }
+ else
+ {
+ if (ih->data->has_editbox)
+ (*y) += 2*3; /* internal border between editbox and list */
+ }
+}
+
+static int gtkListConvertXYToPos(Ihandle* ih, int x, int y)
+{
+ if (!ih->data->is_dropdown)
+ {
+ GtkTreePath* path;
+ if (gtk_tree_view_get_dest_row_at_pos((GtkTreeView*)ih->handle, x, y, &path, NULL))
+ {
+ int* indices = gtk_tree_path_get_indices(path);
+ int pos = indices[0]+1; /* IUP starts at 1 */
+ gtk_tree_path_free (path);
+ return pos;
+ }
+ }
+
+ return -1;
+}
+
+static GtkTreeModel* gtkListGetModel(Ihandle* ih)
+{
+ if (ih->data->is_dropdown)
+ return gtk_combo_box_get_model((GtkComboBox*)ih->handle);
+ else
+ return gtk_tree_view_get_model((GtkTreeView*)ih->handle);
+}
+
+int iupdrvListGetCount(Ihandle* ih)
+{
+ GtkTreeModel *model = gtkListGetModel(ih);
+ return gtk_tree_model_iter_n_children(model, NULL);
+}
+
+void iupdrvListAppendItem(Ihandle* ih, const char* value)
+{
+ GtkTreeModel *model = gtkListGetModel(ih);
+ GtkTreeIter iter;
+ gtk_list_store_append(GTK_LIST_STORE(model), &iter);
+ gtk_list_store_set(GTK_LIST_STORE(model), &iter, 0, iupgtkStrConvertToUTF8(value), -1);
+}
+
+void iupdrvListInsertItem(Ihandle* ih, int pos, const char* value)
+{
+ GtkTreeModel *model = gtkListGetModel(ih);
+ GtkTreeIter iter;
+ gtk_list_store_insert(GTK_LIST_STORE(model), &iter, pos);
+ gtk_list_store_set(GTK_LIST_STORE(model), &iter, 0, iupgtkStrConvertToUTF8(value), -1);
+}
+
+void iupdrvListRemoveItem(Ihandle* ih, int pos)
+{
+ GtkTreeModel *model = gtkListGetModel(ih);
+ GtkTreeIter iter;
+ if (gtk_tree_model_iter_nth_child(model, &iter, NULL, pos))
+ {
+ if (ih->data->is_dropdown && !ih->data->has_editbox)
+ {
+ /* must check if removing the current item */
+ int curpos = gtk_combo_box_get_active((GtkComboBox*)ih->handle);
+ if (pos == curpos)
+ {
+ if (curpos > 0) curpos--;
+ else curpos++;
+
+ gtk_combo_box_set_active((GtkComboBox*)ih->handle, curpos);
+ }
+ }
+
+ gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
+ }
+}
+
+void iupdrvListRemoveAllItems(Ihandle* ih)
+{
+ GtkTreeModel *model = gtkListGetModel(ih);
+ gtk_list_store_clear(GTK_LIST_STORE(model));
+}
+
+
+/*********************************************************************************/
+
+
+static int gtkListSetStandardFontAttrib(Ihandle* ih, const char* value)
+{
+ iupdrvSetStandardFontAttrib(ih, value);
+
+ if (ih->handle)
+ {
+ if (ih->data->is_dropdown)
+ {
+ GtkCellRenderer* renderer = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER");
+ if (renderer)
+ {
+ g_object_set(G_OBJECT(renderer), "font-desc", (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih), NULL);
+ iupgtkFontUpdateObjectPangoLayout(ih, G_OBJECT(renderer));
+ }
+ }
+
+ if (ih->data->has_editbox)
+ {
+ GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ gtk_widget_modify_font((GtkWidget*)entry, (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih));
+ iupgtkFontUpdatePangoLayout(ih, gtk_entry_get_layout(entry));
+ }
+ }
+ return 1;
+}
+
+static char* gtkListGetIdValueAttrib(Ihandle* ih, const char* name_id)
+{
+ int pos = iupListGetPos(ih, name_id);
+ if (pos != -1)
+ {
+ GtkTreeIter iter;
+ GtkTreeModel* model = gtkListGetModel(ih);
+ if (gtk_tree_model_iter_nth_child(model, &iter, NULL, pos))
+ {
+ gchar *text = NULL;
+ gtk_tree_model_get(model, &iter, 0, &text, -1);
+ if (text)
+ {
+ char* ret_str = iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(text));
+ g_free(text);
+ return ret_str;
+ }
+ }
+ }
+ return NULL;
+}
+
+static int gtkListSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+
+ GtkScrolledWindow* scrolled_window = (GtkScrolledWindow*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (scrolled_window && !ih->data->is_dropdown)
+ {
+ /* ignore given value, must use only from parent for the scrollbars */
+ char* parent_value = iupBaseNativeParentGetBgColor(ih);
+
+ if (iupStrToRGB(parent_value, &r, &g, &b))
+ {
+ GtkWidget* sb;
+
+ if (!GTK_IS_SCROLLED_WINDOW(scrolled_window))
+ scrolled_window = (GtkScrolledWindow*)iupAttribGet(ih, "_IUPGTK_SCROLLED_WINDOW");
+
+ iupgtkBaseSetBgColor((GtkWidget*)scrolled_window, r, g, b);
+
+#if GTK_CHECK_VERSION(2, 8, 0)
+ sb = gtk_scrolled_window_get_hscrollbar(scrolled_window);
+ if (sb) iupgtkBaseSetBgColor(sb, r, g, b);
+
+ sb = gtk_scrolled_window_get_vscrollbar(scrolled_window);
+ if (sb) iupgtkBaseSetBgColor(sb, r, g, b);
+#endif
+ }
+ }
+
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ if (ih->data->has_editbox)
+ {
+ GtkWidget* entry = (GtkWidget*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ iupgtkBaseSetBgColor(entry, r, g, b);
+ }
+
+ {
+ GtkCellRenderer* renderer = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER");
+ if (renderer)
+ {
+ GdkColor color;
+ iupgdkColorSet(&color, r, g, b);
+ g_object_set(G_OBJECT(renderer), "cell-background-gdk", &color, NULL);
+ }
+ }
+
+ return iupdrvBaseSetBgColorAttrib(ih, value);
+}
+
+static int gtkListSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ iupgtkBaseSetFgColor(ih->handle, r, g, b);
+
+ if (ih->data->has_editbox)
+ {
+ GtkWidget* entry = (GtkWidget*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ iupgtkBaseSetFgColor(entry, r, g, b);
+ }
+
+ {
+ GtkCellRenderer* renderer = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER");
+ if (renderer)
+ {
+ GdkColor color;
+ iupgdkColorSet(&color, r, g, b);
+ g_object_set(G_OBJECT(renderer), "foreground-gdk", &color, NULL);
+ }
+ }
+
+ return 1;
+}
+
+static char* gtkListGetValueAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ return iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(gtk_entry_get_text(entry)));
+ }
+ else
+ {
+ if (ih->data->is_dropdown)
+ {
+ int pos = gtk_combo_box_get_active((GtkComboBox*)ih->handle);
+ char* str = iupStrGetMemory(50);
+ sprintf(str, "%d", pos+1); /* IUP starts at 1 */
+ return str;
+ }
+ else
+ {
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+ if (!ih->data->is_multiple)
+ {
+ GtkTreeIter iter;
+ GtkTreeModel* tree_model;
+ if (gtk_tree_selection_get_selected(selection, &tree_model, &iter))
+ {
+ char* str;
+ GtkTreePath *path = gtk_tree_model_get_path(tree_model, &iter);
+ int* indices = gtk_tree_path_get_indices(path);
+ str = iupStrGetMemory(50);
+ sprintf(str, "%d", indices[0]+1); /* IUP starts at 1 */
+ gtk_tree_path_free (path);
+ return str;
+ }
+ }
+ else
+ {
+ GList *il, *list = gtk_tree_selection_get_selected_rows(selection, NULL);
+ int count = iupdrvListGetCount(ih);
+ char* str = iupStrGetMemory(count+1);
+ memset(str, '-', count);
+ str[count]=0;
+ for (il=list; il; il=il->next)
+ {
+ GtkTreePath* path = (GtkTreePath*)il->data;
+ int* indices = gtk_tree_path_get_indices(path);
+ str[indices[0]] = '+';
+ gtk_tree_path_free(path);
+ }
+ g_list_free(list);
+ return str;
+ }
+ }
+ }
+
+ return NULL;
+}
+
+static int gtkListSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->has_editbox)
+ {
+ GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ if (!value) value = "";
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ gtk_entry_set_text(entry, iupgtkStrConvertToUTF8(value));
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+ }
+ else
+ {
+ if (ih->data->is_dropdown)
+ {
+ int pos;
+ GtkTreeModel *model = gtkListGetModel(ih);
+ g_signal_handlers_block_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkListComboBoxChanged), ih);
+ if (iupStrToInt(value, &pos)==1 &&
+ (pos>0 && pos<gtk_tree_model_iter_n_children(model, NULL)))
+ {
+ gtk_combo_box_set_active((GtkComboBox*)ih->handle, pos-1); /* IUP starts at 1 */
+ iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos);
+ }
+ else
+ {
+ gtk_combo_box_set_active((GtkComboBox*)ih->handle, -1); /* none */
+ iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL);
+ }
+ g_signal_handlers_unblock_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkListComboBoxChanged), ih);
+ }
+ else
+ {
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+ if (!ih->data->is_multiple)
+ {
+ int pos;
+ g_signal_handlers_block_by_func(G_OBJECT(selection), G_CALLBACK(gtkListSelectionChanged), ih);
+ if (iupStrToInt(value, &pos)==1)
+ {
+ GtkTreePath* path = gtk_tree_path_new_from_indices(pos-1, -1); /* IUP starts at 1 */
+ gtk_tree_selection_select_path(selection, path);
+ gtk_tree_path_free(path);
+ iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos);
+ }
+ else
+ {
+ gtk_tree_selection_unselect_all(selection);
+ iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL);
+ }
+ g_signal_handlers_unblock_by_func(G_OBJECT(selection), G_CALLBACK(gtkListSelectionChanged), ih);
+ }
+ else
+ {
+ /* User has changed a multiple selection on a simple list. */
+ int i, len, count;
+
+ g_signal_handlers_block_by_func(G_OBJECT(selection), G_CALLBACK(gtkListSelectionChanged), ih);
+
+ /* Clear all selections */
+ gtk_tree_selection_unselect_all(selection);
+
+ if (!value)
+ {
+ iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL);
+ return 0;
+ }
+
+ len = strlen(value);
+ count = iupdrvListGetCount(ih);
+ if (len < count)
+ count = len;
+
+ /* update selection list */
+ for (i = 0; i<count; i++)
+ {
+ if (value[i]=='+')
+ {
+ GtkTreePath* path = gtk_tree_path_new_from_indices(i, -1);
+ gtk_tree_selection_select_path(selection, path);
+ gtk_tree_path_free(path);
+ }
+ }
+ iupAttribStoreStr(ih, "_IUPLIST_OLDVALUE", value);
+ g_signal_handlers_unblock_by_func(G_OBJECT(selection), G_CALLBACK(gtkListSelectionChanged), ih);
+ }
+ }
+ }
+
+ return 0;
+}
+
+static int gtkListSetShowDropdownAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->is_dropdown)
+ {
+ if (iupStrBoolean(value))
+ gtk_combo_box_popup((GtkComboBox*)ih->handle);
+ else
+ gtk_combo_box_popdown((GtkComboBox*)ih->handle);
+ }
+ return 0;
+}
+
+static int gtkListSetTopItemAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->is_dropdown)
+ {
+ int pos = 1;
+ if (iupStrToInt(value, &pos))
+ {
+ GtkTreePath* path = gtk_tree_path_new_from_indices(pos-1, -1); /* IUP starts at 1 */
+ gtk_tree_view_scroll_to_cell((GtkTreeView*)ih->handle, path, NULL, FALSE, 0, 0);
+ gtk_tree_path_free(path);
+ }
+ }
+ return 0;
+}
+
+static int gtkListSetSpacingAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->is_dropdown)
+ return 0;
+
+ if (!iupStrToInt(value, &ih->data->spacing))
+ ih->data->spacing = 0;
+
+ if (ih->handle)
+ {
+ GtkCellRenderer* renderer = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER");
+ if (renderer)
+ g_object_set(G_OBJECT(renderer), "xpad", ih->data->spacing,
+ "ypad", ih->data->spacing,
+ NULL);
+ return 0;
+ }
+ else
+ return 1; /* store until not mapped, when mapped will be set again */
+}
+
+static int gtkListSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->has_editbox)
+ return 0;
+
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+ if (ih->handle)
+ {
+#if GTK_CHECK_VERSION(2, 10, 0)
+ GtkEntry* entry;
+ GtkBorder border;
+ border.bottom = border.top = ih->data->vert_padding;
+ border.left = border.right = ih->data->horiz_padding;
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ gtk_entry_set_inner_border(entry, &border);
+#endif
+ return 0;
+ }
+ else
+ return 1; /* store until not mapped, when mapped will be set again */
+}
+
+static int gtkListSetSelectionAttrib(Ihandle* ih, const char* value)
+{
+ int start=1, end=1;
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return 0;
+ if (!value)
+ return 0;
+
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ if (!value || iupStrEqualNoCase(value, "NONE"))
+ {
+ gtk_editable_select_region(GTK_EDITABLE(entry), 0, 0);
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(value, "ALL"))
+ {
+ gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1);
+ return 0;
+ }
+
+ if (iupStrToIntInt(value, &start, &end, ':')!=2)
+ return 0;
+
+ if(start<1 || end<1)
+ return 0;
+
+ start--; /* IUP starts at 1 */
+ end--;
+
+ gtk_editable_select_region(GTK_EDITABLE(entry), start, end);
+
+ return 0;
+}
+
+static char* gtkListGetSelectionAttrib(Ihandle* ih)
+{
+ char *str;
+ int start, end;
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return NULL;
+
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ if (gtk_editable_get_selection_bounds(GTK_EDITABLE(entry), &start, &end))
+ {
+ start++; /* IUP starts at 1 */
+ end++;
+ str = iupStrGetMemory(100);
+ sprintf(str, "%d:%d", (int)start, (int)end);
+ return str;
+ }
+
+ return NULL;
+}
+
+static int gtkListSetSelectionPosAttrib(Ihandle* ih, const char* value)
+{
+ int start=0, end=0;
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return 0;
+ if (!value)
+ return 0;
+
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ if (!value || iupStrEqualNoCase(value, "NONE"))
+ {
+ gtk_editable_select_region(GTK_EDITABLE(entry), 0, 0);
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(value, "ALL"))
+ {
+ gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1);
+ return 0;
+ }
+
+ if (iupStrToIntInt(value, &start, &end, ':')!=2)
+ return 0;
+
+ if(start<0 || end<0)
+ return 0;
+
+ gtk_editable_select_region(GTK_EDITABLE(entry), start, end);
+
+ return 0;
+}
+
+static char* gtkListGetSelectionPosAttrib(Ihandle* ih)
+{
+ int start, end;
+ char *str;
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return NULL;
+
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ if (gtk_editable_get_selection_bounds(GTK_EDITABLE(entry), &start, &end))
+ {
+ str = iupStrGetMemory(100);
+ sprintf(str, "%d:%d", (int)start, (int)end);
+ return str;
+ }
+
+ return NULL;
+}
+
+static int gtkListSetSelectedTextAttrib(Ihandle* ih, const char* value)
+{
+ int start, end;
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return 0;
+ if (!value)
+ return 0;
+
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ if (gtk_editable_get_selection_bounds(GTK_EDITABLE(entry), &start, &end))
+ {
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ gtk_editable_delete_selection(GTK_EDITABLE(entry));
+ gtk_editable_insert_text(GTK_EDITABLE(entry), iupgtkStrConvertToUTF8(value), -1, &start);
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+ }
+
+ return 0;
+}
+
+static char* gtkListGetSelectedTextAttrib(Ihandle* ih)
+{
+ int start, end;
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return NULL;
+
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ if (gtk_editable_get_selection_bounds(GTK_EDITABLE(entry), &start, &end))
+ {
+ char* selectedtext = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end);
+ char* str = iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(selectedtext));
+ g_free(selectedtext);
+ return str;
+ }
+
+ return NULL;
+}
+
+static int gtkListSetCaretAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 1;
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return 0;
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ pos--; /* IUP starts at 1 */
+ if (pos < 0) pos = 0;
+
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ gtk_editable_set_position(GTK_EDITABLE(entry), pos);
+
+ return 0;
+}
+
+static char* gtkListGetCaretAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ char* str = iupStrGetMemory(50);
+ GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ int pos = gtk_editable_get_position(GTK_EDITABLE(entry));
+ pos++; /* IUP starts at 1 */
+ sprintf(str, "%d", (int)pos);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+static int gtkListSetCaretPosAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 0;
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return 0;
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 0) pos = 0;
+
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ gtk_editable_set_position(GTK_EDITABLE(entry), pos);
+
+ return 0;
+}
+
+static char* gtkListGetCaretPosAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ char* str = iupStrGetMemory(50);
+ GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ int pos = gtk_editable_get_position(GTK_EDITABLE(entry));
+ sprintf(str, "%d", (int)pos);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+static int gtkListSetScrollToAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 1;
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return 0;
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 1) pos = 1;
+ pos--; /* return to GTK referece */
+
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ gtk_editable_set_position(GTK_EDITABLE(entry), pos);
+
+ return 0;
+}
+
+static int gtkListSetScrollToPosAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 0;
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return 0;
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 0) pos = 0;
+
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ gtk_editable_set_position(GTK_EDITABLE(entry), pos);
+
+ return 0;
+}
+
+static int gtkListSetInsertAttrib(Ihandle* ih, const char* value)
+{
+ gint pos;
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return 0;
+ if (!value)
+ return 0;
+
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); /* disable callbacks */
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ pos = gtk_editable_get_position(GTK_EDITABLE(entry));
+ gtk_editable_insert_text(GTK_EDITABLE(entry), iupgtkStrConvertToUTF8(value), -1, &pos);
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+
+ return 0;
+}
+
+static int gtkListSetAppendAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->has_editbox)
+ {
+ GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ gint pos = strlen(gtk_entry_get_text(entry))+1;
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); /* disable callbacks */
+ gtk_editable_insert_text(GTK_EDITABLE(entry), iupgtkStrConvertToUTF8(value), -1, &pos);
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+ }
+ return 0;
+}
+
+static int gtkListSetNCAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!iupStrToInt(value, &ih->data->nc))
+ ih->data->nc = INT_MAX;
+
+ if (ih->handle)
+ {
+ GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ gtk_entry_set_max_length(entry, ih->data->nc);
+ }
+
+ return 0;
+}
+
+static int gtkListSetClipboardAttrib(Ihandle *ih, const char *value)
+{
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ if (iupStrEqualNoCase(value, "COPY"))
+ gtk_editable_copy_clipboard(GTK_EDITABLE(entry));
+ else if (iupStrEqualNoCase(value, "CUT"))
+ gtk_editable_cut_clipboard(GTK_EDITABLE(entry));
+ else if (iupStrEqualNoCase(value, "PASTE"))
+ gtk_editable_paste_clipboard(GTK_EDITABLE(entry));
+ else if (iupStrEqualNoCase(value, "CLEAR"))
+ gtk_editable_delete_selection(GTK_EDITABLE(entry));
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+ return 0;
+}
+
+static int gtkListSetReadOnlyAttrib(Ihandle* ih, const char* value)
+{
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return 0;
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ gtk_editable_set_editable(GTK_EDITABLE(entry), !iupStrBoolean(value));
+ return 0;
+}
+
+static char* gtkListGetReadOnlyAttrib(Ihandle* ih)
+{
+ GtkEntry* entry;
+ if (!ih->data->has_editbox)
+ return NULL;
+ entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ if (!gtk_editable_get_editable(GTK_EDITABLE(entry)))
+ return "YES";
+ else
+ return "NO";
+}
+
+
+/*********************************************************************************/
+
+
+static void gtkListEditMoveCursor(GtkWidget* entry, GtkMovementStep step, gint count, gboolean extend_selection, Ihandle* ih)
+{
+ int pos;
+
+ IFniii cb = (IFniii)IupGetCallback(ih, "CARET_CB");
+ if (!cb) return;
+
+ pos = gtk_editable_get_position(GTK_EDITABLE(entry));
+
+ if (pos != ih->data->last_caret_pos)
+ {
+ ih->data->last_caret_pos = pos;
+
+ cb(ih, 1, pos+1, pos);
+ }
+
+ (void)step;
+ (void)count;
+ (void)extend_selection;
+}
+
+static gboolean gtkListEditKeyPressEvent(GtkWidget* entry, GdkEventKey *evt, Ihandle *ih)
+{
+ if (iupgtkKeyPressEvent(entry, evt, ih) == TRUE)
+ return TRUE;
+
+ if ((evt->keyval == GDK_Up || evt->keyval == GDK_KP_Up) ||
+ (evt->keyval == GDK_Prior || evt->keyval == GDK_KP_Page_Up) ||
+ (evt->keyval == GDK_Down || evt->keyval == GDK_KP_Down) ||
+ (evt->keyval == GDK_Next || evt->keyval == GDK_KP_Page_Down))
+ {
+ int pos = -1;
+ GtkTreeIter iter;
+ GtkTreeModel* model = NULL;
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+ if (gtk_tree_selection_get_selected(selection, &model, &iter))
+ {
+ GtkTreePath *path = gtk_tree_model_get_path(model, &iter);
+ int* indices = gtk_tree_path_get_indices(path);
+ pos = indices[0];
+ gtk_tree_path_free(path);
+ }
+
+ if (pos == -1)
+ pos = 0;
+ else if (evt->keyval == GDK_Up || evt->keyval == GDK_KP_Up)
+ {
+ pos--;
+ if (pos < 0) pos = 0;
+ }
+ else if (evt->keyval == GDK_Prior || evt->keyval == GDK_KP_Page_Up)
+ {
+ pos -= 5;
+ if (pos < 0) pos = 0;
+ }
+ else if (evt->keyval == GDK_Down || evt->keyval == GDK_KP_Down)
+ {
+ int count = gtk_tree_model_iter_n_children(model, NULL);
+ pos++;
+ if (pos > count-1) pos = count-1;
+ }
+ else if (evt->keyval == GDK_Next || evt->keyval == GDK_KP_Page_Down)
+ {
+ int count = gtk_tree_model_iter_n_children(model, NULL);
+ pos += 5;
+ if (pos > count-1) pos = count-1;
+ }
+
+ if (pos != -1)
+ {
+ GtkTreePath* path = gtk_tree_path_new_from_indices(pos, -1);
+ g_signal_handlers_block_by_func(G_OBJECT(selection), G_CALLBACK(gtkListSelectionChanged), ih);
+ gtk_tree_selection_select_path(selection, path);
+ g_signal_handlers_unblock_by_func(G_OBJECT(selection), G_CALLBACK(gtkListSelectionChanged), ih);
+ gtk_tree_path_free(path);
+ iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos);
+
+ if (!model) model = gtkListGetModel(ih);
+
+ if (gtk_tree_model_iter_nth_child(model, &iter, NULL, pos))
+ {
+ gchar *text = NULL;
+ gtk_tree_model_get(model, &iter, 0, &text, -1);
+ if (text)
+ {
+ gtk_entry_set_text((GtkEntry*)entry, text);
+ g_free(text);
+ }
+ }
+
+ }
+ }
+
+ return FALSE;
+}
+
+static gboolean gtkListEditKeyReleaseEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih)
+{
+ gtkListEditMoveCursor(widget, 0, 0, 0, ih);
+ (void)evt;
+ return FALSE;
+}
+
+static gboolean gtkListEditButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih)
+{
+ gtkListEditMoveCursor(widget, 0, 0, 0, ih);
+ (void)evt;
+ return FALSE;
+}
+
+static int gtkListCallEditCb(Ihandle* ih, GtkEditable *editable, const char* insert_value, int len, int start, int end)
+{
+ char *new_value, *value;
+ int ret = -1, key = 0;
+
+ IFnis cb = (IFnis)IupGetCallback(ih, "EDIT_CB");
+ if (!cb && !ih->data->mask)
+ return -1; /* continue */
+
+ value = iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(gtk_entry_get_text(GTK_ENTRY(editable))));
+
+ if (!insert_value)
+ {
+ new_value = iupStrDup(value);
+ if (end<0) end = strlen(value)+1;
+ iupStrRemove(new_value, start, end, 1);
+ }
+ else
+ {
+ if (!value)
+ new_value = iupStrDup(insert_value);
+ else
+ {
+ if (len < end-start)
+ {
+ new_value = iupStrDup(value);
+ new_value = iupStrInsert(new_value, insert_value, start, end);
+ }
+ else
+ new_value = iupStrInsert(value, insert_value, start, end);
+ }
+ }
+
+ if (insert_value && insert_value[0]!=0 && insert_value[1]==0)
+ key = insert_value[0];
+
+ if (!new_value)
+ return -1; /* continue */
+
+ if (ih->data->nc && (int)strlen(new_value) > ih->data->nc)
+ {
+ if (new_value != value) free(new_value);
+ return 0; /* abort */
+ }
+
+ if (ih->data->mask && iupMaskCheck(ih->data->mask, new_value)==0)
+ {
+ if (new_value != value) free(new_value);
+ return 0; /* abort */
+ }
+
+ if (cb)
+ {
+ int cb_ret = cb(ih, key, (char*)new_value);
+ if (cb_ret==IUP_IGNORE)
+ ret = 0; /* abort */
+ else if (cb_ret==IUP_CLOSE)
+ {
+ IupExitLoop();
+ ret = 0; /* abort */
+ }
+ else if (cb_ret!=0 && key!=0 &&
+ cb_ret != IUP_DEFAULT && cb_ret != IUP_CONTINUE)
+ ret = cb_ret; /* abort and replace */
+ }
+
+ if (new_value != value) free(new_value);
+ return ret; /* continue */
+}
+
+static void gtkListEditDeleteText(GtkEditable *editable, int start, int end, Ihandle* ih)
+{
+ if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB"))
+ return;
+
+ if (gtkListCallEditCb(ih, editable, NULL, 0, start, end)==0)
+ g_signal_stop_emission_by_name(editable, "delete_text");
+}
+
+static void gtkListEditInsertText(GtkEditable *editable, char *insert_value, int len, int *pos, Ihandle* ih)
+{
+ int ret;
+
+ if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB"))
+ return;
+
+ ret = gtkListCallEditCb(ih, editable, iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(insert_value)), len, *pos, *pos);
+ if (ret == 0)
+ g_signal_stop_emission_by_name(editable, "insert_text");
+ else if (ret != -1)
+ {
+ insert_value[0] = (char)ret; /* replace key */
+
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ gtk_editable_insert_text(editable, insert_value, 1, pos);
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+
+ g_signal_stop_emission_by_name(editable, "insert_text");
+ }
+}
+
+static void gtkListEditChanged(void* dummy, Ihandle* ih)
+{
+ if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB"))
+ return;
+
+ iupBaseCallValueChangedCb(ih);
+ (void)dummy;
+}
+
+static void gtkListComboBoxPopupShownChanged(GtkComboBox* widget, GParamSpec *pspec, Ihandle* ih)
+{
+ IFni cb = (IFni)IupGetCallback(ih, "DROPDOWN_CB");
+ if (cb)
+ {
+ gboolean popup_shown;
+ g_object_get(widget, "popup-shown", &popup_shown, NULL);
+ cb(ih, popup_shown);
+ }
+ (void)pspec;
+}
+
+static void gtkListComboBoxChanged(GtkComboBox* widget, Ihandle* ih)
+{
+ IFnsii cb = (IFnsii)IupGetCallback(ih, "ACTION");
+ if (cb)
+ {
+ int pos = gtk_combo_box_get_active((GtkComboBox*)ih->handle);
+ pos++; /* IUP starts at 1 */
+ iupListSingleCallActionCallback(ih, cb, pos);
+ }
+
+ if (!ih->data->has_editbox)
+ iupBaseCallValueChangedCb(ih);
+
+ (void)widget;
+}
+
+static gboolean gtkListSimpleKeyPressEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih)
+{
+ if (iupgtkKeyPressEvent(widget, evt, ih) == TRUE)
+ return TRUE;
+
+ if (evt->keyval == GDK_Return || evt->keyval == GDK_KP_Enter)
+ return TRUE; /* used to avoid the call to DBLCLICK_CB in the default processing */
+ return FALSE;
+}
+
+static void gtkListRowActivated(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, Ihandle* ih)
+{
+ IFnis cb = (IFnis) IupGetCallback(ih, "DBLCLICK_CB");
+ if (cb)
+ {
+ int* indices = gtk_tree_path_get_indices(path);
+ iupListSingleCallDblClickCallback(ih, cb, indices[0]+1); /* IUP starts at 1 */
+ }
+ (void)column;
+ (void)tree_view;
+}
+
+static void gtkListSelectionChanged(GtkTreeSelection* selection, Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ /* must manually update its contents */
+ GtkTreeIter iter;
+ GtkTreeModel* tree_model;
+ if (gtk_tree_selection_get_selected(selection, &tree_model, &iter))
+ {
+ GtkTreePath *path = gtk_tree_model_get_path(tree_model, &iter);
+ char* value = NULL;
+ gtk_tree_model_get(tree_model, &iter, 0, &value, -1);
+ if (value)
+ {
+ GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY");
+ gtk_entry_set_text(entry, value);
+ g_free(value);
+ }
+ gtk_tree_path_free(path);
+ }
+ }
+
+ if (!ih->data->is_multiple)
+ {
+ IFnsii cb = (IFnsii)IupGetCallback(ih, "ACTION");
+ if (cb)
+ {
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iter;
+ GtkTreeModel* tree_model;
+ if (gtk_tree_selection_get_selected(selection, &tree_model, &iter))
+ {
+ GtkTreePath *path = gtk_tree_model_get_path(tree_model, &iter);
+ int* indices = gtk_tree_path_get_indices(path);
+ iupListSingleCallActionCallback(ih, cb, indices[0]+1); /* IUP starts at 1 */
+ gtk_tree_path_free (path);
+ }
+ }
+ }
+ else
+ {
+ IFns multi_cb = (IFns)IupGetCallback(ih, "MULTISELECT_CB");
+ IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION");
+ if (multi_cb || cb)
+ {
+ GList *il, *list = gtk_tree_selection_get_selected_rows(selection, NULL);
+ int i, sel_count = g_list_length(list);
+ int* pos = malloc(sizeof(int)*sel_count);
+ for (il=list, i=0; il; il=il->next, i++)
+ {
+ GtkTreePath* path = (GtkTreePath*)il->data;
+ int* indices = gtk_tree_path_get_indices(path);
+ pos[i] = indices[0];
+ gtk_tree_path_free(path);
+ }
+ g_list_free(list);
+
+ iupListMultipleCallActionCallback(ih, cb, multi_cb, pos, sel_count);
+ free(pos);
+ }
+ }
+
+ if (!ih->data->has_editbox)
+ iupBaseCallValueChangedCb(ih);
+}
+
+
+/*********************************************************************************/
+
+
+static int gtkListMapMethod(Ihandle* ih)
+{
+ GtkScrolledWindow* scrolled_window = NULL;
+ GtkListStore *store;
+
+ store = gtk_list_store_new(1, G_TYPE_STRING);
+
+ if (ih->data->is_dropdown)
+ {
+ GtkCellRenderer *renderer = NULL;
+
+ if (ih->data->has_editbox)
+ ih->handle = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(store), 0);
+ else
+ ih->handle = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
+ g_object_unref(store);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ g_object_set(G_OBJECT(ih->handle), "has-frame", TRUE, NULL);
+
+ if (ih->data->has_editbox)
+ {
+ GtkWidget *entry;
+#if GTK_CHECK_VERSION(2, 12, 0)
+ GList* list = gtk_cell_layout_get_cells(GTK_CELL_LAYOUT(ih->handle));
+ renderer = list->data;
+ g_list_free(list);
+#endif
+
+ entry = gtk_bin_get_child(GTK_BIN(ih->handle));
+ iupAttribSetStr(ih, "_IUPGTK_ENTRY", (char*)entry);
+
+ g_signal_connect(G_OBJECT(entry), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(entry), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(entry), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(entry), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(entry), "show-help", G_CALLBACK(iupgtkShowHelp), ih);
+ g_signal_connect(G_OBJECT(entry), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih);
+
+ g_signal_connect(G_OBJECT(entry), "delete-text", G_CALLBACK(gtkListEditDeleteText), ih);
+ g_signal_connect(G_OBJECT(entry), "insert-text", G_CALLBACK(gtkListEditInsertText), ih);
+ /* g_signal_connect(G_OBJECT(entry), "changed", G_CALLBACK(gtkListEditChanged), ih); */
+ g_signal_connect_after(G_OBJECT(entry), "move-cursor", G_CALLBACK(gtkListEditMoveCursor), ih); /* only report some caret movements */
+ g_signal_connect_after(G_OBJECT(entry), "key-release-event", G_CALLBACK(gtkListEditKeyReleaseEvent), ih);
+ g_signal_connect(G_OBJECT(entry), "button-press-event", G_CALLBACK(gtkListEditButtonEvent), ih); /* if connected "after" then it is ignored */
+ g_signal_connect(G_OBJECT(entry), "button-release-event",G_CALLBACK(gtkListEditButtonEvent), ih);
+
+ if (!iupAttribGetBoolean(ih, "CANFOCUS"))
+ GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS;
+ }
+ else
+ {
+ /* had to add an event box just to get get/killfocus,enter/leave events */
+ GtkWidget *box = gtk_event_box_new();
+ gtk_container_add((GtkContainer*)box, ih->handle);
+ iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)box);
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(ih->handle), renderer, TRUE);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(ih->handle), renderer, "text", 0, NULL);
+
+ g_signal_connect(G_OBJECT(box), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(box), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(box), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(box), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih);
+
+ if (!iupAttribGetBoolean(ih, "CANFOCUS"))
+ GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS;
+ else
+ GTK_WIDGET_FLAGS(box) |= GTK_CAN_FOCUS;
+ }
+
+ g_signal_connect(ih->handle, "changed", G_CALLBACK(gtkListComboBoxChanged), ih);
+ g_signal_connect(ih->handle, "notify::popup-shown", G_CALLBACK(gtkListComboBoxPopupShownChanged), ih);
+
+ if (renderer)
+ {
+ renderer->xpad = 0;
+ renderer->ypad = 0;
+ iupAttribSetStr(ih, "_IUPGTK_RENDERER", (char*)renderer);
+ }
+ }
+ else
+ {
+ GtkCellRenderer *renderer;
+ GtkTreeSelection* selection;
+ GtkTreeViewColumn *column;
+ GtkPolicyType scrollbar_policy;
+
+ ih->handle = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
+ g_object_unref(store);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ scrolled_window = (GtkScrolledWindow*)gtk_scrolled_window_new(NULL, NULL);
+
+ if (ih->data->has_editbox)
+ {
+ GtkBox* vbox = (GtkBox*)gtk_vbox_new(FALSE, 0);
+
+ GtkWidget *entry = gtk_entry_new();
+ gtk_widget_show(entry);
+ gtk_box_pack_start(vbox, entry, FALSE, FALSE, 0);
+ iupAttribSetStr(ih, "_IUPGTK_ENTRY", (char*)entry);
+
+ gtk_widget_show((GtkWidget*)vbox);
+ gtk_box_pack_end(vbox, (GtkWidget*)scrolled_window, TRUE, TRUE, 0);
+ iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)vbox);
+ iupAttribSetStr(ih, "_IUPGTK_SCROLLED_WINDOW", (char*)scrolled_window);
+
+ GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS; /* focus goes only to the edit box */
+ if (!iupAttribGetBoolean(ih, "CANFOCUS"))
+ GTK_WIDGET_FLAGS(entry) &= ~GTK_CAN_FOCUS;
+
+ g_signal_connect(G_OBJECT(entry), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(entry), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(entry), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(entry), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(entry), "show-help", G_CALLBACK(iupgtkShowHelp), ih);
+
+ g_signal_connect(G_OBJECT(entry), "delete-text", G_CALLBACK(gtkListEditDeleteText), ih);
+ g_signal_connect(G_OBJECT(entry), "insert-text", G_CALLBACK(gtkListEditInsertText), ih);
+ g_signal_connect(G_OBJECT(entry), "changed", G_CALLBACK(gtkListEditChanged), ih);
+ g_signal_connect_after(G_OBJECT(entry), "move-cursor", G_CALLBACK(gtkListEditMoveCursor), ih); /* only report some caret movements */
+ g_signal_connect(G_OBJECT(entry), "key-press-event", G_CALLBACK(gtkListEditKeyPressEvent), ih);
+ g_signal_connect_after(G_OBJECT(entry), "key-release-event", G_CALLBACK(gtkListEditKeyReleaseEvent), ih);
+ g_signal_connect(G_OBJECT(entry), "button-press-event", G_CALLBACK(gtkListEditButtonEvent), ih); /* if connected "after" then it is ignored */
+ g_signal_connect(G_OBJECT(entry), "button-release-event",G_CALLBACK(gtkListEditButtonEvent), ih);
+ }
+ else
+ {
+ iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)scrolled_window);
+
+ if (!iupAttribGetBoolean(ih, "CANFOCUS"))
+ GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS;
+
+ g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(gtkListSimpleKeyPressEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih);
+ }
+
+ column = gtk_tree_view_column_new();
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(column), renderer, TRUE);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(column), renderer, "text", 0, NULL);
+
+ iupAttribSetStr(ih, "_IUPGTK_RENDERER", (char*)renderer);
+ g_object_set(G_OBJECT(renderer), "xpad", 0, NULL);
+ g_object_set(G_OBJECT(renderer), "ypad", 0, NULL);
+
+ gtk_tree_view_append_column(GTK_TREE_VIEW(ih->handle), column);
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(ih->handle), FALSE);
+ gtk_tree_view_set_enable_search(GTK_TREE_VIEW(ih->handle), FALSE); /* TODO: check "start-interactive-search" signal */
+
+ gtk_container_add((GtkContainer*)scrolled_window, ih->handle);
+ gtk_widget_show((GtkWidget*)scrolled_window);
+ gtk_scrolled_window_set_shadow_type(scrolled_window, GTK_SHADOW_IN);
+
+ if (ih->data->sb)
+ {
+ if (iupAttribGetBoolean(ih, "AUTOHIDE"))
+ scrollbar_policy = GTK_POLICY_AUTOMATIC;
+ else
+ scrollbar_policy = GTK_POLICY_ALWAYS;
+ }
+ else
+ scrollbar_policy = GTK_POLICY_NEVER;
+
+ gtk_scrolled_window_set_policy(scrolled_window, scrollbar_policy, scrollbar_policy);
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+ if (!ih->data->has_editbox && ih->data->is_multiple)
+ {
+ gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
+#if GTK_CHECK_VERSION(2, 10, 0)
+ gtk_tree_view_set_rubber_banding(GTK_TREE_VIEW(ih->handle), TRUE);
+#endif
+ }
+ else
+ gtk_tree_selection_set_mode(selection, GTK_SELECTION_BROWSE);
+
+ g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(gtkListSelectionChanged), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "row-activated", G_CALLBACK(gtkListRowActivated), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "motion-notify-event",G_CALLBACK(iupgtkMotionNotifyEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "button-press-event", G_CALLBACK(iupgtkButtonEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "button-release-event",G_CALLBACK(iupgtkButtonEvent), ih);
+ }
+
+ if (iupAttribGetBoolean(ih, "SORT"))
+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), 0, GTK_SORT_ASCENDING);
+
+ /* add to the parent, all GTK controls must call this. */
+ iupgtkBaseAddToParent(ih);
+
+ if (scrolled_window)
+ gtk_widget_realize((GtkWidget*)scrolled_window);
+ gtk_widget_realize(ih->handle);
+
+ /* configure for DRAG&DROP */
+ if (IupGetCallback(ih, "DROPFILES_CB"))
+ iupAttribSetStr(ih, "DRAGDROP", "YES");
+
+ IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)gtkListConvertXYToPos);
+
+ iupListSetInitialItems(ih);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvListInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkListMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Overwrite Common */
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, gtkListSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED);
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkListSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, gtkListSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT);
+
+ /* IupList only */
+ iupClassRegisterAttributeId(ic, "IDVALUE", gtkListGetIdValueAttrib, iupListSetIdValueAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUE", gtkListGetValueAttrib, gtkListSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOWDROPDOWN", NULL, gtkListSetShowDropdownAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TOPITEM", NULL, gtkListSetTopItemAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupgtkSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPACING", iupListGetSpacingAttrib, gtkListSetSpacingAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+
+ iupClassRegisterAttribute(ic, "PADDING", iupListGetPaddingAttrib, gtkListSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "SELECTEDTEXT", gtkListGetSelectedTextAttrib, gtkListSetSelectedTextAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTION", gtkListGetSelectionAttrib, gtkListSetSelectionAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTIONPOS", gtkListGetSelectionPosAttrib, gtkListSetSelectionPosAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CARET", gtkListGetCaretAttrib, gtkListSetCaretAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CARETPOS", gtkListGetCaretPosAttrib, gtkListSetCaretPosAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "INSERT", NULL, gtkListSetInsertAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "APPEND", NULL, gtkListSetAppendAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "READONLY", gtkListGetReadOnlyAttrib, gtkListSetReadOnlyAttrib, NULL, NULL, IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "NC", iupListGetNCAttrib, gtkListSetNCAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "CLIPBOARD", NULL, gtkListSetClipboardAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SCROLLTO", NULL, gtkListSetScrollToAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SCROLLTOPOS", NULL, gtkListSetScrollToPosAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/gtk/iupgtk_loop.c b/iup/src/gtk/iupgtk_loop.c
new file mode 100755
index 0000000..e349a45
--- /dev/null
+++ b/iup/src/gtk/iupgtk_loop.c
@@ -0,0 +1,93 @@
+/** \file
+ * \brief GTK Message Loop
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <string.h>
+
+#include <gtk/gtk.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+
+/* local variables */
+static IFidle gtk_idle_cb = NULL;
+static guint gtk_idle_id;
+
+static gboolean gtkIdleFunc(gpointer data)
+{
+ (void)data;
+ if (gtk_idle_cb)
+ {
+ int ret = gtk_idle_cb();
+ if (ret == IUP_CLOSE)
+ {
+ gtk_idle_cb = NULL;
+ IupExitLoop();
+ return FALSE; /* removes the idle */
+ }
+ if (ret == IUP_IGNORE)
+ {
+ gtk_idle_cb = NULL;
+ return FALSE; /* removes the idle */
+ }
+
+ return TRUE; /* keeps the idle */
+ }
+
+ return FALSE; /* removes the idle */
+}
+
+void iupdrvSetIdleFunction(Icallback f)
+{
+ if (gtk_idle_cb)
+ g_source_remove(gtk_idle_id);
+
+ gtk_idle_cb = (IFidle)f;
+
+ if (gtk_idle_cb)
+ gtk_idle_id = g_idle_add(gtkIdleFunc, NULL);
+}
+
+void IupExitLoop(void)
+{
+ if (gtk_main_iteration_do(FALSE)==FALSE)
+ gtk_main_quit();
+}
+
+int IupMainLoopLevel(void)
+{
+ return gtk_main_level();
+}
+
+int IupMainLoop(void)
+{
+ gtk_main();
+ return IUP_NOERROR;
+}
+
+int IupLoopStep(void)
+{
+ if (gtk_main_iteration_do(FALSE))
+ return IUP_CLOSE;
+ return IUP_DEFAULT;
+}
+
+void IupFlush(void)
+{
+ IFidle old_gtk_idle_cb = NULL;
+ if (gtk_idle_cb)
+ {
+ old_gtk_idle_cb = gtk_idle_cb;
+ iupdrvSetIdleFunction(NULL);
+ }
+
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ if (old_gtk_idle_cb)
+ iupdrvSetIdleFunction((Icallback)old_gtk_idle_cb);
+}
diff --git a/iup/src/gtk/iupgtk_menu.c b/iup/src/gtk/iupgtk_menu.c
new file mode 100755
index 0000000..c12fbea
--- /dev/null
+++ b/iup/src/gtk/iupgtk_menu.c
@@ -0,0 +1,525 @@
+/** \file
+ * \brief Menu Resources
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+
+#ifdef HILDON
+#include <hildon/hildon-window.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_label.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_image.h"
+#include "iup_menu.h"
+
+#include "iupgtk_drv.h"
+
+
+typedef struct _ImenuPos
+{
+ int x, y;
+} ImenuPos;
+
+static void gtkMenuPositionFunc(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, ImenuPos *menupos)
+{
+ *x = menupos->x;
+ *y = menupos->y;
+ *push_in = FALSE;
+ (void)menu;
+}
+
+int iupdrvMenuPopup(Ihandle* ih, int x, int y)
+{
+ ImenuPos menupos;
+ menupos.x = x;
+ menupos.y = y;
+ gtk_menu_popup((GtkMenu*)ih->handle, NULL, NULL, (GtkMenuPositionFunc)gtkMenuPositionFunc,
+ (gpointer)&menupos, 0, gtk_get_current_event_time());
+ gtk_main();
+ return IUP_NOERROR;
+}
+
+int iupdrvMenuGetMenuBarSize(Ihandle* ih)
+{
+ int ch;
+ iupdrvFontGetCharSize(ih, NULL, &ch);
+#ifdef WIN32
+ return 3 + ch + 3;
+#else
+ return 4 + ch + 4;
+#endif
+}
+
+static void gtkItemUpdateImage(Ihandle* ih, const char* value, const char* image, const char* impress)
+{
+ GdkPixbuf* pixbuf;
+
+ if (!impress || !iupStrBoolean(value))
+ pixbuf = iupImageGetImage(image, ih, 0);
+ else
+ pixbuf = iupImageGetImage(impress, ih, 0);
+
+ if (pixbuf)
+ {
+ GtkWidget* image_label = gtk_image_menu_item_get_image((GtkImageMenuItem*)ih->handle);
+ if (!image_label)
+ {
+ image_label = gtk_image_new();
+ gtk_image_menu_item_set_image((GtkImageMenuItem*)ih->handle, image_label);
+ }
+
+ if (pixbuf != gtk_image_get_pixbuf((GtkImage*)image_label))
+ gtk_image_set_from_pixbuf((GtkImage*)image_label, pixbuf);
+ }
+ else
+ gtk_image_menu_item_set_image((GtkImageMenuItem*)ih->handle, NULL);
+}
+
+
+/*******************************************************************************************/
+
+
+static void gtkMenuMap(GtkWidget *widget, Ihandle* ih)
+{
+ Icallback cb = IupGetCallback(ih, "OPEN_CB");
+ if (!cb && ih->parent) cb = (Icallback)IupGetCallback(ih->parent, "OPEN_CB"); /* check also in the Submenu */
+ if (cb) cb(ih);
+
+ (void)widget;
+}
+
+static void gtkMenuUnMap(GtkWidget *widget, Ihandle* ih)
+{
+ Icallback cb = IupGetCallback(ih, "MENUCLOSE_CB");
+ if (!cb && ih->parent) cb = (Icallback)IupGetCallback(ih->parent, "MENUCLOSE_CB"); /* check also in the Submenu */
+ if (cb) cb(ih);
+
+ (void)widget;
+}
+
+static void gtkPopupMenuUnMap(GtkWidget *widget, Ihandle* ih)
+{
+ gtkMenuUnMap(widget, ih);
+
+ /* quit the popup loop */
+ gtk_main_quit();
+}
+
+static void gtkItemSelect(GtkWidget *widget, Ihandle* ih)
+{
+ Icallback cb = IupGetCallback(ih, "HIGHLIGHT_CB");
+ if (cb)
+ cb(ih);
+
+ cb = IupGetCallback(ih, "HELP_CB");
+ if (cb)
+ gtk_menu_set_active((GtkMenu*)ih->parent->handle, IupGetChildPos(ih->parent, ih));
+
+ (void)widget;
+}
+
+static void gtkItemActivate(GtkWidget *widget, Ihandle* ih)
+{
+ Icallback cb;
+
+ if (GTK_IS_CHECK_MENU_ITEM(ih->handle) && !iupAttribGetBoolean(ih, "AUTOTOGGLE") && !iupAttribGetBoolean(ih->parent, "RADIO"))
+ {
+ /* GTK by default will do autotoggle */
+ g_signal_handlers_block_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkItemActivate), ih);
+ gtk_check_menu_item_set_active((GtkCheckMenuItem*)ih->handle, !gtk_check_menu_item_get_active((GtkCheckMenuItem*)ih->handle));
+ g_signal_handlers_unblock_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkItemActivate), ih);
+ }
+
+ if (GTK_IS_IMAGE_MENU_ITEM(ih->handle))
+ {
+ if (iupAttribGetBoolean(ih, "AUTOTOGGLE"))
+ {
+ if (iupAttribGetBoolean(ih, "VALUE"))
+ iupAttribSetStr(ih, "VALUE", "OFF");
+ else
+ iupAttribSetStr(ih, "VALUE", "ON");
+
+ gtkItemUpdateImage(ih, iupAttribGet(ih, "VALUE"), iupAttribGet(ih, "IMAGE"), iupAttribGet(ih, "IMPRESS"));
+ }
+ }
+
+ cb = IupGetCallback(ih, "ACTION");
+ if (cb && cb(ih)==IUP_CLOSE)
+ IupExitLoop();
+
+ (void)widget;
+}
+
+static gboolean gtkMenuKeyPressEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih)
+{
+ if (evt->keyval == GDK_F1)
+ {
+ Ihandle* child;
+ GtkWidget* active = gtk_menu_get_active((GtkMenu*)widget);
+ for (child=ih->firstchild; child; child=child->brother)
+ {
+ if (child->handle == active)
+ iupgtkShowHelp(NULL, NULL, child);
+ }
+ }
+
+ (void)widget;
+ (void)evt;
+ return FALSE;
+}
+
+
+/*******************************************************************************************/
+
+
+static int gtkMenuMapMethod(Ihandle* ih)
+{
+ if (iupMenuIsMenuBar(ih))
+ {
+ /* top level menu used for MENU attribute in IupDialog (a menu bar) */
+#ifdef HILDON
+ Ihandle *pih;
+ ih->handle = gtk_menu_new();
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ pih = iupChildTreeGetNativeParent(ih);
+ hildon_window_set_menu(HILDON_WINDOW(pih->handle), GTK_MENU(ih->handle));
+#else
+ ih->handle = gtk_menu_bar_new();
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ iupgtkBaseAddToParent(ih);
+#endif
+ }
+ else
+ {
+ ih->handle = gtk_menu_new();
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ if (ih->parent)
+ {
+ /* parent is a submenu */
+ gtk_menu_item_set_submenu((GtkMenuItem*)ih->parent->handle, ih->handle);
+
+ g_signal_connect(G_OBJECT(ih->handle), "map", G_CALLBACK(gtkMenuMap), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "unmap", G_CALLBACK(gtkMenuUnMap), ih);
+ }
+ else
+ {
+ /* top level menu used for IupPopup */
+ iupAttribSetStr(ih, "_IUPGTK_POPUP_MENU", "1");
+
+ g_signal_connect(G_OBJECT(ih->handle), "map", G_CALLBACK(gtkMenuMap), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "unmap", G_CALLBACK(gtkPopupMenuUnMap), ih);
+ }
+ }
+
+ gtk_widget_add_events(ih->handle, GDK_KEY_PRESS_MASK);
+ g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(gtkMenuKeyPressEvent), ih);
+
+ ih->serial = iupMenuGetChildId(ih);
+ gtk_widget_show(ih->handle);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvMenuInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkMenuMapMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Used by iupdrvMenuGetMenuBarSize */
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, NULL, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_DEFAULT); /* use inheritance to retrieve standard fonts */
+
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, NULL, NULL, IUPAF_DEFAULT);
+}
+
+
+/*******************************************************************************************/
+
+static int gtkItemSetTitleImageAttrib(Ihandle* ih, const char* value)
+{
+ if (GTK_IS_IMAGE_MENU_ITEM(ih->handle))
+ {
+ gtkItemUpdateImage(ih, NULL, value, NULL);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int gtkItemSetImageAttrib(Ihandle* ih, const char* value)
+{
+ if (GTK_IS_IMAGE_MENU_ITEM(ih->handle))
+ {
+ gtkItemUpdateImage(ih, iupAttribGet(ih, "VALUE"), value, iupAttribGet(ih, "IMPRESS"));
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int gtkItemSetImpressAttrib(Ihandle* ih, const char* value)
+{
+ if (GTK_IS_IMAGE_MENU_ITEM(ih->handle))
+ {
+ gtkItemUpdateImage(ih, iupAttribGet(ih, "VALUE"), iupAttribGet(ih, "IMAGE"), value);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int gtkItemSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ char *str;
+ GtkWidget* label;
+
+ if (!value)
+ {
+ str = " ";
+ value = str;
+ }
+ else
+ str = iupMenuProcessTitle(ih, value);
+
+ label = gtk_bin_get_child((GtkBin*)ih->handle);
+
+ iupgtkSetMnemonicTitle(ih, (GtkLabel*)label, str);
+
+ if (str != value) free(str);
+ return 1;
+}
+
+static int gtkItemSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (GTK_IS_CHECK_MENU_ITEM(ih->handle))
+ {
+ if (iupAttribGetBoolean(ih->parent, "RADIO"))
+ value = "ON";
+
+ g_signal_handlers_block_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkItemActivate), ih);
+ gtk_check_menu_item_set_active((GtkCheckMenuItem*)ih->handle, iupStrBoolean(value));
+ g_signal_handlers_unblock_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkItemActivate), ih);
+ return 0;
+ }
+ else if (GTK_IS_IMAGE_MENU_ITEM(ih->handle))
+ {
+ gtkItemUpdateImage(ih, value, iupAttribGet(ih, "IMAGE"), iupAttribGet(ih, "IMPRESS"));
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static char* gtkItemGetValueAttrib(Ihandle* ih)
+{
+ if (GTK_IS_CHECK_MENU_ITEM(ih->handle))
+ {
+ if (gtk_check_menu_item_get_active((GtkCheckMenuItem*)ih->handle))
+ return "ON";
+ else
+ return "OFF";
+ }
+ else
+ return NULL;
+}
+
+static int gtkItemMapMethod(Ihandle* ih)
+{
+ int pos;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+#ifndef HILDON
+ if (iupMenuIsMenuBar(ih->parent))
+ ih->handle = gtk_menu_item_new_with_label("");
+ else
+#endif
+ {
+ if (iupAttribGet(ih, "IMAGE")||iupAttribGet(ih, "TITLEIMAGE"))
+ ih->handle = gtk_image_menu_item_new_with_label("");
+ else if (iupAttribGetBoolean(ih->parent, "RADIO"))
+ {
+ GtkRadioMenuItem* last_tg = (GtkRadioMenuItem*)iupAttribGet(ih->parent, "_IUPGTK_LASTRADIOITEM");
+ if (last_tg)
+ ih->handle = gtk_radio_menu_item_new_with_label_from_widget(last_tg, "");
+ else
+ ih->handle = gtk_radio_menu_item_new_with_label(NULL, "");
+ iupAttribSetStr(ih->parent, "_IUPGTK_LASTRADIOITEM", (char*)ih->handle);
+ }
+ else
+ {
+ char* hidemark = iupAttribGetStr(ih, "HIDEMARK");
+ if (!hidemark && gtk_check_version(2, 14, 0) == NULL)
+ {
+ /* force HIDEMARK if VALUE is defined before Map, after GTK 2.14 */
+ if (!iupAttribGet(ih, "VALUE"))
+ hidemark = "YES";
+ }
+
+ if (iupStrBoolean(hidemark))
+ ih->handle = gtk_menu_item_new_with_label("");
+ else
+ ih->handle = gtk_check_menu_item_new_with_label("");
+ }
+ }
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupMenuGetChildId(ih);
+
+ g_signal_connect(G_OBJECT(ih->handle), "select", G_CALLBACK(gtkItemSelect), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "activate", G_CALLBACK(gtkItemActivate), ih);
+
+ pos = IupGetChildPos(ih->parent, ih);
+ gtk_menu_shell_insert((GtkMenuShell*)ih->parent->handle, ih->handle, pos);
+ gtk_widget_show(ih->handle);
+
+ iupUpdateStandardFontAttrib(ih);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvItemInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkItemMapMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Common */
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, iupdrvSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); /* use inheritance to retrieve standard fonts */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iupBaseSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* IupItem only */
+ iupClassRegisterAttribute(ic, "VALUE", gtkItemGetValueAttrib, gtkItemSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TITLE", NULL, gtkItemSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TITLEIMAGE", NULL, gtkItemSetTitleImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, gtkItemSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMPRESS", NULL, gtkItemSetImpressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupItem GTK and Motif only */
+ iupClassRegisterAttribute(ic, "HIDEMARK", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED);
+}
+
+
+/*******************************************************************************************/
+
+
+static int gtkSubmenuSetImageAttrib(Ihandle* ih, const char* value)
+{
+ if (GTK_IS_IMAGE_MENU_ITEM(ih->handle))
+ {
+ gtkItemUpdateImage(ih, NULL, value, NULL);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int motSubmenuMapMethod(Ihandle* ih)
+{
+ int pos;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+#ifndef HILDON
+ if (iupMenuIsMenuBar(ih->parent))
+ ih->handle = gtk_menu_item_new_with_label("");
+ else
+#endif
+ ih->handle = gtk_image_menu_item_new_with_label("");
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupMenuGetChildId(ih);
+
+ pos = IupGetChildPos(ih->parent, ih);
+ gtk_menu_shell_insert((GtkMenuShell*)ih->parent->handle, ih->handle, pos);
+ gtk_widget_show(ih->handle);
+
+ g_signal_connect(G_OBJECT(ih->handle), "select", G_CALLBACK(gtkItemSelect), ih);
+
+ iupUpdateStandardFontAttrib(ih);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvSubmenuInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motSubmenuMapMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Common */
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, iupdrvSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); /* use inheritance to retrieve standard fonts */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iupBaseSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* IupSubmenu only */
+ iupClassRegisterAttribute(ic, "TITLE", NULL, gtkItemSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, gtkSubmenuSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+}
+
+
+/*******************************************************************************************/
+
+
+static int gtkSeparatorMapMethod(Ihandle* ih)
+{
+ int pos;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ ih->handle = gtk_separator_menu_item_new();
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupMenuGetChildId(ih);
+
+ pos = IupGetChildPos(ih->parent, ih);
+ gtk_menu_shell_insert((GtkMenuShell*)ih->parent->handle, ih->handle, pos);
+ gtk_widget_show(ih->handle);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvSeparatorInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkSeparatorMapMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+}
diff --git a/iup/src/gtk/iupgtk_messagedlg.c b/iup/src/gtk/iupgtk_messagedlg.c
new file mode 100755
index 0000000..a036af6
--- /dev/null
+++ b/iup/src/gtk/iupgtk_messagedlg.c
@@ -0,0 +1,128 @@
+/** \file
+ * \brief GTK IupMessageDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_dialog.h"
+
+#include "iupgtk_drv.h"
+
+/* Sometimes GTK decides to invert the buttons position because of the GNOME Guidelines.
+ To avoid that we define different Ids for the buttons. */
+#define IUP_RESPONSE_1 -100
+#define IUP_RESPONSE_2 -200
+#define IUP_RESPONSE_HELP -300
+
+#ifndef GTK_MESSAGE_OTHER
+#define GTK_MESSAGE_OTHER GTK_MESSAGE_INFO
+#endif
+
+static int gtkMessageDlgPopup(Ihandle* ih, int x, int y)
+{
+ InativeHandle* parent = iupDialogGetNativeParent(ih);
+ GtkMessageType type = GTK_MESSAGE_OTHER;
+ GtkWidget* dialog;
+ char *icon, *buttons, *title;
+ int response, num_but = 2;
+
+ iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */
+ iupAttribSetInt(ih, "_IUPDLG_Y", y);
+
+ icon = iupAttribGetStr(ih, "DIALOGTYPE");
+ if (iupStrEqualNoCase(icon, "ERROR"))
+ type = GTK_MESSAGE_ERROR;
+ else if (iupStrEqualNoCase(icon, "WARNING"))
+ type = GTK_MESSAGE_WARNING;
+ else if (iupStrEqualNoCase(icon, "INFORMATION"))
+ type = GTK_MESSAGE_INFO;
+ else if (iupStrEqualNoCase(icon, "QUESTION"))
+ type = GTK_MESSAGE_QUESTION;
+
+ dialog = gtk_message_dialog_new((GtkWindow*)parent,
+ 0,
+ type,
+ GTK_BUTTONS_NONE,
+ iupgtkStrConvertToUTF8(iupAttribGet(ih, "VALUE")));
+ if (!dialog)
+ return IUP_ERROR;
+
+ title = iupAttribGet(ih, "TITLE");
+ if (title)
+ gtk_window_set_title(GTK_WINDOW(dialog), iupgtkStrConvertToUTF8(title));
+
+ buttons = iupAttribGetStr(ih, "BUTTONS");
+ if (iupStrEqualNoCase(buttons, "OKCANCEL"))
+ {
+ gtk_dialog_add_button(GTK_DIALOG(dialog),
+ GTK_STOCK_OK,
+ IUP_RESPONSE_1);
+ gtk_dialog_add_button(GTK_DIALOG(dialog),
+ GTK_STOCK_CANCEL,
+ IUP_RESPONSE_2);
+ }
+ else if (iupStrEqualNoCase(buttons, "YESNO"))
+ {
+ gtk_dialog_add_button(GTK_DIALOG(dialog),
+ GTK_STOCK_YES,
+ IUP_RESPONSE_1);
+ gtk_dialog_add_button(GTK_DIALOG(dialog),
+ GTK_STOCK_NO,
+ IUP_RESPONSE_2);
+ }
+ else /* OK */
+ {
+ gtk_dialog_add_button(GTK_DIALOG(dialog),
+ GTK_STOCK_OK,
+ IUP_RESPONSE_1);
+ num_but = 1;
+ }
+
+ if (IupGetCallback(ih, "HELP_CB"))
+ gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_HELP, IUP_RESPONSE_HELP);
+
+ if (num_but == 2 && iupAttribGetInt(ih, "BUTTONDEFAULT") == 2)
+ gtk_dialog_set_default_response(GTK_DIALOG(dialog), IUP_RESPONSE_2);
+ else
+ gtk_dialog_set_default_response(GTK_DIALOG(dialog), IUP_RESPONSE_1);
+
+ /* initialize the widget */
+ gtk_widget_realize(dialog);
+
+ ih->handle = dialog;
+ iupDialogUpdatePosition(ih);
+ ih->handle = NULL;
+
+ do
+ {
+ response = gtk_dialog_run(GTK_DIALOG(dialog));
+
+ if (response == IUP_RESPONSE_HELP)
+ {
+ Icallback cb = IupGetCallback(ih, "HELP_CB");
+ if (cb && cb(ih) == IUP_CLOSE)
+ response = (num_but == 2)? IUP_RESPONSE_2: IUP_RESPONSE_1;
+ }
+ } while (response == IUP_RESPONSE_HELP);
+
+ if (response == IUP_RESPONSE_1)
+ IupSetAttribute(ih, "BUTTONRESPONSE", "1");
+ else
+ IupSetAttribute(ih, "BUTTONRESPONSE", "2");
+
+ gtk_widget_destroy(dialog);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvMessageDlgInitClass(Iclass* ic)
+{
+ ic->DlgPopup = gtkMessageDlgPopup;
+}
diff --git a/iup/src/gtk/iupgtk_open.c b/iup/src/gtk/iupgtk_open.c
new file mode 100755
index 0000000..66e46e8
--- /dev/null
+++ b/iup/src/gtk/iupgtk_open.c
@@ -0,0 +1,172 @@
+/** \file
+ * \brief GTK Driver Core
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <gtk/gtk.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvinfo.h"
+#include "iup_object.h"
+#include "iup_globalattrib.h"
+
+#include "iupgtk_drv.h"
+
+
+#ifdef WIN32 /******************************** WIN32 ************************************/
+#include <gdk/gdkwin32.h>
+
+char* iupgtkGetNativeWindowHandle(Ihandle* ih)
+{
+ GdkWindow* window = ih->handle->window;
+ if (window)
+ return (char*)GDK_WINDOW_HWND(window);
+ else
+ return NULL;
+}
+
+void* iupgtkGetNativeGraphicsContext(GtkWidget* widget)
+{
+ return GetDC(GDK_WINDOW_HWND(widget->window));
+}
+
+void iupgtkReleaseNativeGraphicsContext(GtkWidget* widget, void* gc)
+{
+ ReleaseDC(GDK_WINDOW_HWND(widget->window), (HDC)gc);
+}
+
+void* iupdrvGetDisplay(void)
+{
+ return NULL;
+}
+
+void iupgtkPushVisualAndColormap(void* visual, void* colormap)
+{
+ (void)visual;
+ (void)colormap;
+}
+
+static void gtkSetDrvGlobalAttrib(void)
+{
+}
+
+#else /******************************** X11 ************************************/
+#include <gdk/gdkx.h>
+
+char* iupgtkGetNativeWindowHandle(Ihandle* ih)
+{
+ GdkWindow* window = ih->handle->window;
+ if (window)
+ return (char*)GDK_WINDOW_XID(window);
+ else
+ return NULL;
+}
+
+void* iupgtkGetNativeGraphicsContext(GtkWidget* widget)
+{
+ GdkDisplay* display = gdk_display_get_default();
+ return (void*)XCreateGC(GDK_DISPLAY_XDISPLAY(display), GDK_WINDOW_XID(widget->window), 0, NULL);
+}
+
+void iupgtkReleaseNativeGraphicsContext(GtkWidget* widget, void* gc)
+{
+ GdkDisplay* display = gdk_display_get_default();
+ XFreeGC(GDK_DISPLAY_XDISPLAY(display), (GC)gc);
+ (void)widget;
+}
+
+void* iupdrvGetDisplay(void)
+{
+ GdkDisplay* display = gdk_display_get_default();
+ return GDK_DISPLAY_XDISPLAY(display);
+}
+
+void iupgtkPushVisualAndColormap(void* visual, void* colormap)
+{
+ GdkColormap* gdk_colormap;
+ GdkVisual *gdk_visual = gdkx_visual_get(XVisualIDFromVisual((Visual*)visual));
+ if (colormap)
+ gdk_colormap = gdk_x11_colormap_foreign_new(gdk_visual, (Colormap)colormap);
+ else
+ gdk_colormap = gdk_colormap_new(gdk_visual, FALSE);
+
+ gtk_widget_push_colormap(gdk_colormap);
+
+ /* gtk_widget_push_visual is now deprecated */
+}
+
+static void gtkSetDrvGlobalAttrib(void)
+{
+ GdkDisplay* display = gdk_display_get_default();
+ Display* xdisplay = GDK_DISPLAY_XDISPLAY(display);
+ IupSetGlobal("XDISPLAY", (char*)xdisplay);
+ IupSetGlobal("XSCREEN", (char*)XDefaultScreen(xdisplay));
+ IupSetGlobal("XSERVERVENDOR", ServerVendor(xdisplay));
+ IupSetfAttribute(NULL, "XVENDORRELEASE", "%d", VendorRelease(xdisplay));
+}
+
+#endif
+
+static void gtkSetGlobalColorAttrib(const char* name, GdkColor *color)
+{
+ iupGlobalSetDefaultColorAttrib(name, (int)iupCOLOR16TO8(color->red),
+ (int)iupCOLOR16TO8(color->green),
+ (int)iupCOLOR16TO8(color->blue));
+}
+
+void iupgtkUpdateGlobalColors(GtkStyle* style)
+{
+ GdkColor color = style->bg[GTK_STATE_NORMAL];
+ gtkSetGlobalColorAttrib("DLGBGCOLOR", &color);
+
+ color = style->fg[GTK_STATE_NORMAL];
+ gtkSetGlobalColorAttrib("DLGFGCOLOR", &color);
+
+ color = style->base[GTK_STATE_NORMAL];
+ gtkSetGlobalColorAttrib("TXTBGCOLOR", &color);
+
+ color = style->text[GTK_STATE_NORMAL];
+ gtkSetGlobalColorAttrib("TXTFGCOLOR", &color);
+}
+
+int iupdrvOpen(int *argc, char ***argv)
+{
+ GtkStyle* style;
+
+ if (!gtk_init_check(argc, argv))
+ return IUP_ERROR;
+
+ IupSetGlobal("DRIVER", "GTK");
+
+ IupStoreGlobal("SYSTEMLANGUAGE", pango_language_to_string(gtk_get_default_language()));
+
+ /* driver system version */
+ IupSetfAttribute(NULL, "GTKVERSION", "%d.%d.%d", gtk_major_version,
+ gtk_minor_version,
+ gtk_micro_version);
+ IupSetfAttribute(NULL, "GTKDEVVERSION", "%d.%d.%d", GTK_MAJOR_VERSION,
+ GTK_MINOR_VERSION,
+ GTK_MICRO_VERSION);
+
+ gtkSetDrvGlobalAttrib();
+
+ style = gtk_style_new();
+ iupgtkUpdateGlobalColors(style);
+ IupSetGlobal("_IUP_RESET_GLOBALCOLORS", "YES"); /* will update the global colors when the first dialog is mapped */
+ g_object_unref(style);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvClose(void)
+{
+ iupgtkReleaseConvertUTF8();
+}
diff --git a/iup/src/gtk/iupgtk_progressbar.c b/iup/src/gtk/iupgtk_progressbar.c
new file mode 100755
index 0000000..7bc6cbb
--- /dev/null
+++ b/iup/src/gtk/iupgtk_progressbar.c
@@ -0,0 +1,131 @@
+/** \file
+* \brief Progress bar Control
+*
+* See Copyright Notice in "iup.h"
+*/
+
+#undef GTK_DISABLE_DEPRECATED
+#include <gtk/gtk.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_progressbar.h"
+#include "iup_drv.h"
+
+#include "iupgtk_drv.h"
+
+
+static int gtkProgressBarSetMarqueeAttrib(Ihandle* ih, const char* value)
+{
+ GtkProgress* progress = (GtkProgress*)ih->handle;
+
+ if (iupStrBoolean(value))
+ {
+ ih->data->marquee = 1;
+ gtk_progress_set_activity_mode(progress, TRUE);
+ }
+ else
+ {
+ gtk_progress_set_activity_mode(progress, FALSE);
+ ih->data->marquee = 0;
+ }
+
+ return 1;
+}
+
+static int gtkProgressBarSetValueAttrib(Ihandle* ih, const char* value)
+{
+ GtkProgressBar* pbar = (GtkProgressBar*)ih->handle;
+
+ if (!value)
+ ih->data->value = 0;
+ else
+ ih->data->value = atof(value);
+ iProgressBarCropValue(ih);
+
+ if (ih->data->marquee)
+ gtk_progress_bar_pulse(pbar);
+ else
+ gtk_progress_bar_set_fraction(pbar, (ih->data->value - ih->data->vmin) / (ih->data->vmax - ih->data->vmin));
+
+ return 0;
+}
+
+static int gtkProgressBarSetDashedAttrib(Ihandle* ih, const char* value)
+{
+ GtkProgressBar* pbar = (GtkProgressBar*)ih->handle;
+
+ /* gtk_progress_bar_set_bar_style is deprecated */
+ if (iupStrBoolean(value))
+ {
+ ih->data->dashed = 1;
+ gtk_progress_bar_set_bar_style(pbar, GTK_PROGRESS_DISCRETE);
+ }
+ else /* Default */
+ {
+ ih->data->dashed = 0;
+ gtk_progress_bar_set_bar_style(pbar, GTK_PROGRESS_CONTINUOUS);
+ }
+
+ return 0;
+}
+
+static int gtkProgressBarMapMethod(Ihandle* ih)
+{
+ ih->handle = gtk_progress_bar_new();
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ /* add to the parent, all GTK controls must call this. */
+ iupgtkBaseAddToParent(ih);
+
+ gtk_widget_realize(ih->handle);
+
+ if (iupStrEqualNoCase(iupAttribGetStr(ih, "ORIENTATION"), "VERTICAL"))
+ {
+ gtk_progress_bar_set_orientation((GtkProgressBar*)ih->handle, GTK_PROGRESS_BOTTOM_TO_TOP);
+
+ if (ih->currentheight < ih->currentwidth)
+ {
+ int tmp = ih->currentheight;
+ ih->currentheight = ih->currentwidth;
+ ih->currentwidth = tmp;
+ }
+ }
+ else
+ gtk_progress_bar_set_orientation((GtkProgressBar*)ih->handle, GTK_PROGRESS_LEFT_TO_RIGHT);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvProgressBarInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkProgressBarMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, NULL, NULL, IUPAF_DEFAULT);
+
+ /* IupProgressBar only */
+ iupClassRegisterAttribute(ic, "VALUE", iProgressBarGetValueAttrib, gtkProgressBarSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DASHED", iProgressBarGetDashedAttrib, gtkProgressBarSetDashedAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ORIENTATION", NULL, NULL, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MARQUEE", NULL, gtkProgressBarSetMarqueeAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DASHED", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/gtk/iupgtk_tabs.c b/iup/src/gtk/iupgtk_tabs.c
new file mode 100755
index 0000000..8029826
--- /dev/null
+++ b/iup/src/gtk/iupgtk_tabs.c
@@ -0,0 +1,444 @@
+/** \file
+* \brief Tabs Control
+*
+* See Copyright Notice in "iup.h"
+*/
+
+#include <gtk/gtk.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_dialog.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_image.h"
+#include "iup_tabs.h"
+
+#include "iupgtk_drv.h"
+
+
+int iupdrvTabsExtraDecor(Ihandle* ih)
+{
+ (void)ih;
+ return 0;
+}
+
+int iupdrvTabsGetLineCountAttrib(Ihandle* ih)
+{
+ (void)ih;
+ return 1;
+}
+
+void iupdrvTabsSetCurrentTab(Ihandle* ih, int pos)
+{
+ iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", "1");
+ gtk_notebook_set_current_page((GtkNotebook*)ih->handle, pos);
+ iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", NULL);
+}
+
+int iupdrvTabsGetCurrentTab(Ihandle* ih)
+{
+ return gtk_notebook_get_current_page((GtkNotebook*)ih->handle);
+}
+
+static void gtkTabsUpdatePageFont(Ihandle* ih)
+{
+ Ihandle* child;
+ PangoFontDescription* fontdesc = (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih);
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ GtkWidget* tab_label = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABLABEL");
+ if (tab_label)
+ {
+ gtk_widget_modify_font(tab_label, fontdesc);
+ iupgtkFontUpdatePangoLayout(ih, gtk_label_get_layout((GtkLabel*)tab_label));
+ }
+ }
+}
+
+static void gtkTabsUpdatePageBgColor(Ihandle* ih, unsigned char r, unsigned char g, unsigned char b)
+{
+ Ihandle* child;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ GtkWidget* tab_page = (GtkWidget*)iupAttribGet(child, "_IUPTAB_CONTAINER");
+ if (tab_page)
+ {
+ GtkWidget* tab_label = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABLABEL");
+ if (tab_label)
+ iupgtkBaseSetBgColor(tab_label, r, g, b);
+ iupgtkBaseSetBgColor(tab_page, r, g, b);
+ }
+ }
+}
+
+static void gtkTabsUpdatePageFgColor(Ihandle* ih, unsigned char r, unsigned char g, unsigned char b)
+{
+ Ihandle* child;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ GtkWidget* tab_label = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABLABEL");
+ if (tab_label)
+ iupgtkBaseSetFgColor(tab_label, r, g, b);
+ }
+}
+
+static void gtkTabsUpdatePagePadding(Ihandle* ih)
+{
+ Ihandle* child;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ GtkWidget* tab_label = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABLABEL");
+ if (tab_label)
+ gtk_misc_set_padding((GtkMisc*)tab_label, ih->data->horiz_padding, ih->data->vert_padding);
+ }
+}
+
+/* ------------------------------------------------------------------------- */
+/* gtkTabs - Sets and Gets accessors */
+/* ------------------------------------------------------------------------- */
+
+
+static int gtkTabsSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+
+ if (ih->handle)
+ gtkTabsUpdatePagePadding(ih);
+ return 0;
+}
+
+static void gtkTabsUpdateTabType(Ihandle* ih)
+{
+ GtkNotebook* tab_page = (GtkNotebook*)ih->handle;
+ int iup2gtk[4] = {GTK_POS_TOP, GTK_POS_BOTTOM, GTK_POS_LEFT, GTK_POS_RIGHT};
+ gtk_notebook_set_tab_pos(tab_page, iup2gtk[ih->data->type]);
+}
+
+static int gtkTabsSetTabTypeAttrib(Ihandle* ih, const char* value)
+{
+ if(iupStrEqualNoCase(value, "BOTTOM"))
+ ih->data->type = ITABS_BOTTOM;
+ else if(iupStrEqualNoCase(value, "LEFT"))
+ ih->data->type = ITABS_LEFT;
+ else if(iupStrEqualNoCase(value, "RIGHT"))
+ ih->data->type = ITABS_RIGHT;
+ else /* "TOP" */
+ ih->data->type = ITABS_TOP;
+
+ if (ih->handle)
+ gtkTabsUpdateTabType(ih);
+
+ return 0;
+}
+
+static int gtkTabsSetTabOrientationAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->handle) /* allow to set only before mapping */
+ return 0;
+
+ if(iupStrEqualNoCase(value, "VERTICAL"))
+ ih->data->orientation = ITABS_VERTICAL;
+ else /* HORIZONTAL */
+ ih->data->orientation = ITABS_HORIZONTAL;
+
+ return 0;
+}
+
+static int gtkTabsSetTabTitleAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int pos;
+ if (value && iupStrToInt(name_id, &pos)==1)
+ {
+ Ihandle* child = IupGetChild(ih, pos);
+ GtkWidget* tab_label = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABLABEL");
+ if (tab_label)
+ {
+ GtkWidget* tab_page = (GtkWidget*)iupAttribGet(child, "_IUPTAB_CONTAINER");
+ gtk_label_set_text((GtkLabel*)tab_label, iupgtkStrConvertToUTF8(value));
+ gtk_notebook_set_menu_label_text((GtkNotebook*)ih->handle, tab_page, gtk_label_get_text((GtkLabel*)tab_label));
+ }
+ }
+ return 1;
+}
+
+static int gtkTabsSetTabImageAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int pos;
+ if (value && iupStrToInt(name_id, &pos)==1)
+ {
+ Ihandle* child = IupGetChild(ih, pos);
+ GtkWidget* tab_image = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABIMAGE");
+ if (tab_image)
+ {
+ GdkPixbuf* pixbuf = iupImageGetImage(value, ih, 0);
+ if (pixbuf)
+ gtk_image_set_from_pixbuf((GtkImage*)tab_image, pixbuf);
+ }
+ }
+ return 1;
+}
+
+static int gtkTabsSetStandardFontAttrib(Ihandle* ih, const char* value)
+{
+ iupdrvSetStandardFontAttrib(ih, value);
+ if (ih->handle)
+ gtkTabsUpdatePageFont(ih);
+ return 1;
+}
+
+static int gtkTabsSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ iupgtkBaseSetFgColor(ih->handle, r, g, b);
+ gtkTabsUpdatePageFgColor(ih, r, g, b);
+
+ return 1;
+}
+
+static int gtkTabsSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ iupgtkBaseSetBgColor(ih->handle, r, g, b);
+ gtkTabsUpdatePageBgColor(ih, r, g, b);
+
+ return 1;
+}
+
+
+/* ------------------------------------------------------------------------- */
+/* gtkTabs - Callbacks */
+/* ------------------------------------------------------------------------- */
+
+void gtkTabSwitchPage(GtkNotebook* notebook, GtkNotebookPage *page, int pos, Ihandle* ih)
+{
+ IFnnn cb;
+ Ihandle* child = IupGetChild(ih, pos);
+ Ihandle* prev_child = IupGetChild(ih, iupdrvTabsGetCurrentTab(ih));
+ IupSetAttribute(child, "VISIBLE", "YES");
+ IupSetAttribute(prev_child, "VISIBLE", "NO");
+
+ if (iupAttribGet(ih, "_IUPGTK_IGNORE_CHANGE"))
+ return;
+
+ cb = (IFnnn)IupGetCallback(ih, "TABCHANGE_CB");
+ if (cb)
+ cb(ih, child, prev_child);
+
+ (void)notebook;
+ (void)page;
+}
+
+/* ------------------------------------------------------------------------- */
+/* gtkTabs - Methods and Init Class */
+/* ------------------------------------------------------------------------- */
+
+static void gtkTabsChildAddedMethod(Ihandle* ih, Ihandle* child)
+{
+ if (IupGetName(child) == NULL)
+ iupAttribSetHandleName(child);
+
+ if (ih->handle)
+ {
+ GtkWidget* tab_page;
+ GtkWidget *tab_label = NULL, *tab_image = NULL;
+ char *tabtitle, *tabimage;
+ int pos;
+ unsigned char r, g, b;
+
+ pos = IupGetChildPos(ih, child);
+
+ tab_page = gtk_fixed_new();
+ gtk_widget_show(tab_page);
+
+ tabtitle = iupAttribGet(child, "TABTITLE");
+ if (!tabtitle) tabtitle = iupTabsAttribGetStrId(ih, "TABTITLE", pos);
+ tabimage = iupAttribGet(child, "TABIMAGE");
+ if (!tabimage) tabimage = iupTabsAttribGetStrId(ih, "TABIMAGE", pos);
+ if (!tabtitle && !tabimage)
+ tabtitle = " ";
+
+ if (tabtitle)
+ {
+ tab_label = gtk_label_new(iupgtkStrConvertToUTF8(tabtitle));
+
+#if GTK_CHECK_VERSION(2, 6, 0)
+ if (ih->data->orientation == ITABS_VERTICAL)
+ gtk_label_set_angle((GtkLabel*)tab_label, 90);
+#endif
+ }
+
+ if (tabimage)
+ {
+ GdkPixbuf* pixbuf = iupImageGetImage(tabimage, ih, 0);
+
+ tab_image = gtk_image_new();
+
+ if (pixbuf)
+ gtk_image_set_from_pixbuf((GtkImage*)tab_image, pixbuf);
+ }
+
+ iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", "1");
+
+ if (tabimage && tabtitle)
+ {
+ GtkWidget* box;
+ if (ih->data->orientation == ITABS_VERTICAL)
+ box = gtk_vbox_new(FALSE, 2);
+ else
+ box = gtk_hbox_new(FALSE, 2);
+ gtk_widget_show(box);
+
+ gtk_container_add((GtkContainer*)box, tab_image);
+ gtk_container_add((GtkContainer*)box, tab_label);
+
+ gtk_notebook_insert_page((GtkNotebook*)ih->handle, tab_page, box, pos);
+ gtk_notebook_set_menu_label_text((GtkNotebook*)ih->handle, tab_page, gtk_label_get_text((GtkLabel*)tab_label));
+ }
+ else if (tabimage)
+ gtk_notebook_insert_page((GtkNotebook*)ih->handle, tab_page, tab_image, pos);
+ else
+ gtk_notebook_insert_page((GtkNotebook*)ih->handle, tab_page, tab_label, pos);
+
+ gtk_widget_realize(tab_page);
+
+ iupAttribSetStr(child, "_IUPGTK_TABIMAGE", (char*)tab_image); /* store it even if its NULL */
+ iupAttribSetStr(child, "_IUPGTK_TABLABEL", (char*)tab_label);
+ iupAttribSetStr(child, "_IUPTAB_CONTAINER", (char*)tab_page);
+ iupStrToRGB(IupGetAttribute(ih, "BGCOLOR"), &r, &g, &b);
+ iupgtkBaseSetBgColor(tab_page, r, g, b);
+
+ if (tabtitle)
+ {
+ PangoFontDescription* fontdesc = (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih);
+ gtk_widget_modify_font(tab_label, fontdesc);
+ iupgtkFontUpdatePangoLayout(ih, gtk_label_get_layout((GtkLabel*)tab_label));
+
+ iupgtkBaseSetBgColor(tab_label, r, g, b);
+
+ iupStrToRGB(IupGetAttribute(ih, "FGCOLOR"), &r, &g, &b);
+ iupgtkBaseSetFgColor(tab_label, r, g, b);
+
+ gtk_widget_show(tab_label);
+ gtk_widget_realize(tab_label);
+ }
+
+ if (tabimage)
+ {
+ gtk_widget_show(tab_image);
+ gtk_widget_realize(tab_image);
+ }
+
+ iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", NULL);
+
+ if (pos == iupdrvTabsGetCurrentTab(ih))
+ IupSetAttribute(child, "VISIBLE", "YES");
+ else
+ IupSetAttribute(child, "VISIBLE", "NO");
+ }
+}
+
+static void gtkTabsChildRemovedMethod(Ihandle* ih, Ihandle* child)
+{
+ if (ih->handle)
+ {
+ GtkWidget* tab_page = (GtkWidget*)iupAttribGet(child, "_IUPTAB_CONTAINER");
+ if (tab_page)
+ {
+ int pos = gtk_notebook_page_num((GtkNotebook*)ih->handle, tab_page);
+
+ iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", "1");
+ gtk_notebook_remove_page((GtkNotebook*)ih->handle, pos);
+ iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", NULL);
+
+ iupAttribSetStr(child, "_IUPGTK_TABIMAGE", NULL);
+ iupAttribSetStr(child, "_IUPGTK_TABLABEL", NULL);
+ iupAttribSetStr(child, "_IUPTAB_CONTAINER", NULL);
+ }
+ }
+}
+
+static int gtkTabsMapMethod(Ihandle* ih)
+{
+ ih->handle = gtk_notebook_new();
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ gtk_notebook_set_scrollable((GtkNotebook*)ih->handle, TRUE);
+ gtk_notebook_popup_enable((GtkNotebook*)ih->handle);
+
+ gtkTabsUpdateTabType(ih);
+
+ /* add to the parent, all GTK controls must call this. */
+ iupgtkBaseAddToParent(ih);
+
+ gtk_widget_add_events(ih->handle, GDK_ENTER_NOTIFY_MASK|GDK_LEAVE_NOTIFY_MASK);
+
+ g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih);
+
+ g_signal_connect(G_OBJECT(ih->handle), "switch-page", G_CALLBACK(gtkTabSwitchPage), ih);
+
+ gtk_widget_realize(ih->handle);
+
+ /* Create pages and tabs */
+ if (ih->firstchild)
+ {
+ Ihandle* child;
+ for (child = ih->firstchild; child; child = child->brother)
+ gtkTabsChildAddedMethod(ih, child);
+ }
+
+ return IUP_NOERROR;
+}
+
+void iupdrvTabsInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkTabsMapMethod;
+ ic->ChildAdded = gtkTabsChildAddedMethod;
+ ic->ChildRemoved = gtkTabsChildRemovedMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Common */
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, gtkTabsSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED);
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkTabsSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, gtkTabsSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT);
+
+ /* IupTabs only */
+ iupClassRegisterAttribute(ic, "TABTYPE", iupTabsGetTabTypeAttrib, gtkTabsSetTabTypeAttrib, IUPAF_SAMEASSYSTEM, "TOP", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TABORIENTATION", iupTabsGetTabOrientationAttrib, gtkTabsSetTabOrientationAttrib, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "TABTITLE", NULL, gtkTabsSetTabTitleAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "TABIMAGE", NULL, gtkTabsSetTabImageAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "PADDING", iupTabsGetPaddingAttrib, gtkTabsSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+}
diff --git a/iup/src/gtk/iupgtk_text.c b/iup/src/gtk/iupgtk_text.c
new file mode 100755
index 0000000..4c2906a
--- /dev/null
+++ b/iup/src/gtk/iupgtk_text.c
@@ -0,0 +1,1716 @@
+/** \file
+ * \brief Text Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_image.h"
+#include "iup_mask.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_image.h"
+#include "iup_key.h"
+#include "iup_array.h"
+#include "iup_text.h"
+
+#include "iupgtk_drv.h"
+
+#ifndef PANGO_WEIGHT_SEMIBOLD
+#define PANGO_WEIGHT_SEMIBOLD 600
+#endif
+
+void iupdrvTextAddSpin(int *w, int h)
+{
+ int spin_size = 16;
+ *w += spin_size;
+ (void)h;
+}
+
+void iupdrvTextAddBorders(int *x, int *y)
+{
+ int border_size = 2*5;
+ (*x) += border_size;
+ (*y) += border_size;
+}
+
+static void gtkTextParseParagraphFormat(Ihandle* formattag, GtkTextTag* tag)
+{
+ int val;
+ char* format;
+
+ format = iupAttribGet(formattag, "INDENT");
+ if (format && iupStrToInt(format, &val))
+ g_object_set(G_OBJECT(tag), "indent", val, NULL);
+
+ format = iupAttribGet(formattag, "ALIGNMENT");
+ if (format)
+ {
+ if (iupStrEqualNoCase(format, "JUSTIFY"))
+ val = GTK_JUSTIFY_FILL;
+ else if (iupStrEqualNoCase(format, "RIGHT"))
+ val = GTK_JUSTIFY_RIGHT;
+ else if (iupStrEqualNoCase(format, "CENTER"))
+ val = GTK_JUSTIFY_CENTER;
+ else /* "LEFT" */
+ val = GTK_JUSTIFY_LEFT;
+
+ g_object_set(G_OBJECT(tag), "justification", val, NULL);
+ }
+
+ format = iupAttribGet(formattag, "TABSARRAY");
+ {
+ PangoTabArray *tabs;
+ int pos, i = 0;
+ PangoTabAlign align;
+ char* str;
+
+ tabs = pango_tab_array_new(32, FALSE);
+
+ while (format)
+ {
+ str = iupStrCopyUntil((char**)&format, ' ');
+ if (!str) break;
+ pos = atoi(str);
+ free(str);
+
+ str = iupStrCopyUntil((char**)&format, ' ');
+ if (!str) break;
+
+/* if (iupStrEqualNoCase(str, "DECIMAL")) unsupported for now
+ align = PANGO_TAB_NUMERIC;
+ else if (iupStrEqualNoCase(str, "RIGHT"))
+ align = PANGO_TAB_RIGHT;
+ else if (iupStrEqualNoCase(str, "CENTER"))
+ align = PANGO_TAB_CENTER;
+ else */ /* "LEFT" */
+ align = PANGO_TAB_LEFT;
+ free(str);
+
+ pango_tab_array_set_tab(tabs, i, align, IUPGTK_PIXELS2PANGOUNITS(pos));
+ i++;
+ if (i == 32) break;
+ }
+
+ g_object_set(G_OBJECT(tag), "tabs", tabs, NULL);
+ pango_tab_array_free(tabs);
+ }
+
+ format = iupAttribGet(formattag, "SPACEBEFORE");
+ if (format && iupStrToInt(format, &val))
+ g_object_set(G_OBJECT(tag), "pixels-above-lines", val, NULL);
+
+ format = iupAttribGet(formattag, "SPACEAFTER");
+ if (format && iupStrToInt(format, &val))
+ g_object_set(G_OBJECT(tag), "pixels-below-lines", val, NULL);
+
+ format = iupAttribGet(formattag, "LINESPACING");
+ if (format && iupStrToInt(format, &val))
+ g_object_set(G_OBJECT(tag), "pixels-inside-wrap", val, NULL);
+}
+
+static void gtkTextParseCharacterFormat(Ihandle* formattag, GtkTextTag* tag)
+{
+ int val;
+ char* format;
+
+ format = iupAttribGet(formattag, "LANGUAGE");
+ if (format)
+ g_object_set(G_OBJECT(tag), "language", format, NULL);
+
+ format = iupAttribGet(formattag, "STRETCH");
+ if (format)
+ {
+ if (iupStrEqualNoCase(format, "EXTRA_CONDENSED"))
+ val = PANGO_STRETCH_EXTRA_CONDENSED;
+ else if (iupStrEqualNoCase(format, "CONDENSED"))
+ val = PANGO_STRETCH_CONDENSED;
+ else if (iupStrEqualNoCase(format, "SEMI_CONDENSED"))
+ val = PANGO_STRETCH_SEMI_CONDENSED;
+ else if (iupStrEqualNoCase(format, "SEMI_EXPANDED"))
+ val = PANGO_STRETCH_SEMI_EXPANDED;
+ else if (iupStrEqualNoCase(format, "EXPANDED"))
+ val = PANGO_STRETCH_EXPANDED;
+ else if (iupStrEqualNoCase(format, "EXTRA_EXPANDED"))
+ val = PANGO_STRETCH_EXTRA_EXPANDED;
+ else /* "NORMAL" */
+ val = PANGO_STRETCH_NORMAL;
+
+ g_object_set(G_OBJECT(tag), "stretch", val, NULL);
+ }
+
+ format = iupAttribGet(formattag, "RISE");
+ if (format)
+ {
+ val = 0;
+
+ if (iupStrEqualNoCase(format, "SUPERSCRIPT"))
+ {
+ g_object_set(G_OBJECT(tag), "scale", PANGO_SCALE_X_SMALL, NULL);
+ val = 10; /* 10 pixels up */
+ }
+ else if (iupStrEqualNoCase(format, "SUBSCRIPT"))
+ {
+ g_object_set(G_OBJECT(tag), "scale", PANGO_SCALE_X_SMALL, NULL);
+ val = -10; /* 10 pixels down */
+ }
+ else
+ iupStrToInt(format, &val);
+
+ val = IUPGTK_PIXELS2PANGOUNITS(val);
+ g_object_set(G_OBJECT(tag), "rise", val, NULL);
+ }
+
+ format = iupAttribGet(formattag, "SMALLCAPS");
+ if (format)
+ {
+ if (iupStrBoolean(format))
+ val = PANGO_VARIANT_SMALL_CAPS;
+ else
+ val = PANGO_VARIANT_NORMAL;
+ g_object_set(G_OBJECT(tag), "variant", val, NULL);
+ }
+
+ format = iupAttribGet(formattag, "ITALIC");
+ if (format)
+ {
+ if (iupStrBoolean(format))
+ val = PANGO_STYLE_ITALIC;
+ else
+ val = PANGO_STYLE_NORMAL;
+ g_object_set(G_OBJECT(tag), "style", val, NULL);
+ }
+
+ format = iupAttribGet(formattag, "STRIKEOUT");
+ if (format)
+ {
+ val = iupStrBoolean(format);
+ g_object_set(G_OBJECT(tag), "strikethrough", val, NULL);
+ }
+
+ format = iupAttribGet(formattag, "PROTECTED");
+ if (format)
+ {
+ val = iupStrBoolean(format);
+ g_object_set(G_OBJECT(tag), "editable", val, NULL);
+ }
+
+ format = iupAttribGet(formattag, "FONTSIZE");
+ if (format && iupStrToInt(format, &val))
+ {
+ if (val < 0) /* in pixels */
+ {
+ val = IUPGTK_PIXELS2PANGOUNITS(-val);
+ g_object_set(G_OBJECT(tag), "size", val, NULL);
+ }
+ else /* in points */
+ g_object_set(G_OBJECT(tag), "size-points", (double)val, NULL);
+ }
+
+ format = iupAttribGet(formattag, "FONTSCALE");
+ if (format)
+ {
+ float fval = 0;
+ if (iupStrEqualNoCase(format, "XX-SMALL"))
+ fval = (float)PANGO_SCALE_XX_SMALL;
+ else if (iupStrEqualNoCase(format, "X-SMALL"))
+ fval = (float)PANGO_SCALE_X_SMALL;
+ else if (iupStrEqualNoCase(format, "SMALL"))
+ fval = (float)PANGO_SCALE_SMALL;
+ else if (iupStrEqualNoCase(format, "MEDIUM"))
+ fval = (float)PANGO_SCALE_MEDIUM;
+ else if (iupStrEqualNoCase(format, "LARGE"))
+ fval = (float)PANGO_SCALE_LARGE;
+ else if (iupStrEqualNoCase(format, "X-LARGE"))
+ fval = (float)PANGO_SCALE_X_LARGE;
+ else if (iupStrEqualNoCase(format, "XX-LARGE"))
+ fval = (float)PANGO_SCALE_XX_LARGE;
+ else
+ iupStrToFloat(format, &fval);
+
+ if (fval > 0)
+ g_object_set(G_OBJECT(tag), "scale", (double)fval, NULL);
+ }
+
+ format = iupAttribGet(formattag, "FONTFACE");
+ if (format)
+ g_object_set(G_OBJECT(tag), "family", format, NULL);
+
+ format = iupAttribGet(formattag, "FGCOLOR");
+ if (format)
+ {
+ unsigned char r, g, b;
+ if (iupStrToRGB(format, &r, &g, &b))
+ {
+ GdkColor color;
+ iupgdkColorSet(&color, r, g, b);
+ g_object_set(G_OBJECT(tag), "foreground-gdk", &color, NULL);
+ }
+ }
+
+ format = iupAttribGet(formattag, "BGCOLOR");
+ if (format)
+ {
+ unsigned char r, g, b;
+ if (iupStrToRGB(format, &r, &g, &b))
+ {
+ GdkColor color;
+ iupgdkColorSet(&color, r, g, b);
+ g_object_set(G_OBJECT(tag), "background-gdk", &color, NULL);
+ }
+ }
+
+ format = iupAttribGet(formattag, "UNDERLINE");
+ if (format)
+ {
+ if (iupStrEqualNoCase(format, "SINGLE"))
+ val = PANGO_UNDERLINE_SINGLE;
+ else if (iupStrEqualNoCase(format, "DOUBLE"))
+ val = PANGO_UNDERLINE_DOUBLE;
+ else /* "NONE" */
+ val = PANGO_UNDERLINE_NONE;
+
+ g_object_set(G_OBJECT(tag), "underline", val, NULL);
+ }
+
+ format = iupAttribGet(formattag, "WEIGHT");
+ if (format)
+ {
+ if (iupStrEqualNoCase(format, "EXTRALIGHT"))
+ val = PANGO_WEIGHT_ULTRALIGHT;
+ else if (iupStrEqualNoCase(format, "LIGHT"))
+ val = PANGO_WEIGHT_LIGHT;
+ else if (iupStrEqualNoCase(format, "SEMIBOLD"))
+ val = PANGO_WEIGHT_SEMIBOLD;
+ else if (iupStrEqualNoCase(format, "BOLD"))
+ val = PANGO_WEIGHT_BOLD;
+ else if (iupStrEqualNoCase(format, "EXTRABOLD"))
+ val = PANGO_WEIGHT_ULTRABOLD;
+ else if (iupStrEqualNoCase(format, "HEAVY"))
+ val = PANGO_WEIGHT_HEAVY;
+ else /* "NORMAL" */
+ val = PANGO_WEIGHT_NORMAL;
+
+ g_object_set(G_OBJECT(tag), "weight", val, NULL);
+ }
+}
+
+static void gtkTextMoveIterToLinCol(GtkTextBuffer *buffer, GtkTextIter *iter, int lin, int col)
+{
+ int line_count, line_length;
+
+ lin--; /* IUP starts at 1 */
+ col--;
+
+ line_count = gtk_text_buffer_get_line_count(buffer);
+ if (lin < 0) lin = 0;
+ if (lin >= line_count)
+ lin = line_count-1;
+
+ gtk_text_buffer_get_iter_at_line(buffer, iter, lin);
+ line_length = gtk_text_iter_get_chars_in_line(iter);
+
+ if (col < 0) col = 0;
+ if (col > line_length)
+ col = line_length; /* after the last character */
+
+ gtk_text_iter_set_line_offset(iter, col);
+}
+
+static void gtkTextGetLinColFromPosition(const GtkTextIter *iter, int *lin, int *col)
+{
+ *lin = gtk_text_iter_get_line(iter);
+ *col = gtk_text_iter_get_line_offset(iter);
+
+ (*lin)++; /* IUP starts at 1 */
+ (*col)++;
+}
+
+static int gtkTextGetCharSize(Ihandle* ih)
+{
+ int charwidth;
+ PangoFontMetrics* metrics;
+ PangoContext* context;
+ PangoFontDescription* fontdesc = (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih);
+ if (!fontdesc)
+ return 0;
+
+ context = gdk_pango_context_get();
+ metrics = pango_context_get_metrics(context, fontdesc, pango_context_get_language(context));
+ charwidth = pango_font_metrics_get_approximate_char_width(metrics);
+ pango_font_metrics_unref(metrics);
+ return charwidth;
+}
+
+void iupdrvTextConvertLinColToPos(Ihandle* ih, int lin, int col, int *pos)
+{
+ GtkTextIter iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtkTextMoveIterToLinCol(buffer, &iter, lin, col);
+ *pos = gtk_text_iter_get_offset(&iter);
+}
+
+void iupdrvTextConvertPosToLinCol(Ihandle* ih, int pos, int *lin, int *col)
+{
+ GtkTextIter iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_get_iter_at_offset(buffer, &iter, pos);
+ gtkTextGetLinColFromPosition(&iter, lin, col);
+}
+
+static int gtkTextConvertXYToPos(Ihandle* ih, int x, int y)
+{
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter iter;
+ gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(ih->handle), GTK_TEXT_WINDOW_WIDGET, x, y, &x, &y);
+ gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(ih->handle), &iter, x, y);
+ return gtk_text_iter_get_offset(&iter);
+ }
+ else
+ {
+ int trailing, off_x, off_y, pos;
+
+ /* transform to Layout coordinates */
+ gtk_entry_get_layout_offsets(GTK_ENTRY(ih->handle), &off_x, &off_y);
+ x = IUPGTK_PIXELS2PANGOUNITS(x - off_x);
+ y = IUPGTK_PIXELS2PANGOUNITS(y - off_y);
+
+ pango_layout_xy_to_index(gtk_entry_get_layout(GTK_ENTRY(ih->handle)), x, y, &pos, &trailing);
+ return pos;
+ }
+}
+
+static void gtkTextScrollToVisible(Ihandle* ih)
+{
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ GtkTextMark* mark = gtk_text_buffer_get_insert(buffer);
+ gtk_text_view_scroll_mark_onscreen(GTK_TEXT_VIEW(ih->handle), mark);
+}
+
+
+/*******************************************************************************************/
+
+
+static int gtkTextSetSelectionAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ return 0;
+
+ if (!value || iupStrEqualNoCase(value, "NONE"))
+ {
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter start_iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_get_start_iter(buffer, &start_iter);
+ gtk_text_buffer_select_range(buffer, &start_iter, &start_iter);
+ }
+ else
+ gtk_editable_select_region(GTK_EDITABLE(ih->handle), 0, 0);
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(value, "ALL"))
+ {
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter start_iter;
+ GtkTextIter end_iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_get_start_iter(buffer, &start_iter);
+ gtk_text_buffer_get_end_iter(buffer, &end_iter);
+ gtk_text_buffer_select_range(buffer, &start_iter, &end_iter);
+ }
+ else
+ gtk_editable_select_region(GTK_EDITABLE(ih->handle), 0, -1);
+ return 0;
+ }
+
+ if (ih->data->is_multiline)
+ {
+ int lin_start=1, col_start=1, lin_end=1, col_end=1;
+ GtkTextIter start_iter, end_iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+
+ if (sscanf(value, "%d,%d:%d,%d", &lin_start, &col_start, &lin_end, &col_end)!=4) return 0;
+ if (lin_start<1 || col_start<1 || lin_end<1 || col_end<1) return 0;
+
+ gtkTextMoveIterToLinCol(buffer, &start_iter, lin_start, col_start);
+ gtkTextMoveIterToLinCol(buffer, &end_iter, lin_end, col_end);
+
+ gtk_text_buffer_select_range(buffer, &start_iter, &end_iter);
+ }
+ else
+ {
+ int start=1, end=1;
+ if (iupStrToIntInt(value, &start, &end, ':')!=2)
+ return 0;
+
+ if(start<1 || end<1)
+ return 0;
+
+ start--; /* IUP starts at 1 */
+ end--;
+
+ gtk_editable_select_region(GTK_EDITABLE(ih->handle), start, end);
+ }
+
+ return 0;
+}
+
+static char* gtkTextGetSelectionAttrib(Ihandle* ih)
+{
+ char *str;
+
+ if (ih->data->is_multiline)
+ {
+ int start_col, start_lin, end_col, end_lin;
+
+ GtkTextIter start_iter, end_iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ if (gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter))
+ {
+ gtkTextGetLinColFromPosition(&start_iter, &start_lin, &start_col);
+ gtkTextGetLinColFromPosition(&end_iter, &end_lin, &end_col);
+
+ str = iupStrGetMemory(100);
+ sprintf(str,"%d,%d:%d,%d", start_lin, start_col, end_lin, end_col);
+ return str;
+ }
+ }
+ else
+ {
+ int start, end;
+ if (gtk_editable_get_selection_bounds(GTK_EDITABLE(ih->handle), &start, &end))
+ {
+ start++; /* IUP starts at 1 */
+ end++;
+ str = iupStrGetMemory(100);
+ sprintf(str, "%d:%d", (int)start, (int)end);
+ return str;
+ }
+ }
+
+ return NULL;
+}
+
+static int gtkTextSetSelectionPosAttrib(Ihandle* ih, const char* value)
+{
+ int start=0, end=0;
+
+ if (!value)
+ return 0;
+
+ if (!value || iupStrEqualNoCase(value, "NONE"))
+ {
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter start_iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_get_start_iter(buffer, &start_iter);
+ gtk_text_buffer_select_range(buffer, &start_iter, &start_iter);
+ }
+ else
+ gtk_editable_select_region(GTK_EDITABLE(ih->handle), 0, 0);
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(value, "ALL"))
+ {
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter start_iter;
+ GtkTextIter end_iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_get_start_iter(buffer, &start_iter);
+ gtk_text_buffer_get_end_iter(buffer, &end_iter);
+ gtk_text_buffer_select_range(buffer, &start_iter, &end_iter);
+ }
+ else
+ gtk_editable_select_region(GTK_EDITABLE(ih->handle), 0, -1);
+ return 0;
+ }
+
+ if (iupStrToIntInt(value, &start, &end, ':')!=2)
+ return 0;
+
+ if(start<0 || end<0)
+ return 0;
+
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter start_iter, end_iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+
+ gtk_text_buffer_get_iter_at_offset(buffer, &start_iter, start);
+ gtk_text_buffer_get_iter_at_offset(buffer, &end_iter, end);
+
+ gtk_text_buffer_select_range(buffer, &start_iter, &end_iter);
+ }
+ else
+ gtk_editable_select_region(GTK_EDITABLE(ih->handle), start, end);
+
+ return 0;
+}
+
+static char* gtkTextGetSelectionPosAttrib(Ihandle* ih)
+{
+ int start, end;
+ char *str;
+
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter start_iter, end_iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ if (gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter))
+ {
+ start = gtk_text_iter_get_offset(&start_iter);
+ end = gtk_text_iter_get_offset(&end_iter);
+
+ str = iupStrGetMemory(100);
+ sprintf(str, "%d:%d", (int)start, (int)end);
+ return str;
+ }
+ }
+ else
+ {
+ if (gtk_editable_get_selection_bounds(GTK_EDITABLE(ih->handle), &start, &end))
+ {
+ str = iupStrGetMemory(100);
+ sprintf(str, "%d:%d", (int)start, (int)end);
+ return str;
+ }
+ }
+
+ return NULL;
+}
+
+static int gtkTextSetSelectedTextAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ return 0;
+
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter start_iter, end_iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ if (gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter))
+ {
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ gtk_text_buffer_delete(buffer, &start_iter, &end_iter);
+ gtk_text_buffer_insert(buffer, &start_iter, iupgtkStrConvertToUTF8(value), -1);
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+ }
+ }
+ else
+ {
+ int start, end;
+ if (gtk_editable_get_selection_bounds(GTK_EDITABLE(ih->handle), &start, &end))
+ {
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ gtk_editable_delete_selection(GTK_EDITABLE(ih->handle));
+ gtk_editable_insert_text(GTK_EDITABLE(ih->handle), iupgtkStrConvertToUTF8(value), -1, &start);
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+ }
+ }
+
+ return 0;
+}
+
+static char* gtkTextGetSelectedTextAttrib(Ihandle* ih)
+{
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter start_iter, end_iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ if (gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter))
+ return iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(gtk_text_buffer_get_text(buffer, &start_iter, &end_iter, TRUE)));
+ }
+ else
+ {
+ int start, end;
+ if (gtk_editable_get_selection_bounds(GTK_EDITABLE(ih->handle), &start, &end))
+ {
+ char* selectedtext = gtk_editable_get_chars(GTK_EDITABLE(ih->handle), start, end);
+ char* str = iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(selectedtext));
+ g_free(selectedtext);
+ return str;
+ }
+ }
+
+ return NULL;
+}
+
+static int gtkTextSetCaretAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 1;
+
+ if (!value)
+ return 0;
+
+ if (ih->data->is_multiline)
+ {
+ int lin = 1, col = 1;
+ GtkTextIter iter;
+
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+
+ iupStrToIntInt(value, &lin, &col, ',');
+
+ gtkTextMoveIterToLinCol(buffer, &iter, lin, col);
+
+ gtk_text_buffer_place_cursor(buffer, &iter);
+ gtkTextScrollToVisible(ih);
+ }
+ else
+ {
+ sscanf(value,"%i",&pos);
+ pos--; /* IUP starts at 1 */
+ if (pos < 0) pos = 0;
+
+ gtk_editable_set_position(GTK_EDITABLE(ih->handle), pos);
+ }
+
+ return 0;
+}
+
+static char* gtkTextGetCaretAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(50);
+
+ if (ih->data->is_multiline)
+ {
+ int col, lin;
+ GtkTextIter iter;
+
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_get_iter_at_mark(buffer, &iter, gtk_text_buffer_get_insert(buffer));
+ gtkTextGetLinColFromPosition(&iter, &lin, &col);
+
+ sprintf(str, "%d,%d", lin, col);
+ }
+ else
+ {
+ int pos = gtk_editable_get_position(GTK_EDITABLE(ih->handle));
+ pos++; /* IUP starts at 1 */
+ sprintf(str, "%d", (int)pos);
+ }
+
+ return str;
+}
+
+static int gtkTextSetCaretPosAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 0) pos = 0;
+
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_get_iter_at_offset(buffer, &iter, pos);
+ gtk_text_buffer_place_cursor(buffer, &iter);
+ gtkTextScrollToVisible(ih);
+ }
+ else
+ gtk_editable_set_position(GTK_EDITABLE(ih->handle), pos);
+
+ return 0;
+}
+
+static char* gtkTextGetCaretPosAttrib(Ihandle* ih)
+{
+ int pos;
+ char* str = iupStrGetMemory(50);
+
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_get_iter_at_mark(buffer, &iter, gtk_text_buffer_get_insert(buffer));
+ pos = gtk_text_iter_get_offset(&iter);
+ }
+ else
+ pos = gtk_editable_get_position(GTK_EDITABLE(ih->handle));
+
+ sprintf(str, "%d", (int)pos);
+ return str;
+}
+
+static int gtkTextSetScrollToAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ return 0;
+
+ if (ih->data->is_multiline)
+ {
+ int lin = 1, col = 1;
+ GtkTextIter iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+
+ iupStrToIntInt(value, &lin, &col, ',');
+ if (lin < 1) lin = 1;
+ if (col < 1) col = 1;
+
+ gtkTextMoveIterToLinCol(buffer, &iter, lin, col);
+ gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(ih->handle), &iter, 0, FALSE, 0, 0);
+ }
+ else
+ {
+ int pos = 1;
+ sscanf(value,"%i",&pos);
+ if (pos < 1) pos = 1;
+ pos--; /* return to GTK referece */
+ gtk_editable_set_position(GTK_EDITABLE(ih->handle), pos);
+ }
+
+ return 0;
+}
+
+static int gtkTextSetScrollToPosAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 0) pos = 0;
+
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_get_iter_at_offset(buffer, &iter, pos);
+ gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(ih->handle), &iter, 0, FALSE, 0, 0);
+ }
+ else
+ gtk_editable_set_position(GTK_EDITABLE(ih->handle), pos);
+
+ return 0;
+}
+
+static int gtkTextSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (!value) value = "";
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ if (ih->data->is_multiline)
+ {
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_set_text(buffer, iupgtkStrConvertToUTF8(value), -1);
+ }
+ else
+ gtk_entry_set_text(GTK_ENTRY(ih->handle), iupgtkStrConvertToUTF8(value));
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+ return 0;
+}
+
+static char* gtkTextGetValueAttrib(Ihandle* ih)
+{
+ char* value;
+
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter start_iter;
+ GtkTextIter end_iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_get_start_iter(buffer, &start_iter);
+ gtk_text_buffer_get_end_iter(buffer, &end_iter);
+ value = iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(gtk_text_buffer_get_text(buffer, &start_iter, &end_iter, TRUE)));
+ }
+ else
+ value = iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(gtk_entry_get_text(GTK_ENTRY(ih->handle))));
+
+ if (!value) value = "";
+
+ return value;
+}
+
+static int gtkTextSetInsertAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ if (!value)
+ return 0;
+
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ if (ih->data->is_multiline)
+ {
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_insert_at_cursor(buffer, iupgtkStrConvertToUTF8(value), -1);
+ }
+ else
+ {
+ gint pos = gtk_editable_get_position(GTK_EDITABLE(ih->handle));
+ gtk_editable_insert_text(GTK_EDITABLE(ih->handle), iupgtkStrConvertToUTF8(value), -1, &pos);
+ }
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+
+ return 0;
+}
+
+static int gtkTextSetAppendAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter iter;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_get_end_iter(buffer, &iter);
+ if (ih->data->append_newline)
+ gtk_text_buffer_insert(buffer, &iter, "\n", 1);
+ gtk_text_buffer_insert(buffer, &iter, iupgtkStrConvertToUTF8(value), -1);
+ }
+ else
+ {
+ gint pos = strlen(gtk_entry_get_text(GTK_ENTRY(ih->handle)))+1;
+ gtk_editable_insert_text(GTK_EDITABLE(ih->handle), iupgtkStrConvertToUTF8(value), -1, &pos);
+ }
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+ return 0;
+}
+
+static int gtkTextSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ float xalign;
+ GtkJustification justification;
+
+ if (iupStrEqualNoCase(value, "ARIGHT"))
+ {
+ xalign = 1.0f;
+ justification = GTK_JUSTIFY_RIGHT;
+ }
+ else if (iupStrEqualNoCase(value, "ACENTER"))
+ {
+ xalign = 0.5f;
+ justification = GTK_JUSTIFY_CENTER;
+ }
+ else /* "ALEFT" */
+ {
+ xalign = 0;
+ justification = GTK_JUSTIFY_LEFT;
+ }
+
+ if (ih->data->is_multiline)
+ gtk_text_view_set_justification(GTK_TEXT_VIEW(ih->handle), justification);
+ else
+ gtk_entry_set_alignment(GTK_ENTRY(ih->handle), xalign);
+
+ return 1;
+}
+
+static int gtkTextSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+ if (ih->handle)
+ {
+ if (ih->data->is_multiline)
+ {
+ gtk_text_view_set_left_margin(GTK_TEXT_VIEW(ih->handle), ih->data->horiz_padding);
+ gtk_text_view_set_right_margin(GTK_TEXT_VIEW(ih->handle), ih->data->horiz_padding);
+ ih->data->vert_padding = 0;
+ }
+ else
+ {
+#if GTK_CHECK_VERSION(2, 10, 0)
+ GtkBorder border;
+ border.bottom = border.top = ih->data->vert_padding;
+ border.left = border.right = ih->data->horiz_padding;
+ gtk_entry_set_inner_border(GTK_ENTRY(ih->handle), &border);
+#endif
+ }
+ }
+ return 0;
+}
+
+static int gtkTextSetNCAttrib(Ihandle* ih, const char* value)
+{
+ if (!iupStrToInt(value, &ih->data->nc))
+ ih->data->nc = INT_MAX;
+
+ if (!ih->data->is_multiline && ih->handle)
+ gtk_entry_set_max_length(GTK_ENTRY(ih->handle), ih->data->nc);
+
+ return 0;
+}
+
+static int gtkTextSetClipboardAttrib(Ihandle *ih, const char *value)
+{
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ if (iupStrEqualNoCase(value, "COPY"))
+ {
+ if (ih->data->is_multiline)
+ {
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ GtkClipboard *clipboard = gtk_clipboard_get(gdk_atom_intern("CLIPBOARD", FALSE));
+ gtk_text_buffer_copy_clipboard(buffer, clipboard);
+ }
+ else
+ gtk_editable_copy_clipboard(GTK_EDITABLE(ih->handle));
+ }
+ else if (iupStrEqualNoCase(value, "CUT"))
+ {
+ if (ih->data->is_multiline)
+ {
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ GtkClipboard *clipboard = gtk_clipboard_get(gdk_atom_intern("CLIPBOARD", FALSE));
+ gtk_text_buffer_cut_clipboard(buffer, clipboard, TRUE);
+ }
+ else
+ gtk_editable_cut_clipboard(GTK_EDITABLE(ih->handle));
+ }
+ else if (iupStrEqualNoCase(value, "PASTE"))
+ {
+ if (ih->data->is_multiline)
+ {
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ GtkClipboard *clipboard = gtk_clipboard_get(gdk_atom_intern("CLIPBOARD", FALSE));
+ gtk_text_buffer_paste_clipboard(buffer, clipboard, NULL, TRUE);
+ }
+ else
+ gtk_editable_paste_clipboard(GTK_EDITABLE(ih->handle));
+ }
+ else if (iupStrEqualNoCase(value, "CLEAR"))
+ {
+ if (ih->data->is_multiline)
+ {
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_delete_selection(buffer, FALSE, TRUE);
+ }
+ else
+ gtk_editable_delete_selection(GTK_EDITABLE(ih->handle));
+ }
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+ return 0;
+}
+
+static int gtkTextSetReadOnlyAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->is_multiline)
+ gtk_text_view_set_editable(GTK_TEXT_VIEW(ih->handle), !iupStrBoolean(value));
+ else
+ gtk_editable_set_editable(GTK_EDITABLE(ih->handle), !iupStrBoolean(value));
+ return 0;
+}
+
+static char* gtkTextGetReadOnlyAttrib(Ihandle* ih)
+{
+ int editable;
+ if (ih->data->is_multiline)
+ editable = gtk_text_view_get_editable(GTK_TEXT_VIEW(ih->handle));
+ else
+ editable = gtk_editable_get_editable(GTK_EDITABLE(ih->handle));
+ if (!editable)
+ return "YES";
+ else
+ return "NO";
+}
+
+static char* gtkTextGetPangoLayoutAttrib(Ihandle* ih)
+{
+ if (ih->data->is_multiline)
+ return NULL;
+ else
+ return (char*)gtk_entry_get_layout(GTK_ENTRY(ih->handle));
+}
+
+static int gtkTextSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->is_multiline)
+ {
+ GtkScrolledWindow* scrolled_window = (GtkScrolledWindow*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ unsigned char r, g, b;
+
+ /* ignore given value, must use only from parent for the scrollbars */
+ char* parent_value = iupBaseNativeParentGetBgColor(ih);
+
+ if (iupStrToRGB(parent_value, &r, &g, &b))
+ {
+ GtkWidget* sb;
+
+ iupgtkBaseSetBgColor((GtkWidget*)scrolled_window, r, g, b);
+
+#if GTK_CHECK_VERSION(2, 8, 0)
+ sb = gtk_scrolled_window_get_hscrollbar(scrolled_window);
+ if (sb) iupgtkBaseSetBgColor(sb, r, g, b);
+
+ sb = gtk_scrolled_window_get_vscrollbar(scrolled_window);
+ if (sb) iupgtkBaseSetBgColor(sb, r, g, b);
+#endif
+ }
+ }
+
+ return iupdrvBaseSetBgColorAttrib(ih, value);
+}
+
+static int gtkTextSetTabSizeAttrib(Ihandle* ih, const char* value)
+{
+ PangoTabArray *tabs;
+ int tabsize, charwidth;
+ if (!ih->data->is_multiline)
+ return 0;
+
+ iupStrToInt(value, &tabsize);
+ charwidth = gtkTextGetCharSize(ih);
+ tabsize *= charwidth;
+ tabs = pango_tab_array_new_with_positions(1, FALSE, PANGO_TAB_LEFT, tabsize);
+ gtk_text_view_set_tabs(GTK_TEXT_VIEW(ih->handle), tabs);
+ pango_tab_array_free(tabs);
+ return 1;
+}
+
+static int gtkTextSetOverwriteAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->is_multiline)
+ return 0;
+ gtk_text_view_set_overwrite(GTK_TEXT_VIEW(ih->handle), iupStrBoolean(value));
+ return 0;
+}
+
+static char* gtkTextGetOverwriteAttrib(Ihandle* ih)
+{
+ if (!ih->data->is_multiline)
+ return "NO";
+ if (gtk_text_view_get_overwrite(GTK_TEXT_VIEW(ih->handle)))
+ return "YES";
+ else
+ return "NO";
+}
+
+void iupdrvTextAddFormatTag(Ihandle* ih, Ihandle* formattag)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter start_iter, end_iter;
+ GtkTextTag* tag;
+ char *selection;
+
+ if (!ih->data->is_multiline)
+ return;
+
+ selection = iupAttribGet(formattag, "SELECTION");
+ if (selection)
+ {
+ /* simulate Windows behavior and change the current selection */
+ gtkTextSetSelectionAttrib(ih, selection);
+ iupAttribSetStr(ih, "SELECTION", NULL);
+ }
+ else
+ {
+ char* selectionpos = iupAttribGet(formattag, "SELECTIONPOS");
+ if (selectionpos)
+ {
+ /* simulate Windows behavior and change the current selection */
+ gtkTextSetSelectionPosAttrib(ih, selectionpos);
+ iupAttribSetStr(ih, "SELECTIONPOS", NULL);
+ }
+ }
+
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ if (!gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter))
+ {
+ GtkTextMark* mark = gtk_text_buffer_get_insert(buffer);
+ gtk_text_buffer_get_iter_at_mark(buffer, &start_iter, mark);
+ gtk_text_buffer_get_iter_at_mark(buffer, &end_iter, mark);
+ }
+
+ tag = gtk_text_buffer_create_tag(buffer, NULL, NULL);
+ gtkTextParseParagraphFormat(formattag, tag);
+ gtkTextParseCharacterFormat(formattag, tag);
+ gtk_text_buffer_apply_tag(buffer, tag, &start_iter, &end_iter);
+
+ /* reset the selection */
+ gtkTextSetSelectionAttrib(ih, NULL);
+}
+
+static int gtkTextSetRemoveFormattingAttrib(Ihandle* ih, const char* value)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter start_iter, end_iter;
+
+ if (!ih->data->is_multiline)
+ return 0;
+
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ if (gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter))
+ gtk_text_buffer_remove_all_tags(buffer, &start_iter, &end_iter);
+
+ (void)value;
+ return 0;
+}
+
+
+/************************************************************************************************/
+
+static gboolean gtkTextSpinOutput(GtkSpinButton *spin, Ihandle* ih)
+{
+ if (iupAttribGet(ih, "_IUPGTK_SPIN_NOAUTO"))
+ {
+ iupAttribSetInt(ih, "_IUPGTK_SPIN_VALUE", (int)spin->adjustment->value);
+ return TRUE; /* disable output update */
+ }
+ else
+ {
+ iupAttribSetStr(ih, "_IUPGTK_SPIN_OLDVALUE", gtk_entry_get_text(GTK_ENTRY(ih->handle)));
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ return FALSE;
+ }
+}
+
+static gint gtkTextSpinInput(GtkSpinButton *spin, gdouble *val, Ihandle* ih)
+{
+ (void)spin;
+ *val = (double)iupAttribGetInt(ih, "_IUPGTK_SPIN_VALUE");
+ /* called only when SPINAUTO=NO */
+ return TRUE; /* disable input update */
+}
+
+static void gtkTextSpinValueChanged(GtkSpinButton* spin, Ihandle* ih)
+{
+ IFni cb;
+
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+
+ cb = (IFni)IupGetCallback(ih, "SPIN_CB");
+ if (cb)
+ {
+ int pos, ret;
+ if (iupAttribGet(ih, "_IUPGTK_SPIN_NOAUTO"))
+ pos = iupAttribGetInt(ih, "_IUPGTK_SPIN_VALUE");
+ else
+ pos = gtk_spin_button_get_value_as_int((GtkSpinButton*)ih->handle);
+
+ ret = cb(ih, pos);
+ if (ret == IUP_IGNORE)
+ {
+ /* this is not working: g_signal_stop_emission_by_name(spin, "value_changed"); */
+ }
+ }
+
+ (void)spin;
+}
+
+static int gtkTextSetSpinMinAttrib(Ihandle* ih, const char* value)
+{
+ if (GTK_IS_SPIN_BUTTON(ih->handle))
+ {
+ int min;
+ if (iupStrToInt(value, &min))
+ {
+ int max = iupAttribGetInt(ih, "SPINMAX");
+
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ g_signal_handlers_block_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkTextSpinValueChanged), ih);
+
+ gtk_spin_button_set_range((GtkSpinButton*)ih->handle, (double)min, (double)max);
+
+ g_signal_handlers_unblock_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkTextSpinValueChanged), ih);
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+ }
+ }
+ return 1;
+}
+
+static int gtkTextSetSpinMaxAttrib(Ihandle* ih, const char* value)
+{
+ if (GTK_IS_SPIN_BUTTON(ih->handle))
+ {
+ int max;
+ if (iupStrToInt(value, &max))
+ {
+ int min = iupAttribGetInt(ih, "SPINMIN");
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ g_signal_handlers_block_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkTextSpinValueChanged), ih);
+
+ gtk_spin_button_set_range((GtkSpinButton*)ih->handle, (double)min, (double)max);
+
+ g_signal_handlers_unblock_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkTextSpinValueChanged), ih);
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+ }
+ }
+ return 1;
+}
+
+static int gtkTextSetSpinIncAttrib(Ihandle* ih, const char* value)
+{
+ if (GTK_IS_SPIN_BUTTON(ih->handle))
+ {
+ int inc;
+ if (iupStrToInt(value, &inc))
+ gtk_spin_button_set_increments((GtkSpinButton*)ih->handle, (double)inc, (double)(inc*10));
+ }
+ return 1;
+}
+
+static int gtkTextSetSpinValueAttrib(Ihandle* ih, const char* value)
+{
+ if (GTK_IS_SPIN_BUTTON(ih->handle))
+ {
+ int pos;
+ if (iupStrToInt(value, &pos))
+ {
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ g_signal_handlers_block_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkTextSpinValueChanged), ih);
+
+ gtk_spin_button_set_value((GtkSpinButton*)ih->handle, (double)pos);
+
+ g_signal_handlers_unblock_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkTextSpinValueChanged), ih);
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+
+ if (iupAttribGet(ih, "_IUPGTK_SPIN_NOAUTO"))
+ iupAttribSetInt(ih, "_IUPGTK_SPIN_VALUE", pos);
+ }
+ }
+ return 1;
+}
+
+static char* gtkTextGetSpinValueAttrib(Ihandle* ih)
+{
+ if (GTK_IS_SPIN_BUTTON(ih->handle))
+ {
+ int pos;
+ char *str = iupStrGetMemory(50);
+
+ if (iupAttribGet(ih, "_IUPGTK_SPIN_NOAUTO"))
+ pos = iupAttribGetInt(ih, "_IUPGTK_SPIN_VALUE");
+ else
+ pos = gtk_spin_button_get_value_as_int((GtkSpinButton*)ih->handle);
+
+ sprintf(str, "%d", pos);
+ return str;
+ }
+ return NULL;
+}
+
+
+/**********************************************************************************************************/
+
+
+static void gtkTextMoveCursor(GtkWidget *w, GtkMovementStep step, gint count, gboolean extend_selection, Ihandle* ih)
+{
+ int col, lin, pos;
+
+ IFniii cb = (IFniii)IupGetCallback(ih, "CARET_CB");
+ if (!cb) return;
+
+ if (ih->data->is_multiline)
+ {
+ GtkTextIter iter;
+
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ gtk_text_buffer_get_iter_at_mark(buffer, &iter, gtk_text_buffer_get_insert(buffer));
+ gtkTextGetLinColFromPosition(&iter, &lin, &col);
+ pos = gtk_text_iter_get_offset(&iter);
+ }
+ else
+ {
+ pos = gtk_editable_get_position(GTK_EDITABLE(ih->handle));
+ col = pos;
+ col++; /* IUP starts at 1 */
+ lin = 1;
+ }
+
+ if (pos != ih->data->last_caret_pos)
+ {
+ ih->data->last_caret_pos = pos;
+
+ cb(ih, lin, col, pos);
+ }
+
+ (void)w;
+ (void)step;
+ (void)count;
+ (void)extend_selection;
+}
+
+static gboolean gtkTextKeyReleaseEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih)
+{
+ gtkTextMoveCursor(NULL, 0, 0, 0, ih);
+ (void)widget;
+ (void)evt;
+ return FALSE;
+}
+
+static gboolean gtkTextButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih)
+{
+ gtkTextMoveCursor(NULL, 0, 0, 0, ih);
+ return iupgtkButtonEvent(widget, evt, ih);
+}
+
+static int gtkTextCallActionCb(Ihandle* ih, const char* insert_value, int len, int start, int end)
+{
+ char *new_value, *value;
+ int ret = -1, key = 0;
+
+ IFnis cb = (IFnis)IupGetCallback(ih, "ACTION");
+ if (!cb && !ih->data->mask)
+ return -1; /* continue */
+
+ value = gtkTextGetValueAttrib(ih); /* new_value is the internal buffer */
+
+ if (!insert_value)
+ {
+ new_value = iupStrDup(value);
+ if (end<0) end = strlen(value)+1;
+ iupStrRemove(new_value, start, end, 1);
+ }
+ else
+ {
+ if (value[0]==0)
+ new_value = iupStrDup(insert_value);
+ else
+ {
+ if (len < end-start)
+ {
+ new_value = iupStrDup(value);
+ new_value = iupStrInsert(new_value, insert_value, start, end);
+ }
+ else
+ new_value = iupStrInsert(value, insert_value, start, end);
+ }
+ }
+
+ if (insert_value && insert_value[0]!=0 && insert_value[1]==0)
+ key = insert_value[0];
+
+ if (!new_value)
+ return -1; /* continue */
+
+ if (ih->data->nc && (int)strlen(new_value) > ih->data->nc)
+ {
+ if (new_value != value) free(new_value);
+ return 0; /* abort */
+ }
+
+ if (ih->data->mask && iupMaskCheck(ih->data->mask, new_value)==0)
+ {
+ if (new_value != value) free(new_value);
+ return 0; /* abort */
+ }
+
+ if (cb)
+ {
+ int cb_ret = cb(ih, key, (char*)new_value);
+ if (cb_ret==IUP_IGNORE)
+ ret = 0; /* abort */
+ else if (cb_ret==IUP_CLOSE)
+ {
+ IupExitLoop();
+ ret = 0; /* abort */
+ }
+ else if (cb_ret!=0 && key!=0 &&
+ cb_ret != IUP_DEFAULT && cb_ret != IUP_CONTINUE)
+ ret = cb_ret; /* abort and replace */
+ }
+
+ if (new_value != value) free(new_value);
+ return ret; /* continue */
+}
+
+static void gtkTextEntryDeleteText(GtkEditable *editable, int start, int end, Ihandle* ih)
+{
+ if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB"))
+ return;
+
+ if (gtkTextCallActionCb(ih, NULL, 0, start, end)==0)
+ g_signal_stop_emission_by_name (editable, "delete_text");
+}
+
+static void gtkTextEntryInsertText(GtkEditable *editable, char *insert_value, int len, int *pos, Ihandle* ih)
+{
+ int ret;
+
+ if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB"))
+ return;
+
+ ret = gtkTextCallActionCb(ih, iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(insert_value)), len, *pos, *pos);
+ if (ret == 0)
+ g_signal_stop_emission_by_name(editable, "insert_text");
+ else if (ret != -1)
+ {
+ insert_value[0] = (char)ret; /* replace key */
+
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ gtk_editable_insert_text(editable, insert_value, 1, pos);
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+
+ g_signal_stop_emission_by_name(editable, "insert_text");
+ }
+}
+
+static void gtkTextBufferDeleteRange(GtkTextBuffer *textbuffer, GtkTextIter *start_iter, GtkTextIter *end_iter, Ihandle* ih)
+{
+ int start, end;
+ if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB"))
+ return;
+
+ start = gtk_text_iter_get_offset(start_iter);
+ end = gtk_text_iter_get_offset(end_iter);
+
+ if (gtkTextCallActionCb(ih, NULL, 0, start, end)==0)
+ g_signal_stop_emission_by_name (textbuffer, "delete_range");
+}
+
+static void gtkTextBufferInsertText(GtkTextBuffer *textbuffer, GtkTextIter *pos_iter, gchar *insert_value, gint len, Ihandle* ih)
+{
+ int ret, pos;
+
+ if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB"))
+ return;
+
+ pos = gtk_text_iter_get_offset(pos_iter);
+
+ ret = gtkTextCallActionCb(ih, iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(insert_value)), len, pos, pos);
+ if (ret == 0)
+ g_signal_stop_emission_by_name(textbuffer, "insert_text");
+ else if (ret != -1)
+ {
+ insert_value[0] = (char)ret; /* replace key */
+
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1");
+ gtk_text_buffer_insert(textbuffer, pos_iter, insert_value, 1);
+ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL);
+
+ g_signal_stop_emission_by_name(textbuffer, "insert_text");
+ }
+}
+
+static void gtkTextChanged(void* dummy, Ihandle* ih)
+{
+ if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB"))
+ return;
+
+ iupBaseCallValueChangedCb(ih);
+ (void)dummy;
+}
+
+/**********************************************************************************************************/
+
+
+static int gtkTextMapMethod(Ihandle* ih)
+{
+ GtkScrolledWindow* scrolled_window = NULL;
+
+ if (ih->data->is_multiline)
+ {
+ GtkPolicyType hscrollbar_policy, vscrollbar_policy;
+ int wordwrap = 0;
+
+ ih->handle = gtk_text_view_new();
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ scrolled_window = (GtkScrolledWindow*)gtk_scrolled_window_new(NULL, NULL);
+ if (!scrolled_window)
+ return IUP_ERROR;
+
+ gtk_container_add((GtkContainer*)scrolled_window, ih->handle);
+ gtk_widget_show((GtkWidget*)scrolled_window);
+
+ iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)scrolled_window);
+
+ /* formatting is always supported when MULTILINE=YES */
+ ih->data->has_formatting = 1;
+
+ if (iupAttribGetBoolean(ih, "WORDWRAP"))
+ {
+ wordwrap = 1;
+ ih->data->sb &= ~IUP_SB_HORIZ; /* must remove the horizontal scroolbar */
+ }
+
+ if (iupAttribGetBoolean(ih, "BORDER"))
+ gtk_scrolled_window_set_shadow_type(scrolled_window, GTK_SHADOW_IN);
+ else
+ gtk_scrolled_window_set_shadow_type(scrolled_window, GTK_SHADOW_NONE);
+
+ if (ih->data->sb & IUP_SB_HORIZ)
+ {
+ if (iupAttribGetBoolean(ih, "AUTOHIDE"))
+ hscrollbar_policy = GTK_POLICY_AUTOMATIC;
+ else
+ hscrollbar_policy = GTK_POLICY_ALWAYS;
+ }
+ else
+ hscrollbar_policy = GTK_POLICY_NEVER;
+
+ if (ih->data->sb & IUP_SB_VERT)
+ {
+ if (iupAttribGetBoolean(ih, "AUTOHIDE"))
+ vscrollbar_policy = GTK_POLICY_AUTOMATIC;
+ else
+ vscrollbar_policy = GTK_POLICY_ALWAYS;
+ }
+ else
+ vscrollbar_policy = GTK_POLICY_NEVER;
+
+ gtk_scrolled_window_set_policy(scrolled_window, hscrollbar_policy, vscrollbar_policy);
+
+ if (wordwrap)
+ gtk_text_view_set_wrap_mode((GtkTextView*)ih->handle, GTK_WRAP_WORD);
+
+ gtk_widget_add_events(ih->handle, GDK_ENTER_NOTIFY_MASK|GDK_LEAVE_NOTIFY_MASK);
+ }
+ else
+ {
+ if (iupAttribGetBoolean(ih, "SPIN"))
+ ih->handle = gtk_spin_button_new_with_range(0, 100, 1);
+ else
+ ih->handle = gtk_entry_new();
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ /* formatting is never supported when MULTILINE=NO */
+ ih->data->has_formatting = 0;
+
+ gtk_entry_set_has_frame((GtkEntry*)ih->handle, IupGetInt(ih, "BORDER"));
+
+ if (iupAttribGetBoolean(ih, "PASSWORD"))
+ gtk_entry_set_visibility((GtkEntry*)ih->handle, FALSE);
+
+ if (GTK_IS_SPIN_BUTTON(ih->handle))
+ {
+ gtk_spin_button_set_numeric((GtkSpinButton*)ih->handle, FALSE);
+ gtk_spin_button_set_digits((GtkSpinButton*)ih->handle, 0);
+
+ gtk_spin_button_set_wrap((GtkSpinButton*)ih->handle, iupAttribGetBoolean(ih, "SPINWRAP"));
+
+ g_signal_connect(G_OBJECT(ih->handle), "value-changed", G_CALLBACK(gtkTextSpinValueChanged), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "output", G_CALLBACK(gtkTextSpinOutput), ih);
+
+ if (!iupAttribGetBoolean(ih, "SPINAUTO"))
+ {
+ g_signal_connect(G_OBJECT(ih->handle), "input", G_CALLBACK(gtkTextSpinInput), ih);
+ iupAttribSetStr(ih, "_IUPGTK_SPIN_NOAUTO", "1");
+ }
+ }
+ }
+
+ /* add to the parent, all GTK controls must call this. */
+ iupgtkBaseAddToParent(ih);
+
+ if (!iupAttribGetBoolean(ih, "CANFOCUS"))
+ GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS;
+
+ g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih);
+
+ g_signal_connect_after(G_OBJECT(ih->handle), "move-cursor", G_CALLBACK(gtkTextMoveCursor), ih); /* only report some caret movements */
+ g_signal_connect_after(G_OBJECT(ih->handle), "key-release-event", G_CALLBACK(gtkTextKeyReleaseEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "button-press-event", G_CALLBACK(gtkTextButtonEvent), ih); /* if connected "after" then it is ignored */
+ g_signal_connect(G_OBJECT(ih->handle), "button-release-event",G_CALLBACK(gtkTextButtonEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "motion-notify-event",G_CALLBACK(iupgtkMotionNotifyEvent), ih);
+
+ if (ih->data->is_multiline)
+ {
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle));
+ g_signal_connect(G_OBJECT(buffer), "delete-range", G_CALLBACK(gtkTextBufferDeleteRange), ih);
+ g_signal_connect(G_OBJECT(buffer), "insert-text", G_CALLBACK(gtkTextBufferInsertText), ih);
+ g_signal_connect(G_OBJECT(buffer), "changed", G_CALLBACK(gtkTextChanged), ih);
+ }
+ else
+ {
+ g_signal_connect(G_OBJECT(ih->handle), "delete-text", G_CALLBACK(gtkTextEntryDeleteText), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "insert-text", G_CALLBACK(gtkTextEntryInsertText), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "changed", G_CALLBACK(gtkTextChanged), ih);
+ }
+
+ if (scrolled_window)
+ gtk_widget_realize((GtkWidget*)scrolled_window);
+ gtk_widget_realize(ih->handle);
+
+ /* configure for DRAG&DROP */
+ if (IupGetCallback(ih, "DROPFILES_CB"))
+ iupAttribSetStr(ih, "DRAGDROP", "YES");
+
+ /* update a mnemonic in a label if necessary */
+ iupgtkUpdateMnemonic(ih);
+
+ if (ih->data->formattags)
+ iupTextUpdateFormatTags(ih);
+
+ IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)gtkTextConvertXYToPos);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvTextInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkTextMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Common GTK only (when text is in a secondary element) */
+ iupClassRegisterAttribute(ic, "PANGOLAYOUT", gtkTextGetPangoLayoutAttrib, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkTextSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iupdrvBaseSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT);
+
+ /* IupText only */
+ iupClassRegisterAttribute(ic, "PADDING", iupTextGetPaddingAttrib, gtkTextSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "VALUE", gtkTextGetValueAttrib, gtkTextSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTEDTEXT", gtkTextGetSelectedTextAttrib, gtkTextSetSelectedTextAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTION", gtkTextGetSelectionAttrib, gtkTextSetSelectionAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTIONPOS", gtkTextGetSelectionPosAttrib, gtkTextSetSelectionPosAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CARET", gtkTextGetCaretAttrib, gtkTextSetCaretAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CARETPOS", gtkTextGetCaretPosAttrib, gtkTextSetCaretPosAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "INSERT", NULL, gtkTextSetInsertAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "APPEND", NULL, gtkTextSetAppendAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "READONLY", gtkTextGetReadOnlyAttrib, gtkTextSetReadOnlyAttrib, NULL, NULL, IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "NC", iupTextGetNCAttrib, gtkTextSetNCAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "CLIPBOARD", NULL, gtkTextSetClipboardAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SCROLLTO", NULL, gtkTextSetScrollToAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SCROLLTOPOS", NULL, gtkTextSetScrollToPosAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPINMIN", NULL, gtkTextSetSpinMinAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPINMAX", NULL, gtkTextSetSpinMaxAttrib, IUPAF_SAMEASSYSTEM, "100", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPININC", NULL, gtkTextSetSpinIncAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPINVALUE", gtkTextGetSpinValueAttrib, gtkTextSetSpinValueAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NO_INHERIT);
+
+ /* IupText Windows and GTK only */
+ iupClassRegisterAttribute(ic, "ADDFORMATTAG", NULL, iupTextSetAddFormatTagAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ADDFORMATTAG_HANDLE", NULL, iupTextSetAddFormatTagHandleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, gtkTextSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "ALEFT", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupgtkSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FORMATTING", iupTextGetFormattingAttrib, iupTextSetFormattingAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "OVERWRITE", gtkTextGetOverwriteAttrib, gtkTextSetOverwriteAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "REMOVEFORMATTING", NULL, gtkTextSetRemoveFormattingAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TABSIZE", NULL, gtkTextSetTabSizeAttrib, "8", NULL, IUPAF_DEFAULT); /* force new default value */
+ iupClassRegisterAttribute(ic, "PASSWORD", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/gtk/iupgtk_timer.c b/iup/src/gtk/iupgtk_timer.c
new file mode 100755
index 0000000..ecbefa3
--- /dev/null
+++ b/iup/src/gtk/iupgtk_timer.c
@@ -0,0 +1,61 @@
+/** \file
+ * \brief Timer for the GTK Driver.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <gtk/gtk.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_assert.h"
+#include "iup_timer.h"
+
+
+static gboolean gtkTimerProc(gpointer data)
+{
+ Ihandle *ih = (Ihandle*)data;
+ Icallback cb;
+
+ if (!iupObjectCheck(ih)) /* control could be destroyed before timer callback */
+ return FALSE;
+
+ cb = IupGetCallback(ih, "ACTION_CB");
+ if (cb && cb(ih)==IUP_CLOSE)
+ IupExitLoop();
+
+ return TRUE;
+}
+
+void iupdrvTimerRun(Ihandle *ih)
+{
+ unsigned int time_ms;
+
+ if (ih->serial > 0) /* timer already started */
+ return;
+
+ time_ms = iupAttribGetInt(ih, "TIME");
+ if (time_ms > 0)
+ ih->serial = g_timeout_add(time_ms, gtkTimerProc, (gpointer)ih);
+}
+
+void iupdrvTimerStop(Ihandle* ih)
+{
+ if (ih->serial > 0)
+ {
+ g_source_remove(ih->serial);
+ ih->serial = -1;
+ }
+}
+
+void iupdrvTimerInitClass(Iclass* ic)
+{
+ (void)ic;
+}
diff --git a/iup/src/gtk/iupgtk_tips.c b/iup/src/gtk/iupgtk_tips.c
new file mode 100755
index 0000000..6289d70
--- /dev/null
+++ b/iup/src/gtk/iupgtk_tips.c
@@ -0,0 +1,100 @@
+/** \file
+ * \brief Windows Driver TIPS management
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+
+#include <gtk/gtk.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_str.h"
+#include "iup_attrib.h"
+#include "iup_image.h"
+
+#include "iupgtk_drv.h"
+
+#if GTK_CHECK_VERSION(2, 12, 0)
+#else
+static GtkTooltips* gtk_tips = NULL; /* old TIPS */
+#endif
+
+#if GTK_CHECK_VERSION(2, 12, 0)
+static gboolean gtkQueryTooltip(GtkWidget *widget, gint x, gint y, gboolean keyboard_mode, GtkTooltip *tooltip, Ihandle* ih)
+{
+ char* value = iupAttribGet(ih, "TIPRECT");
+ if (value && !keyboard_mode)
+ {
+ GdkRectangle rect;
+ int x1, x2, y1, y2;
+ sscanf(value, "%d %d %d %d", &x1, &y1, &x2, &y2);
+ rect.x = x1;
+ rect.y = y1;
+ rect.width = x2-x1+1;
+ rect.height = y2-y1+1;
+ gtk_tooltip_set_tip_area(tooltip, &rect);
+ }
+ else
+ gtk_tooltip_set_tip_area(tooltip, NULL);
+
+ value = iupAttribGet(ih, "TIPICON");
+ if (!value)
+ gtk_tooltip_set_icon(tooltip, NULL);
+ else
+ {
+ GdkPixbuf* icon = (GdkPixbuf*)iupImageGetIcon(value);
+ if (icon)
+ gtk_tooltip_set_icon(tooltip, icon);
+ }
+
+ (void)y;
+ (void)x;
+ (void)widget;
+ return FALSE;
+}
+#endif
+
+int iupdrvBaseSetTipAttrib(Ihandle* ih, const char* value)
+{
+ GtkWidget* widget = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (!widget)
+ widget = ih->handle;
+
+#if GTK_CHECK_VERSION(2, 12, 0)
+ if (iupAttribGetBoolean(ih, "TIPMARKUP"))
+ gtk_widget_set_tooltip_markup(widget, iupgtkStrConvertToUTF8(value));
+ else
+ gtk_widget_set_tooltip_text(widget, iupgtkStrConvertToUTF8(value));
+
+ g_signal_connect(widget, "query-tooltip", G_CALLBACK(gtkQueryTooltip), ih);
+#else
+ if (gtk_tips == NULL)
+ gtk_tips = gtk_tooltips_new();
+
+ gtk_tooltips_set_tip(gtk_tips, widget, iupgtkStrConvertToUTF8(value), NULL);
+#endif
+
+ return 1;
+}
+
+int iupdrvBaseSetTipVisibleAttrib(Ihandle* ih, const char* value)
+{
+ GtkWidget* widget = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (!widget)
+ widget = ih->handle;
+ (void)value;
+
+ /* must use IupGetAttribute to use inheritance */
+ if (!IupGetAttribute(ih, "TIP"))
+ return 0;
+
+#if GTK_CHECK_VERSION(2, 12, 0)
+ gtk_widget_trigger_tooltip_query(widget);
+#endif
+
+ return 0;
+}
+
diff --git a/iup/src/gtk/iupgtk_toggle.c b/iup/src/gtk/iupgtk_toggle.c
new file mode 100755
index 0000000..8ff7df5
--- /dev/null
+++ b/iup/src/gtk/iupgtk_toggle.c
@@ -0,0 +1,519 @@
+/** \file
+ * \brief Toggle Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_image.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_image.h"
+#include "iup_key.h"
+#include "iup_toggle.h"
+
+#include "iupgtk_drv.h"
+
+
+#if !GTK_CHECK_VERSION(2, 6, 0)
+static void gtk_button_set_image(GtkButton *button, GtkWidget *image)
+{
+}
+static GtkWidget* gtk_button_get_image(GtkButton *button)
+{
+ return NULL;
+}
+#endif
+
+void iupdrvToggleAddCheckBox(int *x, int *y)
+{
+#ifdef HILDON
+ (*x) += 30+4;
+ if ((*y) < 30) (*y) = 30; /* minimum height */
+#else
+ (*x) += 16+4;
+ if ((*y) < 16) (*y) = 16; /* minimum height */
+#endif
+ (*y) += 4;
+}
+
+static int gtkToggleGetCheck(Ihandle* ih)
+{
+ if (gtk_toggle_button_get_inconsistent((GtkToggleButton*)ih->handle))
+ return -1;
+ if (gtk_toggle_button_get_active((GtkToggleButton*)ih->handle))
+ return 1;
+ else
+ return 0;
+}
+
+static void gtkToggleSetPixbuf(Ihandle* ih, const char* name, int make_inactive)
+{
+ GtkButton* button = (GtkButton*)ih->handle;
+ GtkImage* image = (GtkImage*)gtk_button_get_image(button);
+
+ if (name)
+ {
+ GdkPixbuf* pixbuf = iupImageGetImage(name, ih, make_inactive);
+ GdkPixbuf* old_pixbuf = gtk_image_get_pixbuf(image);
+ if (pixbuf != old_pixbuf)
+ gtk_image_set_from_pixbuf(image, pixbuf);
+ return;
+ }
+
+ /* if not defined */
+#if GTK_CHECK_VERSION(2, 8, 0)
+ gtk_image_clear(image);
+#endif
+}
+
+static void gtkToggleUpdateImage(Ihandle* ih, int active, int check)
+{
+ char* name;
+
+ if (!active)
+ {
+ name = iupAttribGet(ih, "IMINACTIVE");
+ if (name)
+ gtkToggleSetPixbuf(ih, name, 0);
+ else
+ {
+ /* if not defined then automaticaly create one based on IMAGE */
+ name = iupAttribGet(ih, "IMAGE");
+ gtkToggleSetPixbuf(ih, name, 1); /* make_inactive */
+ }
+ }
+ else
+ {
+ /* must restore the normal image */
+ if (check)
+ {
+ name = iupAttribGet(ih, "IMPRESS");
+ if (name)
+ gtkToggleSetPixbuf(ih, name, 0);
+ else
+ {
+ /* if not defined then automaticaly create one based on IMAGE */
+ name = iupAttribGet(ih, "IMAGE");
+ gtkToggleSetPixbuf(ih, name, 0);
+ }
+ }
+ else
+ {
+ name = iupAttribGet(ih, "IMAGE");
+ if (name)
+ gtkToggleSetPixbuf(ih, name, 0);
+ }
+ }
+}
+
+
+/*************************************************************************/
+
+
+static int gtkToggleSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value,"NOTDEF"))
+ gtk_toggle_button_set_inconsistent((GtkToggleButton*)ih->handle, TRUE);
+ else
+ {
+ gtk_toggle_button_set_inconsistent((GtkToggleButton*)ih->handle, FALSE);
+
+ /* This action causes the toggled signal to be emitted. */
+ iupAttribSetStr(ih, "_IUPGTK_IGNORE_TOGGLE", "1");
+
+ if (iupStrBoolean(value))
+ gtk_toggle_button_set_active((GtkToggleButton*)ih->handle, TRUE);
+ else
+ gtk_toggle_button_set_active((GtkToggleButton*)ih->handle, FALSE);
+
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ gtkToggleUpdateImage(ih, iupdrvIsActive(ih), gtkToggleGetCheck(ih));
+
+ iupAttribSetStr(ih, "_IUPGTK_IGNORE_TOGGLE", NULL);
+ }
+
+ return 0;
+}
+
+static char* gtkToggleGetValueAttrib(Ihandle* ih)
+{
+ int check = gtkToggleGetCheck(ih);
+ if (check == -1)
+ return "NOTDEF";
+ else if (check == 1)
+ return "ON";
+ else
+ return "OFF";
+}
+
+static int gtkToggleSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_TEXT)
+ {
+ GtkButton* button = (GtkButton*)ih->handle;
+ GtkLabel* label = (GtkLabel*)gtk_button_get_image(button);
+ iupgtkSetMnemonicTitle(ih, label, value);
+ return 1;
+ }
+
+ return 0;
+}
+
+static int gtkToggleSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ GtkButton* button = (GtkButton*)ih->handle;
+ float xalign, yalign;
+ char value1[30]="", value2[30]="";
+
+ if (ih->data->type == IUP_TOGGLE_TEXT)
+ return 0;
+
+ iupStrToStrStr(value, value1, value2, ':');
+
+ if (iupStrEqualNoCase(value1, "ARIGHT"))
+ xalign = 1.0f;
+ else if (iupStrEqualNoCase(value1, "ACENTER"))
+ xalign = 0.5f;
+ else /* "ALEFT" */
+ xalign = 0;
+
+ if (iupStrEqualNoCase(value2, "ABOTTOM"))
+ yalign = 1.0f;
+ else if (iupStrEqualNoCase(value2, "ATOP"))
+ yalign = 0;
+ else /* ACENTER (default) */
+ yalign = 0.5f;
+
+ gtk_button_set_alignment(button, xalign, yalign);
+
+ return 1;
+}
+
+static int gtkToggleSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+ if (ih->handle && ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ GtkButton* button = (GtkButton*)ih->handle;
+ GtkMisc* misc = (GtkMisc*)gtk_button_get_image(button);
+ gtk_misc_set_padding(misc, ih->data->horiz_padding, ih->data->vert_padding);
+ }
+ return 0;
+}
+
+static int gtkToggleSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ GtkWidget* label = (GtkWidget*)gtk_button_get_image((GtkButton*)ih->handle);
+ if (!label) return 0;
+
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ iupgtkBaseSetFgColor(label, r, g, b);
+
+ return 1;
+}
+
+static int gtkToggleSetStandardFontAttrib(Ihandle* ih, const char* value)
+{
+ iupdrvSetStandardFontAttrib(ih, value);
+
+ if (ih->handle)
+ {
+ GtkWidget* label = gtk_button_get_image((GtkButton*)ih->handle);
+ if (!label) return 1;
+
+ gtk_widget_modify_font(label, (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih));
+
+ if (ih->data->type == IUP_TOGGLE_TEXT)
+ iupgtkFontUpdatePangoLayout(ih, gtk_label_get_layout((GtkLabel*)label));
+ }
+ return 1;
+}
+
+static int gtkToggleSetImageAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ if (value != iupAttribGet(ih, "IMAGE"))
+ iupAttribSetStr(ih, "IMAGE", (char*)value);
+ gtkToggleUpdateImage(ih, iupdrvIsActive(ih), gtkToggleGetCheck(ih));
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int gtkToggleSetImInactiveAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ if (value != iupAttribGet(ih, "IMINACTIVE"))
+ iupAttribSetStr(ih, "IMINACTIVE", (char*)value);
+ gtkToggleUpdateImage(ih, iupdrvIsActive(ih), gtkToggleGetCheck(ih));
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int gtkToggleSetImPressAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ if (value != iupAttribGet(ih, "IMPRESS"))
+ iupAttribSetStr(ih, "IMPRESS", (char*)value);
+ gtkToggleUpdateImage(ih, iupdrvIsActive(ih), gtkToggleGetCheck(ih));
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int gtkToggleSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ /* update the inactive image if necessary */
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ gtkToggleUpdateImage(ih, iupStrBoolean(value), gtkToggleGetCheck(ih));
+
+ return iupBaseSetActiveAttrib(ih, value);
+}
+
+/****************************************************************************************************/
+
+static void gtkToggleToggled(GtkToggleButton *widget, Ihandle* ih)
+{
+ IFni cb;
+ int check;
+
+ if (iupAttribGet(ih, "_IUPGTK_IGNORE_TOGGLE"))
+ return;
+
+ check = gtkToggleGetCheck(ih);
+
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ gtkToggleUpdateImage(ih, iupdrvIsActive(ih), check);
+
+ cb = (IFni)IupGetCallback(ih, "ACTION");
+ if (cb && cb(ih, check) == IUP_CLOSE)
+ IupExitLoop();
+
+ iupBaseCallValueChangedCb(ih);
+
+ (void)widget;
+}
+
+static int gtkToggleUpdate3StateCheck(Ihandle *ih, int keyb)
+{
+ int check = gtkToggleGetCheck(ih);
+ if (check == 1) /* GOTO check == -1 */
+ {
+ gtk_toggle_button_set_inconsistent((GtkToggleButton*)ih->handle, TRUE);
+ gtkToggleToggled((GtkToggleButton*)ih->handle, ih);
+ return TRUE; /* ignore message to avoid change toggle state */
+ }
+ else if (check == -1) /* GOTO check == 0 */
+ {
+ gtk_toggle_button_set_inconsistent((GtkToggleButton*)ih->handle, FALSE);
+ if (keyb)
+ {
+ gtk_toggle_button_set_active((GtkToggleButton*)ih->handle, FALSE);
+ return TRUE; /* ignore message to avoid change toggle state */
+ }
+ }
+ else /* (check == 0) GOTO check == 1 */
+ {
+ gtk_toggle_button_set_inconsistent((GtkToggleButton*)ih->handle, FALSE);
+ if (keyb)
+ {
+ gtk_toggle_button_set_active((GtkToggleButton*)ih->handle, TRUE);
+ return TRUE; /* ignore message to avoid change toggle state */
+ }
+ }
+
+ return FALSE;
+}
+
+static gboolean gtkToggleButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih)
+{
+ if (iupAttribGet(ih, "_IUPGTK_IGNORE_TOGGLE"))
+ return FALSE;
+
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ char* name = iupAttribGet(ih, "IMPRESS");
+ if (name)
+ {
+ if (evt->type == GDK_BUTTON_PRESS)
+ gtkToggleUpdateImage(ih, iupdrvIsActive(ih), 1);
+ else
+ gtkToggleUpdateImage(ih, iupdrvIsActive(ih), 0);
+ }
+ }
+ else
+ {
+ if (evt->type == GDK_BUTTON_RELEASE)
+ {
+ if (gtkToggleUpdate3StateCheck(ih, 0))
+ return TRUE; /* ignore message to avoid change toggle state */
+ }
+ }
+
+ (void)widget;
+ return FALSE;
+}
+
+static gboolean gtkToggleKeyEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih)
+{
+ if (evt->type == GDK_KEY_PRESS)
+ {
+ if (evt->keyval == GDK_space || evt->keyval == GDK_Return)
+ return TRUE; /* ignore message to avoid change toggle state */
+ }
+ else
+ {
+ if (evt->keyval == GDK_space || evt->keyval == GDK_Return)
+ {
+ if (gtkToggleUpdate3StateCheck(ih, 1))
+ return TRUE; /* ignore message to avoid change toggle state */
+ }
+ }
+
+ (void)widget;
+ return FALSE;
+}
+
+static int gtkToggleMapMethod(Ihandle* ih)
+{
+ Ihandle* radio = iupRadioFindToggleParent(ih);
+ char *value;
+ int is3state = 0;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ if (radio)
+ ih->data->radio = 1;
+
+ value = iupAttribGet(ih, "IMAGE");
+ if (value)
+ ih->data->type = IUP_TOGGLE_IMAGE;
+ else
+ ih->data->type = IUP_TOGGLE_TEXT;
+
+ if (radio)
+ {
+ GtkRadioButton* last_tg = (GtkRadioButton*)iupAttribGet(radio, "_IUPGTK_LASTRADIOBUTTON");
+ if (last_tg)
+ ih->handle = gtk_radio_button_new_from_widget(last_tg);
+ else
+ ih->handle = gtk_radio_button_new(NULL);
+ iupAttribSetStr(radio, "_IUPGTK_LASTRADIOBUTTON", (char*)ih->handle);
+ }
+ else
+ {
+ if (ih->data->type == IUP_TOGGLE_TEXT)
+ {
+ ih->handle = gtk_check_button_new();
+
+ if (iupAttribGetBoolean(ih, "3STATE"))
+ is3state = 1;
+ }
+ else
+ ih->handle = gtk_toggle_button_new();
+ }
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ if (ih->data->type == IUP_TOGGLE_TEXT)
+ {
+ gtk_button_set_image((GtkButton*)ih->handle, gtk_label_new(NULL));
+ gtk_toggle_button_set_mode((GtkToggleButton*)ih->handle, TRUE);
+ }
+ else
+ {
+ gtk_button_set_image((GtkButton*)ih->handle, gtk_image_new());
+ gtk_toggle_button_set_mode((GtkToggleButton*)ih->handle, FALSE);
+ }
+
+ /* add to the parent, all GTK controls must call this. */
+ iupgtkBaseAddToParent(ih);
+
+ if (!iupAttribGetBoolean(ih, "CANFOCUS"))
+ GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS;
+
+ g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+
+ g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih);
+
+ g_signal_connect(G_OBJECT(ih->handle), "toggled", G_CALLBACK(gtkToggleToggled), ih);
+
+ if (ih->data->type == IUP_TOGGLE_IMAGE || is3state)
+ {
+ g_signal_connect(G_OBJECT(ih->handle), "button-press-event", G_CALLBACK(gtkToggleButtonEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "button-release-event",G_CALLBACK(gtkToggleButtonEvent), ih);
+ }
+
+ if (is3state)
+ {
+ g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(gtkToggleKeyEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "key-release-event", G_CALLBACK(gtkToggleKeyEvent), ih);
+ }
+
+ gtk_widget_realize(ih->handle);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvToggleInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkToggleMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Overwrite Common */
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, gtkToggleSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED);
+
+ /* Overwrite Visual */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, gtkToggleSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, gtkToggleSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT); /* black */
+ iupClassRegisterAttribute(ic, "TITLE", NULL, gtkToggleSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupToggle only */
+ iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, gtkToggleSetAlignmentAttrib, "ACENTER:ACENTER", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, gtkToggleSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, gtkToggleSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMPRESS", NULL, gtkToggleSetImPressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUE", gtkToggleGetValueAttrib, gtkToggleSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "PADDING", iupToggleGetPaddingAttrib, gtkToggleSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "MARKUP", NULL, NULL, NULL, NULL, IUPAF_DEFAULT);
+}
diff --git a/iup/src/gtk/iupgtk_tree.c b/iup/src/gtk/iupgtk_tree.c
new file mode 100755
index 0000000..d408f27
--- /dev/null
+++ b/iup/src/gtk/iupgtk_tree.c
@@ -0,0 +1,2369 @@
+/** \file
+ * \brief Tree Control
+ *
+ * See Copyright Notice in iup.h
+ */
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_key.h"
+#include "iup_image.h"
+#include "iup_array.h"
+#include "iup_tree.h"
+
+#include "iup_drvinfo.h"
+#include "iupgtk_drv.h"
+
+enum
+{
+ IUPGTK_TREE_IMAGE,
+ IUPGTK_TREE_HAS_IMAGE,
+ IUPGTK_TREE_IMAGE_EXPANDED,
+ IUPGTK_TREE_HAS_IMAGE_EXPANDED,
+ IUPGTK_TREE_TITLE,
+ IUPGTK_TREE_KIND,
+ IUPGTK_TREE_COLOR,
+ IUPGTK_TREE_FONT,
+ IUPGTK_TREE_USERDATA
+};
+
+static GtkTreeIter gtkTreeInvalidIter = {0,0,0,0};
+
+/*****************************************************************************/
+/* COPYING ITEMS (Branches and its children) */
+/*****************************************************************************/
+/* Insert the copied item in a new location. Returns the new item. */
+static void gtkTreeCopyItem(GtkTreeModel* model, GtkTreeIter* iterItem, GtkTreeIter* iterParent, int position, GtkTreeIter *iterNewItem, int full_copy)
+{
+ GtkTreeStore* store = GTK_TREE_STORE(model);
+ int kind;
+ char* title;
+ gboolean has_image, has_image_expanded;
+ PangoFontDescription* font;
+ void* userdata;
+ GdkColor *color;
+ GdkPixbuf* image, *image_expanded;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(store), iterItem, IUPGTK_TREE_IMAGE, &image,
+ IUPGTK_TREE_HAS_IMAGE, &has_image,
+ IUPGTK_TREE_IMAGE_EXPANDED, &image_expanded,
+ IUPGTK_TREE_HAS_IMAGE_EXPANDED, &has_image_expanded,
+ IUPGTK_TREE_TITLE, &title,
+ IUPGTK_TREE_KIND, &kind,
+ IUPGTK_TREE_COLOR, &color,
+ IUPGTK_TREE_FONT, &font,
+ IUPGTK_TREE_USERDATA, &userdata,
+ -1);
+
+ if (position == 2)
+ gtk_tree_store_append(store, iterNewItem, iterParent);
+ else if (position == 1) /* copy as first child of expanded branch */
+ gtk_tree_store_insert(store, iterNewItem, iterParent, 0); /* iterParent is parent of the new item (firstchild of it) */
+ else /* copy as next brother of item or collapsed branch */
+ gtk_tree_store_insert_after(store, iterNewItem, NULL, iterParent); /* iterParent is sibling of the new item */
+
+ if (full_copy) /* during a full copy the userdata reference is not copied */
+ userdata = NULL;
+
+ gtk_tree_store_set(store, iterNewItem, IUPGTK_TREE_IMAGE, image,
+ IUPGTK_TREE_HAS_IMAGE, has_image,
+ IUPGTK_TREE_IMAGE_EXPANDED, image_expanded,
+ IUPGTK_TREE_HAS_IMAGE_EXPANDED, has_image_expanded,
+ IUPGTK_TREE_TITLE, title,
+ IUPGTK_TREE_KIND, kind,
+ IUPGTK_TREE_COLOR, color,
+ IUPGTK_TREE_FONT, font,
+ IUPGTK_TREE_USERDATA, userdata,
+ -1);
+}
+
+static void gtkTreeCopyChildren(Ihandle* ih, GtkTreeModel* model, GtkTreeIter *iterItemSrc, GtkTreeIter *iterItemDst, int full_copy)
+{
+ GtkTreeIter iterChildSrc;
+ int hasItem = gtk_tree_model_iter_children(model, &iterChildSrc, iterItemSrc); /* get the firstchild */
+ while(hasItem)
+ {
+ GtkTreeIter iterNewItem;
+ gtkTreeCopyItem(model, &iterChildSrc, iterItemDst, 2, &iterNewItem, full_copy); /* append always */
+
+ /* Recursively transfer all the items */
+ gtkTreeCopyChildren(ih, model, &iterChildSrc, &iterNewItem, full_copy);
+
+ /* Go to next sibling item */
+ hasItem = gtk_tree_model_iter_next(model, &iterChildSrc);
+ }
+}
+
+/* Copies all items in a branch to a new location. Returns the new branch node. */
+static void gtkTreeCopyNode(Ihandle* ih, GtkTreeModel* model, GtkTreeIter *iterItemSrc, GtkTreeIter *iterItemDst, GtkTreeIter* iterNewItem, int full_copy)
+{
+ int kind, position = 0; /* insert after iterItemDst */
+ gtk_tree_model_get(model, iterItemDst, IUPGTK_TREE_KIND, &kind, -1);
+
+ if (kind == ITREE_BRANCH)
+ {
+ GtkTreePath* path = gtk_tree_model_get_path(model, iterItemDst);
+ if (gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path))
+ position = 1; /* insert as first child of iterItemDst */
+ gtk_tree_path_free(path);
+ }
+
+ gtkTreeCopyItem(model, iterItemSrc, iterItemDst, position, iterNewItem, full_copy);
+
+ gtkTreeCopyChildren(ih, model, iterItemSrc, iterNewItem, full_copy);
+}
+
+/*****************************************************************************/
+/* FINDING ITEMS */
+/*****************************************************************************/
+
+static void gtkTreeInvertAllNodeMarking(Ihandle* ih, GtkTreeModel* model, GtkTreeSelection* selection, GtkTreeIter* iterItem)
+{
+ GtkTreeIter iterChild;
+ int hasItem = TRUE;
+
+ while(hasItem)
+ {
+ if(gtk_tree_selection_iter_is_selected(selection, iterItem))
+ gtk_tree_selection_unselect_iter(selection, iterItem);
+ else
+ gtk_tree_selection_select_iter(selection, iterItem);
+
+ /* Check whether we have child items */
+ if(gtk_tree_model_iter_has_child(model, iterItem))
+ {
+ gtk_tree_model_iter_children(model, &iterChild, iterItem); /* get the firstchild */
+ gtkTreeInvertAllNodeMarking(ih, model, selection, &iterChild);
+ }
+
+ /* Go to next sibling item */
+ hasItem = gtk_tree_model_iter_next(model, iterItem);
+ }
+}
+
+static GtkTreeIter gtkTreeFindVisibleNodeId(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem, GtkTreeIter iterNode)
+{
+ GtkTreeIter iterChild;
+ GtkTreePath* path;
+ int hasItem = TRUE;
+
+ while(hasItem)
+ {
+ /* ID control to traverse items */
+ ih->data->id_control++; /* not the real id since it counts only the visible ones */
+
+ /* StateID founded! */
+ if(iterItem.user_data == iterNode.user_data)
+ return iterItem;
+
+ path = gtk_tree_model_get_path(model, &iterItem);
+
+ /* Check whether we have child items and it is expanded (visible) */
+ if (gtk_tree_model_iter_has_child(model, &iterItem) && gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path))
+ {
+ gtk_tree_model_iter_children(model, &iterChild, &iterItem); /* get the firstchild */
+ iterChild = gtkTreeFindVisibleNodeId(ih, model, iterChild, iterNode);
+
+ /* StateID founded! */
+ if(iterChild.user_data)
+ {
+ gtk_tree_path_free(path);
+ return iterChild;
+ }
+ }
+
+ gtk_tree_path_free(path);
+ /* Go to next sibling item */
+ hasItem = gtk_tree_model_iter_next(model, &iterItem);
+ }
+
+ return gtkTreeInvalidIter; /* invalid since gtk_tree_model_iter_next returned false */
+}
+
+static GtkTreeIter gtkTreeFindVisibleNodeFromId(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem)
+{
+ GtkTreeIter iterChild;
+ GtkTreePath* path;
+ int hasItem = TRUE;
+
+ while(hasItem)
+ {
+ /* ID control to traverse items */
+ ih->data->id_control--; /* not the real id since it counts only the visible ones */
+
+ /* StateID founded! */
+ if(ih->data->id_control < 0)
+ return iterItem;
+
+ path = gtk_tree_model_get_path(model, &iterItem);
+
+ /* Check whether we have child items and it is expanded (visible) */
+ if(gtk_tree_model_iter_has_child(model, &iterItem) && gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path))
+ {
+ gtk_tree_model_iter_children(model, &iterChild, &iterItem); /* get the firstchild */
+ iterChild = gtkTreeFindVisibleNodeFromId(ih, model, iterChild);
+
+ /* StateID founded! */
+ if(ih->data->id_control < 0)
+ {
+ gtk_tree_path_free(path);
+ return iterChild;
+ }
+ }
+
+ gtk_tree_path_free(path);
+ /* Go to next sibling item */
+ hasItem = gtk_tree_model_iter_next(model, &iterItem);
+ }
+
+ return gtkTreeInvalidIter; /* invalid since gtk_tree_model_iter_next returned false */
+}
+
+static GtkTreeIter gtkTreeGetLastVisibleNode(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem)
+{
+ GtkTreeIter iterChild, iterPrev = gtkTreeInvalidIter;
+ GtkTreePath* path = gtk_tree_model_get_path(model, &iterItem);
+
+ /* Check whether we have child items and it is expanded (visible) */
+ if(gtk_tree_model_iter_has_child(model, &iterItem) && gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path))
+ {
+ int hasItem = TRUE;
+ gtk_tree_model_iter_children(model, &iterChild, &iterItem); /* get the firstchild */
+
+ while(hasItem)
+ {
+ iterPrev = iterChild;
+
+ /* Go to next sibling item */
+ hasItem = gtk_tree_model_iter_next(model, &iterChild);
+ }
+
+ iterItem = gtkTreeGetLastVisibleNode(ih, model, iterPrev);
+ }
+ gtk_tree_path_free(path);
+
+ return iterItem;
+}
+
+static GtkTreeIter gtkTreeFindNodeID(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem, GtkTreeIter iterNode)
+{
+ GtkTreeIter iterChild;
+ int hasItem = TRUE;
+
+ while(hasItem)
+ {
+ /* ID control to traverse items */
+ ih->data->id_control++;
+
+ /* StateID founded! */
+ if (iterItem.user_data == iterNode.user_data)
+ return iterItem;
+
+ /* Check whether we have child items */
+ if (gtk_tree_model_iter_has_child(model, &iterItem))
+ {
+ gtk_tree_model_iter_children(model, &iterChild, &iterItem); /* get the firstchild */
+ iterChild = gtkTreeFindNodeID(ih, model, iterChild, iterNode);
+
+ /* StateID founded! */
+ if(iterChild.user_data)
+ return iterChild;
+ }
+
+ /* Go to next sibling item */
+ hasItem = gtk_tree_model_iter_next(model, &iterItem);
+ }
+
+ return gtkTreeInvalidIter; /* invalid since gtk_tree_model_iter_next returned false */
+}
+
+static int gtkTreeGetNodeId(Ihandle* ih, GtkTreeIter iterItem)
+{
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterRoot;
+ gtk_tree_model_get_iter_first(model, &iterRoot);
+
+ ih->data->id_control = -1;
+ iterItem = gtkTreeFindNodeID(ih, model, iterRoot, iterItem);
+ if (iterItem.user_data)
+ return ih->data->id_control;
+ else
+ return -1;
+}
+
+static GtkTreeIter gtkTreeFindUserData(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem, void* userdata)
+{
+ GtkTreeIter iterChild;
+ int hasItem = TRUE;
+ void* node_userdata;
+
+ while(hasItem)
+ {
+ /* ID control to traverse items */
+ ih->data->id_control++;
+
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_USERDATA, &node_userdata, -1);
+
+ /* userdata founded! */
+ if (node_userdata == userdata)
+ return iterItem;
+
+ /* Check whether we have child items */
+ if (gtk_tree_model_iter_has_child(model, &iterItem))
+ {
+ gtk_tree_model_iter_children(model, &iterChild, &iterItem); /* get the firstchild */
+ iterChild = gtkTreeFindUserData(ih, model, iterChild, userdata);
+
+ /* userdata founded! */
+ if (iterChild.user_data)
+ return iterChild;
+ }
+
+ /* Go to next sibling item */
+ hasItem = gtk_tree_model_iter_next(model, &iterItem);
+ }
+
+ return gtkTreeInvalidIter; /* invalid since gtk_tree_model_iter_next returned false */
+}
+
+static int gtkTreeGetUserDataId(Ihandle* ih, GtkTreeModel* model, void* userdata)
+{
+ GtkTreeIter iterRoot, iterItem;
+ gtk_tree_model_get_iter_first(model, &iterRoot);
+
+ ih->data->id_control = -1;
+ iterItem = gtkTreeFindUserData(ih, model, iterRoot, userdata);
+ if (iterItem.user_data)
+ return ih->data->id_control;
+ else
+ return -1;
+}
+
+static void gtkTreeCallNodeRemovedRec(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem, IFnis cb)
+{
+ GtkTreeIter iterChild;
+ int hasItem = TRUE;
+ void* node_userdata;
+
+ while(hasItem)
+ {
+ /* ID control to traverse items */
+ ih->data->id_control++;
+
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_USERDATA, &node_userdata, -1);
+
+ cb(ih, ih->data->id_control, (char*)node_userdata);
+
+ /* Check whether we have child items */
+ if (gtk_tree_model_iter_has_child(model, &iterItem))
+ {
+ gtk_tree_model_iter_children(model, &iterChild, &iterItem); /* get the firstchild */
+ gtkTreeCallNodeRemovedRec(ih, model, iterChild, cb);
+ }
+
+ /* Go to next sibling item */
+ hasItem = gtk_tree_model_iter_next(model, &iterItem);
+ }
+}
+
+static void gtkTreeCallNodeRemoved(Ihandle* ih, GtkTreeModel* model, GtkTreeIter *iterItem)
+{
+ IFnis cb = (IFnis)IupGetCallback(ih, "NODEREMOVED_CB");
+ if (cb)
+ {
+ ih->data->id_control = gtkTreeGetNodeId(ih, *iterItem)-1;
+ gtkTreeCallNodeRemovedRec(ih, model, *iterItem, cb);
+ }
+}
+
+static gboolean gtkTreeFindNodeFromID(Ihandle* ih, GtkTreeModel* model, GtkTreeIter *iterItem, int *id)
+{
+ GtkTreeIter iterChild;
+ int hasItem = TRUE;
+
+ while(hasItem)
+ {
+ /* ID control to traverse items */
+ (*id)--;
+
+ /* StateID founded! */
+ if (*id < 0)
+ return TRUE;
+
+ /* Check whether we have child items */
+ if (gtk_tree_model_iter_has_child(model, iterItem))
+ {
+ gtk_tree_model_iter_children(model, &iterChild, iterItem); /* get the firstchild */
+
+ if (gtkTreeFindNodeFromID(ih, model, &iterChild, id))
+ {
+ *iterItem = iterChild;
+ return TRUE;
+ }
+ }
+
+ /* Go to next sibling item */
+ hasItem = gtk_tree_model_iter_next(model, iterItem);
+ }
+
+ return FALSE;
+}
+
+static gboolean gtkTreeFindNodeFromString(Ihandle* ih, GtkTreeModel* model, const char* name_id, GtkTreeIter *iterItem)
+{
+ if (name_id[0])
+ {
+ int id;
+ if (iupStrToInt(name_id, &id))
+ {
+ gtk_tree_model_get_iter_first(model, iterItem);
+ return gtkTreeFindNodeFromID(ih, model, iterItem, &id);
+ }
+ }
+ else
+ {
+ GtkTreePath* path = NULL;
+ gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &path, NULL);
+ if (path)
+ {
+ gtk_tree_model_get_iter(model, iterItem, path);
+ gtk_tree_path_free(path);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+/*****************************************************************************/
+/* MANIPULATING IMAGES */
+/*****************************************************************************/
+static void gtkTreeUpdateImages(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem, int mode)
+{
+ GtkTreeIter iterChild;
+ int hasItem = TRUE;
+ int kind;
+
+ while(hasItem)
+ {
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_KIND, &kind, -1);
+
+ if (kind == ITREE_BRANCH)
+ {
+ if (mode == ITREE_UPDATEIMAGE_EXPANDED)
+ {
+ gboolean has_image_expanded = FALSE;
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_HAS_IMAGE_EXPANDED, &has_image_expanded, -1);
+ if (!has_image_expanded)
+ gtk_tree_store_set(GTK_TREE_STORE(model), &iterItem, IUPGTK_TREE_IMAGE_EXPANDED, ih->data->def_image_expanded, -1);
+ }
+ else if(mode == ITREE_UPDATEIMAGE_COLLAPSED)
+ {
+ gboolean has_image = FALSE;
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_HAS_IMAGE, &has_image, -1);
+ if (!has_image)
+ gtk_tree_store_set(GTK_TREE_STORE(model), &iterItem, IUPGTK_TREE_IMAGE, ih->data->def_image_collapsed, -1);
+ }
+
+ if (gtk_tree_model_iter_has_child(model, &iterItem))
+ {
+
+ /* Recursively traverse child items */
+ gtk_tree_model_iter_children(model, &iterChild, &iterItem);
+ gtkTreeUpdateImages(ih, model, iterChild, mode);
+ }
+ }
+ else
+ {
+ if (mode == ITREE_UPDATEIMAGE_LEAF)
+ {
+ gboolean has_image = FALSE;
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_HAS_IMAGE, &has_image, -1);
+ if (!has_image)
+ gtk_tree_store_set(GTK_TREE_STORE(model), &iterItem, IUPGTK_TREE_IMAGE, ih->data->def_image_leaf, -1);
+ }
+ }
+
+ /* Go to next sibling item */
+ hasItem = gtk_tree_model_iter_next(model, &iterItem);
+ }
+}
+
+static void gtkTreeExpandItem(Ihandle* ih, GtkTreePath* path, int expand)
+{
+ if (expand == -1)
+ expand = !gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path); /* toggle */
+
+ if (expand)
+ gtk_tree_view_expand_row(GTK_TREE_VIEW(ih->handle), path, FALSE);
+ else
+ gtk_tree_view_collapse_row(GTK_TREE_VIEW(ih->handle), path);
+}
+
+int iupgtkGetColor(const char* value, GdkColor *color)
+{
+ unsigned char r, g, b;
+ if (iupStrToRGB(value, &r, &g, &b))
+ {
+ iupgdkColorSet(color, r, g, b);
+ return 1;
+ }
+ return 0;
+}
+
+/*****************************************************************************/
+/* ADDING ITEMS */
+/*****************************************************************************/
+void iupdrvTreeAddNode(Ihandle* ih, const char* name_id, int kind, const char* title, int add)
+{
+ GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)));
+ GtkTreeIter iterPrev, iterNewItem, iterParent;
+ GtkTreePath* path;
+ GdkColor color = {0L,0,0,0};
+ int kindPrev;
+
+ if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterPrev))
+ return;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(store), &iterPrev, IUPGTK_TREE_KIND, &kindPrev, -1);
+
+ if (kindPrev == ITREE_BRANCH && add)
+ gtk_tree_store_insert(store, &iterNewItem, &iterPrev, 0); /* iterPrev is parent of the new item (firstchild of it) */
+ else
+ gtk_tree_store_insert_after(store, &iterNewItem, NULL, &iterPrev); /* iterPrev is sibling of the new item */
+
+ iupgtkGetColor(iupAttribGetStr(ih, "FGCOLOR"), &color);
+
+ /* set the attributes of the new node */
+ gtk_tree_store_set(store, &iterNewItem, IUPGTK_TREE_HAS_IMAGE, FALSE,
+ IUPGTK_TREE_HAS_IMAGE_EXPANDED, FALSE,
+ IUPGTK_TREE_TITLE, iupgtkStrConvertToUTF8(title),
+ IUPGTK_TREE_KIND, kind,
+ IUPGTK_TREE_COLOR, &color, -1);
+
+ if (kind == ITREE_LEAF)
+ gtk_tree_store_set(store, &iterNewItem, IUPGTK_TREE_IMAGE, ih->data->def_image_leaf, -1);
+ else
+ gtk_tree_store_set(store, &iterNewItem, IUPGTK_TREE_IMAGE, ih->data->def_image_collapsed,
+ IUPGTK_TREE_IMAGE_EXPANDED, ih->data->def_image_expanded, -1);
+
+ if (kindPrev == ITREE_BRANCH && add)
+ iterParent = iterPrev;
+ else
+ gtk_tree_model_iter_parent(GTK_TREE_MODEL(store), &iterParent, &iterNewItem);
+
+ /* If this is the first child of the parent, then handle the ADDEXPANDED attribute */
+ if (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), &iterParent) == 1)
+ {
+ int depth;
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iterParent);
+ depth = gtk_tree_path_get_depth(path)-1;
+ if (ih->data->add_expanded || depth==0) /* if this is the first child of the root, expand always */
+ {
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_BRANCHOPEN_CB", "1");
+ gtk_tree_view_expand_row(GTK_TREE_VIEW(ih->handle), path, FALSE);
+ }
+ else
+ gtk_tree_view_collapse_row(GTK_TREE_VIEW(ih->handle), path);
+ gtk_tree_path_free(path);
+ }
+}
+
+static void gtkTreeAddRootNode(Ihandle* ih)
+{
+ GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)));
+ GtkTreePath* path;
+ GtkTreeIter iterRoot;
+ GdkColor color = {0L,0,0,0};
+
+ iupgtkGetColor(iupAttribGetStr(ih, "FGCOLOR"), &color);
+
+ gtk_tree_store_append(store, &iterRoot, NULL); /* root node */
+ gtk_tree_store_set(store, &iterRoot, IUPGTK_TREE_IMAGE, ih->data->def_image_collapsed,
+ IUPGTK_TREE_HAS_IMAGE, FALSE,
+ IUPGTK_TREE_IMAGE_EXPANDED, ih->data->def_image_expanded,
+ IUPGTK_TREE_HAS_IMAGE_EXPANDED, FALSE,
+ IUPGTK_TREE_KIND, ITREE_BRANCH,
+ IUPGTK_TREE_COLOR, &color, -1);
+
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iterRoot);
+ /* MarkStart node */
+ iupAttribSetStr(ih, "_IUPTREE_MARKSTART_NODE", (char*)path);
+
+ /* Set the default VALUE */
+ gtk_tree_view_set_cursor(GTK_TREE_VIEW(ih->handle), path, NULL, FALSE);
+}
+
+/*****************************************************************************/
+/* AUXILIAR FUNCTIONS */
+/*****************************************************************************/
+static void gtkTreeOpenCloseEvent(Ihandle* ih)
+{
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+ GtkTreePath* path;
+ int kind;
+
+ if (!gtkTreeFindNodeFromString(ih, model, "", &iterItem))
+ return;
+
+ path = gtk_tree_model_get_path(model, &iterItem);
+ if (path)
+ {
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_KIND, &kind, -1);
+
+ if (kind == ITREE_LEAF) /* leafs */
+ gtk_tree_view_row_activated(GTK_TREE_VIEW(ih->handle), path, (GtkTreeViewColumn*)iupAttribGet(ih, "_IUPGTK_COLUMN"));
+ else /* branches */
+ gtkTreeExpandItem(ih, path, -1); /* toggle */
+
+ gtk_tree_path_free(path);
+ }
+}
+
+static gboolean gtkTreeSelected_Foreach_Func(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, GList **rowref_list)
+{
+ GtkTreeRowReference *rowref;
+
+ rowref = gtk_tree_row_reference_new(model, path);
+ *rowref_list = g_list_append(*rowref_list, rowref);
+
+ (void)iter;
+ return FALSE; /* do not stop walking the store, call us with next row */
+}
+
+static gboolean gtkTreeSelected_Iter_Func(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, GList **rowref_list)
+{
+ GtkTreeRowReference *rowref;
+ GtkTreeIter iterParent;
+ if (!gtk_tree_model_iter_parent(model, &iterParent, iter)) /* the root node can't be deleted */
+ return FALSE; /* do not stop walking the store, call us with next row */
+
+ rowref = gtk_tree_row_reference_new(model, path);
+ *rowref_list = g_list_append(*rowref_list, rowref);
+
+ return FALSE; /* do not stop walking the store, call us with next row */
+}
+
+/*****************************************************************************/
+/* CALLBACKS */
+/*****************************************************************************/
+static void gtkTreeCallMultiSelectionCb(Ihandle* ih)
+{
+ IFnIi cbMulti = (IFnIi)IupGetCallback(ih, "MULTISELECTION_CB");
+ IFnii cbSelec = (IFnii)IupGetCallback(ih, "SELECTION_CB");
+ if (cbMulti || cbSelec)
+ {
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterRoot;
+ GList *rr_list = NULL;
+ GList *node;
+ int* id_rowItem;
+ int count_selected_rows, i = 0;
+
+ gtk_tree_model_get_iter_first(model, &iterRoot);
+
+ gtk_tree_selection_selected_foreach(selection, (GtkTreeSelectionForeachFunc)gtkTreeSelected_Foreach_Func, &rr_list);
+ count_selected_rows = g_list_length(rr_list);
+ id_rowItem = malloc(sizeof(int) * count_selected_rows);
+
+ for(node = rr_list; node != NULL; node = node->next)
+ {
+ GtkTreePath* path = gtk_tree_row_reference_get_path(node->data);
+ if (path)
+ {
+ GtkTreeIter iterItem;
+ gtk_tree_model_get_iter(model, &iterItem, path);
+
+ id_rowItem[i] = gtkTreeGetNodeId(ih, iterItem);
+ i++;
+
+ gtk_tree_path_free(path);
+ }
+ }
+
+ g_list_foreach(rr_list, (GFunc) gtk_tree_row_reference_free, NULL);
+ g_list_free(rr_list);
+
+ if (cbMulti)
+ cbMulti(ih, id_rowItem, count_selected_rows);
+ else
+ {
+ for (i=0; i<count_selected_rows; i++)
+ cbSelec(ih, id_rowItem[i], 1);
+ }
+
+ free(id_rowItem);
+ }
+}
+
+
+/*****************************************************************************/
+/* GET AND SET ATTRIBUTES */
+/*****************************************************************************/
+
+
+static char* gtkTreeGetIndentationAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(255);
+#if GTK_CHECK_VERSION(2, 12, 0)
+ int indent = gtk_tree_view_get_level_indentation(GTK_TREE_VIEW(ih->handle));
+#else
+ int indent = 0;
+#endif
+ sprintf(str, "%d", indent);
+ return str;
+}
+
+static int gtkTreeSetIndentationAttrib(Ihandle* ih, const char* value)
+{
+#if GTK_CHECK_VERSION(2, 12, 0)
+ int indent;
+ if (iupStrToInt(value, &indent))
+ gtk_tree_view_set_level_indentation(GTK_TREE_VIEW(ih->handle), indent);
+#endif
+ return 0;
+}
+
+static int gtkTreeSetTopItemAttrib(Ihandle* ih, const char* value)
+{
+ GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)));
+ GtkTreeIter iterItem;
+ GtkTreePath* path;
+
+ if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), value, &iterItem))
+ return 0;
+
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iterItem);
+
+ if (!gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path))
+ gtk_tree_view_expand_to_path(GTK_TREE_VIEW(ih->handle), path);
+
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(ih->handle), path, NULL, FALSE, 0, 0); /* scroll to visible */
+
+ gtk_tree_path_free(path);
+
+ return 0;
+}
+
+static int gtkTreeSetSpacingAttrib(Ihandle* ih, const char* value)
+{
+ if(!iupStrToInt(value, &ih->data->spacing))
+ ih->data->spacing = 1;
+
+ if(ih->data->spacing < 1)
+ ih->data->spacing = 1;
+
+ if (ih->handle)
+ {
+ GtkCellRenderer *renderer_img = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER_IMG");
+ GtkCellRenderer *renderer_txt = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER_TEXT");
+ g_object_set(G_OBJECT(renderer_img), "ypad", ih->data->spacing, NULL);
+ g_object_set(G_OBJECT(renderer_txt), "ypad", ih->data->spacing, NULL);
+ return 0;
+ }
+ else
+ return 1; /* store until not mapped, when mapped will be set again */
+}
+
+static int gtkTreeSetExpandAllAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ gtk_tree_view_expand_all(GTK_TREE_VIEW(ih->handle));
+ else
+ {
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterRoot;
+ GtkTreePath* pathRoot;
+
+ gtk_tree_view_collapse_all(GTK_TREE_VIEW(ih->handle));
+
+ /* The root node is always expanded */
+ gtk_tree_model_get_iter_first(model, &iterRoot);
+ pathRoot = gtk_tree_model_get_path(model, &iterRoot);
+ gtk_tree_view_expand_row(GTK_TREE_VIEW(ih->handle), pathRoot, FALSE);
+ gtk_tree_path_free(pathRoot);
+ }
+
+ return 0;
+}
+
+static char* gtkTreeGetDepthAttrib(Ihandle* ih, const char* name_id)
+{
+ char* depth;
+ GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)));
+ GtkTreeIter iterItem;
+ if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem))
+ return NULL;
+
+ depth = iupStrGetMemory(10);
+ sprintf(depth, "%d", gtk_tree_store_iter_depth(store, &iterItem));
+ return depth;
+}
+
+static int gtkTreeSetMoveNodeAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ GtkTreeModel* model;
+ GtkTreeIter iterItemSrc, iterItemDst, iterNewItem;
+ GtkTreeIter iterParent, iterNextParent;
+
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItemSrc))
+ return 0;
+
+ if (!gtkTreeFindNodeFromString(ih, model, value, &iterItemDst))
+ return 0;
+
+ /* If Drag item is an ancestor of Drop item then return */
+ iterParent = iterItemDst;
+ while(gtk_tree_model_iter_parent(model, &iterNextParent, &iterParent))
+ {
+ if (iterNextParent.user_data == iterItemSrc.user_data)
+ return 0;
+ iterParent = iterNextParent;
+ }
+
+ /* Copying the node and its children to the new position */
+ gtkTreeCopyNode(ih, model, &iterItemSrc, &iterItemDst, &iterNewItem, 0); /* not a full copy, preserve user data */
+
+ /* Deleting the node of its old position */
+ /* do not delete the user data, we copy the references in CopyNode */
+ gtk_tree_store_remove(GTK_TREE_STORE(model), &iterItemSrc);
+
+ return 0;
+}
+
+static int gtkTreeSetCopyNodeAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ GtkTreeModel* model;
+ GtkTreeIter iterItemSrc, iterItemDst, iterNewItem;
+ GtkTreeIter iterParent, iterNextParent;
+
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItemSrc))
+ return 0;
+
+ if (!gtkTreeFindNodeFromString(ih, model, value, &iterItemDst))
+ return 0;
+
+ /* If Drag item is an ancestor of Drop item then return */
+ iterParent = iterItemDst;
+ while(gtk_tree_model_iter_parent(model, &iterNextParent, &iterParent))
+ {
+ if (iterNextParent.user_data == iterItemSrc.user_data)
+ return 0;
+ iterParent = iterNextParent;
+ }
+
+ /* Copying the node and its children to the new position */
+ gtkTreeCopyNode(ih, model, &iterItemSrc, &iterItemDst, &iterNewItem, 1);
+
+ return 0;
+}
+
+static char* gtkTreeGetColorAttrib(Ihandle* ih, const char* name_id)
+{
+ char* str;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+ GdkColor *color;
+
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return NULL;
+
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_COLOR, &color, -1);
+ if (!color)
+ return NULL;
+
+ str = iupStrGetMemory(20);
+ sprintf(str, "%d %d %d", iupCOLOR16TO8(color->red),
+ iupCOLOR16TO8(color->green),
+ iupCOLOR16TO8(color->blue));
+ return str;
+}
+
+static int gtkTreeSetColorAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)));
+ GtkTreeIter iterItem;
+ GdkColor color;
+ unsigned char r, g, b;
+
+ if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem))
+ return 0;
+
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ iupgdkColorSet(&color, r, g, b);
+ gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_COLOR, &color, -1);
+
+ return 0;
+}
+
+static char* gtkTreeGetParentAttrib(Ihandle* ih, const char* name_id)
+{
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+ GtkTreeIter iterParent;
+ char* str;
+
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return NULL;
+
+ if (!gtk_tree_model_iter_parent(model, &iterParent, &iterItem))
+ return NULL;
+
+ str = iupStrGetMemory(10);
+ sprintf(str, "%d", gtkTreeGetNodeId(ih, iterParent));
+ return str;
+}
+
+static char* gtkTreeGetChildCountAttrib(Ihandle* ih, const char* name_id)
+{
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+ char* str;
+
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return NULL;
+
+ str = iupStrGetMemory(10);
+ sprintf(str, "%d", gtk_tree_model_iter_n_children(model, &iterItem));
+ return str;
+}
+
+static int gtkTreeCount(GtkTreeModel* model, GtkTreeIter iterBranch)
+{
+ GtkTreeIter iterChild;
+ int count = 0;
+ int hasItem = gtk_tree_model_iter_children(model, &iterChild, &iterBranch); /* get the firstchild */
+ count++;
+ while(hasItem)
+ {
+ count += gtkTreeCount(model, iterChild);
+
+ /* Go to next sibling item */
+ hasItem = gtk_tree_model_iter_next(model, &iterChild);
+ }
+
+ return count;
+}
+
+static char* gtkTreeGetCountAttrib(Ihandle* ih)
+{
+ GtkTreeIter iterRoot;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ char* str = iupStrGetMemory(10);
+ gtk_tree_model_get_iter_first(model, &iterRoot);
+ sprintf(str, "%d", gtkTreeCount(model, iterRoot));
+ return str;
+}
+
+static char* gtkTreeGetKindAttrib(Ihandle* ih, const char* name_id)
+{
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+ int kind;
+
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return NULL;
+
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_KIND, &kind, -1);
+
+ if(!kind)
+ return "BRANCH";
+ else
+ return "LEAF";
+}
+
+static char* gtkTreeGetStateAttrib(Ihandle* ih, const char* name_id)
+{
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return NULL;
+
+ if (gtk_tree_model_iter_has_child(model, &iterItem))
+ {
+ GtkTreePath* path = gtk_tree_model_get_path(model, &iterItem);
+ int expanded = gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path);
+ gtk_tree_path_free(path);
+
+ if (expanded)
+ return "EXPANDED";
+ else
+ return "COLLAPSED";
+ }
+
+ return NULL;
+}
+
+static int gtkTreeSetStateAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+ GtkTreePath* path;
+
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return 0;
+
+ path = gtk_tree_model_get_path(model, &iterItem);
+ gtkTreeExpandItem(ih, path, iupStrEqualNoCase(value, "EXPANDED"));
+ gtk_tree_path_free(path);
+
+ return 0;
+}
+
+static char* gtkTreeGetTitle(GtkTreeModel* model, GtkTreeIter iterItem)
+{
+ char* title;
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_TITLE, &title, -1);
+ return iupgtkStrConvertFromUTF8(title);
+}
+
+static char* gtkTreeGetTitleAttrib(Ihandle* ih, const char* name_id)
+{
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return NULL;
+ return gtkTreeGetTitle(model, iterItem);
+}
+
+static int gtkTreeSetTitleAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)));
+ GtkTreeIter iterItem;
+ if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem))
+ return 0;
+ gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_TITLE, iupgtkStrConvertToUTF8(value), -1);
+ return 0;
+}
+
+static int gtkTreeSetTitleFontAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ PangoFontDescription* fontdesc = NULL;
+ GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)));
+ GtkTreeIter iterItem;
+ if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem))
+ return 0;
+ if (value)
+ fontdesc = iupgtkGetPangoFontDesc(value);
+ gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_FONT, fontdesc, -1);
+ return 0;
+}
+
+static char* gtkTreeGetTitleFontAttrib(Ihandle* ih, const char* name_id)
+{
+ PangoFontDescription* fontdesc;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return NULL;
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_FONT, &fontdesc, -1);
+ return pango_font_description_to_string(fontdesc);
+}
+
+static char* gtkTreeGetFindUserDataAttrib(Ihandle* ih, const char* name_id)
+{
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ int id;
+ char* str = (char*)(name_id+1); /* skip ':' */
+ void* userdata = NULL;
+ if (sscanf(str, "%p", &userdata)!=1)
+ return NULL;
+ id = gtkTreeGetUserDataId(ih, model, userdata);
+ if (id == -1)
+ return NULL;
+ str = iupStrGetMemory(16);
+ sprintf(str, "%d", id);
+ return str;
+}
+
+static char* gtkTreeGetUserDataAttrib(Ihandle* ih, const char* name_id)
+{
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+ char* userdata;
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return NULL;
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_USERDATA, &userdata, -1);
+ return userdata;
+}
+
+static int gtkTreeSetUserDataAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)));
+ GtkTreeIter iterItem;
+ if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem))
+ return 0;
+ gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_USERDATA, value, -1);
+ return 0;
+}
+
+static char* gtkTreeGetValueAttrib(Ihandle* ih)
+{
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreePath* path = NULL;
+ char* str;
+
+ gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &path, NULL);
+ if (path)
+ {
+ GtkTreeIter iterItem;
+ gtk_tree_model_get_iter(model, &iterItem, path);
+ gtk_tree_path_free(path);
+
+ str = iupStrGetMemory(16);
+ sprintf(str, "%d", gtkTreeGetNodeId(ih, iterItem));
+ return str;
+ }
+
+ return "0"; /* default VALUE is root */
+}
+
+static int gtkTreeSetMarkAttrib(Ihandle* ih, const char* value)
+{
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterRoot;
+
+ if (ih->data->mark_mode==ITREE_MARK_SINGLE)
+ return 0;
+
+ gtk_tree_model_get_iter_first(model, &iterRoot);
+
+ if(iupStrEqualNoCase(value, "BLOCK"))
+ {
+ GtkTreePath* pathFocus;
+ gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &pathFocus, NULL);
+ gtk_tree_selection_select_range(selection, (GtkTreePath*)iupAttribGet(ih, "_IUPTREE_MARKSTART_NODE"), pathFocus);
+ gtk_tree_path_free(pathFocus);
+ }
+ else if(iupStrEqualNoCase(value, "CLEARALL"))
+ gtk_tree_selection_unselect_all(selection);
+ else if(iupStrEqualNoCase(value, "MARKALL"))
+ gtk_tree_selection_select_all(selection);
+ else if(iupStrEqualNoCase(value, "INVERTALL")) /* INVERTALL *MUST* appear before INVERT, or else INVERTALL will never be called. */
+ gtkTreeInvertAllNodeMarking(ih, model, selection, &iterRoot);
+ else if(iupStrEqualPartial(value, "INVERT"))
+ {
+ /* iupStrEqualPartial allows the use of "INVERTid" form */
+ GtkTreeIter iterItem;
+ if (!gtkTreeFindNodeFromString(ih, model, &value[strlen("INVERT")], &iterItem))
+ return 0;
+
+ if(gtk_tree_selection_iter_is_selected(selection, &iterItem))
+ gtk_tree_selection_unselect_iter(selection, &iterItem);
+ else
+ gtk_tree_selection_select_iter(selection, &iterItem);
+ }
+ else
+ {
+ GtkTreePath *path1, *path2;
+ GtkTreeIter iterItem1, iterItem2;
+ char str1[50], str2[50];
+ if (iupStrToStrStr(value, str1, str2, '-')!=2)
+ return 0;
+
+ if (!gtkTreeFindNodeFromString(ih, model, str1, &iterItem1))
+ return 0;
+ if (!gtkTreeFindNodeFromString(ih, model, str2, &iterItem2))
+ return 0;
+
+ path1 = gtk_tree_model_get_path(model, &iterItem1);
+ path2 = gtk_tree_model_get_path(model, &iterItem2);
+ gtk_tree_selection_select_range(selection, path1, path2);
+ gtk_tree_path_free(path1);
+ gtk_tree_path_free(path2);
+ }
+
+ return 1;
+}
+
+static int gtkTreeSetValueAttrib(Ihandle* ih, const char* value)
+{
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterRoot, iterItem;
+ GtkTreePath* path;
+
+ if (gtkTreeSetMarkAttrib(ih, value))
+ return 0;
+
+ gtk_tree_model_get_iter_first(model, &iterRoot);
+
+ if (iupStrEqualNoCase(value, "ROOT"))
+ iterItem = iterRoot;
+ else if(iupStrEqualNoCase(value, "LAST"))
+ iterItem = gtkTreeGetLastVisibleNode(ih, model, iterRoot);
+ else if(iupStrEqualNoCase(value, "PGUP"))
+ {
+ GtkTreeIter iterPrev;
+
+ GtkTreePath* pathFocus;
+ gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &pathFocus, NULL);
+ gtk_tree_model_get_iter(model, &iterPrev, pathFocus);
+ gtk_tree_path_free(pathFocus);
+
+ ih->data->id_control = -1;
+ gtkTreeFindVisibleNodeId(ih, model, iterRoot, iterPrev);
+ ih->data->id_control -= 10; /* less 10 visible nodes */
+
+ if(ih->data->id_control < 0)
+ ih->data->id_control = 0; /* Begin of tree = Root id */
+
+ iterItem = gtkTreeFindVisibleNodeFromId(ih, model, iterRoot);
+ }
+ else if(iupStrEqualNoCase(value, "PGDN"))
+ {
+ GtkTreeIter iterNext;
+
+ GtkTreePath* pathFocus;
+ gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &pathFocus, NULL);
+ gtk_tree_model_get_iter(model, &iterNext, pathFocus);
+ gtk_tree_path_free(pathFocus);
+
+ ih->data->id_control = -1;
+ gtkTreeFindVisibleNodeId(ih, model, iterRoot, iterNext);
+ ih->data->id_control += 10; /* more 10 visible nodes */
+
+ iterNext = gtkTreeFindVisibleNodeFromId(ih, model, iterRoot);
+
+ if (ih->data->id_control >= 0)
+ iterNext = gtkTreeGetLastVisibleNode(ih, model, iterRoot);
+
+ iterItem = iterNext;
+ }
+ else if(iupStrEqualNoCase(value, "NEXT"))
+ {
+ GtkTreeIter iterNext;
+
+ GtkTreePath* pathFocus;
+ gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &pathFocus, NULL);
+ gtk_tree_model_get_iter(model, &iterNext, pathFocus);
+ gtk_tree_path_free(pathFocus);
+
+ ih->data->id_control = -1;
+ gtkTreeFindVisibleNodeId(ih, model, iterRoot, iterNext);
+ ih->data->id_control++; /* more 1 visible node */
+
+ iterNext = gtkTreeFindVisibleNodeFromId(ih, model, iterRoot);
+
+ if (ih->data->id_control >= 0)
+ iterNext = gtkTreeGetLastVisibleNode(ih, model, iterRoot);
+
+ iterItem = iterNext;
+ }
+ else if(iupStrEqualNoCase(value, "PREVIOUS"))
+ {
+ GtkTreeIter iterPrev;
+
+ GtkTreePath* pathFocus;
+ gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &pathFocus, NULL);
+ gtk_tree_model_get_iter(model, &iterPrev, pathFocus);
+ gtk_tree_path_free(pathFocus);
+
+ ih->data->id_control = -1;
+ gtkTreeFindVisibleNodeId(ih, model, iterRoot, iterPrev);
+ ih->data->id_control--; /* less 1 visible node */
+
+ if (ih->data->id_control < 0)
+ ih->data->id_control = 0;
+
+ iterItem = gtkTreeFindVisibleNodeFromId(ih, model, iterRoot);
+ if (!iterItem.user_data)
+ return 0;
+ }
+ else
+ {
+ if (!gtkTreeFindNodeFromString(ih, model, value, &iterItem))
+ return 0;
+ }
+
+ /* select */
+ if (ih->data->mark_mode==ITREE_MARK_SINGLE)
+ {
+ iupAttribSetStr(ih, "_IUP_IGNORE_SELECTION", "1");
+ gtk_tree_selection_select_iter(selection, &iterItem);
+ }
+
+ path = gtk_tree_model_get_path(model, &iterItem);
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(ih->handle), path, NULL, FALSE, 0, 0); /* scroll to visible */
+ gtk_tree_view_set_cursor(GTK_TREE_VIEW(ih->handle), path, NULL, FALSE); /* set focus */
+ gtk_tree_path_free(path);
+
+ iupAttribSetInt(ih, "_IUPTREE_OLDVALUE", gtkTreeGetNodeId(ih, iterItem));
+
+ return 0;
+}
+
+static int gtkTreeSetMarkStartAttrib(Ihandle* ih, const char* name_id)
+{
+ GtkTreePath *pathMarkStart, *pathMarkStartPrev;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return 0;
+
+ pathMarkStart = gtk_tree_model_get_path(model, &iterItem);
+
+ pathMarkStartPrev = (GtkTreePath*)iupAttribGet(ih, "_IUPTREE_MARKSTART_NODE");
+ if (pathMarkStartPrev)
+ gtk_tree_path_free(pathMarkStartPrev);
+
+ iupAttribSetStr(ih, "_IUPTREE_MARKSTART_NODE", (char*)pathMarkStart);
+
+ return 1;
+}
+
+static char* gtkTreeGetMarkedAttrib(Ihandle* ih, const char* name_id)
+{
+ GtkTreeSelection* selection;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return 0;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+ if (gtk_tree_selection_iter_is_selected(selection, &iterItem))
+ return "YES";
+ else
+ return "NO";
+}
+
+static int gtkTreeSetMarkedAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ GtkTreeSelection* selection;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return 0;
+
+ iupAttribSetStr(ih, "_IUP_IGNORE_SELECTION", "1");
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+ if (iupStrBoolean(value))
+ gtk_tree_selection_select_iter(selection, &iterItem);
+ else
+ gtk_tree_selection_unselect_iter(selection, &iterItem);
+
+ return 0;
+}
+
+static int gtkTreeSetDelNodeAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ if (iupStrEqualNoCase(value, "SELECTED")) /* selected here means the specified one */
+ {
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem;
+ GtkTreeIter iterParent;
+
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return 0;
+
+ if (!gtk_tree_model_iter_parent(model, &iterParent, &iterItem)) /* the root node can't be deleted */
+ return 0;
+
+ gtkTreeCallNodeRemoved(ih, model, &iterItem);
+
+ /* deleting the specified node (and it's children) */
+ gtk_tree_store_remove(GTK_TREE_STORE(model), &iterItem);
+ }
+ else if(iupStrEqualNoCase(value, "CHILDREN")) /* children of the specified one */
+ {
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeIter iterItem, iterChild;
+ int hasChildren;
+
+ if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem))
+ return 0;
+
+ hasChildren = gtk_tree_model_iter_children(model, &iterChild, &iterItem);
+
+ /* deleting the selected node's children */
+ while(hasChildren)
+ {
+ gtkTreeCallNodeRemoved(ih, model, &iterChild);
+ hasChildren = gtk_tree_store_remove(GTK_TREE_STORE(model), &iterChild);
+ }
+ }
+ else if(iupStrEqualNoCase(value, "MARKED")) /* Delete the array of marked nodes */
+ {
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+ GList *rr_list = NULL;
+ GList *node;
+
+ gtk_tree_selection_selected_foreach(selection, (GtkTreeSelectionForeachFunc)gtkTreeSelected_Iter_Func, &rr_list);
+
+ for(node = rr_list; node != NULL; node = node->next)
+ {
+ GtkTreePath* path = gtk_tree_row_reference_get_path(node->data);
+ if (path)
+ {
+ GtkTreeIter iterItem;
+ if (gtk_tree_model_get_iter(model, &iterItem, path))
+ {
+ gtkTreeCallNodeRemoved(ih, model, &iterItem);
+ gtk_tree_store_remove(GTK_TREE_STORE(model), &iterItem);
+ }
+ gtk_tree_path_free(path);
+ }
+ gtk_tree_row_reference_free(node->data);
+ }
+ g_list_free(rr_list);
+ }
+
+ return 0;
+}
+
+static int gtkTreeSetRenameAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->show_rename)
+ {
+ GtkTreePath* path;
+ IFni cbShowRename = (IFni)IupGetCallback(ih, "SHOWRENAME_CB");
+ GtkTreeViewColumn *focus_column;
+
+ gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &path, &focus_column);
+
+ if (cbShowRename)
+ {
+ GtkTreeIter iterItem;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ gtk_tree_model_get_iter(model, &iterItem, path);
+ cbShowRename(ih, gtkTreeGetNodeId(ih, iterItem));
+ }
+
+ gtk_tree_view_set_cursor(GTK_TREE_VIEW(ih->handle), path, focus_column, TRUE);
+ gtk_tree_path_free(path);
+ }
+ else
+ {
+ IFnis cbRenameNode = (IFnis)IupGetCallback(ih, "RENAMENODE_CB");
+ if (cbRenameNode)
+ {
+ GtkTreePath* path;
+ GtkTreeIter iterItem;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &path, NULL);
+ gtk_tree_model_get_iter(model, &iterItem, path);
+ gtk_tree_path_free(path);
+ cbRenameNode(ih, gtkTreeGetNodeId(ih, iterItem), gtkTreeGetTitle(model, iterItem));
+ }
+ }
+
+ (void)value;
+ return 0;
+}
+
+static int gtkTreeSetImageExpandedAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int kind;
+ GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)));
+ GdkPixbuf* pixExpand = iupImageGetImage(value, ih, 0);
+ GtkTreeIter iterItem;
+ if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem))
+ return 0;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(store), &iterItem, IUPGTK_TREE_KIND, &kind, -1);
+
+ if (kind == ITREE_BRANCH)
+ {
+ if (pixExpand)
+ gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_IMAGE_EXPANDED, pixExpand,
+ IUPGTK_TREE_HAS_IMAGE_EXPANDED, TRUE, -1);
+ else
+ gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_IMAGE_EXPANDED, ih->data->def_image_expanded,
+ IUPGTK_TREE_HAS_IMAGE_EXPANDED, FALSE, -1);
+ }
+
+ return 1;
+}
+
+static int gtkTreeSetImageAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)));
+ GdkPixbuf* pixImage = iupImageGetImage(value, ih, 0);
+ GtkTreeIter iterItem;
+ if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem))
+ return 0;
+
+ if (pixImage)
+ {
+ gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_IMAGE, pixImage,
+ IUPGTK_TREE_HAS_IMAGE, TRUE, -1);
+ }
+ else
+ {
+ int kind;
+ gtk_tree_model_get(GTK_TREE_MODEL(store), &iterItem, IUPGTK_TREE_KIND, &kind, -1);
+ if (kind == ITREE_BRANCH)
+ gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_IMAGE, ih->data->def_image_collapsed,
+ IUPGTK_TREE_HAS_IMAGE, FALSE, -1);
+ else
+ gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_IMAGE, ih->data->def_image_leaf,
+ IUPGTK_TREE_HAS_IMAGE, FALSE, -1);
+ }
+
+ return 1;
+}
+
+static int gtkTreeSetImageBranchExpandedAttrib(Ihandle* ih, const char* value)
+{
+ GtkTreeIter iterRoot;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ ih->data->def_image_expanded = iupImageGetImage(value, ih, 0);
+
+ gtk_tree_model_get_iter_first(model, &iterRoot);
+
+ /* Update all images, starting at root node */
+ gtkTreeUpdateImages(ih, model, iterRoot, ITREE_UPDATEIMAGE_EXPANDED);
+
+ return 1;
+}
+
+static int gtkTreeSetImageBranchCollapsedAttrib(Ihandle* ih, const char* value)
+{
+ GtkTreeIter iterRoot;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ ih->data->def_image_collapsed = iupImageGetImage(value, ih, 0);
+
+ gtk_tree_model_get_iter_first(model, &iterRoot);
+
+ /* Update all images, starting at root node */
+ gtkTreeUpdateImages(ih, model, iterRoot, ITREE_UPDATEIMAGE_COLLAPSED);
+
+ return 1;
+}
+
+static int gtkTreeSetImageLeafAttrib(Ihandle* ih, const char* value)
+{
+ GtkTreeIter iterRoot;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ ih->data->def_image_leaf = iupImageGetImage(value, ih, 0);
+
+ gtk_tree_model_get_iter_first(model, &iterRoot);
+
+ /* Update all images, starting at root node */
+ gtkTreeUpdateImages(ih, model, iterRoot, ITREE_UPDATEIMAGE_LEAF);
+
+ return 1;
+}
+
+static int gtkTreeSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+
+ GtkScrolledWindow* scrolled_window = (GtkScrolledWindow*)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (scrolled_window)
+ {
+ /* ignore given value, must use only from parent for the scrollbars */
+ char* parent_value = iupBaseNativeParentGetBgColor(ih);
+
+ if (iupStrToRGB(parent_value, &r, &g, &b))
+ {
+ GtkWidget* sb;
+
+ if (!GTK_IS_SCROLLED_WINDOW(scrolled_window))
+ scrolled_window = (GtkScrolledWindow*)iupAttribGet(ih, "_IUPGTK_SCROLLED_WINDOW");
+
+ iupgtkBaseSetBgColor((GtkWidget*)scrolled_window, r, g, b);
+
+#if GTK_CHECK_VERSION(2, 8, 0)
+ sb = gtk_scrolled_window_get_hscrollbar(scrolled_window);
+ if (sb) iupgtkBaseSetBgColor(sb, r, g, b);
+
+ sb = gtk_scrolled_window_get_vscrollbar(scrolled_window);
+ if (sb) iupgtkBaseSetBgColor(sb, r, g, b);
+#endif
+ }
+ }
+
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ {
+ GtkCellRenderer* renderer_txt = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER_TEXT");
+ GtkCellRenderer* renderer_img = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER_IMG");
+ GdkColor color;
+ iupgdkColorSet(&color, r, g, b);
+ g_object_set(G_OBJECT(renderer_txt), "cell-background-gdk", &color, NULL);
+ g_object_set(G_OBJECT(renderer_img), "cell-background-gdk", &color, NULL);
+ }
+
+ iupdrvBaseSetBgColorAttrib(ih, value); /* use given value for contents */
+
+ /* no need to update internal image cache in GTK */
+
+ return 1;
+}
+
+static int gtkTreeSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ iupgtkBaseSetFgColor(ih->handle, r, g, b);
+
+ {
+ GtkCellRenderer* renderer_txt = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER_TEXT");
+ GdkColor color;
+ iupgdkColorSet(&color, r, g, b);
+ g_object_set(G_OBJECT(renderer_txt), "foreground-gdk", &color, NULL);
+ g_object_get(G_OBJECT(renderer_txt), "foreground-gdk", &color, NULL);
+ color.blue = 0;
+ }
+
+ return 1;
+}
+
+void iupdrvTreeUpdateMarkMode(Ihandle *ih)
+{
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+ gtk_tree_selection_set_mode(selection, (ih->data->mark_mode==ITREE_MARK_SINGLE)? GTK_SELECTION_SINGLE: GTK_SELECTION_MULTIPLE);
+
+ if (ih->data->mark_mode==ITREE_MARK_MULTIPLE && !ih->data->show_dragdrop)
+ {
+#if GTK_CHECK_VERSION(2, 10, 0)
+ gtk_tree_view_set_rubber_banding(GTK_TREE_VIEW(ih->handle), TRUE);
+#endif
+ }
+}
+
+
+/***********************************************************************************************/
+
+
+static void gtkTreeSetRenameCaretPos(GtkCellEditable *editable, const char* value)
+{
+ int pos = 1;
+
+ if (iupStrToInt(value, &pos))
+ {
+ if (pos < 1) pos = 1;
+ pos--; /* IUP starts at 1 */
+
+ gtk_editable_set_position(GTK_EDITABLE(editable), pos);
+ }
+}
+
+static void gtkTreeSetRenameSelectionPos(GtkCellEditable *editable, const char* value)
+{
+ int start = 1, end = 1;
+
+ if (iupStrToIntInt(value, &start, &end, ':') != 2)
+ return;
+
+ if(start < 1 || end < 1)
+ return;
+
+ start--; /* IUP starts at 1 */
+ end--;
+
+ gtk_editable_select_region(GTK_EDITABLE(editable), start, end);
+}
+
+/*****************************************************************************/
+/* SIGNALS */
+/*****************************************************************************/
+
+static void gtkTreeCellTextEditingStarted(GtkCellRenderer *cell, GtkCellEditable *editable, const gchar *path_string, Ihandle *ih)
+{
+ char* value;
+ GtkTreeIter iterItem;
+ PangoFontDescription* fontdesc = NULL;
+ GdkColor *color = NULL;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+
+ value = iupAttribGetStr(ih, "RENAMECARET");
+ if (value)
+ gtkTreeSetRenameCaretPos(editable, value);
+
+ value = iupAttribGetStr(ih, "RENAMESELECTION");
+ if (value)
+ gtkTreeSetRenameSelectionPos(editable, value);
+
+ gtk_tree_model_get_iter_from_string(model, &iterItem, path_string);
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_FONT, &fontdesc, -1);
+ if (fontdesc)
+ gtk_widget_modify_font(GTK_WIDGET(editable), fontdesc);
+
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_COLOR, &color, -1);
+ if (color)
+ iupgtkBaseSetFgGdkColor(GTK_WIDGET(editable), color);
+
+ (void)cell;
+}
+
+static void gtkTreeCellTextEdited(GtkCellRendererText *cell, gchar *path_string, gchar *new_text, Ihandle* ih)
+{
+ GtkTreeModel* model;
+ GtkTreeIter iterItem;
+ IFnis cbRename;
+
+ if (!new_text)
+ return;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ if (!gtk_tree_model_get_iter_from_string(model, &iterItem, path_string))
+ return;
+
+ cbRename = (IFnis)IupGetCallback(ih, "RENAME_CB");
+ if (cbRename)
+ {
+ if (cbRename(ih, gtkTreeGetNodeId(ih, iterItem), iupgtkStrConvertFromUTF8(new_text)) == IUP_IGNORE)
+ return;
+ }
+
+ /* It is the responsibility of the application to update the model and store new_text at the position indicated by path. */
+ gtk_tree_store_set(GTK_TREE_STORE(model), &iterItem, IUPGTK_TREE_TITLE, new_text, -1);
+
+ (void)cell;
+}
+
+static int gtkTreeCallDragDropCb(Ihandle* ih, GtkTreeIter *iterDrag, GtkTreeIter *iterDrop, int *is_ctrl)
+{
+ IFniiii cbDragDrop = (IFniiii)IupGetCallback(ih, "DRAGDROP_CB");
+ int is_shift = 0;
+ char key[5];
+ iupdrvGetKeyState(key);
+ if (key[0] == 'S')
+ is_shift = 1;
+ if (key[1] == 'C')
+ *is_ctrl = 1;
+ else
+ *is_ctrl = 0;
+
+ if (cbDragDrop)
+ {
+ int drag_id = gtkTreeGetNodeId(ih, *iterDrag);
+ int drop_id = gtkTreeGetNodeId(ih, *iterDrop);
+ return cbDragDrop(ih, drag_id, drop_id, is_shift, *is_ctrl);
+ }
+
+ return IUP_CONTINUE; /* allow to move by default if callback not defined */
+}
+
+static void gtkTreeDragDataReceived(GtkWidget *widget, GdkDragContext *context, gint x, gint y,
+ GtkSelectionData *selection_data, guint info, guint time, Ihandle* ih)
+{
+ GtkTreePath* pathDrag = (GtkTreePath*)iupAttribGet(ih, "_IUPTREE_DRAGITEM");
+ GtkTreePath* pathDrop = (GtkTreePath*)iupAttribGet(ih, "_IUPTREE_DROPITEM");
+ int accepted = FALSE;
+ int is_ctrl;
+
+ if (pathDrag && pathDrop)
+ {
+ GtkTreeIter iterDrag, iterDrop, iterParent, iterNextParent;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+
+ gtk_tree_model_get_iter(model, &iterDrag, pathDrag);
+ gtk_tree_model_get_iter(model, &iterDrop, pathDrop);
+
+ iterParent = iterDrop;
+ while(gtk_tree_model_iter_parent(model, &iterNextParent, &iterParent))
+ {
+ if (iterNextParent.user_data == iterDrag.user_data)
+ goto gtkTreeDragDataReceived_FINISH;
+ iterParent = iterNextParent;
+ }
+
+ accepted = TRUE;
+
+ if (gtkTreeCallDragDropCb(ih, &iterDrag, &iterDrop, &is_ctrl) == IUP_CONTINUE)
+ {
+ GtkTreeIter iterNewItem;
+
+ /* Copy the dragged item to the new position. */
+ gtkTreeCopyNode(ih, model, &iterDrag, &iterDrop, &iterNewItem, is_ctrl);
+
+ if (!is_ctrl)
+ {
+ /* do not delete the user data, we copy the references in CopyNode */
+ gtk_tree_store_remove(GTK_TREE_STORE(model), &iterDrag);
+ }
+
+ /* set focus and selection */
+ {
+ GtkTreePath *pathNew;
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+
+ pathNew = gtk_tree_model_get_path(model, &iterNewItem);
+ gtk_tree_selection_select_path(selection, pathNew);
+
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(ih->handle), pathNew, NULL, FALSE, 0, 0);
+ gtk_tree_view_set_cursor(GTK_TREE_VIEW(ih->handle), pathNew, NULL, FALSE);
+
+ gtk_tree_path_free(pathNew);
+ }
+ }
+ }
+
+gtkTreeDragDataReceived_FINISH:
+ if (pathDrag) gtk_tree_path_free(pathDrag);
+ if (pathDrop) gtk_tree_path_free(pathDrop);
+
+ iupAttribSetStr(ih, "_IUPTREE_DRAGITEM", NULL);
+ iupAttribSetStr(ih, "_IUPTREE_DROPITEM", NULL);
+
+ gtk_drag_finish(context, accepted, (context->action == GDK_ACTION_MOVE), time);
+
+ (void)widget;
+ (void)info;
+ (void)x;
+ (void)y;
+ (void)selection_data;
+}
+
+static gboolean gtkTreeDragDrop(GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time, Ihandle* ih)
+{
+ GtkTreePath* path;
+ GtkTreeViewDropPosition pos;
+ GdkAtom target = GDK_NONE;
+
+ /* unset any highlight row */
+ gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW(widget), NULL, GTK_TREE_VIEW_DROP_BEFORE);
+
+ if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(ih->handle), x, y, &path, &pos))
+ {
+ if ((pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE || pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER) &&
+ (gtk_tree_path_compare(path, (GtkTreePath*)iupAttribGet(ih, "_IUPTREE_DRAGITEM")) != 0))
+ {
+ target = gtk_drag_dest_find_target(widget, context, gtk_drag_dest_get_target_list(widget));
+ if (target != GDK_NONE)
+ {
+ iupAttribSetStr(ih, "_IUPTREE_DROPITEM", (char*)path);
+ gtk_drag_get_data(widget, context, target, time);
+ return TRUE;
+ }
+ }
+ }
+
+ (void)widget;
+ return FALSE;
+}
+
+static void gtkTreeDragLeave(GtkWidget *widget, GdkDragContext *context, guint time)
+{
+ /* unset any highlight row */
+ gtk_tree_view_set_drag_dest_row(GTK_TREE_VIEW(widget), NULL, GTK_TREE_VIEW_DROP_BEFORE);
+ (void)context;
+ (void)time;
+}
+
+static gboolean gtkTreeDragMotion(GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time, Ihandle* ih)
+{
+ GtkTreePath* path;
+ GtkTreeViewDropPosition pos;
+ GtkTreePath* pathDrag = (GtkTreePath*)iupAttribGet(ih, "_IUPTREE_DRAGITEM");
+ if (pathDrag && gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(ih->handle), x, y, &path, &pos))
+ {
+ if ((pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE || pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER) &&
+ (gtk_tree_path_compare(path, pathDrag) != 0))
+ {
+ gtk_tree_view_set_drag_dest_row(GTK_TREE_VIEW(widget), path, pos);
+ gdk_drag_status(context, context->actions, time);
+ return TRUE;
+ }
+
+ gtk_tree_path_free(path);
+ }
+
+ (void)widget;
+ return FALSE;
+}
+
+static void gtkTreeDragBegin(GtkWidget *widget, GdkDragContext *context, Ihandle* ih)
+{
+ int x = iupAttribGetInt(ih, "_IUPTREE_DRAG_X");
+ int y = iupAttribGetInt(ih, "_IUPTREE_DRAG_Y");
+ GtkTreePath* path;
+ GtkTreeViewDropPosition pos;
+ if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(ih->handle), x, y, &path, &pos))
+ {
+ if ((pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE || pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER))
+ {
+ GdkPixmap* pixmap;
+ iupAttribSetStr(ih, "_IUPTREE_DRAGITEM", (char*)path);
+
+ pixmap = gtk_tree_view_create_row_drag_icon(GTK_TREE_VIEW(ih->handle), path);
+ gtk_drag_source_set_icon(widget, gtk_widget_get_colormap(widget), pixmap, NULL);
+ g_object_unref(pixmap);
+ return;
+ }
+ }
+
+ (void)context;
+ (void)widget;
+}
+
+static void gtkTreeSelectionChanged(GtkTreeSelection* selection, Ihandle* ih)
+{
+ IFnii cbSelec;
+ int is_ctrl = 0;
+
+ if (ih->data->mark_mode == ITREE_MARK_MULTIPLE)
+ {
+ char key[5];
+ iupdrvGetKeyState(key);
+ if (key[0] == 'S')
+ return;
+ else if (key[1] == 'C')
+ is_ctrl = 1;
+
+ if (iupAttribGetInt(ih, "_IUPTREE_EXTENDSELECT")==2 && !is_ctrl)
+ {
+ iupAttribSetStr(ih, "_IUPTREE_EXTENDSELECT", NULL);
+ gtkTreeCallMultiSelectionCb(ih);
+ return;
+ }
+ }
+
+ cbSelec = (IFnii)IupGetCallback(ih, "SELECTION_CB");
+ if (cbSelec)
+ {
+ int curpos = -1, is_selected = 0;
+
+ if (iupAttribGet(ih, "_IUP_IGNORE_SELECTION"))
+ {
+ iupAttribSetStr(ih, "_IUP_IGNORE_SELECTION", NULL);
+ return;
+ }
+
+ {
+ GtkTreeIter iterFocus;
+ GtkTreePath* pathFocus;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &pathFocus, NULL);
+ if (pathFocus)
+ {
+ gtk_tree_model_get_iter(model, &iterFocus, pathFocus);
+ gtk_tree_path_free(pathFocus);
+ curpos = gtkTreeGetNodeId(ih, iterFocus);
+ is_selected = gtk_tree_selection_iter_is_selected(selection, &iterFocus);
+ }
+ }
+
+ if (curpos == -1)
+ return;
+
+ if (is_ctrl)
+ cbSelec(ih, curpos, is_selected);
+ else
+ {
+ int oldpos = iupAttribGetInt(ih, "_IUPTREE_OLDVALUE");
+ if(oldpos != curpos)
+ {
+ cbSelec(ih, oldpos, 0); /* unselected */
+ cbSelec(ih, curpos, 1); /* selected */
+
+ iupAttribSetInt(ih, "_IUPTREE_OLDVALUE", curpos);
+ }
+ }
+ }
+}
+
+static gboolean gtkTreeTestExpandRow(GtkTreeView* tree_view, GtkTreeIter *iterItem, GtkTreePath *path, Ihandle* ih)
+{
+ IFni cbBranchOpen = (IFni)IupGetCallback(ih, "BRANCHOPEN_CB");
+ if (cbBranchOpen)
+ {
+ if (iupAttribGet(ih, "_IUPTREE_IGNORE_BRANCHOPEN_CB"))
+ {
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_BRANCHOPEN_CB", NULL);
+ return FALSE;
+ }
+
+ if (cbBranchOpen(ih, gtkTreeGetNodeId(ih, *iterItem)) == IUP_IGNORE)
+ return TRUE; /* prevent the change */
+ }
+
+ (void)path;
+ (void)tree_view;
+ return FALSE;
+}
+
+static gboolean gtkTreeTestCollapseRow(GtkTreeView* tree_view, GtkTreeIter *iterItem, GtkTreePath *path, Ihandle* ih)
+{
+ IFni cbBranchClose = (IFni)IupGetCallback(ih, "BRANCHCLOSE_CB");
+ if (cbBranchClose)
+ {
+ if (cbBranchClose(ih, gtkTreeGetNodeId(ih, *iterItem)) == IUP_IGNORE)
+ return TRUE;
+ }
+
+ (void)path;
+ (void)tree_view;
+ return FALSE;
+}
+
+static void gtkTreeRowActived(GtkTreeView* tree_view, GtkTreePath *path, GtkTreeViewColumn *column, Ihandle* ih)
+{
+ GtkTreeIter iterItem;
+ GtkTreeModel* model;
+ int kind; /* used for nodes defined as branches, but do not have children */
+ IFni cbExecuteLeaf = (IFni)IupGetCallback(ih, "EXECUTELEAF_CB");
+ if (!cbExecuteLeaf)
+ return;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ gtk_tree_model_get_iter(model, &iterItem, path);
+ gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_KIND, &kind, -1);
+
+ /* just to leaf nodes */
+ if(gtk_tree_model_iter_has_child(model, &iterItem) == 0 && kind == ITREE_LEAF)
+ cbExecuteLeaf(ih, gtkTreeGetNodeId(ih, iterItem));
+
+ (void)column;
+ (void)tree_view;
+}
+
+static int gtkTreeConvertXYToPos(Ihandle* ih, int x, int y)
+{
+ GtkTreePath* path;
+ if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(ih->handle), x, y, &path, NULL))
+ {
+ GtkTreeIter iterItem;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ gtk_tree_model_get_iter(model, &iterItem, path);
+ gtk_tree_path_free (path);
+ return gtkTreeGetNodeId(ih, iterItem);
+ }
+ return -1;
+}
+
+static gboolean gtkTreeButtonEvent(GtkWidget *treeview, GdkEventButton *evt, Ihandle* ih)
+{
+ if (iupgtkButtonEvent(treeview, evt, ih) == TRUE)
+ return TRUE;
+
+ if (evt->type == GDK_BUTTON_PRESS && evt->button == 3) /* right single click */
+ {
+ IFni cbRightClick = (IFni)IupGetCallback(ih, "RIGHTCLICK_CB");
+ if (cbRightClick)
+ {
+ int id = gtkTreeConvertXYToPos(ih, (int)evt->x, (int)evt->y);
+ if (id != -1)
+ cbRightClick(ih, id);
+ return TRUE;
+ }
+ }
+ else if (evt->type == GDK_2BUTTON_PRESS && evt->button == 1) /* left double click */
+ {
+ GtkTreePath *path;
+
+ if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeview), (gint) evt->x, (gint) evt->y, &path, NULL, NULL, NULL))
+ {
+ GtkTreeIter iter;
+ GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle));
+ int kind; /* used for nodes defined as branches, but do not have children */
+
+ gtk_tree_model_get_iter(model, &iter, path);
+ gtk_tree_model_get(model, &iter, IUPGTK_TREE_KIND, &kind, -1);
+
+ if (kind == ITREE_BRANCH)
+ gtkTreeExpandItem(ih, path, -1); /* toggle */
+
+ gtk_tree_path_free(path);
+ }
+ }
+ else if (evt->type == GDK_BUTTON_RELEASE && evt->button == 1) /* left single release */
+ {
+ if (ih->data->mark_mode==ITREE_MARK_MULTIPLE && (evt->state & GDK_SHIFT_MASK))
+ gtkTreeCallMultiSelectionCb(ih); /* Multi Selection Callback */
+
+ if (ih->data->mark_mode==ITREE_MARK_MULTIPLE &&
+ !(evt->state & GDK_SHIFT_MASK) && !(evt->state & GDK_CONTROL_MASK))
+ {
+ if (iupAttribGet(ih, "_IUPTREE_EXTENDSELECT"))
+ iupAttribSetStr(ih, "_IUPTREE_EXTENDSELECT", "2");
+ }
+ }
+ else if (evt->type == GDK_BUTTON_PRESS && evt->button == 1) /* left single press */
+ {
+ iupAttribSetInt(ih, "_IUPTREE_DRAG_X", (int)evt->x);
+ iupAttribSetInt(ih, "_IUPTREE_DRAG_Y", (int)evt->y);
+
+ if (ih->data->mark_mode==ITREE_MARK_MULTIPLE &&
+ !(evt->state & GDK_SHIFT_MASK) && !(evt->state & GDK_CONTROL_MASK))
+ iupAttribSetStr(ih, "_IUPTREE_EXTENDSELECT", "1");
+ }
+
+ return FALSE;
+}
+
+static gboolean gtkTreeKeyReleaseEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih)
+{
+ if (ih->data->mark_mode==ITREE_MARK_MULTIPLE && (evt->state & GDK_SHIFT_MASK))
+ {
+ if (evt->keyval == GDK_Up || evt->keyval == GDK_Down || evt->keyval == GDK_Home || evt->keyval == GDK_End)
+ gtkTreeCallMultiSelectionCb(ih); /* Multi Selection Callback */
+ }
+
+ (void)widget;
+ return TRUE;
+}
+
+static gboolean gtkTreeKeyPressEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih)
+{
+ if (iupgtkKeyPressEvent(widget, evt, ih) == TRUE)
+ return TRUE;
+
+ if (evt->keyval == GDK_F2)
+ {
+ gtkTreeSetRenameAttrib(ih, NULL);
+ return TRUE;
+ }
+ else if (evt->keyval == GDK_Return || evt->keyval == GDK_KP_Enter)
+ {
+ gtkTreeOpenCloseEvent(ih);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void gtkTreeEnableDragDrop(Ihandle* ih)
+{
+ const GtkTargetEntry row_targets[] = {
+ { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, 0 }
+ };
+
+ if (iupAttribGetBoolean(ih, "AUTODRAGDROP"))
+ {
+ gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW(ih->handle),
+ GDK_BUTTON1_MASK,
+ row_targets,
+ G_N_ELEMENTS(row_targets),
+ GDK_ACTION_MOVE|GDK_ACTION_COPY);
+ gtk_tree_view_enable_model_drag_dest (GTK_TREE_VIEW(ih->handle),
+ row_targets,
+ G_N_ELEMENTS(row_targets),
+ GDK_ACTION_MOVE|GDK_ACTION_COPY);
+ }
+ else
+ {
+ gtk_drag_source_set(ih->handle, GDK_BUTTON1_MASK, row_targets, G_N_ELEMENTS(row_targets), GDK_ACTION_MOVE|GDK_ACTION_COPY);
+ gtk_drag_dest_set(ih->handle, GDK_BUTTON1_MASK, row_targets, G_N_ELEMENTS(row_targets), GDK_ACTION_MOVE|GDK_ACTION_COPY);
+
+ g_signal_connect(G_OBJECT(ih->handle), "drag-begin", G_CALLBACK(gtkTreeDragBegin), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "drag-motion", G_CALLBACK(gtkTreeDragMotion), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "drag-leave", G_CALLBACK(gtkTreeDragLeave), NULL);
+ g_signal_connect(G_OBJECT(ih->handle), "drag-drop", G_CALLBACK(gtkTreeDragDrop), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "drag-data-received", G_CALLBACK(gtkTreeDragDataReceived), ih);
+ }
+}
+
+/*****************************************************************************/
+
+static int gtkTreeMapMethod(Ihandle* ih)
+{
+ GtkScrolledWindow* scrolled_window = NULL;
+ GtkTreeStore *store;
+ GtkCellRenderer *renderer_img, *renderer_txt;
+ GtkTreeSelection* selection;
+ GtkTreeViewColumn *column;
+
+ store = gtk_tree_store_new(9, GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN,
+ G_TYPE_STRING, G_TYPE_INT, GDK_TYPE_COLOR, PANGO_TYPE_FONT_DESCRIPTION, G_TYPE_POINTER);
+
+ ih->handle = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
+
+ g_object_unref(store);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ scrolled_window = (GtkScrolledWindow*)gtk_scrolled_window_new(NULL, NULL);
+ iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)scrolled_window);
+
+ /* Column and renderers */
+ column = gtk_tree_view_column_new();
+ iupAttribSetStr(ih, "_IUPGTK_COLUMN", (char*)column);
+
+ renderer_img = gtk_cell_renderer_pixbuf_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(column), renderer_img, FALSE);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(column), renderer_img, "pixbuf", IUPGTK_TREE_IMAGE,
+ "pixbuf-expander-open", IUPGTK_TREE_IMAGE_EXPANDED,
+ "pixbuf-expander-closed", IUPGTK_TREE_IMAGE,
+ NULL);
+ iupAttribSetStr(ih, "_IUPGTK_RENDERER_IMG", (char*)renderer_img);
+
+ renderer_txt = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(column), renderer_txt, TRUE);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(column), renderer_txt, "text", IUPGTK_TREE_TITLE,
+ "is-expander", IUPGTK_TREE_KIND,
+ "font-desc", IUPGTK_TREE_FONT,
+ "foreground-gdk", IUPGTK_TREE_COLOR,
+ NULL);
+ iupAttribSetStr(ih, "_IUPGTK_RENDERER_TEXT", (char*)renderer_txt);
+
+ if (ih->data->show_rename)
+ g_object_set(G_OBJECT(renderer_txt), "editable", TRUE, NULL);
+
+ g_object_set(G_OBJECT(renderer_txt), "xpad", 0, NULL);
+ g_object_set(G_OBJECT(renderer_txt), "ypad", 0, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(ih->handle), column);
+
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(ih->handle), FALSE);
+ gtk_tree_view_set_enable_search(GTK_TREE_VIEW(ih->handle), FALSE);
+
+#if GTK_CHECK_VERSION(2, 10, 0)
+ if (iupAttribGetBoolean(ih, "HIDELINES"))
+ gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(ih->handle), FALSE);
+ else
+ gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(ih->handle), TRUE);
+#endif
+
+#if GTK_CHECK_VERSION(2, 12, 0)
+ if (iupAttribGetBoolean(ih, "HIDEBUTTONS"))
+ gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(ih->handle), FALSE);
+ else
+ gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(ih->handle), TRUE);
+#endif
+
+ if (ih->data->show_dragdrop)
+ gtkTreeEnableDragDrop(ih);
+
+ gtk_container_add((GtkContainer*)scrolled_window, ih->handle);
+ gtk_widget_show((GtkWidget*)scrolled_window);
+ gtk_scrolled_window_set_shadow_type(scrolled_window, GTK_SHADOW_IN);
+
+ gtk_scrolled_window_set_policy(scrolled_window, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle));
+
+ gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE);
+ gtk_tree_view_set_reorderable(GTK_TREE_VIEW(ih->handle), FALSE);
+
+ /* callbacks */
+ g_signal_connect(selection, "changed", G_CALLBACK(gtkTreeSelectionChanged), ih);
+
+ g_signal_connect(renderer_txt, "editing-started", G_CALLBACK(gtkTreeCellTextEditingStarted), ih);
+ g_signal_connect(renderer_txt, "edited", G_CALLBACK(gtkTreeCellTextEdited), ih);
+
+ g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "motion-notify-event",G_CALLBACK(iupgtkMotionNotifyEvent), ih);
+
+ g_signal_connect(G_OBJECT(ih->handle), "test-expand-row", G_CALLBACK(gtkTreeTestExpandRow), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "test-collapse-row", G_CALLBACK(gtkTreeTestCollapseRow), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "row-activated", G_CALLBACK(gtkTreeRowActived), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(gtkTreeKeyPressEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "key-release-event", G_CALLBACK(gtkTreeKeyReleaseEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "button-press-event", G_CALLBACK(gtkTreeButtonEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "button-release-event",G_CALLBACK(gtkTreeButtonEvent), ih);
+
+ /* add to the parent, all GTK controls must call this. */
+ iupgtkBaseAddToParent(ih);
+
+ if (!iupAttribGetBoolean(ih, "CANFOCUS"))
+ GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS;
+
+ gtk_widget_realize((GtkWidget*)scrolled_window);
+ gtk_widget_realize(ih->handle);
+
+ /* Initialize the default images */
+ ih->data->def_image_leaf = iupImageGetImage("IMGLEAF", ih, 0);
+ ih->data->def_image_collapsed = iupImageGetImage("IMGCOLLAPSED", ih, 0);
+ ih->data->def_image_expanded = iupImageGetImage("IMGEXPANDED", ih, 0);
+
+ gtkTreeAddRootNode(ih);
+
+ /* configure for DRAG&DROP of files */
+ if (IupGetCallback(ih, "DROPFILES_CB"))
+ iupAttribSetStr(ih, "DRAGDROP", "YES");
+
+ IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)gtkTreeConvertXYToPos);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvTreeInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkTreeMapMethod;
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkTreeSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, gtkTreeSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT);
+
+ /* IupTree Attributes - GENERAL */
+ iupClassRegisterAttribute(ic, "EXPANDALL", NULL, gtkTreeSetExpandAllAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "INDENTATION", gtkTreeGetIndentationAttrib, gtkTreeSetIndentationAttrib, NULL, NULL, IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "COUNT", gtkTreeGetCountAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupgtkSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPACING", iupTreeGetSpacingAttrib, gtkTreeSetSpacingAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "TOPITEM", NULL, gtkTreeSetTopItemAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+
+ /* IupTree Attributes - IMAGES */
+ iupClassRegisterAttributeId(ic, "IMAGE", NULL, gtkTreeSetImageAttrib, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "IMAGEEXPANDED", NULL, gtkTreeSetImageExpandedAttrib, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "IMAGELEAF", NULL, gtkTreeSetImageLeafAttrib, IUPAF_SAMEASSYSTEM, "IMGLEAF", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGEBRANCHCOLLAPSED", NULL, gtkTreeSetImageBranchCollapsedAttrib, IUPAF_SAMEASSYSTEM, "IMGCOLLAPSED", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGEBRANCHEXPANDED", NULL, gtkTreeSetImageBranchExpandedAttrib, IUPAF_SAMEASSYSTEM, "IMGEXPANDED", IUPAF_NO_INHERIT);
+
+ /* IupTree Attributes - NODES */
+ iupClassRegisterAttributeId(ic, "STATE", gtkTreeGetStateAttrib, gtkTreeSetStateAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "DEPTH", gtkTreeGetDepthAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "KIND", gtkTreeGetKindAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "PARENT", gtkTreeGetParentAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "COLOR", gtkTreeGetColorAttrib, gtkTreeSetColorAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "NAME", gtkTreeGetTitleAttrib, gtkTreeSetTitleAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "TITLE", gtkTreeGetTitleAttrib, gtkTreeSetTitleAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "USERDATA", gtkTreeGetUserDataAttrib, gtkTreeSetUserDataAttrib, IUPAF_NO_STRING|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttributeId(ic, "CHILDCOUNT", gtkTreeGetChildCountAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "TITLEFONT", gtkTreeGetTitleFontAttrib, gtkTreeSetTitleFontAttrib, IUPAF_NO_INHERIT);
+
+ /* IupTree Attributes - MARKS */
+ iupClassRegisterAttributeId(ic, "MARKED", gtkTreeGetMarkedAttrib, gtkTreeSetMarkedAttrib, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute (ic, "MARK", NULL, gtkTreeSetMarkAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute (ic, "STARTING", NULL, gtkTreeSetMarkStartAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute (ic, "MARKSTART", NULL, gtkTreeSetMarkStartAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute (ic, "VALUE", gtkTreeGetValueAttrib, gtkTreeSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupTree Attributes - ACTION */
+ iupClassRegisterAttributeId(ic, "DELNODE", NULL, gtkTreeSetDelNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "RENAME", NULL, gtkTreeSetRenameAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "MOVENODE", NULL, gtkTreeSetMoveNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "COPYNODE", NULL, gtkTreeSetCopyNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "FINDUSERDATA", gtkTreeGetFindUserDataAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute (ic, "AUTODRAGDROP", NULL, NULL, NULL, NULL, IUPAF_DEFAULT);
+}
diff --git a/iup/src/gtk/iupgtk_val.c b/iup/src/gtk/iupgtk_val.c
new file mode 100755
index 0000000..018af83
--- /dev/null
+++ b/iup/src/gtk/iupgtk_val.c
@@ -0,0 +1,208 @@
+/** \file
+ * \brief Valuator Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_val.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_key.h"
+
+#include "iupgtk_drv.h"
+
+
+void iupdrvValGetMinSize(Ihandle* ih, int *w, int *h)
+{
+ if (ih->data->type == IVAL_HORIZONTAL)
+ {
+ *w = 20;
+ *h = 35;
+ }
+ else
+ {
+ *w = 35;
+ *h = 20;
+ }
+}
+
+static int gtkValSetStepAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->step = atof(value);
+ gtk_range_set_increments(GTK_RANGE(ih->handle), ih->data->step, ih->data->pagestep);
+ return 0; /* do not store value in hash table */
+}
+
+static int gtkValSetPageStepAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->pagestep = atof(value);
+ gtk_range_set_increments(GTK_RANGE(ih->handle), ih->data->step, ih->data->pagestep);
+ return 0; /* do not store value in hash table */
+}
+
+static int gtkValSetValueAttrib(Ihandle* ih, const char* value)
+{
+ double fval;
+ ih->data->val = atof(value);
+ fval = (ih->data->val-ih->data->vmin)/(ih->data->vmax - ih->data->vmin);
+ gtk_range_set_value(GTK_RANGE(ih->handle), fval);
+ return 0; /* do not store value in hash table */
+}
+
+
+/*********************************************************************************************/
+
+
+static gboolean gtkValChangeValue(GtkRange *range, GtkScrollType scroll, double fval, Ihandle *ih)
+{
+ double old_val = ih->data->val;
+ IFn cb;
+
+ if (fval < 0.0)
+ gtk_range_set_value(GTK_RANGE(ih->handle), 0.0);
+ if (fval > 1.0)
+ gtk_range_set_value(GTK_RANGE(ih->handle), 1.0);
+
+ ih->data->val = fval*(ih->data->vmax - ih->data->vmin) + ih->data->vmin;
+ iupValCropValue(ih);
+
+ cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB");
+ if (cb)
+ {
+ if (ih->data->val == old_val)
+ return FALSE;
+
+ cb(ih);
+ }
+ else
+ {
+ IFnd cb_old;
+ if (scroll == GTK_SCROLL_JUMP) /* scroll == 1 */
+ cb_old = (IFnd)IupGetCallback(ih, "MOUSEMOVE_CB");
+ else if((scroll >= GTK_SCROLL_STEP_BACKWARD) && (scroll <= GTK_SCROLL_END))
+ cb_old = (IFnd)IupGetCallback(ih, "BUTTON_PRESS_CB");
+ else
+ cb_old = (IFnd)IupGetCallback(ih, "BUTTON_RELEASE_CB");
+ if (cb_old)
+ cb_old(ih, ih->data->val);
+ }
+
+ if (fval < 0.0 || fval > 1.0)
+ return TRUE;
+
+ (void)range;
+ return FALSE;
+}
+
+static gboolean gtkValKeyPressEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih)
+{
+ if (iupgtkKeyPressEvent(widget, evt, ih) == TRUE)
+ return TRUE;
+
+ /* change Home and End default behaviour */
+ if (ih->data->inverted)
+ {
+ if (evt->keyval==GDK_Home || evt->keyval==GDK_KP_Home)
+ {
+ /* set to maximum */
+ gtk_range_set_value(GTK_RANGE(ih->handle), 1.0);
+ gtkValChangeValue(GTK_RANGE(ih->handle), GTK_SCROLL_START, 1.0, ih);
+ return TRUE;
+ }
+ if (evt->keyval==GDK_End || evt->keyval==GDK_KP_End)
+ {
+ /* set to minimum */
+ gtk_range_set_value(GTK_RANGE(ih->handle), 0.0);
+ gtkValChangeValue(GTK_RANGE(ih->handle), GTK_SCROLL_END, 0.0, ih);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+/*********************************************************************************************/
+
+
+static int gtkValMapMethod(Ihandle* ih)
+{
+ GtkObject *adjustment;
+
+ /* value, lower, upper, step_increment, page_increment, page_size */
+ /* page_size value only makes a difference for scrollbar widgets */
+ adjustment = gtk_adjustment_new (0, 0, 1.0, 0.01, 0.1, 0);
+ if (!adjustment)
+ return IUP_ERROR;
+
+ if (ih->data->type == IVAL_HORIZONTAL)
+ ih->handle = gtk_hscale_new(GTK_ADJUSTMENT(adjustment));
+ else
+ ih->handle = gtk_vscale_new(GTK_ADJUSTMENT(adjustment));
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ /* add to the parent, all GTK controls must call this. */
+ iupgtkBaseAddToParent(ih);
+
+ if (!iupAttribGetBoolean(ih, "CANFOCUS"))
+ GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS;
+
+ g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih);
+
+ g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(gtkValKeyPressEvent), ih);
+ g_signal_connect(G_OBJECT(ih->handle), "change-value", G_CALLBACK(gtkValChangeValue), ih);
+
+ /* configure the scale */
+ gtk_scale_set_draw_value(GTK_SCALE(ih->handle), FALSE);
+ gtk_range_set_range(GTK_RANGE(ih->handle), 0.0, 1.0);
+
+ if (ih->data->inverted)
+ gtk_range_set_inverted(GTK_RANGE(ih->handle), TRUE);
+
+ gtk_widget_realize(ih->handle);
+
+ /* update a mnemonic in a label if necessary */
+ iupgtkUpdateMnemonic(ih);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvValInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = gtkValMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+
+ /* IupVal only */
+ iupClassRegisterAttribute(ic, "VALUE", iupValGetValueAttrib, gtkValSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "PAGESTEP", iupValGetPageStepAttrib, gtkValSetPageStepAttrib, IUPAF_SAMEASSYSTEM, "0.1", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "STEP", iupValGetStepAttrib, gtkValSetStepAttrib, IUPAF_SAMEASSYSTEM, "0.01", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOWTICKS", NULL, NULL, NULL, NULL, IUPAF_WRITEONLY|IUPAF_READONLY); /* showticks is not supported in GTK */
+}
diff --git a/iup/src/iup.c b/iup/src/iup.c
new file mode 100755
index 0000000..df4bf34
--- /dev/null
+++ b/iup/src/iup.c
@@ -0,0 +1,86 @@
+/** \file
+ * \brief miscelaneous functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+/*! \mainpage IUP
+ *
+ * \section intro Introduction
+ *
+ * Internal SDK documentation of the IUP library, automatically generated using Doxygen (<A HREF="http://www.doxygen.org/">http://www.doxygen.org/</A>).
+ *
+ * \section codestd Code Standards
+ *
+ * \subsection func Function Names (prefix format)
+ * - IupFunc - User API, implemented in the core
+ * - iupFunc - Internal Core API, implemented in the core, used in the core or in driver
+ * - iupxxxFunc - Windows Internal API, implemented in driver xxx, used in driver xxx
+ * - iupdrvFunc - Driver API, implemented in driver, used in the core or driver
+ * - xxxFunc - Driver xxx local functions
+ *
+ * \subsection glob Globais Variables (lower case format)
+ * - iupxxx_var
+ *
+ * \subsection loc Local Variables (lower case format, using module name)
+ * - iyyy_var
+ *
+ * \subsection fil File Names
+ * - iupyyy.h - public headers
+ * - iup_yyy.h/c - core
+ * - iupxxx_yyy.h/c - driver
+ *
+ * \subsection strc Structures
+ * - Iyyy
+ *
+ * \subsection com File Comments (at start)
+ * - Check an existant file for example.
+ *
+ * \subsection inc Include Defines
+ * - __IUPXXX_H (same file name, upper case, "__" preffix and replace "." by "_")
+ *
+ * \subsection doc Documentation
+ * - In the header, using Doxygen commands.
+ * - Check an existant header for example.
+ *
+ */
+
+/** \defgroup util Utilities
+ */
+
+/** \defgroup cpi Control SDK
+ * \par
+ * <H3><A HREF="../en/cpi.html">Control Creation Guide</A></H3>
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+
+/* This appears only here to avoid changing the iup.h header fo bug fixes */
+#define IUP_VERSION_FIX " RC3"
+#define IUP_VERSION_FIX_NUMBER 0
+
+const char iup_ident[] =
+ "$IUP: " IUP_VERSION IUP_VERSION_FIX " " IUP_COPYRIGHT " $\n"
+ "$URL: www.tecgraf.puc-rio.br/iup $\n";
+
+/* Using this, if you look for the string TECVER, you will find also the library version. */
+const char *iup_tecver = "TECVERID.str:Iup:LIB:" IUP_VERSION IUP_VERSION_FIX;
+
+char* IupVersion(void)
+{
+ (void)iup_tecver;
+ (void)iup_ident;
+ return IUP_VERSION IUP_VERSION_FIX;
+}
+
+char* IupVersionDate(void)
+{
+ return IUP_VERSION_DATE;
+}
+
+int IupVersionNumber(void)
+{
+ return IUP_VERSION_NUMBER+IUP_VERSION_FIX_NUMBER;
+}
diff --git a/iup/src/iup.def b/iup/src/iup.def
new file mode 100755
index 0000000..d0dcfbd
--- /dev/null
+++ b/iup/src/iup.def
@@ -0,0 +1,353 @@
+EXPORTS
+IupAlarm
+IupAppend
+IupButton
+IupCanvas
+IupClose
+IupCreate
+IupCreatep
+IupCreatev
+IupDestroy
+IupDetach
+IupDialog
+IupFileDlg
+IupFill
+IupFlush
+IupFrame
+IupGetActionName
+IupGetAllDialogs
+IupGetAllNames
+IupGetAttribute
+IupGetAttributes
+IupGetDialog
+IupGetFile
+IupGetFloat
+IupGetFocus
+IupGetFunction
+IupGetGlobal
+IupGetHandle
+IupGetInt
+IupGetLanguage
+IupGetName
+IupHbox
+IupHelp
+IupImage
+IupHide
+IupItem
+IupLabel
+IupList
+IupListDialog
+IupLoad
+IupLoadBuffer
+IupLoopStep
+IupMainLoop
+IupMap
+IupMapFont
+IupMenu
+IupMessage
+IupMessagef
+IupMultiLine
+IupNextField
+IupOpen
+IupPopup
+IupPreviousField
+IupRadio
+IupScanf
+IupSeparator
+IupSetAttribute
+IupSetAttributes
+IupSetfAttribute
+IupSetAtt
+IupSetFocus
+IupSetFunction
+IupSetGlobal
+IupSetHandle
+IupSetLanguage
+IupShow
+IupShowXY
+IupStoreAttribute
+IupStoreGlobal
+IupSubmenu
+IupText
+IupToggle
+IupUnMapFont
+IupUser
+IupVbox
+IupVersion
+IupVersionDate
+IupZbox
+IupTimer
+IupClipboard
+IupGetNextChild
+IupGetBrother
+IupGetParent
+IupVersionNumber
+IupRefresh
+IupGetText
+IupVboxv
+IupZboxv
+IupHboxv
+IupMenuv
+IupSetCallback
+IupGetCallback
+IupGetChild
+IupGetChildPos
+IupGetChildCount
+IupGetAllAttributes
+IupSetAttributeHandle
+IupGetAttributeHandle
+IupExitLoop
+IupUpdate
+IupRedraw
+IupImageRGB
+IupImageRGBA
+IupUnmap
+IupReparent
+IupMessageDlg
+IupColorDlg
+IupFontDlg
+IupSbox
+IupSpin
+IupSpinbox
+IupCboxv
+IupCbox
+IupVal
+IupProgressBar
+IupTabs
+IupTabsv
+IupGetClassAttributes
+IupSetClassDefaultAttribute
+IupSaveClassAttributes
+IupGetColor
+IupGetParam
+IupGetParamv
+iupGetParamType
+iupGetParamCount
+IupNormalizer
+IupNormalizerv
+IupGetClassType
+IupGetClassName
+IupInsert
+IupMainLoopLevel
+IupGetDialogChild
+IupConvertXYToPos
+IupTextConvertLinColToPos
+IupTextConvertPosToLinCol
+IupUpdateChildren
+IupTreeSetAttribute
+IupTreeStoreAttribute
+IupTreeGetAttribute
+IupTreeGetInt
+IupTreeGetFloat
+IupTreeSetfAttribute
+IupTree
+IupTreeGetId
+IupTreeGetUserId
+IupTreeSetUserId
+IupSaveImageAsText
+
+iupdrvSetVisible
+iupdrvSetStandardFontAttrib
+iupdrvSetCurrentDirectory
+iupdrvSetActive
+iupdrvScreenToClient
+iupdrvReparent
+iupdrvMakeDirectory
+iupdrvIsVisible
+iupdrvIsFile
+iupdrvIsDirectory
+iupdrvIsActive
+iupdrvGetWindowDecor
+iupdrvGetUserName
+iupdrvGetSystemVersion
+iupdrvGetSystemName
+iupdrvGetSystemFont
+iupdrvGetScrollbarSize
+iupdrvGetScreenSize
+iupdrvGetScreenDepth
+iupdrvGetKeyState
+iupdrvGetFullSize
+iupdrvGetDisplay
+iupdrvGetCursorPos
+iupdrvGetCurrentDirectory
+iupdrvGetComputerName
+iupdrvFontGetStringWidth
+iupdrvFontGetMultiLineStringSize
+iupdrvFontGetCharSize
+iupdrvDrawFocusRect
+iupdrvDisplayUpdate
+iupdrvDisplayRedraw
+iupdrvBaseUnMapMethod
+iupdrvBaseSetZorderAttrib
+iupdrvBaseSetTipVisibleAttrib
+iupdrvBaseSetTipAttrib
+iupdrvBaseSetCursorAttrib
+iupdrvBaseLayoutUpdateMethod
+iupdrvBaseGetYAttrib
+iupdrvBaseGetXAttrib
+iupdrvBaseGetClientSizeAttrib
+iupdrvActivate
+iupdrvImageCreateImageRaw
+iupdrvImageGetRawInfo
+iupdrvImageGetRawData
+iupdrvImageDestroy
+iupVersionDlg
+iupTableSetFunc
+iupTableSet
+iupTableRemoveCurr
+iupTableRemove
+iupTableNext
+iupTableGetTyped
+iupTableGetFunc
+iupTableGetCurr
+iupTableGet
+iupTableFirst
+iupTableDestroy
+iupTableCreateSized
+iupTableCreate
+iupTableCount
+iupTableClear
+iupStrToUnix
+iupStrToStrStr
+iupStrToRGB
+iupStrToRGBA
+iupStrToMac
+iupStrToIntInt
+iupStrToInt
+iupStrToFloatFloat
+iupStrToFloat
+iupStrToDos
+iupStrReplace
+iupStrRemove
+iupStrProcessMnemonic
+iupStrNextLine
+iupStrMessageShowError
+iupStrMessageGet
+iupStrLower
+iupStrLineCount
+iupStrInsert
+iupStrGetMemoryCopy
+iupStrGetMemory
+iupStrFileMakeFileName
+iupStrFileGetTitle
+iupStrFileGetPath
+iupStrFileGetExt
+iupStrEqualPartial
+iupStrEqualNoCase
+iupStrEqual
+iupStrDup
+iupStrCountChar
+iupStrCopyUntil
+iupStrCopyN
+iupStrBoolean
+iupSetFontStyleAttrib
+iupSetFontSizeAttrib
+iupSetFontAttrib
+iupRegisterFindClass
+iupRegisterClass
+iupObjectGetParamList
+iupObjectCheck
+iupMaskDestroy
+iupMaskCreateInt
+iupMaskCreateFloat
+iupMaskCreate
+iupMaskCheck
+iupKeyNameToCode
+iupKeyForEach
+iupKeyCodeToName
+iupKeyCanCaps
+iupKeyCallKeyPressCb
+iupKeyCallKeyCb
+iupKeyProcessNavigation
+iupImageStockSet
+iupImageStockLoad
+iupImageColorMakeInactive
+iupGetFontStyleAttrib
+iupGetFontSizeAttrib
+iupGetFontFaceAttrib
+iupGetFontAttrib
+iupFontParseX
+iupFontParseWin
+iupFontParsePango
+iupFocusCanAccept
+iupError
+iupGlobalIsPointer
+iupDlgListVisibleInc
+iupDlgListVisibleDec
+iupDlgListVisibleCount
+iupDlgListRemove
+iupDlgListNext
+iupDlgListFirst
+iupDlgListAdd
+iupDialogGetClass
+iupDataEntry
+iupClassRelease
+iupClassRegisterCallback
+iupClassRegisterAttributeId
+iupClassRegisterAttribute
+iupClassRegisterGetAttribute
+iupClassObjectUnMap
+iupClassObjectSetChildrenPosition
+iupClassObjectSetChildrenCurrentSize
+iupClassObjectSetAttribute
+iupClassObjectMap
+iupClassObjectLayoutUpdate
+iupClassObjectGetInnerContainer
+iupClassObjectGetAttribute
+iupClassObjectGetAttributeInfo
+iupClassObjectAttribIsNotString
+iupClassObjectDlgPopup
+iupClassObjectDestroy
+iupClassObjectCreate
+iupClassObjectComputeNaturalSize
+iupClassObjectChildRemoved
+iupClassObjectChildAdded
+iupClassNew
+iupClassCallbackGetFormat
+iupChildTreeGetNativeParentHandle
+iupChildTreeGetNativeParent
+iupChildTreeAppend
+iupCanvasGetClass
+iupCallKillFocusCb
+iupCallGetFocusCb
+iupBaseSetVisibleAttrib
+iupBaseSetSizeAttrib
+iupBaseSetRasterSizeAttrib
+iupBaseSetActiveAttrib
+iupBaseRegisterVisualAttrib
+iupBaseRegisterCommonAttrib
+iupBaseGetWidAttrib
+iupBaseGetVisibleAttrib
+iupBaseGetSizeAttrib
+iupBaseGetScrollbar
+iupBaseGetRasterSizeAttrib
+iupBaseGetActiveAttrib
+iupBaseContainerUpdateExpand
+iupBaseContainerGetExpandAttrib
+iupBaseTypeVoidMapMethod
+iupBaseSetPosition
+iupBaseComputeNaturalSize
+iupBaseSetCurrentSize
+iupBaseCallValueChangedCb
+iupAttribStoreStr
+iupAttribSetStrf
+iupAttribSetStr
+iupAttribSetInt
+iupAttribSetHandleName
+iupAttribSetFloat
+iupAttribIsPointer
+iupAttribGet
+iupAttribGetInherit
+iupAttribGetInheritNativeParent
+iupAttribGetStr
+iupAttribGetInt
+iupAttribGetBoolean
+iupAttribGetFloat
+iupAssert
+iupArrayInc
+iupArrayGetData
+iupArrayDestroy
+iupArrayCreate
+iupArrayCount
+iupArrayAdd
+iupSaveImageAsText
diff --git a/iup/src/iup.dep b/iup/src/iup.dep
new file mode 100644
index 0000000..63394d5
--- /dev/null
+++ b/iup/src/iup.dep
@@ -0,0 +1,334 @@
+$(OBJDIR)/iup_array.o: iup_array.c iup_array.h iup_assert.h
+$(OBJDIR)/iup_callback.o: iup_callback.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_assert.h
+$(OBJDIR)/iup_dlglist.o: iup_dlglist.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_dlglist.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_assert.h
+$(OBJDIR)/iup_attrib.o: iup_attrib.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_childtree.h iup_str.h iup_ledlex.h iup_attrib.h \
+ iup_assert.h
+$(OBJDIR)/iup_focus.o: iup_focus.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_focus.h iup_assert.h iup_attrib.h \
+ iup_str.h iup_drv.h
+$(OBJDIR)/iup_font.o: iup_font.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_str.h iup_drvfont.h iup_assert.h iup_attrib.h \
+ iup_class.h iup_table.h iup_classbase.h
+$(OBJDIR)/iup_globalattrib.o: iup_globalattrib.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h iup_table.h iup_globalattrib.h \
+ iup_drv.h iup_drvfont.h iup_assert.h iup_str.h
+$(OBJDIR)/iup_object.o: iup_object.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_assert.h iup_register.h iup_names.h
+$(OBJDIR)/iup_key.o: iup_key.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_key.h iup_str.h \
+ iup_object.h iup_class.h iup_table.h iup_classbase.h iup_drv.h \
+ iup_focus.h
+$(OBJDIR)/iup_layout.o: iup_layout.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_drv.h iup_attrib.h iup_str.h iup_layout.h \
+ iup_assert.h
+$(OBJDIR)/iup_ledlex.o: iup_ledlex.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_class.h iup_table.h iup_classbase.h \
+ iup_ledlex.h iup_str.h iup_register.h
+$(OBJDIR)/iup_names.o: iup_names.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_str.h iup_table.h iup_names.h iup_object.h \
+ iup_class.h iup_classbase.h iup_assert.h
+$(OBJDIR)/iup_open.o: iup_open.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_str.h iup_globalattrib.h iup_names.h iup_func.h \
+ iup_drv.h iup_drvinfo.h iup_drvfont.h iup_predial.h iup_class.h \
+ iup_table.h iup_classbase.h iup_register.h iup_key.h iup_image.h \
+ iup_dlglist.h iup_assert.h iup_strmessage.h
+$(OBJDIR)/iup_ledparse.o: iup_ledparse.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_ledlex.h iup_str.h iup_assert.h
+$(OBJDIR)/iup_predial.o: iup_predial.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_predial.h iup_attrib.h iup_str.h \
+ iup_strmessage.h
+$(OBJDIR)/iup_register.o: iup_register.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_register.h iup_stdcontrols.h
+$(OBJDIR)/iup_scanf.o: iup_scanf.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_predial.h iup_str.h iup_assert.h
+$(OBJDIR)/iup_show.o: iup_show.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_layout.h iup_attrib.h iup_dialog.h iup_menu.h \
+ iup_assert.h iup_str.h iup_drv.h iup_drvfont.h
+$(OBJDIR)/iup_str.o: iup_str.c iup_str.h
+$(OBJDIR)/iup_table.o: iup_table.c iup_table.h iup_str.h iup_assert.h
+$(OBJDIR)/iup_func.o: iup_func.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_str.h iup_table.h iup_func.h iup_drv.h \
+ iup_assert.h
+$(OBJDIR)/iup_childtree.o: iup_childtree.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_dlglist.h iup_childtree.h iup_attrib.h iup_assert.h \
+ iup_str.h iup_drv.h
+$(OBJDIR)/iup.o: iup.c ../include/iup.h ../include/iupkey.h ../include/iupdef.h
+$(OBJDIR)/iup_classattrib.o: iup_classattrib.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_drv.h iup_drvfont.h iup_str.h iup_attrib.h \
+ iup_assert.h iup_register.h iup_globalattrib.h
+$(OBJDIR)/iup_dialog.o: iup_dialog.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_class.h iup_table.h \
+ iup_classbase.h iup_object.h iup_dlglist.h iup_layout.h iup_attrib.h \
+ iup_drv.h iup_drvinfo.h iup_drvfont.h iup_focus.h iup_str.h \
+ iup_dialog.h
+$(OBJDIR)/iup_assert.o: iup_assert.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_assert.h iup_attrib.h iup_str.h \
+ iup_strmessage.h
+$(OBJDIR)/iup_canvas.o: iup_canvas.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_canvas.h
+$(OBJDIR)/iup_messagedlg.o: iup_messagedlg.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_stdcontrols.h
+$(OBJDIR)/iup_timer.o: iup_timer.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_str.h iup_stdcontrols.h iup_timer.h
+$(OBJDIR)/iup_image.o: iup_image.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_str.h iup_image.h iup_assert.h \
+ iup_stdcontrols.h
+$(OBJDIR)/iup_label.o: iup_label.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_label.h iup_image.h
+$(OBJDIR)/iup_fill.o: iup_fill.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h
+$(OBJDIR)/iup_zbox.o: iup_zbox.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h
+$(OBJDIR)/iup_colordlg.o: iup_colordlg.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h
+$(OBJDIR)/iup_fontdlg.o: iup_fontdlg.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h
+$(OBJDIR)/iup_filedlg.o: iup_filedlg.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h
+$(OBJDIR)/iup_strmessage.o: iup_strmessage.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_attrib.h iup_str.h iup_strmessage.h iup_table.h
+$(OBJDIR)/iup_menu.o: iup_menu.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_dialog.h iup_str.h iup_assert.h \
+ iup_key.h iup_stdcontrols.h iup_drvinfo.h iup_menu.h
+$(OBJDIR)/iup_frame.o: iup_frame.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_frame.h
+$(OBJDIR)/iup_user.o: iup_user.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_stdcontrols.h
+$(OBJDIR)/iup_button.o: iup_button.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_button.h iup_image.h
+$(OBJDIR)/iup_radio.o: iup_radio.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h
+$(OBJDIR)/iup_toggle.o: iup_toggle.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_toggle.h iup_image.h
+$(OBJDIR)/iup_progressbar.o: iup_progressbar.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_progressbar.h
+$(OBJDIR)/iup_text.o: iup_text.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_mask.h iup_array.h \
+ iup_text.h iup_assert.h
+$(OBJDIR)/iup_val.o: iup_val.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../include/iupcontrols.h \
+ iup_object.h iup_class.h iup_table.h iup_classbase.h iup_attrib.h \
+ iup_str.h iup_drv.h iup_stdcontrols.h iup_layout.h iup_val.h
+$(OBJDIR)/iup_box.o: iup_box.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_box.h
+$(OBJDIR)/iup_hbox.o: iup_hbox.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_box.h
+$(OBJDIR)/iup_vbox.o: iup_vbox.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_box.h
+$(OBJDIR)/iup_cbox.o: iup_cbox.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h
+$(OBJDIR)/iup_class.o: iup_class.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_drv.h iup_drvfont.h iup_str.h iup_attrib.h \
+ iup_assert.h
+$(OBJDIR)/iup_classbase.o: iup_classbase.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_drv.h iup_drvfont.h iup_str.h \
+ iup_attrib.h iup_assert.h
+$(OBJDIR)/iup_maskmatch.o: iup_maskmatch.c iup_maskparse.h iup_maskmatch.h
+$(OBJDIR)/iup_mask.o: iup_mask.c iup_maskparse.h iup_mask.h iup_str.h
+$(OBJDIR)/iup_maskparse.o: iup_maskparse.c iup_maskparse.h iup_maskmatch.h
+$(OBJDIR)/iup_tabs.o: iup_tabs.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_image.h iup_tabs.h
+$(OBJDIR)/iup_spin.o: iup_spin.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h \
+ iup_childtree.h
+$(OBJDIR)/iup_list.o: iup_list.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_assert.h iup_object.h \
+ iup_class.h iup_table.h iup_classbase.h iup_attrib.h iup_str.h \
+ iup_drv.h iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_mask.h \
+ iup_list.h
+$(OBJDIR)/iup_getparam.o: iup_getparam.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_attrib.h iup_str.h iup_strmessage.h \
+ iup_drvfont.h
+$(OBJDIR)/iup_sbox.o: iup_sbox.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_stdcontrols.h iup_layout.h iup_childtree.h
+$(OBJDIR)/iup_normalizer.o: iup_normalizer.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_str.h iup_array.h iup_stdcontrols.h
+$(OBJDIR)/iup_tree.o: iup_tree.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_tree.h iup_assert.h
+$(OBJDIR)/iupmot_common.o: mot/iupmot_common.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_childtree.h iup_key.h iup_str.h \
+ iup_class.h iup_attrib.h iup_focus.h iup_drv.h iup_image.h \
+ mot/iupmot_color.h mot/iupmot_drv.h
+$(OBJDIR)/iupmot_color.o: mot/iupmot_color.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_str.h iup_drvinfo.h mot/iupmot_drv.h \
+ mot/iupmot_color.h
+$(OBJDIR)/iupmot_focus.o: mot/iupmot_focus.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_focus.h iup_attrib.h iup_assert.h iup_drv.h \
+ mot/iupmot_drv.h
+$(OBJDIR)/iupmot_font.o: mot/iupmot_font.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_str.h iup_attrib.h iup_array.h iup_object.h \
+ iup_class.h iup_table.h iup_classbase.h iup_drv.h iup_drvfont.h \
+ iup_assert.h mot/iupmot_drv.h
+$(OBJDIR)/iupmot_key.o: mot/iupmot_key.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_key.h iup_str.h mot/iupmot_drv.h
+$(OBJDIR)/iupmot_loop.o: mot/iupmot_loop.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h mot/iupmot_drv.h
+$(OBJDIR)/iupmot_open.o: mot/iupmot_open.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_str.h iup_drv.h iup_globalattrib.h mot/iupmot_drv.h \
+ mot/iupmot_color.h
+$(OBJDIR)/iupmot_tips.o: mot/iupmot_tips.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_attrib.h iup_str.h iup_drv.h iup_drvfont.h \
+ mot/iupmot_drv.h mot/iupmot_color.h
+$(OBJDIR)/iupmot_globalattrib.o: mot/iupmot_globalattrib.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h iup_str.h iup_drv.h \
+ iup_drvinfo.h iup_strmessage.h mot/iupmot_drv.h
+$(OBJDIR)/iupmot_dialog.o: mot/iupmot_dialog.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_class.h iup_table.h \
+ iup_classbase.h iup_object.h iup_class.h iup_childtree.h iup_dlglist.h \
+ iup_attrib.h iup_drv.h iup_drvfont.h iup_drvinfo.h iup_focus.h \
+ iup_str.h iup_dialog.h iup_image.h mot/iupmot_drv.h mot/iupmot_color.h
+$(OBJDIR)/iupmot_messagedlg.o: mot/iupmot_messagedlg.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drvinfo.h \
+ iup_dialog.h iup_strmessage.h mot/iupmot_drv.h
+$(OBJDIR)/iupmot_timer.o: mot/iupmot_timer.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_assert.h \
+ iup_timer.h mot/iupmot_drv.h
+$(OBJDIR)/iupmot_image.o: mot/iupmot_image.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_str.h iup_image.h iup_drvinfo.h \
+ mot/iupmot_drv.h mot/iupmot_color.h
+$(OBJDIR)/iupmot_label.o: mot/iupmot_label.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \
+ iup_str.h iup_label.h iup_drv.h iup_image.h mot/iupmot_drv.h
+$(OBJDIR)/iupmot_canvas.o: mot/iupmot_canvas.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \
+ iup_str.h iup_drv.h iup_drvfont.h iup_canvas.h iup_key.h \
+ mot/iupmot_drv.h mot/iupmot_color.h
+$(OBJDIR)/iupmot_colordlg.o: mot/iupmot_colordlg.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drvinfo.h \
+ iup_dialog.h mot/iupmot_drv.h
+$(OBJDIR)/iupmot_fontdlg.o: mot/iupmot_fontdlg.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drvinfo.h \
+ iup_dialog.h mot/iupmot_drv.h
+$(OBJDIR)/iupmot_filedlg.o: mot/iupmot_filedlg.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \
+ iup_object.h iup_class.h iup_table.h iup_classbase.h iup_attrib.h \
+ iup_str.h iup_drvinfo.h iup_dialog.h iup_strmessage.h mot/iupmot_drv.h
+$(OBJDIR)/iupmot_frame.o: mot/iupmot_frame.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_childtree.h iup_attrib.h iup_str.h iup_dialog.h \
+ iup_image.h iup_drv.h iup_drvfont.h iup_stdcontrols.h mot/iupmot_drv.h \
+ mot/iupmot_color.h
+$(OBJDIR)/iupmot_button.o: mot/iupmot_button.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \
+ iup_str.h iup_button.h iup_drv.h iup_image.h iup_key.h mot/iupmot_drv.h
+$(OBJDIR)/iupmot_toggle.o: mot/iupmot_toggle.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \
+ iup_str.h iup_toggle.h iup_drv.h iup_image.h iup_key.h mot/iupmot_drv.h \
+ mot/iupmot_color.h
+$(OBJDIR)/iupmot_progressbar.o: mot/iupmot_progressbar.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \
+ iup_object.h iup_class.h iup_table.h iup_classbase.h iup_childtree.h \
+ iup_attrib.h iup_dialog.h iup_str.h iup_progressbar.h iup_drv.h \
+ mot/iupmot_drv.h mot/iupmot_color.h
+$(OBJDIR)/iupmot_clipboard.o: mot/iupmot_clipboard.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_image.h \
+ mot/iupmot_drv.h
+$(OBJDIR)/iupmot_text.o: mot/iupmot_text.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \
+ iup_str.h iup_mask.h iup_drv.h iup_array.h iup_text.h mot/iupmot_drv.h \
+ mot/iupmot_color.h
+$(OBJDIR)/iupmot_val.o: mot/iupmot_val.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \
+ iup_str.h iup_val.h iup_image.h iup_drv.h mot/iupmot_drv.h \
+ mot/iupmot_color.h
+$(OBJDIR)/iupmot_tabs.o: mot/iupmot_tabs.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_layout.h iup_childtree.h iup_attrib.h \
+ iup_str.h iup_dialog.h iup_drv.h iup_drvfont.h iup_stdcontrols.h \
+ iup_tabs.h iup_image.h mot/iupmot_drv.h mot/iupmot_color.h
+$(OBJDIR)/iupmot_menu.o: mot/iupmot_menu.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \
+ iup_str.h iup_label.h iup_drv.h iup_drvfont.h iup_image.h iup_menu.h \
+ mot/iupmot_drv.h mot/iupmot_color.h
+$(OBJDIR)/iupmot_list.o: mot/iupmot_list.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \
+ iup_str.h iup_drv.h iup_mask.h iup_key.h iup_list.h mot/iupmot_drv.h \
+ mot/iupmot_color.h
+$(OBJDIR)/iupmot_tree.o: mot/iupmot_tree.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_childtree.h iup_dialog.h iup_layout.h \
+ iup_attrib.h iup_str.h iup_drv.h iup_drvinfo.h iup_drvfont.h \
+ iup_stdcontrols.h iup_key.h iup_image.h iup_array.h iup_tree.h \
+ mot/iupmot_drv.h mot/iupmot_color.h
+$(OBJDIR)/iupunix_help.o: mot/iupunix_help.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_str.h
+$(OBJDIR)/iupunix_info.o: mot/iupunix_info.c iup_str.h iup_drvinfo.h
diff --git a/iup/src/iup_array.c b/iup/src/iup_array.c
new file mode 100755
index 0000000..e7d4e12
--- /dev/null
+++ b/iup/src/iup_array.c
@@ -0,0 +1,108 @@
+/** \file
+ * \brief Simple expandable array
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+
+#include "iup_array.h"
+#include "iup_assert.h"
+
+
+struct _Iarray
+{
+ void* data;
+ int count;
+ int max_count;
+ int elem_size;
+ int start_count;
+};
+
+Iarray* iupArrayCreate(int start_count, int elem_size)
+{
+ Iarray* iarray = (Iarray*)malloc(sizeof(Iarray));
+ iarray->count = 0;
+ iarray->elem_size = elem_size;
+ iarray->max_count = start_count;
+ iarray->start_count = start_count;
+ iarray->data = malloc(elem_size*start_count);
+ iupASSERT(iarray->data!=NULL);
+ if (!iarray->data)
+ {
+ free(iarray);
+ return NULL;
+ }
+ memset(iarray->data, 0, elem_size*start_count);
+ return iarray;
+}
+
+void iupArrayDestroy(Iarray* iarray)
+{
+ iupASSERT(iarray!=NULL);
+ if (!iarray)
+ return;
+ if (iarray->data)
+ {
+ memset(iarray->data, 0, iarray->elem_size*iarray->max_count);
+ free(iarray->data);
+ }
+ free(iarray);
+}
+
+void* iupArrayGetData(Iarray* iarray)
+{
+ iupASSERT(iarray!=NULL);
+ if (!iarray)
+ return NULL;
+ return iarray->data;
+}
+
+void* iupArrayInc(Iarray* iarray)
+{
+ iupASSERT(iarray!=NULL);
+ if (!iarray)
+ return NULL;
+ if (iarray->count >= iarray->max_count)
+ {
+ int old_count = iarray->max_count;
+ iarray->max_count += iarray->start_count;
+ iarray->data = realloc(iarray->data, iarray->elem_size*iarray->max_count);
+ iupASSERT(iarray->data!=NULL);
+ if (!iarray->data)
+ return NULL;
+ memset((unsigned char*)iarray->data + iarray->elem_size*old_count, 0, iarray->elem_size*(iarray->max_count-old_count));
+ }
+ iarray->count++;
+ return iarray->data;
+}
+
+void* iupArrayAdd(Iarray* iarray, int new_count)
+{
+ iupASSERT(iarray!=NULL);
+ if (!iarray)
+ return NULL;
+ if (iarray->count+new_count > iarray->max_count)
+ {
+ int old_count = iarray->max_count;
+ iarray->max_count += new_count;
+ iarray->data = realloc(iarray->data, iarray->elem_size*iarray->max_count);
+ iupASSERT(iarray->data!=NULL);
+ if (!iarray->data)
+ return NULL;
+ memset((unsigned char*)iarray->data + iarray->elem_size*old_count, 0, iarray->elem_size*(iarray->max_count-old_count));
+ }
+ iarray->count += new_count;
+ return iarray->data;
+}
+
+int iupArrayCount(Iarray* iarray)
+{
+ iupASSERT(iarray!=NULL);
+ if (!iarray)
+ return 0;
+ return iarray->count;
+}
diff --git a/iup/src/iup_array.h b/iup/src/iup_array.h
new file mode 100755
index 0000000..b44e862
--- /dev/null
+++ b/iup/src/iup_array.h
@@ -0,0 +1,63 @@
+/** \file
+ * \brief Simple expandable array
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_ARRAY_H
+#define __IUP_ARRAY_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/** \defgroup iarray Simple Array
+ * \par
+ * Expandable array using a simple pointer.
+ * \par
+ * See \ref iup_array.h
+ * \ingroup util */
+
+typedef struct _Iarray Iarray;
+
+/** Creates an array with an initial room for elements, and the element size.
+ * The array count starts at 0. And the maximum number of elements starts at the given count.
+ * The maximum number of elements is increased by the start count, every time it needs more memory.
+ * Must call \ref iupArrayInc to proper allocates memory.
+ * \ingroup iarray */
+Iarray* iupArrayCreate(int start_count, int elem_size);
+
+/** Destroys the array.
+ * \ingroup iarray */
+void iupArrayDestroy(Iarray* iarray);
+
+/** Returns the pointer that contains the array.
+ * \ingroup iarray */
+void* iupArrayGetData(Iarray* iarray);
+
+/** Increments the number of elements in the array.
+ * The array count starts at 0.
+ * If the maximum number of elements is reached, the memory allocated is increased by the initial start count.
+ * Returns the pointer that contains the array.
+ * \ingroup iarray */
+void* iupArrayInc(Iarray* iarray);
+
+/** Increments the number of elements in the array by a given count.
+ * The array count starts at 0.
+ * If the maximum number of elements is reached, the memory allocated is increased by the given count.
+ * Returns the pointer that contains the array.
+ * \ingroup iarray */
+void* iupArrayAdd(Iarray* iarray, int new_count);
+
+/** Returns the actual number of elements in the array.
+ * \ingroup iarray */
+int iupArrayCount(Iarray* iarray);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_assert.c b/iup/src/iup_assert.c
new file mode 100755
index 0000000..11de909
--- /dev/null
+++ b/iup/src/iup_assert.c
@@ -0,0 +1,54 @@
+/** \file
+ * \brief String Utilities
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <limits.h>
+#include <stdarg.h>
+
+#include "iup.h"
+
+#include "iup_assert.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_strmessage.h"
+
+/* from iup_open, but it is not exported, used only here */
+int iupIsOpened(void);
+
+void iupError(const char* format, ...)
+{
+ static char msg[SHRT_MAX];
+ va_list arglist;
+ va_start(arglist, format);
+ vsprintf(msg, format, arglist);
+ va_end(arglist);
+#if IUP_ASSERT_CONSOLE
+ fprintf(stderr, msg);
+#else
+ if (iupIsOpened())
+ iupStrMessageShowError(NULL, msg);
+ else
+ fprintf(stderr, msg);
+#endif
+}
+
+void iupAssert(const char* expr, const char* file, int line, const char* func)
+{
+ if (func)
+ iupError("File: %s\n"
+ "Line: %d\n"
+ "Function: %s\n"
+ "Assertive: (%s)",
+ file, line, func, expr);
+ else
+ iupError("File: %s\n"
+ "Line: %d\n"
+ "Assertive: (%s)",
+ file, line, expr);
+}
diff --git a/iup/src/iup_assert.h b/iup/src/iup_assert.h
new file mode 100755
index 0000000..03cec99
--- /dev/null
+++ b/iup/src/iup_assert.h
@@ -0,0 +1,68 @@
+/** \file
+ * \brief Assert Utilities
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#ifndef __IUP_ASSERT_H
+#define __IUP_ASSERT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup assert Assert Utilities
+ * \par
+ * All functions of the main API (Iup***) calls iupASSERT to check the parameters.
+ * \par
+ * The IUP main library must be recompiled with the IUP_ASSERT define to enable these checks.
+ * iupASSERT is not called inside driver dependent functions nor in each control implementation,
+ * it is used only in the functions of the main API and in some utilities.
+ * \par
+ * See \ref iup_assert.h
+ * \ingroup util */
+
+/* internal functions */
+void iupAssert(const char* expr, const char* file, int line, const char* func);
+void iupError(const char* format, ...);
+
+/** \def iupASSERT
+ * \brief If the expression if false,
+ * displays a message with information of the source code where the assert happen.
+ *
+ * \param _expr The evaluated expression.
+ * \par
+ * It is a macro that calls a function only if IUP_ASSERT is defined.
+ * \ingroup assert */
+
+/** \def iupERROR
+ * \brief Displays an error message. Also used by the iupASSERT.
+ * \par
+ * It is a macro that calls a function only if IUP_ASSERT is defined.
+ * \ingroup assert */
+
+#ifndef IUP_ASSERT
+#define iupASSERT(_expr) ((void)0)
+#define iupERROR(_msg) ((void)0)
+#define iupERROR1(_msg, _p1) ((void)0)
+#define iupERROR2(_msg, _p1, _p2) ((void)0)
+#else
+#ifdef __FUNCTION__
+#define iupASSERT(_expr) ((_expr)? (void)0: iupAssert(#_expr, __FILE__, __LINE__, __FUNCTION__))
+#else
+#define iupASSERT(_expr) ((_expr)? (void)0: iupAssert(#_expr, __FILE__, __LINE__, NULL))
+#endif /* __FUNCTION__ */
+
+#define iupERROR(_msg) iupError(_msg)
+#define iupERROR1(_msg, _p1) iupError(_msg, _p1)
+#define iupERROR2(_msg, _p1, _p2) iupError(_msg, _p1, _p2)
+
+#endif /* IUP_ASSERT */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_attrib.c b/iup/src/iup_attrib.c
new file mode 100755
index 0000000..2bbb80a
--- /dev/null
+++ b/iup/src/iup_attrib.c
@@ -0,0 +1,673 @@
+/** \file
+ * \brief attributes enviroment management
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <limits.h>
+#include <stdarg.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_str.h"
+#include "iup_ledlex.h"
+#include "iup_attrib.h"
+#include "iup_assert.h"
+
+
+int IupGetAllAttributes(Ihandle* ih, char** names, int n)
+{
+ char *name;
+ int i = 0;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return 0;
+
+ if (!names || !n)
+ return iupTableCount(ih->attrib);
+
+ name = iupTableFirst(ih->attrib);
+ while (name)
+ {
+ names[i] = name;
+ i++;
+ if (i == n)
+ break;
+
+ name = iupTableNext(ih->attrib);
+ }
+
+ return i;
+}
+
+char* IupGetAttributes(Ihandle *ih)
+{
+ char *buffer;
+ char *name, *value;
+ char sb[128];
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ buffer = iupStrGetMemory(10240);
+ buffer[0] = 0;
+
+ name = iupTableFirst(ih->attrib);
+ while (name)
+ {
+ if (!iupAttribIsInternal(name))
+ {
+ if (buffer[0] != 0)
+ strcat(buffer,",");
+
+ value = iupTableGetCurr(ih->attrib);
+ if (iupAttribIsPointer(ih, name))
+ {
+ sprintf(sb, "%p", (void*) value);
+ value = sb;
+ }
+ strcat(buffer, name);
+ strcat(buffer,"=\"");
+ strcat(buffer, value);
+ strcat(buffer,"\"");
+ }
+
+ name = iupTableNext(ih->attrib);
+ }
+
+ return buffer;
+}
+
+void iupAttribUpdateFromParent(Ihandle* ih)
+{
+ Iclass* ic = ih->iclass;
+ char *name = iupTableFirst(ic->attrib_func);
+ while (name)
+ {
+ /* if inheritable and NOT defined at the element */
+ if (iupClassObjectCurAttribIsInherit(ic) && !iupAttribGet(ih, name))
+ {
+ /* check in the parent tree if the attribute is defined */
+ Ihandle* parent = ih->parent;
+ while (parent)
+ {
+ char* value = iupTableGet(parent->attrib, name);
+ if (value)
+ {
+ int inherit;
+ /* set on the class */
+ iupClassObjectSetAttribute(ih, name, value, &inherit);
+ break;
+ }
+ parent = parent->parent;
+ }
+ }
+
+ name = iupTableNext(ic->attrib_func);
+ }
+}
+
+static void iAttribNotifyChildren(Ihandle *ih, const char* name, const char *value)
+{
+ int inherit;
+ Ihandle* child = ih->firstchild;
+ while (child)
+ {
+ if (!iupTableGet(child->attrib, name))
+ {
+ /* set on the class */
+ iupClassObjectSetAttribute(child, name, value, &inherit);
+
+ if (inherit) /* inherit can be different for the child */
+ iAttribNotifyChildren(child, name, value);
+ }
+
+ child = child->brother;
+ }
+}
+
+void iupAttribUpdate(Ihandle* ih)
+{
+ char** name_array;
+ char *name, *value;
+ int count, i = 0, inherit, store;
+
+ count = iupTableCount(ih->attrib);
+ if (!count)
+ return;
+
+ name_array = (char**)malloc(count * sizeof(char*));
+
+ /* store the names before updating so we can add or remove attributes during the update */
+ name = iupTableFirst(ih->attrib);
+ while (name)
+ {
+ name_array[i] = name;
+ name = iupTableNext(ih->attrib);
+ i++;
+ }
+
+ /* for all defined attributes updates the native system */
+ for (i = 0; i < count; i++)
+ {
+ name = name_array[i];
+ if (!iupAttribIsInternal(name))
+ {
+ /* retrieve from the table */
+ value = iupTableGet(ih->attrib, name);
+
+ /* set on the class */
+ store = iupClassObjectSetAttribute(ih, name, value, &inherit);
+
+ if (inherit)
+ iAttribNotifyChildren(ih, name, value);
+
+ if (store == 0)
+ iupTableRemove(ih->attrib, name); /* remove from the table acording to the class SetAttribute */
+ }
+ }
+
+ free(name_array);
+}
+
+void IupSetAttribute(Ihandle *ih, const char* name, const char *value)
+{
+ int inherit;
+
+ iupASSERT(name!=NULL);
+ if (!name)
+ return;
+
+ if (!ih)
+ {
+ IupSetGlobal(name, value);
+ return;
+ }
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ if (iupAttribIsInternal(name))
+ iupAttribSetStr(ih, name, value);
+ else
+ {
+ if (iupClassObjectSetAttribute(ih, name, value, &inherit)!=0) /* store strings and pointers */
+ iupAttribSetStr(ih, name, value);
+
+ if (inherit)
+ iAttribNotifyChildren(ih, name, value);
+ }
+}
+
+void IupStoreAttribute(Ihandle *ih, const char* name, const char *value)
+{
+ int inherit;
+
+ if (!name)
+ return;
+
+ if (!ih)
+ {
+ IupStoreGlobal(name, value);
+ return;
+ }
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ if (iupAttribIsInternal(name))
+ iupAttribStoreStr(ih, name, value);
+ else
+ {
+ if (iupClassObjectSetAttribute(ih, name, value, &inherit)==1) /* store only strings */
+ iupAttribStoreStr(ih, name, value);
+
+ if (inherit)
+ iAttribNotifyChildren(ih, name, value);
+ }
+}
+
+char* IupGetAttribute(Ihandle *ih, const char* name)
+{
+ int inherit;
+ char *value, *def_value;
+
+ iupASSERT(name!=NULL);
+ if (!name)
+ return NULL;
+
+ if (!ih)
+ return IupGetGlobal(name);
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ value = iupClassObjectGetAttribute(ih, name, &def_value, &inherit);
+ if (!value)
+ value = iupAttribGet(ih, name);
+
+ if (!value && !iupAttribIsInternal(name))
+ {
+ if (inherit)
+ {
+ while (!value)
+ {
+ ih = ih->parent;
+ if (!ih)
+ break;
+
+ value = iupAttribGet(ih, name);
+ }
+ }
+
+ if (!value)
+ value = def_value;
+ }
+
+ return value;
+}
+
+float IupGetFloat(Ihandle *ih, const char* name)
+{
+ float f = 0;
+ char *value = IupGetAttribute(ih, name);
+ if (value)
+ iupStrToFloat(value, &f);
+ return f;
+}
+
+int IupGetInt(Ihandle *ih, const char* name)
+{
+ int i = 0;
+ char *value = IupGetAttribute(ih, name);
+ if (value)
+ {
+ if (!iupStrToInt(value, &i))
+ {
+ if (iupStrBoolean(value))
+ i = 1;
+ }
+ }
+ return i;
+}
+
+int IupGetInt2(Ihandle *ih, const char* name)
+{
+ int i1 = 0, i2 = 0;
+ char *value = IupGetAttribute(ih, name);
+ if (value)
+ {
+ if (!iupStrToIntInt(value, &i1, &i2, 'x'))
+ iupStrToIntInt(value, &i1, &i2, ':');
+ }
+ return i2;
+}
+
+int IupGetIntInt(Ihandle *ih, const char* name, int *i1, int *i2)
+{
+ int _i1 = 0, _i2 = 0;
+ char *value = IupGetAttribute(ih, name);
+ if (value)
+ {
+ int count = iupStrToIntInt(value, &_i1, &_i2, 'x');
+ if (!count) count = iupStrToIntInt(value, &_i1, &_i2, ':');
+ if (i1) *i1 = _i1;
+ if (i2) *i2 = _i2;
+ return count;
+ }
+ return 0;
+}
+
+void IupSetfAttribute(Ihandle *ih, const char* name, const char* f, ...)
+{
+ static char value[SHRT_MAX];
+ va_list arglist;
+ va_start(arglist, f);
+ vsprintf(value, f, arglist);
+ va_end(arglist);
+ IupStoreAttribute(ih, name, value);
+}
+
+void iupAttribSetHandleName(Ihandle *ih)
+{
+ char str_name[100];
+ sprintf(str_name, "_IUP_NAME(%p)", ih);
+ IupSetHandle(str_name, ih);
+}
+
+void IupSetAttributeHandle(Ihandle *ih, const char* name, Ihandle *ih_named)
+{
+ int inherit;
+ char* handle_name;
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+ iupASSERT(name!=NULL);
+ if (!name)
+ return;
+
+ handle_name = IupGetName(ih_named);
+ if (!handle_name)
+ {
+ iupAttribSetHandleName(ih_named);
+ handle_name = IupGetName(ih_named);
+ }
+
+ iupClassObjectSetAttribute(ih, name, handle_name, &inherit);
+ iupAttribStoreStr(ih, name, handle_name);
+}
+
+Ihandle* IupGetAttributeHandle(Ihandle *ih, const char* name)
+{
+ char* handle_name = iupAttribGetInherit(ih, name);
+ if (handle_name)
+ return IupGetHandle(handle_name);
+ return NULL;
+}
+
+Ihandle* IupSetAtt(const char* handle_name, Ihandle* ih, const char* name, ...)
+{
+ const char *attr, *val;
+ va_list arg;
+ va_start (arg, name);
+ attr = name;
+ while (attr)
+ {
+ val = va_arg(arg, const char*);
+ IupSetAttribute(ih, attr, val);
+ attr = va_arg(arg, const char*);
+ }
+ va_end(arg);
+ if (handle_name) IupSetHandle(handle_name, ih);
+ return ih;
+}
+
+void iupAttribSetStr(Ihandle* ih, const char* name, const char* value)
+{
+ if (!value)
+ iupTableRemove(ih->attrib, name);
+ else
+ iupTableSet(ih->attrib, name, (void*)value, IUPTABLE_POINTER);
+}
+
+void iupAttribStoreStr(Ihandle* ih, const char* name, const char* value)
+{
+ if (!value)
+ iupTableRemove(ih->attrib, name);
+ else
+ iupTableSet(ih->attrib, name, (void*)value, IUPTABLE_STRING);
+}
+
+void iupAttribSetStrf(Ihandle *ih, const char* name, const char* f, ...)
+{
+ static char value[SHRT_MAX];
+ va_list arglist;
+ va_start(arglist, f);
+ vsprintf(value, f, arglist);
+ va_end(arglist);
+ iupAttribStoreStr(ih, name, value);
+}
+
+void iupAttribSetInt(Ihandle *ih, const char* name, int num)
+{
+ iupAttribSetStrf(ih, name, "%d", num);
+}
+
+void iupAttribSetFloat(Ihandle *ih, const char* name, float num)
+{
+ iupAttribSetStrf(ih, name, "%f", (double)num);
+}
+
+int iupAttribGetBoolean(Ihandle* ih, const char* name)
+{
+ char *value = iupAttribGetStr(ih, name);
+ if (value)
+ {
+ if (iupStrBoolean(value))
+ return 1;
+ }
+ return 0;
+}
+
+int iupAttribGetInt(Ihandle* ih, const char* name)
+{
+ int i = 0;
+ char *value = iupAttribGetStr(ih, name);
+ if (value)
+ {
+ if (!iupStrToInt(value, &i))
+ {
+ if (iupStrBoolean(value))
+ i = 1;
+ }
+ }
+ return i;
+}
+
+float iupAttribGetFloat(Ihandle* ih, const char* name)
+{
+ float f = 0;
+ char *value = iupAttribGetStr(ih, name);
+ if (value)
+ iupStrToFloat(value, &f);
+ return f;
+}
+
+char* iupAttribGet(Ihandle* ih, const char* name)
+{
+ if (!ih || !name)
+ return NULL;
+ return iupTableGet(ih->attrib, name);
+}
+
+char* iupAttribGetStr(Ihandle* ih, const char* name)
+{
+ char* value;
+ if (!ih || !name)
+ return NULL;
+
+ value = iupTableGet(ih->attrib, name);
+
+ if (!value && !iupAttribIsInternal(name))
+ {
+ int inherit;
+ char *def_value;
+ iupClassObjectGetAttributeInfo(ih, name, &def_value, &inherit);
+
+ if (inherit)
+ {
+ while (!value)
+ {
+ ih = ih->parent;
+ if (!ih)
+ break;
+
+ value = iupAttribGet(ih, name);
+ }
+ }
+
+ if (!value)
+ value = def_value;
+ }
+
+ return value;
+}
+
+char* iupAttribGetInherit(Ihandle* ih, const char* name)
+{
+ char* value;
+ if (!ih || !name)
+ return NULL;
+
+ value = iupAttribGet(ih, name); /* Check on the element first */
+ while (!value)
+ {
+ ih = ih->parent; /* iheritance here independs on the attribute */
+ if (!ih)
+ return NULL;
+
+ value = iupAttribGet(ih, name);
+ }
+ return value;
+}
+
+char* iupAttribGetInheritNativeParent(Ihandle* ih, const char* name)
+{
+ char* value;
+ if (!ih || !name)
+ return NULL;
+
+ value = NULL; /* Do NOT check on the element first */
+ while (!value)
+ {
+ ih = iupChildTreeGetNativeParent(ih);
+ if (!ih)
+ return NULL;
+
+ value = iupAttribGet(ih, name);
+ }
+
+ return value;
+}
+
+static const char* env_str = NULL;
+static void iAttribCapture(char* env_buffer, char* dlm)
+{
+ int i=0;
+ int c;
+ do
+ {
+ c = *env_str; ++env_str;
+ if (i < 256)
+ env_buffer[i++] = (char) c;
+ } while (c && !strchr(dlm,c));
+ env_buffer[i-1]='\0'; /* discard delimiter */
+}
+
+static int iAttribToken(char* env_buffer)
+{
+ for (;;)
+ {
+ int c = *env_str; ++env_str;
+ switch (c)
+ {
+ case 0:
+ return IUPLEX_TK_END;
+
+ case ' ': /* ignore whitespace */
+ case '\t':
+ case '\n':
+ case '\r':
+ case '\f':
+ case '\v':
+ continue;
+
+ case '=': /* attribuicao */
+ return IUPLEX_TK_SET;
+
+ case ',':
+ return IUPLEX_TK_COMMA;
+
+ case '\"': /* string */
+ iAttribCapture(env_buffer, "\"");
+ return IUPLEX_TK_NAME;
+
+ default:
+ if (c > 32) /* identifier */
+ {
+ --env_str; /* unget first character of env_buffer */
+ iAttribCapture(env_buffer, "=, \t\n\r\f\v"); /* get env_buffer until delimiter */
+ --env_str; /* unget delimiter */
+ return IUPLEX_TK_NAME;
+ }
+ }
+ }
+}
+
+static void iAttribParse(Ihandle *ih, const char* str)
+{
+ char env_buffer[256];
+ char* name=NULL;
+ char* value=NULL;
+ char state = 'a'; /* get attribute */
+ int end = 0;
+
+ env_str = str;
+
+ for (;;)
+ {
+ switch (iAttribToken(env_buffer))
+ {
+ case IUPLEX_TK_END: /* procedimento igual ao IUPLEX_TK_COMMA */
+ end = 1;
+ case IUPLEX_TK_COMMA:
+ if (name)
+ {
+ IupStoreAttribute(ih, name, value);
+ free(name);
+ }
+ if (end)
+ return;
+ name = value = NULL;
+ state = 'a';
+ break;
+
+ case IUPLEX_TK_SET:
+ state = 'v'; /* get value */
+ break;
+
+ case IUPLEX_TK_NAME:
+ if (state == 'a')
+ name = iupStrDup(env_buffer);
+ else
+ value = env_buffer;
+ break;
+ }
+ }
+}
+
+Ihandle* IupSetAttributes(Ihandle *ih, const char* str)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return ih;
+ if (str)
+ iAttribParse(ih, str);
+ return ih;
+}
+
+int iupAttribIsPointer(Ihandle* ih, const char* name)
+{
+ return iupClassObjectAttribIsNotString(ih, name);
+}
+
+typedef int (*Iconvertxytopos)(Ihandle* ih, int x, int y);
+
+int IupConvertXYToPos(Ihandle* ih, int x, int y)
+{
+ Iconvertxytopos drvConvertXYToPos;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return -1;
+
+ if (!ih->handle)
+ return -1;
+
+ drvConvertXYToPos = (Iconvertxytopos)IupGetCallback(ih, "_IUP_XY2POS_CB");
+ if (drvConvertXYToPos)
+ return drvConvertXYToPos(ih, x, y);
+
+ return -1;
+}
diff --git a/iup/src/iup_attrib.h b/iup/src/iup_attrib.h
new file mode 100755
index 0000000..993dd3c
--- /dev/null
+++ b/iup/src/iup_attrib.h
@@ -0,0 +1,137 @@
+/** \file
+ * \brief Attributes Environment Management
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_ATTRIB_H
+#define __IUP_ATTRIB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** \defgroup attrib Attribute Environment
+ * \par
+ * When attributes are not stored at the control
+ * they are stored in a hash table (see \ref table).
+ * \par
+ * As a general rule use:
+ * - IupGetAttribute, IupSetAttribute, ... : when care about control implementation, hash table, inheritance and default value
+ * - iupAttribGetStr,Int,Float: when care about inheritance, hash table and default value
+ * - iupAttribGet,... : ONLY access the hash table
+ * These different functions have very different performances and results. So use them wiselly.
+ * \par
+ * See \ref iup_attrib.h
+ * \ingroup cpi */
+
+
+/** Returns true if the attribute name if in the internal format "_IUP...".
+ * \ingroup attrib */
+#define iupAttribIsInternal(_name) ((_name[0] == '_' && _name[1] == 'I' && _name[2] == 'U' && _name[3] == 'P')? 1: 0)
+
+/** Returns true if the attribute name is a known pointer.
+ * \ingroup attrib */
+int iupAttribIsPointer(Ihandle* ih, const char *name);
+
+/** Sets the attribute only in the hash table as a pointer.
+ * It ignores children.
+ * \ingroup attrib */
+void iupAttribSetStr(Ihandle* ih, const char* name, const char* value);
+
+/** Sets the attribute only in the hash table as a string.
+ * The string is internally duplicated.
+ * It ignores children.
+ * \ingroup attrib */
+void iupAttribStoreStr(Ihandle* ih, const char* name, const char* value);
+
+/** Sets the attribute only in the hash table as a string.
+ * The string is internally duplicated. Use same format as sprintf.
+ * It ignores children.
+ * \ingroup attrib */
+void iupAttribSetStrf(Ihandle *ih, const char* name, const char* format, ...);
+
+/** Sets an integer attribute only in the hash table.
+ * It will be stored as a string.
+ * It ignores children.
+ * \ingroup attrib */
+void iupAttribSetInt(Ihandle *ih, const char* name, int num);
+
+/** Sets an floating point attribute only in the hash table.
+ * It will be stored as a string.
+ * It ignores children.
+ * \ingroup attrib */
+void iupAttribSetFloat(Ihandle *ih, const char* name, float num);
+
+/** Returns the attribute from the hash table only.
+ * \ingroup attrib */
+char* iupAttribGet(Ihandle* ih, const char* name);
+
+/** Returns the attribute from the hash table only,
+ * but if not defined then checks in its parent tree.
+ * \ingroup attrib */
+char* iupAttribGetInherit(Ihandle* ih, const char* name);
+
+/** Returns the attribute from the hash table of a native parent.
+ * Don't check for default values. Don't check at the element.
+ * Used for BGCOLOR and BACKGROUND attributes.
+ * \ingroup attrib */
+char* iupAttribGetInheritNativeParent(Ihandle* ih, const char* name);
+
+/** Returns the attribute from the hash table as a string,
+ * but if not defined then checks in its parent tree if allowed by the control implementation,
+ * if still not defined then returns the registered default value if any.
+ * \ingroup attrib */
+char* iupAttribGetStr(Ihandle* ih, const char* name);
+
+/** Same as \ref iupAttribGetStr but returns an integer number.
+ * Checks also for boolean values.
+ * \ingroup attrib */
+int iupAttribGetInt(Ihandle* ih, const char* name);
+
+/** Same as \ref iupAttribGetStr but checks for boolean values.
+ * Use \ref iupStrBoolean.
+ * \ingroup attrib */
+int iupAttribGetBoolean(Ihandle* ih, const char* name);
+
+/** Same as \ref iupAttribGetStr but returns an floating point number.
+ * \ingroup attrib */
+float iupAttribGetFloat(Ihandle* ih, const char* name);
+
+/** Set an internal name to a handle.
+ * \ingroup attrib */
+void iupAttribSetHandleName(Ihandle *ih);
+
+
+/* For all attributes in the evironment, call the class SetAttribute only.
+ * Called only after the element is mapped. */
+void iupAttribUpdate(Ihandle* ih);
+
+/* For all registered inherited attributes, checks the parent tree and
+ * call the class SetAttribute if the attribute is defined.
+ * Called only after the element is mapped. */
+void iupAttribUpdateFromParent(Ihandle* ih);
+
+
+
+/* Other functions declared in <iup.h> and implemented here.
+IupGetAllAttributes
+IupGetAttributes
+IupSetAttributes
+IupSetAttribute
+IupStoreAttribute
+IupGetAttribute
+IupGetFloat
+IupGetInt
+IupGetInt2
+IupSetfAttribute
+IupSetAttributeHandle
+IupGetAttributeHandle
+*/
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_box.c b/iup/src/iup_box.c
new file mode 100755
index 0000000..54e56d9
--- /dev/null
+++ b/iup/src/iup_box.c
@@ -0,0 +1,238 @@
+/** \file
+ * \brief Base for box Controls.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_box.h"
+
+
+static int iBoxCreateMethod(Ihandle* ih, void** params)
+{
+ ih->data = iupALLOCCTRLDATA();
+
+ if (params)
+ {
+ Ihandle** iparams = (Ihandle**)params;
+ while (*iparams)
+ {
+ IupAppend(ih, *iparams);
+ iparams++;
+ }
+ }
+
+ return IUP_NOERROR;
+}
+
+static char* iBoxGetClientSizeAttrib(Ihandle* ih)
+{
+ char* str;
+ int width, height;
+
+ if (ih->handle)
+ {
+ width = ih->currentwidth;
+ height = ih->currentheight;
+ }
+ else
+ {
+ width = ih->userwidth;
+ height = ih->userheight;
+ }
+
+ if (!width && !height)
+ return NULL;
+
+ str = iupStrGetMemory(50);
+
+ width -= 2*ih->data->margin_x;
+ height -= 2*ih->data->margin_y;
+
+ sprintf(str, "%dx%d", width, height);
+ return str;
+}
+
+static int iBoxSetCGapAttrib(Ihandle* ih, const char* value)
+{
+ int cgap;
+ iupStrToInt(value, &cgap);
+ if (iupStrEqual(ih->iclass->name, "vbox"))
+ {
+ int charheight;
+ iupdrvFontGetCharSize(ih, NULL, &charheight);
+ ih->data->gap = iupHEIGHT2RASTER(cgap, charheight);
+ }
+ else
+ {
+ int charwidth;
+ iupdrvFontGetCharSize(ih, &charwidth, NULL);
+ ih->data->gap = iupWIDTH2RASTER(cgap, charwidth);
+ }
+ return 0;
+}
+
+static char* iBoxGetCGapAttrib(Ihandle* ih)
+{
+ char *str = iupStrGetMemory(50);
+ if (iupStrEqual(ih->iclass->name, "vbox"))
+ {
+ int charheight;
+ iupdrvFontGetCharSize(ih, NULL, &charheight);
+ sprintf(str, "%d", iupRASTER2HEIGHT(ih->data->gap, charheight));
+ }
+ else
+ {
+ int charwidth;
+ iupdrvFontGetCharSize(ih, &charwidth, NULL);
+ sprintf(str, "%d", iupRASTER2WIDTH(ih->data->gap, charwidth));
+ }
+ return str;
+}
+
+static int iBoxSetGapAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToInt(value, &ih->data->gap);
+ return 0;
+}
+
+static char* iBoxGetGapAttrib(Ihandle* ih)
+{
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%d", ih->data->gap);
+ return str;
+}
+
+static int iBoxSetHomogeneousAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ ih->data->is_homogeneous = 1;
+ else
+ ih->data->is_homogeneous = 0;
+ return 0;
+}
+
+static char* iBoxGetHomogeneousAttrib(Ihandle* ih)
+{
+ if (ih->data->is_homogeneous)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iBoxSetExpandChildrenAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ {
+ if (iupStrEqual(ih->iclass->name, "vbox"))
+ ih->data->expand_children = IUP_EXPAND_WIDTH; /* in vert. box, expand horizontally */
+ else
+ ih->data->expand_children = IUP_EXPAND_HEIGHT; /* in horiz. box, expand vertically */
+ }
+ else
+ ih->data->expand_children = 0;
+ return 0;
+}
+
+static char* iBoxGetExpandChildrenAttrib(Ihandle* ih)
+{
+ if (ih->data->expand_children)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iBoxSetNormalizeSizeAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->normalize_size = iupNormalizeGetNormalizeSize(value);
+ return 0;
+}
+
+static char* iBoxGetNormalizeSizeAttrib(Ihandle* ih)
+{
+ return iupNormalizeGetNormalizeSizeStr(ih->data->normalize_size);
+}
+
+static int iBoxSetCMarginAttrib(Ihandle* ih, const char* value)
+{
+ int cmargin_x=-1, cmargin_y=-1;
+ int charwidth, charheight;
+ iupdrvFontGetCharSize(ih, &charwidth, &charheight);
+ iupStrToIntInt(value, &cmargin_x, &cmargin_y, 'x');
+ if (cmargin_x!=-1)
+ ih->data->margin_x = iupHEIGHT2RASTER(cmargin_x, charheight);
+ if (cmargin_y!=-1)
+ ih->data->margin_x = iupWIDTH2RASTER(cmargin_y, charwidth);
+ return 0;
+}
+
+static char* iBoxGetCMarginAttrib(Ihandle* ih)
+{
+ char *str = iupStrGetMemory(50);
+ int charwidth, charheight;
+ iupdrvFontGetCharSize(ih, &charwidth, &charheight);
+ sprintf(str, "%dx%d", iupRASTER2WIDTH(ih->data->margin_x, charwidth), iupRASTER2HEIGHT(ih->data->margin_y, charheight));
+ return str;
+}
+
+static int iBoxSetMarginAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->margin_x, &ih->data->margin_y, 'x');
+ return 0;
+}
+
+static char* iBoxGetMarginAttrib(Ihandle* ih)
+{
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%dx%d", ih->data->margin_x, ih->data->margin_y);
+ return str;
+}
+
+
+/******************************************************************************/
+
+
+Iclass* iupBoxClassBase(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->format = "g"; /* array of Ihandle */
+ ic->nativetype = IUP_TYPEVOID;
+ ic->childtype = IUP_CHILDMANY;
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Create = iBoxCreateMethod;
+ ic->Map = iupBaseTypeVoidMapMethod;
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Base Container */
+ iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CLIENTSIZE", iBoxGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* boxes only */
+ iupClassRegisterAttribute(ic, "GAP", iBoxGetGapAttrib, iBoxSetGapAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "CGAP", iBoxGetCGapAttrib, iBoxSetCGapAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "MARGIN", iBoxGetMarginAttrib, iBoxSetMarginAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "CMARGIN", iBoxGetCMarginAttrib, iBoxSetCMarginAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+
+ iupClassRegisterAttribute(ic, "EXPANDCHILDREN", iBoxGetExpandChildrenAttrib, iBoxSetExpandChildrenAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "HOMOGENEOUS", iBoxGetHomogeneousAttrib, iBoxSetHomogeneousAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "NORMALIZESIZE", iBoxGetNormalizeSizeAttrib, iBoxSetNormalizeSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
diff --git a/iup/src/iup_box.h b/iup/src/iup_box.h
new file mode 100755
index 0000000..5d79263
--- /dev/null
+++ b/iup/src/iup_box.h
@@ -0,0 +1,40 @@
+/** \file
+ * \brief Base for box Controls.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_BOX_H
+#define __IUP_BOX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+struct _IcontrolData
+{
+ int alignment,
+ expand_children,
+ is_homogeneous,
+ normalize_size,
+ margin_x,
+ margin_y,
+ gap;
+ int children_naturalsize, /* calculated in ComputeNaturalSize, used in SetChildrenCurrentSize */
+ homogeneous_size; /* calculated in SetChildrenCurrentSize, used in SetChildrenPosition */
+};
+
+Iclass* iupBoxClassBase(void);
+
+/* Implemented in iup_normalizer.c */
+void iupNormalizeSizeBoxChild(Ihandle *ih, int normalize, int children_natural_maxwidth, int children_natural_maxheight);
+int iupNormalizeGetNormalizeSize(const char* value);
+char* iupNormalizeGetNormalizeSizeStr(int normalize);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_button.c b/iup/src/iup_button.c
new file mode 100755
index 0000000..7719663
--- /dev/null
+++ b/iup/src/iup_button.c
@@ -0,0 +1,206 @@
+/** \file
+ * \brief Button Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_button.h"
+#include "iup_image.h"
+
+
+char* iupButtonGetPaddingAttrib(Ihandle* ih)
+{
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding);
+ return str;
+}
+
+static int iButtonSetImagePositionAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->handle) /* set only before map */
+ {
+ if (iupStrEqualNoCase(value, "RIGHT"))
+ ih->data->img_position = IUP_IMGPOS_RIGHT;
+ else if (iupStrEqualNoCase(value, "BOTTOM"))
+ ih->data->img_position = IUP_IMGPOS_BOTTOM;
+ else if (iupStrEqualNoCase(value, "TOP"))
+ ih->data->img_position = IUP_IMGPOS_TOP;
+ else /* "LEFT" */
+ ih->data->img_position = IUP_IMGPOS_LEFT;
+ }
+ return 0;
+}
+
+static char* iButtonGetImagePositionAttrib(Ihandle *ih)
+{
+ char* img_pos2str[4] = {"LEFT", "RIGHT", "TOP", "BOTTOM"};
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%s", img_pos2str[ih->data->img_position]);
+ return str;
+}
+
+static int iButtonSetSpacingAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->handle) /* set only before map */
+ iupStrToInt(value, &ih->data->spacing);
+ return 0;
+}
+
+static char* iButtonGetSpacingAttrib(Ihandle *ih)
+{
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%d", ih->data->spacing);
+ return str;
+}
+
+
+/*****************************************************************************************/
+
+
+static int iButtonCreateMethod(Ihandle* ih, void** params)
+{
+ if (params)
+ {
+ if (params[0]) iupAttribStoreStr(ih, "TITLE", (char*)(params[0]));
+ if (params[1]) iupAttribStoreStr(ih, "ACTION", (char*)(params[1]));
+ }
+ ih->data = iupALLOCCTRLDATA();
+
+ ih->data->spacing = 2;
+
+ /* used only by the Windows driver */
+ ih->data->horiz_alignment = IUP_ALIGN_ACENTER;
+ ih->data->vert_alignment = IUP_ALIGN_ACENTER;
+ return IUP_NOERROR;
+}
+
+static void iButtonComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ int natural_w = 0,
+ natural_h = 0,
+ type = ih->data->type;
+ (void)expand; /* unset if not a container */
+
+ if (!ih->handle)
+ {
+ /* if not mapped must initialize the internal values */
+ char* value = iupAttribGet(ih, "IMAGE");
+ if (value)
+ {
+ type = IUP_BUTTON_IMAGE;
+ if (iupAttribGet(ih, "TITLE"))
+ type |= IUP_BUTTON_TEXT;
+ }
+ else
+ type = IUP_BUTTON_TEXT;
+ }
+
+ if (type & IUP_BUTTON_IMAGE)
+ {
+ iupImageGetInfo(iupAttribGet(ih, "IMAGE"), &natural_w, &natural_h, NULL);
+
+ if (type & IUP_BUTTON_TEXT)
+ {
+ int text_w, text_h;
+ /* must use IupGetAttribute to check from the native implementation */
+ char* title = IupGetAttribute(ih, "TITLE");
+ iupdrvFontGetMultiLineStringSize(ih, title, &text_w, &text_h);
+
+ if (ih->data->img_position == IUP_IMGPOS_RIGHT ||
+ ih->data->img_position == IUP_IMGPOS_LEFT)
+ {
+ natural_w += text_w + ih->data->spacing;
+ natural_h = iupMAX(natural_h, text_h);
+ }
+ else
+ {
+ natural_w = iupMAX(natural_w, text_w);
+ natural_h += text_h + ih->data->spacing;
+ }
+ }
+ }
+ else /* IUP_BUTTON_TEXT only */
+ {
+ /* must use IupGetAttribute to check from the native implementation */
+ char* title = IupGetAttribute(ih, "TITLE");
+ char* str = iupStrProcessMnemonic(title, NULL, 0); /* remove & */
+ iupdrvFontGetMultiLineStringSize(ih, str, &natural_w, &natural_h);
+ if (str && str!=title) free(str);
+ }
+
+ /* even when IMPRESS is set, must compute the borders space */
+ iupdrvButtonAddBorders(&natural_w, &natural_h);
+
+ natural_w += 2*ih->data->horiz_padding;
+ natural_h += 2*ih->data->vert_padding;
+
+ *w = natural_w;
+ *h = natural_h;
+}
+
+
+/******************************************************************************/
+
+
+Ihandle* IupButton(const char* title, const char* action)
+{
+ void *params[3];
+ params[0] = (void*)title;
+ params[1] = (void*)action;
+ params[2] = NULL;
+ return IupCreatev("button", params);
+}
+
+Iclass* iupButtonGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "button";
+ ic->format = "SA"; /* one optional string, and one optional callback name */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iButtonCreateMethod;
+ ic->ComputeNaturalSize = iButtonComputeNaturalSizeMethod;
+
+ ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Callbacks */
+ iupClassRegisterCallback(ic, "BUTTON_CB", "iiiis");
+ iupClassRegisterCallback(ic, "ACTION", "");
+
+ /* Common Callbacks */
+ iupBaseRegisterCommonCallbacks(ic);
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Visual */
+ iupBaseRegisterVisualAttrib(ic);
+
+ /* IupButton only */
+ iupClassRegisterAttribute(ic, "SPACING", iButtonGetSpacingAttrib, iButtonSetSpacingAttrib, IUPAF_SAMEASSYSTEM, "2", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGEPOSITION", iButtonGetImagePositionAttrib, iButtonSetImagePositionAttrib, IUPAF_SAMEASSYSTEM, "LEFT", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMPRESSBORDER", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FLAT", NULL, NULL, NULL, NULL, IUPAF_DEFAULT);
+
+ iupdrvButtonInitClass(ic);
+
+ return ic;
+}
diff --git a/iup/src/iup_button.h b/iup/src/iup_button.h
new file mode 100755
index 0000000..f85720a
--- /dev/null
+++ b/iup/src/iup_button.h
@@ -0,0 +1,39 @@
+/** \file
+ * \brief Button Controls Private Declarations
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_BUTTON_H
+#define __IUP_BUTTON_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void iupdrvButtonInitClass(Iclass* ic);
+void iupdrvButtonAddBorders(int *x, int *y);
+
+char* iupButtonGetPaddingAttrib(Ihandle* ih);
+
+enum{IUP_BUTTON_IMAGE=0x01, IUP_BUTTON_TEXT=0x02, IUP_BUTTON_BOTH=0x03};
+enum{IUP_IMGPOS_LEFT, IUP_IMGPOS_RIGHT, IUP_IMGPOS_TOP, IUP_IMGPOS_BOTTOM};
+
+struct _IcontrolData
+{
+ int type, /* the 2 buttons possibilities */
+ horiz_padding, vert_padding; /* button margin */
+ int spacing, img_position; /* used when both text and image are displayed */
+
+ /* used only by the Windows driver */
+ int horiz_alignment, vert_alignment;
+ unsigned long fgcolor;
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_callback.c b/iup/src/iup_callback.c
new file mode 100755
index 0000000..e000287
--- /dev/null
+++ b/iup/src/iup_callback.c
@@ -0,0 +1,90 @@
+/** \file
+ * \brief get/set callback
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdarg.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_assert.h"
+
+
+Icallback IupGetCallback(Ihandle *ih, const char *name)
+{
+ Icallback func = NULL;
+ void* value;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ iupASSERT(name!=NULL);
+ if (!name)
+ return NULL;
+
+ func = (Icallback)iupTableGetFunc(ih->attrib, name, &value);
+
+ if (!func && value)
+ {
+ /* if not a IUPTABLE_FUNCPOINTER then it is an old fashion name */
+ func = IupGetFunction((const char*)value);
+ }
+
+ return func;
+}
+
+Icallback IupSetCallback(Ihandle *ih, const char *name, Icallback func)
+{
+ Icallback old_func = NULL;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ iupASSERT(name!=NULL);
+ if (!name)
+ return NULL;
+
+ if (!func)
+ iupTableRemove(ih->attrib, name);
+ else
+ {
+ void* value;
+ old_func = (Icallback)iupTableGetFunc(ih->attrib, name, &value);
+ if (!old_func && value)
+ old_func = IupGetFunction((const char*)value);
+
+ iupTableSetFunc(ih->attrib, name, (Ifunc)func);
+ }
+
+ return old_func;
+}
+
+Ihandle* IupSetCallbacks(Ihandle* ih, const char *name, Icallback func, ...)
+{
+ va_list arglist;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ IupSetCallback(ih, name, func);
+
+ va_start(arglist, func);
+
+ name=va_arg(arglist, const char*);
+ while (name)
+ {
+ func=va_arg(arglist, Icallback);
+ IupSetCallback(ih, name, func);
+
+ name=va_arg(arglist, const char*);
+ }
+
+ va_end (arglist);
+ return ih;
+}
diff --git a/iup/src/iup_canvas.c b/iup/src/iup_canvas.c
new file mode 100755
index 0000000..5eda988
--- /dev/null
+++ b/iup/src/iup_canvas.c
@@ -0,0 +1,169 @@
+/** \file
+ * \brief Canvas Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_canvas.h"
+
+
+void iupCanvasCalcScrollIntPos(double min, double max, double page, double pos,
+ int imin, int imax, int *ipage, int *ipos)
+{
+ double range = max-min;
+ int irange = imax-imin;
+ double ratio = ((double)irange)/range;
+
+ *ipage = (int)(page*ratio);
+ if (*ipage > irange) *ipage = irange;
+ if (*ipage < 1) *ipage = 1;
+
+ if (ipos)
+ {
+ *ipos = (int)((pos-min)*ratio) + imin;
+ if (*ipos < imin) *ipos = imin;
+ if (*ipos > (imax - *ipage)) *ipos = imax - *ipage;
+ }
+}
+
+void iupCanvasCalcScrollRealPos(double min, double max, double *pos,
+ int imin, int imax, int ipage, int *ipos)
+{
+ double range = max-min;
+ int irange = imax-imin;
+ double ratio = ((double)irange)/range;
+
+ if (*ipos < imin) *ipos = imin;
+ if (*ipos > (imax - ipage)) *ipos = imax - ipage;
+
+ *pos = min + ((double)(*ipos-imin))/ratio;
+}
+
+char* iupCanvasGetPosXAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%f", ih->data->posx);
+ return str;
+}
+
+char* iupCanvasGetPosYAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%f", ih->data->posy);
+ return str;
+}
+
+static int iCanvasCreateMethod(Ihandle* ih, void** params)
+{
+ if (params && params[0])
+ {
+ char* action = (char*)params[0];
+ iupAttribStoreStr(ih, "ACTION", action);
+ }
+
+ ih->data = iupALLOCCTRLDATA();
+
+ /* default EXPAND is YES */
+ ih->expand = IUP_EXPAND_BOTH;
+
+ return IUP_NOERROR;
+}
+
+static void iCanvasComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ int natural_w = 0, natural_h = 0;
+ (void)expand; /* unset if not a container */
+
+ /* canvas natural size is 1 character */
+ iupdrvFontGetCharSize(ih, &natural_w, &natural_h);
+
+ *w = natural_w;
+ *h = natural_h;
+}
+
+
+/******************************************************************************/
+
+
+Ihandle* IupCanvas(const char* action)
+{
+ void *params[2];
+ params[0] = (void*)action;
+ params[1] = NULL;
+ return IupCreatev("canvas", params);
+}
+
+Iclass* iupCanvasGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "canvas";
+ ic->format = "A"; /* one optional callback name */
+ ic->nativetype = IUP_TYPECANVAS;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iCanvasCreateMethod;
+ ic->ComputeNaturalSize = iCanvasComputeNaturalSizeMethod;
+
+ ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Callbacks */
+ iupClassRegisterCallback(ic, "DROPFILES_CB", "siii");
+ iupClassRegisterCallback(ic, "RESIZE_CB", "ii");
+ iupClassRegisterCallback(ic, "FOCUS_CB", "i");
+ iupClassRegisterCallback(ic, "WOM_CB", "i");
+ iupClassRegisterCallback(ic, "BUTTON_CB", "iiiis");
+ iupClassRegisterCallback(ic, "MOTION_CB", "iis");
+ iupClassRegisterCallback(ic, "KEYPRESS_CB", "ii");
+ iupClassRegisterCallback(ic, "ACTION", "ff");
+ iupClassRegisterCallback(ic, "SCROLL_CB", "iff");
+ iupClassRegisterCallback(ic, "WHEEL_CB", "fiis");
+
+ /* Common Callbacks */
+ iupBaseRegisterCommonCallbacks(ic);
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ {
+ /* Change the default to YES */
+ IattribGetFunc _get;
+ IattribSetFunc _set;
+ iupClassRegisterGetAttribute(ic, "EXPAND", &_get, &_set, NULL, NULL, NULL);
+ iupClassRegisterAttribute(ic, "EXPAND", _get, _set, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ }
+
+ /* Visual */
+ iupBaseRegisterVisualAttrib(ic);
+
+ /* IupCanvas only */
+ iupClassRegisterAttribute(ic, "CURSOR", NULL, iupdrvBaseSetCursorAttrib, IUPAF_SAMEASSYSTEM, "ARROW", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "XMIN", NULL, NULL, IUPAF_SAMEASSYSTEM, "0.0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "XMAX", NULL, NULL, IUPAF_SAMEASSYSTEM, "1.0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "YMIN", NULL, NULL, IUPAF_SAMEASSYSTEM, "0.0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "YMAX", NULL, NULL, IUPAF_SAMEASSYSTEM, "1.0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "LINEX", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "LINEY", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "BORDER", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "SCROLLBAR", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+
+ iupdrvCanvasInitClass(ic);
+
+ return ic;
+}
diff --git a/iup/src/iup_canvas.h b/iup/src/iup_canvas.h
new file mode 100755
index 0000000..29d644c
--- /dev/null
+++ b/iup/src/iup_canvas.h
@@ -0,0 +1,37 @@
+/** \file
+ * \brief Canvas Controls Private Declarations
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_CANVAS_H
+#define __IUP_CANVAS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void iupdrvCanvasInitClass(Iclass* ic);
+void iupCanvasCalcScrollIntPos(double min, double max, double page, double pos,
+ int imin, int imax, int *ipage, int *ipos);
+void iupCanvasCalcScrollRealPos(double min, double max, double *pos,
+ int imin, int imax, int ipage, int *ipos);
+char* iupCanvasGetPosXAttrib(Ihandle* ih);
+char* iupCanvasGetPosYAttrib(Ihandle* ih);
+
+#define IUP_SB_MIN 0
+#define IUP_SB_MAX INT_MAX-1
+
+struct _IcontrolData
+{
+ int sb; /* scrollbar configuration, valid only after map, use iupBaseGetScrollbar before map */
+ float posx, posy;
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_cbox.c b/iup/src/iup_cbox.c
new file mode 100755
index 0000000..5a1d409
--- /dev/null
+++ b/iup/src/iup_cbox.c
@@ -0,0 +1,143 @@
+/** \file
+ * \brief cbox control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+
+
+static int iCboxCreateMethod(Ihandle* ih, void** params)
+{
+ if (params)
+ {
+ Ihandle** iparams = (Ihandle**)params;
+ while (*iparams)
+ {
+ IupAppend(ih, *iparams);
+ iparams++;
+ }
+ }
+
+ return IUP_NOERROR;
+}
+
+static void iCboxComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ Ihandle* child;
+ int children_expand,
+ children_naturalwidth, children_naturalheight;
+ int cx, cy;
+
+ /* calculate total children natural size (even for hidden children) */
+ children_expand = 0;
+ children_naturalwidth = 0;
+ children_naturalheight = 0;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ /* update child natural size first */
+ iupBaseComputeNaturalSize(child);
+
+ cx = iupAttribGetInt(child, "CX");
+ cy = iupAttribGetInt(child, "CY");
+
+ children_expand |= child->expand;
+ children_naturalwidth = iupMAX(children_naturalwidth, cx+child->naturalwidth);
+ children_naturalheight = iupMAX(children_naturalheight, cy+child->naturalheight);
+ }
+
+ *expand = children_expand;
+ *w = children_naturalwidth;
+ *h = children_naturalheight;
+}
+
+static void iCboxSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink)
+{
+ Ihandle* child;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ /* update children to their own natural size */
+ iupBaseSetCurrentSize(child, child->naturalwidth, child->naturalheight, shrink);
+ }
+}
+
+static void iCboxSetChildrenPositionMethod(Ihandle* ih, int x, int y)
+{
+ int cx, cy;
+ Ihandle* child;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ cx = iupAttribGetInt(child, "CX");
+ cy = iupAttribGetInt(child, "CY");
+
+ /* update child */
+ iupBaseSetPosition(child, x+cx, y+cy);
+ }
+}
+
+
+/******************************************************************************/
+
+
+Ihandle *IupCboxv(Ihandle** children)
+{
+ return IupCreatev("cbox", (void**)children);
+}
+
+Ihandle *IupCbox (Ihandle * child,...)
+{
+ Ihandle **children;
+ Ihandle *ih;
+
+ va_list arglist;
+ va_start(arglist, child);
+ children = (Ihandle **)iupObjectGetParamList(child, arglist);
+ va_end(arglist);
+
+ ih = IupCreatev("cbox", (void**)children);
+ free(children);
+
+ return ih;
+}
+
+Iclass* iupCboxGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "cbox";
+ ic->format = "g"; /* array of Ihandle */
+ ic->nativetype = IUP_TYPEVOID;
+ ic->childtype = IUP_CHILDMANY;
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Create = iCboxCreateMethod;
+ ic->Map = iupBaseTypeVoidMapMethod;
+
+ ic->ComputeNaturalSize = iCboxComputeNaturalSizeMethod;
+ ic->SetChildrenCurrentSize = iCboxSetChildrenCurrentSizeMethod;
+ ic->SetChildrenPosition = iCboxSetChildrenPositionMethod;
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Base Container */
+ iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CLIENTSIZE", iupBaseGetRasterSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
diff --git a/iup/src/iup_childtree.c b/iup/src/iup_childtree.c
new file mode 100755
index 0000000..1d4066e
--- /dev/null
+++ b/iup/src/iup_childtree.c
@@ -0,0 +1,455 @@
+/** \file
+ * \brief Control tree hierarchy manager.
+ * implements also IupDestroy
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_dlglist.h"
+#include "iup_childtree.h"
+#include "iup_class.h"
+#include "iup_attrib.h"
+#include "iup_assert.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+
+
+Ihandle* IupGetDialog(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ for (ih = ih; ih->parent; ih = ih->parent)
+ ; /* empty*/
+
+ if (ih->iclass->nativetype == IUP_TYPEDIALOG)
+ return ih;
+ else if (ih->iclass->nativetype == IUP_TYPEMENU)
+ {
+ Ihandle *dlg;
+ /* if ih is a menu then */
+ /* searches all the dialogs that may have been associated with the menu. */
+ for (dlg = iupDlgListFirst(); dlg; dlg = iupDlgListNext())
+ {
+ if (IupGetAttributeHandle(dlg, "MENU") == ih)
+ return dlg;
+ }
+ }
+
+ return NULL;
+}
+
+static void iChildDetach(Ihandle* parent, Ihandle* child)
+{
+ Ihandle *c,
+ *c_prev = NULL;
+
+ /* Cleans the child entry inside the parent's child list */
+ for (c = parent->firstchild; c; c = c->brother)
+ {
+ if (c == child) /* Found the right child */
+ {
+ if (c_prev == NULL)
+ parent->firstchild = child->brother;
+ else
+ c_prev->brother = child->brother;
+
+ child->brother = NULL;
+ child->parent = NULL;
+ return;
+ }
+
+ c_prev = c;
+ }
+}
+
+void IupDetach(Ihandle *child)
+{
+ Ihandle *parent, *top_parent;
+
+ iupASSERT(iupObjectCheck(child));
+ if (!iupObjectCheck(child))
+ return;
+
+ IupUnmap(child);
+
+ /* Not valid if does NOT has a parent */
+ if (!child->parent)
+ return;
+
+ parent = child->parent;
+ top_parent = iupChildTreeGetNativeParent(child);
+
+ iChildDetach(parent, child);
+ iupClassObjectChildRemoved(parent, child);
+
+ while (parent && parent != top_parent)
+ {
+ parent = parent->parent;
+ if (parent)
+ iupClassObjectChildRemoved(parent, child);
+ }
+}
+
+static int iChildFindRec(Ihandle* parent, Ihandle* child)
+{
+ Ihandle *c;
+
+ /* Finds the reference child entry inside the parent's child list */
+ for (c = parent->firstchild; c; c = c->brother)
+ {
+ if (c == child) /* Found the right child */
+ return 1;
+
+ if (iChildFindRec(c, child))
+ return 1;
+ }
+
+ return 0;
+}
+
+static int iChildTreeCheckInside(Ihandle* parent, Ihandle* child)
+{
+ /* top parent */
+ while (parent->parent)
+ parent = parent->parent;
+
+ return iChildFindRec(parent, child);
+}
+
+static int iChildFind(Ihandle* parent, Ihandle* child)
+{
+ Ihandle *c;
+
+ /* Finds the reference child entry inside the parent's child list */
+ for (c = parent->firstchild; c; c = c->brother)
+ {
+ if (c == child) /* Found the right child */
+ return 1;
+ }
+
+ return 0;
+}
+
+static void iChildInsert(Ihandle* parent, Ihandle* ref_child, Ihandle* child)
+{
+ Ihandle *c,
+ *c_prev = NULL;
+
+ if (!ref_child)
+ ref_child = parent->firstchild;
+
+ /* Finds the reference child entry inside the parent's child list */
+ for (c = parent->firstchild; c; c = c->brother)
+ {
+ if (c == ref_child) /* Found the right child */
+ {
+ child->parent = parent;
+ child->brother = ref_child;
+
+ if (c_prev == NULL)
+ parent->firstchild = child;
+ else
+ c_prev->brother = child;
+ return;
+ }
+
+ c_prev = c;
+ }
+}
+
+Ihandle* IupInsert(Ihandle* parent, Ihandle* ref_child, Ihandle* child)
+{
+ Ihandle* top_parent = parent;
+
+ /* ref_child can be NULL */
+
+ iupASSERT(iupObjectCheck(parent));
+ if (!iupObjectCheck(parent))
+ return NULL;
+
+ iupASSERT(iupObjectCheck(child));
+ if (!iupObjectCheck(child))
+ return NULL;
+
+#ifdef IUP_ASSERT
+ if (iChildTreeCheckInside(parent, child))
+ {
+ iupError("Duplicate Child Found!\n(type(%s) - name(%s))", child->iclass->name, IupGetName(child));
+ return NULL;
+ }
+#endif
+
+
+ /* this will return the actual parent */
+ parent = iupClassObjectGetInnerContainer(top_parent);
+ if (!parent)
+ return NULL;
+
+ if (parent->iclass->childtype == IUP_CHILDNONE)
+ return NULL;
+ if (parent->iclass->childtype == IUP_CHILD_ONE && parent->firstchild)
+ return NULL;
+
+
+ /* if already at the parent box, allow to move even if mapped */
+ if (parent->iclass->nativetype == IUP_TYPEVOID &&
+ iChildFind(parent, child))
+ {
+ iChildDetach(parent, child);
+ iChildInsert(parent, ref_child, child);
+ }
+ else
+ {
+ /* Not valid if it is mapped */
+ if (child->handle)
+ return NULL;
+
+ iChildInsert(parent, ref_child, child);
+ iupClassObjectChildAdded(parent, child);
+ if (top_parent != parent)
+ iupClassObjectChildAdded(top_parent, child);
+ }
+
+ return parent;
+}
+
+void iupChildTreeAppend(Ihandle* parent, Ihandle* child)
+{
+ child->parent = parent;
+
+ if (parent->firstchild == NULL)
+ parent->firstchild = child;
+ else
+ {
+ Ihandle* c = parent->firstchild;
+ while (c->brother)
+ c = c->brother;
+ c->brother = child;
+ }
+}
+
+Ihandle* IupAppend(Ihandle* parent, Ihandle* child)
+{
+ Ihandle* top_parent = parent;
+
+ iupASSERT(iupObjectCheck(parent));
+ if (!iupObjectCheck(parent))
+ return NULL;
+
+ iupASSERT(iupObjectCheck(child));
+ if (!iupObjectCheck(child))
+ return NULL;
+
+#ifdef IUP_ASSERT
+ if (iChildTreeCheckInside(parent, child))
+ {
+ iupError("Duplicate Child Found!\n(type(%s) - name(%s))", child->iclass->name, IupGetName(child));
+ return NULL;
+ }
+#endif
+
+
+ /* this will return the actual parent */
+ parent = iupClassObjectGetInnerContainer(top_parent);
+ if (!parent)
+ return NULL;
+
+ if (parent->iclass->childtype == IUP_CHILDNONE)
+ return NULL;
+ if (parent->iclass->childtype == IUP_CHILD_ONE && parent->firstchild)
+ return NULL;
+
+
+ /* if already at the parent box, allow to move even if mapped */
+ if (parent->iclass->nativetype == IUP_TYPEVOID &&
+ iChildFind(parent, child))
+ {
+ iChildDetach(parent, child);
+ iupChildTreeAppend(parent, child);
+ }
+ else
+ {
+ /* Not valid if it is mapped */
+ if (child->handle)
+ return NULL;
+
+ iupChildTreeAppend(parent, child);
+ iupClassObjectChildAdded(parent, child);
+ if (top_parent != parent)
+ iupClassObjectChildAdded(top_parent, child);
+ }
+
+ return parent;
+}
+
+static void iChildReparent(Ihandle* child, Ihandle* new_parent)
+{
+ Ihandle *c;
+
+ /* Forward the reparent to all native children */
+
+ for (c = child->firstchild; c; c = c->brother)
+ {
+ if (c->iclass->nativetype != IUP_TYPEVOID)
+ iupdrvReparent(c);
+ else
+ iChildReparent(c, new_parent);
+ }
+}
+
+int IupReparent(Ihandle* child, Ihandle* parent)
+{
+ Ihandle* top_parent = parent;
+ Ihandle* old_parent;
+
+ iupASSERT(iupObjectCheck(parent));
+ if (!iupObjectCheck(parent))
+ return IUP_ERROR;
+
+ iupASSERT(iupObjectCheck(child));
+ if (!iupObjectCheck(child))
+ return IUP_ERROR;
+
+
+ /* this will return the actual parent */
+ parent = iupClassObjectGetInnerContainer(top_parent);
+ if (!parent)
+ return IUP_ERROR;
+
+ if (parent->iclass->childtype == IUP_CHILDNONE)
+ return IUP_ERROR;
+ if (parent->iclass->childtype == IUP_CHILD_ONE && parent->firstchild)
+ return IUP_ERROR;
+
+
+ /* both must be already mapped or both unmapped */
+ if ((!parent->handle && child->handle) ||
+ ( parent->handle && !child->handle))
+ return IUP_ERROR;
+
+
+ /* detach from old parent */
+ old_parent = child->parent;
+ iChildDetach(old_parent, child);
+ iupClassObjectChildRemoved(old_parent, child);
+
+
+ /* attach to new parent */
+ iupChildTreeAppend(parent, child);
+ iupClassObjectChildAdded(parent, child);
+ if (top_parent != parent)
+ iupClassObjectChildAdded(top_parent, child);
+
+
+ /* no need to remap, just notify the native system */
+ if (child->handle && parent->handle)
+ {
+ if (child->iclass->nativetype != IUP_TYPEVOID)
+ iupdrvReparent(child);
+ else
+ iChildReparent(child, parent);
+ }
+
+ return IUP_NOERROR;
+}
+
+Ihandle* IupGetChild(Ihandle* ih, int pos)
+{
+ int p;
+ Ihandle* child;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ for (p = 0, child = ih->firstchild; child; child = child->brother, p++)
+ {
+ if (p == pos)
+ return child;
+ }
+
+ return NULL;
+}
+
+int IupGetChildPos(Ihandle* ih, Ihandle* child)
+{
+ int pos;
+ Ihandle* c;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return -1;
+
+ for (pos = 0, c = ih->firstchild; c; c = c->brother, pos++)
+ {
+ if (c == child)
+ return pos;
+ }
+ return -1;
+}
+
+int IupGetChildCount(Ihandle* ih)
+{
+ int count = 0;
+ Ihandle* child;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return -1;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ count++;
+
+ return count;
+}
+
+Ihandle* IupGetNextChild(Ihandle* ih, Ihandle* child)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ if (!child)
+ return ih->firstchild;
+ else
+ return child->brother;
+}
+
+Ihandle* IupGetBrother(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ return ih->brother;
+}
+
+Ihandle* IupGetParent(Ihandle *ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ return ih->parent;
+}
+
+Ihandle* iupChildTreeGetNativeParent(Ihandle* ih)
+{
+ Ihandle* parent = ih->parent;
+ while (parent && parent->iclass->nativetype == IUP_TYPEVOID)
+ parent = parent->parent;
+ return parent;
+}
+
+InativeHandle* iupChildTreeGetNativeParentHandle(Ihandle* ih)
+{
+ Ihandle* native_parent = iupChildTreeGetNativeParent(ih);
+ return (InativeHandle*)iupClassObjectGetInnerNativeContainerHandle(native_parent, ih);
+}
diff --git a/iup/src/iup_childtree.h b/iup/src/iup_childtree.h
new file mode 100755
index 0000000..4376c0b
--- /dev/null
+++ b/iup/src/iup_childtree.h
@@ -0,0 +1,54 @@
+/** \file
+ * \brief Control Hierarchy Tree management.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_CHILDTREE_H
+#define __IUP_CHILDTREE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** \defgroup childtree Child Tree Utilities
+ * \par
+ * Some native containers have an internal native child that
+ * will be the actual container of the children. This native container is
+ * returned by \ref iupClassObjectGetInnerNativeContainerHandle.
+ * \par
+ * Some native elements need an extra parent, the ih->handle points to the main element itself,
+ * NOT to the extra parent. This extra parent is stored as "_IUP_EXTRAPARENT".
+ * \par
+ * See \ref iup_childtree.h
+ * \ingroup object */
+
+/** Returns the native parent. It simply excludes containers that are from IUP_TYPEVOID classes.
+ * \ingroup childtree */
+Ihandle* iupChildTreeGetNativeParent(Ihandle* ih);
+
+/** Returns the native parent handle. Uses \ref iupChildTreeGetNativeParent and \ref iupClassObjectGetInnerNativeContainerHandle.
+ * \ingroup childtree */
+InativeHandle* iupChildTreeGetNativeParentHandle(Ihandle* ih);
+
+/** Adds the child directly to the parent tree.
+ * \ingroup childtree */
+void iupChildTreeAppend(Ihandle* parent, Ihandle* child);
+
+
+/* Other functions declared in <iup.h> and implemented here.
+IupGetDialog
+IupDetach
+IupAppend
+IupGetChild
+IupGetNextChild
+IupGetBrother
+IupGetParent
+*/
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_class.c b/iup/src/iup_class.c
new file mode 100755
index 0000000..d2c4b02
--- /dev/null
+++ b/iup/src/iup_class.c
@@ -0,0 +1,314 @@
+/** \file
+ * \brief IUP Ihandle Class C Interface
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_str.h"
+#include "iup_attrib.h"
+#include "iup_assert.h"
+
+
+
+/*****************************************************************
+ Method Stubs
+*****************************************************************/
+
+static int iClassCreate(Iclass* ic, Ihandle* ih, void** params)
+{
+ int ret = IUP_NOERROR;
+ if (ic->parent)
+ ret = iClassCreate(ic->parent, ih, params);
+
+ if (ret == IUP_NOERROR && ic->Create)
+ ret = ic->Create(ih, params);
+
+ return ret;
+}
+
+static int iClassMap(Iclass* ic, Ihandle* ih)
+{
+ int ret = IUP_NOERROR;
+ if (ic->parent)
+ ret = iClassMap(ic->parent, ih);
+
+ if (ret == IUP_NOERROR && ic->Map)
+ ret = ic->Map(ih);
+
+ return ret;
+}
+
+static void iClassUnMap(Iclass* ic, Ihandle* ih)
+{
+ /* must be before the parent class */
+ if (ic->UnMap)
+ ic->UnMap(ih);
+
+ if (ic->parent)
+ iClassUnMap(ic->parent, ih);
+}
+
+static void iClassDestroy(Iclass* ic, Ihandle* ih)
+{
+ /* must destroy child class before the parent class */
+ if (ic->Destroy)
+ ic->Destroy(ih);
+
+ if (ic->parent)
+ iClassDestroy(ic->parent, ih);
+}
+
+static void iClassComputeNaturalSize(Iclass* ic, Ihandle* ih, int *w, int *h, int *expand)
+{
+ if (ic->parent)
+ iClassComputeNaturalSize(ic->parent, ih, w, h, expand);
+
+ if (ic->ComputeNaturalSize)
+ ic->ComputeNaturalSize(ih, w, h, expand);
+}
+
+static void iClassSetChildrenCurrentSize(Iclass* ic, Ihandle* ih, int shrink)
+{
+ if (ic->parent)
+ iClassSetChildrenCurrentSize(ic->parent, ih, shrink);
+
+ if (ic->SetChildrenCurrentSize)
+ ic->SetChildrenCurrentSize(ih, shrink);
+}
+
+static void iClassSetChildrenPosition(Iclass* ic, Ihandle* ih, int x, int y)
+{
+ if (ic->parent)
+ iClassSetChildrenPosition(ic->parent, ih, x, y);
+
+ if (ic->SetChildrenPosition)
+ ic->SetChildrenPosition(ih, x, y);
+}
+
+static Ihandle* iClassGetInnerContainer(Iclass* ic, Ihandle* ih)
+{
+ Ihandle* ih_container = ih;
+
+ if (ic->parent)
+ ih_container = iClassGetInnerContainer(ic->parent, ih);
+
+ /* if the class implements the function it will ignore the result of the parent class */
+
+ if (ic->GetInnerContainer)
+ ih_container = ic->GetInnerContainer(ih);
+
+ return ih_container;
+}
+
+static void* iClassGetInnerNativeContainerHandle(Iclass* ic, Ihandle* ih, Ihandle* child)
+{
+ void* container_handle = ih->handle;
+
+ if (ic->parent)
+ container_handle = iClassGetInnerNativeContainerHandle(ic->parent, ih, child);
+
+ /* if the class implements the function it will ignore the result of the parent class */
+
+ if (ic->GetInnerNativeContainerHandle)
+ container_handle = ic->GetInnerNativeContainerHandle(ih, child);
+
+ return container_handle;
+}
+
+static void iClassObjectChildAdded(Iclass* ic, Ihandle* ih, Ihandle* child)
+{
+ if (ic->parent)
+ iClassObjectChildAdded(ic->parent, ih, child);
+
+ if (ic->ChildAdded)
+ ic->ChildAdded(ih, child);
+}
+
+static void iClassObjectChildRemoved(Iclass* ic, Ihandle* ih, Ihandle* child)
+{
+ if (ic->parent)
+ iClassObjectChildRemoved(ic->parent, ih, child);
+
+ if (ic->ChildRemoved)
+ ic->ChildRemoved(ih, child);
+}
+
+static void iClassLayoutUpdate(Iclass* ic, Ihandle *ih)
+{
+ if (ic->parent)
+ iClassLayoutUpdate(ic->parent, ih);
+
+ if (ic->LayoutUpdate)
+ ic->LayoutUpdate(ih);
+}
+
+static int iClassDlgPopup(Iclass* ic, Ihandle* ih, int x, int y)
+{
+ int ret = IUP_INVALID; /* IUP_INVALID means it is not implemented */
+ if (ic->parent)
+ ret = iClassDlgPopup(ic->parent, ih, x, y);
+
+ if (ret != IUP_ERROR && ic->DlgPopup)
+ ret = ic->DlgPopup(ih, x, y);
+
+ return ret;
+}
+
+int iupClassObjectCreate(Ihandle* ih, void** params)
+{
+ return iClassCreate(ih->iclass, ih, params);
+}
+
+int iupClassObjectMap(Ihandle* ih)
+{
+ return iClassMap(ih->iclass, ih);
+}
+
+void iupClassObjectUnMap(Ihandle* ih)
+{
+ iClassUnMap(ih->iclass, ih);
+}
+
+void iupClassObjectDestroy(Ihandle* ih)
+{
+ iClassDestroy(ih->iclass, ih);
+}
+
+void iupClassObjectComputeNaturalSize(Ihandle* ih, int *w, int *h, int *expand)
+{
+ iClassComputeNaturalSize(ih->iclass, ih, w, h, expand);
+}
+
+void iupClassObjectSetChildrenCurrentSize(Ihandle* ih, int shrink)
+{
+ iClassSetChildrenCurrentSize(ih->iclass, ih, shrink);
+}
+
+void iupClassObjectSetChildrenPosition(Ihandle* ih, int x, int y)
+{
+ iClassSetChildrenPosition(ih->iclass, ih, x, y);
+}
+
+Ihandle* iupClassObjectGetInnerContainer(Ihandle* ih)
+{
+ return iClassGetInnerContainer(ih->iclass, ih);
+}
+
+void* iupClassObjectGetInnerNativeContainerHandle(Ihandle* ih, Ihandle* child)
+{
+ return iClassGetInnerNativeContainerHandle(ih->iclass, ih, child);
+}
+
+void iupClassObjectChildAdded(Ihandle* ih, Ihandle* child)
+{
+ iClassObjectChildAdded(ih->iclass, ih, child);
+}
+
+void iupClassObjectChildRemoved(Ihandle* ih, Ihandle* child)
+{
+ iClassObjectChildRemoved(ih->iclass, ih, child);
+}
+
+void iupClassObjectLayoutUpdate(Ihandle *ih)
+{
+ iClassLayoutUpdate(ih->iclass, ih);
+}
+
+int iupClassObjectDlgPopup(Ihandle* ih, int x, int y)
+{
+ return iClassDlgPopup(ih->iclass, ih, x, y);
+}
+
+
+/*****************************************************************
+ Class Definition
+*****************************************************************/
+
+
+static void iClassReleaseAttribFuncTable(Iclass* ic)
+{
+ char* name = iupTableFirst(ic->attrib_func);
+ while (name)
+ {
+ void* afunc = iupTableGetCurr(ic->attrib_func);
+ free(afunc);
+
+ name = iupTableNext(ic->attrib_func);
+ }
+
+ iupTableDestroy(ic->attrib_func);
+}
+
+Iclass* iupClassNew(Iclass* parent)
+{
+ Iclass* ic = malloc(sizeof(Iclass));
+ memset(ic, 0, sizeof(Iclass));
+
+ if (parent)
+ ic->attrib_func = parent->attrib_func;
+ else
+ ic->attrib_func = iupTableCreate(IUPTABLE_STRINGINDEXED);
+
+ ic->parent = parent;
+
+ return ic;
+}
+
+void iupClassRelease(Iclass* ic)
+{
+ Iclass* parent;
+
+ /* must release only the actual class */
+ if (ic->Release)
+ ic->Release(ic);
+
+ /* must free all classes, since a new instance is created when we inherit */
+ parent = ic->parent;
+ while (parent)
+ {
+ Iclass* tmp = parent;
+ parent = parent->parent;
+ free(tmp);
+ }
+
+ /* attributes functions table is released only once */
+ iClassReleaseAttribFuncTable(ic);
+
+ free(ic);
+}
+
+
+/*****************************************************************
+ Main API
+*****************************************************************/
+
+
+char* IupGetClassName(Ihandle *ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ return ih->iclass->name;
+}
+
+char* IupGetClassType(Ihandle *ih)
+{
+ static char* type2str[] = {"void", "control", "canvas", "dialog", "image", "menu"};
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ return type2str[ih->iclass->nativetype];
+}
+
diff --git a/iup/src/iup_class.h b/iup/src/iup_class.h
new file mode 100755
index 0000000..a5318f3
--- /dev/null
+++ b/iup/src/iup_class.h
@@ -0,0 +1,414 @@
+/** \file
+ * \brief Ihandle Class Interface
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_CLASS_H
+#define __IUP_CLASS_H
+
+#include "iup_table.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup iclass Ihandle Class
+ * \par
+ * See \ref iup_class.h
+ * \ingroup cpi */
+
+/** Known native types.
+ * \ingroup iclass */
+typedef enum _InativeType {
+ IUP_TYPEVOID, /**< No native representation - HBOX, VBOX, ZBOX, FILL, RADIO (handle==(void*)-1 always) */
+ IUP_TYPECONTROL, /**< Native controls - BUTTON, LABEL, TOGGLE, LIST, TEXT, MULTILINE, FRAME, others */
+ IUP_TYPECANVAS, /**< Drawing canvas, also used as a base control for custom controls. */
+ IUP_TYPEDIALOG, /**< DIALOG */
+ IUP_TYPEIMAGE, /**< IMAGE */
+ IUP_TYPEMENU /**< MENU, SUBMENU, ITEM, SEPARATOR */
+} InativeType;
+
+/** Possible number of children.
+ * \ingroup iclass */
+typedef enum _IchildType {
+ IUP_CHILDNONE,
+ IUP_CHILD_ONE,
+ IUP_CHILDMANY
+} IchildType;
+
+typedef struct Iclass_ Iclass;
+
+/** Ihandle Class Structure
+ * \ingroup iclass */
+struct Iclass_
+{
+ /* Class configuration parameters. */
+ char* name; /**< class name. No default, must be initialized. */
+ char* format; /**< Creation parameters format of the class when specified. \n
+ * It can have none, one or more of the following.
+ * - "b" = (unsigned char) - byte
+ * - "c" = (unsigned char*) - array of byte
+ * - "i" = (int) - integer
+ * - "j" = (int*) - array of integer
+ * - "f" = (float) - real
+ * - "s" = (char*) - string
+ * - "a" = (char*) - name of an action
+ * - "h" = (Ihandle*) - element handle
+ * - "g" = (Ihandle**) - array of element handle
+ * If upper case then it is optional. Default is no parameters. */
+ InativeType nativetype; /**< native type. Default is IUP_TYPEVOID. */
+ IchildType childtype; /**< children count enum: none, one, or many. Default is IUP_CHILDNONE. Used only by IupAppend and IupInsert to control the number of children. */
+ int is_interactive; /**< keyboard interactive boolean,
+ * true if the class can have the keyboard input focus. Default is false. */
+ int has_attrib_id; /**< boolean to indicate if any attribute is numbered. Default is false. */
+
+ Iclass* parent; /**< class parent to implement inheritance.
+ * Class name must be different.
+ * Creation parameters should be the same or repace the parents creation function.
+ * Native type should be the same.
+ * Child type should be a more restrictive or equal type (many->one->none).
+ * Attribute functions will have only one common table.
+ * All methods can be changed, set to NULL, switched, etc. */
+
+ Itable* attrib_func; /**< table of functions to handle attributes, only one per class tree */
+
+ /* Class methods. */
+
+ /** Method that release the memory allocated by the class.
+ * Called only once at \ref iupClassRelease.
+ */
+ void (*Release)(Iclass* ic);
+
+
+
+ /** Method that creates the element and process the creation parameters. \n
+ * Called only from IupCreate. \n
+ * The parameters can be NULL for all the controls. \n
+ * The control should also depend on attributes set before IupMap. \n
+ * Must return IUP_NOERROR or IUP_ERROR. \n
+ * Can be NULL, like all methods.
+ */
+ int (*Create)(Ihandle* ih, void** params);
+
+ /** Method that map (create) the control to the native system. \n
+ * Called only from IupMap. \n
+ * Must return IUP_NOERROR or IUP_ERROR.
+ */
+ int (*Map)(Ihandle* ih);
+
+ /** Method that unmap (destroy) the control from the native system. \n
+ * Called only from IupUnmap if the control is mapped. \n
+ * Must return IUP_NOERROR or IUP_ERROR.
+ */
+ void (*UnMap)(Ihandle* ih);
+
+ /** Method that destroys the element. \n
+ * Called only from IupDestroy. Always called even if the control is not mapped.
+ */
+ void (*Destroy)(Ihandle* ih);
+
+
+
+ /** Returns the actual parent to add a child. The default implementation returns itself. \n
+ * Called only from IupAppend or IupReparent. \n
+ * This allows IUP elements to be a combination of other IUP elements in a single IUP element.
+ */
+ Ihandle* (*GetInnerContainer)(Ihandle* ih);
+
+ /** Returns the internal native parent. The default implementation returns the handle of itself. \n
+ * Called from \ref iupChildTreeGetNativeParentHandle. \n
+ * This allows native elements to have an internal container
+ * that will be the actual native parent, or in other words allows native elements to be a combination of
+ * other native elements in a single IUP element. The actual native parent may depend on the child tree (IupTabs).
+ */
+ void* (*GetInnerNativeContainerHandle)(Ihandle* ih, Ihandle* child);
+
+ /** Notifies the element that a child was appended using IupAppend. \n
+ * Called only from IupAppend or IupReparent. The child is not mapped, but the parent can be mapped.
+ */
+ void (*ChildAdded)(Ihandle* ih, Ihandle* child);
+
+ /** Notifies the element that a child was removed using IupDetach. \n
+ * Called only from IupDetach or IupReparent. The child is not mapped, but the parent can be mapped.
+ */
+ void (*ChildRemoved)(Ihandle* ih, Ihandle* child);
+
+
+ /** Method that update size and position of the native control. \n
+ * Called only from iupLayoutUpdate and if the element is mapped.
+ */
+ void (*LayoutUpdate)(Ihandle* ih);
+
+
+
+ /** Method that computes the natural size based on the user size and the actual natural size. \n
+ * Should update expand if a container, but does NOT depends on expand to compute the natural size. \n
+ * Must call the \ref iupBaseComputeNaturalSize for each children.
+ * First calculate the native size for the children, then for the element. \n
+ * Also called before the element is mapped, so it must be independent of the native control.
+ * First call done at iupLayoutCompute for the dialog.
+ */
+ void (*ComputeNaturalSize)(Ihandle* ih, int *w, int *h, int *children_expand);
+
+ /** Method that calculates and updates the current size of children based on the available size,
+ * the natural size and the expand configuration. \n
+ * Called only if there is any children.\n
+ * Must call \ref iupBaseSetCurrentSize for each children.
+ * shrink is the dialog attribute passed here for optimization. \n
+ * Also called before the element is mapped, so it must be independent of the native control.
+ * First call done at iupLayoutCompute for the dialog.
+ */
+ void (*SetChildrenCurrentSize)(Ihandle* ih, int shrink);
+
+ /** Method that calculates and updates the position relative to the parent. \n
+ * Called only if there is any children.\n
+ * Must call \ref iupBaseSetPosition for each children.
+ * Also called before the element is mapped, so it must be independent of the native control.
+ * First call done at iupLayoutCompute for the dialog.
+ */
+ void (*SetChildrenPosition)(Ihandle* ih, int x, int y);
+
+
+
+ /** Method that shows a popup dialog. Called only for native pre-defined dialogs. \n
+ * The element is not mapped. \n
+ * Must return IUP_ERROR or IUP_NOERROR. \n
+ * Called only from iupDialogPopup.
+ */
+ int (*DlgPopup)(Ihandle* ih, int x, int y);
+};
+
+
+
+/** Allocates memory for the Iclass structure and
+ * initializes the attribute handling functions table.
+ * \ingroup iclass */
+Iclass* iupClassNew(Iclass* ic_parent);
+
+/** Release the memory allocated by the class.
+ * Calls the \ref Iclass::Release method. \n
+ * Called from iupRegisterFinish.
+ * \ingroup iclass */
+void iupClassRelease(Iclass* ic);
+
+
+
+/** GetAttribute called for a specific attribute.
+ * Used by \ref iupClassRegisterAttribute.
+ * \ingroup iclass */
+typedef char* (*IattribGetFunc)(Ihandle* ih);
+
+/** GetAttribute called for a specific attribute when has_attrib_id is true. \n
+ * Same as IattribGetFunc but handle attribute names with number ids at the end. \n
+ * When calling iupClassRegisterAttribute just use a typecast. \n
+ * Pure numbers are translated into IDVALUEid.
+ * Used by \ref iupClassRegisterAttribute.
+ * \ingroup iclass */
+typedef char* (*IattribGetIdFunc)(Ihandle* ih, const char* name_id);
+
+/** SetAttribute called for a specific attribute. \n
+ * If returns 0, the attribute will not be stored in the hash table
+ * (except inheritble attributes that are always stored in the hash table). \n
+ * When IupSetAttribute is called using value=NULL, the default_value is passed to this function.
+ * Used by \ref iupClassRegisterAttribute.
+ * \ingroup iclass */
+typedef int (*IattribSetFunc)(Ihandle* ih, const char* value);
+
+/** SetAttribute called for a specific attribute when has_attrib_id is true. \n
+ * Same as IattribSetFunc but handle attribute names with number ids at the end. \n
+ * When calling iupClassRegisterAttribute just use a typecast. \n
+ * Pure numbers are translated into IDVALUEid, ex: "1" = "IDVALUE1".
+ * Used by \ref iupClassRegisterAttribute.
+ * \ingroup iclass */
+typedef int (*IattribSetIdFunc)(Ihandle* ih, const char* name_id, const char* value);
+
+/** Attribute flags.
+ * Used by \ref iupClassRegisterAttribute.
+ * \ingroup iclass */
+typedef enum _IattribFlags{
+ IUPAF_DEFAULT=0, /**< inheritable, can has a default value, is a string, can call the set/get functions only if mapped, no ID */
+ IUPAF_NO_INHERIT=1, /**< is not inheritable */
+ IUPAF_NO_DEFAULTVALUE=2, /**< can not has a default value */
+ IUPAF_NO_STRING=4, /**< is not a string */
+ IUPAF_NOT_MAPPED=8, /**< will call the set/get functions also when not mapped */
+ IUPAF_HAS_ID=16, /**< can has an ID at the end of the name, automatically set by \ref iupClassRegisterAttributeId */
+ IUPAF_READONLY=32, /**< is read-only, can not be changed */
+ IUPAF_WRITEONLY=64 /**< is write-only, usually an action */
+} IattribFlags;
+
+#define IUPAF_SAMEASSYSTEM ((char*)-1) /**< means that the default value is the same as the system default value, used only in \ref iupClassRegisterAttribute */
+
+
+/** Register attribute handling functions. get, set and default_value can be NULL.
+ * default_value should point to a constant string, it will not be duplicated internally. \n
+ * Notice that when an attribute is not defined then default_value=NULL,
+ * is inheritable can has a default value and is a string. \n
+ * Since there is only one attribute function table per class tree,
+ * if you register the same attribute in a child class, then it will replace the parent registration. \n
+ * If an attribute is not inheritable or not a string then it MUST be registered.
+ * Internal attributes (starting with "_IUP") can never be registered.
+ * \ingroup iclass */
+void iupClassRegisterAttribute(Iclass* ic, const char* name,
+ IattribGetFunc get,
+ IattribSetFunc set,
+ const char* default_value,
+ const char* system_default,
+ int flags);
+
+/** Same as \ref iupClassRegisterAttribute for attributes with Ids.
+ * \ingroup iclass */
+void iupClassRegisterAttributeId(Iclass* ic, const char* name,
+ IattribGetIdFunc get,
+ IattribSetIdFunc set,
+ int flags);
+
+/** Returns the attribute handling functions.
+ * \ingroup iclass */
+void iupClassRegisterGetAttribute(Iclass* ic, const char* name,
+ IattribGetFunc *get,
+ IattribSetFunc *set,
+ const char* *default_value,
+ const char* *system_default,
+ int *flags);
+
+/** Register the parameters of a callback.
+ * Used by language bindings.
+ * format follows the format specification of the class creation parameters format,
+ * but it adds the "double" option and remove array options.
+ * It can have none, one or more of the following. \n
+ * - "b" = (unsigned char) - byte
+ * - "i" = (int) - integer
+ * - "f" = (float) - real
+ * - "d" = (double) - real
+ * - "s" = (char*) - string
+ * - "v" = (void*) - generic pointer
+ * - "h" = (Ihandle*) - element handle
+ * The default return value for all callbacks is "i" (int).
+ * But the return value can be specified using one of the above parameters,
+ * after all parameters using "=" to separate it from them.
+ * \ingroup iclass */
+void iupClassRegisterCallback(Iclass* ic, const char* name, const char* format);
+
+/** Returns the format of the parameters of a registered callback.
+ * If NULL then the default callback definition is assumed.
+ * \ingroup iclass */
+char* iupClassCallbackGetFormat(Iclass* ic, const char* name);
+
+
+
+/** \defgroup iclassobject Class Object Functions
+ * \par
+ * Stubs for the class methods. They implement inheritance and check if method is NULL.
+ * \par
+ * See \ref iup_class.h
+ * \ingroup iclass
+ */
+
+/** Calls \ref Iclass::Create method.
+ * \ingroup iclassobject
+ */
+int iupClassObjectCreate(Ihandle* ih, void** params);
+
+/** Calls \ref Iclass::Map method.
+ * \ingroup iclassobject
+ */
+int iupClassObjectMap(Ihandle* ih);
+
+/** Calls \ref Iclass::UnMap method.
+ * \ingroup iclassobject
+ */
+void iupClassObjectUnMap(Ihandle* ih);
+
+/** Calls \ref Iclass::Destroy method.
+ * \ingroup iclassobject
+ */
+void iupClassObjectDestroy(Ihandle* ih);
+
+/** Calls \ref Iclass::GetInnerContainer method.
+ * The parent class is ignored. If necessary the child class must handle the parent class internally.
+ * \ingroup iclassobject
+ */
+Ihandle* iupClassObjectGetInnerContainer(Ihandle* ih);
+
+/** Calls \ref Iclass::GetInnerNativeContainerHandle method. Returns ih->handle if there is no inner parent.
+ * The parent class is ignored. If necessary the child class must handle the parent class internally.
+ * \ingroup iclassobject
+ */
+void* iupClassObjectGetInnerNativeContainerHandle(Ihandle* ih, Ihandle* child);
+
+/** Calls \ref Iclass::ChildAdded method.
+ * \ingroup iclassobject
+ */
+void iupClassObjectChildAdded(Ihandle* ih, Ihandle* child);
+
+/** Calls \ref Iclass::ChildRemoved method.
+ * \ingroup iclassobject
+ */
+void iupClassObjectChildRemoved(Ihandle* ih, Ihandle* child);
+
+/** Calls \ref Iclass::LayoutUpdate method.
+ * \ingroup iclassobject
+ */
+void iupClassObjectLayoutUpdate(Ihandle* ih);
+
+/** Calls \ref Iclass::ComputeNaturalSize method.
+ * \ingroup iclassobject
+ */
+void iupClassObjectComputeNaturalSize(Ihandle* ih, int *w, int *h, int *children_expand);
+
+/** Calls \ref Iclass::SetChildrenCurrentSize method.
+ * \ingroup iclassobject
+ */
+void iupClassObjectSetChildrenCurrentSize(Ihandle* ih, int shrink);
+
+/** Calls \ref Iclass::SetChildrenPosition method.
+ * \ingroup iclassobject
+ */
+void iupClassObjectSetChildrenPosition(Ihandle* ih, int x, int y);
+
+/** Calls \ref Iclass::DlgPopup method.
+ * \ingroup iclassobject
+ */
+int iupClassObjectDlgPopup(Ihandle* ih, int x, int y);
+
+
+
+/* Handle attributes, but since the attribute function table is shared by the class hierarchy,
+ * the attribute function is retrieved only from the current class.
+ * Set is called from iupAttribUpdate (IupMap), IupStoreAttribute and IupSetAttribute.
+ * Get is called only from IupGetAttribute.
+ */
+int iupClassObjectSetAttribute(Ihandle* ih, const char* name, const char* value, int *inherit);
+char* iupClassObjectGetAttribute(Ihandle* ih, const char* name, char* *def_value, int *inherit);
+
+/* Used only in iupAttribGetStr */
+void iupClassObjectGetAttributeInfo(Ihandle* ih, const char* name, char* *def_value, int *inherit);
+
+/* Used only in iupAttribIsPointer */
+int iupClassObjectAttribIsNotString(Ihandle* ih, const char* name);
+
+/* Used only in iupAttribUpdateFromParent */
+int iupClassObjectCurAttribIsInherit(Iclass* ic);
+
+/* Used in iupObjectCreate and IupMap */
+void iupClassObjectEnsureDefaultAttributes(Ihandle* ih);
+
+/* Used in documentation tests. */
+char* iupClassGetDefaultAttribute(const char* classname, const char *attrib_name);
+
+
+/* Other functions declared in <iup.h> and implemented here.
+IupGetClassType
+IupGetClassName
+*/
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#include "iup_classbase.h"
+
+#endif
diff --git a/iup/src/iup_classattrib.c b/iup/src/iup_classattrib.c
new file mode 100755
index 0000000..df8f873
--- /dev/null
+++ b/iup/src/iup_classattrib.c
@@ -0,0 +1,508 @@
+/** \file
+ * \brief Ihandle Class Attribute Management
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_str.h"
+#include "iup_attrib.h"
+#include "iup_assert.h"
+#include "iup_register.h"
+#include "iup_globalattrib.h"
+
+
+typedef struct _IattribFunc
+{
+ IattribGetFunc get;
+ IattribSetFunc set;
+ const char* default_value;
+ const char* system_default;
+ int call_global_default;
+ int flags;
+} IattribFunc;
+
+
+static int iClassIsGlobalDefault(const char* name)
+{
+ if (iupStrEqual(name, "DEFAULTFONT"))
+ return 1;
+ if (iupStrEqual(name, "DLGBGCOLOR"))
+ return 1;
+ if (iupStrEqual(name, "DLGFGCOLOR"))
+ return 1;
+ if (iupStrEqual(name, "TXTBGCOLOR"))
+ return 1;
+ if (iupStrEqual(name, "TXTFGCOLOR"))
+ return 1;
+ if (iupStrEqual(name, "MENUBGCOLOR"))
+ return 1;
+ return 0;
+}
+
+static const char* iClassFindId(const char* name)
+{
+ while(*name)
+ {
+ if (*name >= '0' && *name <= '9')
+ return name;
+ if (*name == '*' || *name == ':')
+ return name;
+
+ name++;
+ }
+ return NULL;
+}
+
+static const char* iClassCutNameId(const char* name, const char* name_id)
+{
+ char* str;
+ int len = name_id - name;
+ if (len == 0)
+ return NULL;
+
+ str = iupStrGetMemory(len+1);
+ memcpy(str, name, len);
+ str[len] = 0;
+ return str;
+}
+
+
+static char* iClassGetDefaultValue(IattribFunc* afunc)
+{
+ if (afunc->call_global_default)
+ return IupGetGlobal(afunc->default_value);
+ else
+ return (char*)afunc->default_value;
+}
+
+int iupClassObjectSetAttribute(Ihandle* ih, const char* name, const char * value, int *inherit)
+{
+ IattribFunc* afunc;
+
+ if (ih->iclass->has_attrib_id)
+ {
+ const char* name_id = iClassFindId(name);
+ if (name_id)
+ {
+ IattribFunc* afunc;
+ const char* partial_name = iClassCutNameId(name, name_id);
+ if (!partial_name)
+ partial_name = "IDVALUE"; /* pure numbers are used as attributes in IupList and IupMatrix,
+ translate them into IDVALUE. */
+ afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, partial_name);
+ if (afunc)
+ {
+ *inherit = 0; /* id numbered attributes are NON inheritable always */
+
+ if (afunc->flags & IUPAF_READONLY)
+ {
+ if (afunc->flags & IUPAF_NO_STRING)
+ return -1; /* value is NOT a string, can NOT call iupAttribStoreStr */
+ return 0;
+ }
+
+ if (afunc->set && (ih->handle || afunc->flags & IUPAF_NOT_MAPPED))
+ {
+ /* id numbered attributes have default value NULL always */
+ IattribSetIdFunc id_set = (IattribSetIdFunc)afunc->set;
+ return id_set(ih, name_id, value);
+ }
+
+ if (afunc->flags & IUPAF_NO_STRING)
+ return -1; /* value is NOT a string, can NOT call iupAttribStoreStr */
+
+ return 1; /* if the function exists, then must return here */
+ }
+ }
+ }
+
+ /* if not has_attrib_id, or not found an ID, or not found the partial name, check using the full name */
+
+ afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, name);
+ *inherit = 1; /* default is inheritable */
+ if (afunc)
+ {
+ *inherit = !(afunc->flags & IUPAF_NO_INHERIT) && !(afunc->flags & IUPAF_NO_STRING);
+
+ if (afunc->flags & IUPAF_READONLY)
+ {
+ if (afunc->flags & IUPAF_NO_STRING)
+ return -1; /* value is NOT a string, can NOT call iupAttribStoreStr */
+ return 0;
+ }
+
+ if (afunc->set && (ih->handle || afunc->flags & IUPAF_NOT_MAPPED))
+ {
+ int ret;
+ if (!value)
+ {
+ /* inheritable attributes when reset must check the parent value */
+ if (*inherit && ih->parent)
+ value = iupAttribGetInherit(ih->parent, name);
+
+ if (!value)
+ value = iClassGetDefaultValue(afunc);
+ }
+
+ if (afunc->flags & IUPAF_HAS_ID)
+ {
+ IattribSetIdFunc id_set = (IattribSetIdFunc)afunc->set;
+ return id_set(ih, "", value); /* empty Id */
+ }
+ else
+ ret = afunc->set(ih, value);
+
+ if (ret == 1 && afunc->flags & IUPAF_NO_STRING)
+ return -1; /* value is NOT a string, can NOT call iupAttribStoreStr */
+
+ if (*inherit)
+ return 1; /* inheritable attributes are always stored in the hash table, */
+ else /* to indicate that they are set at the control. */
+ return ret;
+ }
+ }
+
+ return 1;
+}
+
+char* iupClassObjectGetAttribute(Ihandle* ih, const char* name, char* *def_value, int *inherit)
+{
+ IattribFunc* afunc;
+
+ if (ih->iclass->has_attrib_id)
+ {
+ const char* name_id = iClassFindId(name);
+ if (name_id)
+ {
+ IattribFunc* afunc;
+ const char* partial_name = iClassCutNameId(name, name_id);
+ if (!partial_name)
+ partial_name = "IDVALUE"; /* pure numbers are used as attributes in IupList and IupMatrix,
+ translate them into IDVALUE. */
+ afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, partial_name);
+ if (afunc)
+ {
+ *def_value = NULL; /* id numbered attributes have default value NULL always */
+ *inherit = 0; /* id numbered attributes are NON inheritable always */
+
+ if (afunc->flags & IUPAF_WRITEONLY)
+ return NULL;
+
+ if (afunc->get && (ih->handle || afunc->flags & IUPAF_NOT_MAPPED))
+ {
+ IattribGetIdFunc id_get = (IattribGetIdFunc)afunc->get;
+ return id_get(ih, name_id);
+ }
+ else
+ return NULL; /* if the function exists, then must return here */
+ }
+ }
+ }
+
+ /* if not has_attrib_id, or not found an ID, or not found the partial name, check using the full name */
+
+ afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, name);
+ *def_value = NULL;
+ *inherit = 1; /* default is inheritable */
+ if (afunc)
+ {
+ *def_value = iClassGetDefaultValue(afunc);
+ *inherit = !(afunc->flags & IUPAF_NO_INHERIT) && !(afunc->flags & IUPAF_NO_STRING);
+
+ if (afunc->flags & IUPAF_WRITEONLY)
+ return NULL;
+
+ if (afunc->get && (ih->handle || afunc->flags & IUPAF_NOT_MAPPED))
+ {
+ if (afunc->flags & IUPAF_HAS_ID)
+ {
+ IattribGetIdFunc id_get = (IattribGetIdFunc)afunc->get;
+ return id_get(ih, ""); /* empty Id */
+ }
+ else
+ return afunc->get(ih);
+ }
+ }
+ return NULL;
+}
+
+void iupClassObjectGetAttributeInfo(Ihandle* ih, const char* name, char* *def_value, int *inherit)
+{
+ IattribFunc* afunc;
+
+ if (ih->iclass->has_attrib_id)
+ {
+ const char* name_id = iClassFindId(name);
+ if (name_id)
+ {
+ IattribFunc* afunc;
+ const char* partial_name = iClassCutNameId(name, name_id);
+ if (!partial_name)
+ partial_name = "IDVALUE"; /* pure numbers are used as attributes in IupList and IupMatrix,
+ translate them into IDVALUE. */
+ afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, partial_name);
+ if (afunc)
+ {
+ *def_value = NULL; /* id numbered attributes have default value NULL always */
+ *inherit = 0; /* id numbered attributes are NON inheritable always */
+ return; /* if the function exists, then must return here */
+ }
+ }
+ }
+
+ /* if not has_attrib_id, or not found an ID, or not found the partial name, check using the full name */
+
+ afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, name);
+ *def_value = NULL;
+ *inherit = 1; /* default is inheritable */
+ if (afunc)
+ {
+ *def_value = iClassGetDefaultValue(afunc);
+ *inherit = !(afunc->flags & IUPAF_NO_INHERIT) && !(afunc->flags & IUPAF_NO_STRING);
+ }
+}
+
+int iupClassObjectCurAttribIsInherit(Iclass* ic)
+{
+ IattribFunc* afunc = (IattribFunc*)iupTableGetCurr(ic->attrib_func);
+ if (afunc && !(afunc->flags & IUPAF_NO_INHERIT))
+ return 1;
+ return 0;
+}
+
+int iupClassObjectAttribIsNotString(Ihandle* ih, const char* name)
+{
+ IattribFunc* afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, name);
+ if (afunc && afunc->flags & IUPAF_NO_STRING)
+ return 1;
+ return 0;
+}
+
+void iupClassRegisterAttribute(Iclass* ic, const char* name,
+ IattribGetFunc _get, IattribSetFunc _set,
+ const char* _default_value, const char* _system_default, int _flags)
+{
+ IattribFunc* afunc = (IattribFunc*)iupTableGet(ic->attrib_func, name);
+ if (afunc)
+ free(afunc); /* overwrite a previous registration */
+
+ afunc = (IattribFunc*)malloc(sizeof(IattribFunc));
+ afunc->get = _get;
+ afunc->set = _set;
+ if (_default_value == IUPAF_SAMEASSYSTEM)
+ afunc->default_value = _system_default;
+ else
+ afunc->default_value = _default_value;
+ afunc->system_default = _system_default;
+ afunc->flags = _flags;
+
+ if (iClassIsGlobalDefault(afunc->default_value))
+ afunc->call_global_default = 1;
+ else
+ afunc->call_global_default = 0;
+
+ iupTableSet(ic->attrib_func, name, (void*)afunc, IUPTABLE_POINTER);
+}
+
+void iupClassRegisterAttributeId(Iclass* ic, const char* name,
+ IattribGetIdFunc _get, IattribSetIdFunc _set,
+ int _flags)
+{
+ IattribFunc* afunc = (IattribFunc*)iupTableGet(ic->attrib_func, name);
+ if (afunc)
+ free(afunc); /* overwrite a previous registration */
+
+ afunc = (IattribFunc*)malloc(sizeof(IattribFunc));
+ afunc->get = (IattribGetFunc)_get;
+ afunc->set = (IattribSetFunc)_set;
+ afunc->default_value = NULL;
+ afunc->system_default = NULL;
+ afunc->flags = _flags|IUPAF_HAS_ID|IUPAF_NO_INHERIT|IUPAF_NO_DEFAULTVALUE;
+ afunc->call_global_default = 0;
+
+ iupTableSet(ic->attrib_func, name, (void*)afunc, IUPTABLE_POINTER);
+}
+
+void iupClassRegisterGetAttribute(Iclass* ic, const char* name,
+ IattribGetFunc *_get, IattribSetFunc *_set,
+ const char* *_default_value, const char* *_system_default, int *_flags)
+{
+ IattribFunc* afunc = (IattribFunc*)iupTableGet(ic->attrib_func, name);
+ if (afunc)
+ {
+ if (_get) *_get = afunc->get;
+ if (_set) *_set = afunc->set;
+ if (_default_value) *_default_value = afunc->default_value;
+ if (_system_default) *_system_default = afunc->system_default;
+ if (_flags) *_flags = afunc->flags;
+ }
+}
+
+void iupClassRegisterCallback(Iclass* ic, const char* name, const char* format)
+{
+ /* Since attributes and callbacks do not conflict
+ we can use the same structure to store the callback format using the default_value. */
+ iupClassRegisterAttribute(ic, name, NULL, NULL, format, NULL, IUPAF_NO_INHERIT);
+}
+
+char* iupClassCallbackGetFormat(Iclass* ic, const char* name)
+{
+ IattribFunc* afunc = (IattribFunc*)iupTableGet(ic->attrib_func, name);
+ if (afunc)
+ return (char*)afunc->default_value;
+ return NULL;
+}
+
+int IupGetClassAttributes(const char* classname, char** names, int n)
+{
+ Iclass* ic;
+ int i = 0;
+ char* name;
+
+ iupASSERT(classname!=NULL);
+ if (!classname)
+ return 0;
+
+ ic = iupRegisterFindClass(classname);
+ if (!ic)
+ return -1;
+
+ if (!names || !n)
+ return iupTableCount(ic->attrib_func);
+
+ name = iupTableFirst(ic->attrib_func);
+ while (name)
+ {
+ names[i] = name;
+ i++;
+ if (i == n)
+ break;
+
+ name = iupTableNext(ic->attrib_func);
+ }
+
+ return i;
+}
+
+void IupSetClassDefaultAttribute(const char* classname, const char *name, const char* default_value)
+{
+ Iclass* ic;
+ IattribFunc* afunc;
+
+ iupASSERT(classname!=NULL);
+ if (!classname)
+ return;
+
+ iupASSERT(name!=NULL);
+ if (!name)
+ return;
+
+ ic = iupRegisterFindClass(name);
+ if (!ic)
+ return;
+
+ afunc = (IattribFunc*)iupTableGet(ic->attrib_func, name);
+ if (afunc && (!(afunc->flags & IUPAF_NO_DEFAULTVALUE) || !(afunc->flags & IUPAF_NO_STRING) || !(afunc->flags & IUPAF_HAS_ID)))
+ {
+ if (default_value == IUPAF_SAMEASSYSTEM)
+ afunc->default_value = afunc->system_default;
+ else
+ afunc->default_value = default_value;
+
+ if (iClassIsGlobalDefault(afunc->default_value))
+ afunc->call_global_default = 1;
+ else
+ afunc->call_global_default = 0;
+ }
+ else if (default_value)
+ iupClassRegisterAttribute(ic, name, NULL, NULL, default_value, NULL, IUPAF_DEFAULT);
+}
+
+void IupSaveClassAttributes(Ihandle* ih)
+{
+ Iclass* ic;
+ char *name;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ ic = ih->iclass;
+
+ name = iupTableFirst(ic->attrib_func);
+ while (name)
+ {
+ IattribFunc* afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, name);
+ if (afunc && !(afunc->flags & IUPAF_NO_STRING))
+ {
+ int inherit;
+ char *def_value;
+ char *value = iupClassObjectGetAttribute(ih, name, &def_value, &inherit);
+ if (value && value != iupAttribGet(ih, name))
+ iupAttribStoreStr(ih, name, value);
+ }
+
+ name = iupTableNext(ic->attrib_func);
+ }
+}
+
+void iupClassObjectEnsureDefaultAttributes(Ihandle* ih)
+{
+ Iclass* ic;
+ char *name;
+
+ ic = ih->iclass;
+
+ name = iupTableFirst(ic->attrib_func);
+ while (name)
+ {
+ IattribFunc* afunc = (IattribFunc*)iupTableGetCurr(ic->attrib_func);
+ if (afunc && afunc->set && (afunc->default_value || afunc->system_default) &&
+ (!(afunc->flags & IUPAF_NO_DEFAULTVALUE) || !(afunc->flags & IUPAF_NO_STRING) || !(afunc->flags & IUPAF_HAS_ID)))
+ {
+ if ((!iupStrEqualNoCase(afunc->default_value, afunc->system_default)) ||
+ (afunc->call_global_default && iupGlobalDefaultColorChanged(afunc->default_value)))
+ {
+ if ((!ih->handle && (afunc->flags & IUPAF_NOT_MAPPED)) ||
+ (ih->handle && !(afunc->flags & IUPAF_NOT_MAPPED) && !iupAttribGet(ih, name)))
+ afunc->set(ih, iClassGetDefaultValue(afunc));
+ }
+ }
+
+ name = iupTableNext(ic->attrib_func);
+ }
+}
+
+char* iupClassGetDefaultAttribute(const char* classname, const char *attrib_name)
+{
+ Iclass* ic;
+ IattribFunc* afunc;
+
+ iupASSERT(classname!=NULL);
+ if (!classname)
+ return NULL;
+
+ iupASSERT(attrib_name!=NULL);
+ if (!attrib_name)
+ return NULL;
+
+ ic = iupRegisterFindClass(classname);
+ if (!ic)
+ return NULL;
+
+ afunc = (IattribFunc*)iupTableGet(ic->attrib_func, attrib_name);
+ if (afunc)
+ return (char*)afunc->default_value;
+ else
+ return NULL;
+}
diff --git a/iup/src/iup_classbase.c b/iup/src/iup_classbase.c
new file mode 100755
index 0000000..9cb9e63
--- /dev/null
+++ b/iup/src/iup_classbase.c
@@ -0,0 +1,466 @@
+/** \file
+ * \brief Ihandle Class Base Functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_str.h"
+#include "iup_attrib.h"
+#include "iup_assert.h"
+
+
+void iupBaseCallValueChangedCb(Ihandle* ih)
+{
+ IFn vc_cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB");
+ if (vc_cb)
+ vc_cb(ih);
+}
+
+int iupBaseTypeVoidMapMethod(Ihandle* ih)
+{
+ ih->handle = (InativeHandle*)-1; /* fake value just to indicate that it is already mapped */
+ return IUP_NOERROR;
+}
+
+char* iupBaseGetWidAttrib(Ihandle *ih)
+{
+ return (char*)ih->handle;
+}
+
+void iupBaseUpdateSizeFromFont(Ihandle* ih)
+{
+ char* value = iupAttribGet(ih, "SIZE");
+ if (!value)
+ return;
+
+ iupBaseSetSizeAttrib(ih, value);
+}
+
+int iupBaseSetSizeAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ ih->userwidth = 0;
+ ih->userheight = 0;
+ }
+ else
+ {
+ /* if not specified, the value is 0 */
+ int w = 0, h = 0;
+ int charwidth, charheight;
+ iupdrvFontGetCharSize(ih, &charwidth, &charheight);
+ iupStrToIntInt(value, &w, &h, 'x');
+ if (w < 0) w = 0;
+ if (h < 0) h = 0;
+
+ ih->userwidth = iupWIDTH2RASTER(w, charwidth);
+ ih->userheight = iupHEIGHT2RASTER(h, charheight);
+ }
+ return 1; /* always save in the hash table, so when FONT is changed SIZE can be updated */
+}
+
+char* iupBaseGetSizeAttrib(Ihandle* ih)
+{
+ char* str;
+ int charwidth, charheight, width, height;
+
+ if (ih->handle)
+ {
+ width = ih->currentwidth;
+ height = ih->currentheight;
+ }
+ else
+ {
+ width = ih->userwidth;
+ height = ih->userheight;
+ }
+
+ iupdrvFontGetCharSize(ih, &charwidth, &charheight);
+ if (charwidth == 0 || charheight == 0)
+ return NULL; /* if font failed get from the hash table */
+
+ str = iupStrGetMemory(50);
+ sprintf(str, "%dx%d", iupRASTER2WIDTH(width, charwidth),
+ iupRASTER2HEIGHT(height, charheight));
+ return str;
+}
+
+int iupBaseSetRasterSizeAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ ih->userwidth = 0;
+ ih->userheight = 0;
+ }
+ else
+ {
+ /* if not specified, the value is 0 */
+ int w = 0, h = 0;
+ iupStrToIntInt(value, &w, &h, 'x');
+ if (w < 0) w = 0;
+ if (h < 0) h = 0;
+ ih->userwidth = w;
+ ih->userheight = h;
+ }
+ iupAttribSetStr(ih, "SIZE", NULL); /* clear SIZE in hash table */
+ return 0;
+}
+
+char* iupBaseGetRasterSizeAttrib(Ihandle* ih)
+{
+ char* str;
+ int width, height;
+
+ if (ih->handle)
+ {
+ width = ih->currentwidth;
+ height = ih->currentheight;
+ }
+ else
+ {
+ width = ih->userwidth;
+ height = ih->userheight;
+ }
+
+ if (!width && !height)
+ return NULL;
+
+ str = iupStrGetMemory(50);
+ sprintf(str, "%dx%d", width, height);
+ return str;
+}
+
+char* iupBaseGetCharSizeAttrib(Ihandle* ih)
+{
+ char* str;
+ int charwidth, charheight;
+
+ iupdrvFontGetCharSize(ih, &charwidth, &charheight);
+ if (charwidth == 0 || charheight == 0)
+ return NULL;
+
+ str = iupStrGetMemory(50);
+ sprintf(str, "%dx%d", charwidth, charheight);
+ return str;
+}
+
+static char* iBaseGetPositionAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(50);
+ sprintf(str, "%d,%d", ih->x, ih->y);
+ return str;
+}
+
+static int iBaseSetPositionAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->is_floating)
+ iupStrToIntInt(value, &ih->x, &ih->y, ',');
+ return 0;
+}
+
+char* iupBaseGetActiveAttrib(Ihandle *ih)
+{
+ if (iupdrvIsActive(ih))
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iBaseNativeParentIsActive(Ihandle* ih)
+{
+ if (!ih->parent)
+ return 1;
+
+ if (ih->parent->iclass->nativetype == IUP_TYPEVOID)
+ return iBaseNativeParentIsActive(ih->parent);
+ else
+ return iupdrvIsActive(ih->parent);
+}
+
+int iupBaseSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ {
+ if (iBaseNativeParentIsActive(ih))
+ iupdrvSetActive(ih, 1);
+ }
+ else
+ iupdrvSetActive(ih, 0);
+ return 0;
+}
+
+char* iupBaseGetVisibleAttrib(Ihandle* ih)
+{
+ if (iupdrvIsVisible(ih))
+ return "YES";
+ else
+ return "NO";
+}
+
+int iupBaseSetVisibleAttrib(Ihandle* ih, const char* value)
+{
+ iupdrvSetVisible(ih, iupStrBoolean(value));
+ return 0;
+}
+
+char* iupBaseNativeParentGetBgColorAttrib(Ihandle* ih)
+{
+ /* Used only by those who need a transparent background */
+ char* color = iupAttribGetInheritNativeParent(ih, "BGCOLOR");
+ if (!color) color = iupAttribGetInheritNativeParent(ih, "BACKGROUND");
+ if (!color) color = IupGetGlobal("DLGBGCOLOR");
+ return color;
+}
+
+char* iupBaseNativeParentGetBgColor(Ihandle* ih)
+{
+ /* Used in SetBgColorAttrib */
+ char* color = iupAttribGetInheritNativeParent(ih, "BGCOLOR");
+ if (!color) color = IupGetGlobal("DLGBGCOLOR");
+ return color;
+}
+
+int iupBaseGetScrollbar(Ihandle* ih)
+{
+ int sb = IUP_SB_NONE; /* NO scrollbar by default */
+ char* value = IupGetAttribute(ih, "SCROLLBAR");
+ if (value)
+ {
+ if (iupStrEqualNoCase(value, "YES"))
+ sb = IUP_SB_HORIZ | IUP_SB_VERT;
+ else if (iupStrEqualNoCase(value, "HORIZONTAL"))
+ sb = IUP_SB_HORIZ;
+ else if (iupStrEqualNoCase(value, "VERTICAL"))
+ sb = IUP_SB_VERT;
+ }
+ return sb;
+}
+
+static int iBaseSetNormalizerGroupAttrib(Ihandle* ih, const char* value)
+{
+ Ihandle* ih_normalizer = IupGetHandle(value);
+ if (!ih_normalizer)
+ {
+ ih_normalizer = IupNormalizer(NULL);
+ IupSetHandle(value, ih_normalizer);
+ }
+
+ IupSetAttribute(ih_normalizer, "ADDCONTROL_HANDLE", (char*)ih);
+ return 1;
+}
+
+static Ihandle* iBaseFindChild(Ihandle* ih, const char* name)
+{
+ Ihandle* child = ih->firstchild;
+ while (child)
+ {
+ char* child_name = iupAttribGet(child, "NAME");
+ if (child_name && iupStrEqualNoCase(name, child_name))
+ return child;
+
+ if (child->firstchild)
+ {
+ Ihandle* c = iBaseFindChild(child, name);
+ if (c) return c;
+ }
+
+ child = child->brother;
+ }
+ return NULL;
+}
+
+Ihandle* IupGetDialogChild(Ihandle* ih, const char* name)
+{
+ Ihandle *child, *dialog;
+ char attrib[1024] = "_IUP_DIALOG_CHILD_";
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ if (!name)
+ return NULL;
+
+ dialog = IupGetDialog(ih);
+ if (dialog) ih = dialog;
+
+ strcat(attrib, name);
+ child = (Ihandle*)iupAttribGet(ih, attrib);
+ if (child) return child;
+
+ if (ih->firstchild)
+ {
+ child = iBaseFindChild(ih, name);
+ if (child) return child;
+ }
+ return NULL;
+}
+
+int iupBaseSetNameAttrib(Ihandle* ih, const char* value)
+{
+ Ihandle* dialog = IupGetDialog(ih);
+ if (dialog)
+ {
+ char attrib[1024] = "_IUP_DIALOG_CHILD_";
+ strcat(attrib, value);
+ iupAttribSetStr(dialog, attrib, (char*)ih);
+ }
+ return 1;
+}
+
+static int iBaseSetFloatingAttrib(Ihandle* ih, const char* value)
+{
+ ih->is_floating = iupStrBoolean(value);
+ return 0;
+}
+
+static char* iBaseGetFloatingAttrib(Ihandle* ih)
+{
+ if (ih->is_floating)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iBaseSetMaxSizeAttrib(Ihandle* ih, const char* value)
+{
+ if (value)
+ ih->has_maxsize = 1;
+ else
+ ih->has_maxsize = 0;
+ return 1;
+}
+
+static int iBaseSetMinSizeAttrib(Ihandle* ih, const char* value)
+{
+ if (value)
+ ih->has_minsize = 1;
+ else
+ ih->has_minsize = 0;
+ return 1;
+}
+
+static int iBaseSetExpandAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "YES"))
+ ih->expand = IUP_EXPAND_BOTH;
+ else if (iupStrEqualNoCase(value, "HORIZONTAL"))
+ ih->expand = IUP_EXPAND_WIDTH;
+ else if (iupStrEqualNoCase(value, "VERTICAL"))
+ ih->expand = IUP_EXPAND_HEIGHT;
+ else
+ ih->expand = IUP_EXPAND_NONE;
+ return 0;
+}
+
+static char* iBaseGetExpandAttrib(Ihandle* ih)
+{
+ if (ih->expand & IUP_EXPAND_BOTH)
+ return "YES";
+ else if (ih->expand & IUP_EXPAND_WIDTH)
+ return "HORIZONTAL";
+ else if (ih->expand & IUP_EXPAND_HEIGHT)
+ return "VERTICAL";
+ else
+ return "NO";
+}
+
+void iupBaseContainerUpdateExpand(Ihandle* ih)
+{
+ char *expand = iupAttribGetInherit(ih, "EXPAND");
+ if (!expand)
+ ih->expand = IUP_EXPAND_BOTH; /* default for containers is YES */
+ else
+ {
+ if (iupStrEqualNoCase(expand, "NO"))
+ ih->expand = IUP_EXPAND_NONE;
+ else if (iupStrEqualNoCase(expand, "HORIZONTAL"))
+ ih->expand = IUP_EXPAND_WIDTH;
+ else if (iupStrEqualNoCase(expand, "VERTICAL"))
+ ih->expand = IUP_EXPAND_HEIGHT;
+ else
+ ih->expand = IUP_EXPAND_BOTH; /* default for containers is YES */
+ }
+}
+
+/* EXPAND is registered with IUP_NO_INHERIT because it is not inheritable,
+ but it is inheritable for containers.
+ So if you set at a container it will not affect its children,
+ but children that are containers will get the same value. */
+char* iupBaseContainerGetExpandAttrib(Ihandle* ih)
+{
+ return iupAttribGetInherit(ih, "EXPAND");
+}
+
+void iupBaseRegisterCommonAttrib(Iclass* ic)
+{
+ iupClassRegisterAttribute(ic, "WID", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "NAME", NULL, iupBaseSetNameAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FLOATING", iBaseGetFloatingAttrib, iBaseSetFloatingAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "EXPAND", iBaseGetExpandAttrib, iBaseSetExpandAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "NORMALIZERGROUP", NULL, iBaseSetNormalizerGroupAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* make sure everyone has the correct default value */
+ iupClassRegisterAttribute(ic, "VISIBLE", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "ACTIVE", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ if (ic->is_interactive)
+ iupClassRegisterAttribute(ic, "CANFOCUS", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+ else
+ iupClassRegisterAttribute(ic, "CANFOCUS", NULL, NULL, IUPAF_SAMEASSYSTEM, "NO", IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "SIZE", iupBaseGetSizeAttrib, iupBaseSetSizeAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "RASTERSIZE", iupBaseGetRasterSizeAttrib, iupBaseSetRasterSizeAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CHARSIZE", iupBaseGetCharSizeAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "POSITION", iBaseGetPositionAttrib, iBaseSetPositionAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MAXSIZE", NULL, iBaseSetMaxSizeAttrib, IUPAF_SAMEASSYSTEM, "65535x65535", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MINSIZE", NULL, iBaseSetMinSizeAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, iupdrvSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); /* use inheritance to retrieve standard fonts */
+ iupClassRegisterAttribute(ic, "FONT", iupGetFontAttrib, iupSetFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "FONTSTYLE", iupGetFontStyleAttrib, iupSetFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FONTSIZE", iupGetFontSizeAttrib, iupSetFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FONTFACE", iupGetFontFaceAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupdrvBaseRegisterCommonAttrib(ic);
+}
+
+void iupBaseRegisterVisualAttrib(Iclass* ic)
+{
+ iupClassRegisterAttribute(ic, "VISIBLE", iupBaseGetVisibleAttrib, iupBaseSetVisibleAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); /* VISIBLE inheritance comes from the native system */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iupBaseSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+
+ iupClassRegisterAttribute(ic, "ZORDER", NULL, iupdrvBaseSetZorderAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "X", iupdrvBaseGetXAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "Y", iupdrvBaseGetYAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "TIP", NULL, iupdrvBaseSetTipAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TIPVISIBLE", NULL, iupdrvBaseSetTipVisibleAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TIPDELAY", NULL, NULL, IUPAF_SAMEASSYSTEM, "5000", IUPAF_NOT_MAPPED); /* 5 seconds */
+ iupClassRegisterAttribute(ic, "TIPBGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "255 255 225", IUPAF_NOT_MAPPED); /* Light Yellow */
+ iupClassRegisterAttribute(ic, "TIPFGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "0 0 0", IUPAF_NOT_MAPPED); /* black */
+}
+
+void iupBaseRegisterCommonCallbacks(Iclass* ic)
+{
+ iupClassRegisterAttribute(ic, "MAP_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "UNMAP_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "GETFOCUS_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "KILLFOCUS_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ENTERWINDOW_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "LEAVEWINDOW_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "HELP_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "K_ANY", NULL, NULL, "i", NULL, IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/iup_classbase.h b/iup/src/iup_classbase.h
new file mode 100755
index 0000000..1ced9c6
--- /dev/null
+++ b/iup/src/iup_classbase.h
@@ -0,0 +1,175 @@
+/** \file
+ * \brief Base Class
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_CLASSBASE_H
+#define __IUP_CLASSBASE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup iclassbase Base Class
+ * \par
+ * See \ref iup_classbase.h
+ * \ingroup iclass
+ */
+
+
+/** Register all common base attributes: \n
+ * WID \n
+ * SIZE, RASTERSIZE, POSITION \n
+ * FONT (and derived) \n\n
+ * All controls that are positioned inside a dialog must register all common base attributes.
+ * \ingroup iclassbase */
+void iupBaseRegisterCommonAttrib(Iclass* ic);
+
+/** Register all visual base attributes: \n
+ * VISIBLE, ACTIVE \n
+ * ZORDER, X, Y \n
+ * TIP (and derived) \n\n
+ * All controls that are positioned inside a dialog must register all visual base attributes.
+ * \ingroup iclassbase */
+void iupBaseRegisterVisualAttrib(Iclass* ic);
+
+/** Register all common callbacks: \n
+* MAP_CB, UNMAP_CB, GETFOCUS_CB, KILLFOCUS_CB, ENTERWINDOW_CB, LEAVEWINDOW_CB, K_ANY, HELP_CB.
+* \ingroup iclassbase */
+void iupBaseRegisterCommonCallbacks(Iclass* ic);
+
+/* Register driver dependent common attributes.
+ Used only from iupBaseRegisterCommonAttrib */
+void iupdrvBaseRegisterCommonAttrib(Iclass* ic);
+
+/** Updates the expand member of the IUP object from the EXPAND attribute.
+ * Should be called in the beginning of the ComputeNaturalSize for a container.
+ * \ingroup iclassbase */
+void iupBaseContainerUpdateExpand(Ihandle* ih);
+
+/** Initializes the natural size using the user size, then
+ * if a container then update the "expand" member from the EXPAND attribute, then
+ * call \ref iupClassObjectComputeNaturalSize for containers if they have children or
+ * call \ref iupClassObjectComputeNaturalSize for non-containers if user size is not defined.
+ * Must be called for each children in the container. \n
+ * First call is in iupLayoutCompute.
+ * \ingroup iclassbase */
+void iupBaseComputeNaturalSize(Ihandle* ih);
+
+/** Update the current size from the available size, the natural size, expand and shrink.
+ * Call \ref iupClassObjectSetChildrenCurrentSize for containers if they have children.
+ * Must be called for each children in the container. \n
+ * First call is in iupLayoutCompute.
+ * \ingroup iclassbase */
+void iupBaseSetCurrentSize(Ihandle* ih, int w, int h, int shrink);
+
+/** Set the current position and update children position for containers.
+ * Call \ref iupClassObjectSetChildrenPosition for containers if they have children.
+ * Must be called for each children in the container. \n
+ * First call is in iupLayoutCompute.
+ * \ingroup iclassbase */
+void iupBaseSetPosition(Ihandle* ih, int x, int y);
+
+/* Updates the SIZE attribute if defined.
+ Called only from iupdrvSetStandardFontAttrib. */
+void iupBaseUpdateSizeFromFont(Ihandle* ih);
+
+
+/** \defgroup iclassbasemethod Base Class Methods
+ * \par
+ * See \ref iup_classbase.h
+ * \ingroup iclassbase
+ */
+
+/** Driver dependent \ref Iclass::LayoutUpdate method.
+ * \ingroup iclassbasemethod */
+void iupdrvBaseLayoutUpdateMethod(Ihandle *ih);
+
+/** Driver dependent \ref Iclass::UnMap method.
+ * \ingroup iclassbasemethod */
+void iupdrvBaseUnMapMethod(Ihandle* ih);
+
+/** Native type void \ref Iclass::Map method.
+ * \ingroup iclassbasemethod */
+int iupBaseTypeVoidMapMethod(Ihandle* ih);
+
+
+/** \defgroup iclassbaseattribfunc Base Class Attribute Functions
+ * \par
+ * Used by the controls for iupClassRegisterAttribute.
+ * \par
+ * See \ref iup_classbase.h
+ * \ingroup iclassbase
+ * @{
+ */
+
+/* common */
+char* iupBaseGetWidAttrib(Ihandle* ih);
+int iupBaseSetNameAttrib(Ihandle* ih, const char* value);
+int iupBaseSetRasterSizeAttrib(Ihandle* ih, const char* value);
+int iupBaseSetSizeAttrib(Ihandle* ih, const char* value);
+char* iupBaseGetSizeAttrib(Ihandle* ih);
+char* iupBaseGetRasterSizeAttrib(Ihandle* ih);
+
+/* visual */
+char* iupBaseGetVisibleAttrib(Ihandle* ih);
+int iupBaseSetVisibleAttrib(Ihandle* ih, const char* value);
+char* iupBaseGetActiveAttrib(Ihandle *ih);
+int iupBaseSetActiveAttrib(Ihandle* ih, const char* value);
+int iupdrvBaseSetZorderAttrib(Ihandle* ih, const char* value);
+char *iupdrvBaseGetXAttrib(Ihandle *ih);
+char *iupdrvBaseGetYAttrib(Ihandle *ih);
+int iupdrvBaseSetTipAttrib(Ihandle* ih, const char* value);
+int iupdrvBaseSetTipVisibleAttrib(Ihandle* ih, const char* value);
+int iupdrvBaseSetBgColorAttrib(Ihandle* ih, const char* value);
+int iupdrvBaseSetFgColorAttrib(Ihandle* ih, const char* value);
+char* iupBaseNativeParentGetBgColorAttrib(Ihandle* ih);
+
+/* other */
+char* iupBaseContainerGetExpandAttrib(Ihandle* ih);
+int iupdrvBaseSetCursorAttrib(Ihandle* ih, const char* value);
+char* iupdrvBaseGetClientSizeAttrib(Ihandle* ih);
+
+/* Windows Only */
+char* iupdrvBaseGetTitleAttrib(Ihandle* ih);
+int iupdrvBaseSetTitleAttrib(Ihandle* ih, const char* value);
+
+/** @} */
+
+
+
+/** \defgroup iclassbaseutil Base Class Utilities
+ * \par
+ * See \ref iup_classbase.h
+ * \ingroup iclassbase
+ * @{
+ */
+
+#define iupMAX(_a,_b) ((_a)>(_b)?(_a):(_b))
+#define iupROUND(_x) ((int)((_x)>0? (_x)+0.5: (_x)-0.5))
+
+#define iupCOLOR8TO16(_x) ((unsigned short)(_x*257)) /* 65535/255 = 257 */
+#define iupCOLOR16TO8(_x) ((unsigned char)(_x/257))
+
+#define iupBYTECROP(_x) ((unsigned char)((_x)<0?0:((_x)>255)?255:(_x)))
+
+enum{IUP_ALIGN_ALEFT, IUP_ALIGN_ACENTER, IUP_ALIGN_ARIGHT};
+#define IUP_ALIGN_ABOTTOM IUP_ALIGN_ARIGHT
+#define IUP_ALIGN_ATOP IUP_ALIGN_ALEFT
+
+enum{IUP_SB_NONE, IUP_SB_HORIZ, IUP_SB_VERT};
+int iupBaseGetScrollbar(Ihandle* ih);
+
+char* iupBaseNativeParentGetBgColor(Ihandle* ih);
+void iupBaseCallValueChangedCb(Ihandle* ih);
+
+/** @} */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_colordlg.c b/iup/src/iup_colordlg.c
new file mode 100755
index 0000000..d3835cd
--- /dev/null
+++ b/iup/src/iup_colordlg.c
@@ -0,0 +1,44 @@
+/** \file
+ * \brief IupColorDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+#include <limits.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+
+
+Ihandle* IupColorDlg(void)
+{
+ return IupCreate("colordlg");
+}
+
+Iclass* iupColorDlgGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupDialogGetClass());
+
+ ic->name = "colordlg";
+ ic->nativetype = IUP_TYPEDIALOG;
+ ic->is_interactive = 1;
+
+ /* reset not used native dialog methods */
+ ic->parent->LayoutUpdate = NULL;
+ ic->parent->SetChildrenPosition = NULL;
+ ic->parent->Map = NULL;
+ ic->parent->UnMap = NULL;
+
+ iupdrvColorDlgInitClass(ic);
+
+ return ic;
+}
diff --git a/iup/src/iup_dialog.c b/iup/src/iup_dialog.c
new file mode 100755
index 0000000..d70e12c
--- /dev/null
+++ b/iup/src/iup_dialog.c
@@ -0,0 +1,747 @@
+/** \file
+ * \brief IupDialog class
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_class.h"
+#include "iup_object.h"
+#include "iup_dlglist.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_drv.h"
+#include "iup_drvinfo.h"
+#include "iup_drvfont.h"
+#include "iup_focus.h"
+#include "iup_str.h"
+#define _IUPDLG_PRIVATE
+#include "iup_dialog.h"
+
+
+static int dlg_popup_level = 1;
+
+InativeHandle* iupDialogGetNativeParent(Ihandle* ih)
+{
+ Ihandle* parent = IupGetAttributeHandle(ih, "PARENTDIALOG");
+ if (parent && parent->handle)
+ return parent->handle;
+ else
+ return (InativeHandle*)iupAttribGet(ih, "NATIVEPARENT");
+}
+
+static void iupDialogAdjustPos(Ihandle *ih, int *x, int *y)
+{
+ int cursor_x = 0, cursor_y = 0;
+ int screen_width = 0, screen_height = 0;
+ int current_x = 0, current_y = 0;
+ int parent_x = 0, parent_y = 0;
+
+ /* the dialog is already mapped here */
+
+ if (*x == IUP_CURRENT || *y == IUP_CURRENT)
+ {
+ /* if first time, there is no current position */
+ if (!ih->data->first_show)
+ {
+ int center = IUP_CENTER;
+ InativeHandle* parent = iupDialogGetNativeParent(ih);
+ if (parent)
+ center = IUP_CENTERPARENT;
+
+ if (*x == IUP_CURRENT) *x = center;
+ if (*y == IUP_CURRENT) *y = center;
+ }
+ else
+ iupdrvDialogGetPosition(ih->handle, &current_x, &current_y);
+ }
+
+ if (*x == IUP_CENTER || *y == IUP_CENTER ||
+ *x == IUP_RIGHT || *y == IUP_RIGHT ||
+ *x == IUP_CENTERPARENT || *y == IUP_CENTERPARENT)
+ iupdrvGetScreenSize(&screen_width, &screen_height);
+
+ if (*x == IUP_CENTERPARENT || *y == IUP_CENTERPARENT)
+ {
+ InativeHandle* parent = iupDialogGetNativeParent(ih);
+ if (parent)
+ {
+ iupdrvDialogGetPosition(parent, &parent_x, &parent_y);
+
+ if (*x == IUP_CENTERPARENT && *y == IUP_CENTERPARENT)
+ iupdrvDialogGetSize(parent, &screen_width, &screen_height);
+ else if (*x == IUP_CENTERPARENT)
+ iupdrvDialogGetSize(parent, &screen_width, NULL);
+ else if (*y == IUP_CENTERPARENT)
+ iupdrvDialogGetSize(parent, NULL, &screen_height);
+ }
+ }
+
+ if (*x == IUP_MOUSEPOS || *y == IUP_MOUSEPOS)
+ iupdrvGetCursorPos(&cursor_x, &cursor_y);
+
+ if (iupAttribGetBoolean(ih, "MDICHILD"))
+ {
+ Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE");
+ if (client)
+ {
+ /* position is relative to mdi client */
+ parent_x = 0;
+ parent_y = 0;
+
+ /* screen size is now the size of the mdi client */
+ screen_width = client->currentwidth;
+ screen_height = client->currentheight;
+
+ iupdrvScreenToClient(client, &current_x, &current_y);
+ iupdrvScreenToClient(client, &cursor_x, &cursor_y);
+ }
+ }
+
+ switch (*x)
+ {
+ case IUP_CENTERPARENT:
+ *x = (screen_width - ih->currentwidth)/2 + parent_x;
+ break;
+ case IUP_CENTER:
+ *x = (screen_width - ih->currentwidth)/2;
+ break;
+ case IUP_LEFT:
+ *x = 0;
+ break;
+ case IUP_RIGHT:
+ *x = screen_width - ih->currentwidth;
+ break;
+ case IUP_MOUSEPOS:
+ *x = cursor_x;
+ break;
+ case IUP_CURRENT:
+ *x = current_x;
+ break;
+ }
+
+ switch (*y)
+ {
+ case IUP_CENTERPARENT:
+ *y = (screen_height - ih->currentheight)/2 + parent_y;
+ break;
+ case IUP_CENTER:
+ *y = (screen_height - ih->currentheight)/2;
+ break;
+ case IUP_LEFT:
+ *y = 0;
+ break;
+ case IUP_RIGHT:
+ *y = screen_height - ih->currentheight;
+ break;
+ case IUP_MOUSEPOS:
+ *y = cursor_y;
+ break;
+ case IUP_CURRENT:
+ *y = current_y;
+ break;
+ }
+}
+
+static void iDialogSetModal(Ihandle* ih_popup)
+{
+ Ihandle *ih;
+ iupAttribSetStr(ih_popup, "MODAL", "YES");
+
+ /* disable all visible dialogs, and mark popup level */
+ for (ih = iupDlgListFirst(); ih; ih = iupDlgListNext())
+ {
+ if (ih != ih_popup &&
+ ih->handle &&
+ iupdrvDialogIsVisible(ih) &&
+ ih->data->popup_level == 0)
+ {
+ iupdrvSetActive(ih, 0);
+ ih->data->popup_level = dlg_popup_level;
+ }
+ }
+
+ dlg_popup_level++;
+}
+
+static void iDialogUnSetModal(Ihandle* ih_popup)
+{
+ Ihandle *ih;
+ if (!iupAttribGetBoolean(ih_popup, "MODAL"))
+ return;
+
+ iupAttribSetStr(ih_popup, "MODAL", NULL);
+
+ /* must enable all visible dialogs at the marked popup level */
+ for (ih = iupDlgListFirst(); ih; ih = iupDlgListNext())
+ {
+ if (ih->handle)
+ {
+ if (ih->data->popup_level == dlg_popup_level-1)
+ {
+ iupdrvSetActive(ih, 1);
+ ih->data->popup_level = 0;
+ }
+ }
+ }
+
+ dlg_popup_level--;
+}
+
+static int iDialogCreateMethod(Ihandle* ih, void** params)
+{
+ ih->data = iupALLOCCTRLDATA();
+
+ ih->data->child_id = 100; /* initial number */
+ ih->data->show_state = IUP_HIDE;
+
+ if (params)
+ {
+ Ihandle** iparams = (Ihandle**)params;
+ if (*iparams)
+ IupAppend(ih, *iparams);
+ }
+
+ iupDlgListAdd(ih);
+
+ return IUP_NOERROR;
+}
+
+static void iDialogDestroyMethod(Ihandle* ih)
+{
+ iupDlgListRemove(ih);
+}
+
+static void iDialogComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ int decorwidth, decorheight;
+ Ihandle* child = ih->firstchild;
+
+ iupDialogGetDecorSize(ih, &decorwidth, &decorheight);
+ *w = decorwidth;
+ *h = decorheight;
+
+ if (child)
+ {
+ /* update child natural size first */
+ iupBaseComputeNaturalSize(child);
+
+ *expand = child->expand;
+ *w += child->naturalwidth;
+ *h += child->naturalheight;
+ }
+}
+
+static void iDialogSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink)
+{
+ int decorwidth, decorheight, client_width, client_height;
+
+ if (shrink)
+ {
+ client_width = ih->currentwidth;
+ client_height = ih->currentheight;
+ }
+ else
+ {
+ client_width = iupMAX(ih->naturalwidth, ih->currentwidth);
+ client_height = iupMAX(ih->naturalheight, ih->currentheight);
+ }
+
+ iupDialogGetDecorSize(ih, &decorwidth, &decorheight);
+
+ client_width -= decorwidth;
+ client_height -= decorheight;
+ if (client_width < 0) client_width = 0;
+ if (client_height < 0) client_height = 0;
+
+ iupBaseSetCurrentSize(ih->firstchild, client_width, client_height, shrink);
+}
+
+static void iDialogSetChildrenPositionMethod(Ihandle* ih, int x, int y)
+{
+ (void)x;
+ (void)y;
+
+ /* Child coordinates are relative to client left-top corner. */
+ iupBaseSetPosition(ih->firstchild, 0, 0);
+}
+
+static void iDialogAfterShow(Ihandle* ih)
+{
+ Ihandle* old_focus;
+ IFni show_cb;
+
+ /* process all pending messages */
+ IupFlush();
+
+ old_focus = IupGetFocus();
+
+ show_cb = (IFni)IupGetCallback(ih, "SHOW_CB");
+ if (show_cb && show_cb(ih, ih->data->show_state) == IUP_CLOSE)
+ {
+ IupExitLoop();
+ return;
+ }
+
+ if (ih->data->show_state == IUP_SHOW)
+ {
+ if (show_cb)
+ IupFlush(); /* again to update focus */
+
+ /* do it only if show_cb did NOT changed the current focus */
+ if (old_focus == IupGetFocus())
+ {
+ Ihandle *startfocus = IupGetAttributeHandle(ih, "STARTFOCUS");
+ if (startfocus)
+ IupSetFocus(startfocus);
+ else
+ IupNextField(ih);
+ }
+ }
+}
+
+int iupDialogGetChildId(Ihandle* ih)
+{
+ int id;
+ ih = IupGetDialog(ih);
+ if (!ih) return -1;
+ id = ih->data->child_id;
+ ih->data->child_id = id+1;
+ return id;
+}
+
+char* iupDialogGetChildIdStr(Ihandle* ih)
+{
+ char *str = iupStrGetMemory(50);
+ Ihandle* dialog = IupGetDialog(ih);
+ sprintf(str, "iup-%s-%d", ih->iclass->name, dialog->data->child_id);
+ return str;
+}
+
+int iupDialogPopup(Ihandle* ih, int x, int y)
+{
+ int was_visible;
+
+ int ret = iupClassObjectDlgPopup(ih, x, y);
+ if (ret != IUP_INVALID) /* IUP_INVALID means it is not implemented */
+ return ret;
+
+ ih->data->show_state = IUP_SHOW;
+
+ /* save visible state before iupdrvDialogSetPlacement */
+ /* because it can also show the window when changing placement. */
+ was_visible = iupdrvDialogIsVisible(ih);
+
+ /* Update the position and placement */
+ if (!iupdrvDialogSetPlacement(ih))
+ {
+ iupDialogAdjustPos(ih, &x, &y);
+ iupdrvDialogSetPosition(ih, x, y);
+ }
+
+ if (was_visible) /* already visible */
+ {
+ /* only re-show to raise the window */
+ iupdrvDialogSetVisible(ih, 1);
+
+ /* flush, then process show_cb and startfocus */
+ iDialogAfterShow(ih);
+ return IUP_NOERROR;
+ }
+
+ if (iupAttribGetBoolean(ih, "MODAL")) /* already a popup */
+ return IUP_NOERROR;
+
+ iDialogSetModal(ih);
+
+ ih->data->first_show = 1;
+
+ /* actually show the window */
+ /* test if placement turn the dialog visible */
+ if (!iupdrvDialogIsVisible(ih))
+ iupdrvDialogSetVisible(ih, 1);
+
+ /* increment visible count */
+ iupDlgListVisibleInc();
+
+ /* flush, then process show_cb and startfocus */
+ iDialogAfterShow(ih);
+
+ /* interrupt processing here */
+ IupMainLoop();
+
+ /* if window is still valid (IupDestroy not called),
+ hide the dialog if still visible. */
+ if (iupObjectCheck(ih))
+ {
+ iDialogUnSetModal(ih);
+ IupHide(ih);
+ }
+
+ return IUP_NOERROR;
+}
+
+int iupDialogShowXY(Ihandle* ih, int x, int y)
+{
+ int was_visible;
+
+ /* Calling IupShow for a visible dialog shown with IupPopup does nothing. */
+ if (iupAttribGetBoolean(ih, "MODAL")) /* already a popup */
+ return IUP_NOERROR;
+
+ if (ih->data->popup_level != 0)
+ {
+ /* was disabled by a Popup, re-enable it */
+ iupdrvSetActive(ih, 1);
+ ih->data->popup_level = 0; /* Now it is at the current popup level */
+ }
+
+ /* save visible state before iupdrvDialogSetPlacement */
+ /* because it can also show the window when changing placement. */
+ was_visible = iupdrvDialogIsVisible(ih);
+
+ /* Update the position and placement */
+ if (!iupdrvDialogSetPlacement(ih))
+ {
+ iupDialogAdjustPos(ih, &x, &y);
+ iupdrvDialogSetPosition(ih, x, y);
+ }
+
+ if (was_visible) /* already visible */
+ {
+ /* only re-show to raise the window */
+ iupdrvDialogSetVisible(ih, 1);
+
+ /* flush, then process show_cb and startfocus */
+ iDialogAfterShow(ih);
+ return IUP_NOERROR;
+ }
+
+ ih->data->first_show = 1;
+
+ /* actually show the window */
+ /* test if placement turn the dialog visible */
+ if (!iupdrvDialogIsVisible(ih))
+ iupdrvDialogSetVisible(ih, 1);
+
+ /* increment visible count */
+ iupDlgListVisibleInc();
+
+ /* flush, then process show_cb and startfocus */
+ iDialogAfterShow(ih);
+
+ return IUP_NOERROR;
+}
+
+void iupDialogHide(Ihandle* ih)
+{
+ /* hidden at the system and marked hidden in IUP */
+ if (!iupdrvDialogIsVisible(ih) && ih->data->show_state == IUP_HIDE)
+ return;
+
+ /* marked hidden in IUP */
+ ih->data->show_state = IUP_HIDE;
+
+ /* if called IupHide for a Popup window */
+ if (iupAttribGetBoolean(ih, "MODAL"))
+ {
+ iDialogUnSetModal(ih);
+ IupExitLoop();
+ }
+
+ ih->data->ignore_resize = 1;
+
+ /* actually hide the window */
+ iupdrvDialogSetVisible(ih, 0);
+
+ ih->data->ignore_resize = 0;
+
+ /* decrement visible count */
+ iupDlgListVisibleDec();
+
+ if (iupDlgListVisibleCount() <= 0)
+ {
+ /* if this is the last window visible,
+ exit message loop except when LOCKLOOP==YES */
+ if (!iupStrBoolean(IupGetGlobal("LOCKLOOP")))
+ IupExitLoop();
+ }
+
+ /* flush, then process show_cb and startfocus */
+ iDialogAfterShow(ih);
+}
+
+
+/****************************************************************/
+
+
+static int iDialogSizeGetScale(const char* sz)
+{
+ if (!sz || sz[0] == 0) return 0;
+ if (iupStrEqualNoCase(sz, "FULL")) return 1;
+ if (iupStrEqualNoCase(sz, "HALF")) return 2;
+ if (iupStrEqualNoCase(sz, "THIRD")) return 3;
+ if (iupStrEqualNoCase(sz, "QUARTER")) return 4;
+ if (iupStrEqualNoCase(sz, "EIGHTH")) return 8;
+ return 0;
+}
+
+static int iDialogSetSizeAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ ih->userwidth = 0;
+ ih->userheight = 0;
+ }
+ else
+ {
+ char *sh, sw[40];
+ strcpy(sw, value);
+ sh = strchr(sw, 'x');
+ if (!sh)
+ sh = "";
+ else
+ {
+ *sh = '\0'; /* to mark the end of sw */
+ ++sh;
+ }
+
+ {
+ int charwidth, charheight;
+ int screen_width, screen_height;
+ int wscale = iDialogSizeGetScale(sw);
+ int hscale = iDialogSizeGetScale(sh);
+
+ int width = 0, height = 0;
+ iupStrToIntInt(value, &width, &height, 'x');
+ if (width < 0) width = 0;
+ if (height < 0) height = 0;
+
+ iupdrvFontGetCharSize(ih, &charwidth, &charheight);
+
+ /* desktop size, excluding task bars and menu bars */
+ iupdrvGetScreenSize(&screen_width, &screen_height);
+
+ if (wscale)
+ width = screen_width/wscale;
+ else
+ width = iupWIDTH2RASTER(width, charwidth);
+
+ if (hscale)
+ height = screen_height/hscale;
+ else
+ height = iupHEIGHT2RASTER(height, charheight);
+
+ ih->userwidth = width;
+ ih->userheight = height;
+ }
+ }
+
+ /* must reset the current size, */
+ /* so the user or the natural size will be used to resize the dialog */
+ ih->currentwidth = 0;
+ ih->currentheight = 0;
+
+ return 0;
+}
+
+static int iDialogSetRasterSizeAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ ih->userwidth = 0;
+ ih->userheight = 0;
+ }
+ else
+ {
+ int w = 0, h = 0;
+ iupStrToIntInt(value, &w, &h, 'x');
+ if (w < 0) w = 0;
+ if (h < 0) h = 0;
+ ih->userwidth = w;
+ ih->userheight = h;
+ }
+
+ /* must reset the current size also, */
+ /* so the user or the natural size will be used to resize the dialog */
+ ih->currentwidth = 0;
+ ih->currentheight = 0;
+
+ return 0;
+}
+
+static int iDialogSetVisibleAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ IupShow(ih);
+ else
+ IupHide(ih);
+ return 0;
+}
+
+void iupDialogUpdatePosition(Ihandle* ih)
+{
+ /* Used by pre-defined popup native dialogs */
+ int x = iupAttribGetInt(ih, "_IUPDLG_X");
+ int y = iupAttribGetInt(ih, "_IUPDLG_Y");
+ iupdrvDialogUpdateSize(ih);
+ /* handle always as visible for the first time */
+ ih->data->first_show = 0;
+ iupDialogAdjustPos(ih, &x, &y);
+ iupdrvDialogSetPosition(ih, x, y);
+}
+
+void iupDialogGetDecorSize(Ihandle* ih, int *decorwidth, int *decorheight)
+{
+ int border, caption, menu;
+ iupdrvDialogGetDecoration(ih, &border, &caption, &menu);
+
+ *decorwidth = 2*border;
+ *decorheight = 2*border + caption + menu;
+}
+
+static int iDialogSetHideTaskbarAttrib(Ihandle *ih, const char *value)
+{
+ iupdrvDialogSetVisible(ih, !iupStrBoolean(value));
+ return 0;
+}
+
+static int iDialogSetMenuAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->handle)
+ {
+ Ihandle* menu = IupGetHandle(value);
+ ih->data->menu = menu;
+ return 1;
+ }
+
+ if (!value)
+ {
+ if (ih->data->menu && ih->data->menu->handle)
+ {
+ ih->data->ignore_resize = 1;
+ IupUnmap(ih->data->menu); /* this will remove the menu from the dialog */
+ ih->data->ignore_resize = 0;
+
+ ih->data->menu = NULL;
+ }
+ }
+ else
+ {
+ Ihandle* menu = IupGetHandle(value);
+ if (!menu || menu->iclass->nativetype != IUP_TYPEMENU || menu->parent)
+ return 0;
+
+ /* already the current menu and it is mapped */
+ if (ih->data->menu && ih->data->menu==menu && menu->handle)
+ return 1;
+
+ /* the current menu is mapped, so unmap it */
+ if (ih->data->menu && ih->data->menu->handle && ih->data->menu!=menu)
+ {
+ ih->data->ignore_resize = 1;
+ IupUnmap(ih->data->menu); /* this will remove the menu from the dialog */
+ ih->data->ignore_resize = 0;
+ }
+
+ ih->data->menu = menu;
+
+ menu->parent = ih; /* use this to create a menu bar instead of a popup menu */
+
+ ih->data->ignore_resize = 1;
+ IupMap(menu); /* this will automatically add the menu to the dialog */
+ ih->data->ignore_resize = 0;
+ }
+ return 1;
+}
+
+
+/****************************************************************/
+
+
+Ihandle* IupDialog(Ihandle* child)
+{
+ void *params[2];
+ params[0] = child;
+ params[1] = NULL;
+ return IupCreatev("dialog", params);
+}
+
+Iclass* iupDialogGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "dialog";
+ ic->format = "H"; /* one optional ihandle */
+ ic->nativetype = IUP_TYPEDIALOG;
+ ic->childtype = IUP_CHILD_ONE;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iDialogCreateMethod;
+ ic->Destroy = iDialogDestroyMethod;
+ ic->ComputeNaturalSize = iDialogComputeNaturalSizeMethod;
+ ic->SetChildrenCurrentSize = iDialogSetChildrenCurrentSizeMethod;
+ ic->SetChildrenPosition = iDialogSetChildrenPositionMethod;
+
+ /* Callbacks */
+ iupClassRegisterCallback(ic, "SHOW_CB", "i");
+ iupClassRegisterCallback(ic, "DROPFILES_CB", "siii");
+ iupClassRegisterCallback(ic, "RESIZE_CB", "ii");
+ iupClassRegisterCallback(ic, "CLOSE_CB", "");
+
+ /* Common Callbacks */
+ iupBaseRegisterCommonCallbacks(ic);
+
+ /* Attribute functions */
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Overwrite Common */
+ iupClassRegisterAttribute(ic, "SIZE", iupBaseGetSizeAttrib, iDialogSetSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "RASTERSIZE", iupBaseGetRasterSizeAttrib, iDialogSetRasterSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "POSITION", NULL, NULL, NULL, NULL, IUPAF_WRITEONLY|IUPAF_READONLY|IUPAF_NO_INHERIT); /* forbidden in dialog */
+
+ /* Base Container */
+ iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* Visual */
+ iupBaseRegisterVisualAttrib(ic);
+
+ /* Overwrite Visual */
+ iupClassRegisterAttribute(ic, "VISIBLE", iupBaseGetVisibleAttrib, iDialogSetVisibleAttrib, IUPAF_SAMEASSYSTEM, "NO", IUPAF_NO_INHERIT); /* the only case where VISIBLE default is NO */
+
+ /* IupDialog only */
+ iupClassRegisterAttribute(ic, "MENU", NULL, iDialogSetMenuAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CURSOR", NULL, iupdrvBaseSetCursorAttrib, IUPAF_SAMEASSYSTEM, "ARROW", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "HIDETASKBAR", NULL, iDialogSetHideTaskbarAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MAXBOX", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MENUBOX", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MINBOX", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "RESIZE", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "BORDER", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "DEFAULTENTER", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DEFAULTESC", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DIALOGFRAME", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "PARENTDIALOG", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHRINK", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "STARTFOCUS", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MODAL", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "PLACEMENT", NULL, NULL, "NORMAL", NULL, IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "NATIVEPARENT", NULL, NULL, NULL, NULL, IUPAF_NO_STRING);
+
+ iupdrvDialogInitClass(ic);
+
+ return ic;
+}
diff --git a/iup/src/iup_dialog.h b/iup/src/iup_dialog.h
new file mode 100755
index 0000000..a127111
--- /dev/null
+++ b/iup/src/iup_dialog.h
@@ -0,0 +1,89 @@
+/** \file
+ * \brief Dialog Public and Private Declarations
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_DIALOG_H
+#define __IUP_DIALOG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* PUBLIC */
+
+/* Shows the dialog in the given position and disable interaction with other dialogs.
+ * The element must be already mapped.
+ * Must return IUP_ERROR or IUP_NOERROR.
+ * Called only from IupPopup. */
+int iupDialogPopup(Ihandle* ih, int x, int y);
+
+/* Shows the dialog in the given position.
+ * The dialog must be already mapped.
+ * Must return IUP_ERROR or IUP_NOERROR.
+ * Called only from IupShow and IupShowXY. */
+int iupDialogShowXY(Ihandle* ih, int x, int y);
+
+/* Hides the dialog.
+ * Called only from IupHide. */
+void iupDialogHide(Ihandle* ih);
+
+/* Returns a unique number to be as child id. */
+int iupDialogGetChildId(Ihandle* ih);
+char* iupDialogGetChildIdStr(Ihandle* ih);
+
+/* Returns the size of the decoration */
+void iupdrvDialogGetDecoration(Ihandle* ih, int *border, int *caption, int *menu);
+
+/* Returns the native parent. Can be PARENTDIALOG or NATIVEPARENT attributes. Parent must be mapped. */
+InativeHandle* iupDialogGetNativeParent(Ihandle* ih);
+
+/* Updates the dialog initial position from internal attributes.
+ Used mostly by the native pre-defined dialogs. */
+void iupDialogUpdatePosition(Ihandle* ih);
+
+
+/*********************************************************************/
+ /* PRIVATE */
+/*********************************************************************/
+
+#ifdef _IUPDLG_PRIVATE
+
+/* retrieve the decorations size that offsets the window size of the client size. */
+void iupDialogGetDecorSize(Ihandle* ih, int *decorwidth, int *decorheight);
+
+struct _IcontrolData
+{
+ int show_state, /* save the state to be used used in SHOW_CB */
+ first_show, /* boolean flag to indicate that the dialog was shown for the first time */
+ ignore_resize, /* flag to ignore the next resize */
+ popup_level, /* popup level of the dialog if IupPopup used */
+ child_id, /* serial number used by child controls */
+ cmd_show; /* parameters for ShowWindow in Windows driver */
+ Ihandle* menu;
+};
+
+
+/******************************/
+/* Driver dependent functions */
+/******************************/
+
+void iupdrvDialogInitClass(Iclass* iclass);
+
+void iupdrvDialogGetPosition(InativeHandle* handle, int *x, int *y);
+void iupdrvDialogSetVisible(Ihandle* ih, int visible);
+int iupdrvDialogSetPlacement(Ihandle* ih);
+void iupdrvDialogSetPosition(Ihandle *ih, int x, int y);
+void iupdrvDialogUpdateSize(Ihandle* ih);
+void iupdrvDialogGetSize(InativeHandle* handle, int *w, int *h);
+int iupdrvDialogIsVisible(Ihandle* ih);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_dlglist.c b/iup/src/iup_dlglist.c
new file mode 100755
index 0000000..c385b50
--- /dev/null
+++ b/iup/src/iup_dlglist.c
@@ -0,0 +1,130 @@
+/** \file
+ * \brief list of all created dialogs
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+
+#include "iup_dlglist.h"
+#include "iup_object.h"
+#include "iup_assert.h"
+
+
+typedef struct Idiallst_
+{
+ Ihandle *ih;
+ struct Idiallst_ *next;
+} Idiallst;
+
+static Idiallst *idlglist = NULL; /* list of all created dialogs */
+static int idlg_count = 0;
+
+void iupDlgListAdd(Ihandle *ih)
+{
+ if (ih)
+ {
+ Idiallst *p=(Idiallst *)malloc(sizeof(Idiallst));
+ if (!p)
+ return;
+ p->ih = ih;
+ p->next = idlglist;
+ idlglist = p;
+ idlg_count++;
+ }
+}
+
+void iupDlgListRemove(Ihandle *ih)
+{
+ if (!idlglist || !ih)
+ return;
+
+ if (idlglist->ih == ih) /* ih is header */
+ {
+ Idiallst *p = idlglist->next;
+ free(idlglist);
+ idlglist = p;
+ idlg_count--;
+ }
+ else
+ {
+ Idiallst *p; /* current pointer */
+ Idiallst *b; /* before pointer */
+ for (b = idlglist, p = idlglist->next; p; b = p, p = p->next)
+ {
+ if (p->ih == ih)
+ {
+ b->next = p->next;
+ free (p);
+ idlg_count--;
+ return;
+ }
+ }
+ }
+}
+
+static Idiallst *idlg_first = NULL;
+
+Ihandle *iupDlgListFirst (void)
+{
+ idlg_first = idlglist;
+ return iupDlgListNext();
+}
+
+Ihandle *iupDlgListNext (void)
+{
+ Ihandle *ih = NULL;
+ if (idlg_first)
+ {
+ ih = idlg_first->ih;
+ idlg_first = idlg_first->next;
+ }
+ return ih;
+}
+
+static int idlg_nvisiblewin = 0;
+
+void iupDlgListVisibleInc(void)
+{
+ iupASSERT(idlg_nvisiblewin < idlg_count);
+ if (idlg_nvisiblewin == idlg_count)
+ return;
+ idlg_nvisiblewin++;
+}
+
+void iupDlgListVisibleDec(void)
+{
+ iupASSERT(idlg_nvisiblewin > 0);
+ idlg_nvisiblewin--;
+}
+
+int iupDlgListVisibleCount(void)
+{
+ return idlg_nvisiblewin;
+}
+
+void iupDlgListDestroyAll(void)
+{
+ int i = 0, count;
+ Ihandle** ih_array = (Ihandle**)malloc(idlg_count * sizeof(Ihandle*));
+ Idiallst *list;
+ for (list = idlglist; list; list = list->next)
+ {
+ if (iupObjectCheck(list->ih))
+ {
+ ih_array[i] = list->ih;
+ i++;
+ }
+ }
+
+ count = i;
+ for (i = 0; i < count; i++)
+ {
+ if (iupObjectCheck(ih_array[i]))
+ IupDestroy(ih_array[i]); /* this will also destroy the list */
+ }
+
+ free(ih_array);
+}
diff --git a/iup/src/iup_dlglist.h b/iup/src/iup_dlglist.h
new file mode 100755
index 0000000..99d3184
--- /dev/null
+++ b/iup/src/iup_dlglist.h
@@ -0,0 +1,58 @@
+/** \file
+ * \brief list of all created dialogs
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_DLGLIST_H
+#define __IUP_DLGLIST_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup dlglist List of Dialogs
+ * \par
+ * See \ref iup_dlglist.h
+ * \ingroup cpi */
+
+
+/** Adds a dialog to the list. Used only in IupDialog.
+ * \ingroup dlglist */
+void iupDlgListAdd(Ihandle *ih);
+
+/** Removes a dialog from the list. Used only in IupDestroy.
+ * \ingroup dlglist */
+void iupDlgListRemove(Ihandle *ih);
+
+/** Starts a loop for all the created dialogs.
+ * \ingroup dlglist */
+Ihandle* iupDlgListFirst(void);
+
+/** Retrieve the next dialog on the list. Must call iupDlgListFirst first.
+ * \ingroup dlglist */
+Ihandle* iupDlgListNext(void);
+
+/** Increments the number of visible dialogs.
+ * \ingroup dlglist */
+void iupDlgListVisibleInc(void);
+
+/** Decrements the number of visible dialogs.
+ * \ingroup dlglist */
+void iupDlgListVisibleDec(void);
+
+/** Returns the number of visible dialogs.
+ * \ingroup dlglist */
+int iupDlgListVisibleCount(void);
+
+/* Destroy all dialogs and the list.
+ Called only from IupClose. */
+void iupDlgListDestroyAll(void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_dll.rc b/iup/src/iup_dll.rc
new file mode 100755
index 0000000..a1c78d8
--- /dev/null
+++ b/iup/src/iup_dll.rc
@@ -0,0 +1,41 @@
+TECGRAF_ICON ICON "..\\etc\\tecgraf.ico"
+
+1 VERSIONINFO
+ FILEVERSION 3,0,0,0
+ PRODUCTVERSION 3,0,0,0
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "www.tecgraf.puc-rio.br/iup\0"
+ VALUE "CompanyName", "Tecgraf/PUC-Rio\0"
+ VALUE "FileDescription", "IUP - Portable User Interface\0"
+ VALUE "FileVersion", "3.0.0\0"
+ VALUE "LegalCopyright", "Copyright © 1994-2009 Tecgraf, PUC-Rio.\0"
+ VALUE "OriginalFilename", "iup.dll\0"
+ VALUE "ProductName", "IUP for Windows\0"
+ VALUE "ProductVersion", "3.0.0\0"
+ END
+ END
+END
+
+CURSOR_PEN CURSOR "..\\etc\\pen.cur"
+
+/* To avoid the inclusion of <winuser.h> */
+#define WS_CHILD 0x40000000L
+#define WS_VISIBLE 0x10000000L
+#define WS_CLIPSIBLINGS 0x04000000L
+#define DS_3DLOOK 0x0004L
+#define DS_CONTROL 0x0400L
+#define SS_OWNERDRAW 0x0000000DL
+#define WS_EX_STATICEDGE 0x00020000L
+
+#define IUP_PREVIEWCANVAS 3000
+
+iupPreviewDlg DIALOG DISCARDABLE 0, 0, 250, 95
+STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "", IUP_PREVIEWCANVAS, "STATIC", SS_OWNERDRAW, 70, 0, 120, 90, WS_EX_STATICEDGE
+END
diff --git a/iup/src/iup_drv.h b/iup/src/iup_drv.h
new file mode 100755
index 0000000..5cdb8e7
--- /dev/null
+++ b/iup/src/iup_drv.h
@@ -0,0 +1,99 @@
+/** \file
+ * \brief Driver Interface. Each driver must export the symbols defined here.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_DRV_H
+#define __IUP_DRV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup drv Driver Interface
+ * \par
+ * Each driver must export the symbols defined here.
+ * \par
+ * See \ref iup_drv.h
+ */
+
+
+/** Sets a global environment attribute. Called from IupSetGlobal and IupStoreGlobal.
+ * Must return 1 is process the atribute, or 0 is not.
+ * \ingroup drv */
+int iupdrvSetGlobal(const char* name, const char* value);
+
+/** Returns a global environment attribute. Called from IupGetGlobal.
+ * \ingroup drv */
+char* iupdrvGetGlobal(const char* name);
+
+/** Changes the idle callback. Called from IupSetFunction.
+ * \ingroup drv */
+void iupdrvSetIdleFunction(Icallback func);
+
+/** Convert the coordinates from screen relative to client area releative.
+ * \ingroup drv */
+void iupdrvScreenToClient(Ihandle* ih, int *x, int *y);
+
+/** Returns true if the element is visible.
+ * \ingroup drv */
+int iupdrvIsVisible(Ihandle* ih);
+
+/** Returns true if the element is active.
+ * \ingroup drv */
+int iupdrvIsActive(Ihandle* ih);
+
+/** Actually changes the focus to the given element.
+ * \ingroup drv */
+void iupdrvSetFocus(Ihandle* ih);
+
+/** Changes the visible state of an element.
+ * Not used for dialogs.
+ * \ingroup drv */
+void iupdrvSetVisible(Ihandle* ih, int enable);
+
+/** Changes the active state of an element.
+ * \ingroup drv */
+void iupdrvSetActive(Ihandle* ih, int enable);
+
+/** Post a redraw of a control.
+ * \ingroup drv */
+void iupdrvDisplayUpdate(Ihandle *ih);
+
+/** Force a redraw of a control.
+ * \ingroup drv */
+void iupdrvDisplayRedraw(Ihandle *ih);
+
+/** Reparent the native control.
+ * \ingroup drv */
+void iupdrvReparent(Ihandle* ih);
+
+/** Draws a focus rectangle
+ * \ingroup drv */
+void iupdrvDrawFocusRect(Ihandle* ih, void* gc, int x, int y, int w, int h);
+
+/** Size of the scroolbar.
+ * \ingroup drv */
+int iupdrvGetScrollbarSize(void);
+
+/** Activates a control.
+ * \ingroup drv */
+void iupdrvActivate(Ihandle* ih);
+
+/** Returns the height of a menu bar.
+ * \ingroup drv */
+int iupdrvMenuGetMenuBarSize(Ihandle* ih);
+
+
+/* Called only from IupOpen/IupClose. */
+int iupdrvOpen(int *argc, char ***argv);
+void iupdrvClose(void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_drvfont.h b/iup/src/iup_drvfont.h
new file mode 100755
index 0000000..d6fb137
--- /dev/null
+++ b/iup/src/iup_drvfont.h
@@ -0,0 +1,116 @@
+/** \file
+ * \brief Driver Font Management
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_DRVFONT_H
+#define __IUP_DRVFONT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup drvfont Driver Font Interface
+ * \par
+ * Each driver must export the symbols defined here.
+ * \par
+ * See \ref iup_drvfont.h
+ * \ingroup drv */
+
+/* Called only from IupOpen/IupClose. */
+void iupdrvFontInit(void);
+void iupdrvFontFinish(void);
+
+/** Retrieve the character size for the selected font.
+ * Should be used only to calculate the SIZE attribute.
+ * \ingroup drvfont */
+void iupdrvFontGetCharSize(Ihandle* ih, int *charwidth, int *charheight);
+
+/** Retrieve the string width for the selected font.
+ * \ingroup drvfont */
+int iupdrvFontGetStringWidth(Ihandle* ih, const char* str);
+
+/** Retrieve the multi-lined string size for the selected font. \n
+ * Width is the maximum line width. \n
+ * Height is charheight*number_of_lines (this will avoid line size variations).
+ * \ingroup drvfont */
+void iupdrvFontGetMultiLineStringSize(Ihandle* ih, const char* str, int *w, int *h);
+
+/** Returns the System default font.
+ * \ingroup drvfont */
+char* iupdrvGetSystemFont(void);
+
+/** STANDARDFONT attribute set function.
+ * \ingroup drvfont */
+int iupdrvSetStandardFontAttrib(Ihandle* ih, const char* value);
+
+
+
+/** FONT attribute get function.
+ * \ingroup drvfont */
+char* iupGetFontAttrib(Ihandle* ih);
+
+/** FONT attribute set function.
+ * \ingroup drvfont */
+int iupSetFontAttrib(Ihandle* ih, const char* value);
+
+/** Parse the common font format description.
+ * Returns a non zero value if successful.
+ * \ingroup drvfont */
+int iupFontParsePango(const char *value, char *typeface, int *size, int *bold, int *italic, int *underline, int *strikeout);
+
+/** Parse the old IUP Windows font format description.
+ * Returns a non zero value if successful.
+ * \ingroup drvfont */
+int iupFontParseWin(const char *value, char *fontname, int *height, int *bold, int *italic, int *underline, int *strikeout);
+
+/** Parse the X-Windows font format description.
+ * Returns a non zero value if successful.
+ * \ingroup drvfont */
+int iupFontParseX(const char *value, char *fontname, int *height, int *bold, int *italic, int *underline, int *strikeout);
+
+
+/** Changes the FONT style only.
+ * \ingroup attribfunc */
+int iupSetFontStyleAttrib(Ihandle* ih, const char* value);
+
+/** Changes the FONT size only.
+ * \ingroup attribfunc */
+int iupSetFontSizeAttrib(Ihandle* ih, const char* value);
+
+/** Returns the FONT style.
+ * \ingroup attribfunc */
+char* iupGetFontStyleAttrib(Ihandle* ih);
+
+/** Returns the FONT size.
+ * \ingroup attribfunc */
+char* iupGetFontSizeAttrib(Ihandle* ih);
+
+/** Returns the FONT face.
+ * \ingroup attribfunc */
+char* iupGetFontFaceAttrib(Ihandle* ih);
+
+/* Used in GLobal Attributes */
+void iupSetDefaultFontSizeGlobalAttrib(const char* value);
+char* iupGetDefaultFontSizeGlobalAttrib(void);
+
+
+/* Updates the STANDARDFONT attrib.
+ * Called only from IupMap.
+ */
+void iupUpdateStandardFontAttrib(Ihandle* ih);
+
+/* Used to map foreign names into native names */
+const char* iupFontGetWinName(const char* name);
+const char* iupFontGetXName(const char* name);
+const char* iupFontGetPangoName(const char* name);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_drvinfo.h b/iup/src/iup_drvinfo.h
new file mode 100755
index 0000000..7ff303f
--- /dev/null
+++ b/iup/src/iup_drvinfo.h
@@ -0,0 +1,103 @@
+/** \file
+ * \brief Driver Information Functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_DRVINFO_H
+#define __IUP_DRVINFO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** \defgroup drvinfo Driver Information Interface
+ * \par
+ * Each driver must export the symbols defined here.
+ * But in this case the functions are shared by different drivers in the same system.
+ * \par
+ * For example, the GTK driver and the Windows driver share the same implementation
+ * of these functions when the GTK driver is compiled in Windows.
+ * The GTK driver and the Motif driver share the same implementation
+ * of these functions when the GTK driver is compiled in UNIX.
+ * \par
+ * See \ref iup_drvinfo.h
+ * \ingroup drv */
+
+
+/** Retrieve the main desktop full size.
+ * \ingroup drvinfo */
+void iupdrvGetFullSize(int *width, int *height);
+
+/** Retrieve the main desktop available size.
+ * \ingroup drvinfo */
+void iupdrvGetScreenSize(int *width, int *height);
+
+/** Retrieve the default desktop bits per pixel.
+ * \ingroup drvinfo */
+int iupdrvGetScreenDepth(void);
+
+/** Returns a string with the system version number.
+ * \ingroup drvinfo */
+char *iupdrvGetSystemVersion(void);
+
+/** Returns a string with the system name.
+ * \ingroup drvinfo */
+char* iupdrvGetSystemName(void);
+
+/** Returns a string with the computer name.
+ * \ingroup drvinfo */
+char* iupdrvGetComputerName(void);
+
+/** Returns a string with the user name.
+ * \ingroup drvinfo */
+char* iupdrvGetUserName(void);
+
+/** Returns the key state for Shift, Ctrl, Alt and sYs, in this order.
+ * Left and right keys are considered.
+ * Should declare "char key[5]".
+ * Values could be space (" ") or "SCAY".
+ * \ingroup drvinfo */
+void iupdrvGetKeyState(char* key);
+
+/** Returns the current position of the mouse cursor.
+ * \ingroup drvinfo */
+void iupdrvGetCursorPos(int *x, int *y);
+
+/** Returns the driver "Display" in UNIX and NULL in Windows.
+ * Must be implemented somewhere else.
+ * \ingroup drvinfo */
+void* iupdrvGetDisplay(void);
+
+/** Returns the decoration size of the native window.
+ * In Windows will also includes the menu if any.
+ * Used in DialogGetDecoration.
+ * \ingroup drvinfo */
+int iupdrvGetWindowDecor(void* wnd, int *border, int *caption);
+
+/** Returns the current directory.
+ * \ingroup drvinfo */
+char* iupdrvGetCurrentDirectory(void);
+
+/** Changes the current directory.
+ * \ingroup drvinfo */
+int iupdrvSetCurrentDirectory(const char* dir);
+
+/** Returns true if the given name is an existant file.
+ * \ingroup drvinfo */
+int iupdrvIsFile(const char* name);
+
+/** Returns true if the given name is an existant directory.
+ * \ingroup drvinfo */
+int iupdrvIsDirectory(const char* name);
+
+/** Creates a new direcotry.
+ * \ingroup drvinfo */
+int iupdrvMakeDirectory(const char* name);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_filedlg.c b/iup/src/iup_filedlg.c
new file mode 100755
index 0000000..e764143
--- /dev/null
+++ b/iup/src/iup_filedlg.c
@@ -0,0 +1,67 @@
+/** \file
+ * \brief IupFileDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+#include <limits.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+
+
+Ihandle* IupFileDlg(void)
+{
+ return IupCreate("filedlg");
+}
+
+Iclass* iupFileDlgGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupDialogGetClass());
+
+ ic->name = "filedlg";
+ ic->nativetype = IUP_TYPEDIALOG;
+ ic->is_interactive = 1;
+
+ iupClassRegisterCallback(ic, "FILE_CB", "ss");
+
+ /* reset not used native dialog methods */
+ ic->parent->LayoutUpdate = NULL;
+ ic->parent->SetChildrenPosition = NULL;
+ ic->parent->Map = NULL;
+ ic->parent->UnMap = NULL;
+
+ iupdrvFileDlgInitClass(ic);
+
+ /* only the default value */
+ iupClassRegisterAttribute(ic, "NOCHANGEDIR", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DIALOGTYPE", NULL, NULL, IUPAF_SAMEASSYSTEM, "OPEN", IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "PREVIEWDC", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY|IUPAF_NO_STRING);
+
+ iupClassRegisterAttribute(ic, "PREVIEWWIDTH", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "PREVIEWHEIGHT", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY|IUPAF_NO_STRING);
+
+ iupClassRegisterAttribute(ic, "ALLOWNEW", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DIRECTORY", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FILE", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FILTER", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "NOOVERWRITEPROMPT", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOWHIDDEN", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOWPREVIEW", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "FILEEXIST", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY);
+ iupClassRegisterAttribute(ic, "STATUS", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY);
+ iupClassRegisterAttribute(ic, "VALUE", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY);
+
+ return ic;
+}
diff --git a/iup/src/iup_fill.c b/iup/src/iup_fill.c
new file mode 100755
index 0000000..4cad3c0
--- /dev/null
+++ b/iup/src/iup_fill.c
@@ -0,0 +1,242 @@
+/** \file
+ * \brief Fill Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+
+
+enum {IUP_FILL_NONE, IUP_FILL_HORIZ, IUP_FILL_VERT};
+
+struct _IcontrolData
+{
+ int dir;
+};
+
+static int iFillGetDir(Ihandle* ih)
+{
+ if (!ih->parent)
+ return IUP_FILL_NONE;
+
+ if (ih->data->dir != IUP_FILL_NONE)
+ return ih->data->dir;
+
+ /* Its parent must be an IupHbox or an IupVbox. */
+ if (ih->parent->iclass->nativetype == IUP_TYPEVOID)
+ {
+ if (iupStrEqual(ih->parent->iclass->name, "hbox"))
+ ih->data->dir = IUP_FILL_HORIZ;
+ else if (iupStrEqual(ih->parent->iclass->name, "vbox"))
+ ih->data->dir = IUP_FILL_VERT;
+ }
+
+ return ih->data->dir;
+}
+
+static int iFillMapMethod(Ihandle* ih)
+{
+ iFillGetDir(ih);
+ return iupBaseTypeVoidMapMethod(ih);
+}
+
+static void iFillUnMapMethod(Ihandle* ih)
+{
+ ih->data->dir = IUP_FILL_NONE;
+}
+
+static int iFillSetRasterSizeAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ ih->userwidth = 0;
+ ih->userheight = 0;
+ }
+ else
+ {
+ int s = 0;
+ if (iFillGetDir(ih) == IUP_FILL_NONE) /* if Fill is not yet a child of a Vbox or Hbox */
+ {
+ iupAttribSetStr(ih, "SIZE", NULL);
+ return 1;
+ }
+
+ iupStrToInt(value, &s);
+ if (s > 0)
+ {
+ if (iFillGetDir(ih) == IUP_FILL_HORIZ)
+ {
+ ih->userwidth = s; /* inside HBOX */
+ ih->userheight = 0;
+ }
+ else
+ {
+ ih->userheight = s; /* inside VBOX */
+ ih->userwidth = 0;
+ }
+ }
+ }
+ iupAttribSetStr(ih, "SIZE", NULL);
+ return 0;
+}
+
+static int iFillSetSizeAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ ih->userwidth = 0;
+ ih->userheight = 0;
+ }
+ else
+ {
+ int s = 0;
+ if (iFillGetDir(ih) == IUP_FILL_NONE) /* if Fill is not yet a child of a Vbox or Hbox */
+ {
+ iupAttribSetStr(ih, "RASTERSIZE", NULL);
+ return 1;
+ }
+
+ iupStrToInt(value, &s);
+ if (s > 0)
+ {
+ int charwidth, charheight;
+ iupdrvFontGetCharSize(ih, &charwidth, &charheight);
+ if (iFillGetDir(ih) == IUP_FILL_HORIZ)
+ {
+ ih->userwidth = iupWIDTH2RASTER(s, charwidth); /* inside HBOX */
+ ih->userheight = 0;
+ }
+ else
+ {
+ ih->userheight = iupHEIGHT2RASTER(s, charheight); /* inside VBOX */
+ ih->userwidth = 0;
+ }
+ }
+ }
+ iupAttribSetStr(ih, "RASTERSIZE", NULL);
+ return 1;
+}
+
+static char* iFillGetExpandAttrib(Ihandle* ih)
+{
+ if (iFillGetDir(ih) == IUP_FILL_NONE) /* if Fill is not yet a child of a Vbox or Hbox */
+ return "NO";
+
+ /* if size is not defined, then expansion on that direction is permited */
+ if (iFillGetDir(ih) == IUP_FILL_HORIZ)
+ {
+ if (ih->userwidth <= 0)
+ return "HORIZONTAL";
+ }
+ else
+ {
+ if (ih->userheight <= 0)
+ return "VERTICAL";
+ }
+
+ return "NO";
+}
+
+static void iFillUpdateSize(Ihandle* ih)
+{
+ char* value = iupAttribGet(ih, "SIZE");
+ if (value)
+ {
+ iFillSetSizeAttrib(ih, value);
+ iupAttribSetStr(ih, "SIZE", NULL);
+ }
+ value = iupAttribGet(ih, "RASTERSIZE");
+ if (value)
+ {
+ iFillSetRasterSizeAttrib(ih, value);
+ iupAttribSetStr(ih, "RASTERSIZE", NULL);
+ }
+}
+
+static void iFillComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ (void)expand; /* unset if not a container */
+
+ /* EXPAND is initialized as none for FILL */
+ ih->expand = IUP_EXPAND_NONE;
+
+ iFillUpdateSize(ih);
+
+ /* always initialize the natural size using the user size,
+ must do this again because of iFillUpdateSize */
+ ih->naturalwidth = ih->userwidth;
+ ih->naturalheight = ih->userheight;
+
+ if (iFillGetDir(ih) == IUP_FILL_NONE) /* if Fill is not a child of a Vbox or Hbox */
+ return;
+
+ /* if size is NOT defined, then expansion on that direction is permited */
+ if (iFillGetDir(ih) == IUP_FILL_HORIZ)
+ {
+ if (ih->naturalwidth <= 0)
+ ih->expand = IUP_EXPAND_W0;
+ }
+ else
+ {
+ if (ih->naturalheight <= 0)
+ ih->expand = IUP_EXPAND_H0;
+ }
+
+ *w = ih->naturalwidth;
+ *h = ih->naturalheight;
+}
+
+static int iFillCreateMethod(Ihandle* ih, void** params)
+{
+ (void)params;
+ ih->data = iupALLOCCTRLDATA();
+ return IUP_NOERROR;
+}
+
+/******************************************************************************/
+
+Ihandle* IupFill(void)
+{
+ return IupCreate("fill");
+}
+
+Iclass* iupFillGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "fill";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPEVOID;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Create = iFillCreateMethod;
+ ic->Map = iFillMapMethod;
+ ic->UnMap = iFillUnMapMethod;
+ ic->ComputeNaturalSize = iFillComputeNaturalSizeMethod;
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Overwrite Common */
+ iupClassRegisterAttribute(ic, "SIZE", iupBaseGetSizeAttrib, iFillSetSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "RASTERSIZE", iupBaseGetRasterSizeAttrib, iFillSetRasterSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* Base */
+ iupClassRegisterAttribute(ic, "EXPAND", iFillGetExpandAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
diff --git a/iup/src/iup_focus.c b/iup/src/iup_focus.c
new file mode 100755
index 0000000..be54b75
--- /dev/null
+++ b/iup/src/iup_focus.c
@@ -0,0 +1,281 @@
+/** \file
+ * \brief Keyboard Focus navigation
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_focus.h"
+#include "iup_class.h"
+#include "iup_assert.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+
+
+Ihandle* iupFocusNextInteractive(Ihandle *ih)
+{
+ Ihandle *c;
+
+ if (!ih)
+ return NULL;
+
+ for (c = ih->brother; c; c = c->brother)
+ {
+ if (c->iclass->is_interactive)
+ return c;
+ }
+
+ return NULL;
+}
+
+int iupFocusCanAccept(Ihandle *ih)
+{
+ if (ih->iclass->is_interactive && /* interactive */
+ iupAttribGetBoolean(ih, "CANFOCUS") && /* can receive focus */
+ ih->handle && /* mapped */
+ IupGetInt(ih, "ACTIVE") && /* active */
+ IupGetInt(ih, "VISIBLE")) /* visible */
+ return 1;
+ else
+ return 0;
+}
+
+static int iFocusCheckActiveRadio(Ihandle *ih)
+{
+ if (iupStrEqual(ih->iclass->name, "toggle") &&
+ IupGetInt(ih, "RADIO") &&
+ !IupGetInt(ih, "VALUE"))
+ return 0;
+ else
+ return 1;
+}
+
+static Ihandle* iFocusFindAtBrothers(Ihandle *start, int checkradio)
+{
+ Ihandle *c;
+ Ihandle *nf;
+
+ for (c = start; c; c = c->brother)
+ {
+ /* check itself */
+ if (iupFocusCanAccept(c) && (!checkradio || iFocusCheckActiveRadio(c)))
+ return c;
+
+ /* then check its children */
+ nf = iFocusFindAtBrothers(c->firstchild, checkradio);
+ if (nf)
+ return nf;
+ }
+
+ return NULL;
+}
+
+static Ihandle* iFocusFindNext(Ihandle *ih, int checkradio)
+{
+ Ihandle *nf, *p;
+
+ if (!ih)
+ return NULL;
+
+ /* look down in the child tree */
+ if (ih->firstchild)
+ {
+ nf = iFocusFindAtBrothers(ih->firstchild, checkradio);
+ if (nf) return nf;
+ }
+
+ /* look in the same level */
+ if (ih->brother)
+ {
+ nf = iFocusFindAtBrothers(ih->brother, checkradio);
+ if (nf) return nf;
+ }
+
+ /* look up in the brothers of the parent level */
+ if (ih->parent)
+ {
+ for (p = ih->parent; p; p = p->parent)
+ {
+ if (p->brother)
+ {
+ nf = iFocusFindAtBrothers(p->brother, checkradio);
+ if (nf) return nf;
+ }
+ }
+ }
+
+ return NULL;
+}
+
+Ihandle* IupNextField(Ihandle *ih)
+{
+ Ihandle *ih_next;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ ih_next = iFocusFindNext(ih, 1);
+ if (!ih_next)
+ {
+ /* not found after the element, then start over from the begining,
+ at the dialog. */
+ ih_next = iFocusFindNext(IupGetDialog(ih), 1);
+ if (ih_next == ih)
+ return NULL;
+ }
+
+ if (ih_next)
+ {
+ iupdrvSetFocus(ih_next);
+ return ih_next;
+ }
+
+ return NULL;
+}
+
+void iupFocusNext(Ihandle *ih)
+{
+ Ihandle *ih_next = iFocusFindNext(ih, 0);
+ if (!ih_next)
+ {
+ /* not found after the element, then start over from the begining,
+ at the dialog. */
+ ih_next = iFocusFindNext(IupGetDialog(ih), 0);
+ if (ih_next == ih)
+ return;
+ }
+ if (ih_next)
+ iupdrvSetFocus(ih_next);
+}
+
+static int iFocusFindPrevious(Ihandle *parent, Ihandle **previous, Ihandle *ih, int checkradio)
+{
+ Ihandle *c;
+
+ if (!parent)
+ return 0;
+
+ for (c = parent->firstchild; c; c = c->brother)
+ {
+ if (c == ih)
+ {
+ /* if found child, returns the current previous.
+ but if previous is NULL, then keep searching until the last element. */
+ if (*previous)
+ return 1;
+ }
+ else
+ {
+ /* save the possible previous */
+ if (iupFocusCanAccept(c) && (!checkradio || iFocusCheckActiveRadio(c)))
+ *previous = c;
+ }
+
+ /* then check its children */
+ if (iFocusFindPrevious(c, previous, ih, checkradio))
+ return 1;
+ }
+
+ return 0;
+}
+
+Ihandle* IupPreviousField(Ihandle *ih)
+{
+ Ihandle *previous = NULL;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+
+ /* search from the dialog down to the element */
+ iFocusFindPrevious(IupGetDialog(ih), &previous, ih, 1);
+
+ if (previous)
+ {
+ iupdrvSetFocus(previous);
+ return previous;
+ }
+
+ return NULL;
+}
+
+void iupFocusPrevious(Ihandle *ih)
+{
+ Ihandle *previous = NULL;
+
+ /* search from the dialog down to the element */
+ iFocusFindPrevious(IupGetDialog(ih), &previous, ih, 0);
+
+ if (previous)
+ iupdrvSetFocus(previous);
+}
+
+/* local variables */
+static Ihandle* iup_current_focus = NULL;
+
+Ihandle *IupSetFocus(Ihandle *ih)
+{
+ Ihandle* old_focus = iup_current_focus;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return old_focus;
+
+ /* iup_current_focus is NOT set here,
+ only in the iupCallGetFocusCb */
+
+ if (iupFocusCanAccept(ih))
+ iupdrvSetFocus(ih);
+
+ return old_focus;
+}
+
+Ihandle *IupGetFocus(void)
+{
+ return iup_current_focus;
+}
+
+void iupCallGetFocusCb(Ihandle *ih)
+{
+ Icallback cb;
+
+ if (ih == iup_current_focus) /* avoid duplicate messages */
+ return;
+
+ cb = (Icallback)IupGetCallback(ih, "GETFOCUS_CB");
+ if (cb) cb(ih);
+
+ if (ih->iclass->nativetype == IUP_TYPECANVAS)
+ {
+ IFni cb2 = (IFni)IupGetCallback(ih, "FOCUS_CB");
+ if (cb2) cb2(ih, 1);
+ }
+
+ iup_current_focus = ih;
+}
+
+void iupCallKillFocusCb(Ihandle *ih)
+{
+ Icallback cb;
+
+ if (ih != iup_current_focus) /* avoid duplicate messages */
+ return;
+
+ cb = IupGetCallback(ih, "KILLFOCUS_CB");
+ if (cb) cb(ih);
+
+ if (ih->iclass->nativetype == IUP_TYPECANVAS)
+ {
+ IFni cb2 = (IFni)IupGetCallback(ih, "FOCUS_CB");
+ if (cb2) cb2(ih, 0);
+ }
+
+ iup_current_focus = NULL;
+}
diff --git a/iup/src/iup_focus.h b/iup/src/iup_focus.h
new file mode 100755
index 0000000..239e233
--- /dev/null
+++ b/iup/src/iup_focus.h
@@ -0,0 +1,53 @@
+/** \file
+ * \brief Keyboard Focus navigation
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_FOCUS_H
+#define __IUP_FOCUS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup focus Keyboard Focus
+ * \par
+ * See \ref iup_focus.h
+ * \ingroup cpi */
+
+
+/** Utility to check if a control can have the keyboard input focus.
+ * To receive the focus must be interactive, has CANFOCUS=YES, is mapped, is visible and is active.
+ * \ingroup focus */
+int iupFocusCanAccept(Ihandle *ih);
+
+/** Call GETFOCUS_CB and FOCUS_CB.
+ * \ingroup focus */
+void iupCallGetFocusCb(Ihandle *ih);
+
+/** Call KILLFOCUS_CB and FOCUS_CB.
+ * \ingroup focus */
+void iupCallKillFocusCb(Ihandle *ih);
+
+/** Returns the next interactive brother. Independs if it can receive the focus.
+ * \ingroup focus */
+Ihandle* iupFocusNextInteractive(Ihandle *ih);
+
+/* Used only in iupKeyProcessNavigation */
+void iupFocusNext(Ihandle *ih);
+void iupFocusPrevious(Ihandle *ih);
+
+
+/* Other functions declared in <iup.h> and implemented here.
+IupPreviousField
+IupNextField
+*/
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_font.c b/iup/src/iup_font.c
new file mode 100755
index 0000000..869bd2a
--- /dev/null
+++ b/iup/src/iup_font.c
@@ -0,0 +1,714 @@
+/** \file
+ * \brief Font mapping
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+#include "iup_drvfont.h"
+#include "iup_assert.h"
+#include "iup_attrib.h"
+#include "iup_class.h"
+
+typedef struct _IfontNameMap {
+ const char* pango;
+ const char* x;
+ const char* win;
+} IfontNameMap;
+
+#define IFONT_NAME_MAP_SIZE 7
+
+static IfontNameMap ifont_name_map[IFONT_NAME_MAP_SIZE] = {
+ {"sans", "helvetica", "arial"},
+ {NULL, "new century schoolbook", "century schoolbook"},
+ {"monospace", "courier", "courier new"},
+ {NULL, "lucida", "lucida sans unicode"},
+ {NULL, "lucidabright", "lucida bright"},
+ {NULL, "lucidatypewriter", "lucida console"},
+ {"serif", "times", "times new roman"}
+};
+
+const char* iupFontGetPangoName(const char* name)
+{
+ int i;
+ if (!name)
+ return NULL;
+ for (i=0; i<IFONT_NAME_MAP_SIZE; i++)
+ {
+ if (iupStrEqualNoCase(ifont_name_map[i].win, name))
+ return ifont_name_map[i].pango;
+ if (iupStrEqualNoCase(ifont_name_map[i].x, name))
+ return ifont_name_map[i].pango;
+ }
+
+ return NULL;
+}
+
+const char* iupFontGetWinName(const char* name)
+{
+ int i;
+ if (!name)
+ return NULL;
+ for (i=0; i<IFONT_NAME_MAP_SIZE; i++)
+ {
+ if (iupStrEqualNoCase(ifont_name_map[i].pango, name))
+ return ifont_name_map[i].win;
+ if (iupStrEqualNoCase(ifont_name_map[i].x, name))
+ return ifont_name_map[i].win;
+ }
+
+ return NULL;
+}
+
+const char* iupFontGetXName(const char* name)
+{
+ int i;
+ if (!name)
+ return NULL;
+ for (i=0; i<IFONT_NAME_MAP_SIZE; i++)
+ {
+ if (iupStrEqualNoCase(ifont_name_map[i].win, name))
+ return ifont_name_map[i].x;
+ if (iupStrEqualNoCase(ifont_name_map[i].pango, name))
+ return ifont_name_map[i].x;
+ }
+
+ return NULL;
+}
+
+char *IupUnMapFont(const char *standardfont)
+{
+ int size = 0;
+ int is_bold = 0,
+ is_italic = 0,
+ is_underline = 0,
+ is_strikeout = 0;
+ char typeface[1024];
+ char *str, *iup_typeface, *iup_style;
+
+ iupASSERT(standardfont!=NULL);
+ if (!standardfont)
+ return NULL;
+
+ if (!iupFontParsePango(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ return NULL;
+
+ if (strstr(typeface, "Helvetica"))
+ iup_typeface = "HELVETICA_";
+ else if (strstr(typeface, "Courier"))
+ iup_typeface = "COURIER_";
+ else if (strstr(typeface, "Times"))
+ iup_typeface = "TIMES_";
+ else
+ return NULL;
+
+ if (!is_bold && !is_italic)
+ iup_style = "NORMAL_";
+ else if (!is_bold && is_italic)
+ iup_style = "ITALIC_";
+ else if (is_bold && !is_italic)
+ iup_style = "BOLD_";
+ else
+ return NULL;
+
+ str = iupStrGetMemory(1024);
+ sprintf(str, "%s%s%d", iup_typeface, iup_style, size);
+ return str;
+}
+
+static char* iFontGetStyle(const char* iupfont, int *size)
+{
+ char* style = NULL;
+
+ if (strstr(iupfont, "NORMAL_"))
+ {
+ style = "";
+ iupfont += strlen("NORMAL_");
+ }
+ else if (strstr(iupfont, "ITALIC_"))
+ {
+ style = "Italic";
+ iupfont += strlen("ITALIC_");
+ }
+ else if (strstr(iupfont, "BOLD_"))
+ {
+ style = "Bold";
+ iupfont += strlen("BOLD_");
+ }
+ else
+ return NULL;
+
+ *size = atoi(iupfont);
+ return style;
+}
+
+char *IupMapFont(const char *iupfont)
+{
+ int size = 0;
+ char *str, *typeface, *style;
+
+ iupASSERT(iupfont!=NULL);
+ if (!iupfont)
+ return NULL;
+
+ if (strstr(iupfont, "HELVETICA_"))
+ {
+ typeface = "Helvetica";
+ style = iFontGetStyle(iupfont+strlen("HELVETICA_"), &size);
+ if (!style || size==0)
+ return NULL;
+ }
+ else if (strstr(iupfont, "COURIER_"))
+ {
+ typeface = "Courier";
+ style = iFontGetStyle(iupfont+strlen("COURIER_"), &size);
+ if (!style || size==0)
+ return NULL;
+ }
+ else if (strstr(iupfont, "TIMES_"))
+ {
+ typeface = "Times";
+ style = iFontGetStyle(iupfont+strlen("TIMES_"), &size);
+ if (!style || size==0)
+ return NULL;
+ }
+ else
+ return NULL;
+
+ str = iupStrGetMemory(1024);
+ sprintf(str, "%s, %s %d", typeface, style, size);
+ return str;
+}
+
+int iupSetFontAttrib(Ihandle* ih, const char* value)
+{
+ /* when set FONT can be an OLD IUP Font or a Native font */
+ const char* standardfont = IupMapFont(value);
+ if (!standardfont)
+ standardfont = value;
+
+ IupStoreAttribute(ih, "STANDARDFONT", standardfont);
+ return 0;
+}
+
+char* iupGetFontAttrib(Ihandle* ih)
+{
+ return iupAttribGetStr(ih, "STANDARDFONT");
+}
+
+void iupUpdateStandardFontAttrib(Ihandle* ih)
+{
+ int inherit;
+ iupClassObjectSetAttribute(ih, "STANDARDFONT", iupGetFontAttrib(ih), &inherit);
+}
+
+char* iupGetFontFaceAttrib(Ihandle* ih)
+{
+ int size = 0;
+ int is_bold = 0,
+ is_italic = 0,
+ is_underline = 0,
+ is_strikeout = 0;
+ char typeface[1024];
+ char *str;
+ char* standardfont;
+
+ standardfont = iupGetFontAttrib(ih);
+
+ /* parse the old Windows format first */
+ if (!iupFontParseWin(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParseX(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParsePango(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ return NULL;
+ }
+ }
+
+ str = iupStrGetMemory(50);
+ sprintf(str, "%s", typeface);
+ return str;
+}
+
+char* iupGetFontSizeAttrib(Ihandle* ih)
+{
+ int size = 0;
+ int is_bold = 0,
+ is_italic = 0,
+ is_underline = 0,
+ is_strikeout = 0;
+ char typeface[1024];
+ char *str;
+ char* standardfont;
+
+ standardfont = iupGetFontAttrib(ih);
+
+ /* parse the old Windows format first */
+ if (!iupFontParseWin(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParseX(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParsePango(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ return NULL;
+ }
+ }
+
+ str = iupStrGetMemory(50);
+ sprintf(str, "%d", size);
+ return str;
+}
+
+int iupSetFontSizeAttrib(Ihandle* ih, const char* value)
+{
+ int size = 0;
+ int is_bold = 0,
+ is_italic = 0,
+ is_underline = 0,
+ is_strikeout = 0;
+ char typeface[1024];
+ char new_standardfont[1024];
+ char* standardfont;
+
+ if (!value)
+ return 0;
+
+ standardfont = iupGetFontAttrib(ih);
+
+ /* parse the old Windows format first */
+ if (!iupFontParseWin(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParseX(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParsePango(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ return 0;
+ }
+ }
+
+ sprintf(new_standardfont, "%s, %s%s%s%s%s", typeface, is_bold?"Bold ":"", is_italic?"Italic ":"", is_underline?"Underline ":"", is_strikeout?"Strikeout ":"", value);
+ IupStoreAttribute(ih, "STANDARDFONT", new_standardfont);
+
+ return 0;
+}
+
+void iupSetDefaultFontSizeGlobalAttrib(const char* value)
+{
+ int size = 0;
+ int is_bold = 0,
+ is_italic = 0,
+ is_underline = 0,
+ is_strikeout = 0;
+ char typeface[1024];
+ char new_standardfont[1024];
+ char* standardfont;
+
+ if (!value)
+ return;
+
+ standardfont = IupGetGlobal("DEFAULTFONT");
+
+ /* parse the old Windows format first */
+ if (!iupFontParseWin(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParseX(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParsePango(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ return;
+ }
+ }
+
+ sprintf(new_standardfont, "%s, %s%s%s%s%s", typeface, is_bold?"Bold ":"", is_italic?"Italic ":"", is_underline?"Underline ":"", is_strikeout?"Strikeout ":"", value);
+ IupStoreGlobal("DEFAULTFONT", new_standardfont);
+
+ return;
+}
+
+char* iupGetDefaultFontSizeGlobalAttrib(void)
+{
+ int size = 0;
+ int is_bold = 0,
+ is_italic = 0,
+ is_underline = 0,
+ is_strikeout = 0;
+ char typeface[1024];
+ char *str;
+ char* standardfont;
+
+ standardfont = IupGetGlobal("DEFAULTFONT");
+
+ /* parse the old Windows format first */
+ if (!iupFontParseWin(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParseX(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParsePango(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ return NULL;
+ }
+ }
+
+ str = iupStrGetMemory(50);
+ sprintf(str, "%d", size);
+ return str;
+}
+
+char* iupGetFontStyleAttrib(Ihandle* ih)
+{
+ int size = 0;
+ int is_bold = 0,
+ is_italic = 0,
+ is_underline = 0,
+ is_strikeout = 0;
+ char typeface[1024];
+ char *str;
+ char* standardfont;
+
+ standardfont = iupGetFontAttrib(ih);
+
+ /* parse the old Windows format first */
+ if (!iupFontParseWin(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParseX(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParsePango(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ return NULL;
+ }
+ }
+
+ str = iupStrGetMemory(200);
+ sprintf(str, "%s%s%s%s", is_bold?"Bold ":"", is_italic?"Italic ":"", is_underline?"Underline ":"", is_strikeout?"Strikeout ":"");
+ return str;
+}
+
+int iupSetFontStyleAttrib(Ihandle* ih, const char* value)
+{
+ int size = 0;
+ int is_bold = 0,
+ is_italic = 0,
+ is_underline = 0,
+ is_strikeout = 0;
+ char typeface[1024];
+ char new_standardfont[1024];
+ char* standardfont;
+
+ if (!value)
+ return 0;
+
+ standardfont = iupGetFontAttrib(ih);
+
+ /* parse the old Windows format first */
+ if (!iupFontParseWin(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParseX(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParsePango(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ return 0;
+ }
+ }
+
+ sprintf(new_standardfont, "%s, %s %d", typeface, value, size);
+ IupStoreAttribute(ih, "STANDARDFONT", new_standardfont);
+
+ return 0;
+}
+
+/**************************************************************/
+/* Native Font Format, compatible with Pango Font Description */
+/**************************************************************/
+
+/*
+The string contains the font name, the style and the size.
+Style can be a free combination of some names separated by spaces.
+Font name can be a list of font family names separated by comma.
+*/
+
+#define isspace(_x) (_x == ' ')
+
+enum { /* style */
+ FONT_PLAIN = 0,
+ FONT_BOLD = 1,
+ FONT_ITALIC = 2,
+ FONT_UNDERLINE = 4,
+ FONT_STRIKEOUT = 8
+};
+
+static int iFontFindStyleName(const char *name, int len, int *style)
+{
+#define STYLE_NUM_NAMES 21
+ static struct { const char* name; int style; } cd_style_names[STYLE_NUM_NAMES] = {
+ {"Normal", 0},
+ {"Oblique", FONT_ITALIC},
+ {"Italic", FONT_ITALIC},
+ {"Small-Caps", 0},
+ {"Ultra-Light", 0},
+ {"Light", 0},
+ {"Medium", 0},
+ {"Semi-Bold", FONT_BOLD},
+ {"Bold", FONT_BOLD},
+ {"Ultra-Bold", FONT_BOLD},
+ {"Heavy", 0},
+ {"Ultra-Condensed",0},
+ {"Extra-Condensed",0},
+ {"Condensed", 0},
+ {"Semi-Condensed", 0},
+ {"Semi-Expanded", 0},
+ {"Expanded", 0},
+ {"Extra-Expanded", 0},
+ {"Ultra-Expanded", 0},
+ {"Underline", FONT_UNDERLINE},
+ {"Strikeout", FONT_STRIKEOUT}
+ };
+
+ int i;
+ for (i = 0; i < STYLE_NUM_NAMES; i++)
+ {
+ if (strncmp(cd_style_names[i].name, name, len)==0)
+ {
+ *style = cd_style_names[i].style;
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+static const char * iFontGetWord(const char *str, const char *last, int *wordlen)
+{
+ const char *result;
+
+ while (last > str && isspace(*(last - 1)))
+ last--;
+
+ result = last;
+ while (result > str && !isspace(*(result - 1)))
+ result--;
+
+ *wordlen = last - result;
+
+ return result;
+}
+
+int iupFontParsePango(const char *standardfont, char *typeface, int *size, int *bold, int *italic, int *underline, int *strikeout)
+{
+ const char *p, *last;
+ int len, wordlen, style = 0;
+
+ if (standardfont[0] == '-') /* X font, abort */
+ return 0;
+
+ len = (int)strlen(standardfont);
+ last = standardfont + len;
+ p = iFontGetWord(standardfont, last, &wordlen);
+
+ /* Look for a size at the end of the string */
+ if (wordlen != 0)
+ {
+ int new_size = atoi(p);
+ if (new_size != 0)
+ {
+ *size = new_size;
+ last = p;
+ }
+ }
+
+ /* Now parse style words */
+ p = iFontGetWord(standardfont, last, &wordlen);
+ while (wordlen != 0)
+ {
+ int new_style = 0;
+
+ if (!iFontFindStyleName(p, wordlen, &new_style))
+ break;
+ else
+ {
+ style |= new_style;
+
+ last = p;
+ p = iFontGetWord(standardfont, last, &wordlen);
+ }
+ }
+
+ *bold = 0;
+ *italic = 0;
+ *underline = 0;
+ *strikeout = 0;
+
+ if (style&FONT_BOLD)
+ *bold = 1;
+ if (style&FONT_ITALIC)
+ *italic = 1;
+ if (style&FONT_UNDERLINE)
+ *underline = 1;
+ if (style&FONT_STRIKEOUT)
+ *strikeout = 1;
+
+ /* Remainder is font family list. */
+
+ /* Trim off trailing white space */
+ while (last > standardfont && isspace(*(last - 1)))
+ last--;
+
+ /* Trim off trailing commas */
+ if (last > standardfont && *(last - 1) == ',')
+ last--;
+
+ /* Again, trim off trailing white space */
+ while (last > standardfont && isspace(*(last - 1)))
+ last--;
+
+ /* Trim off leading white space */
+ while (last > standardfont && isspace(*standardfont))
+ standardfont++;
+
+ if (standardfont != last)
+ {
+ len = (last - standardfont);
+ strncpy(typeface, standardfont, len);
+ typeface[len] = 0;
+ return 1;
+ }
+ else
+ return 0;
+}
+
+int iupFontParseWin(const char *value, char *fontname, int *height, int *bold, int *italic, int *underline, int *strikeout)
+{
+ int c;
+
+ if (value[0] == '-') /* X font, abort */
+ return 0;
+
+ if (strstr(value, ":") == NULL)
+ return 0;
+
+ if (value[0] == ':') /* check if it has the typeface */
+ value++; /* jump separator */
+ else
+ {
+ c = (int)strcspn(value, ":"); /* extract typeface */
+ if (c == 0) return 0;
+ strncpy(fontname, value, c);
+ fontname[c]='\0';
+ value += c+1; /* jump typeface and separator */
+ }
+
+ *bold = 0;
+ *italic = 0;
+ *underline = 0;
+ *strikeout = 0;
+
+ if (value[0] == ':') /* check if it has attributes */
+ value++; /* jump separator */
+ else
+ {
+ do /* extract style (bold/italic etc) */
+ {
+ char style[30];
+
+ c = (int)strcspn(value, ":,");
+ if (c == 0)
+ break;
+
+ strncpy(style, value, c);
+ style[c] = '\0';
+
+ if(iupStrEqual(style, "BOLD"))
+ *bold = 1;
+ else if(iupStrEqual(style,"ITALIC"))
+ *italic = 1;
+ else if(iupStrEqual(style,"UNDERLINE"))
+ *underline = 1;
+ else if(iupStrEqual(style,"STRIKEOUT"))
+ *strikeout = 1;
+
+ value += c; /* jump only the attribute */
+
+ if(value[0] == ':') /* end of attribute list */
+ {
+ value++;
+ break;
+ }
+
+ value++; /* jump separator */
+ } while (value[0]);
+ }
+
+ /* extract size in points */
+ if (!iupStrToInt(value, height))
+ return 0;
+
+ if (height == 0)
+ return 0;
+
+ return 1;
+}
+
+int iupFontParseX(const char *standardfont, char *typeface, int *size, int *bold, int *italic, int *underline, int *strikeout)
+{
+ char style1[30], style2[30];
+ char* token;
+ char font[1024];
+
+ if (standardfont[0] != '-')
+ return 0;
+
+ strcpy(font, standardfont+1); /* skip first '-' */
+
+ *bold = 0;
+ *italic = 0;
+ *underline = 0;
+ *strikeout = 0;
+
+ /* fndry */
+ token = strtok(font, "-");
+ if (!token) return 0;
+
+ /* fmly */
+ token = strtok(NULL, "-");
+ if (!token) return 0;
+ strcpy(typeface, token);
+
+ /* wght */
+ token = strtok(NULL, "-");
+ if (!token) return 0;
+ strcpy(style1, token);
+ if (strstr("bold", style1))
+ *bold = 1;
+
+ /* slant */
+ token = strtok(NULL, "-");
+ if (!token) return 0;
+ strcpy(style2, token);
+ if (*style2 == 'i' || *style2 == 'o')
+ *italic = 1;
+
+ /* sWdth */
+ token = strtok(NULL, "-");
+ if (!token) return 0;
+ /* adstyl */
+ token = strtok(NULL, "-");
+ if (!token) return 0;
+
+ /* pxlsz */
+ token = strtok(NULL, "-");
+ if (!token) return 0;
+ *size = -atoi(token); /* size in pixels */
+
+ if (*size < 0)
+ return 1;
+
+ /* ptSz */
+ token = strtok(NULL, "-");
+ if (!token) return 0;
+ *size = atoi(token)/10; /* size in deci-points */
+
+ if (*size > 0)
+ return 1;
+
+ return 0;
+}
+
diff --git a/iup/src/iup_fontdlg.c b/iup/src/iup_fontdlg.c
new file mode 100755
index 0000000..9e0f05c
--- /dev/null
+++ b/iup/src/iup_fontdlg.c
@@ -0,0 +1,48 @@
+/** \file
+ * \brief IupFontDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+#include <limits.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+
+
+Ihandle* IupFontDlg(void)
+{
+ return IupCreate("fontdlg");
+}
+
+Iclass* iupFontDlgGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupDialogGetClass());
+
+ ic->name = "fontdlg";
+ ic->nativetype = IUP_TYPEDIALOG;
+ ic->is_interactive = 1;
+
+ /* reset not used native dialog methods */
+ ic->parent->LayoutUpdate = NULL;
+ ic->parent->SetChildrenPosition = NULL;
+ ic->parent->Map = NULL;
+ ic->parent->UnMap = NULL;
+
+ /* IupFontDialog only */
+ iupClassRegisterAttribute(ic, "STATUS", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY);
+ iupClassRegisterAttribute(ic, "VALUE", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+
+ iupdrvFontDlgInitClass(ic);
+
+ return ic;
+}
diff --git a/iup/src/iup_frame.c b/iup/src/iup_frame.c
new file mode 100755
index 0000000..e1d0a13
--- /dev/null
+++ b/iup/src/iup_frame.c
@@ -0,0 +1,165 @@
+/** \file
+ * \brief Frame Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_frame.h"
+
+
+int iupFrameGetTitleHeight(Ihandle* ih)
+{
+ int charheight;
+ iupdrvFontGetCharSize(ih, NULL, &charheight);
+ return charheight;
+}
+
+static void iFrameGetDecorSize(Ihandle* ih, int *width, int *height)
+{
+ *width = 5;
+ *height = 5;
+
+ if (iupAttribGet(ih, "_IUPFRAME_HAS_TITLE") || iupAttribGet(ih, "TITLE"))
+ {
+ (*height) += iupFrameGetTitleHeight(ih);
+ }
+}
+
+static char* iFrameGetClientSizeAttrib(Ihandle* ih)
+{
+ int width, height, decorwidth, decorheight;
+ char* str = iupStrGetMemory(20);
+ width = ih->currentwidth;
+ height = ih->currentheight;
+ iFrameGetDecorSize(ih, &decorwidth, &decorheight);
+ width -= decorwidth;
+ height -= decorheight;
+ if (width < 0) width = 0;
+ if (height < 0) height = 0;
+ sprintf(str, "%dx%d", width, height);
+ return str;
+}
+
+static int iFrameCreateMethod(Ihandle* ih, void** params)
+{
+ if (params)
+ {
+ Ihandle** iparams = (Ihandle**)params;
+ if (*iparams)
+ IupAppend(ih, *iparams);
+ }
+
+ return IUP_NOERROR;
+}
+
+static void iFrameComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ int decorwidth, decorheight;
+ Ihandle* child = ih->firstchild;
+
+ iFrameGetDecorSize(ih, &decorwidth, &decorheight);
+ *w = decorwidth;
+ *h = decorheight;
+
+ if (child)
+ {
+ /* update child natural size first */
+ iupBaseComputeNaturalSize(child);
+
+ *expand = child->expand;
+ *w += child->naturalwidth;
+ *h += child->naturalheight;
+ }
+}
+
+static void iFrameSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink)
+{
+ int width, height, decorwidth, decorheight;
+
+ iFrameGetDecorSize(ih, &decorwidth, &decorheight);
+
+ width = ih->currentwidth-decorwidth;
+ height = ih->currentheight-decorheight;
+ if (width < 0) width = 0;
+ if (height < 0) height = 0;
+
+ iupBaseSetCurrentSize(ih->firstchild, width, height, shrink);
+}
+
+static void iFrameSetChildrenPositionMethod(Ihandle* ih, int x, int y)
+{
+ /* IupFrame is the native parent of its children,
+ so the position is restarted at (0,0) */
+
+ iupdrvFrameGetDecorOffset(ih, &x, &y);
+
+ /* Child coordinates are relative to client left-top corner. */
+ iupBaseSetPosition(ih->firstchild, x, y);
+}
+
+
+/******************************************************************************/
+
+
+Ihandle* IupFrame(Ihandle* child)
+{
+ void *params[2];
+ params[0] = (void*)child;
+ params[1] = NULL;
+ return IupCreatev("frame", params);
+}
+
+Iclass* iupFrameGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "frame";
+ ic->format = "H"; /* one optional ihandle */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILD_ONE;
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Create = iFrameCreateMethod;
+
+ ic->ComputeNaturalSize = iFrameComputeNaturalSizeMethod;
+ ic->SetChildrenCurrentSize = iFrameSetChildrenCurrentSizeMethod;
+ ic->SetChildrenPosition = iFrameSetChildrenPositionMethod;
+
+ ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Common Callbacks */
+ iupClassRegisterCallback(ic, "MAP_CB", "");
+ iupClassRegisterCallback(ic, "UNMAP_CB", "");
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Visual */
+ iupBaseRegisterVisualAttrib(ic);
+
+ /* Base Container */
+ iupClassRegisterAttribute(ic, "CLIENTSIZE", iFrameGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* IupFrame only */
+ iupClassRegisterAttribute(ic, "SUNKEN", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+
+ iupdrvFrameInitClass(ic);
+
+ return ic;
+}
diff --git a/iup/src/iup_frame.h b/iup/src/iup_frame.h
new file mode 100755
index 0000000..a7fd520
--- /dev/null
+++ b/iup/src/iup_frame.h
@@ -0,0 +1,22 @@
+/** \file
+ * \brief Frame Control Private Declarations
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_FRAME_H
+#define __IUP_FRAME_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void iupdrvFrameInitClass(Iclass* ic);
+void iupdrvFrameGetDecorOffset(Ihandle* ih, int *x, int *y);
+int iupFrameGetTitleHeight(Ihandle* ih);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_func.c b/iup/src/iup_func.c
new file mode 100755
index 0000000..76683c7
--- /dev/null
+++ b/iup/src/iup_func.c
@@ -0,0 +1,78 @@
+/** \file
+ * \brief function table manager
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+#include "iup_table.h"
+#include "iup_func.h"
+#include "iup_drv.h"
+#include "iup_assert.h"
+
+
+static Itable *ifunc_table = NULL; /* the function hast table indexed by the name string */
+static const char *ifunc_action_name = NULL; /* name of the action being retrieved in IupGetFunction */
+
+void iupFuncInit(void)
+{
+ ifunc_table = iupTableCreate(IUPTABLE_STRINGINDEXED);
+}
+
+void iupFuncFinish(void)
+{
+ iupTableDestroy(ifunc_table);
+ ifunc_table = NULL;
+}
+
+const char *IupGetActionName(void)
+{
+ return ifunc_action_name;
+}
+
+Icallback IupGetFunction(const char *name)
+{
+ void* value;
+ Icallback func;
+
+ iupASSERT(name!=NULL);
+ if (!name)
+ return NULL;
+
+ ifunc_action_name = name; /* store the retrieved name */
+
+ func = (Icallback)iupTableGetFunc(ifunc_table, name, &value);
+
+ /* if not defined and not the idle, then check for the DEFAULT_ACTION */
+ if (!func && !iupStrEqual(name, "IDLE_ACTION"))
+ func = (Icallback)iupTableGetFunc(ifunc_table, "DEFAULT_ACTION", &value);
+
+ return func;
+}
+
+Icallback IupSetFunction(const char *name, Icallback func)
+{
+ void* value;
+ Icallback old_func;
+
+ iupASSERT(name!=NULL);
+ if (!name)
+ return NULL;
+
+ old_func = (Icallback)iupTableGetFunc(ifunc_table, name, &value);
+
+ if (!func)
+ iupTableRemove(ifunc_table, name);
+ else
+ iupTableSetFunc(ifunc_table, name, (Ifunc)func);
+
+ /* notifies the driver if changing the Idle */
+ if (iupStrEqual(name, "IDLE_ACTION"))
+ iupdrvSetIdleFunction(func);
+
+ return old_func;
+}
diff --git a/iup/src/iup_func.h b/iup/src/iup_func.h
new file mode 100755
index 0000000..8372163
--- /dev/null
+++ b/iup/src/iup_func.h
@@ -0,0 +1,28 @@
+/** \file
+ * \brief Global Function table.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_FUNC_H
+#define __IUP_FUNC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* called only in IupOpen and IupClose */
+void iupFuncInit(void);
+void iupFuncFinish(void);
+
+/* Other functions declared in <iup.h> and implemented here.
+IupGetActionName
+IupGetFunction
+IupSetFunction
+*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_getparam.c b/iup/src/iup_getparam.c
new file mode 100755
index 0000000..1418aa5
--- /dev/null
+++ b/iup/src/iup_getparam.c
@@ -0,0 +1,1254 @@
+/** \file
+ * \brief IupGetParam
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#include "iup.h"
+
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_strmessage.h"
+#include "iup_drvfont.h"
+
+
+#define RAD2DEG 57.296f /* radians to degrees */
+
+
+/*******************************************************************************************
+ Internal Callbacks
+*******************************************************************************************/
+
+static int iParamButtonOK_CB(Ihandle* self)
+{
+ Ihandle* dlg = IupGetDialog(self);
+ Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB");
+ iupAttribSetStr(dlg, "STATUS", "1");
+ if (cb && !cb(dlg, -1, (void*)iupAttribGet(dlg, "USER_DATA")))
+ return IUP_DEFAULT;
+ else
+ return IUP_CLOSE;
+}
+
+static int iParamButtonCancel_CB(Ihandle* self)
+{
+ Ihandle* dlg = IupGetDialog(self);
+ Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB");
+ iupAttribSetStr(dlg, "STATUS", "0");
+ if (cb) cb(dlg, -3, (void*)iupAttribGet(dlg, "USER_DATA"));
+ return IUP_CLOSE;
+}
+
+static int iParamToggleAction_CB(Ihandle *self, int v)
+{
+ Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM");
+ Ihandle* dlg = IupGetDialog(self);
+ Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB");
+ int old_v = iupAttribGetInt(param, "VALUE");
+
+ if (v == 1)
+ iupAttribSetStr(param, "VALUE", "1");
+ else
+ iupAttribSetStr(param, "VALUE", "0");
+
+ if (cb && !cb(dlg, iupAttribGetInt(param, "INDEX"), (void*)iupAttribGet(dlg, "USER_DATA")))
+ {
+ /* Undo */
+ if (old_v == 1)
+ {
+ iupAttribSetStr(param, "VALUE", "1");
+ IupSetAttribute(self, "VALUE", "1");
+ }
+ else
+ {
+ iupAttribSetStr(param, "VALUE", "0");
+ IupSetAttribute(self, "VALUE", "0");
+ }
+
+ /* there is no IUP_IGNORE for IupToggle */
+ return IUP_DEFAULT;
+ }
+
+ /* update the interface */
+ if (v == 1)
+ IupStoreAttribute(self, "TITLE", iupAttribGet(param, "_IUPGP_TRUE"));
+ else
+ IupStoreAttribute(self, "TITLE", iupAttribGet(param, "_IUPGP_FALSE"));
+
+ return IUP_DEFAULT;
+}
+
+static int iParamTextAction_CB(Ihandle *self, int c, char *after)
+{
+ Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM");
+ Ihandle* dlg = IupGetDialog(self);
+ Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB");
+ Ihandle* aux = (Ihandle*)iupAttribGet(param, "AUXCONTROL");
+ (void)c;
+
+ iupAttribStoreStr(param, "VALUE", after);
+
+ if (cb && !cb(dlg, iupAttribGetInt(param, "INDEX"), (void*)iupAttribGet(dlg, "USER_DATA")))
+ {
+ /* Undo */
+ iupAttribStoreStr(param, "VALUE", IupGetAttribute(self, "VALUE"));
+ return IUP_IGNORE;
+ }
+
+ if (aux)
+ {
+ if (iupStrEqual(iupAttribGet(param, "TYPE"), "COLOR"))
+ IupStoreAttribute(aux, "BGCOLOR", after);
+ else
+ IupStoreAttribute(aux, "VALUE", after);
+ }
+
+ if (IupGetInt(self, "SPIN"))
+ {
+ if (iupAttribGet(self, "_IUPGP_SPINREAL"))
+ {
+ float min = iupAttribGetFloat(param, "MIN");
+ float step = iupAttribGetFloat(self, "_IUPGP_INCSTEP");
+ float val;
+ if (iupStrToFloat(after, &val))
+ IupSetfAttribute(self, "SPINVALUE", "%d", (int)((val-min)/step + 0.5));
+ }
+ else
+ {
+ int val;
+ if (iupStrToInt(after, &val))
+ IupSetfAttribute(self, "SPINVALUE", "%d", val);
+ }
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iParamValAction_CB(Ihandle *self)
+{
+ Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM");
+ Ihandle* text = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_TEXT");
+ Ihandle* dlg = IupGetDialog(self);
+ Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB");
+ float old_value = iupAttribGetFloat(param, "VALUE");
+ float val = IupGetFloat(self, "VALUE");
+
+ char* type = iupAttribGet(param, "TYPE");
+ if (iupStrEqual(type, "INTEGER"))
+ {
+ iupAttribSetStrf(param, "VALUE", "%d", (int)val);
+ }
+ else
+ {
+ if (iupAttribGetInt(param, "ANGLE"))
+ {
+ float old_angle;
+
+ if (val == 0)
+ {
+ old_angle = iupAttribGetFloat(param, "VALUE");
+ iupAttribSetStrf(param, "_IUPGP_OLD_ANGLE", "%g", old_angle);
+ }
+ else
+ old_angle = iupAttribGetFloat(param, "_IUPGP_OLD_ANGLE");
+
+ val = old_angle + val*RAD2DEG;
+
+ if (iupAttribGetInt(param, "INTERVAL"))
+ {
+ float min = iupAttribGetFloat(param, "MIN");
+ float max = iupAttribGetFloat(param, "MAX");
+ if (val < min)
+ val = min;
+ if (val > max)
+ val = max;
+ }
+ else if (iupAttribGetInt(param, "PARTIAL"))
+ {
+ float min = iupAttribGetFloat(param, "MIN");
+ if (val < min)
+ val = min;
+ }
+ }
+
+ iupAttribSetStrf(param, "VALUE", "%g", val);
+ }
+
+ if (cb && !cb(dlg, iupAttribGetInt(param, "INDEX"), (void*)iupAttribGet(dlg, "USER_DATA")))
+ {
+ /* Undo */
+ iupAttribSetStrf(param, "VALUE", "%g", old_value);
+
+ if (!iupAttribGetInt(param, "ANGLE"))
+ IupSetfAttribute(self, "VALUE", "%g", old_value);
+
+ /* there is no IUP_IGNORE for IupVal */
+ return IUP_DEFAULT;
+ }
+
+ type = iupAttribGet(param, "TYPE");
+ if (iupStrEqual(type, "INTEGER"))
+ IupSetfAttribute(text, "VALUE", "%d", (int)val);
+ else
+ IupSetfAttribute(text, "VALUE", "%g", val);
+
+ if (IupGetInt(text, "SPIN"))
+ {
+ if (iupAttribGet(text, "_IUPGP_SPINREAL"))
+ {
+ float min = iupAttribGetFloat(param, "MIN");
+ float step = iupAttribGetFloat(text, "_IUPGP_INCSTEP");
+ float val = IupGetFloat(text, "VALUE");
+ IupSetfAttribute(text, "SPINVALUE", "%d", (int)((val-min)/step + 0.5));
+ }
+ else
+ {
+ int val = IupGetInt(text, "VALUE");
+ IupSetfAttribute(text, "SPINVALUE", "%d", val);
+ }
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iParamListAction_CB(Ihandle *self, char *t, int i, int v)
+{
+ (void)t;
+ if (v == 1)
+ {
+ Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM");
+ Ihandle* dlg = IupGetDialog(self);
+ Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB");
+ int old_i = iupAttribGetInt(param, "VALUE");
+
+ iupAttribSetStrf(param, "VALUE", "%d", i-1);
+
+ if (cb && !cb(dlg, iupAttribGetInt(param, "INDEX"), (void*)iupAttribGet(dlg, "USER_DATA")))
+ {
+ /* Undo */
+ iupAttribSetStrf(param, "VALUE", "%d", old_i);
+ IupSetfAttribute(self, "VALUE", "%d", old_i+1);
+
+ /* there is no IUP_IGNORE for IupList */
+ return IUP_DEFAULT;
+ }
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iParamFileButton_CB(Ihandle *self)
+{
+ Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM");
+ Ihandle* textbox = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_TEXT");
+
+ Ihandle* dlg = IupFileDlg();
+
+ IupSetAttributeHandle(dlg, "PARENTDIALOG", IupGetDialog(self));
+ IupSetAttribute(dlg, "TITLE", iupAttribGet(param, "TITLE"));
+ IupSetAttribute(dlg, "VALUE", iupAttribGet(param, "VALUE"));
+
+ IupSetAttribute(dlg, "DIALOGTYPE", iupAttribGet(param, "_IUPGP_DIALOGTYPE"));
+ IupSetAttribute(dlg, "FILTER", iupAttribGet(param, "_IUPGP_FILTER"));
+ IupSetAttribute(dlg, "DIRECTORY", iupAttribGet(param, "_IUPGP_DIRECTORY"));
+ IupSetAttribute(dlg, "NOCHANGEDIR", iupAttribGet(param, "_IUPGP_NOCHANGEDIR"));
+ IupSetAttribute(dlg, "NOOVERWRITEPROMPT", iupAttribGet(param, "_IUPGP_NOOVERWRITEPROMPT"));
+
+ IupPopup(dlg, IUP_CENTER, IUP_CENTER);
+
+ if (IupGetInt(dlg, "STATUS") != -1)
+ {
+ IupSetAttribute(textbox, "VALUE", iupAttribGet(dlg, "VALUE"));
+ iupAttribStoreStr(param, "VALUE", iupAttribGet(dlg, "VALUE"));
+ }
+
+ IupDestroy(dlg);
+
+ return IUP_DEFAULT;
+}
+
+static int iParamColorButton_CB(Ihandle *self, int button, int pressed)
+{
+ if (button==IUP_BUTTON1 && pressed)
+ {
+ Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM");
+ Ihandle* textbox = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_TEXT");
+
+ Ihandle* dlg = IupColorDlg();
+
+ IupSetAttributeHandle(dlg, "PARENTDIALOG", IupGetDialog(self));
+ IupSetAttribute(dlg, "TITLE", iupAttribGet(param, "TITLE"));
+ IupSetAttribute(dlg, "VALUE", iupAttribGet(param, "VALUE"));
+
+ IupPopup(dlg, IUP_CENTER, IUP_CENTER);
+
+ if (IupGetInt(dlg, "STATUS") != -1)
+ {
+ char* value = IupGetAttribute(dlg, "VALUE");
+ IupSetAttribute(textbox, "VALUE", value);
+ iupAttribStoreStr(param, "VALUE", value);
+ IupStoreAttribute(self, "BGCOLOR", value);
+ }
+
+ IupDestroy(dlg);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iParamSpinReal_CB(Ihandle *self, int pos)
+{
+ Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM");
+ Ihandle* dlg = IupGetDialog(self);
+ Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB");
+ Ihandle* text = (Ihandle*)iupAttribGet(param, "CONTROL");
+ float min = iupAttribGetFloat(param, "MIN");
+ float max = iupAttribGetFloat(param, "MAX");
+ float val, step = iupAttribGetFloat(text, "_IUPGP_INCSTEP");
+
+ /* here spin is always [0-spinmax] converted to [min-max] */
+ val = (float)pos*step + min;
+ if (val < min)
+ val = min;
+ if (val > max)
+ val = max;
+
+ iupAttribSetStrf(param, "VALUE", "%g", (double)val);
+
+ if (cb)
+ {
+ int ret;
+ iupAttribSetStr(dlg, "SPINNING", "1");
+ ret = cb(dlg, iupAttribGetInt(param, "INDEX"), (void*)iupAttribGet(dlg, "USER_DATA"));
+ iupAttribSetStr(dlg, "SPINNING", NULL);
+ if (!ret)
+ return IUP_IGNORE;
+ }
+
+ IupSetfAttribute(text, "VALUE", "%g", (double)val);
+
+ {
+ Ihandle* aux = (Ihandle*)iupAttribGet(param, "AUXCONTROL");
+ if (aux)
+ IupSetfAttribute(aux, "VALUE", "%g", (double)val);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iParamSpinInt_CB(Ihandle *self, int pos)
+{
+ Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM");
+ Ihandle* dlg = IupGetDialog(self);
+ Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB");
+ Ihandle* text = (Ihandle*)iupAttribGet(param, "CONTROL");
+
+ /* here spin is always [min-max] */
+
+ iupAttribSetInt(param, "VALUE", pos);
+
+ if (cb)
+ {
+ int ret;
+ iupAttribSetStr(dlg, "SPINNING", "1");
+ ret = cb(dlg, iupAttribGetInt(param, "INDEX"), (void*)iupAttribGet(dlg, "USER_DATA"));
+ iupAttribSetStr(dlg, "SPINNING", NULL);
+ if (!ret)
+ return IUP_IGNORE;
+ }
+
+ IupSetfAttribute(text, "VALUE", "%g", (double)pos);
+
+ {
+ Ihandle* aux = (Ihandle*)iupAttribGet(param, "AUXCONTROL");
+ if (aux)
+ IupSetfAttribute(aux, "VALUE", "%g", (double)pos);
+ }
+
+ return IUP_DEFAULT;
+}
+
+/*******************************************************************************************
+ Creates One Parameter Box
+*******************************************************************************************/
+
+static Ihandle* iParamCreateBox(Ihandle* param)
+{
+ Ihandle *box, *ctrl = NULL, *label;
+ char *type;
+
+ label = IupLabel(iupAttribGet(param, "TITLE"));
+
+ type = iupAttribGet(param, "TYPE");
+ if (iupStrEqual(type, "SEPARATOR"))
+ {
+ box = IupHbox(label, NULL);
+ IupSetAttribute(box,"ALIGNMENT","ACENTER");
+ }
+ else
+ {
+ if (iupStrEqual(type, "STRING") && iupAttribGetInt(param, "MULTILINE"))
+ {
+ Ihandle* hbox1 = IupHbox(IupSetAttributes(IupFill(), "SIZE=5"), label, NULL);
+ IupSetAttribute(hbox1,"ALIGNMENT","ACENTER");
+
+ box = IupVbox(hbox1, NULL);
+ IupSetAttribute(box,"ALIGNMENT","ALEFT");
+ }
+ else
+ {
+ box = IupHbox(IupSetAttributes(IupFill(), "SIZE=5"), label, NULL);
+ IupSetAttribute(box,"ALIGNMENT","ACENTER");
+ }
+ }
+
+ IupSetAttribute(box,"MARGIN","0x0");
+
+ type = iupAttribGet(param, "TYPE");
+ if (iupStrEqual(type, "BOOLEAN"))
+ {
+ int value = iupAttribGetInt(param, "VALUE");
+ if (value)
+ {
+ ctrl = IupToggle(iupAttribGet(param, "_IUPGP_TRUE"), NULL);
+ IupSetAttribute(ctrl, "VALUE", "ON");
+ }
+ else
+ {
+ ctrl = IupToggle(iupAttribGet(param, "_IUPGP_FALSE"), NULL);
+ IupSetAttribute(ctrl, "VALUE", "OFF");
+ }
+ IupSetCallback(ctrl, "ACTION", (Icallback)iParamToggleAction_CB);
+
+ IupAppend(box, ctrl);
+ iupAttribSetStr(param, "DATA_TYPE", "1");
+ }
+ else if (iupStrEqual(type, "SEPARATOR"))
+ {
+ ctrl = IupLabel("");
+ IupSetAttribute(ctrl, "SEPARATOR", "HORIZONTAL");
+
+ IupAppend(box, ctrl);
+ iupAttribSetStr(param, "DATA_TYPE", "-1");
+ }
+ else if (iupStrEqual(type, "LIST"))
+ {
+ char str[20] = "1";
+ int i = 1;
+ ctrl = IupList(NULL);
+ IupSetCallback(ctrl, "ACTION", (Icallback)iParamListAction_CB);
+ IupSetAttribute(ctrl, "DROPDOWN", "YES");
+ IupSetfAttribute(ctrl, "VALUE", "%d", iupAttribGetInt(param, "VALUE")+1);
+
+ while (*iupAttribGet(param, str) != 0)
+ {
+ IupStoreAttribute(ctrl, str, iupAttribGet(param, str));
+ i++;
+ sprintf(str, "%d", i);
+ }
+ IupStoreAttribute(ctrl, str, NULL);
+
+ IupAppend(box, ctrl);
+ iupAttribSetStr(param, "DATA_TYPE", "1");
+ }
+ else if (iupStrEqual(type, "STRING"))
+ {
+ if (iupAttribGetInt(param, "MULTILINE"))
+ {
+ Ihandle* hbox;
+
+ ctrl = IupMultiLine(NULL);
+ IupSetAttribute(ctrl, "SIZE", "100x50");
+ IupSetAttribute(ctrl, "EXPAND", "YES");
+
+ hbox = IupHbox(IupSetAttributes(IupFill(), "SIZE=5"), ctrl, NULL);
+ IupSetAttribute(hbox,"ALIGNMENT","ACENTER");
+
+ IupAppend(box, hbox);
+ }
+ else
+ {
+ ctrl = IupText(NULL);
+ IupSetAttribute(ctrl, "SIZE", "100x");
+ IupSetAttribute(ctrl, "EXPAND", "HORIZONTAL");
+ IupAppend(box, ctrl);
+ }
+ IupSetCallback(ctrl, "ACTION", (Icallback)iParamTextAction_CB);
+ IupStoreAttribute(ctrl, "VALUE", iupAttribGet(param, "VALUE"));
+
+ {
+ char* mask = iupAttribGet(param, "MASK");
+ if (mask)
+ IupStoreAttribute(ctrl, "MASK", mask);
+ }
+
+ iupAttribSetStr(param, "DATA_TYPE", "0");
+ iupAttribSetStr(param, "EXPAND", "1");
+ }
+ else if (iupStrEqual(type, "FILE"))
+ {
+ Ihandle* aux;
+
+ ctrl = IupText(NULL);
+ IupSetAttribute(ctrl, "SIZE", "100x");
+ IupSetAttribute(ctrl, "EXPAND", "HORIZONTAL");
+ IupAppend(box, ctrl);
+
+ IupSetCallback(ctrl, "ACTION", (Icallback)iParamTextAction_CB);
+ IupStoreAttribute(ctrl, "VALUE", iupAttribGet(param, "VALUE"));
+
+ iupAttribSetStr(param, "DATA_TYPE", "0");
+ iupAttribSetStr(param, "EXPAND", "1");
+
+
+ aux = IupButton("...", "");
+ IupSetAttribute(aux, "EXPAND", "NO");
+
+ IupSetCallback(aux, "ACTION", (Icallback)iParamFileButton_CB);
+ iupAttribSetStr(aux, "_IUPGP_PARAM", (char*)param);
+ iupAttribSetStr(aux, "_IUPGP_TEXT", (char*)ctrl);
+ IupSetAttribute(aux, "EXPAND", "NO");
+
+ IupAppend(box, aux);
+ }
+ else if (iupStrEqual(type, "COLOR"))
+ {
+ Ihandle* aux;
+
+ ctrl = IupText(NULL);
+ IupSetAttribute(ctrl, "SIZE", "100x");
+ IupSetAttribute(ctrl, "EXPAND", "HORIZONTAL");
+ IupAppend(box, ctrl);
+
+ IupSetCallback(ctrl, "ACTION", (Icallback)iParamTextAction_CB);
+ IupSetAttribute(ctrl, "MASK", "(/d|/d/d|1/d/d|2(0|1|2|3|4)/d|25(0|1|2|3|4|5)) (/d|/d/d|1/d/d|2(0|1|2|3|4)/d|25(0|1|2|3|4|5)) (/d|/d/d|1/d/d|2(0|1|2|3|4)/d|25(0|1|2|3|4|5)) (/d|/d/d|1/d/d|2(0|1|2|3|4)/d|25(0|1|2|3|4|5))");
+ IupStoreAttribute(ctrl, "VALUE", iupAttribGet(param, "VALUE"));
+
+ iupAttribSetStr(param, "DATA_TYPE", "0");
+ iupAttribSetStr(param, "EXPAND", "1");
+
+
+ aux = IupCanvas(NULL);
+ IupSetAttribute(aux, "SIZE", "20x10");
+ IupSetAttribute(aux, "EXPAND", "NO");
+ IupStoreAttribute(aux, "BGCOLOR", iupAttribGet(param, "VALUE"));
+
+ IupSetCallback(aux, "BUTTON_CB", (Icallback)iParamColorButton_CB);
+ iupAttribSetStr(param, "AUXCONTROL", (char*)aux);
+ iupAttribSetStr(aux, "_IUPGP_PARAM", (char*)param);
+ iupAttribSetStr(aux, "_IUPGP_TEXT", (char*)ctrl);
+ IupSetAttribute(aux, "EXPAND", "NO");
+
+ IupAppend(box, aux);
+ }
+ else /* INTEGER, REAL */
+ {
+ ctrl = IupText(NULL);
+ IupSetCallback(ctrl, "ACTION", (Icallback)iParamTextAction_CB);
+ IupStoreAttribute(ctrl, "VALUE", iupAttribGet(param, "VALUE"));
+
+ type = iupAttribGet(param, "TYPE");
+ if (iupStrEqual(type, "REAL"))
+ {
+ if (iupAttribGetInt(param, "INTERVAL"))
+ {
+ float min = iupAttribGetFloat(param, "MIN");
+ float max = iupAttribGetFloat(param, "MAX");
+ float step = iupAttribGetFloat(param, "STEP");
+ float val = iupAttribGetFloat(param, "VALUE");
+ if (step == 0) step = (max-min)/20.0f;
+ IupSetfAttribute(ctrl, "MASKFLOAT", "%f:%f", (double)min, (double)max);
+
+ /* here spin is always [0-spinmax] converted to [min-max] */
+
+ IupSetAttribute(ctrl, "SPIN", "YES"); /* spin only for intervals */
+ IupSetAttribute(ctrl, "SPINAUTO", "NO");
+ IupAppend(box, ctrl);
+ IupSetCallback(ctrl, "SPIN_CB", (Icallback)iParamSpinReal_CB);
+ /* SPINMIN=0 and SPININC=1 */
+ IupSetfAttribute(ctrl, "SPINMAX", "%d", (int)((max-min)/step + 0.5));
+ IupSetfAttribute(ctrl, "SPINVALUE", "%d", (int)((val-min)/step + 0.5));
+
+ iupAttribSetStrf(ctrl, "_IUPGP_INCSTEP", "%g", step);
+ iupAttribSetStr(ctrl, "_IUPGP_SPINREAL", "1");
+ }
+ else if (iupAttribGetInt(param, "PARTIAL"))
+ {
+ float min = iupAttribGetFloat(param, "MIN");
+ if (min == 0)
+ IupSetAttribute(ctrl, "MASK", IUP_MASK_UFLOAT);
+ else
+ IupSetfAttribute(ctrl, "MASKFLOAT", "%f:%f", (double)min, (double)1.0e10);
+ IupAppend(box, ctrl);
+ }
+ else
+ {
+ IupSetAttribute(ctrl, "MASK", IUP_MASK_FLOAT);
+ IupAppend(box, ctrl);
+ }
+
+ iupAttribSetStr(param, "DATA_TYPE", "2");
+ IupSetAttribute(ctrl, "SIZE", "50x");
+ }
+ else /* INTEGER*/
+ {
+ int val = iupAttribGetInt(param, "VALUE");
+ IupSetAttribute(ctrl, "SPIN", "YES"); /* spin always */
+ IupSetAttribute(ctrl, "SPINAUTO", "NO"); /* manually update spin so the callback can also updated it */
+ IupAppend(box, ctrl);
+ IupSetCallback(ctrl, "SPIN_CB", (Icallback)iParamSpinInt_CB);
+ iupAttribSetStr(ctrl, "_IUPGP_INCSTEP", "1");
+ IupSetfAttribute(ctrl, "SPINVALUE", "%d", val);
+
+ /* here spin is always [min-max] */
+
+ if (iupAttribGetInt(param, "INTERVAL"))
+ {
+ int min = iupAttribGetInt(param, "MIN");
+ int max = iupAttribGetInt(param, "MAX");
+ int step = iupAttribGetInt(param, "STEP");
+ if (step)
+ {
+ iupAttribSetStrf(ctrl, "_IUPGP_INCSTEP", "%d", step);
+ IupSetfAttribute(ctrl, "SPININC", "%d", step);
+ }
+ IupSetfAttribute(ctrl, "SPINMAX", "%d", max);
+ IupSetfAttribute(ctrl, "SPINMIN", "%d", min);
+ }
+ else if (iupAttribGetInt(param, "PARTIAL"))
+ {
+ int min = iupAttribGetInt(param, "MIN");
+ if (min == 0)
+ IupSetAttribute(ctrl, "MASK", IUP_MASK_UINT);
+ else
+ IupSetfAttribute(ctrl, "MASKINT", "%d:2147483647", min);
+ IupSetfAttribute(ctrl, "SPINMIN", "%d", min);
+ IupSetAttribute(ctrl, "SPINMAX", "2147483647");
+ }
+ else
+ {
+ IupSetAttribute(ctrl, "SPINMIN", "-2147483647");
+ IupSetAttribute(ctrl, "SPINMAX", "2147483647");
+ IupSetAttribute(ctrl, "MASK", IUP_MASK_INT);
+ }
+
+ iupAttribSetStr(param, "DATA_TYPE", "1");
+ IupSetAttribute(ctrl, "SIZE", "50x");
+ }
+
+ if (iupAttribGetInt(param, "INTERVAL") || iupAttribGetInt(param, "ANGLE"))
+ {
+ Ihandle* aux;
+
+ if (iupAttribGetInt(param, "ANGLE"))
+ {
+ aux = IupCreatep("dial", "HORIZONTAL", NULL);
+ if (aux)
+ {
+ IupSetfAttribute(aux, "VALUE", "%g", (double)(iupAttribGetFloat(param, "VALUE")/RAD2DEG));
+ IupSetAttribute(aux, "SIZE", "50x10");
+ }
+ }
+ else
+ {
+ char* step;
+ aux = IupVal("HORIZONTAL");
+ IupStoreAttribute(aux, "MIN", iupAttribGet(param, "MIN"));
+ IupStoreAttribute(aux, "MAX", iupAttribGet(param, "MAX"));
+ IupStoreAttribute(aux, "VALUE", iupAttribGet(param, "VALUE"));
+ IupSetAttribute(aux, "EXPAND", "HORIZONTAL");
+ iupAttribSetStr(param, "AUXCONTROL", (char*)aux);
+ iupAttribSetStr(param, "EXPAND", "1");
+ step = iupAttribGet(param, "STEP");
+ if (step)
+ IupSetfAttribute(aux, "STEP", "%g", iupAttribGetFloat(param, "STEP")/(iupAttribGetFloat(param, "MAX")-iupAttribGetFloat(param, "MIN")));
+ else if (iupStrEqual(type, "INTEGER"))
+ IupSetfAttribute(aux, "STEP", "%g", 1.0/(iupAttribGetFloat(param, "MAX")-iupAttribGetFloat(param, "MIN")));
+ }
+
+ if (aux)
+ {
+ IupSetCallback(aux, "VALUECHANGED_CB", (Icallback)iParamValAction_CB);
+ iupAttribSetStr(aux, "_IUPGP_PARAM", (char*)param);
+ iupAttribSetStr(aux, "_IUPGP_TEXT", (char*)ctrl);
+
+ IupAppend(box, aux);
+ }
+ }
+ }
+
+ if (ctrl) IupStoreAttribute(ctrl, "TIP", iupAttribGet(param, "TIP"));
+ iupAttribSetStr(box, "_IUPGP_PARAM", (char*)param);
+ iupAttribSetStr(param, "CONTROL", (char*)ctrl);
+ iupAttribSetStr(param, "LABEL", (char*)label);
+ return box;
+}
+
+/*******************************************************************************************
+ Creates the Dialog and Normalize Sizes
+*******************************************************************************************/
+
+static Ihandle* IupParamDlgP(Ihandle** params)
+{
+ Ihandle *dlg, *button_ok, *button_cancel,
+ *dlg_box, *button_box, *param_box;
+ int i, lbl_width, p, expand;
+
+ button_ok = IupButton("OK", NULL);
+ IupSetAttribute(button_ok, "PADDING", "20x0");
+ IupSetCallback(button_ok, "ACTION", (Icallback)iParamButtonOK_CB);
+
+ button_cancel = IupButton(iupStrMessageGet("IUP_CANCEL"), NULL);
+ IupSetAttribute(button_cancel, "PADDING", "20x0");
+ IupSetCallback(button_cancel, "ACTION", (Icallback)iParamButtonCancel_CB);
+
+ param_box = IupVbox(NULL);
+
+ i = 0; expand = 0;
+ while (params[i] != NULL)
+ {
+ IupAppend(param_box, iParamCreateBox(params[i]));
+
+ if (IupGetInt(params[i], "EXPAND"))
+ expand = 1;
+
+ i++;
+ }
+
+ button_box = IupHbox(
+ IupFill(),
+ button_ok,
+ button_cancel,
+ NULL);
+ IupSetAttribute(button_box,"MARGIN","0x0");
+ IupSetAttribute(button_box, "NORMALIZESIZE", "HORIZONTAL");
+
+ dlg_box = IupVbox(
+ IupFrame(param_box),
+ button_box,
+ NULL);
+ IupSetAttribute(dlg_box, "MARGIN", "10x10");
+ IupSetAttribute(dlg_box, "GAP", "5");
+
+ dlg = IupDialog(dlg_box);
+
+ IupSetAttribute(dlg, "MINBOX", "NO");
+ IupSetAttribute(dlg, "MAXBOX", "NO");
+ if (!expand)
+ {
+ IupSetAttribute(dlg, "RESIZE", "NO");
+ IupSetAttribute(dlg, "DIALOGFRAME", "YES");
+ IupSetAttribute(dlg,"DIALOGHINT","YES");
+ }
+ IupSetAttributeHandle(dlg, "DEFAULTENTER", button_ok);
+ IupSetAttributeHandle(dlg, "DEFAULTESC", button_cancel);
+ IupSetAttribute(dlg, "TITLE", "ParamDlg");
+ IupSetAttribute(dlg, "PARENTDIALOG", IupGetGlobal("PARENTDIALOG"));
+ IupSetAttribute(dlg, "ICON", IupGetGlobal("ICON"));
+ iupAttribSetStr(dlg, "OK", (char*)button_ok);
+ iupAttribSetStr(dlg, "CANCEL", (char*)button_cancel);
+
+ IupMap(dlg);
+
+ /* get the largest label size and set INDEX */
+ i = 0; lbl_width = 0, p = 0;
+ while (params[i] != NULL)
+ {
+ int w;
+
+ char* type = iupAttribGet(params[i], "TYPE");
+ if (!iupStrEqual(type, "SEPARATOR"))
+ {
+ char str[20];
+ sprintf(str, "PARAM%d", p);
+ IupSetAttribute(dlg, str, (char*)params[i]);
+ iupAttribSetStrf(params[i], "INDEX", "%d", p);
+ p++;
+ }
+
+ w = IupGetInt((Ihandle*)iupAttribGet(params[i], "LABEL"), "SIZE");
+ if (w > lbl_width)
+ lbl_width = w;
+
+ i++;
+ }
+
+ i = 0;
+ while (params[i] != NULL)
+ {
+ char* type = iupAttribGet(params[i], "TYPE");
+ if (!iupStrEqual(type, "SEPARATOR"))
+ {
+ if (iupStrEqual(type, "LIST"))
+ {
+ /* set a minimum size for lists */
+ Ihandle* ctrl = (Ihandle*)iupAttribGet(params[i], "CONTROL");
+ if (IupGetInt(ctrl, "SIZE") < 50)
+ IupSetAttribute(ctrl, "SIZE", "50x");
+ }
+ else if (iupStrEqual(type, "BOOLEAN"))
+ {
+ /* reserve enough space for boolean strings */
+ Ihandle* ctrl = (Ihandle*)iupAttribGet(params[i], "CONTROL");
+ int wf = iupdrvFontGetStringWidth(ctrl, iupAttribGet(params[i], "_IUPGP_FALSE"));
+ int wt = iupdrvFontGetStringWidth(ctrl, iupAttribGet(params[i], "_IUPGP_TRUE"));
+ int w = IupGetInt(ctrl, "SIZE");
+ int v = IupGetInt(ctrl, "VALUE");
+ if (v) /* True */
+ {
+ int box = w - wt;
+ wf += box;
+ if (wf > w)
+ IupSetfAttribute(ctrl, "SIZE", "%dx", wf+8);
+ }
+ else
+ {
+ int box = w - wf;
+ wt += box;
+ if (wt > w)
+ IupSetfAttribute(ctrl, "SIZE", "%dx", wt+8);
+ }
+ }
+
+ IupSetfAttribute((Ihandle*)iupAttribGet(params[i], "LABEL"), "SIZE", "%dx", lbl_width);
+ }
+
+ i++;
+ }
+
+ IupSetAttribute(dlg, "SIZE", NULL);
+
+ return dlg;
+}
+
+/*******************************************************************************************
+ Parameter String Parsing
+*******************************************************************************************/
+
+static char* iParamGetNextStrItem(char* line, char sep, int *count)
+{
+ int i = 0;
+
+ while (line[i] != '\n' && line[i] != 0)
+ {
+ if (line[i] == sep)
+ {
+ line[i] = 0;
+ *count = i+1;
+ return line;
+ }
+
+ i++;
+ }
+
+ /* last item may not have the separator */
+ line[i] = 0;
+ *count = i;
+ return line;
+}
+
+static void iParamSetBoolNames(char* extra, Ihandle* param)
+{
+ char *falsestr = NULL, *truestr = NULL;
+ int count;
+
+ if (extra)
+ {
+ falsestr = iParamGetNextStrItem(extra, ',', &count); extra += count;
+ truestr = iParamGetNextStrItem(extra, ',', &count);
+ }
+
+ if (falsestr && truestr)
+ {
+ iupAttribStoreStr(param, "_IUPGP_TRUE", truestr);
+ iupAttribStoreStr(param, "_IUPGP_FALSE", falsestr);
+ }
+ else
+ {
+/* iupAttribStoreStr(param, "_IUPGP_TRUE", iupStrMessageGet("IUP_TRUE")); */
+/* iupAttribStoreStr(param, "_IUPGP_FALSE", iupStrMessageGet("IUP_FALSE")); */
+ iupAttribStoreStr(param, "_IUPGP_TRUE", "");
+ iupAttribStoreStr(param, "_IUPGP_FALSE", "");
+ }
+}
+
+static void iParamSetInterval(char* extra, Ihandle* param)
+{
+ char *min, *max, *step;
+ int count;
+
+ if (!extra)
+ return;
+
+ min = iParamGetNextStrItem(extra, ',', &count); extra += count;
+ max = iParamGetNextStrItem(extra, ',', &count); extra += count;
+ step = iParamGetNextStrItem(extra, ',', &count);
+
+ if (max[0])
+ {
+ iupAttribSetStr(param, "INTERVAL", "1");
+ iupAttribStoreStr(param, "MIN", min);
+ iupAttribStoreStr(param, "MAX", max);
+ if (step[0])
+ iupAttribStoreStr(param, "STEP", step);
+ }
+ else
+ {
+ iupAttribSetStr(param, "PARTIAL", "1");
+ iupAttribStoreStr(param, "MIN", min);
+ }
+}
+
+static void iParamSetFileOptions(char* extra, Ihandle* param)
+{
+ char *type, *filter, *directory, *nochangedir, *nooverwriteprompt;
+ int count;
+
+ if (!extra)
+ return;
+
+ type = iParamGetNextStrItem(extra, '|', &count); extra += count;
+ filter = iParamGetNextStrItem(extra, '|', &count); extra += count;
+ directory = iParamGetNextStrItem(extra, '|', &count); extra += count;
+ nochangedir = iParamGetNextStrItem(extra, '|', &count); extra += count;
+ nooverwriteprompt = iParamGetNextStrItem(extra, '|', &count); extra += count;
+
+ iupAttribStoreStr(param, "_IUPGP_DIALOGTYPE", type);
+ iupAttribStoreStr(param, "_IUPGP_FILTER", filter);
+ iupAttribStoreStr(param, "_IUPGP_DIRECTORY", directory);
+ iupAttribStoreStr(param, "_IUPGP_NOCHANGEDIR", nochangedir);
+ iupAttribStoreStr(param, "_IUPGP_NOOVERWRITEPROMPT", nooverwriteprompt);
+}
+
+static void iParamSetListItems(char* extra, Ihandle* param)
+{
+ int d = 1, count;
+ char str[20], *item;
+
+ if (!extra)
+ return;
+
+ item = iParamGetNextStrItem(extra, '|', &count); extra += count;
+ while (*item)
+ {
+ sprintf(str, "%d", d);
+ iupAttribStoreStr(param, str, item);
+
+ item = iParamGetNextStrItem(extra, '|', &count); extra += count;
+ d++;
+ }
+
+ sprintf(str, "%d", d);
+ iupAttribSetStr(param, str, "");
+}
+
+static char* iParamGetStrExtra(char* line, char start, char end, int *count)
+{
+ int i = 0, end_pos = -1;
+
+ if (*line != start)
+ {
+ *count = 0;
+ return NULL;
+ }
+ line++; /* skip start */
+
+ while (line[i] != '\n' && line[i] != 0)
+ {
+ if (line[i] == end)
+ end_pos = i;
+
+ i++;
+ }
+
+ if (end_pos != -1)
+ {
+ line[end_pos] = 0;
+ *count = 1+end_pos+1;
+ return line;
+ }
+ else
+ {
+ *count = 0;
+ return NULL;
+ }
+}
+
+static int iParamCopyStrLine(char* line, const char* format)
+{
+ int i = 0;
+ while (format[i] != '\n' && format[i] != 0)
+ {
+ line[i] = format[i];
+ i++;
+ if (i > 4094) /* to avoid being bigger than the local array */
+ break;
+ }
+ line[i] = '\n';
+ line[i+1] = 0;
+ return i+1;
+}
+
+char iupGetParamType(const char* format, int *line_size)
+{
+ char* type = strchr(format, '%');
+ char* line_end = strchr(format, '\n');
+ if (line_end)
+ *line_size = line_end-format+1;
+ if (type)
+ return *(type+1);
+ else
+ return 0;
+}
+
+static Ihandle *IupParamf(const char* format, int *line_size)
+{
+ Ihandle* param;
+ char line[4096];
+ char* line_ptr = &line[0], *title, type, *tip, *extra, *mask;
+ int count;
+
+ *line_size = iParamCopyStrLine(line, format);
+
+ title = iParamGetNextStrItem(line_ptr, '%', &count); line_ptr += count;
+ param = IupUser();
+ iupAttribStoreStr(param, "TITLE", title);
+
+ type = *line_ptr;
+ line_ptr++;
+
+ switch(type)
+ {
+ case 'b':
+ iupAttribSetStr(param, "TYPE", "BOOLEAN");
+ iupAttribSetStr(param, "DATA_TYPE", "1"); /* integer */
+ extra = iParamGetStrExtra(line_ptr, '[', ']', &count); line_ptr += count;
+ iParamSetBoolNames(extra, param);
+ break;
+ case 'l':
+ iupAttribSetStr(param, "TYPE", "LIST");
+ iupAttribSetStr(param, "DATA_TYPE", "1"); /* integer */
+ extra = iParamGetStrExtra(line_ptr, '|', '|', &count); line_ptr += count;
+ iParamSetListItems(extra, param);
+ break;
+ case 'a':
+ iupAttribSetStr(param, "TYPE", "REAL");
+ iupAttribSetStr(param, "DATA_TYPE", "2"); /* real */
+ iupAttribSetStr(param, "ANGLE", "1");
+ extra = iParamGetStrExtra(line_ptr, '[', ']', &count); line_ptr += count;
+ iParamSetInterval(extra, param);
+ break;
+ case 'm':
+ iupAttribSetStr(param, "MULTILINE", "1");
+ /* continue */
+ case 's':
+ iupAttribSetStr(param, "TYPE", "STRING");
+ iupAttribSetStr(param, "DATA_TYPE", "0"); /* string */
+ mask = iParamGetNextStrItem(line_ptr, '{', &count);
+ if (*mask)
+ iupAttribStoreStr(param, "MASK", mask);
+ line_ptr += count-1; /* ignore the fake separator */
+ line_ptr[0] = '{'; /* restore possible separator */
+ break;
+ case 'i':
+ iupAttribSetStr(param, "TYPE", "INTEGER");
+ iupAttribSetStr(param, "DATA_TYPE", "1"); /* integer */
+ extra = iParamGetStrExtra(line_ptr, '[', ']', &count); line_ptr += count;
+ iParamSetInterval(extra, param);
+ break;
+ case 'r':
+ iupAttribSetStr(param, "TYPE", "REAL");
+ iupAttribSetStr(param, "DATA_TYPE", "2"); /* real */
+ extra = iParamGetStrExtra(line_ptr, '[', ']', &count); line_ptr += count;
+ iParamSetInterval(extra, param);
+ break;
+ case 'f':
+ iupAttribSetStr(param, "TYPE", "FILE");
+ iupAttribSetStr(param, "DATA_TYPE", "0"); /* string */
+ extra = iParamGetStrExtra(line_ptr, '[', ']', &count); line_ptr += count;
+ iParamSetFileOptions(extra, param);
+ break;
+ case 'c':
+ iupAttribSetStr(param, "TYPE", "COLOR");
+ iupAttribSetStr(param, "DATA_TYPE", "0"); /* string */
+ break;
+ case 't':
+ iupAttribSetStr(param, "TYPE", "SEPARATOR");
+ iupAttribSetStr(param, "DATA_TYPE", "-1"); /* NONE */
+ break;
+ default:
+ return NULL;
+ }
+
+ tip = iParamGetStrExtra(line_ptr, '{', '}', &count);
+ if (tip)
+ iupAttribStoreStr(param, "TIP", tip);
+
+ return param;
+}
+
+/*******************************************************************************************
+ Exported Functions
+*******************************************************************************************/
+
+int iupGetParamCount(const char *format, int *param_extra)
+{
+ int param_count = 0, sep = 0;
+ const char* s = format;
+
+ *param_extra = 0;
+ while(*s)
+ {
+ if (*s == '%' && *(s+1) == 't') /* do not count separator lines */
+ {
+ sep = 1;
+ (*param_extra)++;
+ }
+
+ if (*s == '\n')
+ {
+ if (sep)
+ sep = 0;
+ else
+ param_count++;
+ }
+
+ s++;
+ }
+
+ return param_count;
+}
+
+static void iParamDestroyAll(Ihandle **params)
+{
+ int i = 0;
+ while (params[i] != NULL)
+ {
+ IupDestroy(params[i]);
+ i++;
+ }
+}
+
+int IupGetParamv(const char* title, Iparamcb action, void* user_data, const char* format, int param_count, int param_extra, void** param_data)
+{
+ Ihandle *dlg, *params[50];
+ int i, line_size, p;
+
+ assert(title && format);
+ if (!title || !format)
+ return 0;
+
+ for (i = 0, p = 0; i < param_count+param_extra; i++)
+ {
+ int data_type;
+
+ params[i] = IupParamf(format, &line_size);
+ assert(params[i]);
+ if (!params[i])
+ return 0;
+
+ data_type = IupGetInt(params[i], "DATA_TYPE");
+ if (data_type == 1)
+ {
+ int *data_int = (int*)(param_data[p]);
+ if (!data_int) return 0;
+ iupAttribSetStrf(params[i], "VALUE", "%d", *data_int);
+ p++;
+ }
+ else if (data_type == 2)
+ {
+ float *data_float = (float*)(param_data[p]);
+ if (!data_float) return 0;
+ iupAttribSetStrf(params[i], "VALUE", "%g", *data_float);
+ p++;
+ }
+ else if (data_type == 0)
+ {
+ char *data_str = (char*)(param_data[p]);
+ if (!data_str) return 0;
+ iupAttribStoreStr(params[i], "VALUE", data_str);
+ p++;
+ }
+
+ format += line_size;
+ }
+ params[i] = NULL;
+
+ dlg = IupParamDlgP(params);
+ IupSetAttribute(dlg, "TITLE", (char*)title);
+ IupSetCallback(dlg, "PARAM_CB", (Icallback)action);
+ iupAttribSetStr(dlg, "USER_DATA", (char*)user_data);
+
+ if (action)
+ action(dlg, -2, user_data);
+
+ IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT);
+
+ if (!IupGetInt(dlg, "STATUS"))
+ {
+ iParamDestroyAll(params);
+ IupDestroy(dlg);
+ return 0;
+ }
+ else
+ {
+ for (i = 0, p = 0; i < param_count; i++)
+ {
+ Ihandle* param;
+ int data_type;
+ char str[20];
+
+ sprintf(str, "PARAM%d", i);
+ param = (Ihandle*)iupAttribGet(dlg, str);
+
+ data_type = iupAttribGetInt(param, "DATA_TYPE");
+ if (data_type == 1)
+ {
+ int *data_int = (int*)(param_data[i]);
+ *data_int = iupAttribGetInt(param, "VALUE");
+ p++;
+ }
+ else if (data_type == 2)
+ {
+ float *data_float = (float*)(param_data[i]);
+ *data_float = iupAttribGetFloat(param, "VALUE");
+ p++;
+ }
+ else
+ {
+ char *data_str = (char*)(param_data[i]);
+ strcpy(data_str, iupAttribGet(param, "VALUE"));
+ p++;
+ }
+ }
+
+ iParamDestroyAll(params);
+ IupDestroy(dlg);
+ return 1;
+ }
+}
+
+int IupGetParam(const char* title, Iparamcb action, void* user_data, const char* format,...)
+{
+ int param_count, param_extra, i;
+ void* param_data[50];
+ va_list arg;
+
+ param_count = iupGetParamCount(format, &param_extra);
+
+ va_start(arg, format);
+ for (i = 0; i < param_count; i++)
+ {
+ param_data[i] = (void*)(va_arg(arg, void*));
+ }
+ va_end(arg);
+
+ return IupGetParamv(title, action, user_data, format, param_count, param_extra, param_data);
+}
+
diff --git a/iup/src/iup_globalattrib.c b/iup/src/iup_globalattrib.c
new file mode 100755
index 0000000..00586fb
--- /dev/null
+++ b/iup/src/iup_globalattrib.c
@@ -0,0 +1,153 @@
+/** \file
+ * \brief global attributes enviroment
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "iup.h"
+
+#include "iup_table.h"
+#include "iup_globalattrib.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_assert.h"
+#include "iup_str.h"
+
+
+static Itable *iglobal_table = NULL;
+
+void iupGlobalAttribInit(void)
+{
+ iglobal_table = iupTableCreate(IUPTABLE_STRINGINDEXED);
+}
+
+void iupGlobalAttribFinish(void)
+{
+ iupTableDestroy(iglobal_table);
+ iglobal_table = NULL;
+}
+
+static int iGlobalChangingDefaultColor(const char *name)
+{
+ if (iupStrEqual(name, "DLGBGCOLOR") ||
+ iupStrEqual(name, "DLGFGCOLOR") ||
+ iupStrEqual(name, "MENUBGCOLOR") ||
+ iupStrEqual(name, "MENUFGCOLOR") ||
+ iupStrEqual(name, "TXTBGCOLOR") ||
+ iupStrEqual(name, "TXTFGCOLOR"))
+ {
+ char str[50] = "_IUP_USER_DEFAULT_";
+ strcat(str, name);
+ iupTableSet(iglobal_table, str, (void*)"1", IUPTABLE_POINTER); /* mark as changed by the User */
+ return 1;
+ }
+ return 0;
+}
+
+int iupGlobalDefaultColorChanged(const char *name)
+{
+ char str[50] = "_IUP_USER_DEFAULT_";
+ strcat(str, name);
+ return iupTableGet(iglobal_table, str) != NULL;
+}
+
+void iupGlobalSetDefaultColorAttrib(const char* name, int r, int g, int b)
+{
+ if (!iupGlobalDefaultColorChanged(name))
+ {
+ char value[50];
+ sprintf(value, "%3d %3d %3d", r, g, b);
+ iupTableSet(iglobal_table, name, (void*)value, IUPTABLE_STRING);
+ }
+}
+
+void IupSetGlobal(const char *name, const char *value)
+{
+ iupASSERT(name!=NULL);
+ if (!name) return;
+
+ if (iupStrEqual(name, "DEFAULTFONTSIZE"))
+ {
+ iupSetDefaultFontSizeGlobalAttrib(value);
+ return;
+ }
+
+ if (iGlobalChangingDefaultColor(name) || iupdrvSetGlobal(name, value))
+ {
+ if (!value)
+ iupTableRemove(iglobal_table, name);
+ else
+ iupTableSet(iglobal_table, name, (void*)value, IUPTABLE_POINTER);
+ }
+}
+
+void IupStoreGlobal(const char *name, const char *value)
+{
+ iupASSERT(name!=NULL);
+ if (!name) return;
+
+ if (iupStrEqual(name, "DEFAULTFONTSIZE"))
+ {
+ iupSetDefaultFontSizeGlobalAttrib(value);
+ return;
+ }
+
+ if (iGlobalChangingDefaultColor(name) || iupdrvSetGlobal(name, value))
+ {
+ if (!value)
+ iupTableRemove(iglobal_table, name);
+ else
+ iupTableSet(iglobal_table, name, (void*)value, IUPTABLE_STRING);
+ }
+}
+
+char *IupGetGlobal(const char *name)
+{
+ char* value;
+
+ iupASSERT(name!=NULL);
+ if (!name)
+ return NULL;
+
+ if (iupStrEqual(name, "DEFAULTFONTSIZE"))
+ return iupGetDefaultFontSizeGlobalAttrib();
+
+ value = iupdrvGetGlobal(name);
+
+ if (!value)
+ value = (char*)iupTableGet(iglobal_table, name);
+
+ return value;
+}
+
+int iupGlobalIsPointer(const char* name)
+{
+ static struct {
+ const char *name;
+ } ptr_table[] = {
+#ifdef WIN32
+ {"HINSTANCE"},
+#else
+ {"XDISPLAY"},
+ {"XSCREEN"},
+ {"APPSHELL"},
+#endif
+ };
+#define PTR_TABLE_SIZE ((sizeof ptr_table)/(sizeof ptr_table[0]))
+
+ if (name)
+ {
+ int i;
+ for (i = 0; i < PTR_TABLE_SIZE; i++)
+ {
+ if (iupStrEqualNoCase(name, ptr_table[i].name))
+ return 1;
+ }
+ }
+
+ return 0;
+}
diff --git a/iup/src/iup_globalattrib.h b/iup/src/iup_globalattrib.h
new file mode 100755
index 0000000..706a6ac
--- /dev/null
+++ b/iup/src/iup_globalattrib.h
@@ -0,0 +1,33 @@
+/** \file
+ * \brief global attributes enviroment
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_GLOBALATTRIB_H
+#define __IUP_GLOBALATTRIB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* called only in IupOpen and IupClose */
+void iupGlobalAttribInit(void);
+void iupGlobalAttribFinish(void);
+
+int iupGlobalIsPointer(const char* name);
+
+int iupGlobalDefaultColorChanged(const char *name); /* check if user changed */
+void iupGlobalSetDefaultColorAttrib(const char* name, int r, int g, int b); /* internal change method */
+
+/* Other functions declared in <iup.h> and implemented here.
+IupSetGlobal
+IupStoreGlobal
+IupGetGlobal
+*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_hbox.c b/iup/src/iup_hbox.c
new file mode 100755
index 0000000..e790636
--- /dev/null
+++ b/iup/src/iup_hbox.c
@@ -0,0 +1,309 @@
+/** \file
+ * \brief Hbox Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_box.h"
+
+
+static int iHboxSetRasterSizeAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ ih->userwidth = 0;
+ ih->userheight = 0;
+ }
+ else
+ {
+ int s = 0;
+ iupStrToInt(value, &s);
+ if (s > 0)
+ {
+ ih->userheight = 0;
+ ih->userwidth = s;
+ }
+ }
+ iupAttribSetStr(ih, "SIZE", NULL); /* clear SIZE in hash table */
+ return 0;
+}
+
+static int iHboxSetSizeAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ ih->userwidth = 0;
+ ih->userheight = 0;
+ }
+ else
+ {
+ int s = 0;
+ iupStrToInt(value, &s);
+ if (s > 0)
+ {
+ int charwidth, charheight;
+ iupdrvFontGetCharSize(ih, &charwidth, &charheight);
+ ih->userheight = 0;
+ ih->userwidth = iupWIDTH2RASTER(s, charwidth);
+ }
+ }
+ return 1;
+}
+
+static int iHboxSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "ABOTTOM"))
+ ih->data->alignment = IUP_ALIGN_ABOTTOM;
+ else if (iupStrEqualNoCase(value, "ACENTER"))
+ ih->data->alignment = IUP_ALIGN_ACENTER;
+ else if (iupStrEqualNoCase(value, "ATOP"))
+ ih->data->alignment = IUP_ALIGN_ATOP;
+ return 0;
+}
+
+static char* iHboxGetAlignmentAttrib(Ihandle* ih)
+{
+ static char* align2str[3] = {"ATOP", "ACENTER", "ABOTTOM"};
+ return align2str[ih->data->alignment];
+}
+
+static void iHboxComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ Ihandle* child;
+ int children_naturalwidth, children_naturalheight;
+
+ /* calculate total children natural size */
+ int children_expand = 0;
+ int children_count = 0;
+ int children_natural_totalwidth = 0;
+ int children_natural_maxwidth = 0;
+ int children_natural_maxheight = 0;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ /* update child natural size first */
+ iupBaseComputeNaturalSize(child);
+
+ if (!child->is_floating)
+ {
+ children_expand |= child->expand;
+ children_natural_maxwidth = iupMAX(children_natural_maxwidth, child->naturalwidth);
+ children_natural_maxheight = iupMAX(children_natural_maxheight, child->naturalheight);
+ children_count++;
+ }
+ }
+
+ /* reset to max natural width and/or height if NORMALIZESIZE is defined */
+ if (ih->data->normalize_size)
+ iupNormalizeSizeBoxChild(ih, ih->data->normalize_size, children_natural_maxwidth, children_natural_maxheight);
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (!child->is_floating)
+ children_natural_totalwidth += child->naturalwidth;
+ }
+
+ /* leave room at the element for the maximum natural size of the children when is_homogeneous */
+ if (ih->data->is_homogeneous)
+ children_natural_totalwidth = children_natural_maxwidth*children_count;
+
+ /* compute the Hbox contents natural size */
+ children_naturalwidth = children_natural_totalwidth + (children_count-1)*ih->data->gap + 2*ih->data->margin_x;
+ children_naturalheight = children_natural_maxheight + 2*ih->data->margin_y;
+
+ /* Store to be used in iHboxCalcEmptyWidth */
+ ih->data->children_naturalsize = children_naturalwidth;
+
+ *expand = children_expand;
+ *w = children_naturalwidth;
+ *h = children_naturalheight;
+}
+
+static int iHboxCalcHomogeneousWidth(Ihandle *ih)
+{
+ Ihandle* child;
+ int homogeneous_width;
+
+ int children_count=0;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (!child->is_floating)
+ children_count++;
+ }
+ if (children_count == 0)
+ return 0;
+
+ /* equal spaces for all elements */
+ homogeneous_width = (ih->currentwidth - (children_count-1)*ih->data->gap - 2*ih->data->margin_x)/children_count;
+ if (homogeneous_width<0) homogeneous_width = 0;
+ return homogeneous_width;
+}
+
+static int iHboxCalcEmptyWidth(Ihandle *ih, int expand)
+{
+ /* This is the space that the child can be expanded. */
+ Ihandle* child;
+ int empty_width;
+
+ int expand_count=0;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (!child->is_floating && child->expand & expand)
+ expand_count++;
+ }
+ if (expand_count == 0)
+ return 0;
+
+ /* equal spaces for all expandable elements */
+ empty_width = (ih->currentwidth - ih->data->children_naturalsize)/expand_count;
+ if (empty_width < 0) empty_width = 0;
+ return empty_width;
+}
+
+static void iHboxSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink)
+{
+ /* update children */
+ Ihandle* child;
+ int empty_w0 = 0, empty_w1 = 0, client_height;
+
+ if (ih->data->expand_children)
+ ih->expand |= ih->data->expand_children;
+
+ if (ih->data->is_homogeneous)
+ ih->data->homogeneous_size = iHboxCalcHomogeneousWidth(ih);
+ else
+ {
+ ih->data->homogeneous_size = 0;
+
+ /* must calculate the space left for each control to grow inside the container */
+ /* W1 means there is an EXPAND enabled inside */
+ if (ih->expand & IUP_EXPAND_W1)
+ empty_w1 = iHboxCalcEmptyWidth(ih, IUP_EXPAND_W1);
+ /* Not W1 and W0 means that EXPAND is not enabled but there are some IupFill inside */
+ else if (ih->expand & IUP_EXPAND_W0)
+ empty_w0 = iHboxCalcEmptyWidth(ih, IUP_EXPAND_W0);
+ }
+
+ client_height = ih->currentheight - 2*ih->data->margin_y;
+ if (client_height<0) client_height=0;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (!child->is_floating)
+ {
+ int old_expand = child->expand;
+ if (ih->data->expand_children)
+ child->expand |= ih->data->expand_children;
+
+ if (ih->data->homogeneous_size)
+ iupBaseSetCurrentSize(child, ih->data->homogeneous_size, client_height, shrink);
+ else
+ {
+ int empty = (child->expand & IUP_EXPAND_W1)? empty_w1: ((child->expand & IUP_EXPAND_W0)? empty_w0: 0);
+ iupBaseSetCurrentSize(child, child->naturalwidth+empty, client_height, shrink);
+ }
+
+ if (ih->data->expand_children)
+ child->expand = old_expand;
+ }
+ else
+ {
+ /* update children to their own natural size */
+ iupBaseSetCurrentSize(child, child->naturalwidth, child->naturalheight, shrink);
+ }
+ }
+}
+
+static void iHboxSetChildrenPositionMethod(Ihandle* ih, int x, int y)
+{
+ int dy, client_height;
+ Ihandle* child;
+
+ x += ih->data->margin_x;
+ y += ih->data->margin_y;
+
+ client_height = ih->currentheight - 2*ih->data->margin_y;
+ if (client_height<0) client_height=0;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (!child->is_floating)
+ {
+ if (ih->data->alignment == IUP_ALIGN_ACENTER)
+ dy = (client_height - child->currentheight)/2;
+ else if (ih->data->alignment == IUP_ALIGN_ABOTTOM)
+ dy = client_height - child->currentheight;
+ else /* IUP_ALIGN_ATOP */
+ dy = 0;
+ if (dy<0) dy = 0;
+
+ /* update child */
+ iupBaseSetPosition(child, x, y+dy);
+
+ /* calculate next */
+ if (ih->data->homogeneous_size)
+ x += ih->data->homogeneous_size + ih->data->gap;
+ else
+ x += child->currentwidth + ih->data->gap;
+ }
+ }
+}
+
+
+/******************************************************************************/
+
+
+Ihandle *IupHboxv(Ihandle **children)
+{
+ return IupCreatev("hbox", (void**)children);
+}
+
+Ihandle *IupHbox(Ihandle* child, ...)
+{
+ Ihandle **children;
+ Ihandle *ih;
+
+ va_list arglist;
+ va_start(arglist, child);
+ children = (Ihandle **)iupObjectGetParamList(child, arglist);
+ va_end(arglist);
+
+ ih = IupCreatev("hbox", (void**)children);
+ free(children);
+
+ return ih;
+}
+
+Iclass* iupHboxGetClass(void)
+{
+ Iclass* ic = iupBoxClassBase();
+
+ ic->name = "hbox";
+
+ /* Class functions */
+ ic->ComputeNaturalSize = iHboxComputeNaturalSizeMethod;
+ ic->SetChildrenCurrentSize = iHboxSetChildrenCurrentSizeMethod;
+ ic->SetChildrenPosition = iHboxSetChildrenPositionMethod;
+
+ /* Overwrite Common */
+ iupClassRegisterAttribute(ic, "SIZE", iupBaseGetSizeAttrib, iHboxSetSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "RASTERSIZE", iupBaseGetRasterSizeAttrib, iHboxSetRasterSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* Hbox only */
+ iupClassRegisterAttribute(ic, "ALIGNMENT", iHboxGetAlignmentAttrib, iHboxSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "ATOP", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
diff --git a/iup/src/iup_image.c b/iup/src/iup_image.c
new file mode 100755
index 0000000..12b1169
--- /dev/null
+++ b/iup/src/iup_image.c
@@ -0,0 +1,1017 @@
+/** \file
+ * \brief Image Resource.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <memory.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_image.h"
+#include "iup_assert.h"
+#include "iup_stdcontrols.h"
+
+
+typedef struct _IimageStock
+{
+ iupImageStockCreateFunc func;
+ Ihandle* image; /* cache image */
+ const char* native_name; /* used to map to GTK stock images */
+} IimageStock;
+
+static Itable *istock_table = NULL; /* the function hast table indexed by the name string */
+
+void iupImageStockInit(void)
+{
+ istock_table = iupTableCreate(IUPTABLE_STRINGINDEXED);
+}
+
+void iupImageStockFinish(void)
+{
+ char* name = iupTableFirst(istock_table);
+ while (name)
+ {
+ IimageStock* istock = (IimageStock*)iupTableGetCurr(istock_table);
+ if (iupObjectCheck(istock->image))
+ IupDestroy(istock->image);
+ free(istock);
+ name = iupTableNext(istock_table);
+ }
+
+ iupTableDestroy(istock_table);
+ istock_table = NULL;
+}
+
+void iupImageStockSet(const char *name, iupImageStockCreateFunc func, const char* native_name)
+{
+ IimageStock* istock = (IimageStock*)iupTableGet(istock_table, name);
+ if (istock)
+ free(istock); /* overwrite a previous registration */
+
+ istock = (IimageStock*)malloc(sizeof(IimageStock));
+ istock->func = func;
+ istock->image = NULL;
+ istock->native_name = native_name;
+
+ iupTableSet(istock_table, name, (void*)istock, IUPTABLE_POINTER);
+}
+
+static void iImageStockGet(const char* name, Ihandle* *ih, const char* *native_name)
+{
+ IimageStock* istock = (IimageStock*)iupTableGet(istock_table, name);
+ if (istock)
+ {
+ if (istock->image)
+ *ih = istock->image;
+ else if (istock->native_name)
+ *native_name = istock->native_name;
+ else if (istock->func)
+ {
+ istock->image = istock->func();
+ *ih = istock->image;
+ }
+ }
+}
+
+void iupImageStockLoad(const char *name)
+{
+ /* Used only in iupImageLibLoadAll */
+ const char* native_name = NULL;
+ Ihandle* ih = NULL;
+ iImageStockGet(name, &ih, &native_name);
+ if (ih)
+ IupSetHandle(name, ih);
+ else if (native_name)
+ {
+ /* dummy image to save the GTK stock name */
+ void* handle = iupdrvImageLoad(native_name, IUPIMAGE_IMAGE);
+ if (handle)
+ {
+ int w, h, bpp;
+ iupdrvImageGetInfo(handle, &w, &h, &bpp);
+ if (bpp == 32)
+ ih = IupImageRGBA(w,h,NULL);
+ else
+ ih = IupImageRGB(w,h,NULL);
+ IupSetHandle(native_name, ih);
+ }
+ }
+}
+
+
+/**************************************************************************************************/
+/**************************************************************************************************/
+
+
+int iupImageNormBpp(int bpp)
+{
+ if (bpp <= 8) return 8;
+ if (bpp <= 24) return 24;
+ return 32;
+}
+
+static void iupColorSet(iupColor *c, unsigned char r, unsigned char g, unsigned char b, unsigned char a)
+{
+ c->r = r;
+ c->g = g;
+ c->b = b;
+ c->a = a;
+}
+
+int iupImageInitColorTable(Ihandle *ih, iupColor* colors, int *colors_count)
+{
+ char attr[6], *value;
+ unsigned char red, green, blue;
+ int i, has_alpha = 0;
+ static iupColor default_colors[] = {
+ { 0,0,0,255 }, { 128,0,0,255 }, { 0,128,0,255 }, { 128,128,0,255 },
+ { 0,0,128,255 }, { 128,0,128,255 }, { 0,128,128,255 }, { 192,192,192,255 },
+ { 128,128,128,255 }, { 255,0,0,255 }, { 0,255,0,255 }, { 255,255,0,255 },
+ { 0,0,255,255 }, { 255,0,255,255 }, { 0,255,255,255 }, { 255,255,255,255 } };
+
+ memset(colors, 0, sizeof(iupColor)*256);
+
+ for (i=0;i<16;i++)
+ {
+ sprintf(attr, "%d", i);
+ value = iupAttribGet(ih, attr);
+
+ if (value)
+ {
+ if (iupStrEqual(value, "BGCOLOR"))
+ {
+ iupColorSet(&colors[i], 0, 0, 0, 0);
+ has_alpha = 1;
+ }
+ else
+ {
+ if (!iupStrToRGB(value, &red, &green, &blue))
+ iupColorSet(&colors[i], default_colors[i].r, default_colors[i].g, default_colors[i].b, 255);
+ else
+ iupColorSet(&colors[i], red, green, blue, 255);
+ }
+ }
+ else
+ {
+ iupColorSet(&colors[i], default_colors[i].r, default_colors[i].g, default_colors[i].b, 255);
+ }
+ }
+
+ for (;i<256;i++)
+ {
+ sprintf(attr, "%d", i);
+ value = iupAttribGet(ih, attr);
+ if (!value)
+ break;
+
+ if (iupStrEqual(value, "BGCOLOR"))
+ {
+ iupColorSet(&colors[i], 0, 0, 0, 0);
+ has_alpha = 1;
+ }
+ else
+ {
+ if (!iupStrToRGB(value, &red, &green, &blue))
+ break;
+
+ iupColorSet(&colors[i], red, green, blue, 255);
+ }
+ }
+
+ if (colors_count) *colors_count = i;
+
+ return has_alpha;
+}
+
+void iupImageInitNonBgColors(Ihandle* ih, unsigned char *colors)
+{
+ char attr[6], *value;
+ int i;
+
+ memset(colors, 0, 256);
+
+ for (i=0;i<16;i++)
+ {
+ sprintf(attr, "%d", i);
+ value = iupAttribGet(ih, attr);
+ if (!iupStrEqual(value, "BGCOLOR"))
+ colors[i] = 1;
+ }
+
+ for (;i<256;i++)
+ {
+ sprintf(attr, "%d", i);
+ value = iupAttribGet(ih, attr);
+ if (!value)
+ break;
+
+ if (!iupStrEqual(value, "BGCOLOR"))
+ colors[i] = 1;
+ }
+}
+
+void iupImageColorMakeInactive(unsigned char *r, unsigned char *g, unsigned char *b, unsigned char bg_r, unsigned char bg_g, unsigned char bg_b)
+{
+ if (*r==bg_r && *g==bg_g && *b==bg_b) /* preserve colors identical to the background color */
+ {
+ *r = bg_r;
+ *g = bg_g;
+ *b = bg_b;
+ }
+ else
+ {
+ int ir = 0, ig = 0, ib = 0,
+ i = (*r+*g+*b)/3,
+ bg_i = (bg_r+bg_g+bg_b)/3;
+
+ if (bg_i)
+ {
+ ir = (bg_r*i)/bg_i;
+ ig = (bg_g*i)/bg_i;
+ ib = (bg_b*i)/bg_i;
+ }
+
+#define LIGHTER(_c) ((255 + _c)/2)
+ ir = LIGHTER(ir);
+ ig = LIGHTER(ig);
+ ib = LIGHTER(ib);
+
+ *r = iupBYTECROP(ir);
+ *g = iupBYTECROP(ig);
+ *b = iupBYTECROP(ib);
+ }
+}
+
+
+/**************************************************************************************************/
+/**************************************************************************************************/
+
+
+void* iupImageGetMask(const char* name)
+{
+ void* mask;
+ Ihandle *ih;
+
+ if (!name)
+ return NULL;
+
+ /* get handle from name */
+ ih = IupGetHandle(name);
+ if (!ih)
+ return NULL;
+
+ /* Check for an already created icon */
+ mask = iupAttribGet(ih, "_IUPIMAGE_MASK");
+ if (mask)
+ return mask;
+
+ /* Not created, tries to create the mask */
+ mask = iupdrvImageCreateMask(ih);
+
+ /* save the pixbuf */
+ iupAttribSetStr(ih, "_IUPIMAGE_MASK", (char*)mask);
+
+ return mask;
+}
+
+void* iupImageGetIcon(const char* name)
+{
+ void* icon;
+ Ihandle *ih;
+
+ if (!name)
+ return NULL;
+
+ /* Check first in the system resources. */
+ icon = iupdrvImageLoad(name, IUPIMAGE_ICON);
+ if (icon)
+ return icon;
+
+ /* get handle from name */
+ ih = IupGetHandle(name);
+ if (!ih)
+ return NULL;
+
+ /* Check for an already created icon */
+ icon = iupAttribGet(ih, "_IUPIMAGE_ICON");
+ if (icon)
+ return icon;
+
+ /* Not created, tries to create the icon */
+ icon = iupdrvImageCreateIcon(ih);
+
+ /* save the pixbuf */
+ iupAttribSetStr(ih, "_IUPIMAGE_ICON", (char*)icon);
+
+ return icon;
+}
+
+void* iupImageGetCursor(const char* name)
+{
+ void* cursor;
+ Ihandle *ih;
+
+ if (!name)
+ return NULL;
+
+ /* Check first in the system resources. */
+ cursor = iupdrvImageLoad(name, IUPIMAGE_CURSOR);
+ if (cursor)
+ return cursor;
+
+ /* get handle from name */
+ ih = IupGetHandle(name);
+ if (!ih)
+ return NULL;
+
+ /* Check for an already created cursor */
+ cursor = iupAttribGet(ih, "_IUPIMAGE_CURSOR");
+ if (cursor)
+ return cursor;
+
+ /* Not created, tries to create the cursor */
+ cursor = iupdrvImageCreateCursor(ih);
+
+ /* save the pixbuf */
+ iupAttribSetStr(ih, "_IUPIMAGE_CURSOR", (char*)cursor);
+
+ return cursor;
+}
+
+void iupImageGetInfo(const char* name, int *w, int *h, int *bpp)
+{
+ void* handle;
+ Ihandle *ih;
+
+ if (!name)
+ return;
+
+ /* Check first in the system resources. */
+ handle = iupdrvImageLoad(name, IUPIMAGE_IMAGE);
+ if (handle)
+ {
+ iupdrvImageGetInfo(handle, w, h, bpp);
+ return;
+ }
+
+ /* get handle from name */
+ ih = IupGetHandle(name);
+ if (!ih)
+ {
+ /* Check in the stock images. */
+ const char* native_name = NULL;
+ iImageStockGet(name, &ih, &native_name);
+
+ if (native_name)
+ {
+ handle = iupdrvImageLoad(native_name, IUPIMAGE_IMAGE);
+ if (handle)
+ {
+ iupdrvImageGetInfo(handle, w, h, bpp);
+ return;
+ }
+ }
+
+ if (!ih)
+ return;
+ }
+
+ if (w) *w = ih->currentwidth;
+ if (h) *h = ih->currentheight;
+ if (bpp) *bpp = IupGetInt(ih, "BPP");
+}
+
+void* iupImageGetImage(const char* name, Ihandle* ih_parent, int make_inactive)
+{
+ char cache_name[100] = "_IUPIMAGE_IMAGE";
+ char* bgcolor;
+ void* handle;
+ Ihandle *ih;
+ int bg_concat = 0;
+
+ if (!name)
+ return NULL;
+
+ /* Check first in the system resources. */
+ handle = iupdrvImageLoad(name, IUPIMAGE_IMAGE);
+ if (handle)
+ return handle;
+
+ /* get handle from name */
+ ih = IupGetHandle(name);
+ if (!ih)
+ {
+ /* Check in the stock images. */
+ const char* native_name = NULL;
+ iImageStockGet(name, &ih, &native_name);
+
+ if (native_name)
+ {
+ handle = iupdrvImageLoad(native_name, IUPIMAGE_IMAGE);
+ if (handle)
+ return handle;
+ }
+
+ if (!ih)
+ return NULL;
+ }
+
+ bgcolor = iupAttribGet(ih, "BGCOLOR");
+ if (ih_parent && !bgcolor)
+ bgcolor = IupGetAttribute(ih_parent, "BGCOLOR"); /* Use IupGetAttribute to use inheritance and native implementation */
+
+ if (make_inactive)
+ strcat(cache_name, "_INACTIVE");
+
+ if (iupAttribGet(ih, "_IUP_BGCOLOR_DEPEND") && bgcolor)
+ {
+ strcat(cache_name, "(");
+ strcat(cache_name, bgcolor);
+ strcat(cache_name, ")");
+ bg_concat = 1;
+ }
+
+ /* Check for an already created native image */
+ handle = (void*)iupAttribGet(ih, cache_name);
+ if (handle)
+ return handle;
+
+ if (ih_parent && iupAttribGetStr(ih_parent, "FLAT_ALPHA"))
+ iupAttribSetStr(ih, "FLAT_ALPHA", "1");
+
+ /* Creates the native image */
+ handle = iupdrvImageCreateImage(ih, bgcolor, make_inactive);
+
+ if (ih_parent && iupAttribGetStr(ih_parent, "FLAT_ALPHA"))
+ iupAttribSetStr(ih, "FLAT_ALPHA", NULL);
+
+ if (iupAttribGet(ih, "_IUP_BGCOLOR_DEPEND") && bgcolor && !bg_concat) /* _IUP_BGCOLOR_DEPEND could be set during creation */
+ {
+ strcat(cache_name, "(");
+ strcat(cache_name, bgcolor);
+ strcat(cache_name, ")");
+ }
+
+ /* save the native image in the cache */
+ iupAttribSetStr(ih, cache_name, (char*)handle);
+
+ return handle;
+}
+
+void iupImageUpdateParent(Ihandle *ih) /* ih here is the element that contains images */
+{
+ int inherit;
+
+ /* Called when BGCOLOR is changed */
+ /* it will re-create the image, if the case */
+
+ char* value = iupAttribGet(ih, "IMAGE");
+ if (value)
+ iupClassObjectSetAttribute(ih, "IMAGE", value, &inherit);
+
+ value = iupAttribGet(ih, "IMINACTIVE");
+ if (value)
+ iupClassObjectSetAttribute(ih, "IMINACTIVE", value, &inherit);
+
+ value = iupAttribGet(ih, "IMPRESS");
+ if (value)
+ iupClassObjectSetAttribute(ih, "IMPRESS", value, &inherit);
+}
+
+static char* iImageGetWidthAttrib(Ihandle *ih)
+{
+ char* str = iupStrGetMemory(50);
+ sprintf(str, "%d", ih->currentwidth);
+ return str;
+}
+
+static char* iImageGetHeightAttrib(Ihandle *ih)
+{
+ char* str = iupStrGetMemory(50);
+ sprintf(str, "%d", ih->currentheight);
+ return str;
+}
+
+void iupImageClearCache(Ihandle* ih, void* handle)
+{
+ char *name;
+ void* cur_handle;
+
+ name = iupTableFirst(ih->attrib);
+ while (name)
+ {
+ if (iupStrEqualPartial(name, "_IUPIMAGE_"))
+ {
+ cur_handle = iupTableGetCurr(ih->attrib);
+ if (cur_handle == handle)
+ {
+ iupTableRemoveCurr(ih->attrib);
+ return;
+ }
+ }
+
+ name = iupTableNext(ih->attrib);
+ }
+}
+
+static void iImageUnMapMethod(Ihandle* ih)
+{
+ char *name;
+ void* handle;
+
+ handle = iupAttribGet(ih, "_IUPIMAGE_ICON");
+ if (handle)
+ {
+ iupdrvImageDestroy(handle, IUPIMAGE_ICON);
+ iupAttribSetStr(ih, "_IUPIMAGE_ICON", NULL);
+ }
+
+ handle = iupAttribGet(ih, "_IUPIMAGE_CURSOR");
+ if (handle)
+ {
+ iupdrvImageDestroy(handle, IUPIMAGE_CURSOR);
+ iupAttribSetStr(ih, "_IUPIMAGE_CURSOR", NULL);
+ }
+
+ /* the remaining images are all IUPIMAGE_IMAGE */
+ name = iupTableFirst(ih->attrib);
+ while (name)
+ {
+ if (iupStrEqualPartial(name, "_IUPIMAGE_"))
+ {
+ handle = iupTableGetCurr(ih->attrib);
+ if (handle) iupdrvImageDestroy(handle, IUPIMAGE_IMAGE);
+ }
+
+ name = iupTableNext(ih->attrib);
+ }
+}
+
+static int iImageCreate(Ihandle* ih, void** params, int bpp)
+{
+ int width, height, channels, count;
+ unsigned char *imgdata;
+
+ iupASSERT(params!=NULL);
+ if (!params)
+ return IUP_ERROR;
+
+ width = (int)(params[0]);
+ height = (int)(params[1]);
+
+ iupASSERT(width>0);
+ iupASSERT(height>0);
+
+ if (width <= 0 || height <= 0)
+ return IUP_ERROR;
+
+ ih->currentwidth = width;
+ ih->currentheight = height;
+
+ channels = 1;
+ if (bpp == 24)
+ channels = 3;
+ else if (bpp == 32)
+ channels = 4;
+
+ count = width*height*channels;
+ imgdata = (unsigned char *)malloc(count);
+
+ if (((int)(params[2])==-1) || ((int)(params[3])==-1)) /* compacted in one pointer */
+ {
+ if ((int)(params[2])!=-1)
+ memcpy(imgdata, params[2], count);
+ }
+ else /* one param for each element */
+ {
+ int i;
+ for(i=0; i<count; i++)
+ {
+ imgdata[i] = (unsigned char)((int)(params[i+2]));
+ }
+ }
+
+ iupAttribSetStr(ih, "WID", (char*)imgdata);
+ iupAttribSetInt(ih, "BPP", bpp);
+ iupAttribSetInt(ih, "CHANNELS", channels);
+
+ return IUP_NOERROR;
+}
+
+static int iImageCreateMethod(Ihandle* ih, void** params)
+{
+ return iImageCreate(ih, params, 8);
+}
+
+static int iImageRGBCreateMethod(Ihandle* ih, void** params)
+{
+ return iImageCreate(ih, params, 24);
+}
+
+static int iImageRGBACreateMethod(Ihandle* ih, void** params)
+{
+ return iImageCreate(ih, params, 32);
+}
+
+static void iImageDestroyMethod(Ihandle* ih)
+{
+ unsigned char* imgdata = (unsigned char*)iupAttribGetStr(ih, "WID");
+ if (imgdata)
+ {
+ iupAttribSetStr(ih, "WID", NULL);
+ free(imgdata);
+ }
+}
+
+/******************************************************************************/
+
+Ihandle* IupImage(int width, int height, const unsigned char *imgdata)
+{
+ void *params[4];
+ params[0] = (void*)width;
+ params[1] = (void*)height;
+ params[2] = imgdata? (void*)imgdata: (void*)-1;
+ params[3] = (void*)-1;
+ return IupCreatev("image", params);
+}
+
+Ihandle* IupImageRGB(int width, int height, const unsigned char *imgdata)
+{
+ void *params[4];
+ params[0] = (void*)width;
+ params[1] = (void*)height;
+ params[2] = imgdata? (void*)imgdata: (void*)-1;
+ params[3] = (void*)-1;
+ return IupCreatev("imagergb", params);
+}
+
+Ihandle* IupImageRGBA(int width, int height, const unsigned char *imgdata)
+{
+ void *params[4];
+ params[0] = (void*)width;
+ params[1] = (void*)height;
+ params[2] = imgdata? (void*)imgdata: (void*)-1;
+ params[3] = (void*)-1;
+ return IupCreatev("imagergba", params);
+}
+
+static Iclass* iImageGetClassBase(char* name, int (*create_func)(Ihandle* ih, void** params))
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = name;
+ ic->format = "iiC"; /* (int,int,unsigned char*) */
+ ic->nativetype = IUP_TYPEIMAGE;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Create = create_func;
+ ic->Destroy = iImageDestroyMethod;
+ ic->Map = iupBaseTypeVoidMapMethod;
+ ic->UnMap = iImageUnMapMethod;
+
+ /* Attribute functions */
+ iupClassRegisterAttribute(ic, "WID", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "WIDTH", iImageGetWidthAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "HEIGHT", iImageGetHeightAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "RASTERSIZE", iupBaseGetRasterSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "BPP", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CHANNELS", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "HOTSPOT", NULL, NULL, "0:0", NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
+
+Iclass* iupImageGetClass(void)
+{
+ return iImageGetClassBase("image", iImageCreateMethod);
+}
+
+Iclass* iupImageRGBGetClass(void)
+{
+ return iImageGetClassBase("imagergb", iImageRGBCreateMethod);
+}
+
+Iclass* iupImageRGBAGetClass(void)
+{
+ return iImageGetClassBase("imagergba", iImageRGBACreateMethod);
+}
+
+static int SaveImageC(const char* file_name, Ihandle* ih, const char* name, FILE* packfile)
+{
+ int y, x, width, height, channels, linesize;
+ unsigned char* data;
+ FILE* file;
+
+ if (packfile)
+ file = packfile;
+ else
+ file = fopen(file_name, "wb");
+
+ if (!file)
+ return 0;
+
+ width = IupGetInt(ih, "WIDTH");
+ height = IupGetInt(ih, "HEIGHT");
+ channels = IupGetInt(ih, "CHANNELS");
+ linesize = width*channels;
+
+ data = (unsigned char*)IupGetAttribute(ih, "WID");
+
+ if (fprintf(file, "static Ihandle* load_image_%s(void)\n", name)<0)
+ {
+ if (!packfile)
+ fclose(file);
+ return 0;
+ }
+
+ fprintf(file, "{\n");
+ fprintf(file, " unsigned char imgdata[] = {\n");
+
+ for (y = 0; y < height; y++)
+ {
+ fprintf(file, " ");
+
+ for (x = 0; x < linesize; x++)
+ {
+ if (x != 0)
+ fprintf(file, ", ");
+
+ fprintf(file, "%d", (int)data[y*linesize+x]);
+ }
+
+ if (y == height-1)
+ fprintf(file, "};\n\n");
+ else
+ fprintf(file, ",\n");
+ }
+
+ if (channels == 1)
+ {
+ int c;
+ char str[20];
+ char* color;
+
+ fprintf(file, " Ihandle* image = IupImage(%d, %d, imgdata);\n\n", width, height);
+
+ for (c = 0; c < 256; c++)
+ {
+ sprintf(str, "%d", c);
+ color = IupGetAttribute(ih, str);
+ if (!color)
+ break;
+
+ fprintf(file, " IupSetAttribute(image, \"%d\", \"%s\");\n", c, color);
+ }
+
+ fprintf(file, "\n");
+ }
+ else if (channels == 3)
+ fprintf(file, " Ihandle* image = IupImageRGB(%d, %d, imgdata);\n", width, height);
+ else /* channels == 4 */
+ fprintf(file, " Ihandle* image = IupImageRGBA(%d, %d, imgdata);\n", width, height);
+
+ fprintf(file, " return image;\n");
+ fprintf(file, "}\n\n");
+
+ if (!packfile)
+ fclose(file);
+
+ return 1;
+}
+
+static int SaveImageLua(const char* file_name, Ihandle* ih, const char* name, FILE* packfile)
+{
+ int y, x, width, height, channels, linesize;
+ unsigned char* data;
+ FILE* file;
+
+ if (packfile)
+ file = packfile;
+ else
+ file = fopen(file_name, "wb");
+
+ if (!file)
+ return 0;
+
+ width = IupGetInt(ih, "WIDTH");
+ height = IupGetInt(ih, "HEIGHT");
+ channels = IupGetInt(ih, "CHANNELS");
+ linesize = width*channels;
+
+ data = (unsigned char*)IupGetAttribute(ih, "WID");
+
+ if (fprintf(file, "function load_image_%s()\n", name)<0)
+ {
+ if (!packfile)
+ fclose(file);
+ return 0;
+ }
+
+ if (channels == 1)
+ fprintf(file, " local %s = iup.image\n", name);
+ else if (channels == 3)
+ fprintf(file, " local %s = iup.imagergb\n", name);
+ else /* channels == 4 */
+ fprintf(file, " local %s = iup.imagergba\n", name);
+
+ fprintf(file, " {\n");
+
+ fprintf(file, " width = %d,\n", width);
+ fprintf(file, " height = %d,\n", height);
+ fprintf(file, " pixels = {\n");
+
+ for (y = 0; y < height; y++)
+ {
+ fprintf(file, " ");
+ for (x = 0; x < linesize; x++)
+ {
+ fprintf(file, "%d, ", (int)data[y*linesize+x]);
+ }
+ fprintf(file, "\n");
+ }
+
+ fprintf(file, " },\n");
+
+ if (channels == 1)
+ {
+ int c;
+ char* color;
+ unsigned int r, g, b;
+ char str[20];
+
+ fprintf(file, " colors = {\n");
+
+ for(c = 0; c < 256; c++)
+ {
+ sprintf(str, "%d", c);
+ color = IupGetAttribute(ih, str);
+ if (!color)
+ break;
+
+ if (iupStrEqualNoCase(color, "BGCOLOR"))
+ fprintf(file, " \"BGCOLOR\",\n");
+ else
+ {
+ sscanf(color, "%d %d %d", &r, &g, &b);
+ fprintf(file, " \"%d %d %d\",\n", r, g, b);
+ }
+ }
+
+ fprintf(file, " }\n");
+ }
+
+ fprintf(file, " }\n");
+
+ fprintf(file, " return %s\n", name);
+ fprintf(file, "end\n\n");
+
+ if (!packfile)
+ fclose(file);
+
+ return 1;
+}
+
+static int SaveImageLED(const char* file_name, Ihandle* ih, const char* name, FILE* packfile)
+{
+ int y, x, width, height, channels, linesize;
+ unsigned char* data;
+ FILE* file;
+
+ if (packfile)
+ file = packfile;
+ else
+ file = fopen(file_name, "wb");
+
+ if (!file)
+ return 0;
+
+ width = IupGetInt(ih, "WIDTH");
+ height = IupGetInt(ih, "HEIGHT");
+ channels = IupGetInt(ih, "CHANNELS");
+ linesize = width*channels;
+
+ data = (unsigned char*)IupGetAttribute(ih, "WID");
+
+ if (channels == 1)
+ {
+ int c;
+ unsigned int r, g, b;
+ char str[20];
+ char* color;
+
+ if (fprintf(file, "%s = IMAGE\n", name)<0)
+ {
+ if (!packfile)
+ fclose(file);
+ return 0;
+ }
+
+ fprintf(file, "[\n");
+ for(c = 0; c < 256; c++)
+ {
+ sprintf(str, "%d", c);
+ color = IupGetAttribute(ih, str);
+ if (!color)
+ {
+ if (c < 16)
+ continue;
+ else
+ break;
+ }
+
+ if (c != 0)
+ fprintf(file, ",\n");
+
+ if (iupStrEqualNoCase(color, "BGCOLOR"))
+ fprintf(file, " %d = \"BGCOLOR\"", c);
+ else
+ {
+ sscanf(color, "%d %d %d", &r, &g, &b);
+ fprintf(file, " %d = \"%d %d %d\"", c, r, g, b);
+ }
+ }
+ fprintf(file, "\n]\n");
+ }
+ else if (channels == 3)
+ {
+ if (fprintf(file, "%s = IMAGERGB\n", name)<0)
+ {
+ if (!packfile)
+ fclose(file);
+ return 0;
+ }
+ }
+ else /* channels == 4 */
+ {
+ if (fprintf(file, "%s = IMAGERGBA\n", name)<0)
+ {
+ if (!packfile)
+ fclose(file);
+ return 0;
+ }
+ }
+
+ fprintf(file, "(%d, %d,\n", width, height);
+
+ for (y = 0; y < height; y++)
+ {
+ fprintf(file, " ");
+ for (x = 0; x < linesize; x++)
+ {
+ if (y == height-1 && x==linesize-1)
+ fprintf(file, "%d", (int)data[y*linesize+x]);
+ else
+ fprintf(file, "%d, ", (int)data[y*linesize+x]);
+ }
+ fprintf(file, "\n");
+ }
+
+ fprintf(file, ")\n\n");
+
+ if (!packfile)
+ fclose(file);
+
+ return 1;
+}
+
+int iupSaveImageAsText(Ihandle* ih, FILE* packfile, const char* format, const char* name)
+{
+ int ret = 0;
+ if (iupStrEqualNoCase(format, "LED"))
+ ret = SaveImageLED(NULL, ih, name, packfile);
+ else if (iupStrEqualNoCase(format, "LUA"))
+ ret = SaveImageLua(NULL, ih, name, packfile);
+ else if (iupStrEqualNoCase(format, "C") || iupStrEqualNoCase(format, "H"))
+ ret = SaveImageC(NULL, ih, name, packfile);
+ return ret;
+}
+
+int IupSaveImageAsText(Ihandle* ih, const char* file_name, const char* format, const char* name)
+{
+ int ret = 0;
+ if (!name)
+ {
+ name = IupGetName(ih);
+ if (!name)
+ name = "image";
+ }
+ if (iupStrEqualNoCase(format, "LED"))
+ ret = SaveImageLED(file_name, ih, name, NULL);
+ else if (iupStrEqualNoCase(format, "LUA"))
+ ret = SaveImageLua(file_name, ih, name, NULL);
+ else if (iupStrEqualNoCase(format, "C") || iupStrEqualNoCase(format, "H"))
+ ret = SaveImageC(file_name, ih, name, NULL);
+ return ret;
+}
diff --git a/iup/src/iup_image.h b/iup/src/iup_image.h
new file mode 100755
index 0000000..89e6795
--- /dev/null
+++ b/iup/src/iup_image.h
@@ -0,0 +1,61 @@
+/** \file
+ * \brief Image Resource Private Declarations
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_IMAGE_H
+#define __IUP_IMAGE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void* iupdrvImageCreateMask(Ihandle *ih);
+void* iupdrvImageCreateIcon(Ihandle *ih);
+void* iupdrvImageCreateCursor(Ihandle *ih);
+void* iupdrvImageCreateImage(Ihandle *ih, const char* bgcolor, int make_inactive);
+
+enum {IUPIMAGE_IMAGE, IUPIMAGE_ICON, IUPIMAGE_CURSOR};
+void* iupdrvImageLoad(const char* name, int type);
+void iupdrvImageDestroy(void* handle, int type);
+int iupdrvImageGetInfo(void* handle, int *w, int *h, int *bpp); /* only for IUPIMAGE_IMAGE */
+
+void* iupImageGetMask(const char* name);
+void* iupImageGetIcon(const char* name);
+void* iupImageGetCursor(const char* name);
+void* iupImageGetImage(const char* name, Ihandle* parent, int make_inactive);
+void iupImageGetInfo(const char* name, int *w, int *h, int *bpp);
+void iupImageUpdateParent(Ihandle *parent);
+void iupImageClearCache(Ihandle* ih, void* handle);
+
+typedef struct _iupColor {
+ unsigned char r, g, b, a;
+} iupColor;
+
+int iupImageInitColorTable(Ihandle *ih, iupColor* colors, int *colors_count);
+void iupImageInitNonBgColors(Ihandle* ih, unsigned char *colors);
+void iupImageColorMakeInactive(unsigned char *r, unsigned char *g, unsigned char *b,
+ unsigned char bg_r, unsigned char bg_g, unsigned char bg_b);
+int iupImageNormBpp(int bpp);
+
+#define iupALPHABLEND(_src,_dst,_alpha) (unsigned char)(((_src) * (_alpha) + (_dst) * (255 - (_alpha))) / 255)
+
+/* In Windows, RAW data is a DIB handle.
+ imgdata here is bottom-up arranged and has separated planes */
+void* iupdrvImageCreateImageRaw(int width, int height, int bpp, iupColor* colors, int colors_count, unsigned char *imgdata);
+int iupdrvImageGetRawInfo(void* handle, int *w, int *h, int *bpp, iupColor* colors, int *colors_count);
+void iupdrvImageGetRawData(void* handle, unsigned char* imgdata);
+
+void iupImageStockInit(void);
+void iupImageStockFinish(void);
+typedef Ihandle* (*iupImageStockCreateFunc)(void);
+void iupImageStockSet(const char *name, iupImageStockCreateFunc func, const char* native_name);
+void iupImageStockLoad(const char *name); /* Used only in iupImageLibLoadAll */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_key.c b/iup/src/iup_key.c
new file mode 100755
index 0000000..6c57c60
--- /dev/null
+++ b/iup/src/iup_key.c
@@ -0,0 +1,269 @@
+/** \file
+ * \brief Manage keys encoding and decoding.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <memory.h>
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupkey.h"
+#include "iupcbs.h"
+
+#include "iup_key.h"
+#include "iup_str.h"
+#include "iup_object.h"
+#include "iup_drv.h"
+#include "iup_focus.h"
+
+
+static struct
+{
+ char *name;
+ int code;
+} ikey_map_list[]=
+ {
+ {"K_exclam", K_exclam},
+ {"K_grave", K_grave},
+ {"K_quotedbl", K_quotedbl},
+ {"K_numbersign", K_numbersign},
+ {"K_dollar", K_dollar},
+ {"K_percent", K_percent},
+ {"K_ampersand", K_ampersand},
+ {"K_apostrophe", K_apostrophe},
+ {"K_parentleft", K_parentleft},
+ {"K_parentright", K_parentright},
+ {"K_asterisk", K_asterisk}, {"K_sAsterisk",K_sAsterisk},{"K_cAsterisk",K_cAsterisk},{"K_mAsterisk",K_mAsterisk},{"K_yAsterisk",K_yAsterisk},
+ {"K_plus", K_plus}, {"K_sPlus", K_sPlus}, {"K_cPlus", K_cPlus}, {"K_mPlus", K_mPlus}, {"K_yPlus", K_yPlus},
+ {"K_comma", K_comma}, {"K_sComma", K_sComma}, {"K_cComma", K_cComma}, {"K_mComma", K_mComma}, {"K_yComma", K_yComma},
+ {"K_minus", K_minus}, {"K_sMinus", K_sMinus}, {"K_cMinus", K_cMinus}, {"K_mMinus", K_mMinus}, {"K_yMinus", K_yMinus},
+ {"K_period", K_period}, {"K_sPeriod", K_sPeriod}, {"K_cPeriod", K_cPeriod}, {"K_mPeriod", K_mPeriod}, {"K_yPeriod", K_yPeriod},
+ {"K_slash", K_slash}, {"K_sSlash", K_sSlash}, {"K_cSlash", K_cSlash}, {"K_mSlash", K_mSlash}, {"K_ySlash", K_ySlash},
+ {"K_colon", K_colon},
+ {"K_semicolon ", K_semicolon}, {"K_cSemicolon ", K_cSemicolon}, {"K_mSemicolon ", K_mSemicolon}, {"K_ySemicolon ", K_ySemicolon},
+ {"K_less", K_less},
+ {"K_equal", K_equal}, {"K_cEqual", K_cEqual}, {"K_mEqual", K_mEqual}, {"K_yEqual", K_yEqual},
+ {"K_greater", K_greater},
+ {"K_question", K_question},
+ {"K_bracketleft", K_bracketleft}, {"K_cBracketleft", K_cBracketleft}, {"K_mBracketleft", K_mBracketleft}, {"K_yBracketleft", K_yBracketleft},
+ {"K_backslash", K_backslash}, {"K_cBackslash", K_cBackslash}, {"K_mBackslash", K_mBackslash}, {"K_yBackslash", K_yBackslash},
+ {"K_bracketright", K_bracketright}, {"K_cBracketright", K_cBracketright}, {"K_mBracketright", K_mBracketright}, {"K_yBracketright", K_yBracketright},
+ {"K_circum", K_circum},
+ {"K_underscore", K_underscore},
+ {"K_at", K_at},
+ {"K_braceleft", K_braceleft},
+ {"K_bar", K_bar},
+ {"K_braceright", K_braceright},
+ {"K_tilde", K_tilde},
+ {"K_acute", K_acute},
+ {"K_ccedilla" ,K_ccedilla}, {"K_Ccedilla" ,K_Ccedilla}, {"K_cCcedilla" ,K_cCcedilla}, {"K_mCcedilla" ,K_mCcedilla}, {"K_yCcedilla" ,K_yCcedilla},
+ {"K_ESC" ,K_ESC}, {"K_sESC" ,K_sESC}, {"K_cESC" ,K_cESC}, {"K_mESC" ,K_mESC}, {"K_yESC" ,K_yESC},
+ {"K_PAUSE" ,K_PAUSE}, {"K_sPAUSE" ,K_sPAUSE}, {"K_cPAUSE" ,K_cPAUSE}, {"K_mPAUSE" ,K_mPAUSE}, {"K_yPAUSE" ,K_yPAUSE},
+ {"K_HOME" ,K_HOME}, {"K_sHOME" ,K_sHOME}, {"K_cHOME" ,K_cHOME}, {"K_mHOME" ,K_mHOME}, {"K_yHOME" ,K_yHOME},
+ {"K_UP" ,K_UP}, {"K_sUP" ,K_sUP}, {"K_cUP" ,K_cUP}, {"K_mUP" ,K_mUP}, {"K_yUP" ,K_yUP},
+ {"K_PGUP" ,K_PGUP}, {"K_sPGUP" ,K_sPGUP}, {"K_cPGUP" ,K_cPGUP}, {"K_mPGUP" ,K_mPGUP}, {"K_yPGUP" ,K_yPGUP},
+ {"K_LEFT" ,K_LEFT}, {"K_sLEFT" ,K_sLEFT}, {"K_cLEFT" ,K_cLEFT}, {"K_mLEFT" ,K_mLEFT}, {"K_yLEFT" ,K_yLEFT},
+ {"K_MIDDLE",K_MIDDLE}, {"K_sMIDDLE",K_sMIDDLE},{"K_cMIDDLE",K_cMIDDLE},{"K_mMIDDLE",K_mMIDDLE}, {"K_yMIDDLE",K_yMIDDLE},
+ {"K_RIGHT" ,K_RIGHT}, {"K_sRIGHT" ,K_sRIGHT}, {"K_cRIGHT" ,K_cRIGHT}, {"K_mRIGHT" ,K_mRIGHT}, {"K_yRIGHT" ,K_yRIGHT},
+ {"K_END" ,K_END}, {"K_sEND" ,K_sEND}, {"K_cEND" ,K_cEND}, {"K_mEND" ,K_mEND}, {"K_yEND" ,K_yEND},
+ {"K_DOWN" ,K_DOWN}, {"K_sDOWN" ,K_sDOWN}, {"K_cDOWN" ,K_cDOWN}, {"K_mDOWN" ,K_mDOWN}, {"K_yDOWN" ,K_yDOWN},
+ {"K_PGDN" ,K_PGDN}, {"K_sPGDN" ,K_sPGDN}, {"K_cPGDN" ,K_cPGDN}, {"K_mPGDN" ,K_mPGDN}, {"K_yPGDN" ,K_yPGDN},
+ {"K_INS" ,K_INS}, {"K_sINS" ,K_sINS}, {"K_cINS" ,K_cINS}, {"K_mINS" ,K_mINS}, {"K_yINS" ,K_yINS},
+ {"K_DEL" ,K_DEL}, {"K_sDEL" ,K_sDEL}, {"K_cDEL" ,K_cDEL}, {"K_mDEL" ,K_mDEL}, {"K_yDEL" ,K_yDEL},
+ {"K_SP" ,K_SP}, {"K_sSP" ,K_sSP}, {"K_cSP" ,K_cSP}, {"K_mSP" ,K_mSP}, {"K_ySP" ,K_ySP},
+ {"K_TAB" ,K_TAB}, {"K_sTAB" ,K_sTAB}, {"K_cTAB" ,K_cTAB}, {"K_mTAB" ,K_mTAB}, {"K_yTAB" ,K_yTAB},
+ {"K_CR" ,K_CR}, {"K_sCR" ,K_sCR}, {"K_cCR" ,K_cCR}, {"K_mCR" ,K_mCR}, {"K_yCR" ,K_yCR},
+ {"K_BS" ,K_BS}, {"K_sBS" ,K_sBS}, {"K_cBS" ,K_cBS}, {"K_mBS" ,K_mBS}, {"K_yBS" ,K_yBS},
+ {"K_Print" ,K_Print}, {"K_sPrint" ,K_sPrint}, {"K_cPrint" ,K_cPrint}, {"K_mPrint" ,K_mPrint}, {"K_yPrint" ,K_yPrint},
+ {"K_Menu" ,K_Menu}, {"K_sMenu" ,K_sMenu}, {"K_cMenu" ,K_cMenu}, {"K_mMenu" ,K_mMenu}, {"K_yMenu" ,K_yMenu},
+ {"K_0", K_0}, {"K_c0", K_c0}, {"K_m0", K_m0}, {"K_y0", K_y0},
+ {"K_1", K_1}, {"K_c1", K_c1}, {"K_m1", K_m1}, {"K_y1", K_y1},
+ {"K_2", K_2}, {"K_c2", K_c2}, {"K_m2", K_m2}, {"K_y2", K_y2},
+ {"K_3", K_3}, {"K_c3", K_c3}, {"K_m3", K_m3}, {"K_y3", K_y3},
+ {"K_4", K_4}, {"K_c4", K_c4}, {"K_m4", K_m4}, {"K_y4", K_y4},
+ {"K_5", K_5}, {"K_c5", K_c5}, {"K_m5", K_m5}, {"K_y5", K_y5},
+ {"K_6", K_6}, {"K_c6", K_c6}, {"K_m6", K_m6}, {"K_y6", K_y6},
+ {"K_7", K_7}, {"K_c7", K_c7}, {"K_m7", K_m7}, {"K_y7", K_y7},
+ {"K_8", K_8}, {"K_c8", K_c8}, {"K_m8", K_m8}, {"K_y8", K_y8},
+ {"K_9", K_9}, {"K_c9", K_c9}, {"K_m9", K_m9}, {"K_y9", K_y9},
+ {"K_a", K_a}, {"K_A", K_A}, {"K_cA" ,K_cA}, {"K_mA" ,K_mA}, {"K_yA" ,K_yA},
+ {"K_b", K_b}, {"K_B", K_B}, {"K_cB" ,K_cB}, {"K_mB" ,K_mB}, {"K_yB" ,K_yB},
+ {"K_c", K_c}, {"K_C", K_C}, {"K_cC" ,K_cC}, {"K_mC" ,K_mC}, {"K_yC" ,K_yC},
+ {"K_d", K_d}, {"K_D", K_D}, {"K_cD" ,K_cD}, {"K_mD" ,K_mD}, {"K_yD" ,K_yD},
+ {"K_e", K_e}, {"K_E", K_E}, {"K_cE" ,K_cE}, {"K_mE" ,K_mE}, {"K_yE" ,K_yE},
+ {"K_f", K_f}, {"K_F", K_F}, {"K_cF" ,K_cF}, {"K_mF" ,K_mF}, {"K_yF" ,K_yF},
+ {"K_g", K_g}, {"K_G", K_G}, {"K_cG" ,K_cG}, {"K_mG" ,K_mG}, {"K_yG" ,K_yG},
+ {"K_h", K_h}, {"K_H", K_H}, {"K_cH" ,K_cH}, {"K_mH" ,K_mH}, {"K_yH" ,K_yH},
+ {"K_i", K_i}, {"K_I", K_I}, {"K_cI" ,K_cI}, {"K_mI" ,K_mI}, {"K_yI" ,K_yI},
+ {"K_j", K_j}, {"K_J", K_J}, {"K_cJ" ,K_cJ}, {"K_mJ" ,K_mJ}, {"K_yJ" ,K_yJ},
+ {"K_k", K_k}, {"K_K", K_K}, {"K_cK" ,K_cK}, {"K_mK" ,K_mK}, {"K_yK" ,K_yK},
+ {"K_l", K_l}, {"K_L", K_L}, {"K_cL" ,K_cL}, {"K_mL" ,K_mL}, {"K_yL" ,K_yL},
+ {"K_m", K_m}, {"K_M", K_M}, {"K_cM" ,K_cM}, {"K_mM" ,K_mM}, {"K_yM" ,K_yM},
+ {"K_n", K_n}, {"K_N", K_N}, {"K_cN" ,K_cN}, {"K_mN" ,K_mN}, {"K_yN" ,K_yN},
+ {"K_o", K_o}, {"K_O", K_O}, {"K_cO" ,K_cO}, {"K_mO" ,K_mO}, {"K_yO" ,K_yO},
+ {"K_p", K_p}, {"K_P", K_P}, {"K_cP" ,K_cP}, {"K_mP" ,K_mP}, {"K_yP" ,K_yP},
+ {"K_q", K_q}, {"K_Q", K_Q}, {"K_cQ" ,K_cQ}, {"K_mQ" ,K_mQ}, {"K_yQ" ,K_yQ},
+ {"K_r", K_r}, {"K_R", K_R}, {"K_cR" ,K_cR}, {"K_mR" ,K_mR}, {"K_yR" ,K_yR},
+ {"K_s", K_s}, {"K_S", K_S}, {"K_cS" ,K_cS}, {"K_mS" ,K_mS}, {"K_yS" ,K_yS},
+ {"K_t", K_t}, {"K_T", K_T}, {"K_cT" ,K_cT}, {"K_mT" ,K_mT}, {"K_yT" ,K_yT},
+ {"K_u", K_u}, {"K_U", K_U}, {"K_cU" ,K_cU}, {"K_mU" ,K_mU}, {"K_yU" ,K_yU},
+ {"K_v", K_v}, {"K_V", K_V}, {"K_cV" ,K_cV}, {"K_mV" ,K_mV}, {"K_yV" ,K_yV},
+ {"K_w", K_w}, {"K_W", K_W}, {"K_cW" ,K_cW}, {"K_mW" ,K_mW}, {"K_yW" ,K_yW},
+ {"K_x", K_x}, {"K_X", K_X}, {"K_cX" ,K_cX}, {"K_mX" ,K_mX}, {"K_yX" ,K_yX},
+ {"K_y", K_y}, {"K_Y", K_Y}, {"K_cY" ,K_cY}, {"K_mY" ,K_mY}, {"K_yY" ,K_yY},
+ {"K_z", K_z}, {"K_Z", K_Z}, {"K_cZ" ,K_cZ}, {"K_mZ" ,K_mZ}, {"K_yZ" ,K_yZ},
+ {"K_F1" ,K_F1}, {"K_sF1" ,K_sF1}, {"K_cF1" ,K_cF1}, {"K_mF1" ,K_mF1}, {"K_yF1" ,K_yF1},
+ {"K_F2" ,K_F2}, {"K_sF2" ,K_sF2}, {"K_cF2" ,K_cF2}, {"K_mF2" ,K_mF2}, {"K_yF2" ,K_yF2},
+ {"K_F3" ,K_F3}, {"K_sF3" ,K_sF3}, {"K_cF3" ,K_cF3}, {"K_mF3" ,K_mF3}, {"K_yF3" ,K_yF3},
+ {"K_F4" ,K_F4}, {"K_sF4" ,K_sF4}, {"K_cF4" ,K_cF4}, {"K_mF4" ,K_mF4}, {"K_yF4" ,K_yF4},
+ {"K_F5" ,K_F5}, {"K_sF5" ,K_sF5}, {"K_cF5" ,K_cF5}, {"K_mF5" ,K_mF5}, {"K_yF5" ,K_yF5},
+ {"K_F6" ,K_F6}, {"K_sF6" ,K_sF6}, {"K_cF6" ,K_cF6}, {"K_mF6" ,K_mF6}, {"K_yF6" ,K_yF6},
+ {"K_F7" ,K_F7}, {"K_sF7" ,K_sF7}, {"K_cF7" ,K_cF7}, {"K_mF7" ,K_mF7}, {"K_yF7" ,K_yF7},
+ {"K_F8" ,K_F8}, {"K_sF8" ,K_sF8}, {"K_cF8" ,K_cF8}, {"K_mF8" ,K_mF8}, {"K_yF8" ,K_yF8},
+ {"K_F9" ,K_F9}, {"K_sF9" ,K_sF9}, {"K_cF9" ,K_cF9}, {"K_mF9" ,K_mF9}, {"K_yF9" ,K_yF9},
+ {"K_F10" ,K_F10}, {"K_sF10" ,K_sF10}, {"K_cF10" ,K_cF10}, {"K_mF10" ,K_mF10}, {"K_yF10" ,K_yF10},
+ {"K_F11" ,K_F11}, {"K_sF11" ,K_sF11}, {"K_cF11" ,K_cF11}, {"K_mF11" ,K_mF11}, {"K_yF11" ,K_yF11},
+ {"K_F12" ,K_F12}, {"K_sF12" ,K_sF12}, {"K_cF12" ,K_cF12}, {"K_mF12" ,K_mF12}, {"K_yF12" ,K_yF12},
+ {NULL ,0}
+ };
+
+static char* ikey_map[IUP_NUMMAXCODES];
+
+void iupKeyInit(void)
+{
+ int i;
+ memset(ikey_map, 0, IUP_NUMMAXCODES*sizeof(char*));
+ for (i = 0; ikey_map_list[i].name; i++)
+ ikey_map[ikey_map_list[i].code] = ikey_map_list[i].name;
+}
+
+int iupKeyCanCaps(int code)
+{
+ if (code >= K_a && code <= K_z)
+ return 1;
+ if (code == K_ccedilla)
+ return 1;
+ return 0;
+}
+
+char* iupKeyCodeToName(int code)
+{
+ if (code < 0 || code > IUP_NUMMAXCODES)
+ return NULL;
+ return ikey_map[code];
+}
+
+int iupKeyNameToCode(const char *name)
+{
+ int i;
+ for (i = 0; ikey_map_list[i].name; i++)
+ if (iupStrEqual(name, ikey_map_list[i].name))
+ return ikey_map_list[i].code;
+
+ return 0;
+}
+
+void iupKeyForEach(void (*func)(const char *name, int code, void* user_data), void* user_data)
+{
+ int i;
+ for (i = 0; ikey_map_list[i].name; ++i)
+ func(ikey_map_list[i].name, ikey_map_list[i].code, user_data);
+}
+
+int iupKeyCallKeyCb(Ihandle *ih, int code)
+{
+ char* name = iupKeyCodeToName(code);
+ for (; ih; ih = ih->parent)
+ {
+ IFni cb = NULL;
+ if (name)
+ cb = (IFni)IupGetCallback(ih, name);
+ if (!cb)
+ cb = (IFni)IupGetCallback(ih, "K_ANY");
+
+ if (cb)
+ {
+ int ret = cb(ih, code);
+ if (ret != IUP_CONTINUE)
+ return ret;
+ }
+ }
+ return IUP_DEFAULT;
+}
+
+int iupKeyCallKeyPressCb(Ihandle *ih, int code, int press)
+{
+ IFnii cb = (IFnii)IupGetCallback(ih, "KEYPRESS_CB");
+ if (cb) return cb(ih, code, press);
+ return IUP_DEFAULT;
+}
+
+int iupKeyProcessNavigation(Ihandle* ih, int key, int shift)
+{
+ /* this is called after K_ANY is processed,
+ so the user may change its behavior */
+
+ if (key == K_cTAB)
+ {
+ int is_multiline = (iupStrEqual(ih->iclass->name, "multiline") ||
+ (iupStrEqual(ih->iclass->name, "text") && IupGetInt(ih, "MULTILINE")));
+ if (is_multiline)
+ {
+ if (shift)
+ IupPreviousField(ih);
+ else
+ IupNextField(ih);
+ return 0; /* abort default processing */
+ }
+ }
+ else if (key == K_TAB || key == K_sTAB)
+ {
+ int is_multiline = (iupStrEqual(ih->iclass->name, "multiline") ||
+ (iupStrEqual(ih->iclass->name, "text") && IupGetInt(ih, "MULTILINE")));
+ if (!is_multiline)
+ {
+ if (key == K_sTAB)
+ IupPreviousField(ih);
+ else
+ IupNextField(ih);
+ return 0; /* abort default processing */
+ }
+ }
+ else if (key == K_UP || key == K_DOWN)
+ {
+ int is_button = (iupStrEqual(ih->iclass->name, "button") ||
+ iupStrEqual(ih->iclass->name, "toggle"));
+ if (is_button)
+ {
+ if (key == K_UP)
+ iupFocusPrevious(ih);
+ else
+ iupFocusNext(ih);
+ return 0; /* abort default processing */
+ }
+ }
+ else if (key==K_ESC)
+ {
+ Ihandle* bt = IupGetAttributeHandle(IupGetDialog(ih), "DEFAULTESC");
+ if (iupObjectCheck(bt) && iupStrEqual(bt->iclass->name, "button"))
+ iupdrvActivate(bt);
+ return 0; /* abort default processing */
+ }
+ else if (key==K_CR || key==K_cCR)
+ {
+ int is_multiline = (iupStrEqual(ih->iclass->name, "multiline") ||
+ (iupStrEqual(ih->iclass->name, "text") && IupGetInt(ih, "MULTILINE")));
+
+ if ((key==K_CR && !is_multiline) || (key==K_cCR && is_multiline))
+ {
+ Ihandle* bt = IupGetAttributeHandle(IupGetDialog(ih), "DEFAULTENTER");
+ if (iupObjectCheck(bt) && iupStrEqual(bt->iclass->name, "button"))
+ iupdrvActivate(bt);
+ return 0; /* abort default processing */
+ }
+ }
+
+ return 1;
+}
+
diff --git a/iup/src/iup_key.h b/iup/src/iup_key.h
new file mode 100755
index 0000000..37d6c9d
--- /dev/null
+++ b/iup/src/iup_key.h
@@ -0,0 +1,70 @@
+/** \file
+ * \brief Manage keys encoding and decoding.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_KEY_H
+#define __IUP_KEY_H
+
+
+/** \defgroup key Key Coding and Key Callbacks
+ * \par
+ * See \ref iup_key.h
+ * \ingroup cpi */
+
+
+/** Returns the key name from its code.
+ * Returns NULL if code not found.
+ * \ingroup key */
+char *iupKeyCodeToName(int code);
+
+/** Returns the key code from its name.
+ * Returns 0 if name not found.
+ * \ingroup key */
+int iupKeyNameToCode(const char *name);
+
+/** Returns true if the key code can be changed by CAPSLOCK.
+ * \ingroup key */
+int iupKeyCanCaps(int code);
+
+/** Calls a function for each defined key.
+ * \ingroup key */
+void iupKeyForEach(void (*func)(const char *name, int code, void* user_data), void* user_data);
+
+/** Calls the K_ANY or K_* callbacks. Should be called when a keyboard event occoured.
+ * \ingroup key */
+int iupKeyCallKeyCb(Ihandle *ih, int c);
+
+/** Calls the KEYPRESS_CB callback. Should be called when a keyboard event occoured.
+ * \ingroup key */
+int iupKeyCallKeyPressCb(Ihandle *ih, int code, int press);
+
+/** Process Tab, DEFAULTENTER and DEFAULTESC in key press events.
+ * \ingroup key */
+int iupKeyProcessNavigation(Ihandle* ih, int key, int shift);
+
+
+/* Called only from IupOpen. */
+void iupKeyInit(void);
+
+
+#define IUPKEY_STATUS_SIZE 11 /* 10 chars + null */
+#define IUPKEY_STATUS_INIT " " /* 10 spaces */
+#define iupKEYSETSHIFT(_s) (_s[0]='S')
+#define iupKEYSETCONTROL(_s) (_s[1]='C')
+#define iupKEYSETBUTTON1(_s) (_s[2]='1')
+#define iupKEYSETBUTTON2(_s) (_s[3]='2')
+#define iupKEYSETBUTTON3(_s) (_s[4]='3')
+#define iupKEYSETDOUBLE(_s) (_s[5]='D')
+#define iupKEYSETALT(_s) (_s[6]='A')
+#define iupKEYSETSYS(_s) (_s[7]='Y')
+#define iupKEYSETBUTTON4(_s) (_s[8]='4')
+#define iupKEYSETBUTTON5(_s) (_s[9]='5')
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_label.c b/iup/src/iup_label.c
new file mode 100755
index 0000000..33d96af
--- /dev/null
+++ b/iup/src/iup_label.c
@@ -0,0 +1,183 @@
+/** \file
+ * \brief Label Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_label.h"
+#include "iup_image.h"
+
+
+static int iLabelSetSeparatorAttrib(Ihandle* ih, const char* value)
+{
+ /* valid only before map */
+ if (ih->handle)
+ return 0;
+
+ if (value)
+ {
+ if (iupStrEqualNoCase(value, "HORIZONTAL"))
+ ih->expand = IUP_EXPAND_WIDTH;
+ else if (iupStrEqualNoCase(value, "VERTICAL"))
+ ih->expand = IUP_EXPAND_HEIGHT;
+ else
+ return 0;
+ }
+
+ return 1;
+}
+
+static char* iLabelGetSeparatorAttrib(Ihandle* ih)
+{
+ if (ih->handle)
+ {
+ if (ih->data->type == IUP_LABEL_SEP_HORIZ)
+ return "HORIZONTAL";
+ else if (ih->data->type == IUP_LABEL_SEP_VERT)
+ return "VERTICAL";
+ }
+ return NULL;
+}
+
+char* iupLabelGetPaddingAttrib(Ihandle* ih)
+{
+ if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT)
+ {
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+
+/**************************************************************************************/
+
+
+static int iLabelCreateMethod(Ihandle* ih, void** params)
+{
+ if (params && params[0])
+ iupAttribStoreStr(ih, "TITLE", (char*)(params[0]));
+
+ ih->data = iupALLOCCTRLDATA();
+
+ /* used only by the Windows driver */
+ ih->data->vert_alignment = IUP_ALIGN_ACENTER;
+ return IUP_NOERROR;
+}
+
+static void iLabelComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ int natural_w = 0,
+ natural_h = 0,
+ type = ih->data->type;
+ (void)expand; /* unset if not a container */
+
+ if (!ih->handle)
+ {
+ /* if not mapped must initialize the internal values */
+ char* value = iupAttribGet(ih, "SEPARATOR");
+ if (value)
+ {
+ if (iupStrEqualNoCase(value, "HORIZONTAL"))
+ type = IUP_LABEL_SEP_HORIZ;
+ else /* "VERTICAL" */
+ type = IUP_LABEL_SEP_VERT;
+ }
+ else
+ {
+ value = iupAttribGet(ih, "IMAGE");
+ if (value)
+ type = IUP_LABEL_IMAGE;
+ else
+ type = IUP_LABEL_TEXT;
+ }
+ }
+
+ if (type == IUP_LABEL_SEP_HORIZ)
+ natural_h = 2;
+ else if (type == IUP_LABEL_SEP_VERT)
+ natural_w = 2;
+ else if (type == IUP_LABEL_IMAGE)
+ {
+ iupImageGetInfo(iupAttribGet(ih, "IMAGE"), &natural_w, &natural_h, NULL);
+
+ natural_w += 2*ih->data->horiz_padding;
+ natural_h += 2*ih->data->vert_padding;
+ }
+ else /* IUP_LABEL_TEXT */
+ {
+ /* must use IupGetAttribute to check from the native implementation */
+ char* title = IupGetAttribute(ih, "TITLE");
+ char* str = iupStrProcessMnemonic(title, NULL, 0); /* remove & */
+ iupdrvFontGetMultiLineStringSize(ih, str, &natural_w, &natural_h);
+ if (str && str!=title) free(str);
+
+ natural_w += 2*ih->data->horiz_padding;
+ natural_h += 2*ih->data->vert_padding;
+ }
+
+ *w = natural_w;
+ *h = natural_h;
+}
+
+
+/******************************************************************************/
+
+
+Ihandle* IupLabel(const char* title)
+{
+ void *params[2];
+ params[0] = (void*)title;
+ params[1] = NULL;
+ return IupCreatev("label", params);
+}
+
+Iclass* iupLabelGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "label";
+ ic->format = "S"; /* one optional string */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Create = iLabelCreateMethod;
+ ic->ComputeNaturalSize = iLabelComputeNaturalSizeMethod;
+
+ ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Common Callbacks */
+ iupClassRegisterCallback(ic, "MAP_CB", "");
+ iupClassRegisterCallback(ic, "UNMAP_CB", "");
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Visual */
+ iupBaseRegisterVisualAttrib(ic);
+
+ /* IupLabel only */
+ iupClassRegisterAttribute(ic, "SEPARATOR", iLabelGetSeparatorAttrib, iLabelSetSeparatorAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupdrvLabelInitClass(ic);
+
+ return ic;
+}
diff --git a/iup/src/iup_label.h b/iup/src/iup_label.h
new file mode 100755
index 0000000..f50d26f
--- /dev/null
+++ b/iup/src/iup_label.h
@@ -0,0 +1,37 @@
+/** \file
+ * \brief Label Controls Private Declarations
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_LABEL_H
+#define __IUP_LABEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void iupdrvLabelInitClass(Iclass* ic);
+
+char* iupLabelGetPaddingAttrib(Ihandle* ih);
+
+enum{IUP_LABEL_SEP_HORIZ, IUP_LABEL_SEP_VERT, IUP_LABEL_IMAGE, IUP_LABEL_TEXT};
+
+struct _IcontrolData
+{
+ int type, /* the 4 labels possibilities */
+ horiz_padding, vert_padding; /* label margin */
+
+ /* used only by the Windows driver */
+ int horiz_alignment, vert_alignment,
+ text_style;
+ unsigned long fgcolor;
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_layout.c b/iup/src/iup_layout.c
new file mode 100755
index 0000000..b96293c
--- /dev/null
+++ b/iup/src/iup_layout.c
@@ -0,0 +1,273 @@
+/** \file
+ * \brief Abstract Layout Management
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_drv.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_layout.h"
+#include "iup_assert.h"
+
+
+void IupRefresh(Ihandle* ih)
+{
+ Ihandle* dialog;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ dialog = IupGetDialog(ih);
+ if (dialog)
+ {
+ iupLayoutCompute(dialog);
+ if (dialog->handle)
+ iupLayoutUpdate(dialog);
+ }
+}
+
+static void iLayoutDisplayUpdateChildren(Ihandle *ih)
+{
+ Ihandle* child;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ iLayoutDisplayUpdateChildren(child);
+
+ if (child->handle && child->iclass->nativetype != IUP_TYPEVOID)
+ iupdrvDisplayUpdate(child);
+ }
+}
+
+void IupUpdate(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ if (ih->handle && ih->iclass->nativetype != IUP_TYPEVOID)
+ iupdrvDisplayUpdate(ih);
+}
+
+void IupUpdateChildren(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ iLayoutDisplayUpdateChildren(ih);
+}
+
+static void iLayoutDisplayRedrawChildren(Ihandle *ih)
+{
+ Ihandle* child;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ iLayoutDisplayRedrawChildren(child);
+
+ if (child->handle && child->iclass->nativetype != IUP_TYPEVOID)
+ iupdrvDisplayRedraw(child);
+ }
+}
+
+void IupRedraw(Ihandle* ih, int children)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ if (ih->handle && ih->iclass->nativetype != IUP_TYPEVOID)
+ iupdrvDisplayRedraw(ih);
+
+ if (children)
+ iLayoutDisplayRedrawChildren(ih);
+}
+
+void iupLayoutUpdate(Ihandle* ih)
+{
+ Ihandle* child;
+
+ /* update size and position of the native control */
+ iupClassObjectLayoutUpdate(ih);
+
+ /* update its children */
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (child->handle)
+ iupLayoutUpdate(child);
+ }
+}
+
+void iupLayoutCompute(Ihandle* ih)
+{
+ int shrink = iupAttribGetBoolean(ih, "SHRINK");
+
+ /* Compute the natural size for all elements in the dialog,
+ using the minimum visible size and the defined user size.
+ The minimum visible size is the size where all the controls can display
+ all their contents.
+ The defined user size is used to increase the value of the minimum visible size for containers,
+ for standard controls will replace the minimum visible size.
+ So the native size will be the maximum value between
+ minimum visible size and defined user size.
+ Also calculates the expand configuration for each element, but expand is used only in SetChildrenCurrentSize.
+ SEQUENCE: will first calculate the native size for the children, then for the element. */
+ iupBaseComputeNaturalSize(ih);
+
+ /* Set the current size (not reflected in the native element yet) based on
+ the natural size and the expand configuration.
+ If shrink is 0 (default) the current size of containers can be only larger than the natural size,
+ the result will depend on the EXPAND attribute.
+ If shrink is 1 the containers can be resized to sizes smaller than the natural size.
+ SEQUENCE: will first calculate the current size of the element, then for the children. */
+ iupBaseSetCurrentSize(ih, 0, 0, shrink);
+
+ /* Now that the current size is known, set the position of the elements
+ relative to the parent.
+ SEQUENCE: will first set the position of the element, then for the children. */
+ iupBaseSetPosition(ih, 0, 0);
+}
+
+static void iLayoutSetMinMaxSize(Ihandle* ih, int *w, int *h)
+{
+ if (ih->has_minsize)
+ {
+ char* value = iupAttribGet(ih, "MINSIZE");
+ int min_w = 0, min_h = 0; /* MINSIZE default value */
+ iupStrToIntInt(value, &min_w, &min_h, 'x');
+ if (*w < min_w) *w = min_w;
+ if (*h < min_h) *h = min_h;
+ }
+
+ if (ih->has_maxsize)
+ {
+ char* value = iupAttribGet(ih, "MAXSIZE");
+ int max_w = 65535, max_h = 65535; /* MAXSIZE default value */
+ iupStrToIntInt(value, &max_w, &max_h, 'x');
+ if (*w > max_w) *w = max_w;
+ if (*h > max_h) *h = max_h;
+ }
+}
+
+void iupBaseComputeNaturalSize(Ihandle* ih)
+{
+ /* always initialize the natural size using the user size */
+ ih->naturalwidth = ih->userwidth;
+ ih->naturalheight = ih->userheight;
+
+ if (ih->iclass->childtype!=IUP_CHILDNONE || ih->iclass->nativetype == IUP_TYPEDIALOG)
+ {
+ int w=0, h=0, children_expand;
+
+ /* if a container then update the "expand" member from the EXPAND attribute */
+ iupBaseContainerUpdateExpand(ih);
+ children_expand = ih->expand; /* use it as default value */
+
+ iupClassObjectComputeNaturalSize(ih, &w, &h, &children_expand);
+
+ if (ih->iclass->nativetype == IUP_TYPEDIALOG)
+ {
+ /* only update the natural size if user size is not defined. */
+ /* IupDialog is the only container where this must be done */
+ /* if the natural size is bigger than the actual dialog size then
+ the dialog will be resized, if smaller then the dialog remains with the same size. */
+ ih->expand |= children_expand;
+ if (ih->naturalwidth <= 0) ih->naturalwidth = iupMAX(ih->currentwidth, w);
+ if (ih->naturalheight <= 0) ih->naturalheight = iupMAX(ih->currentheight, h);
+ }
+ else
+ {
+ ih->expand &= children_expand; /* combine but only expand where the element can expand */
+ ih->naturalwidth = iupMAX(ih->naturalwidth, w);
+ ih->naturalheight = iupMAX(ih->naturalheight, h);
+
+ /* crop the natural size */
+ iLayoutSetMinMaxSize(ih, &(ih->naturalwidth), &(ih->naturalheight));
+ }
+ }
+ else
+ {
+ /* for non-container only compute if user size is not defined */
+ if (ih->naturalwidth <= 0 || ih->naturalheight <= 0)
+ {
+ int w=0, h=0;
+ iupClassObjectComputeNaturalSize(ih, &w, &h, NULL);
+
+ if (ih->naturalwidth <= 0) ih->naturalwidth = w;
+ if (ih->naturalheight <= 0) ih->naturalheight = h;
+ }
+
+ /* crop the natural size */
+ iLayoutSetMinMaxSize(ih, &(ih->naturalwidth), &(ih->naturalheight));
+ }
+}
+
+void iupBaseSetCurrentSize(Ihandle* ih, int w, int h, int shrink)
+{
+ if (ih->iclass->nativetype == IUP_TYPEDIALOG)
+ {
+ /* w and h parameters here are ignored, because they are always 0 for the dialog. */
+
+ /* current size is zero before map and when reset by the application */
+ /* after that the current size must follow the actual size of the dialog */
+ if (!ih->currentwidth) ih->currentwidth = ih->naturalwidth;
+ if (!ih->currentheight) ih->currentheight = ih->naturalheight;
+
+ if (ih->firstchild)
+ iupClassObjectSetChildrenCurrentSize(ih, shrink);
+ }
+ else
+ {
+ if (ih->iclass->childtype!=IUP_CHILDNONE)
+ {
+ if (shrink)
+ {
+ /* if expand then use the given size, else use the natural size */
+ /* this expand is a combination of the expand defined for the element and its children */
+ ih->currentwidth = (ih->expand & IUP_EXPAND_WIDTH)? w: ih->naturalwidth;
+ ih->currentheight = (ih->expand & IUP_EXPAND_HEIGHT)? h: ih->naturalheight;
+ }
+ else
+ {
+ /* if expand then use the given size (if greater than natural size), else use the natural size */
+ /* this expand is a combination of the expand defined for the element and its children */
+ ih->currentwidth = (ih->expand & IUP_EXPAND_WIDTH)? iupMAX(ih->naturalwidth, w): ih->naturalwidth;
+ ih->currentheight = (ih->expand & IUP_EXPAND_HEIGHT)? iupMAX(ih->naturalheight, h): ih->naturalheight;
+ }
+
+ if (ih->firstchild)
+ iupClassObjectSetChildrenCurrentSize(ih, shrink);
+ }
+ else
+ {
+ /* shrink is only used by containers, usually is 0 */
+ /* for non containers is always 1, so they always can be smaller than the natural size */
+
+ /* if expand use the given size, else use the natural size */
+ /* this expand is the defined for the element */
+ ih->currentwidth = (ih->expand & IUP_EXPAND_WIDTH)? w: ih->naturalwidth;
+ ih->currentheight = (ih->expand & IUP_EXPAND_HEIGHT)? h: ih->naturalheight;
+ }
+
+ /* crop the current size if expanded */
+ if (ih->expand & IUP_EXPAND_WIDTH || ih->expand & IUP_EXPAND_HEIGHT)
+ iLayoutSetMinMaxSize(ih, &(ih->currentwidth), &(ih->currentheight));
+ }
+}
+
+void iupBaseSetPosition(Ihandle* ih, int x, int y)
+{
+ ih->x = x;
+ ih->y = y;
+
+ if (ih->firstchild)
+ iupClassObjectSetChildrenPosition(ih, x, y);
+}
diff --git a/iup/src/iup_layout.h b/iup/src/iup_layout.h
new file mode 100755
index 0000000..a2a0c29
--- /dev/null
+++ b/iup/src/iup_layout.h
@@ -0,0 +1,28 @@
+/** \file
+ * \brief Abstract Layout Management
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_LAYOUT_H
+#define __IUP_LAYOUT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* called from IupMap and IupRefresh */
+void iupLayoutCompute(Ihandle* ih); /* can be called before map */
+void iupLayoutUpdate(Ihandle* ih); /* called only after map */
+
+/* Other functions declared in <iup.h> and implemented here.
+IupRefresh
+*/
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_ledlex.c b/iup/src/iup_ledlex.c
new file mode 100755
index 0000000..3283a43
--- /dev/null
+++ b/iup/src/iup_ledlex.c
@@ -0,0 +1,366 @@
+/** \file
+ * \brief lexical analysis manager for LED
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+#include <errno.h>
+
+#include "iup.h"
+
+#include "iup_class.h"
+#include "iup_ledlex.h"
+#include "iup_str.h"
+#include "iup_table.h"
+#include "iup_register.h"
+
+
+static struct /* lexical variables */
+{
+ const char* filename; /* file name */
+ const char* f;
+ FILE* file; /* file handle */
+ int token; /* lookahead iLexToken */
+ char name[40960]; /* lexical identifier value */
+ float number; /* lexical number value */
+ int line; /* line number */
+ Iclass *ic; /* control class when func is CONTROL_ */
+} ilex = {NULL, NULL, NULL, 0, "", (float) 0.0, 0, NULL};
+
+static int iLexGetChar (void);
+static int iLexToken(int *erro);
+static int iLexCapture (char* dlm);
+static int iLexSkip (char* dlm);
+static int iLexCaptureAttr (void);
+
+int iupLexStart(const char* filename, int is_file) /* initialize lexical analysis */
+{
+ ilex.filename = filename;
+ if (is_file)
+ {
+ ilex.file = fopen (ilex.filename,"r");
+ if (!ilex.file)
+ return iupLexError (IUPLEX_FILENOTOPENED, filename);
+ }
+ else
+ {
+ ilex.f = ilex.filename;
+ ilex.file = NULL;
+ }
+ ilex.line = 0;
+ ilex.line = 1;
+ return iupLexAdvance();
+}
+
+void iupLexClose(void)
+{
+ if (!ilex.file)
+ return;
+ fclose (ilex.file);
+ ilex.file = NULL;
+}
+
+static void iLexUngetc(int c)
+{
+ if (ilex.file)
+ ungetc(c, ilex.file);
+ else
+ {
+ if (*ilex.f != 0)
+ *(char*)ilex.f = (char)c; /* write back to the string ???? */
+ }
+}
+
+static int iLexGetc(void)
+{
+ if (ilex.file)
+ return getc(ilex.file);
+ else
+ {
+ if (*ilex.f != 0)
+ ilex.f++;
+ if (*ilex.f == 0)
+ return EOF;
+ return *ilex.f;
+ }
+}
+
+int iupLexLookAhead(void)
+{
+ return ilex.token;
+}
+
+int iupLexAdvance(void)
+{
+ int erro = 0;
+ ilex.token = iLexToken(&erro);
+ return erro;
+}
+
+int iupLexFollowedBy(int t)
+{
+ return (ilex.token==t);
+}
+
+int iupLexMatch(int t)
+{
+ if (ilex.token==t)
+ return iupLexAdvance();
+ else
+ return iupLexError (IUPLEX_NOTMATCH, ilex.token, t);
+}
+
+
+int iupLexSeenMatch(int t, int *erro)
+{
+ if (ilex.token==t)
+ {
+ *erro = iupLexAdvance();
+ return 1;
+ }
+ else
+ return 0;
+}
+
+unsigned char iupLexByte(void)
+{
+ unsigned int b;
+ sscanf(ilex.name,"%u", &b); /* read as integer to avoid reading number as characters */
+ if (b>255) b = 255;
+ return (unsigned char)b;
+}
+
+int iupLexInt(void)
+{
+ int i;
+ sscanf(ilex.name,"%d", &i);
+ return i;
+}
+
+float iupLexFloat(void)
+{
+ float f;
+ sscanf(ilex.name,"%g", &f);
+ return f;
+}
+
+char* iupLexGetName(void)
+{
+ if (ilex.name)
+ return iupStrDup(ilex.name);
+ else
+ return NULL;
+}
+
+char* iupLexName(void)
+{
+ return ilex.name;
+}
+
+float iupLexGetNumber(void)
+{
+ return ilex.number;
+}
+
+Iclass *iupLexGetClass(void)
+{
+ return ilex.ic;
+}
+
+static int iLexToken(int *erro)
+{
+ for (;;)
+ {
+ int c = iLexGetChar();
+ switch (c)
+ {
+ case 26:
+ case EOF:
+ return IUPLEX_TK_END;
+
+ case ']':
+ return IUPLEX_TK_ENDATTR;
+
+ case '#': /* iLexSkip comment */
+ case '%': /* iLexSkip comment */
+ iLexSkip ("\n\r");
+ continue;
+
+ case ' ': /* ignore whitespace */
+ case '\t':
+ case '\n':
+ case '\r':
+ case '\f':
+ case '\v':
+ continue;
+
+ case '=': /* attribuicao */
+ return IUPLEX_TK_SET;
+
+ case ',':
+ return IUPLEX_TK_COMMA;
+
+ case '(': /* begin parameters */
+ return IUPLEX_TK_BEGP;
+
+ case ')': /* end parameters */
+ return IUPLEX_TK_ENDP;
+
+ case '[': /* attributes */
+ if (iLexCaptureAttr() == IUPLEX_TK_END)
+ {
+ *erro=iupLexError (IUPLEX_NOTENDATTR);
+ return 0;
+ }
+ return IUPLEX_TK_ATTR;
+
+ case '\"': /* string */
+ iLexCapture ("\"");
+ return IUPLEX_TK_STR;
+
+ case '\'': /* string */
+ iLexCapture ("\'");
+ return IUPLEX_TK_STR;
+
+ default:
+ if (c > 32) /* identifier */
+ {
+ char class_name[50];
+ iLexUngetc(c);
+ iLexUngetc(iLexCapture ("=[](), \t\n\r\f\v"));
+ iupStrLower(class_name, iupLexName());
+ ilex.ic = iupRegisterFindClass(class_name);
+ if (ilex.ic)
+ return IUPLEX_TK_FUNC;
+ else
+ return IUPLEX_TK_NAME;
+ }
+ }
+ return c;
+ }
+}
+
+static int iLexCapture (char* dlm)
+{
+ int i=0;
+ int c;
+ do
+ {
+ c = iLexGetChar ();
+ if (i < sizeof(ilex.name))
+ ilex.name[i++] = (char) c;
+ } while ((c > 0) && !strchr (dlm,c));
+ ilex.name[i-1]='\0'; /* discard delimiter */
+ return c; /* return delimiter */
+}
+
+static int iLexCaptureAttr (void)
+{
+ int i=0;
+ int c;
+ int aspas=0;
+ do
+ {
+ c = iLexGetChar ();
+ if (i < sizeof(ilex.name))
+ ilex.name[i++] = (char) c;
+ if (c == '"')
+ ++aspas;
+ } while ((c > 0) && ((aspas & 1) || c != ']'));
+ ilex.name[i-1]='\0'; /* discard delimiter */
+ return c; /* return delimiter */
+}
+
+static int iLexSkip (char* dlm)
+{
+ int c;
+ do
+ {
+ c = iLexGetChar ();
+ } while ((c > 0) && !strchr (dlm,c));
+ return c; /* return delimiter */
+}
+
+static int iLexGetChar (void)
+{
+ int c = iLexGetc(); if (c == '\n') ++ilex.line;
+ if (c == '\\')
+ {
+ c = iLexGetc();
+ if (c == 'n')
+ return '\n';
+ else if (c == '\\')
+ return '\\';
+ }
+ return c;
+}
+
+static char* iupTokenStr(int t)
+{
+ switch (t)
+ {
+ case IUPLEX_TK_END : return "end of file";
+ case IUPLEX_TK_BEGP : return "(";
+ case IUPLEX_TK_ENDP : return ")";
+ case IUPLEX_TK_ATTR : return "[";
+ case IUPLEX_TK_STR : return "string";
+ case IUPLEX_TK_NAME : return "identifier";
+ case IUPLEX_TK_NUMB : return "number";
+ case IUPLEX_TK_SET : return "=";
+ case IUPLEX_TK_COMMA: return ",";
+ case IUPLEX_TK_FUNC : return "function";
+ case IUPLEX_TK_ENDATTR : return "]";
+ }
+ return "";
+}
+
+static char ilex_erromsg[10240];
+
+char *iupLexGetError(void)
+{
+ return ilex_erromsg;
+}
+
+int iupLexError (int n, ...)
+{
+ char msg[10240];
+ va_list va;
+ va_start(va,n);
+ switch (n)
+ {
+ case IUPLEX_FILENOTOPENED:
+ {
+ char *fn=va_arg(va,char *);
+ sprintf (msg, "cannot open file %s", fn);
+ }
+ break;
+ case IUPLEX_NOTMATCH:
+ {
+ int tr=va_arg(va,int); /* iLexToken read */
+ int te=va_arg(va,int); /* iLexToken expected */
+ char *str=iupTokenStr(tr);
+ char *ste=iupTokenStr(te);
+ sprintf (msg, "expected %s but found %s", ste, str);
+ }
+ break;
+ case IUPLEX_NOTENDATTR:
+ {
+ sprintf (msg, "missing ']'");
+ }
+ break;
+ case IUPLEX_PARSEERROR:
+ {
+ char* s=va_arg(va,char*); /* iLexToken expected */
+ sprintf(msg,"%.*s",(int)(sizeof(msg)-1),s);
+ }
+ break;
+ }
+ va_end(va);
+ sprintf(ilex_erromsg, "led(%s): bad input at line %d - %s\n", ilex.filename, ilex.line, msg);
+ return n;
+}
diff --git a/iup/src/iup_ledlex.h b/iup/src/iup_ledlex.h
new file mode 100755
index 0000000..ad79ee1
--- /dev/null
+++ b/iup/src/iup_ledlex.h
@@ -0,0 +1,54 @@
+/** \file
+ * \brief lexical analysis manager for LED.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_LEX_H
+#define __IUP_LEX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TOKENS */
+#define IUPLEX_TK_END -1
+#define IUPLEX_TK_BEGP 1
+#define IUPLEX_TK_ENDP 2
+#define IUPLEX_TK_ATTR 3
+#define IUPLEX_TK_STR 4
+#define IUPLEX_TK_NAME 5
+#define IUPLEX_TK_NUMB 6
+#define IUPLEX_TK_SET 7
+#define IUPLEX_TK_COMMA 8
+#define IUPLEX_TK_FUNC 9
+#define IUPLEX_TK_ENDATTR 10
+
+/* ERRORS */
+#define IUPLEX_FILENOTOPENED 1
+#define IUPLEX_NOTMATCH 2
+#define IUPLEX_NOTENDATTR 3
+#define IUPLEX_PARSEERROR 4
+
+char* iupLexGetError (void);
+int iupLexStart (const char *filename, int is_file);
+void iupLexClose (void);
+int iupLexLookAhead (void);
+int iupLexAdvance (void);
+int iupLexFollowedBy (int t);
+int iupLexMatch (int t);
+int iupLexSeenMatch (int t, int *erro);
+unsigned char iupLexByte (void);
+int iupLexInt (void);
+float iupLexFloat (void);
+char* iupLexGetName (void);
+char* iupLexName (void);
+float iupLexGetNumber (void);
+int iupLexError (int n, ...);
+Iclass* iupLexGetClass (void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_ledparse.c b/iup/src/iup_ledparse.c
new file mode 100755
index 0000000..2878e0b
--- /dev/null
+++ b/iup/src/iup_ledparse.c
@@ -0,0 +1,288 @@
+/** \file
+ * \brief parser for LED.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <memory.h>
+#include <string.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_ledlex.h"
+#include "iup_str.h"
+#include "iup_assert.h"
+
+
+#define IPARSE_SYMBEXIST 1
+#define IPARSE_SYMBNOTDEF 2
+
+static Ihandle* iParseExp (void);
+static Ihandle* iParseFunction (Iclass *ic);
+static int iParseError (int err, char *s);
+
+static int iparse_error = 0;
+#define IPARSE_RETURN_IF_ERRO(_e) {iparse_error=(_e); if (iparse_error) return NULL;}
+#define IPARSE_RETURN_IF_ERRO2(_e, _x) {iparse_error=(_e); if (iparse_error) { if (_x) free(_x); return NULL;} }
+
+
+char* IupLoad(const char *filename)
+{
+ iupASSERT(filename!=NULL);
+ if (!filename)
+ return "invalid file name";
+
+ iparse_error = iupLexStart(filename, 1);
+ if (iparse_error)
+ {
+ iupLexClose();
+ return iupLexGetError();
+ }
+
+ while (iupLexLookAhead() != IUPLEX_TK_END)
+ {
+ iParseExp();
+ if (iparse_error)
+ {
+ iupLexClose();
+ return iupLexGetError();
+ }
+ }
+
+ iupLexClose();
+ return NULL;
+}
+
+char* IupLoadBuffer(const char *buffer)
+{
+ iupASSERT(buffer!=NULL);
+ if (!buffer)
+ return "invalid buffer";
+
+ iparse_error = iupLexStart(buffer, 0);
+ if (iparse_error)
+ {
+ iupLexClose();
+ return iupLexGetError();
+ }
+
+ while (iupLexLookAhead() != IUPLEX_TK_END)
+ {
+ iParseExp();
+ if (iparse_error)
+ {
+ iupLexClose();
+ return iupLexGetError();
+ }
+ }
+
+ iupLexClose();
+ return NULL;
+}
+
+static Ihandle* iParseExp(void)
+{
+ char* nm = NULL;
+ Ihandle* ih = NULL;
+
+ int match = iupLexSeenMatch(IUPLEX_TK_FUNC,&iparse_error);
+ IPARSE_RETURN_IF_ERRO(iparse_error);
+
+ if (match)
+ return iParseFunction(iupLexGetClass());
+
+ if (iupLexLookAhead() == IUPLEX_TK_NAME)
+ {
+ nm = iupLexGetName();
+ IPARSE_RETURN_IF_ERRO(iupLexAdvance());
+ }
+ else
+ {
+ iparse_error = iupLexMatch(IUPLEX_TK_NAME);
+ return NULL; /* force iparse_error */
+ }
+
+ match = iupLexSeenMatch(IUPLEX_TK_SET,&iparse_error);
+ IPARSE_RETURN_IF_ERRO(iparse_error);
+
+ if (match)
+ {
+ ih = iParseExp();
+ IPARSE_RETURN_IF_ERRO(iparse_error);
+ IupSetHandle(nm, ih);
+ }
+ else
+ {
+ ih = IupGetHandle(nm);
+ if (!ih)
+ IPARSE_RETURN_IF_ERRO(iParseError(IPARSE_SYMBNOTDEF,nm));
+ }
+
+ if (nm) free(nm);
+ return ih;
+}
+
+static void* iParseControlParam(char type)
+{
+ switch(type)
+ {
+ case 'a':
+ IPARSE_RETURN_IF_ERRO(iupLexMatch(IUPLEX_TK_NAME));
+ return iupLexGetName();
+
+ case 's':
+ IPARSE_RETURN_IF_ERRO(iupLexMatch(IUPLEX_TK_STR));
+ return iupLexGetName();
+
+ case 'b':
+ case 'c':
+ IPARSE_RETURN_IF_ERRO(iupLexMatch(IUPLEX_TK_NAME));
+ return (void*)(unsigned long)iupLexByte();
+
+ case 'i':
+ case 'j':
+ IPARSE_RETURN_IF_ERRO(iupLexMatch(IUPLEX_TK_NAME));
+ return (void*)(unsigned long)iupLexInt();
+
+ case 'f':
+ IPARSE_RETURN_IF_ERRO(iupLexMatch(IUPLEX_TK_NAME));
+ {
+ float f = iupLexFloat();
+ unsigned long* l = (unsigned long*)&f;
+ return (void*)*l;
+ }
+
+ case 'g':
+ case 'h':
+ {
+ char *new_control = (char*)iParseExp();
+ IPARSE_RETURN_IF_ERRO(iparse_error);
+ return new_control;
+ }
+
+ default:
+ return 0;
+ }
+}
+
+static Ihandle* iParseControl(Iclass *ic)
+{
+ const char *format = ic->format;
+ if (!format || format[0] == 0)
+ return iupObjectCreate(ic, NULL);
+ else
+ {
+ Ihandle *new_control;
+ void** params;
+ int i, alloc_arg, num_arg,
+ num_format = strlen(format);
+
+ num_arg = num_format;
+ alloc_arg = num_arg+20;
+ params = (void**)malloc(sizeof(void*)*alloc_arg);
+
+ for (i = 0; i < num_arg; )
+ {
+ char p_format = (char)tolower(format[i]); /* there is no optional parameters in LED */
+
+ if (i > 0)
+ IPARSE_RETURN_IF_ERRO2(iupLexMatch (IUPLEX_TK_COMMA), params);
+
+ if (p_format != 'j' && /* not array */
+ p_format != 'g' &&
+ p_format != 'c')
+ {
+ params[i] = iParseControlParam(p_format);
+ i++;
+ IPARSE_RETURN_IF_ERRO2(iparse_error, params);
+ }
+ else /* array */
+ {
+ int match;
+ do
+ {
+ if (num_arg == i)
+ {
+ num_arg++;
+ if (num_arg >= alloc_arg)
+ {
+ alloc_arg = num_arg+20;
+ params = realloc(params, sizeof(void*)*alloc_arg);
+ }
+ }
+ params[i] = iParseControlParam(p_format);
+ i++;
+ IPARSE_RETURN_IF_ERRO2(iparse_error, params);
+ match = iupLexSeenMatch(IUPLEX_TK_COMMA,&iparse_error);
+ IPARSE_RETURN_IF_ERRO2(iparse_error, params);
+ } while (match);
+
+ /* after an array of parameters there are no more parameters */
+ break;
+ }
+ }
+
+ params[i] = NULL;
+ new_control = iupObjectCreate(ic, params);
+
+ for (i = 0; params[i] && i<num_format ; i++)
+ {
+ if (format[i] == 'j' ||
+ format[i] == 'g' ||
+ format[i] == 'c')
+ break;
+
+ if (format[i] == 'a' || format[i] == 's' ||
+ format[i] == 'A' || format[i] == 'S')
+ free(params[i]); /* iupLexGetName returned a duplicated string */
+ }
+
+ free(params);
+ return new_control;
+ }
+}
+
+static Ihandle* iParseFunction(Iclass *ic)
+{
+ Ihandle* ih = NULL;
+ char *attr = NULL;
+
+ int match = iupLexSeenMatch(IUPLEX_TK_ATTR,&iparse_error);
+ IPARSE_RETURN_IF_ERRO(iparse_error);
+
+ if (match)
+ attr = (char*)iupStrDup(iupLexName());
+
+ IPARSE_RETURN_IF_ERRO(iupLexMatch(IUPLEX_TK_BEGP));
+
+ ih = iParseControl(ic);
+ IPARSE_RETURN_IF_ERRO(iparse_error);
+
+ if (attr)
+ {
+ IupSetAttributes(ih, attr);
+ free(attr);
+ }
+
+ IPARSE_RETURN_IF_ERRO(iupLexMatch(IUPLEX_TK_ENDP));
+ return ih;
+}
+
+static int iParseError(int err, char *s)
+{
+ static char msg[256];
+ switch (err)
+ {
+ case IPARSE_SYMBEXIST:
+ sprintf(msg, "symbol '%s' %s",s,"already exists");
+ break;
+ case IUPLEX_NOTMATCH:
+ sprintf(msg, "symbol '%s' %s",s,"not defined");
+ break;
+ }
+ return iupLexError(IUPLEX_PARSEERROR,msg);
+}
diff --git a/iup/src/iup_list.c b/iup/src/iup_list.c
new file mode 100755
index 0000000..5965665
--- /dev/null
+++ b/iup/src/iup_list.c
@@ -0,0 +1,711 @@
+/** \file
+ * \brief List Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_assert.h"
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_mask.h"
+#include "iup_list.h"
+
+
+void iupListSingleCallDblClickCallback(Ihandle* ih, IFnis cb, int pos)
+{
+ char *text;
+ char str[30];
+
+ if (pos<=0)
+ return;
+
+ sprintf(str, "%d", pos);
+ text = IupGetAttribute(ih, str);
+
+ if (cb(ih, pos, text) == IUP_CLOSE)
+ IupExitLoop();
+}
+
+static void iListCallActionCallback(Ihandle* ih, IFnsii cb, int pos, int state)
+{
+ char *text;
+ char str[30];
+
+ if (pos<=0)
+ return;
+
+ sprintf(str, "%d", pos);
+ text = IupGetAttribute(ih, str);
+
+ if (cb(ih, text, pos, state) == IUP_CLOSE)
+ IupExitLoop();
+}
+
+void iupListSingleCallActionCallback(Ihandle* ih, IFnsii cb, int pos)
+{
+ char* old_str = iupAttribGet(ih, "_IUPLIST_OLDVALUE");
+ if (old_str)
+ {
+ int oldpos = atoi(old_str);
+ if (oldpos != pos)
+ {
+ iListCallActionCallback(ih, cb, oldpos, 0);
+ iListCallActionCallback(ih, cb, pos, 1);
+ }
+ }
+ else
+ iListCallActionCallback(ih, cb, pos, 1);
+ iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos);
+}
+
+void iupListMultipleCallActionCallback(Ihandle* ih, IFnsii cb, IFns multi_cb, int* pos, int sel_count)
+{
+ int i, count = iupdrvListGetCount(ih);
+
+ char* old_str = iupAttribGet(ih, "_IUPLIST_OLDVALUE");
+ int old_count = old_str? strlen(old_str): 0;
+
+ char* str = iupStrGetMemory(count+1);
+ memset(str, '-', count);
+ str[count]=0;
+ for (i=0; i<sel_count; i++)
+ str[pos[i]] = '+';
+
+ if (old_count != count)
+ {
+ old_count = 0;
+ old_str = NULL;
+ }
+
+ if (multi_cb)
+ {
+ int unchanged = 1;
+ for (i=0; i<count && old_str; i++)
+ {
+ if (str[i] == old_str[i])
+ str[i] = 'x'; /* mark unchanged values */
+ else
+ unchanged = 0;
+ }
+
+ if (old_str && unchanged)
+ return;
+
+ if (multi_cb(ih, str) == IUP_CLOSE)
+ IupExitLoop();
+
+ for (i=0; i<count && old_str; i++)
+ {
+ if (str[i] == 'x')
+ str[i] = old_str[i]; /* restore unchanged values */
+ }
+ }
+ else
+ {
+ /* must simulate the click on each item */
+ for (i=0; i<count; i++)
+ {
+ if (i >= old_count) /* new items, if selected then call the callback */
+ {
+ if (str[i] == '+')
+ iListCallActionCallback(ih, cb, i+1, 1);
+ }
+ else if (str[i] != old_str[i])
+ {
+ if (str[i] == '+')
+ iListCallActionCallback(ih, cb, i+1, 1);
+ else
+ iListCallActionCallback(ih, cb, i+1, 0);
+ }
+ }
+ }
+
+ iupAttribStoreStr(ih, "_IUPLIST_OLDVALUE", str);
+}
+
+int iupListGetPos(Ihandle* ih, const char* name_id)
+{
+ int pos;
+ if (iupStrToInt(name_id, &pos))
+ {
+ int count = iupdrvListGetCount(ih);
+
+ pos--; /* IUP items start at 1 */
+
+ if (pos < 0) return -1;
+ if (pos > count-1) return -1;
+
+ return pos;
+ }
+ return -1;
+}
+
+void iupListSetInitialItems(Ihandle* ih)
+{
+ char str[20], *value;
+ int i = 1;
+ sprintf(str, "%d", i);
+ while ((value = iupAttribGet(ih, str))!=NULL)
+ {
+ iupdrvListAppendItem(ih, value);
+ iupAttribSetStr(ih, str, NULL);
+
+ i++;
+ sprintf(str, "%d", i);
+ }
+}
+
+char* iupListGetSpacingAttrib(Ihandle* ih)
+{
+ if (!ih->data->is_dropdown)
+ {
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%d", ih->data->spacing);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+char* iupListGetPaddingAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+char* iupListGetNCAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ char* str = iupStrGetMemory(100);
+ sprintf(str, "%d", ih->data->nc);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+int iupListSetIdValueAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int pos;
+ if (iupStrToInt(name_id, &pos))
+ {
+ int count = iupdrvListGetCount(ih);
+
+ pos--; /* IUP starts at 1 */
+
+ if (!value)
+ {
+ if (pos >= 0 && pos <= count-1)
+ {
+ if (pos == 0)
+ iupdrvListRemoveAllItems(ih);
+ else
+ {
+ int i = pos;
+ while (i < count)
+ {
+ iupdrvListRemoveItem(ih, pos);
+ i++;
+ }
+ }
+ }
+ }
+ else
+ {
+ if (pos >= 0 && pos <= count-1)
+ {
+ iupdrvListRemoveItem(ih, pos);
+ iupdrvListInsertItem(ih, pos, value);
+ }
+ else if (pos == count)
+ iupdrvListAppendItem(ih, value);
+ }
+ }
+ return 1;
+}
+
+static int iListSetAppendItemAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ if (value)
+ iupdrvListAppendItem(ih, value);
+ return 0;
+}
+
+static int iListSetInsertItemAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ if (value)
+ {
+ int pos = iupListGetPos(ih, name_id);
+ if (pos!=-1)
+ iupdrvListInsertItem(ih, pos, value);
+ }
+ return 0;
+}
+
+static int iListSetRemoveItemAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ if (!value)
+ iupdrvListRemoveAllItems(ih);
+ else
+ {
+ int pos = iupListGetPos(ih, value);
+ if (pos!=-1)
+ iupdrvListRemoveItem(ih, pos);
+ }
+ return 0;
+}
+
+static int iListGetCount(Ihandle* ih)
+{
+ int count;
+ if (ih->handle)
+ count = iupdrvListGetCount(ih);
+ else
+ {
+ char str[20];
+ count = 0;
+ sprintf(str, "%d", count+1);
+ while (iupAttribGet(ih, str))
+ {
+ count++;
+ sprintf(str, "%d", count+1);
+ }
+ }
+ return count;
+}
+
+static char* iListGetCountAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(50);
+ sprintf(str, "%d", iListGetCount(ih));
+ return str;
+}
+
+static int iListSetDropdownAttrib(Ihandle* ih, const char* value)
+{
+ /* valid only before map */
+ if (ih->handle)
+ return 0;
+
+ if (iupStrBoolean(value))
+ {
+ ih->data->is_dropdown = 1;
+ ih->data->is_multiple = 0;
+ }
+ else
+ ih->data->is_dropdown = 0;
+
+ return 0;
+}
+
+static char* iListGetDropdownAttrib(Ihandle* ih)
+{
+ if (ih->data->is_dropdown)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iListSetMultipleAttrib(Ihandle* ih, const char* value)
+{
+ /* valid only before map */
+ if (ih->handle)
+ return 0;
+
+ if (iupStrBoolean(value))
+ {
+ ih->data->is_multiple = 1;
+ ih->data->is_dropdown = 0;
+ ih->data->has_editbox = 0;
+ }
+ else
+ ih->data->is_multiple = 0;
+
+ return 0;
+}
+
+static char* iListGetMultipleAttrib(Ihandle* ih)
+{
+ if (ih->data->is_multiple)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iListSetEditboxAttrib(Ihandle* ih, const char* value)
+{
+ /* valid only before map */
+ if (ih->handle)
+ return 0;
+
+ if (iupStrBoolean(value))
+ {
+ ih->data->has_editbox = 1;
+ ih->data->is_multiple = 0;
+ }
+ else
+ ih->data->has_editbox = 0;
+
+ return 0;
+}
+
+static char* iListGetEditboxAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iListSetScrollbarAttrib(Ihandle* ih, const char* value)
+{
+ /* valid only before map */
+ if (ih->handle)
+ return 0;
+
+ else if (iupStrBoolean(value))
+ ih->data->sb = 1;
+ else
+ ih->data->sb = 0;
+
+ return 0;
+}
+
+static char* iListGetScrollbarAttrib(Ihandle* ih)
+{
+ if (ih->data->sb)
+ return "YES";
+ else
+ return "NO";
+}
+
+static char* iListGetMaskDataAttrib(Ihandle* ih)
+{
+ if (!ih->data->has_editbox)
+ return NULL;
+
+ /* Used only by the OLD iupmask API */
+ return (char*)ih->data->mask;
+}
+
+static int iListSetMaskAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value)
+ {
+ if (ih->data->mask)
+ iupMaskDestroy(ih->data->mask);
+ }
+ else
+ {
+ int casei = iupAttribGetInt(ih, "MASKCASEI");
+ Imask* mask = iupMaskCreate(value,casei);
+ if (mask)
+ {
+ if (ih->data->mask)
+ iupMaskDestroy(ih->data->mask);
+
+ ih->data->mask = mask;
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+static int iListSetMaskIntAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value)
+ {
+ if (ih->data->mask)
+ iupMaskDestroy(ih->data->mask);
+
+ iupAttribSetStr(ih, "MASK", NULL);
+ }
+ else
+ {
+ Imask* mask;
+ int min, max;
+
+ if (iupStrToIntInt(value, &min, &max, ':')!=2)
+ return 0;
+
+ mask = iupMaskCreateInt(min,max);
+
+ if (ih->data->mask)
+ iupMaskDestroy(ih->data->mask);
+
+ ih->data->mask = mask;
+
+ if (min < 0)
+ iupAttribSetStr(ih, "MASK", IUP_MASK_INT);
+ else
+ iupAttribSetStr(ih, "MASK", IUP_MASK_UINT);
+ }
+
+ return 0;
+}
+
+static int iListSetMaskFloatAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value)
+ {
+ if (ih->data->mask)
+ iupMaskDestroy(ih->data->mask);
+
+ iupAttribSetStr(ih, "MASK", NULL);
+ }
+ else
+ {
+ Imask* mask;
+ float min, max;
+
+ if (iupStrToFloatFloat(value, &min, &max, ':')!=2)
+ return 0;
+
+ mask = iupMaskCreateFloat(min,max);
+
+ if (ih->data->mask)
+ iupMaskDestroy(ih->data->mask);
+
+ ih->data->mask = mask;
+
+ if (min < 0)
+ iupAttribSetStr(ih, "MASK", IUP_MASK_FLOAT);
+ else
+ iupAttribSetStr(ih, "MASK", IUP_MASK_UFLOAT);
+ }
+
+ return 0;
+}
+
+
+/*****************************************************************************************/
+
+
+static int iListCreateMethod(Ihandle* ih, void** params)
+{
+ if (params && params[0])
+ iupAttribStoreStr(ih, "ACTION", (char*)(params[0]));
+
+ ih->data = iupALLOCCTRLDATA();
+ ih->data->sb = 1;
+
+ return IUP_NOERROR;
+}
+
+static void iListGetNaturalItemsSize(Ihandle *ih, int *w, int *h)
+{
+ char *value;
+ int visiblecolumns,
+ count = iListGetCount(ih);
+
+ *w = 0;
+ *h = 0;
+
+ iupdrvFontGetCharSize(ih, w, h); /* one line height, and one character width */
+
+ visiblecolumns = iupAttribGetInt(ih, "VISIBLECOLUMNS");
+ if (visiblecolumns)
+ {
+ *w = iupdrvFontGetStringWidth(ih, "WWWWWWWWWW");
+ *w = (visiblecolumns*(*w))/10;
+ }
+ else
+ {
+ int item_w, i;
+ char str[20];
+
+ for (i=1; i<=count; i++)
+ {
+ sprintf(str, "%d", i);
+ value = IupGetAttribute(ih, str); /* must use IupGetAttribute to check the native system */
+ if (value)
+ {
+ item_w = iupdrvFontGetStringWidth(ih, value);
+ if (item_w > *w)
+ *w = item_w;
+ }
+ }
+
+ if (*w == 0) /* default is 5 characters in 1 item */
+ *w = iupdrvFontGetStringWidth(ih, "WWWWW");
+ }
+
+ /* compute height for multiple lines, drodown is just 1 line */
+ if (!ih->data->is_dropdown)
+ {
+ int visiblelines, num_lines, line_size = *h;
+
+ iupdrvListAddItemSpace(ih, h); /* this independs from spacing */
+
+ *h += 2*ih->data->spacing; /* this will be multiplied by the number of lines */
+ *w += 2*ih->data->spacing; /* include also horizontal spacing */
+
+ num_lines = count;
+ if (num_lines == 0) num_lines = 1;
+
+ visiblelines = iupAttribGetInt(ih, "VISIBLELINES");
+ if (visiblelines)
+ num_lines = visiblelines;
+
+ *h = *h * num_lines;
+
+ if (ih->data->has_editbox)
+ *h += line_size;
+ }
+}
+
+static void iListComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ int natural_w, natural_h;
+ int sb_size = iupdrvGetScrollbarSize();
+ (void)expand; /* unset if not a container */
+
+ iListGetNaturalItemsSize(ih, &natural_w, &natural_h);
+
+ /* compute the borders space */
+ iupdrvListAddBorders(ih, &natural_w, &natural_h);
+
+ if (ih->data->is_dropdown)
+ {
+ /* add room for dropdown box */
+ natural_w += sb_size;
+
+ if (natural_h < sb_size)
+ natural_h = sb_size;
+ }
+ else
+ {
+ /* add room for scrollbar */
+ if (ih->data->sb)
+ {
+ natural_h += sb_size;
+ natural_w += sb_size;
+ }
+ }
+
+ if (ih->data->has_editbox)
+ {
+ natural_w += 2*ih->data->horiz_padding;
+ natural_h += 2*ih->data->vert_padding;
+ }
+
+ *w = natural_w;
+ *h = natural_h;
+}
+
+static void iListDestroyMethod(Ihandle* ih)
+{
+ if (ih->data->mask)
+ iupMaskDestroy(ih->data->mask);
+}
+
+
+/******************************************************************************/
+
+
+Ihandle* IupList(const char* action)
+{
+ void *params[2];
+ params[0] = (void*)action;
+ params[1] = NULL;
+ return IupCreatev("list", params);
+}
+
+Iclass* iupListGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "list";
+ ic->format = "A"; /* one optional callback name */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+ ic->has_attrib_id = 1;
+
+ /* Class functions */
+ ic->Create = iListCreateMethod;
+ ic->Destroy = iListDestroyMethod;
+ ic->ComputeNaturalSize = iListComputeNaturalSizeMethod;
+
+ ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Callbacks */
+ iupClassRegisterCallback(ic, "ACTION", "sii");
+ iupClassRegisterCallback(ic, "MULTISELECT_CB", "s");
+ iupClassRegisterCallback(ic, "DROPFILES_CB", "siii");
+ iupClassRegisterCallback(ic, "DROPDOWN_CB", "i");
+ iupClassRegisterCallback(ic, "DBLCLICK_CB", "is");
+ iupClassRegisterCallback(ic, "VALUECHANGED_CB", "");
+
+ iupClassRegisterCallback(ic, "EDIT_CB", "is");
+ iupClassRegisterCallback(ic, "CARET_CB", "iii");
+
+ /* Common Callbacks */
+ iupBaseRegisterCommonCallbacks(ic);
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Visual */
+ iupBaseRegisterVisualAttrib(ic);
+
+ /* IupList only */
+ iupClassRegisterAttribute(ic, "SCROLLBAR", iListGetScrollbarAttrib, iListSetScrollbarAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MULTIPLE", iListGetMultipleAttrib, iListSetMultipleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DROPDOWN", iListGetDropdownAttrib, iListSetDropdownAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "EDITBOX", iListGetEditboxAttrib, iListSetEditboxAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "COUNT", iListGetCountAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "INSERTITEM", NULL, iListSetInsertItemAttrib, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "APPENDITEM", NULL, iListSetAppendItemAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "REMOVEITEM", NULL, iListSetRemoveItemAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AUTOHIDE", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "MASKCASEI", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MASK", NULL, iListSetMaskAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MASKINT", NULL, iListSetMaskIntAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MASKFLOAT", NULL, iListSetMaskFloatAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "OLD_MASK_DATA", iListGetMaskDataAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "VISIBLECOLUMNS", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VISIBLELINES", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupdrvListInitClass(ic);
+
+ return ic;
+}
diff --git a/iup/src/iup_list.h b/iup/src/iup_list.h
new file mode 100755
index 0000000..045116b
--- /dev/null
+++ b/iup/src/iup_list.h
@@ -0,0 +1,53 @@
+/** \file
+ * \brief List Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_LIST_H
+#define __IUP_LIST_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void iupdrvListInitClass(Iclass* ic);
+void iupdrvListAddBorders(Ihandle* ih, int *w, int *h);
+void iupdrvListAddItemSpace(Ihandle* ih, int *h);
+int iupdrvListGetCount(Ihandle* ih);
+void iupdrvListAppendItem(Ihandle* ih, const char* value);
+void iupdrvListInsertItem(Ihandle* ih, int pos, const char* value);
+void iupdrvListRemoveItem(Ihandle* ih, int pos);
+void iupdrvListRemoveAllItems(Ihandle* ih);
+
+int iupListGetPos(Ihandle* ih, const char* name_id);
+int iupListSetIdValueAttrib(Ihandle* ih, const char* name_id, const char* value);
+void iupListSetInitialItems(Ihandle* ih);
+void iupListSingleCallActionCallback(Ihandle* ih, IFnsii cb, int pos);
+void iupListMultipleCallActionCallback(Ihandle* ih, IFnsii cb, IFns multi_cb, int* pos, int sel_count);
+char* iupListGetNCAttrib(Ihandle* ih);
+char* iupListGetPaddingAttrib(Ihandle* ih);
+char* iupListGetSpacingAttrib(Ihandle* ih);
+void iupListSingleCallDblClickCallback(Ihandle* ih, IFnis cb, int pos);
+
+struct _IcontrolData
+{
+ int sb, /* scrollbar configuration, can be changed only before map */
+ nc,
+ spacing,
+ horiz_padding,
+ vert_padding,
+ last_caret_pos,
+ is_multiple,
+ is_dropdown,
+ has_editbox;
+ Imask* mask;
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_mask.c b/iup/src/iup_mask.c
new file mode 100755
index 0000000..f241a22
--- /dev/null
+++ b/iup/src/iup_mask.c
@@ -0,0 +1,146 @@
+/** \file
+ * \brief mask pattern matching
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "iup_maskparse.h"
+#include "iup_mask.h"
+#include "iup_str.h"
+
+
+#define IUP_MASK_FLOAT "[+/-]?(/d+/.?/d*|/./d+)"
+#define IUP_MASK_UFLOAT "(/d+/.?/d*|/./d+)"
+#define IUP_MASK_INT "[+/-]?/d+"
+#define IUP_MASK_UINT "/d+"
+
+struct _Imask
+{
+ char* mask_str;
+ ImaskParsed* fsm;
+ int casei;
+ char type;
+ float fmin,
+ fmax;
+ int imin,
+ imax;
+};
+
+
+int iupMaskCheck(Imask* mask, const char *val)
+{
+ int ret;
+
+ /* empty text or no mask */
+ if (!val || !(*val) || !mask)
+ return 1;
+
+ ret = iupMaskMatch(val,mask->fsm,0,NULL,NULL,NULL,mask->casei);
+ if (ret == IMASK_PARTIALMATCH)
+ return -1;
+ if (ret != (int)strlen(val))
+ return 0;
+
+ switch(mask->type)
+ {
+ case 'I':
+ {
+ int ival = 0;
+ sscanf(val,"%d",&ival);
+ if(ival < mask->imin || ival > mask->imax)
+ return 0;
+ break;
+ }
+ case 'F':
+ {
+ float fval = 0;
+ sscanf(val,"%f",&fval);
+ if(fval < mask->fmin || fval > mask->fmax)
+ return 0;
+ break;
+ }
+ }
+
+ return 1;
+}
+
+Imask* iupMaskCreate(const char* mask_str, int casei)
+{
+ ImaskParsed* fsm;
+ Imask* mask;
+ char* copy_mask_str;
+
+ if (!mask_str)
+ return NULL;
+
+ /* Parse the mask first */
+ copy_mask_str = iupStrDup(mask_str);
+ if (iupMaskParse(copy_mask_str, &fsm) != IMASK_PARSE_OK)
+ {
+ free(copy_mask_str);
+ return NULL;
+ }
+
+ mask = (Imask*)malloc(sizeof(Imask));
+ memset(mask, 0, sizeof(Imask));
+
+ mask->mask_str = copy_mask_str;
+ mask->casei = casei;
+ mask->fsm = fsm;
+
+ return mask;
+}
+
+Imask* iupMaskCreateInt(int min, int max)
+{
+ Imask* mask;
+
+ if (min < 0)
+ mask = iupMaskCreate(IUP_MASK_INT, 0);
+ else
+ mask = iupMaskCreate(IUP_MASK_UINT, 0);
+
+ if (mask)
+ {
+ mask->imin = min;
+ mask->imax = max;
+ mask->type = 'I';
+ }
+
+ return mask;
+}
+
+Imask* iupMaskCreateFloat(float min, float max)
+{
+ Imask* mask;
+
+ if (min < 0)
+ mask = iupMaskCreate(IUP_MASK_FLOAT, 0);
+ else
+ mask = iupMaskCreate(IUP_MASK_UFLOAT, 0);
+
+ if (mask)
+ {
+ mask->fmin = min;
+ mask->fmax = max;
+ mask->type = 'F';
+ }
+
+ return mask;
+}
+
+void iupMaskDestroy(Imask* mask)
+{
+ free(mask->mask_str);
+ free(mask->fsm);
+ free(mask);
+}
+
+char* iupMaskGetStr(Imask* mask)
+{
+ return mask->mask_str;
+}
diff --git a/iup/src/iup_mask.h b/iup/src/iup_mask.h
new file mode 100755
index 0000000..5e87f24
--- /dev/null
+++ b/iup/src/iup_mask.h
@@ -0,0 +1,55 @@
+/** \file
+ * \brief Mask functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_MASK_H
+#define __IUP_MASK_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup mask Text Mask
+ * \par
+ * Used to filter text input in IupText.
+ * \par
+ * See \ref iup_mask.h
+ * \ingroup util */
+
+typedef struct _Imask Imask;
+
+/** Creates a mask given a string. \n
+ * If casei is true, will turn the mask case insensitive.
+ * \ingroup mask */
+Imask* iupMaskCreate(const char* mask_str, int casei);
+
+/** Creates an integer mask with limits.
+ * \ingroup mask */
+Imask* iupMaskCreateInt(int min, int max);
+
+/** Creates a float mask with limits.
+ * \ingroup mask */
+Imask* iupMaskCreateFloat(float min, float max);
+
+/** Destroys the mask.
+ * \ingroup mask */
+void iupMaskDestroy(Imask* mask);
+
+/** Check if the value is valid using the mask to filter it.
+ * Returns 1 if full match, -1 if partial match, and 0 otherwise.
+ * \ingroup mask */
+int iupMaskCheck(Imask* mask, const char *value);
+
+/** Returns the mask string.
+ * \ingroup mask */
+char* iupMaskGetStr(Imask* mask);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_maskmatch.c b/iup/src/iup_maskmatch.c
new file mode 100755
index 0000000..f0aa9fd
--- /dev/null
+++ b/iup/src/iup_maskmatch.c
@@ -0,0 +1,582 @@
+/** \file
+ * \brief iupmask imask_match_functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "iup_maskparse.h"
+#include "iup_maskmatch.h"
+
+
+#define IMASK_MIN_STACK_ELEMENTS 1000
+enum {IMASK_CAPT_OPEN, IMASK_CAPT_CLOSE};
+
+typedef struct _ImaskCapt
+{
+ struct _ImaskCapt* next_one;
+ int type;
+ short which_one;
+ long pos;
+} ImaskCapt;
+
+typedef struct _ImaskMatchVars
+{
+ const char *text;
+ ImaskParsed *fsm;
+ iMaskMatchFunc function;
+ short *tested;
+ void *user;
+} ImaskMatchVars;
+
+
+typedef struct _ImaskStack
+{
+ short *stack;
+ short size;
+} ImaskStack;
+
+
+#define isalphanum(_x) (isalnum((int)(_x)) || ((_x) == '_'))
+
+
+/* match functions corresponding to regular expressions */
+
+static int match_blanks (const char *text, long j)
+{
+ return (((text[j] == '\t') || (text[j] == '\xff') || (text[j] == ' ') ||
+ (text[j] == '\n'))) ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH;
+}
+
+static int match_non_blanks (const char *text, long j)
+{
+ return (!((text[j] == '\t') || (text[j] == '\xff') ||
+ (text[j] == ' ') || (text[j] == '\n')))
+ ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH;
+}
+
+static int match_alpha (const char *text, long j)
+{
+ return (isalpha((int)text[j])) ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH;
+}
+
+static int match_non_alpha (const char *text, long j)
+{
+ return (!isalpha((int)text[j]) && (text[j] != '\0'))
+ ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH;
+}
+
+static int match_digit (const char *text, long j)
+{
+ return (isdigit((int)text[j])) ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH;
+}
+
+static int match_non_digit (const char *text, long j)
+{
+ return (!isdigit((int)text[j]) && (text[j] != '\0'))
+ ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH;
+}
+
+static int match_alphanum (const char *text, long j)
+{
+ return isalphanum (text[j]) ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH;
+}
+
+static int match_non_alphanum (const char *text, long j)
+{
+ return (isalphanum (text[j]) || (text[j] == '\0'))
+ ? IMASK_NO_MATCH : IMASK_NORMAL_MATCH;
+}
+
+static int match_word_boundary (const char *text, long j)
+{
+ if ((j == 0) && isalphanum (text[j]))
+ return IMASK_NO_CHAR_MATCH;
+
+ else if (isalphanum (text[j - 1]) && !isalphanum (text[j]))
+ return IMASK_NO_CHAR_MATCH;
+
+ else if (isalphanum (text[j]) && !isalphanum (text[j - 1]))
+ return IMASK_NO_CHAR_MATCH;
+
+ return IMASK_NO_MATCH;
+
+}
+
+static ImaskMatchFunc imask_match_functions[] =
+{
+ {'w', &match_alphanum},
+ {'W', &match_non_alphanum},
+ {'d', &match_digit},
+ {'D', &match_non_digit},
+ {'S', &match_non_blanks},
+ {'s', &match_blanks},
+ {'b', &match_word_boundary},
+ {'l', &match_alpha},
+ {'L', &match_non_alpha},
+ {'\0', NULL}
+};
+
+ImaskMatchFunc* iupMaskMatchGetFuncs(void)
+{
+ return imask_match_functions;
+}
+
+static void iMaskMatchCaptureResult (ImaskMatchVars * vars, ImaskCapt * capture)
+{
+ ImaskCapt *next = NULL;
+
+ while (capture != NULL)
+ {
+ ImaskCapt *cap = capture->next_one;
+
+ capture->next_one = next;
+ next = capture;
+ capture = cap;
+ }
+
+ capture = next;
+ next = NULL;
+
+ while (capture != NULL)
+ {
+ if (capture->type == IMASK_CAPT_OPEN)
+ {
+ ImaskCapt *cap = capture->next_one;
+
+ capture->next_one = next;
+ next = capture;
+ capture = cap;
+ }
+ else
+ {
+ if (capture->pos >= next->pos)
+ (*vars->function)((char)capture->which_one, next->pos, capture->pos, vars->text, vars->user);
+
+ next = next->next_one;
+ capture = capture->next_one;
+ }
+ }
+}
+
+static long iMaskMatchRecursive (ImaskMatchVars * vars, long j, int state, ImaskCapt * capture, int size)
+{
+ switch (vars->fsm[state].command)
+ {
+ case IMASK_NULL_CMD:
+ if (vars->fsm[state].next1 == 0) /*se chegou ao fim da maquina de estados */
+ {
+ if (vars->function != NULL)
+ iMaskMatchCaptureResult (vars, capture); /* guarda capturas */
+
+ return j;
+ }
+
+ /* verifica o estado atual ja foi avaliado antes */
+ {
+ int count;
+ for (count = 0; count < size; count++)
+ if (vars->tested[count] == state)
+ return IMASK_NOMATCH;
+ }
+
+ vars->tested[size++] = (short)state; /* indicada que o estado foi testado */
+
+ /* se houverem dois ramos, chama a funcao recursivamente,
+ retornando com o primeiro que completar a maquina */
+
+ if (vars->fsm[state].next1 != vars->fsm[state].next2)
+ {
+ long a;
+
+ a = iMaskMatchRecursive (vars, j, vars->fsm[state].next2, capture, size);
+
+ if (a != IMASK_NOMATCH) /* se deu match */
+ return a;
+
+ a = iMaskMatchRecursive (vars, j, vars->fsm[state].next1, capture, size);
+
+ return a;
+ }
+ break;
+
+ case IMASK_CAP_OPEN_CMD:
+ {
+ long a;
+ ImaskCapt new_cap;
+
+ new_cap.next_one = capture;
+ new_cap.type = IMASK_CAPT_OPEN;
+ new_cap.pos = j;
+ new_cap.which_one = vars->fsm[state].ch;
+
+ a = iMaskMatchRecursive (vars, j, vars->fsm[state].next1, &new_cap, size);
+
+ return a;
+ }
+ break;
+
+ case IMASK_CAP_CLOSE_CMD:
+ {
+ long a;
+ ImaskCapt new_cap;
+
+ new_cap.next_one = capture;
+ new_cap.type = IMASK_CAPT_CLOSE;
+ new_cap.pos = j - 1;
+ new_cap.which_one = vars->fsm[state].ch;
+
+ a = iMaskMatchRecursive (vars, j, vars->fsm[state].next1, &new_cap, size);
+
+ return a;
+ }
+
+ case IMASK_CLASS_CMD:
+ {
+ int temp, found = 0, negate;
+
+ temp = vars->fsm[state].next1;
+ negate = vars->fsm[state].next2;
+ state++;
+
+ while (vars->fsm[state].command != IMASK_NULL_CMD)
+ {
+ if (vars->fsm[state].command == IMASK_CLASS_CMD_RANGE)
+ {
+ if ((vars->text[j] >= vars->fsm[state].ch) &&
+ (vars->text[j] <= vars->fsm[state].next1))
+ {
+ found = 1;
+ break;
+ }
+ }
+
+ else if ((vars->fsm[state].command == IMASK_CLASS_CMD_CHAR) &&
+ (vars->text[j] == vars->fsm[state].ch))
+ {
+ found = 1;
+ break;
+ };
+ state++;
+ }
+
+ if (found ^ negate)
+ {
+ if (vars->text[j] == '\0')
+ return IMASK_NOMATCH;
+ j++;
+ vars->tested = &vars->tested[size + 1];
+ size = 0;
+ return iMaskMatchRecursive (vars, j, temp, capture, size);
+ }
+ else
+ return IMASK_NOMATCH;
+ }
+
+ case IMASK_CHAR_CMD:
+ if (vars->text[j] != vars->fsm[state].ch)
+ return IMASK_NOMATCH;
+ j++;
+ vars->tested = &vars->tested[size + 1];
+ size = 0;
+ break;
+
+ case IMASK_ANY_CMD:
+ if ((vars->text[j] == '\0') || (vars->text[j] == '\n'))
+ return IMASK_NOMATCH;
+ j++;
+ vars->tested = &vars->tested[size + 1];
+ size = 0;
+ break;
+
+ case IMASK_SPC_CMD:
+ {
+ long a;
+
+ a = (*imask_match_functions[(int) vars->fsm[state].ch].function) (vars->text, j);
+
+ switch (a)
+ {
+ case IMASK_NO_MATCH:
+ return IMASK_NOMATCH;
+
+ case IMASK_NORMAL_MATCH:
+ j++;
+ vars->tested = &vars->tested[size + 1];
+ size = 0;
+ break;
+
+ case IMASK_NO_CHAR_MATCH:; /* does nothing */
+ }
+ }
+ break;
+
+ case IMASK_BEGIN_CMD:
+ if (!((vars->text[j - 1] == '\n') || (j == 0)))
+ return IMASK_NOMATCH;
+
+ break;
+
+ case IMASK_END_CMD:
+ if (!((vars->text[j] == '\n') || (vars->text[j] == '\0')))
+ return IMASK_NOMATCH;
+
+ break;
+ }
+
+ return iMaskMatchRecursive (vars, j, vars->fsm[state].next1, capture, size);
+}
+
+static int iMaskInStack (ImaskStack * stack, int state)
+{
+ int a;
+ for (a = 0; a < stack->size; a++)
+ if (stack->stack[a] == state)
+ return 1;
+
+ return 0;
+}
+
+static void iMaskNewStack (ImaskStack * new_stack, short *stack)
+{
+ new_stack->size = 0;
+ new_stack->stack = stack;
+}
+
+static void iMaskPushStack (ImaskStack * stack, int value)
+{
+ stack->stack[stack->size++] = (short)value;
+}
+
+static void iMaskMoveStack (ImaskStack * dest, ImaskStack * source)
+{
+ short *temp = dest->stack;
+ dest->stack = source->stack;
+ source->stack = temp;
+
+ dest->size = source->size;
+ source->size = 0;
+}
+
+/* non recursive */
+static long iMaskMatchLocal (const char *text, ImaskParsed * fsm, long start, char *addchar, int casei)
+{
+ int finished = IMASK_NOMATCH;
+ ImaskStack now, next;
+ short a1[IMASK_MIN_STACK_ELEMENTS];
+ short a2[IMASK_MIN_STACK_ELEMENTS];
+ int state;
+ int j = 0;
+ int pos;
+
+ if (addchar) addchar[0] = 0;
+
+ j = start;
+
+ iMaskNewStack(&now, a1);
+ iMaskNewStack(&next, a2);
+
+ iMaskPushStack (&now, fsm[0].next1);
+
+ for (;;)
+ {
+ for (pos = 0; pos < now.size; pos++)
+ {
+ state = now.stack[pos];
+
+ if (state == 0)
+ {
+ finished = j - start;
+ continue;
+ }
+
+ if (fsm[state].command == IMASK_NULL_CMD)
+ {
+ if(!iMaskInStack (&now, fsm[state].next2))
+ iMaskPushStack (&now, fsm[state].next2);
+
+ if(fsm[state].next1 != fsm[state].next2)
+ {
+ if(!iMaskInStack (&now, fsm[state].next1))
+ iMaskPushStack (&now, fsm[state].next1);
+ }
+ }
+ else if (text[j] == '\0'); /* ignore \0 */
+ else if (((fsm[state].command == IMASK_CHAR_CMD) &&
+ ((!casei && fsm[state].ch == text[j]) ||
+ (casei && tolower(fsm[state].ch) == tolower(text[j]))
+ )
+ ) ||
+ ((fsm[state].command == IMASK_ANY_CMD) &&
+ (text[j] != '\n')
+ )
+ )
+ iMaskPushStack (&next, fsm[state].next1);
+ else if (fsm[state].command == IMASK_SPC_CMD)
+ {
+ int ret;
+
+ ret = (*(imask_match_functions[(int) fsm[state].ch].function))(text, j);
+ switch (ret)
+ {
+ case IMASK_NO_MATCH:
+ break;
+
+ case IMASK_NORMAL_MATCH:
+ iMaskPushStack (&next, fsm[state].next1);
+ break;
+
+ case IMASK_NO_CHAR_MATCH:
+ iMaskPushStack (&now, fsm[state].next1);
+ break;
+ }
+ }
+ else if (fsm[state].command == IMASK_CLASS_CMD)
+ {
+ int temp, found = 0, negate;
+
+ temp = fsm[state].next1;
+ negate = fsm[state].next2;
+ state++;
+
+ while (fsm[state].command != IMASK_NULL_CMD)
+ {
+ if (fsm[state].command == IMASK_CLASS_CMD_RANGE)
+ {
+ if((!casei && (text[j]>=fsm[state].ch) &&
+ (text[j]<=fsm[state].next1)
+ ) ||
+ (casei && (tolower(text[j])>=tolower(fsm[state].ch)) &&
+ (tolower(text[j])<=tolower(fsm[state].next1))
+ )
+ )
+ {
+ found = 1;
+ break;
+ }
+ }
+ else if ((fsm[state].command == IMASK_CLASS_CMD_CHAR) &&
+ ((!casei && text[j] == fsm[state].ch) ||
+ (casei && tolower(text[j]) == tolower(fsm[state].ch))
+ )
+ )
+ {
+ found = 1;
+ break;
+ }
+ state++;
+ }
+
+ if(found ^ negate)
+ {
+ iMaskPushStack (&next, temp);
+ state = temp;
+ }
+ }
+ else if (fsm[state].command == IMASK_BEGIN_CMD)
+ {
+ if (text[j - 1] == '\n' || j == 0)
+ iMaskPushStack (&now, fsm[state].next1);
+ }
+ else if (fsm[state].command == IMASK_END_CMD)
+ {
+ if (text[j] == '\n' || text[j] == '\0')
+ iMaskPushStack (&now, fsm[state].next1);
+ }
+ }
+
+ if (text[j] == '\0')
+ {
+ if(next.size == 0 && finished == j)
+ {
+ return finished;
+ }
+ else if(addchar)
+ {
+ int pos;
+
+ for (pos = 0; pos < now.size; pos++)
+ {
+ state = now.stack[pos];
+ if (fsm[state].command == IMASK_CHAR_CMD)
+ {
+ iMaskPushStack (&next, state);
+ }
+ else if (fsm[state].command != IMASK_NULL_CMD)
+ {
+ next.size = 0;
+ break;
+ }
+ else
+ {
+ if (!iMaskInStack (&now, fsm[state].next2))
+ iMaskPushStack (&now, fsm[state].next2);
+
+ if (fsm[state].next1 != fsm[state].next2)
+ {
+ if (!iMaskInStack (&now, fsm[state].next1))
+ iMaskPushStack (&now, fsm[state].next1);
+ }
+ }
+ }
+
+ iMaskMoveStack (&now, &next);
+
+ if (now.size == 1)
+ {
+ int inx=0;
+ state = now.stack[0];
+ while(fsm[state].next1 == fsm[state].next2)
+ {
+ if(fsm[state].command == IMASK_CHAR_CMD)
+ addchar[inx++] = fsm[state].ch;
+ else if(fsm[state].command != IMASK_NULL_CMD)
+ break;
+
+ state = fsm[state].next1;
+ }
+ addchar[inx]=0;
+ }
+ }
+ return IMASK_PARTIALMATCH;
+ }
+
+ j++;
+
+ if (next.size == 0)
+ {
+ if (finished > IMASK_NOMATCH)
+ return finished;
+
+ return IMASK_NOMATCH;
+ }
+
+ iMaskMoveStack (&now, &next);
+ }
+}
+
+int iupMaskMatch (const char *text, ImaskParsed * fsm, long start, iMaskMatchFunc function, void *user, char *addchar, int icase)
+{
+ long ret;
+ short tested[10000]; /* to be eliminated */
+ ImaskMatchVars vars;
+
+ /* use recursive only for standard capture */
+
+ if (fsm[0].ch == IMASK_NOCAPTURE)
+ return iMaskMatchLocal (text, fsm, start, addchar, icase);
+
+ vars.text = text;
+ vars.fsm = fsm;
+ vars.tested = tested;
+ vars.function = function;
+ vars.user = user;
+
+ ret = iMaskMatchRecursive (&vars, start, fsm[0].next1, NULL, 0);
+
+ return (int)((ret >= start) ? ret - start : ret);
+}
diff --git a/iup/src/iup_maskmatch.h b/iup/src/iup_maskmatch.h
new file mode 100755
index 0000000..d0c7918
--- /dev/null
+++ b/iup/src/iup_maskmatch.h
@@ -0,0 +1,62 @@
+/** \file
+ * \brief Mask match private definitions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_MASKMATCH_H
+#define __IUP_MASKMATCH_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+enum
+{
+ IMASK_NULL_CMD=1,
+ IMASK_ANY_CMD=2,
+ IMASK_CHAR_CMD=3,
+ IMASK_SPC_CMD=4,
+ IMASK_CLASS_CMD=5,
+ IMASK_BEGIN_CMD=6,
+ IMASK_END_CMD=7,
+ IMASK_CAP_OPEN_CMD=71,
+ IMASK_CAP_CLOSE_CMD=72,
+ IMASK_NEG_OPEN_CMD=81,
+ IMASK_NEG_CLOSE_CMD=82
+};
+
+enum
+{
+ IMASK_CLASS_CMD_RANGE=50,
+ IMASK_CLASS_CMD_CHAR=51
+};
+
+enum
+{
+ IMASK_NORMAL_MATCH,
+ IMASK_NO_CHAR_MATCH,
+ IMASK_NO_MATCH
+};
+
+enum
+{
+ IMASK_CAPTURE=100,
+ IMASK_NOCAPTURE=101
+};
+
+typedef struct _ImaskMatchFunc
+{
+ char ch;
+ int (*function) (const char *, long);
+} ImaskMatchFunc;
+
+ImaskMatchFunc* iupMaskMatchGetFuncs(void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_maskparse.c b/iup/src/iup_maskparse.c
new file mode 100755
index 0000000..859d951
--- /dev/null
+++ b/iup/src/iup_maskparse.c
@@ -0,0 +1,547 @@
+/** \file
+ * \brief imask parser
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <setjmp.h>
+
+#include "iup_maskparse.h"
+#include "iup_maskmatch.h"
+
+/*
+ * Table of characters (customizaveis atraves de iupMaskSetChar)
+ */
+
+static char *imask_parse_chars = "|*+()[]-^/.?^${}~";
+/* 01234567890123456 */
+
+#define OR_CH imask_parse_chars[0] /* OR CHaracter */
+#define CL_CH imask_parse_chars[1] /* CLosure CHaracter */
+#define OOM_CH imask_parse_chars[2] /* One Or More CHaracter */
+#define OPGR_CH imask_parse_chars[3] /* OPen GRoup CHaracter */
+#define CLGR_CH imask_parse_chars[4] /* CLose GRoup CHaracter */
+#define OPCL_CH imask_parse_chars[5] /* OPen CLass CHaracter */
+#define CLCL_CH imask_parse_chars[6] /* CLose CLass CHaracter */
+#define SEPCL_CH imask_parse_chars[7] /* SEParate CLass CHaracter */
+#define NEGCL_CH imask_parse_chars[8] /* NEGation CLass CHaracter */
+#define SPC_CH imask_parse_chars[9] /* SPeCial function CHaracter */
+#define ANY_CH imask_parse_chars[10] /* ANY CHaracter */
+#define ONE_CH imask_parse_chars[11] /* ONE or no CHaracter */
+#define BEGIN_CH imask_parse_chars[12] /* BEGINning of a line CHaracter*/
+#define END_CH imask_parse_chars[13] /* END of a line CHaracter */
+#define CAP_OPEN_CH imask_parse_chars[14] /* CAPture OPEN CHaracter */
+#define CAP_CLOSE_CH imask_parse_chars[15] /* CAPture CLOSE CHaracter */
+#define NEG_CH imask_parse_chars[16] /* NEGation CHaracter */
+
+#define SPC2_CH '\\' /* SPeCial 2 CHaracter */
+
+#define isvalid(c) (c != 0 && c != OR_CH && c != OPGR_CH && c != CLGR_CH &&\
+ c != CL_CH && c != OPCL_CH && c != CLCL_CH &&\
+ c != CAP_OPEN_CH && c != CAP_CLOSE_CH && c != OOM_CH)
+
+#define STATE_BLOCK 30
+
+typedef struct _ImaskParseVars
+{
+ const char *string;
+ int state, j, num_states;
+ ImaskParsed *fsm;
+ short capture[30];
+ short size;
+ char nextcap;
+ jmp_buf env;
+} ImaskParseVars;
+
+static int iMaskParseExpression (ImaskParseVars * vars);
+static int iMaskParseTerm (ImaskParseVars * vars);
+static int iMaskParseFactor (ImaskParseVars * vars);
+static void iMaskParseError (ImaskParseVars *vars);
+static void iMaskParseNewState (ImaskParseVars * vars);
+static void iMaskParseSetState (ImaskParseVars * vars, int state, char ch, char command, int next1, int next2);
+
+int iupMaskSetChar (int char_number, char new_char)
+{
+ if ((char_number < 0) || (char_number > (int)strlen(imask_parse_chars)))
+ return 0;
+
+ imask_parse_chars[char_number] = new_char;
+
+ return 1;
+}
+
+ /*
+ * Funcao de interface, recebe padrao e retorna array contendo as finite
+ * state machines (fsm) construidas a partir do padrao
+ */
+
+int iupMaskParse(const char *text, ImaskParsed ** fsm)
+{
+ int t;
+ ImaskParseVars vars;
+
+ /* inicializacao das variaveis */
+
+ vars.state = 1;
+ vars.j = 0;
+ vars.num_states = 0;
+ vars.size = 0;
+ vars.nextcap = 0;
+ vars.string = text;
+
+ if ((vars.fsm = (ImaskParsed *) malloc (STATE_BLOCK * sizeof (ImaskParsed))) == NULL)
+ return IMASK_MEM_ERROR;
+
+ vars.num_states = STATE_BLOCK;
+
+ /* a principio, nao ha captura. Se ocorrer uma, ele e setado
+ para IMASK_CAPTURE */
+
+ vars.fsm[0].ch = IMASK_NOCAPTURE;
+
+ if (setjmp (vars.env) == 0)
+ t = iMaskParseExpression (&vars);
+
+ else
+ {
+ free (vars.fsm);
+ return IMASK_PARSE_ERROR;
+ }
+
+ /* seta os estados inicial e final, guardando no inicial
+ (fsm[0].next1) o tamanho da maquina */
+
+ iMaskParseSetState (&vars, 0, vars.fsm[0].ch, IMASK_NULL_CMD, t, vars.state + 1);
+ iMaskParseSetState (&vars, vars.state, 0, IMASK_NULL_CMD, 0, 0);
+
+ *fsm = vars.fsm;
+
+ return IMASK_PARSE_OK;
+}
+
+static int iMaskParseExpression (ImaskParseVars * vars)
+{
+ int r, t1;
+ int last_state = vars->state - 1;
+
+ t1 = iMaskParseTerm (vars);
+ r = t1;
+
+ if (vars->string[vars->j] == OR_CH)
+ {
+ int t2 = vars->state;
+ int t3;
+
+ r = t2;
+
+ vars->j++;
+ iMaskParseNewState (vars);
+
+ t3 = iMaskParseExpression (vars); /* pega o 2o ramo do OR */
+
+ /* faz o primeiro state antes do OR apontar para o state de entrada
+ * do OR */
+
+ if (vars->fsm[last_state].next1 == t1)
+ vars->fsm[last_state].next1 = t2;
+
+ if (vars->fsm[last_state].next2 == t1)
+ vars->fsm[last_state].next2 = t2;
+
+ /* faz o ultimo state do primeiro ramo do OR apontar para o
+ * state de saida do OR */
+
+ if (vars->fsm[t2 - 1].next1 == t2)
+ vars->fsm[t2 - 1].next1 = vars->state;
+
+ if (vars->fsm[t2 - 1].next2 == t2)
+ vars->fsm[t2 - 1].next2 = vars->state;
+
+ iMaskParseSetState (vars, t2, 0, IMASK_NULL_CMD, t1, t3);
+ iMaskParseSetState (vars, vars->state, 0, IMASK_NULL_CMD, vars->state + 1,
+ vars->state + 1);
+
+ iMaskParseNewState (vars);
+ }
+ return r;
+}
+
+static int iMaskParseTerm (ImaskParseVars * vars)
+{
+ int r;
+
+ r = iMaskParseFactor (vars);
+
+ if ((vars->string[vars->j] == OPGR_CH) ||
+ (isvalid (vars->string[vars->j])) ||
+ (vars->string[vars->j] == OPCL_CH) ||
+ (vars->string[vars->j] == CAP_OPEN_CH) ||
+ (vars->string[vars->j] == NEG_CH))
+ iMaskParseTerm (vars);
+
+ if (!((vars->string[vars->j] == OR_CH) ||
+ (vars->string[vars->j] == CLGR_CH) ||
+ (vars->string[vars->j] == '\0') ||
+ (vars->string[vars->j] == CAP_CLOSE_CH)))
+ iMaskParseError (vars);
+
+ return r;
+}
+
+static int iMaskParseFactor (ImaskParseVars * vars)
+{
+ int r, t1, t2 = 0;
+
+ t1 = vars->state;
+
+ if (vars->string[vars->j] == OPGR_CH)
+ {
+ vars->j++;
+ t2 = iMaskParseExpression (vars);
+
+ if (vars->string[vars->j] == CLGR_CH)
+ vars->j++;
+ else
+ iMaskParseError (vars);
+ }
+
+ else if (vars->string[vars->j] == CAP_OPEN_CH)
+ {
+ vars->fsm[0].ch = IMASK_CAPTURE;
+ iMaskParseSetState (vars, vars->state, vars->nextcap,
+ IMASK_CAP_OPEN_CMD, vars->state + 1, vars->state + 1);
+ t2 = vars->state;
+ iMaskParseNewState (vars);
+ vars->capture[++vars->size] = vars->nextcap++;
+ vars->j++;
+
+ iMaskParseExpression (vars);
+
+ if (vars->string[vars->j] == CAP_CLOSE_CH)
+ {
+ iMaskParseSetState (vars, vars->state, (char)vars->capture[vars->size--],
+ IMASK_CAP_CLOSE_CMD, vars->state + 1, vars->state + 1);
+
+ iMaskParseNewState (vars);
+ vars->j++;
+ }
+ else
+ iMaskParseError (vars);
+
+ }
+
+ else if (vars->string[vars->j] == ANY_CH)
+ {
+ iMaskParseSetState (vars, vars->state, 1, IMASK_ANY_CMD, vars->state + 1, vars->state + 1);
+ t2 = vars->state;
+ vars->j++;
+ iMaskParseNewState (vars);
+ }
+
+ else if (vars->string[vars->j] == NEG_CH)
+ {
+ int t6;
+ t2 = vars->state;
+ vars->j++;
+ iMaskParseNewState (vars);
+ t6 = iMaskParseFactor (vars);
+ iMaskParseSetState (vars, t2, 1, IMASK_NEG_OPEN_CMD, t6, vars->state);
+ iMaskParseSetState (vars, vars->state, 1, IMASK_NEG_CLOSE_CMD, vars->state + 1, vars->state + 1);
+ iMaskParseNewState (vars);
+ }
+
+ else if (vars->string[vars->j] == BEGIN_CH)
+ {
+ iMaskParseSetState (vars, vars->state, 1, IMASK_BEGIN_CMD, vars->state + 1,
+ vars->state + 1);
+ t2 = vars->state;
+ vars->j++;
+ iMaskParseNewState (vars);
+ }
+ else if (vars->string[vars->j] == END_CH)
+ {
+ iMaskParseSetState (vars, vars->state, 1, IMASK_END_CMD, vars->state + 1,
+ vars->state + 1);
+ t2 = vars->state;
+ vars->j++;
+ iMaskParseNewState (vars);
+ }
+
+ else if (isvalid (vars->string[vars->j]) && (vars->string[vars->j]
+ != SPC_CH) && (vars->string[vars->j] != ANY_CH))
+ {
+ iMaskParseSetState (vars, vars->state, vars->string[vars->j],
+ IMASK_CHAR_CMD, vars->state + 1, vars->state + 1);
+ t2 = vars->state;
+ vars->j++;
+ iMaskParseNewState (vars);
+ }
+
+ else if (vars->string[vars->j] == OPCL_CH)
+ {
+ vars->j++;
+ iMaskParseSetState (vars, vars->state, 0, IMASK_CLASS_CMD, 0, 0);
+
+ if (vars->string[vars->j] == NEGCL_CH)
+ {
+ vars->fsm[vars->state].next2 = 1;
+ vars->j++;
+ }
+
+ t2 = vars->state;
+ iMaskParseNewState (vars);
+
+ if (vars->string[vars->j] == SEPCL_CH)
+ iMaskParseError (vars);
+
+ while ((vars->string[vars->j] != CLCL_CH) && (vars->string[vars->j] != '\n')
+ && (vars->string[vars->j] != '\0'))
+ {
+ if (vars->string[vars->j] == SPC_CH)
+ {
+ char temp;
+
+ vars->j++;
+ switch (vars->string[vars->j])
+ {
+ case 'n':
+ temp = '\n';
+ break;
+
+ case 't':
+ temp = '\t';
+ break;
+
+ case 'e':
+ temp = 27;
+ break;
+
+ default:
+ temp = vars->string[vars->j];
+ }
+ iMaskParseSetState (vars, vars->state, temp, IMASK_CLASS_CMD_CHAR, 0, 0);
+ vars->j++;
+ iMaskParseNewState (vars);
+ }
+ else if (vars->string[vars->j] == SEPCL_CH)
+ {
+ char temp = 0;
+
+ vars->j++;
+
+ if (vars->string[vars->j] == SPC_CH)
+ {
+ vars->j++;
+ switch (vars->string[vars->j])
+ {
+ case 'n':
+ temp = '\n';
+ break;
+
+ case 't':
+ temp = '\t';
+ break;
+
+ case 'e':
+ temp = 27;
+ break;
+
+ default:
+ temp = vars->string[vars->j];
+ }
+ }
+ else if (vars->string[vars->j] != CLCL_CH)
+ temp = vars->string[vars->j];
+
+ else
+ iMaskParseError (vars);
+
+ iMaskParseSetState (vars, vars->state - 1, vars->fsm[vars->state - 1].ch,
+ IMASK_CLASS_CMD_RANGE, temp, 0);
+ vars->j++;
+ }
+ else if (vars->string[vars->j] == BEGIN_CH)
+ {
+ iMaskParseSetState (vars, vars->state, 1, IMASK_BEGIN_CMD, vars->state + 1, vars->state + 1);
+ t2 = vars->state;
+ vars->j++;
+ iMaskParseNewState (vars);
+ }
+ else if (vars->string[vars->j] == END_CH)
+ {
+ iMaskParseSetState (vars, vars->state, 1, IMASK_END_CMD, vars->state + 1, vars->state + 1);
+ t2 = vars->state;
+ vars->j++;
+ iMaskParseNewState (vars);
+ }
+
+ else
+ {
+ iMaskParseSetState (vars, vars->state, vars->string[vars->j], IMASK_CLASS_CMD_CHAR, 0, 0);
+ vars->j++;
+ iMaskParseNewState (vars);
+ }
+
+ }
+ if (vars->string[vars->j] != CLCL_CH)
+ iMaskParseError (vars);
+ iMaskParseSetState (vars, vars->state, 0, IMASK_NULL_CMD, vars->state + 1, vars->state + 1);
+ vars->fsm[t2].next1 = vars->state;
+ vars->j++;
+ iMaskParseNewState (vars);
+
+ }
+
+ else if (vars->string[vars->j] == SPC_CH)
+ {
+ int loop1 = 0;
+ ImaskMatchFunc* match_functions = iupMaskMatchGetFuncs();
+
+ vars->j++;
+
+ while (match_functions[loop1].ch != '\0' &&
+ match_functions[loop1].ch != vars->string[vars->j])
+ loop1++;
+
+ if (match_functions[loop1].ch == '\0')
+ {
+ int temp;
+
+ switch (vars->string[vars->j])
+ {
+ case 'n':
+ temp = '\n';
+ break;
+
+ case 't':
+ temp = '\t';
+ break;
+
+ case 'e':
+ temp = 27;
+ break;
+
+ case 'x':
+ vars->j++;
+ sscanf (&vars->string[vars->j], "%2x", &temp);
+ vars->j++;
+ break;
+
+ case 'o':
+ vars->j++;
+ sscanf (&vars->string[vars->j], "%3o", &temp);
+ vars->j += 2;
+ break;
+
+ default:
+ if (isdigit((int)vars->string[vars->j]))
+ {
+ sscanf (&vars->string[vars->j], "%3d", &temp);
+ if (temp > 255)
+ {
+ iMaskParseError (vars);
+ }
+ vars->j += 2;
+ }
+ else
+ temp = vars->string[vars->j];
+ }
+ iMaskParseSetState (vars, vars->state, (char)temp, IMASK_CHAR_CMD, vars->state + 1, vars->state + 1);
+ }
+
+ else
+ {
+ iMaskParseSetState (vars, vars->state, (char)loop1, IMASK_SPC_CMD, vars->state + 1, vars->state + 1);
+ }
+
+ t2 = vars->state;
+ vars->j++;
+ iMaskParseNewState (vars);
+ }
+ else
+ iMaskParseError (vars);
+
+ if (vars->string[vars->j] == CL_CH)
+ {
+ iMaskParseSetState (vars, vars->state, 0, IMASK_NULL_CMD, vars->state + 1, t2);
+ r = vars->state;
+
+ if (vars->fsm[t1 - 1].next1 == t1)
+ vars->fsm[t1 - 1].next1 = vars->state;
+
+ if (vars->fsm[t1 - 1].next2 == t1)
+ vars->fsm[t1 - 1].next2 = vars->state;
+
+ vars->j++;
+ iMaskParseNewState (vars);
+ }
+
+ else if (vars->string[vars->j] == ONE_CH)
+ {
+ iMaskParseSetState (vars, vars->state, 0, IMASK_NULL_CMD, vars->state + 1, t2);
+ r = vars->state;
+
+ if (vars->fsm[t1 - 1].next1 == t1)
+ vars->fsm[t1 - 1].next1 = vars->state;
+
+ if (vars->fsm[t1 - 1].next2 == t1)
+ vars->fsm[t1 - 1].next2 = vars->state;
+
+ if (vars->fsm[vars->state - 1].next1 == vars->state)
+ vars->fsm[vars->state - 1].next1 = vars->state + 1;
+
+ if (vars->fsm[vars->state - 1].next2 == vars->state)
+ vars->fsm[vars->state - 1].next2 = vars->state + 1;
+
+ vars->j++;
+ iMaskParseNewState (vars);
+
+ iMaskParseSetState (vars, vars->state, 0, IMASK_NULL_CMD, vars->state + 1, vars->state + 1);
+
+ iMaskParseNewState (vars);
+ }
+ else if (vars->string[vars->j] == OOM_CH)
+ {
+ iMaskParseSetState (vars, vars->state, 0, IMASK_NULL_CMD, vars->state + 1, t2);
+ r = t2;
+
+ vars->j++;
+
+ iMaskParseNewState (vars);
+
+ }
+ else
+ r = t2;
+
+ return r;
+}
+
+static void iMaskParseError (ImaskParseVars * vars)
+{
+ longjmp (vars->env, 1);
+}
+
+static void iMaskParseNewState (ImaskParseVars * vars)
+{
+
+ if (vars->state >= vars->num_states - 1)
+ {
+ ImaskParsed *new_fsm = (ImaskParsed*) realloc (vars->fsm, (vars->num_states + STATE_BLOCK) * sizeof (ImaskParsed));
+ vars->fsm = new_fsm;
+ vars->num_states += STATE_BLOCK;
+ }
+
+ vars->state++;
+}
+
+static void iMaskParseSetState (ImaskParseVars * vars, int state, char ch, char command, int next1, int next2)
+{
+ vars->fsm[state].ch = ch;
+ vars->fsm[state].command = command;
+ vars->fsm[state].next1 = next1;
+ vars->fsm[state].next2 = next2;
+}
diff --git a/iup/src/iup_maskparse.h b/iup/src/iup_maskparse.h
new file mode 100755
index 0000000..a12a7fa
--- /dev/null
+++ b/iup/src/iup_maskparse.h
@@ -0,0 +1,46 @@
+/** \file
+ * \brief Mask internal functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_MASKPARSE_H
+#define __IUP_MASKPARSE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef struct _ImaskParsed
+{
+ char ch;
+ int command;
+ int next1;
+ int next2;
+} ImaskParsed;
+
+typedef int (*iMaskMatchFunc) (char which_one, long next_pos, long capture_pos, const char *text, void* user_data);
+
+/* Parse the mask and if it is ok create and returns the internal structure. */
+int iupMaskParse(const char* mask, ImaskParsed** imk);
+
+/* Do the pattern matching on the given text. */
+int iupMaskMatch(const char* text, ImaskParsed* imk, long start, iMaskMatchFunc mask_func, void* user_data, char *addchar, int icase);
+
+/* Change a control character. */
+int iupMaskSetChar(int char_number, char new_char);
+
+/* iupMaskMatch return codes */
+#define IMASK_PARSE_OK 0 /* No error */
+#define IMASK_NOMATCH -1 /* no match */
+#define IMASK_MEM_ERROR -2 /* memory error */
+#define IMASK_PARSE_ERROR -3 /* parser error */
+#define IMASK_PARTIALMATCH -4 /* partial match */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_menu.c b/iup/src/iup_menu.c
new file mode 100755
index 0000000..7e62744
--- /dev/null
+++ b/iup/src/iup_menu.c
@@ -0,0 +1,364 @@
+/** \file
+ * \brief Menu Resources.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <memory.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_assert.h"
+#include "iup_key.h"
+#include "iup_stdcontrols.h"
+#include "iup_drvinfo.h"
+#include "iup_menu.h"
+
+
+struct _IcontrolData
+{
+ int child_id; /* serial number used by child controls */
+};
+
+static Ihandle* iMenuGetTopMenu(Ihandle* ih)
+{
+ for (; ih->parent; ih = ih->parent)
+ ; /* empty*/
+ return ih;
+}
+
+int iupMenuGetChildId(Ihandle* ih)
+{
+ Ihandle* dlg = IupGetDialog(ih);
+ if (dlg)
+ return iupDialogGetChildId(ih);
+ else
+ {
+ int id;
+ ih = iMenuGetTopMenu(ih);
+ if (!ih) return -1;
+ id = ih->data->child_id;
+ if (id == 0) id = 100; /* initial number */
+ ih->data->child_id = id+1;
+ return id;
+ }
+}
+
+char* iupMenuGetChildIdStr(Ihandle* ih)
+{
+ Ihandle* dlg = IupGetDialog(ih);
+ if (dlg)
+ return iupDialogGetChildIdStr(ih);
+ else
+ {
+ char *str = iupStrGetMemory(50);
+ Ihandle* dialog = iMenuGetTopMenu(ih);
+ sprintf(str, "iup-%s-%d", ih->iclass->name, dialog->data->child_id);
+ return str;
+ }
+}
+
+int iupMenuIsMenuBar(Ihandle* ih)
+{
+ if (ih->parent && ih->parent->iclass->nativetype == IUP_TYPEDIALOG)
+ return 1;
+ else
+ return 0;
+}
+
+static void iMenuAdjustPos(int *x, int *y)
+{
+ int cursor_x = 0, cursor_y = 0;
+ int screen_width = 0, screen_height = 0;
+
+ if (*x == IUP_CENTER || *y == IUP_CENTER ||
+ *x == IUP_RIGHT || *y == IUP_RIGHT ||
+ *x == IUP_CENTERPARENT || *y == IUP_CENTERPARENT)
+ iupdrvGetScreenSize(&screen_width, &screen_height);
+
+ if (*x == IUP_MOUSEPOS || *y == IUP_MOUSEPOS)
+ iupdrvGetCursorPos(&cursor_x, &cursor_y);
+
+ switch (*x)
+ {
+ case IUP_CENTER:
+ *x = screen_width/2;
+ break;
+ case IUP_LEFT:
+ *x = 0;
+ break;
+ case IUP_RIGHT:
+ *x = screen_width;
+ break;
+ case IUP_MOUSEPOS:
+ *x = cursor_x;
+ break;
+ }
+
+ switch (*y)
+ {
+ case IUP_CENTER:
+ *y = screen_height/2;
+ break;
+ case IUP_LEFT:
+ *y = 0;
+ break;
+ case IUP_RIGHT:
+ *y = screen_height;
+ break;
+ case IUP_MOUSEPOS:
+ *y = cursor_y;
+ break;
+ }
+}
+
+char* iupMenuProcessTitle(Ihandle* ih, const char* title)
+{
+ int keychar;
+ char* str;
+
+ char* key = iupAttribGet(ih, "KEY");
+ if (!key) return (char*)title;
+
+ keychar = iupKeyNameToCode(key);
+ if (!keychar) return (char*)title;
+
+ str = strchr(title, keychar);
+ if (str)
+ {
+ int len = strlen(title);
+ char *new_title = malloc(len+1+1);
+ int pos = str-title;
+ memcpy(new_title, title, pos);
+ new_title[pos] = '&';
+ memcpy(new_title+pos+1, title+pos, len-pos+1);
+ return new_title;
+ }
+
+ return (char*)title;
+}
+
+int iupMenuPopup(Ihandle* ih, int x, int y)
+{
+ iMenuAdjustPos(&x, &y);
+ return iupdrvMenuPopup(ih, x, y);
+}
+
+
+/******************************************************************/
+
+
+static int iItemCreateMethod(Ihandle* ih, void** params)
+{
+ if (params)
+ {
+ if (params[0]) iupAttribStoreStr(ih, "TITLE", (char*)(params[0]));
+ if (params[1]) iupAttribStoreStr(ih, "ACTION", (char*)(params[1]));
+ }
+ return IUP_NOERROR;
+}
+
+static int iSubmenuCreateMethod(Ihandle* ih, void** params)
+{
+ if (params)
+ {
+ if (params[0]) iupAttribStoreStr(ih, "TITLE", (char*)(params[0]));
+ if (params[1])
+ {
+ Ihandle* child = (Ihandle*)(params[1]);
+ if (child->iclass->nativetype == IUP_TYPEMENU)
+ IupAppend(ih, child);
+ }
+ }
+ return IUP_NOERROR;
+}
+
+static int iMenuCreateMethod(Ihandle* ih, void** params)
+{
+ ih->data = iupALLOCCTRLDATA();
+
+ if (params)
+ {
+ Ihandle** iparams = (Ihandle**)params;
+ while (*iparams)
+ {
+ Ihandle* child = (Ihandle*)(*iparams);
+ if (child->iclass->nativetype == IUP_TYPEMENU)
+ IupAppend(ih, child);
+ iparams++;
+ }
+ }
+
+ return IUP_NOERROR;
+}
+
+
+/******************************************************************************************/
+
+
+Iclass* iupSeparatorGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "separator";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPEMENU;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ /* Common */
+ iupClassRegisterAttribute(ic, "WID", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "NAME", NULL, iupBaseSetNameAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupdrvSeparatorInitClass(ic);
+
+ return ic;
+}
+
+Iclass* iupItemGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "item";
+ ic->format = "SA"; /* one optional string and one optional callback name */
+ ic->nativetype = IUP_TYPEMENU;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iItemCreateMethod;
+
+ /* Callbacks */
+ iupClassRegisterCallback(ic, "HIGHLIGHT_CB", "");
+ iupClassRegisterCallback(ic, "ACTION", "");
+
+ /* Common Callbacks */
+ iupClassRegisterCallback(ic, "MAP_CB", "");
+ iupClassRegisterCallback(ic, "UNMAP_CB", "");
+ iupClassRegisterCallback(ic, "HELP_CB", "");
+
+ /* Common */
+ iupClassRegisterAttribute(ic, "WID", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "NAME", NULL, iupBaseSetNameAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "AUTOTOGGLE", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "KEY", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupdrvItemInitClass(ic);
+
+ return ic;
+}
+
+Iclass* iupSubmenuGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "submenu";
+ ic->format = "SH"; /* one string and one Ihandle (both optional) */
+ ic->nativetype = IUP_TYPEMENU;
+ ic->childtype = IUP_CHILD_ONE;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iSubmenuCreateMethod;
+
+ /* Callbacks */
+ iupClassRegisterCallback(ic, "HIGHLIGHT_CB", "");
+
+ /* Common Callbacks */
+ iupClassRegisterCallback(ic, "MAP_CB", "");
+ iupClassRegisterCallback(ic, "UNMAP_CB", "");
+
+ /* Common */
+ iupClassRegisterAttribute(ic, "WID", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "NAME", NULL, iupBaseSetNameAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "KEY", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupdrvSubmenuInitClass(ic);
+
+ return ic;
+}
+
+Iclass* iupMenuGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "menu";
+ ic->format = "g"; /* (Ihandle**) */
+ ic->nativetype = IUP_TYPEMENU;
+ ic->childtype = IUP_CHILDMANY;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iMenuCreateMethod;
+
+ /* Callbacks */
+ iupClassRegisterCallback(ic, "OPEN_CB", "");
+ iupClassRegisterCallback(ic, "MENUCLOSE_CB", "");
+
+ /* Common Callbacks */
+ iupClassRegisterCallback(ic, "MAP_CB", "");
+ iupClassRegisterCallback(ic, "UNMAP_CB", "");
+
+ /* Common */
+ iupClassRegisterAttribute(ic, "WID", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "NAME", NULL, iupBaseSetNameAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "RADIO", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupdrvMenuInitClass(ic);
+
+ return ic;
+}
+
+/************************************************************************/
+
+Ihandle* IupItem(const char* title, const char* action)
+{
+ void *params[2];
+ params[0] = (void*)title;
+ params[1] = (void*)action;
+ return IupCreatev("item", params);
+}
+
+Ihandle* IupSubmenu(const char* title, Ihandle* child)
+{
+ void *params[2];
+ params[0] = (void*)title;
+ params[1] = (void*)child;
+ return IupCreatev("submenu", params);
+}
+
+Ihandle *IupMenuv(Ihandle **children)
+{
+ return IupCreatev("menu", (void**)children);
+}
+
+Ihandle *IupMenu(Ihandle *child, ...)
+{
+ Ihandle **children;
+ Ihandle *ih;
+
+ va_list arglist;
+ va_start(arglist, child);
+ children = (Ihandle **)iupObjectGetParamList(child, arglist);
+ va_end(arglist);
+
+ ih = IupCreatev("menu", (void**)children);
+ free(children);
+
+ return ih;
+}
+
+Ihandle* IupSeparator(void)
+{
+ return IupCreate("separator");
+}
diff --git a/iup/src/iup_menu.h b/iup/src/iup_menu.h
new file mode 100755
index 0000000..f1eb164
--- /dev/null
+++ b/iup/src/iup_menu.h
@@ -0,0 +1,35 @@
+/** \file
+ * \brief IUP Menu Class
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_MENU_H
+#define __IUP_MENU_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Shows a popup menu in the given position.
+* Must return IUP_ERROR or IUP_NOERROR.
+* Called only from IupPopup.
+*/
+int iupMenuPopup(Ihandle* ih, int x, int y);
+
+int iupdrvMenuPopup(Ihandle* ih, int x, int y);
+void iupdrvSeparatorInitClass(Iclass* ic);
+void iupdrvItemInitClass(Iclass* ic);
+void iupdrvMenuInitClass(Iclass* ic);
+void iupdrvSubmenuInitClass(Iclass* ic);
+
+char* iupMenuProcessTitle(Ihandle* ih, const char* title);
+int iupMenuGetChildId(Ihandle* ih);
+char* iupMenuGetChildIdStr(Ihandle* ih);
+int iupMenuIsMenuBar(Ihandle* ih);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_messagedlg.c b/iup/src/iup_messagedlg.c
new file mode 100755
index 0000000..816e740
--- /dev/null
+++ b/iup/src/iup_messagedlg.c
@@ -0,0 +1,70 @@
+/** \file
+ * \brief IupMessageDlg class
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+#include <limits.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_stdcontrols.h"
+
+
+Ihandle* IupMessageDlg(void)
+{
+ return IupCreate("messagedlg");
+}
+
+Iclass* iupMessageDlgGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupDialogGetClass());
+
+ ic->name = "messagedlg";
+ ic->nativetype = IUP_TYPEDIALOG;
+ ic->is_interactive = 1;
+
+ /* reset not used native dialog methods */
+ ic->parent->LayoutUpdate = NULL;
+ ic->parent->SetChildrenPosition = NULL;
+ ic->parent->Map = NULL;
+ ic->parent->UnMap = NULL;
+
+ iupdrvMessageDlgInitClass(ic);
+
+ /* only the default values */
+ iupClassRegisterAttribute(ic, "DIALOGTYPE", NULL, NULL, IUPAF_SAMEASSYSTEM, "MESSAGE", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "BUTTONS", NULL, NULL, IUPAF_SAMEASSYSTEM, "OK", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "BUTTONDEFAULT", NULL, NULL, IUPAF_SAMEASSYSTEM, "1", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "BUTTONRESPONSE", NULL, NULL, IUPAF_SAMEASSYSTEM, "1", IUPAF_NO_INHERIT);
+
+ return ic;
+}
+
+void IupMessage(const char* title, const char* message)
+{
+ Ihandle* dlg = IupCreate("messagedlg");
+
+ IupSetAttribute(dlg, "TITLE", (char*)title);
+ IupSetAttribute(dlg, "VALUE", (char*)message);
+ IupSetAttribute(dlg, "PARENTDIALOG", IupGetGlobal("PARENTDIALOG"));
+
+ IupPopup(dlg, IUP_CENTER, IUP_CENTER);
+ IupDestroy(dlg);
+}
+
+void IupMessagef(const char *title, const char *format, ...)
+{
+ static char message[SHRT_MAX];
+ va_list arglist;
+ va_start(arglist, format);
+ vsprintf(message, format, arglist);
+ va_end (arglist);
+ IupMessage(title, message);
+}
diff --git a/iup/src/iup_names.c b/iup/src/iup_names.c
new file mode 100755
index 0000000..9ec01a6
--- /dev/null
+++ b/iup/src/iup_names.c
@@ -0,0 +1,193 @@
+/** \file
+ * \brief Ihandle <-> Name table manager.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+#include "iup_table.h"
+#include "iup_names.h"
+#include "iup_object.h"
+#include "iup_class.h"
+#include "iup_assert.h"
+#include "iup_str.h"
+
+
+static Itable *inames_strtable = NULL; /* table indexed by name containing Ihandle* address */
+static Itable *inames_ihtable = NULL; /* table indexed by Ihandle* address containing names */
+
+void iupNamesDestroyHandles(void)
+{
+ char *name;
+ Ihandle** ih_array, *ih;
+ int count, i = 0;
+
+ count = iupTableCount(inames_strtable);
+ if (!count)
+ return;
+
+ ih_array = (Ihandle**)malloc(count * sizeof(Ihandle*));
+
+ /* store the names before updating so we can remove elements in the loop */
+ name = iupTableFirst(inames_strtable);
+ while (name)
+ {
+ ih = (Ihandle*)iupTableGetCurr(inames_strtable);
+ if (iupObjectCheck(ih))
+ {
+ ih_array[i] = ih;
+ i++;
+ }
+ name = iupTableNext(inames_strtable);
+ }
+
+ count = i;
+ for (i = 0; i < count; i++)
+ {
+ if (iupObjectCheck(ih_array[i]))
+ IupDestroy(ih_array[i]);
+ }
+
+ free(ih_array);
+}
+
+void iupNamesInit(void)
+{
+ inames_strtable = iupTableCreate(IUPTABLE_STRINGINDEXED);
+ inames_ihtable = iupTableCreate(IUPTABLE_POINTERINDEXED);
+}
+
+void iupNamesFinish(void)
+{
+ iupTableDestroy(inames_strtable);
+ inames_strtable = NULL;
+
+ iupTableDestroy(inames_ihtable);
+ inames_ihtable = NULL;
+}
+
+void iupRemoveAllNames(Ihandle* ih)
+{
+ char *name;
+ Ihandle *cur_ih;
+
+ name = iupTableFirst(inames_strtable);
+ while (name)
+ {
+ cur_ih = (Ihandle*)iupTableGetCurr(inames_strtable);
+ if (iupObjectCheck(cur_ih) && cur_ih == ih)
+ iupTableRemoveCurr(inames_strtable);
+
+ name = iupTableNext(inames_strtable);
+ }
+
+ iupTableRemove(inames_ihtable, (char*)ih);
+}
+
+Ihandle *IupGetHandle(const char *name)
+{
+ if (!name) /* no iupASSERT needed here */
+ return NULL;
+ return (Ihandle*)iupTableGet (inames_strtable, name);
+}
+
+Ihandle* IupSetHandle(const char *name, Ihandle *ih)
+{
+ Ihandle *old_ih;
+
+ iupASSERT(name!=NULL);
+ if (!name)
+ return NULL;
+
+ old_ih = iupTableGet(inames_strtable, name);
+ if (ih != NULL)
+ {
+ iupTableSet(inames_strtable, name, ih, IUPTABLE_POINTER);
+ iupTableSet(inames_ihtable, (char*)ih, (char*)name, IUPTABLE_STRING); /* keep only the last name set */
+ }
+ else
+ {
+ ih = iupTableGet(inames_strtable, name);
+ iupTableRemove(inames_strtable, name);
+ if (ih)
+ {
+ char* cur_name = iupTableGet(inames_ihtable, (char*)ih);
+ if (iupStrEqualNoCase(cur_name, name))
+ iupTableRemove(inames_ihtable, (char*)ih);
+ }
+ }
+ return old_ih;
+}
+
+int IupGetAllNames(char** names, int n)
+{
+ int i = 0;
+ char* name;
+
+ if (!names || !n)
+ return iupTableCount(inames_strtable);
+
+ name = iupTableFirst(inames_strtable);
+ while (name)
+ {
+ names[i] = name;
+ i++;
+ if (i == n)
+ break;
+
+ name = iupTableNext(inames_strtable);
+ }
+ return i;
+}
+
+static int iNamesCountDialogs(void)
+{
+ int i = 0;
+ char* name = iupTableFirst(inames_strtable);
+ while (name)
+ {
+ Ihandle* dlg = (Ihandle*)iupTableGetCurr(inames_strtable);
+ if (iupObjectCheck(dlg) && dlg->iclass->nativetype == IUP_TYPEDIALOG)
+ i++;
+
+ name = iupTableNext(inames_strtable);
+ }
+ return i;
+}
+
+int IupGetAllDialogs(char** names, int n)
+{
+ int i = 0;
+ char* name;
+
+ if (!names || !n)
+ return iNamesCountDialogs();
+
+ name = iupTableFirst(inames_strtable);
+ while (name)
+ {
+ Ihandle* dlg = (Ihandle*)iupTableGetCurr(inames_strtable);
+ if (iupObjectCheck(dlg) && dlg->iclass->nativetype == IUP_TYPEDIALOG)
+ {
+ names[i] = name;
+ i++;
+ if (i == n)
+ break;
+ }
+
+ name = iupTableNext(inames_strtable);
+ }
+ return i;
+}
+
+char* IupGetName(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return NULL;
+ return iupTableGet(inames_ihtable, (char*)ih);
+}
diff --git a/iup/src/iup_names.h b/iup/src/iup_names.h
new file mode 100755
index 0000000..9d3adc7
--- /dev/null
+++ b/iup/src/iup_names.h
@@ -0,0 +1,34 @@
+/** \file
+ * \brief Ihandle <-> Name table manager.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_NAMES_H
+#define __IUP_NAMES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* called only in IupOpen and IupClose */
+void iupNamesInit(void);
+void iupNamesFinish(void);
+void iupNamesDestroyHandles(void);
+
+/* called from IupDestroy */
+void iupRemoveAllNames(Ihandle* ih);
+
+/* Other functions declared in <iup.h> and implemented here.
+IupGetName
+IupGetAllDialogs
+IupGetAllNames
+IupSetHandle
+IupGetHandle
+*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_normalizer.c b/iup/src/iup_normalizer.c
new file mode 100755
index 0000000..7f7a5ff
--- /dev/null
+++ b/iup/src/iup_normalizer.c
@@ -0,0 +1,188 @@
+/** \file
+ * \brief Normalizer Element.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_array.h"
+#include "iup_stdcontrols.h"
+
+
+enum {NORMALIZE_NONE, NORMALIZE_WIDTH, NORMALIZE_HEIGHT};
+
+struct _IcontrolData
+{
+ Iarray* ih_array;
+};
+
+int iupNormalizeGetNormalizeSize(const char* value)
+{
+ if (!value)
+ return NORMALIZE_NONE;
+ if (iupStrEqualNoCase(value, "HORIZONTAL"))
+ return NORMALIZE_WIDTH;
+ if (iupStrEqualNoCase(value, "VERTICAL"))
+ return NORMALIZE_HEIGHT;
+ if (iupStrEqualNoCase(value, "BOTH"))
+ return NORMALIZE_WIDTH|NORMALIZE_HEIGHT;
+ return NORMALIZE_NONE;
+}
+
+char* iupNormalizeGetNormalizeSizeStr(int normalize)
+{
+ char* int2str[] = {"NONE", "HORIZONTAL", "VERTICAL", "BOTH"};
+ return int2str[normalize];
+}
+
+void iupNormalizeSizeBoxChild(Ihandle *ih, int normalize, int children_natural_maxwidth, int children_natural_maxheight)
+{
+ /* It is called from Vbox and Hbox ComputeNaturalSizeMethod after the natural size is calculated */
+ /* reset the natural width and/or height */
+ Ihandle* child;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (!child->is_floating && (child->iclass->nativetype != IUP_TYPEVOID || !iupStrEqual(child->iclass->name, "fill")))
+ {
+ if (normalize & NORMALIZE_WIDTH)
+ child->naturalwidth = children_natural_maxwidth;
+ if (normalize & NORMALIZE_HEIGHT)
+ child->naturalheight = children_natural_maxheight;
+ }
+ }
+}
+
+static int iNormalizerSetNormalizeAttrib(Ihandle* ih, const char* value)
+{
+ int i, count;
+ Ihandle** ih_list;
+ Ihandle* ih_control;
+ int natural_maxwidth = 0, natural_maxheight = 0;
+ int normalize = iupNormalizeGetNormalizeSize(value);
+ if (!normalize)
+ return 1;
+
+ count = iupArrayCount(ih->data->ih_array);
+ ih_list = (Ihandle**)iupArrayGetData(ih->data->ih_array);
+
+ for (i = 0; i < count; i++)
+ {
+ ih_control = ih_list[i];
+ iupBaseComputeNaturalSize(ih_control);
+ natural_maxwidth = iupMAX(natural_maxwidth, ih_control->naturalwidth);
+ natural_maxheight = iupMAX(natural_maxheight, ih_control->naturalheight);
+ }
+
+ for (i = 0; i < count; i++)
+ {
+ ih_control = ih_list[i];
+ if (!ih_control->is_floating && (ih_control->iclass->nativetype != IUP_TYPEVOID || !iupStrEqual(ih_control->iclass->name, "fill")))
+ {
+ if (normalize & NORMALIZE_WIDTH)
+ ih_control->userwidth = natural_maxwidth;
+ if (normalize & NORMALIZE_HEIGHT)
+ ih_control->userheight = natural_maxheight;
+ }
+ }
+ return 1;
+}
+
+static int iNormalizerSetAddControlHandleAttrib(Ihandle* ih, const char* value)
+{
+ Ihandle* ih_control = (Ihandle*)value;
+ Ihandle** ih_list = (Ihandle**)iupArrayInc(ih->data->ih_array);
+ int count = iupArrayCount(ih->data->ih_array);
+ ih_list[count-1] = ih_control;
+ return 0;
+}
+
+static int iNormalizerSetAddControlAttrib(Ihandle* ih, const char* value)
+{
+ return iNormalizerSetAddControlHandleAttrib(ih, (char*)IupGetHandle(value));
+}
+
+static void iNormalizerComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ (void)w;
+ (void)h;
+ (void)expand;
+ iNormalizerSetNormalizeAttrib(ih, iupAttribGetStr(ih, "NORMALIZE"));
+}
+
+static int iNormalizerCreateMethod(Ihandle* ih, void** params)
+{
+ ih->data = iupALLOCCTRLDATA();
+ ih->data->ih_array = iupArrayCreate(10, sizeof(Ihandle*));
+
+ if (params)
+ {
+ Ihandle** iparams = (Ihandle**)params;
+ Ihandle** ih_list;
+ int i = 0;
+ while (*iparams)
+ {
+ ih_list = (Ihandle**)iupArrayInc(ih->data->ih_array);
+ ih_list[i] = *iparams;
+ i++;
+ iparams++;
+ }
+ }
+
+ return IUP_NOERROR;
+}
+
+static void iNormalizerDestroy(Ihandle* ih)
+{
+ iupArrayDestroy(ih->data->ih_array);
+}
+
+Iclass* iupNormalizerGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "normalizer";
+ ic->format = "g"; /* array of Ihandle */
+ ic->nativetype = IUP_TYPEVOID;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Create = iNormalizerCreateMethod;
+ ic->Map = iupBaseTypeVoidMapMethod;
+ ic->ComputeNaturalSize = iNormalizerComputeNaturalSizeMethod;
+ ic->Destroy = iNormalizerDestroy;
+
+ iupClassRegisterAttribute(ic, "NORMALIZE", NULL, iNormalizerSetNormalizeAttrib, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ADDCONTROL_HANDLE", NULL, iNormalizerSetAddControlHandleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ADDCONTROL", NULL, iNormalizerSetAddControlAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
+
+Ihandle *IupNormalizerv(Ihandle **ih_list)
+{
+ return IupCreatev("normalizer", (void**)ih_list);
+}
+
+Ihandle *IupNormalizer(Ihandle* ih_first, ...)
+{
+ Ihandle **ih_list;
+ Ihandle *ih;
+
+ va_list arglist;
+ va_start(arglist, ih_first);
+ ih_list = (Ihandle **)iupObjectGetParamList(ih_first, arglist);
+ va_end(arglist);
+
+ ih = IupCreatev("normalizer", (void**)ih_list);
+ free(ih_list);
+
+ return ih;
+}
diff --git a/iup/src/iup_object.c b/iup/src/iup_object.c
new file mode 100755
index 0000000..7f4ce23
--- /dev/null
+++ b/iup/src/iup_object.c
@@ -0,0 +1,180 @@
+/** \file
+ * \brief Ihandle management
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <memory.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_assert.h"
+#include "iup_register.h"
+#include "iup_names.h"
+
+
+static Ihandle* iHandleCreate(void)
+{
+ Ihandle *ih = (Ihandle*)malloc(sizeof(Ihandle));
+ memset(ih, 0, sizeof(Ihandle));
+
+ ih->sig[0] = 'I';
+ ih->sig[1] = 'U';
+ ih->sig[2] = 'P';
+ ih->sig[3] = 0;
+
+ ih->serial = -1;
+
+ ih->attrib = iupTableCreate(IUPTABLE_STRINGINDEXED);
+
+ return ih;
+}
+
+static void iHandleDestroy(Ihandle* ih)
+{
+ iupTableDestroy(ih->attrib);
+ memset(ih, 0, sizeof(Ihandle));
+ free(ih);
+}
+
+int iupObjectCheck(Ihandle* ih)
+{
+ char* sig = (char*)ih;
+
+ if (!ih) return 0;
+
+ if (sig[0] != 'I' ||
+ sig[1] != 'U' ||
+ sig[2] != 'P' ||
+ sig[3] != 0)
+ return 0;
+
+ return 1;
+}
+
+Ihandle* iupObjectCreate(Iclass* iclass, void** params)
+{
+ /* create the base handle structure */
+ Ihandle* ih = iHandleCreate();
+
+ ih->iclass = iclass;
+
+ /* create the element */
+ if (iupClassObjectCreate(ih, params) == IUP_ERROR)
+ {
+ iupERROR1("IUP object creation failed (%s).", iclass->name);
+ iHandleDestroy(ih);
+ return NULL;
+ }
+
+ /* ensure attributes default values, at this time only the ones that can be set before map */
+ iupClassObjectEnsureDefaultAttributes(ih);
+
+ return ih;
+}
+
+void** iupObjectGetParamList(void* first, va_list arglist)
+{
+ const int INITIAL_NUMBER = 50;
+ void **params;
+ void *param;
+ int max_count = INITIAL_NUMBER, count = 0;
+
+ params = (void **) malloc (sizeof (void *) * INITIAL_NUMBER);
+
+ param = first;
+
+ while (param != NULL)
+ {
+ params[count] = param;
+ count++;
+
+ /* verifica se precisa realocar memoria */
+ if (count >= max_count)
+ {
+ void **new_params = NULL;
+
+ max_count += INITIAL_NUMBER;
+
+ new_params = (void **) realloc (params, sizeof (void *) * max_count);
+
+ params = new_params;
+ }
+
+ param = va_arg (arglist, void*);
+ }
+ params[count] = NULL;
+
+ return params;
+}
+
+Ihandle* IupCreatev(const char *name, void **params)
+{
+ Iclass *ic;
+ iupASSERT(name!=NULL);
+ ic = iupRegisterFindClass(name);
+ if (ic)
+ return iupObjectCreate(ic, params);
+ else
+ return NULL;
+}
+
+Ihandle *IupCreatep(const char *name, void* first, ...)
+{
+ va_list arglist;
+ void **params;
+ Ihandle *ih;
+ iupASSERT(name!=NULL);
+
+ va_start(arglist, first);
+ params = iupObjectGetParamList(first, arglist);
+ va_end(arglist);
+
+ ih = IupCreatev(name, params);
+ free(params);
+
+ return ih;
+}
+
+Ihandle* IupCreate(const char *name)
+{
+ iupASSERT(name!=NULL);
+ return IupCreatev(name, NULL);
+}
+
+void IupDestroy(Ihandle *ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ /* Hide before destroy to avoid children redraw */
+ if (ih->iclass->nativetype == IUP_TYPEDIALOG)
+ IupHide(ih);
+
+ /* Destroy all its children.
+ Just need to remove the first child,
+ IupDetach will update firstchild. */
+ while (ih->firstchild)
+ IupDestroy(ih->firstchild);
+
+ /* unmap if mapped and remove from its parent child list */
+ IupDetach(ih);
+
+ /* destroy the element */
+ iupClassObjectDestroy(ih);
+
+ /* destroy the private data */
+ if (ih->data)
+ free(ih->data);
+
+ /* removes all the names associated with the element */
+ iupRemoveAllNames(ih);
+
+ /* destroy the base handle structure */
+ iHandleDestroy(ih);
+}
diff --git a/iup/src/iup_object.h b/iup/src/iup_object.h
new file mode 100755
index 0000000..6f6b668
--- /dev/null
+++ b/iup/src/iup_object.h
@@ -0,0 +1,132 @@
+/** \file
+ * \brief Ihandle Object Definition
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_OBJECT_H
+#define __IUP_OBJECT_H
+
+#include <stdarg.h>
+#include "iup_class.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** \defgroup object Ihandle Object
+ * \par
+ * Object handle for all the elements.
+ * \par
+ * See \ref iup_object.h
+ * \ingroup cpi */
+
+
+/* SIZE to RASTERSIZE
+ * \ingroup object */
+#define iupWIDTH2RASTER(_w, _cw) ((int)((_w * _cw)/4.0 + 0.5))
+/* SIZE to RASTERSIZE
+ * \ingroup object */
+#define iupHEIGHT2RASTER(_h, _ch) ((int)((_h * _ch)/8.0 + 0.5))
+
+/* RASTERSIZE to SIZE
+ * \ingroup object */
+#define iupRASTER2WIDTH(_w, _cw) ((int)((_w * 4.0)/_cw + 0.5))
+/* RASTERSIZE to SIZE
+ * \ingroup object */
+#define iupRASTER2HEIGHT(_h, _ch) ((int)((_h * 8.0)/_ch + 0.5))
+
+
+/** Expand configuration
+ * \ingroup object */
+enum Iexpand {
+ IUP_EXPAND_NONE = 0x00,
+ IUP_EXPAND_H0 = 0x01, /* only set by IupFill */
+ IUP_EXPAND_H1 = 0x02,
+ IUP_EXPAND_W0 = 0x04, /* only set by IupFill */
+ IUP_EXPAND_W1 = 0x08
+};
+
+/** Expand configuration
+ * \ingroup object */
+#define IUP_EXPAND_WIDTH (IUP_EXPAND_W1 | IUP_EXPAND_W0)
+/** Expand configuration
+ * \ingroup object */
+#define IUP_EXPAND_HEIGHT (IUP_EXPAND_H1 | IUP_EXPAND_H0)
+/** Expand configuration
+ * \ingroup object */
+#define IUP_EXPAND_BOTH (IUP_EXPAND_WIDTH | IUP_EXPAND_HEIGHT)
+
+
+/** A simple definition that do not depends on the native system,
+ but helps a lot when writing native code. See \ref iup_object.h for definitions.
+ * \ingroup object */
+#if defined(GTK_MAJOR_VERSION)
+typedef struct _GtkWidget InativeHandle;
+#elif defined(XmVERSION)
+typedef struct _WidgetRec InativeHandle;
+#elif defined(WINVER)
+typedef struct HWND__ InativeHandle;
+#else
+typedef struct _InativeHandle InativeHandle;
+#endif
+
+/** Each control may define its own structure in its private module.
+ * \ingroup object */
+typedef struct _IcontrolData IcontrolData;
+/** IcontrolData allocation utility.
+ * \ingroup object */
+#define iupALLOCCTRLDATA() ((IcontrolData*)calloc(1, sizeof(IcontrolData)))
+
+
+/** Structure used by all the elements.
+ * \ingroup object */
+struct Ihandle_
+{
+ char sig[4]; /**< IUP Signature, initialized with "IUP", cleared on destroy */
+ Iclass* iclass; /**< Ihandle Class */
+ Itable* attrib; /**< attributes table */
+ int serial; /**< serial number used for controls that need a numeric id, initialized with -1 */
+ InativeHandle* handle; /**< native handle. initialized when mapped. InativeHandle definition is system dependent. */
+ int expand; /**< expand configuration, a combination of \ref Iexpand, for containers is a combination of the children expand's */
+ int is_floating; /**< floating attribute */
+ int x, y; /**< upper-left corner relative to the native parent. always 0 for the dialog. */
+ int userwidth, userheight; /**< user defined size for the control using SIZE or RASTERSIZE */
+ int naturalwidth, naturalheight; /**< the calculated size based in the control contents and the user size */
+ int currentwidth, currentheight; /**< actual size of the control in pixels (window size, including decorations and margins). */
+ int has_maxsize, has_minsize; /**< indicates that the control has the attributes MAXSIZE and/or MINSIZE */
+ Ihandle* parent; /**< previous control in the hierarchy tree */
+ Ihandle* firstchild; /**< first child control in the hierarchy tree */
+ Ihandle* brother; /**< next control inside parent */
+ IcontrolData* data; /**< private control data. automatically freed if not NULL in destroy */
+};
+
+
+/* Creates an object. initializes iclass and nativetype.
+ * Called only from IupCreate and IupLoad. */
+Ihandle* iupObjectCreate(Iclass* ic, void** params);
+
+
+/** Utility that returns an array of parameters. Must call free for the returned value after usage.
+ * Used by the creation functions of objects that receives a NULL terminated array of parameters.
+ * \ingroup object */
+void** iupObjectGetParamList(void* first, va_list arglist);
+
+/** Checks if the handle is still valid based on the signature.
+ * \ingroup object */
+int iupObjectCheck(Ihandle* ih);
+
+
+/* Other functions declared in <iup.h> and implemented here.
+IupCreate
+IupCreatev
+IupCreatep
+IupDestroy
+*/
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_open.c b/iup/src/iup_open.c
new file mode 100755
index 0000000..e02561e
--- /dev/null
+++ b/iup/src/iup_open.c
@@ -0,0 +1,119 @@
+/** \file
+ * \brief Windows Driver Core
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+#include "iup_globalattrib.h"
+#include "iup_names.h"
+#include "iup_func.h"
+#include "iup_drv.h"
+#include "iup_drvinfo.h"
+#include "iup_drvfont.h"
+#include "iup_predial.h"
+#include "iup_class.h"
+#include "iup_register.h"
+#include "iup_key.h"
+#include "iup_image.h"
+#include "iup_dlglist.h"
+#include "iup_assert.h"
+#include "iup_strmessage.h"
+
+
+static int iup_opened = 0;
+static int iup_dummy_argc = 0;
+static char ** iup_dummy_argv = {0};
+
+int iupIsOpened(void)
+{
+ return iup_opened;
+}
+
+int IupOpen(int *argc, char ***argv)
+{
+ if (iup_opened)
+ return IUP_OPENED;
+ iup_opened = 1;
+
+ if (!argc || !(*argc) || !argv)
+ {
+ argc = &iup_dummy_argc;
+ argv = &iup_dummy_argv;
+ }
+
+ iupNamesInit();
+ iupFuncInit();
+ iupStrMessageInit();
+ iupGlobalAttribInit();
+ iupRegisterInit();
+ iupKeyInit();
+ iupImageStockInit();
+
+ IupSetLanguage("ENGLISH");
+ IupSetGlobal("VERSION", IupVersion());
+ IupSetGlobal("COPYRIGHT", IUP_COPYRIGHT);
+
+ if (iupdrvOpen(argc, argv) == IUP_NOERROR)
+ {
+ char* value;
+
+ iupdrvFontInit();
+
+ IupStoreGlobal("SYSTEM", iupdrvGetSystemName());
+ IupStoreGlobal("SYSTEMVERSION", iupdrvGetSystemVersion());
+ IupStoreGlobal("COMPUTERNAME", iupdrvGetComputerName());
+ IupStoreGlobal("USERNAME", iupdrvGetUserName());
+ IupSetGlobal("DEFAULTFONT", iupdrvGetSystemFont()); /* Use SetGlobal because iupdrvGetSystemFont returns a static string */
+
+ iupRegisterInternalClasses();
+
+ value = getenv("IUP_QUIET");
+ if (value && !iupStrBoolean(value)) /* if not defined do NOT print */
+ printf("IUP %s %s\n", IupVersion(), IUP_COPYRIGHT);
+
+ value = getenv("IUP_VERSION");
+ if (iupStrBoolean(value))
+ iupVersionDlg();
+
+ return IUP_NOERROR;
+ }
+ else
+ {
+#ifdef IUP_ASSERT
+ /* can not use pre-defined dialogs here, so only output to console. */
+ fprintf(stderr, "IUP ERROR: IupOpen failed.\n");
+#endif
+ return IUP_ERROR;
+ }
+}
+
+void IupClose(void)
+{
+ if (!iup_opened)
+ return;
+ iup_opened = 0;
+
+ iupdrvSetIdleFunction(NULL); /* stop any idle */
+
+ iupDlgListDestroyAll(); /* destroy all dialogs */
+ iupNamesDestroyHandles(); /* destroy everything else that have names */
+ iupImageStockFinish(); /* release stock images hash table and the images */
+
+ iupRegisterFinish(); /* release native classes */
+
+ iupdrvFontFinish(); /* release font cache */
+ iupdrvClose(); /* release native handles and allocated memory */
+
+ iupGlobalAttribFinish(); /* release global hash table */
+ iupStrMessageFinish(); /* release messages hash table */
+ iupFuncFinish(); /* release callbacks hash table */
+ iupNamesFinish(); /* release names hash table */
+
+ iupStrGetMemory(-1); /* Frees internal buffer */
+}
diff --git a/iup/src/iup_predial.c b/iup/src/iup_predial.c
new file mode 100755
index 0000000..b48e246
--- /dev/null
+++ b/iup/src/iup_predial.c
@@ -0,0 +1,510 @@
+/** \file
+ * \brief pre-defined dialogs
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <time.h>
+
+#include "iup.h"
+
+#include "iup_predial.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_strmessage.h"
+
+
+static int CB_button_OK (Ihandle* ih)
+{
+ iupAttribSetStr(IupGetDialog(ih), "STATUS", "1");
+ return IUP_CLOSE;
+}
+
+static int CB_button_CANCEL (Ihandle* ih)
+{
+ iupAttribSetStr(IupGetDialog(ih), "STATUS", "-1");
+ return IUP_CLOSE;
+}
+
+static int CB_lista (Ihandle *h, char *n, int o, int v)
+{
+ static clock_t oldtimesel = 0;
+ static int oldopc = 0;
+ (void)n; /* not used */
+ if (v)
+ {
+ clock_t timesel = clock();
+
+ iupAttribSetStrf(IupGetDialog(h), "_IUP_LIST_NUMBER", "%d", o-1);
+
+ if (((timesel-oldtimesel) < 500) && (o == oldopc))
+ return IUP_CLOSE;
+
+ oldtimesel = timesel;
+ oldopc = o;
+ }
+ return IUP_DEFAULT;
+}
+
+int IupListDialog (int type, const char *title, int size, const char** list_str,
+ int op, int max_col, int max_lin, int* marks)
+{
+ Ihandle *lst, *ok, *dlg, *cancel, *dlg_box, *button_box;
+ int i, bt;
+ char attrib_str[20];
+ char *m=NULL;
+
+ if (size > 999)
+ size = 999;
+
+ lst = IupList(NULL);
+
+ for (i=0;i<size;i++)
+ {
+ sprintf(attrib_str,"%d",i+1);
+ IupSetAttribute(lst,attrib_str,list_str[i]);
+ }
+ sprintf(attrib_str,"%d",i+1);
+ IupSetAttribute(lst,attrib_str,NULL);
+ IupSetAttribute(lst,"EXPAND","YES");
+
+ ok = IupButton("OK", NULL);
+ IupSetAttribute(ok,"PADDING" ,"20x5");
+ IupSetCallback(ok, "ACTION", (Icallback)CB_button_OK);
+
+ cancel = IupButton(iupStrMessageGet("IUP_CANCEL"), NULL);
+ IupSetAttribute(cancel,"PADDING" ,"20x5");
+ IupSetCallback(cancel, "ACTION", (Icallback)CB_button_CANCEL);
+
+ button_box = IupHbox(
+ IupFill(),
+ ok,
+ cancel,
+ NULL);
+ IupSetAttribute(button_box,"MARGIN","0x0");
+ IupSetAttribute(button_box, "NORMALIZESIZE", "HORIZONTAL");
+
+ dlg_box = IupVbox(
+ lst,
+ button_box,
+ NULL);
+
+ IupSetAttribute(dlg_box,"MARGIN","10x10");
+ IupSetAttribute(dlg_box,"GAP","10");
+
+ dlg = IupDialog(dlg_box);
+
+ if (type == 1)
+ {
+ if (op<1 || op>size) op=1;
+ iupAttribSetStrf(dlg, "_IUP_LIST_NUMBER", "%d", op-1);
+ IupSetfAttribute(lst,"VALUE","%d",op);
+ IupSetCallback(lst, "ACTION", (Icallback)CB_lista);
+ }
+ else if ((type == 2) && (marks != NULL))
+ {
+ m=(char *)marks;
+ for (i=0;i<size;i++)
+ m[i] = marks[i] ? '+' : '-';
+ m[i]='\0';
+ IupSetAttribute(lst,"MULTIPLE","YES");
+ IupSetAttribute(lst,"VALUE",m);
+ }
+
+ if (max_lin < 4) max_lin = 4;
+ IupSetfAttribute(lst, "VISIBLELINES", "%d", max_lin);
+ IupSetfAttribute(lst, "VISIBLECOLUMNS", "%d", max_col);
+
+ IupSetAttribute(dlg,"TITLE", title);
+ IupSetAttribute(dlg,"MINBOX","NO");
+ IupSetAttribute(dlg,"MAXBOX","NO");
+ IupSetAttributeHandle(dlg,"DEFAULTENTER", ok);
+ IupSetAttributeHandle(dlg,"DEFAULTESC", cancel);
+ IupSetAttribute(dlg,"PARENTDIALOG", IupGetGlobal("PARENTDIALOG"));
+ IupSetAttribute(dlg,"ICON", IupGetGlobal("ICON"));
+
+ IupPopup(dlg,IUP_CENTERPARENT,IUP_CENTERPARENT);
+
+ if ((type == 2) && (marks != NULL))
+ {
+ m=IupGetAttribute(lst,"VALUE");
+ for (i=0;i<size;i++)
+ marks[i] = (m[i] == '+');
+ }
+
+ bt = IupGetInt(dlg, "STATUS");
+ if (type == 1)
+ {
+ if (bt == 1)
+ bt = iupAttribGetInt(dlg, "_IUP_LIST_NUMBER");
+ else
+ bt = -1;
+ }
+ else
+ {
+ if (bt != 1)
+ bt = -1;
+ }
+
+ IupDestroy(dlg);
+
+ return bt;
+}
+
+static int iAlarmButtonAction_CB(Ihandle *ih)
+{
+ iupAttribSetStr(IupGetDialog(ih), "_IUP_BUTTON_NUMBER", iupAttribGet(ih, "_IUP_BUTTON_NUMBER"));
+ return IUP_CLOSE;
+}
+
+int IupAlarm(const char *title, const char *msg, const char *b1, const char *b2, const char *b3)
+{
+ Ihandle *dlg, *dlg_box, *button_box, *button, *default_esc, *default_enter;
+ int bt, len;
+ char* padding;
+
+ msg = msg? msg: "";
+
+ if (b1 == NULL)
+ return 0;
+
+ len = strlen(b1);
+ if (b2)
+ {
+ int len2 = strlen(b2);
+ if (len2 > len)
+ len = len2;
+ }
+ if (b3)
+ {
+ int len3 = strlen(b3);
+ if (len3 > len)
+ len = len3;
+ }
+
+ if (len > 7)
+ padding = "12x2";
+ else
+ padding = "18x5";
+
+ button_box = IupHbox(NULL);
+ IupSetAttribute(button_box, "NORMALIZESIZE", "HORIZONTAL");
+ IupSetAttribute(button_box,"MARGIN","0x0");
+ IupAppend(button_box, IupFill()); /* to center the buttons */
+
+ button = IupButton(b1, NULL);
+ iupAttribSetStrf(button, "_IUP_BUTTON_NUMBER", "1");
+ IupSetAttribute(button, "PADDING", padding);
+ IupAppend(button_box, button);
+ IupSetCallback (button, "ACTION", (Icallback)iAlarmButtonAction_CB);
+ default_enter = button;
+ default_esc = button;
+
+ if (b2 != NULL)
+ {
+ button = IupButton(b2, NULL);
+ iupAttribSetStr(button, "_IUP_BUTTON_NUMBER", "2");
+ IupSetAttribute(button, "PADDING", padding);
+ IupAppend(button_box, button);
+ IupSetCallback (button, "ACTION", (Icallback)iAlarmButtonAction_CB);
+ default_esc = button;
+ }
+
+ if (b3 != NULL)
+ {
+ button = IupButton(b3, NULL);
+ iupAttribSetStr(button, "_IUP_BUTTON_NUMBER", "3");
+ IupSetAttribute(button, "PADDING", padding);
+ IupAppend(button_box, button);
+ IupSetCallback (button, "ACTION", (Icallback)iAlarmButtonAction_CB);
+ default_esc = button;
+ }
+
+ IupAppend(button_box, IupFill()); /* to center the buttons */
+
+ dlg_box = IupVbox(
+ IupLabel(msg),
+ IupSetAttributes(IupLabel(NULL), "SEPARATOR=HORIZONTAL"),
+ button_box,
+ NULL);
+
+ IupSetAttribute(dlg_box,"MARGIN","10x10");
+ IupSetAttribute(dlg_box,"GAP","10");
+
+ dlg = IupDialog(dlg_box);
+
+ IupSetAttribute(dlg,"TITLE", title);
+ IupSetAttribute(dlg,"DIALOGFRAME","YES");
+ IupSetAttribute(dlg,"DIALOGHINT","YES");
+ IupSetAttributeHandle(dlg,"DEFAULTENTER", default_enter);
+ IupSetAttributeHandle(dlg,"DEFAULTESC", default_esc);
+ IupSetAttribute(dlg,"PARENTDIALOG", IupGetGlobal("PARENTDIALOG"));
+ IupSetAttribute(dlg,"ICON", IupGetGlobal("ICON"));
+
+ IupPopup(dlg,IUP_CENTERPARENT,IUP_CENTERPARENT);
+
+ bt = iupAttribGetInt(dlg, "_IUP_BUTTON_NUMBER");
+
+ IupDestroy(dlg);
+
+ return bt;
+}
+
+int iupDataEntry(int maxlin,
+ int* maxcol,
+ int* maxscr,
+ char* title,
+ char** text,
+ char** data)
+{
+ int i, bt;
+ Ihandle *ok, *cancel, *dlg, *vb, *hb, **txt, **lbl, *button_box, *dlg_box;
+
+ txt = (Ihandle **)calloc(maxlin, sizeof(Ihandle*));
+ if (txt == NULL) return -2;
+ lbl = (Ihandle **)calloc(maxlin+1, sizeof(Ihandle*));
+
+ vb = IupVbox(NULL);
+
+ for (i=0; i<maxlin; i++)
+ {
+ txt[i] = IupText(NULL);
+ IupSetAttribute(txt[i],"VALUE",data[i]);
+ IupSetfAttribute(txt[i],"VISIBLECOLUMNS","%dx", maxscr[i]);
+ IupSetfAttribute(txt[i],"NC", "%d", maxcol[i]);
+ IupSetAttribute(txt[i],"EXPAND","HORIZONTAL");
+
+ hb = IupHbox(lbl[i] = IupLabel(text[i]), txt[i], NULL);
+ IupSetAttribute(hb,"MARGIN","0x0");
+ IupSetAttribute(hb,"ALIGNMENT","ACENTER");
+ IupAppend(vb, hb);
+ }
+ lbl[i] = NULL;
+ IupInsert(vb, NULL, IupNormalizerv(lbl));
+
+ ok = IupButton("OK", NULL);
+ IupSetAttribute(ok, "PADDING", "20x0");
+ IupSetCallback(ok, "ACTION", (Icallback)CB_button_OK);
+
+ cancel = IupButton(iupStrMessageGet("IUP_CANCEL"), NULL);
+ IupSetAttribute(cancel, "PADDING", "20x0");
+ IupSetCallback(cancel, "ACTION", (Icallback)CB_button_CANCEL);
+
+ button_box = IupHbox(
+ IupFill(),
+ ok,
+ cancel,
+ NULL);
+ IupSetAttribute(button_box,"MARGIN","0x0");
+ IupSetAttribute(button_box, "NORMALIZESIZE", "HORIZONTAL");
+
+ dlg_box = IupVbox(
+ IupFrame(vb),
+ button_box,
+ NULL);
+ IupSetAttribute(dlg_box,"MARGIN","10x10");
+ IupSetAttribute(dlg_box,"GAP","5");
+
+ dlg = IupDialog(dlg_box);
+
+ IupSetAttribute(dlg,"TITLE",title);
+ IupSetAttribute(dlg,"MINBOX","NO");
+ IupSetAttribute(dlg,"MAXBOX","NO");
+ IupSetAttributeHandle(dlg,"DEFAULTENTER", ok);
+ IupSetAttributeHandle(dlg,"DEFAULTESC", cancel);
+ IupSetAttribute(dlg,"PARENTDIALOG",IupGetGlobal("PARENTDIALOG"));
+ IupSetAttribute(dlg,"ICON", IupGetGlobal("ICON"));
+
+ IupMap(dlg);
+
+ IupSetfAttribute(dlg,"MAXSIZE", "65535x%d", IupGetInt2(dlg, "RASTERSIZE"));
+ IupSetAttribute(dlg,"MINSIZE", IupGetAttribute(dlg, "RASTERSIZE"));
+
+ IupPopup(dlg,IUP_CENTERPARENT,IUP_CENTERPARENT);
+
+ for (i=0; i<maxlin; i++)
+ {
+ data[i] = (char *)iupStrDup(IupGetAttribute(txt[i], "VALUE"));
+ }
+
+ free(txt);
+
+ bt = IupGetInt(dlg, "STATUS");
+ IupDestroy(dlg);
+ return bt;
+}
+
+static void iupStrSplitFileName(const char* filename, char *dir, char *filter)
+{
+ int i, n = strlen(filename);
+
+ /* Look for last folder separator and split filter from directory */
+ for (i=n-1;i>=0; i--)
+ {
+ if (filename[i] == '\\' || filename[i] == '/')
+ {
+ if (dir)
+ {
+ strncpy(dir, filename, i+1);
+ dir[i+1] = 0;
+ }
+
+ if (filter)
+ {
+ strcpy(filter, filename+i+1);
+ filter[n-i] = 0;
+ }
+
+ return;
+ }
+ }
+}
+
+int IupGetFile(char* filename)
+{
+ Ihandle *dlg = 0;
+ int ret;
+ char filter[4096] = "*.*";
+ static char dir[4096] = ""; /* static will make the dir persist from one call to another if not defined */
+
+ if (!filename) return -1;
+
+ dlg = IupFileDlg();
+
+ iupStrSplitFileName(filename, dir, filter);
+
+ IupSetAttribute(dlg, "FILTER", filter);
+ IupSetAttribute(dlg, "DIRECTORY", dir);
+ IupSetAttribute(dlg, "ALLOWNEW", "YES");
+ IupSetAttribute(dlg, "NOCHANGEDIR", "YES");
+ IupSetAttribute(dlg, "PARENTDIALOG", IupGetGlobal("PARENTDIALOG"));
+ IupSetAttribute(dlg, "ICON", IupGetGlobal("ICON"));
+
+ IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT);
+
+ ret = IupGetInt(dlg, "STATUS");
+ if (ret != -1)
+ {
+ char* value = IupGetAttribute(dlg, "VALUE");
+ if (value)
+ {
+ strcpy(filename, value);
+ iupStrSplitFileName(filename, dir, NULL);
+ }
+ }
+
+ IupDestroy(dlg);
+
+ return ret;
+}
+
+int IupGetText(const char* title, char* text)
+{
+ Ihandle *ok, *cancel, *multi_text, *button_box, *dlg_box, *dlg;
+ int bt;
+
+ multi_text = IupMultiLine(NULL);
+ IupSetAttribute(multi_text,"EXPAND", "YES");
+ IupSetAttribute(multi_text,"VALUE", text);
+ IupSetAttribute(multi_text,"FONT", "Courier, 12");
+ IupSetAttribute(multi_text, "VISIBLELINES", "10");
+ IupSetAttribute(multi_text, "VISIBLECOLUMNS", "50");
+
+ ok = IupButton("OK", NULL);
+ IupSetAttribute(ok, "PADDING", "20x5");
+ IupSetCallback(ok, "ACTION", (Icallback)CB_button_OK);
+
+ cancel = IupButton(iupStrMessageGet("IUP_CANCEL"), NULL);
+ IupSetAttribute(cancel, "PADDING", "20x5");
+ IupSetCallback(cancel, "ACTION", (Icallback)CB_button_CANCEL);
+
+ button_box = IupHbox(
+ IupFill(),
+ ok,
+ cancel,
+ NULL);
+ IupSetAttribute(button_box,"MARGIN","0x0");
+ IupSetAttribute(button_box, "NORMALIZESIZE", "HORIZONTAL");
+
+ dlg_box = IupVbox(
+ multi_text,
+ button_box,
+ NULL);
+
+ IupSetAttribute(dlg_box,"MARGIN","10x10");
+ IupSetAttribute(dlg_box,"GAP","10");
+
+ dlg = IupDialog (dlg_box);
+
+ IupSetAttribute(dlg,"TITLE", title);
+ IupSetAttribute(dlg,"MINBOX","NO");
+ IupSetAttribute(dlg,"MAXBOX","NO");
+ IupSetAttributeHandle(dlg,"DEFAULTENTER", ok);
+ IupSetAttributeHandle(dlg,"DEFAULTESC", cancel);
+ IupSetAttribute(dlg,"PARENTDIALOG", IupGetGlobal("PARENTDIALOG"));
+ IupSetAttribute(dlg,"ICON", IupGetGlobal("ICON"));
+
+ IupMap(dlg);
+
+ IupSetAttribute(multi_text, "VISIBLELINES", NULL);
+ IupSetAttribute(multi_text, "VISIBLECOLUMNS", NULL);
+
+ IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT);
+
+ bt = IupGetInt(dlg, "STATUS");
+ if (bt==1)
+ strcpy(text, IupGetAttribute(multi_text, "VALUE"));
+ else
+ bt = 0; /* return 0 instead of -1 */
+
+ IupDestroy(dlg);
+ return bt;
+}
+
+int IupGetColor(int x, int y, unsigned char *r, unsigned char *g, unsigned char *b)
+{
+ int ret;
+ Ihandle* dlg = IupColorDlg();
+
+ IupSetAttribute(dlg, "TITLE", iupStrMessageGet("IUP_GETCOLOR"));
+ IupSetfAttribute(dlg, "VALUE", "%d %d %d", *r, *g, *b);
+ IupSetAttribute(dlg, "PARENTDIALOG", IupGetGlobal("PARENTDIALOG"));
+ IupSetAttribute(dlg, "ICON", IupGetGlobal("ICON"));
+
+ IupPopup(dlg, x, y);
+
+ ret = IupGetInt(dlg, "STATUS");
+ if (ret)
+ iupStrToRGB(IupGetAttribute(dlg, "VALUE"), r, g, b);
+
+ IupDestroy(dlg);
+
+ return ret;
+}
+
+void iupVersionDlg(void)
+{
+ Ihandle* dlg;
+
+ dlg = IupDialog(IupVbox(IupFrame(IupVbox(
+ IupLabel(IupVersion()),
+ IupLabel(IUP_VERSION_DATE),
+ IupLabel(IUP_COPYRIGHT),
+ NULL)),
+ IupButton("OK", NULL),
+ NULL));
+
+ IupSetAttribute(dlg,"TITLE","IUP Version");
+ IupSetAttribute(dlg,"DIALOGFRAME","YES");
+ IupSetAttribute(dlg,"DIALOGHINT","YES");
+ IupSetAttribute(dlg,"GAP","10");
+ IupSetAttribute(dlg,"MARGIN","10x10");
+
+ IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT);
+ IupDestroy(dlg);
+}
diff --git a/iup/src/iup_predial.h b/iup/src/iup_predial.h
new file mode 100755
index 0000000..e282e53
--- /dev/null
+++ b/iup/src/iup_predial.h
@@ -0,0 +1,32 @@
+/** \file
+ * \brief IUP Core pre-defined dialogs.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_PREDIAL_H
+#define __IUP_PREDIAL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Used by the IupScanf implementation */
+int iupDataEntry(int maxlin, int* maxcol, int* maxscr, char* title, char** text, char** data);
+
+/* Popups a dialog with IUP Version, used in IupOpen */
+void iupVersionDlg(void);
+
+/* Other functions declared in <iup.h> and implemented here.
+IupListDialog
+IupAlarm
+IupMessagef
+IupGetFile
+IupGetText
+*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_progressbar.c b/iup/src/iup_progressbar.c
new file mode 100755
index 0000000..76fdefc
--- /dev/null
+++ b/iup/src/iup_progressbar.c
@@ -0,0 +1,118 @@
+/** \file
+ * \brief ProgressBar control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_progressbar.h"
+
+
+void iProgressBarCropValue(Ihandle* ih)
+{
+ if(ih->data->value > ih->data->vmax)
+ ih->data->value = ih->data->vmax;
+ else if(ih->data->value < ih->data->vmin)
+ ih->data->value = ih->data->vmin;
+}
+
+char* iProgressBarGetValueAttrib(Ihandle* ih)
+{
+ char* value = iupStrGetMemory(30);
+ sprintf(value, "%g", ih->data->value);
+ return value;
+}
+
+char* iProgressBarGetDashedAttrib(Ihandle* ih)
+{
+ if(ih->data->dashed)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iProgressBarSetMinAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->vmin = atof(value);
+ iProgressBarCropValue(ih);
+ return 1;
+}
+
+static int iProgressBarSetMaxAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->vmax = atof(value);
+ iProgressBarCropValue(ih);
+ return 1;
+}
+
+static int iProgressBarCreateMethod(Ihandle* ih, void **params)
+{
+ (void)params;
+
+ ih->data = iupALLOCCTRLDATA();
+
+ /* default values */
+ ih->data->vmax = 1;
+ ih->data->dashed = 0;
+
+ /* progress bar natural size is 200x30 */
+ IupSetAttribute(ih, "RASTERSIZE", "200x30");
+
+ return IUP_NOERROR;
+}
+
+Iclass* iupProgressBarGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "progressbar";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Create = iProgressBarCreateMethod;
+
+ ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Common Callbacks */
+ iupClassRegisterCallback(ic, "MAP_CB", "");
+ iupClassRegisterCallback(ic, "UNMAP_CB", "");
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Visual */
+ iupBaseRegisterVisualAttrib(ic);
+
+ /* IupProgressBar only */
+ iupClassRegisterAttribute(ic, "MIN", NULL, iProgressBarSetMinAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MAX", NULL, iProgressBarSetMaxAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "ORIENTATION", NULL, NULL, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED);
+
+ iupdrvProgressBarInitClass(ic);
+
+ return ic;
+}
+
+Ihandle *IupProgressBar(void)
+{
+ return IupCreate("progressbar");
+}
diff --git a/iup/src/iup_progressbar.h b/iup/src/iup_progressbar.h
new file mode 100755
index 0000000..44ffb7f
--- /dev/null
+++ b/iup/src/iup_progressbar.h
@@ -0,0 +1,35 @@
+/** \file
+ * \brief ProgressBar Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_PROGRESSBAR_H
+#define __IUP_PROGRESSBAR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+struct _IcontrolData
+{
+ int dashed,
+ marquee;
+
+ double value, /* value is min < value < max */
+ vmin,
+ vmax;
+};
+
+void iProgressBarCropValue(Ihandle* ih);
+char* iProgressBarGetValueAttrib(Ihandle* ih);
+char* iProgressBarGetDashedAttrib(Ihandle* ih);
+
+void iupdrvProgressBarInitClass(Iclass* ic);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_radio.c b/iup/src/iup_radio.c
new file mode 100755
index 0000000..c6e7cdd
--- /dev/null
+++ b/iup/src/iup_radio.c
@@ -0,0 +1,195 @@
+/** \file
+ * \brief Radio Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+
+
+Ihandle *iupRadioFindToggleParent(Ihandle* ih_toggle)
+{
+ Ihandle *p;
+ for (p=ih_toggle; p->parent; p=p->parent)
+ {
+ if (p->iclass->nativetype == IUP_TYPEVOID &&
+ iupStrEqual(p->iclass->name, "radio"))
+ return p;
+ }
+
+ return NULL;
+}
+
+static int iRadioFindToggleChild(Ihandle* ih, Ihandle* ih_toggle)
+{
+ Ihandle* child;
+
+ if (ih == ih_toggle) /* found child that match the toggle */
+ return 1;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (iRadioFindToggleChild(child, ih_toggle))
+ return 1;
+ }
+
+ return 0;
+}
+
+static Ihandle* iRadioGetToggleChildOn(Ihandle* ih)
+{
+ Ihandle* child;
+
+ if (iupStrEqual(ih->iclass->name, "toggle") && /* found child that is a toggle and it is ON */
+ IupGetInt(ih, "VALUE"))
+ return ih;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ Ihandle* ih_toggle = iRadioGetToggleChildOn(child);
+ if (ih_toggle)
+ return ih_toggle;
+ }
+
+ return NULL;
+}
+
+/******************************************************************************/
+
+
+static int iRadioSetValueHandleAttrib(Ihandle* ih, const char* value)
+{
+ Ihandle* ih_toggle = (Ihandle*)value;
+ if (!iupObjectCheck(ih_toggle))
+ return 0;
+
+ if (!iupStrEqual(ih_toggle->iclass->name, "toggle"))
+ return 0;
+
+ if (iRadioFindToggleChild(ih->firstchild, ih_toggle))
+ IupSetAttribute(ih_toggle, "VALUE", "ON");
+
+ return 0;
+}
+
+char* iRadioGetValueHandleAttrib(Ihandle* ih)
+{
+ return (char*)iRadioGetToggleChildOn(ih->firstchild);
+}
+
+static int iRadioSetValueAttrib(Ihandle* ih, const char* value)
+{
+ Ihandle *ih_toggle;
+
+ if (!value)
+ return 0;
+
+ ih_toggle = IupGetHandle(value);
+ if (!ih_toggle)
+ return 0;
+
+ iRadioSetValueHandleAttrib(ih, (char*)ih_toggle);
+ return 0;
+}
+
+char* iRadioGetValueAttrib(Ihandle* ih)
+{
+ Ihandle *ih_toggle = (Ihandle*)iRadioGetValueHandleAttrib(ih);
+ if (!ih_toggle)
+ return NULL;
+
+ return IupGetName(ih_toggle);
+}
+
+/******************************************************************************/
+
+
+static int iRadioCreateMethod(Ihandle* ih, void** params)
+{
+ if (params)
+ {
+ Ihandle** iparams = (Ihandle**)params;
+ if (*iparams)
+ IupAppend(ih, *iparams);
+ }
+ return IUP_NOERROR;
+}
+
+static void iRadioComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ Ihandle* child = ih->firstchild;
+ if (child)
+ {
+ /* update child natural size first */
+ iupBaseComputeNaturalSize(child);
+
+ *expand = child->expand;
+ *w = child->naturalwidth;
+ *h = child->naturalheight;
+ }
+}
+
+static void iRadioSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink)
+{
+ iupBaseSetCurrentSize(ih->firstchild, ih->currentwidth, ih->currentheight, shrink);
+}
+
+static void iRadioSetChildrenPositionMethod(Ihandle* ih, int x, int y)
+{
+ iupBaseSetPosition(ih->firstchild, x, y);
+}
+
+
+/******************************************************************************/
+
+
+Ihandle* IupRadio(Ihandle* child)
+{
+ void *params[2];
+ params[0] = (void*)child;
+ params[1] = NULL;
+ return IupCreatev("radio", params);
+}
+
+Iclass* iupRadioGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "radio";
+ ic->format = "H"; /* one optional ihandle */
+ ic->nativetype = IUP_TYPEVOID;
+ ic->childtype = IUP_CHILD_ONE;
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Create = iRadioCreateMethod;
+ ic->Map = iupBaseTypeVoidMapMethod;
+ ic->ComputeNaturalSize = iRadioComputeNaturalSizeMethod;
+ ic->SetChildrenCurrentSize = iRadioSetChildrenCurrentSizeMethod;
+ ic->SetChildrenPosition = iRadioSetChildrenPositionMethod;
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Base Container */
+ iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CLIENTSIZE", iupBaseGetRasterSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* Radio only */
+ iupClassRegisterAttribute(ic, "VALUE", iRadioGetValueAttrib, iRadioSetValueAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUE_HANDLE", iRadioGetValueHandleAttrib, iRadioSetValueHandleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+
+ return ic;
+}
diff --git a/iup/src/iup_register.c b/iup/src/iup_register.c
new file mode 100755
index 0000000..4c58038
--- /dev/null
+++ b/iup/src/iup_register.c
@@ -0,0 +1,123 @@
+/** \file
+* \brief Register the Internal Controls
+*
+* See Copyright Notice in "iup.h"
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_register.h"
+#include "iup_stdcontrols.h"
+
+
+static Itable *iregister_table = NULL; /* table indexed by name containing Iclass* address */
+
+void iupRegisterInit(void)
+{
+ iregister_table = iupTableCreate(IUPTABLE_STRINGINDEXED);
+}
+
+void iupRegisterFinish(void)
+{
+ char* name = iupTableFirst(iregister_table);
+ while (name)
+ {
+ Iclass* ic = (Iclass*)iupTableGetCurr(iregister_table);
+ iupClassRelease(ic);
+ name = iupTableNext(iregister_table);
+ }
+
+ iupTableDestroy(iregister_table);
+ iregister_table = NULL;
+}
+
+int iupRegisterGetClasses(char *list[], int n)
+{
+ int i = 0;
+ char* name = iupTableFirst(iregister_table);
+
+ if (!list || !n)
+ return iupTableCount(iregister_table);
+
+ while (name)
+ {
+ list[i] = name;
+ i++;
+ if (i == n)
+ break;
+
+ name = iupTableNext(iregister_table);
+ }
+
+ return i;
+}
+
+Iclass* iupRegisterFindClass(const char* name)
+{
+ return (Iclass*)iupTableGet(iregister_table, name);
+}
+
+void iupRegisterClass(Iclass* ic)
+{
+ Iclass* old_ic = (Iclass*)iupTableGet(iregister_table, ic->name);
+ if (old_ic)
+ iupClassRelease(old_ic);
+
+ iupTableSet(iregister_table, ic->name, (void*)ic, IUPTABLE_POINTER);
+}
+
+
+/***************************************************************/
+
+void iupRegisterInternalClasses(void)
+{
+ iupRegisterClass(iupDialogGetClass());
+ iupRegisterClass(iupMessageDlgGetClass());
+ iupRegisterClass(iupColorDlgGetClass());
+ iupRegisterClass(iupFontDlgGetClass());
+ iupRegisterClass(iupFileDlgGetClass());
+
+ iupRegisterClass(iupTimerGetClass());
+ iupRegisterClass(iupImageGetClass());
+ iupRegisterClass(iupImageRGBGetClass());
+ iupRegisterClass(iupImageRGBAGetClass());
+ iupRegisterClass(iupUserGetClass());
+ iupRegisterClass(iupClipboardGetClass());
+
+ iupRegisterClass(iupRadioGetClass());
+ iupRegisterClass(iupFillGetClass());
+ iupRegisterClass(iupHboxGetClass());
+ iupRegisterClass(iupVboxGetClass());
+ iupRegisterClass(iupZboxGetClass());
+ iupRegisterClass(iupCboxGetClass());
+ iupRegisterClass(iupSboxGetClass());
+ iupRegisterClass(iupNormalizerGetClass());
+
+ iupRegisterClass(iupMenuGetClass());
+ iupRegisterClass(iupItemGetClass());
+ iupRegisterClass(iupSeparatorGetClass());
+ iupRegisterClass(iupSubmenuGetClass());
+
+ iupRegisterClass(iupLabelGetClass());
+ iupRegisterClass(iupButtonGetClass());
+ iupRegisterClass(iupToggleGetClass());
+ iupRegisterClass(iupCanvasGetClass());
+ iupRegisterClass(iupFrameGetClass());
+ iupRegisterClass(iupTextGetClass());
+ iupRegisterClass(iupMultilineGetClass());
+ iupRegisterClass(iupListGetClass());
+
+ iupRegisterClass(iupProgressBarGetClass());
+ iupRegisterClass(iupValGetClass());
+ iupRegisterClass(iupTabsGetClass());
+ iupRegisterClass(iupSpinGetClass());
+ iupRegisterClass(iupSpinboxGetClass());
+ iupRegisterClass(iupTreeGetClass());
+}
diff --git a/iup/src/iup_register.h b/iup/src/iup_register.h
new file mode 100755
index 0000000..b5e6907
--- /dev/null
+++ b/iup/src/iup_register.h
@@ -0,0 +1,47 @@
+/** \file
+ * \brief Register the Controls
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_REGISTER_H
+#define __IUP_REGISTER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup register Class Registration
+ * \par
+ * All controls are registered so the creation using IupCreate can work.
+ * \par
+ * See \ref iup_register.h
+ * \ingroup cpi */
+
+
+/** Returns a class instance from a class name. The class name must be previously registered using \ref iupRegisterClass.
+ * \ingroup register */
+Iclass* iupRegisterFindClass(const char* name);
+
+/** Register a class.
+ * \ingroup register */
+void iupRegisterClass(Iclass* ic);
+
+
+/* Register the internal classes. Called only from IupOpen. */
+void iupRegisterInternalClasses(void);
+
+/* Initializes the class registry. Called only from IupOpen. */
+void iupRegisterInit(void);
+void iupRegisterFinish(void);
+
+/* Get the registered classes. Used in documentation tests. */
+int iupRegisterGetClasses(char *list[], int n);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_sbox.c b/iup/src/iup_sbox.c
new file mode 100755
index 0000000..5a71d33
--- /dev/null
+++ b/iup/src/iup_sbox.c
@@ -0,0 +1,413 @@
+/** \file
+ * \brief iupsbox control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_childtree.h"
+
+
+#define ISBOX_THICK 5
+
+enum { ISBOX_NORTH, ISBOX_SOUTH, ISBOX_WEST, ISBOX_EAST };
+
+struct _IcontrolData
+{
+ int w, h;
+ int isholding;
+ int start_x, start_y;
+ int start_w, start_h;
+
+ int direction; /* one of the types: ISBOX_NORTH, ISBOX_SOUTH, ISBOX_WEST, ISBOX_EAST */
+};
+
+
+static int iSboxGetYborder(Ihandle* ih)
+{
+ if (ih->data->direction == ISBOX_NORTH || ih->data->direction == ISBOX_SOUTH)
+ return ISBOX_THICK;
+ else
+ return 0;
+}
+
+static int iSboxGetXborder(Ihandle* ih)
+{
+ if (ih->data->direction == ISBOX_EAST || ih->data->direction == ISBOX_WEST)
+ return ISBOX_THICK;
+ else
+ return 0;
+}
+
+static void iSboxSaveDimension(Ihandle* ih, int w, int h)
+{
+ ih->data->w = w;
+ ih->data->h = h;
+}
+
+static void iSboxAddDecorOffset(Ihandle* ih, int *x, int *y)
+{
+ /* skip north thumb if there is one */
+ if (ih->data->direction == ISBOX_NORTH)
+ *y += ISBOX_THICK;
+
+ /* skip west thumb if there is one */
+ if (ih->data->direction == ISBOX_WEST)
+ *x += ISBOX_THICK;
+}
+
+static void iSboxGetFinalSize(Ihandle* ih, int direction, int *w, int *h)
+{
+ int final_x, final_y;
+ int diff_x, diff_y;
+
+ iupStrToIntInt(IupGetGlobal("CURSORPOS"), &final_x, &final_y, 'x');
+
+ diff_x = final_x - ih->data->start_x;
+ diff_y = final_y - ih->data->start_y;
+
+ if(direction == ISBOX_WEST)
+ diff_x = -diff_x;
+
+ if(direction == ISBOX_NORTH)
+ diff_y = -diff_y;
+
+ *w = diff_x + ih->data->start_w;
+ *h = diff_y + ih->data->start_h;
+}
+
+static void iSboxShakeControls(Ihandle* ih)
+{
+ int new_w, new_h;
+
+ iSboxGetFinalSize(ih, ih->data->direction, &new_w, &new_h);
+
+ if (ih->data->direction == ISBOX_WEST || ih->data->direction == ISBOX_EAST)
+ {
+ if (new_w != ih->data->w)
+ {
+ if (new_w > ih->naturalwidth)
+ iSboxSaveDimension(ih, new_w, ih->data->h);
+ else
+ iSboxSaveDimension(ih, new_w, ih->naturalwidth);
+ }
+ }
+ else if (ih->data->direction == ISBOX_SOUTH || ih->data->direction == ISBOX_NORTH)
+ {
+ if(new_h != ih->data->h)
+ {
+ if (new_h > ih->naturalheight)
+ iSboxSaveDimension(ih, ih->data->w, new_h);
+ else
+ iSboxSaveDimension(ih, ih->naturalheight, new_h);
+ }
+ }
+
+ IupRefresh(ih); /* may affect all the elements in the dialog */
+}
+
+
+/*****************************************************************************\
+|* Callbacks of canvas bar *|
+\*****************************************************************************/
+
+
+static int iSboxMotion_CB(Ihandle* bar, int x, int y, char *r)
+{
+ Ihandle* ih = bar->parent;
+
+ if (ih->data->isholding)
+ iSboxShakeControls(ih);
+
+ (void)x;
+ (void)y;
+ (void)r;
+ return IUP_DEFAULT;
+}
+
+static int iSboxButton_CB(Ihandle* bar, int button, int pressed, int x, int y, char* status)
+{
+ Ihandle* ih = bar->parent;
+
+ if (button!=IUP_BUTTON1)
+ return IUP_DEFAULT;
+
+ if (!ih->data->isholding && pressed)
+ {
+ ih->data->isholding = 1;
+
+ /* Save the cursor position */
+ iupStrToIntInt(IupGetGlobal("CURSORPOS"), &ih->data->start_x, &ih->data->start_y, 'x');
+
+ /* Save the initial size */
+ ih->data->start_w = ih->data->w;
+ ih->data->start_h = ih->data->h;
+ }
+ else if (ih->data->isholding && !pressed)
+ ih->data->isholding = 0;
+
+ (void)x;
+ (void)y;
+ (void)status;
+ return IUP_DEFAULT;
+}
+
+static int iSboxFocus_CB(Ihandle* bar, int focus)
+{
+ Ihandle* ih = bar->parent;
+
+ if (!ih || focus) /* use only kill focus */
+ return IUP_DEFAULT;
+
+ if (ih->data->isholding)
+ ih->data->isholding = 0;
+
+ return IUP_DEFAULT;
+}
+
+
+/*****************************************************************************\
+|* Attributes *|
+\*****************************************************************************/
+
+
+static char* iSboxGetClientSizeAttrib(Ihandle* ih)
+{
+ int width, height;
+ char* str = iupStrGetMemory(20);
+ width = ih->currentwidth;
+ height = ih->currentheight;
+ width -= iSboxGetXborder(ih);
+ height -= iSboxGetYborder(ih);
+ if (width < 0) width = 0;
+ if (height < 0) height = 0;
+ sprintf(str, "%dx%d", width, height);
+ return str;
+}
+
+static int iSboxSetColorAttrib(Ihandle* ih, const char* value)
+{
+ IupSetAttribute(ih->firstchild, "BGCOLOR", value);
+ return 0; /* do not store value in hash table */
+}
+
+static int iSboxSetDirectionAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->handle) /* only before map */
+ return 0;
+
+ if (iupStrEqual(value, "NORTH"))
+ ih->data->direction = ISBOX_NORTH;
+ else if(iupStrEqual(value, "SOUTH"))
+ ih->data->direction = ISBOX_SOUTH;
+ else if(iupStrEqual(value, "WEST"))
+ ih->data->direction = ISBOX_WEST;
+ else /* Default = EAST */
+ ih->data->direction = ISBOX_EAST;
+
+ if (ih->data->direction == ISBOX_EAST || ih->data->direction == ISBOX_WEST)
+ IupSetAttribute(ih->firstchild, "CURSOR", "RESIZE_WE");
+ else
+ IupSetAttribute(ih->firstchild, "CURSOR", "RESIZE_NS");
+
+ return 0; /* do not store value in hash table */
+}
+
+
+/*****************************************************************************\
+|* Methods *|
+\*****************************************************************************/
+
+
+static void iSboxComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ int natural_w = ih->naturalwidth,
+ natural_h = ih->naturalheight;
+
+ /* only allow expand in the oposite direction, complement iupBaseContainerUpdateExpand */
+ if (ih->data->direction == ISBOX_EAST || ih->data->direction == ISBOX_WEST)
+ ih->expand &= ~IUP_EXPAND_WIDTH;
+ else
+ ih->expand &= ~IUP_EXPAND_HEIGHT;
+
+ /* always has at least one child, the bar */
+
+ /* This is an unusual element, the iupBaseComputeNaturalSize logic is done twice, one here and one back there. */
+
+ if (ih->firstchild->brother)
+ {
+ Ihandle* child = ih->firstchild->brother;
+
+ /* update child natural size first */
+ iupBaseComputeNaturalSize(child);
+
+ *expand = child->expand;
+
+ /* calculate as in iupBaseComputeNaturalSize */
+ natural_w = iupMAX(natural_w, child->naturalwidth + iSboxGetXborder(ih));
+ natural_h = iupMAX(natural_h, child->naturalheight + iSboxGetYborder(ih));
+ }
+
+ /* update control to fit its children according to direction */
+
+ /* bar */
+ if (ih->data->direction == ISBOX_EAST || ih->data->direction == ISBOX_WEST)
+ {
+ ih->data->w = iupMAX(natural_w, ih->data->w);
+ ih->data->h = natural_h;
+ }
+ else /* ISBOX_NORTH || ISBOX_SOUTH */
+ {
+ ih->data->w = natural_w;
+ ih->data->h = iupMAX(natural_h, ih->data->h);
+ }
+
+ /* child */
+ if (ih->firstchild->brother)
+ {
+ Ihandle* child = ih->firstchild->brother;
+ child->naturalwidth = ih->data->w - iSboxGetXborder(ih);
+ child->naturalheight = ih->data->h - iSboxGetYborder(ih);
+ }
+
+ *w = ih->data->w;
+ *h = ih->data->h;
+}
+
+static void iSboxSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink)
+{
+ /* bar */
+ if ((ih->data->direction == ISBOX_NORTH || ih->data->direction == ISBOX_SOUTH))
+ {
+ ih->firstchild->currentwidth = ih->currentwidth;
+ ih->firstchild->currentheight = ISBOX_THICK;
+ }
+ else
+ {
+ ih->firstchild->currentwidth = ISBOX_THICK;
+ ih->firstchild->currentheight = ih->currentheight;
+ }
+
+ /* child */
+ if (ih->firstchild->brother)
+ {
+ int width = ih->currentwidth-iSboxGetXborder(ih);
+ int height = ih->currentheight-iSboxGetYborder(ih);
+ if (width < 0) width = 0;
+ if (height < 0) height = 0;
+
+ iupBaseSetCurrentSize(ih->firstchild->brother, width, height, shrink);
+ }
+}
+
+static void iSboxSetChildrenPositionMethod(Ihandle* ih, int x, int y)
+{
+ int posx = 0, posy = 0;
+
+ /* bar */
+ if (ih->data->direction == ISBOX_EAST)
+ {
+ posx = ih->data->w - ISBOX_THICK;
+ if (posx<0) posx = 0;
+ }
+ if (ih->data->direction == ISBOX_SOUTH)
+ {
+ posy = ih->data->h - ISBOX_THICK;
+ if (posy<0) posy = 0;
+ }
+
+ iupBaseSetPosition(ih->firstchild, x+posx, y+posy);
+
+ /* child */
+ if (ih->firstchild->brother)
+ {
+ iSboxAddDecorOffset(ih, &x, &y);
+ iupBaseSetPosition(ih->firstchild->brother, x, y);
+ }
+}
+
+static int iSboxCreateMethod(Ihandle* ih, void** params)
+{
+ Ihandle* bar;
+
+ ih->data = iupALLOCCTRLDATA();
+
+ ih->data->direction = ISBOX_EAST;
+ ih->data->h = -1;
+ ih->data->w = -1;
+
+ bar = IupCanvas(NULL);
+ iupChildTreeAppend(ih, bar); /* bar will always be the firstchild */
+
+ IupSetAttribute(bar, "BORDER", "YES");
+ IupSetAttribute(bar, "EXPAND", "NO");
+ IupSetAttribute(bar, "BGCOLOR", "192 192 192");
+
+ /* Setting callbacks */
+ IupSetCallback(bar, "BUTTON_CB", (Icallback) iSboxButton_CB);
+ IupSetCallback(bar, "FOCUS_CB", (Icallback) iSboxFocus_CB);
+ IupSetCallback(bar, "MOTION_CB", (Icallback) iSboxMotion_CB);
+
+ if (params)
+ {
+ Ihandle** iparams = (Ihandle**)params;
+ if (*iparams)
+ IupAppend(ih, *iparams);
+ }
+
+ return IUP_NOERROR;
+}
+
+Iclass* iupSboxGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "sbox";
+ ic->format = "H"; /* one optional ihandle */
+ ic->nativetype = IUP_TYPEVOID;
+ ic->childtype = IUP_CHILDMANY; /* should be IUP_CHILDONE but has the bar (a IupCanvas) as firstchild */
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Create = iSboxCreateMethod;
+ ic->Map = iupBaseTypeVoidMapMethod;
+
+ ic->ComputeNaturalSize = iSboxComputeNaturalSizeMethod;
+ ic->SetChildrenCurrentSize = iSboxSetChildrenCurrentSizeMethod;
+ ic->SetChildrenPosition = iSboxSetChildrenPositionMethod;
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Base Container */
+ iupClassRegisterAttribute(ic, "CLIENTSIZE", iSboxGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* IupSbox only */
+ iupClassRegisterAttribute(ic, "COLOR", NULL, iSboxSetColorAttrib, IUPAF_SAMEASSYSTEM, "192 192 192", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DIRECTION", NULL, iSboxSetDirectionAttrib, IUPAF_SAMEASSYSTEM, "EAST", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
+
+Ihandle* IupSbox(Ihandle* child)
+{
+ void *params[2];
+ params[0] = (void*)child;
+ params[1] = NULL;
+ return IupCreatev("sbox", params);
+}
diff --git a/iup/src/iup_scanf.c b/iup/src/iup_scanf.c
new file mode 100755
index 0000000..f8ef97b
--- /dev/null
+++ b/iup/src/iup_scanf.c
@@ -0,0 +1,200 @@
+/** \file
+ * \brief IupScanf implementation.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+
+#include "iup.h"
+
+#include "iup_predial.h"
+#include "iup_str.h"
+#include "iup_assert.h"
+
+
+#define ALLOC(n,t) ((t *)calloc((n),sizeof(t)))
+#define REQUIRE(b) {if (!(b)) goto cleanup;}
+
+int IupScanf (const char *format, ...)
+{
+ int i;
+ int fields_out_count=(-1); /* return code if not error (error < 0) */
+ int error=(-1); /* return code if error (error >= 0) */
+ int fields_in_count;
+ int *width=NULL;
+ int *scroll=NULL;
+ char **prompt=NULL;
+ char **text=NULL;
+ char *title=NULL;
+ char *s=NULL;
+ char *s1=NULL;
+ char *outf=NULL;
+ va_list va;
+
+ iupASSERT(format!=NULL);
+ if (!format)
+ return 0;
+
+ fields_in_count=iupStrCountChar(format,'\n')-1;
+ REQUIRE(fields_in_count>0);
+ width=ALLOC(fields_in_count, int);
+ REQUIRE(width!=NULL);
+ scroll=ALLOC(fields_in_count, int);
+ REQUIRE(scroll!=NULL);
+ prompt=ALLOC(fields_in_count, char *);
+ REQUIRE(prompt!=NULL);
+ text=ALLOC(fields_in_count, char *);
+ REQUIRE(text!=NULL);
+
+ va_start(va,format);
+ REQUIRE ((s1=s=(char *)iupStrDup(format)) != NULL);
+ title=iupStrCopyUntil(&s,'\n');
+ REQUIRE(title!=NULL);
+ for (i=0; i<fields_in_count; ++i)
+ {
+ int n;
+ prompt[i]=iupStrCopyUntil(&s,'%');
+ REQUIRE(prompt[i]!=NULL);
+ n=sscanf(s,"%d.%d",width+i,scroll+i);
+ REQUIRE(n==2);
+ s=strchr(s,'%');
+ REQUIRE(s!=NULL);
+ if (outf) free(outf);
+ outf = iupStrCopyUntil(&s, '\n');
+ text[i]=ALLOC(width[i]+1,char);
+ REQUIRE(text[i]!=NULL);
+
+ switch (s[-2])
+ {
+ case 'd':
+ case 'i':
+ case 'o':
+ case 'u':
+ case 'x':
+ case 'X':
+ if (s[-3]=='l')
+ sprintf(text[i],outf,*((long *)va_arg(va,long *)));
+ else if (s[-3]=='h')
+ sprintf(text[i],outf,*((short *)va_arg(va,short *)));
+ else
+ sprintf(text[i],outf,*((int *)va_arg(va,int *)));
+ break;
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'E':
+ case 'G':
+ if (s[-3]=='l')
+ sprintf(text[i],outf,*((double *)va_arg(va,double *)));
+ else
+ sprintf(text[i],outf,*((float *)va_arg(va,float *)));
+ break;
+ case 's':
+ sprintf(text[i],outf,((char *)va_arg(va,char *)));
+ break;
+ default:
+ goto cleanup;
+ }
+ }
+ va_end(va);
+
+ REQUIRE(iupDataEntry(fields_in_count,width,scroll,title,prompt,text)>0);
+
+ fields_out_count=0;
+ va_start(va,format);
+ s=strchr(format,'\n')+1;
+ for (i=0; i<fields_in_count; ++i)
+ {
+ s=strchr(s,'\n')+1;
+ switch (s[-2])
+ {
+ case 'd':
+ case 'u':
+ if (s[-3]=='l')
+ {
+ if (sscanf(text[i],"%ld",((long *)va_arg(va,long *)))!=1)
+ if (error < 0) error = fields_out_count;
+ }
+ else if (s[-3]=='h')
+ {
+ if (sscanf(text[i],"%hd",((short *)va_arg(va,short *)))!=1)
+ if (error < 0) error = fields_out_count;
+ }
+ else
+ {
+ if (sscanf(text[i],"%d",((int *)va_arg(va,int *)))!=1)
+ if (error < 0) error = fields_out_count;
+ }
+ break;
+ case 'i':
+ case 'o':
+ case 'x':
+ case 'X':
+ if (s[-3]=='l')
+ {
+ if (sscanf(text[i],"%li",((long *)va_arg(va,long *)))!=1)
+ if (error < 0) error = fields_out_count;
+ }
+ else if (s[-3]=='h')
+ {
+ if (sscanf(text[i],"%hi",((short *)va_arg(va,short *)))!=1)
+ if (error < 0) error = fields_out_count;
+ }
+ else
+ {
+ if (sscanf(text[i],"%i",((int *)va_arg(va,int *)))!=1)
+ if (error < 0) error = fields_out_count;
+ }
+ break;
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'E':
+ case 'G':
+ if (s[-3]=='l')
+ {
+ if (sscanf(text[i],"%lg",((double *)va_arg(va,double *)))!=1)
+ if (error < 0) error = fields_out_count;
+ }
+ else
+ {
+ if (sscanf(text[i], "%g", ((float *)va_arg(va,float *)))!=1)
+ if (error < 0) error = fields_out_count;
+ }
+ break;
+ case 's':
+ {
+ char *s=(char *)va_arg(va,char *);
+ strcpy(s,text[i]);
+ }
+ break;
+ }
+ ++fields_out_count;
+ }
+ va_end(va);
+
+cleanup:
+ if (s1) free(s1);
+ if (title) free(title);
+ if (width) free(width);
+ if (scroll) free(scroll);
+ if (outf) free(outf);
+ if (prompt)
+ {
+ for (i=0; i<fields_in_count; ++i)
+ if (prompt[i]) free(prompt[i]);
+ free(prompt);
+ }
+ if (text)
+ {
+ for (i=0; i<fields_in_count; ++i)
+ if (text[i]) free(text[i]);
+ free(text);
+ }
+
+ return (error < 0) ? fields_out_count : error;
+}
diff --git a/iup/src/iup_show.c b/iup/src/iup_show.c
new file mode 100755
index 0000000..9ea1408
--- /dev/null
+++ b/iup/src/iup_show.c
@@ -0,0 +1,256 @@
+/** \file
+ * \brief show/popup/hide/map
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdarg.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_class.h"
+#include "iup_dialog.h"
+#include "iup_menu.h"
+#include "iup_assert.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+
+
+void IupUnmap(Ihandle *ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ /* Invalid if it is NOT mapped. */
+ if (!ih->handle)
+ return;
+
+ /* unmap children */
+ {
+ Ihandle* child = ih->firstchild;
+ while (child)
+ {
+ IupUnmap(child);
+ child = child->brother;
+ }
+ }
+
+ /* only call UNMAP_CB for controls that have a native representation */
+ if (ih->iclass->nativetype != IUP_TYPEVOID)
+ {
+ Icallback unmap_cb = IupGetCallback(ih, "UNMAP_CB");
+ if (unmap_cb) unmap_cb(ih);
+ }
+
+ /* unmap from the native system */
+ iupClassObjectUnMap(ih);
+ ih->handle = NULL;
+}
+
+static char* iShowGetVisible(Ihandle* ih)
+{
+ char* value = iupAttribGet(ih, "VISIBLE"); /* Check on the element first */
+ while (!value)
+ {
+ ih = ih->parent; /* iheritance here independs on the attribute */
+ if (!ih)
+ return NULL;
+
+ value = iupAttribGet(ih, "VISIBLE");
+
+ /* only recursive up to the native parent */
+ if (ih->iclass->nativetype != IUP_TYPEVOID)
+ return value; /* can be NULL */
+ }
+
+ return value;
+}
+
+static void iShowUpdateVisible(Ihandle* ih)
+{
+ int inherit;
+ /* although default is VISIBLE=YES,
+ when mapped the element is still hidden.
+ So we must manually update the visible state. */
+ char* value = iShowGetVisible(ih);
+ iupClassObjectSetAttribute(ih, "VISIBLE", value, &inherit);
+}
+
+int IupMap(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return IUP_INVALID;
+
+ /* calculate position and size for all children */
+ if (ih->iclass->nativetype == IUP_TYPEDIALOG)
+ iupLayoutCompute(ih);
+
+ /* already mapped */
+ if (ih->handle)
+ {
+ if (ih->iclass->nativetype == IUP_TYPEDIALOG)
+ iupLayoutUpdate(ih);
+
+ return IUP_NOERROR;
+ }
+
+ /* map to the native system */
+ if (iupClassObjectMap(ih) == IUP_ERROR)
+ {
+ iupERROR("Error during IupMap.");
+ return IUP_ERROR;
+ }
+
+ /* update FONT, must be the before several others */
+ if (ih->iclass->nativetype != IUP_TYPEVOID &&
+ ih->iclass->nativetype != IUP_TYPEIMAGE &&
+ ih->iclass->nativetype != IUP_TYPEMENU)
+ iupUpdateStandardFontAttrib(ih);
+
+ /* ensure attributes default values, at this time only the ones that need to be set after map */
+ iupClassObjectEnsureDefaultAttributes(ih);
+
+ /* check visible state if not a dialog */
+ if (ih->iclass->nativetype == IUP_TYPECANVAS ||
+ ih->iclass->nativetype == IUP_TYPECONTROL)
+ iShowUpdateVisible(ih);
+
+ /* updates the defined attributes in the native system. */
+ iupAttribUpdate(ih);
+
+ /* updates attributes defined in the parent tree */
+ iupAttribUpdateFromParent(ih);
+
+ /* map children */
+ {
+ Ihandle* child = ih->firstchild;
+ while (child)
+ {
+ if (IupMap(child) == IUP_ERROR)
+ return IUP_ERROR;
+
+ child = child->brother;
+ }
+ }
+
+ /* moves and resizes the elements to reflect the layout computation */
+ /* if the dialog is visible will be reflected in the user interface */
+ if (ih->iclass->nativetype == IUP_TYPEDIALOG)
+ iupLayoutUpdate(ih);
+
+ /* only call MAP_CB for controls that have a native representation */
+ if (ih->iclass->nativetype != IUP_TYPEVOID)
+ {
+ Icallback map_cb = IupGetCallback(ih, "MAP_CB");
+ if (map_cb) map_cb(ih);
+ }
+
+ return IUP_NOERROR;
+}
+
+int IupPopup(Ihandle *ih, int x, int y)
+{
+ int ret;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return IUP_INVALID;
+
+ if (ih->iclass->nativetype != IUP_TYPEDIALOG &&
+ ih->iclass->nativetype != IUP_TYPEMENU)
+ {
+ iupERROR("Must be a menu or dialog in IupPopup.");
+ return IUP_INVALID;
+ }
+
+ ret = IupMap(ih);
+ if (ret == IUP_ERROR)
+ return ret;
+
+ if (ih->iclass->nativetype == IUP_TYPEDIALOG)
+ ret = iupDialogPopup(ih, x, y);
+ else
+ ret = iupMenuPopup(ih, x, y);
+
+ if (ret != IUP_NOERROR)
+ {
+ iupERROR("Error during IupPopup.");
+ return ret;
+ }
+
+ return IUP_NOERROR;
+}
+
+int IupShowXY(Ihandle *ih, int x, int y)
+{
+ int ret;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return IUP_INVALID;
+
+ if (ih->iclass->nativetype != IUP_TYPEDIALOG)
+ {
+ iupERROR("Must be a dialog in IupShowXY.");
+ return IUP_INVALID;
+ }
+
+ ret = IupMap(ih);
+ if (ret == IUP_ERROR)
+ return ret;
+
+ ret = iupDialogShowXY(ih, x, y);
+ if (ret != IUP_NOERROR)
+ {
+ iupERROR("Error during IupShowXY.");
+ return ret;
+ }
+
+ return IUP_NOERROR;
+}
+
+int IupShow(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return IUP_INVALID;
+
+ if (ih->iclass->nativetype != IUP_TYPEDIALOG)
+ IupSetAttribute(ih, "VISIBLE", "YES");
+ else
+ {
+ int ret = IupMap(ih);
+ if (ret == IUP_ERROR)
+ return ret;
+
+ ret = iupDialogShowXY(ih, IUP_CURRENT, IUP_CURRENT);
+ if (ret != IUP_NOERROR)
+ {
+ iupERROR("Error during IupShow.");
+ return ret;
+ }
+ }
+
+ return IUP_NOERROR;
+}
+
+int IupHide(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return IUP_INVALID;
+
+ if (ih->iclass->nativetype != IUP_TYPEDIALOG)
+ IupSetAttribute(ih, "VISIBLE", "NO");
+ else if (ih->handle)
+ iupDialogHide(ih);
+
+ return IUP_NOERROR;
+}
diff --git a/iup/src/iup_spin.c b/iup/src/iup_spin.c
new file mode 100755
index 0000000..6fadab4
--- /dev/null
+++ b/iup/src/iup_spin.c
@@ -0,0 +1,301 @@
+/** \file
+ * \brief Spin control
+ *
+ * See Copyright Notice in "iup.h"
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+#include "iup_childtree.h"
+
+
+static Ihandle* spin_timer = NULL;
+
+
+static int iSpinCallCB(Ihandle* ih, int dub, int ten, int sign)
+{
+ IFni cb;
+
+ /* get the callback on the spin or on the spinbox */
+ Ihandle* spinbox = (Ihandle*)iupAttribGet(ih->parent, "_IUPSPIN_BOX");
+ if (spinbox)
+ ih = spinbox;
+ else
+ ih = ih->parent;
+
+ cb = (IFni) IupGetCallback(ih, "SPIN_CB");
+ if (cb)
+ {
+ return cb(ih, sign*(dub && ten ? 100 :
+ ten ? 10 :
+ dub ? 2 : 1));
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iSpinTimerCB(Ihandle* ih)
+{
+ Ihandle* spin_button = (Ihandle*)iupAttribGet(ih, "_IUPSPIN_BUTTON");
+ char* status = iupAttribGet(ih, "_IUPSPIN_STATUS");
+ int spin_dir = iupAttribGetInt(ih, "_IUPSPIN_DIR");
+ int count = iupAttribGetInt(ih, "_IUPSPIN_COUNT");
+ char* reconfig = NULL;
+
+ if(count == 0) /* first time */
+ reconfig = "50";
+ else if(count == 14) /* 300 + 14*50 = 1000 (1 second) */
+ reconfig = "25";
+ else if(count == 34) /* 300 + 14*50 + 20*50 = 2000 (2 seconds) */
+ reconfig = "10";
+
+ if (reconfig)
+ {
+ IupSetAttribute(ih, "RUN", "NO");
+ IupSetAttribute(ih, "TIME", reconfig);
+ IupSetAttribute(ih, "RUN", "YES");
+ }
+
+ iupAttribSetInt(ih, "_IUPSPIN_COUNT", count + 1);
+
+ return iSpinCallCB(spin_button, iup_isshift(status), iup_iscontrol(status), spin_dir);
+}
+
+static void iSpinPrepareTimer(Ihandle* ih, char* status, char* dir)
+{
+ (void)ih;
+
+ iupAttribSetStr(spin_timer, "_IUPSPIN_BUTTON", (char*)ih);
+
+ iupAttribStoreStr(spin_timer, "_IUPSPIN_STATUS", status);
+
+ iupAttribSetStr(spin_timer, "_IUPSPIN_DIR", dir);
+ iupAttribSetStr(spin_timer, "_IUPSPIN_COUNT", "0");
+
+ IupSetAttribute(spin_timer, "TIME", "400");
+ IupSetAttribute(spin_timer, "RUN", "YES");
+}
+
+static int iSpinK_SP(Ihandle* ih)
+{
+ int dir = iupAttribGetInt(ih, "_IUPSPIN_DIR");
+
+ return iSpinCallCB(ih, 0, 0, dir);
+}
+
+static int iSpinK_sSP(Ihandle* ih)
+{
+ int dir = iupAttribGetInt(ih, "_IUPSPIN_DIR");
+
+ return iSpinCallCB(ih, 1, 0, dir);
+}
+
+static int iSpinK_cSP(Ihandle* ih)
+{
+ int dir = iupAttribGetInt(ih, "_IUPSPIN_DIR");
+
+ return iSpinCallCB(ih, 0, 1, dir);
+}
+
+static int iSpinButtonCB(Ihandle* ih, int but, int pressed, int x, int y, char* status)
+{
+ (void)x;
+ (void)y;
+
+ if (pressed && but == IUP_BUTTON1)
+ {
+ int dir = iupAttribGetInt(ih, "_IUPSPIN_DIR");
+
+ iSpinPrepareTimer(ih, status, iupAttribGet(ih, "_IUPSPIN_DIR"));
+
+ return iSpinCallCB(ih, iup_isshift(status), iup_iscontrol(status), dir);
+ }
+ else if (!pressed && but == IUP_BUTTON1)
+ {
+ IupSetAttribute(spin_timer, "RUN", "NO");
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iSpinCreateMethod(Ihandle* ih, void** params)
+{
+ Ihandle* bt_up;
+ Ihandle* bt_down;
+ (void)params;
+
+ /* Button UP */
+ bt_up = IupButton(NULL, NULL);
+
+ IupSetAttribute(bt_up, "EXPAND", "NO");
+ IupSetAttribute(bt_up, "IMAGE", "IupSpinUpImage");
+ IupSetAttribute(bt_up, "_IUPSPIN_DIR", "1");
+ IupSetAttribute(bt_up, "CANFOCUS", "NO");
+
+ IupSetCallback(bt_up, "BUTTON_CB", (Icallback) iSpinButtonCB);
+ IupSetCallback(bt_up, "K_SP", (Icallback) iSpinK_SP);
+ IupSetCallback(bt_up, "K_sSP", (Icallback) iSpinK_sSP);
+ IupSetCallback(bt_up, "K_cSP", (Icallback) iSpinK_cSP);
+
+ /* Button DOWN */
+ bt_down = IupButton(NULL, NULL);
+
+ IupSetAttribute(bt_down, "EXPAND", "NO");
+ IupSetAttribute(bt_down, "IMAGE", "IupSpinDownImage");
+ IupSetAttribute(bt_down, "_IUPSPIN_DIR", "-1");
+ IupSetAttribute(bt_down, "CANFOCUS", "NO");
+
+ IupSetCallback(bt_down, "BUTTON_CB", (Icallback) iSpinButtonCB);
+ IupSetCallback(bt_down, "K_SP", (Icallback) iSpinK_SP);
+ IupSetCallback(bt_down, "K_sSP", (Icallback) iSpinK_sSP);
+ IupSetCallback(bt_down, "K_cSP", (Icallback) iSpinK_cSP);
+
+ /* manually add the buttons as a children */
+ ih->firstchild = bt_up;
+ bt_up->parent = ih;
+ bt_up->brother = bt_down;
+ bt_down->parent = ih;
+
+ IupSetAttribute(ih, "GAP", "0");
+ IupSetAttribute(ih, "MARGIN", "0x0");
+
+ return IUP_NOERROR;
+}
+
+static int iSpinboxCreateMethod(Ihandle* ih, void** params)
+{
+ Ihandle *spin, *ctrl;
+
+ if (!params || !(params[0]))
+ return IUP_ERROR;
+
+ IupSetAttribute(ih, "GAP", "0");
+ IupSetAttribute(ih, "MARGIN", "0x0");
+ IupSetAttribute(ih, "ALIGNMENT", "ACENTER");
+
+ ctrl = (Ihandle*)(params[0]);
+ iupChildTreeAppend(ih, ctrl);
+
+ spin = IupSpin();
+ iupChildTreeAppend(ih, spin);
+
+ iupAttribSetStr(spin, "_IUPSPIN_BOX", (char*)ih);
+
+ return IUP_NOERROR;
+}
+
+static void iSpinLoadImages(void)
+{
+ Ihandle* img;
+
+ /* Spin UP image */
+ unsigned char iupspin_up_img[] = {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 0, 1, 1, 1, 1,
+ 1, 1, 1, 0, 0, 0, 1, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 1, 1,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0
+ };
+
+ /* Spin DOWN image */
+ unsigned char iupspin_down_img[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1,
+ 1, 1, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 1, 0, 0, 0, 1, 1, 1,
+ 1, 1, 1, 1, 0, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1
+ };
+
+ img = IupImage(9, 6, iupspin_up_img);
+ IupSetAttribute(img, "0", "0 0 0");
+ IupSetAttribute(img, "1", "BGCOLOR");
+ IupSetHandle("IupSpinUpImage", img);
+
+ img = IupImage(9, 6, iupspin_down_img);
+ IupSetAttribute(img, "0", "0 0 0");
+ IupSetAttribute(img, "1", "BGCOLOR");
+ IupSetHandle("IupSpinDownImage", img);
+}
+
+static void iSpinReleaseMethod(Iclass* ic)
+{
+ (void)ic;
+
+ if (spin_timer)
+ {
+ /* no need to destroy the images, they will be destroyed by IupClose automatically */
+ IupDestroy(spin_timer);
+ spin_timer = NULL;
+ }
+}
+
+Iclass* iupSpinboxGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupHboxGetClass());
+
+ ic->name = "spinbox";
+ ic->format = "h"; /* one Ihandle */
+ ic->nativetype = IUP_TYPEVOID;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ iupClassRegisterCallback(ic, "SPIN_CB", "i");
+
+ /* Class functions */
+ ic->Create = iSpinboxCreateMethod;
+
+ return ic;
+}
+
+Iclass* iupSpinGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupVboxGetClass());
+
+ ic->name = "spin";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPEVOID;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Create = iSpinCreateMethod;
+ ic->Release = iSpinReleaseMethod;
+
+ iupClassRegisterCallback(ic, "SPIN_CB", "i");
+
+ if (!spin_timer)
+ {
+ iSpinLoadImages();
+
+ spin_timer = IupTimer();
+ IupSetCallback(spin_timer, "ACTION_CB", (Icallback) iSpinTimerCB);
+ }
+
+ return ic;
+}
+
+Ihandle* IupSpin(void)
+{
+ return IupCreate("spin");
+}
+
+Ihandle* IupSpinbox(Ihandle* ctrl)
+{
+ void *params[2];
+ params[0] = (void*)ctrl;
+ params[1] = NULL; /* must add NULL because spinbox inherit from Hbox */
+ return IupCreatev("spinbox", params);
+}
diff --git a/iup/src/iup_stdcontrols.h b/iup/src/iup_stdcontrols.h
new file mode 100755
index 0000000..11499ae
--- /dev/null
+++ b/iup/src/iup_stdcontrols.h
@@ -0,0 +1,76 @@
+/** \file
+ * \brief Standard Controls Class Initialization functions.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_STDCONTROLS_H
+#define __IUP_STDCONTROLS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+Iclass* iupDialogGetClass(void);
+Iclass* iupMessageDlgGetClass(void);
+Iclass* iupColorDlgGetClass(void);
+Iclass* iupFontDlgGetClass(void);
+Iclass* iupFileDlgGetClass(void);
+
+Iclass* iupLabelGetClass(void);
+Iclass* iupButtonGetClass(void);
+Iclass* iupToggleGetClass(void);
+Iclass* iupRadioGetClass(void);
+Iclass* iupCanvasGetClass(void);
+Iclass* iupFrameGetClass(void);
+Iclass* iupProgressBarGetClass(void);
+Iclass* iupTextGetClass(void);
+Iclass* iupMultilineGetClass(void);
+Iclass* iupValGetClass(void);
+Iclass* iupTabsGetClass(void);
+Iclass* iupSpinGetClass(void);
+Iclass* iupSpinboxGetClass(void);
+Iclass* iupListGetClass(void);
+Iclass* iupTreeGetClass(void);
+
+Iclass* iupMenuGetClass(void);
+Iclass* iupItemGetClass(void);
+Iclass* iupSeparatorGetClass(void);
+Iclass* iupSubmenuGetClass(void);
+
+Iclass* iupFillGetClass(void);
+Iclass* iupHboxGetClass(void);
+Iclass* iupVboxGetClass(void);
+Iclass* iupZboxGetClass(void);
+Iclass* iupCboxGetClass(void);
+Iclass* iupSboxGetClass(void);
+Iclass* iupNormalizerGetClass(void);
+
+Iclass* iupTimerGetClass(void);
+Iclass* iupImageGetClass(void);
+Iclass* iupImageRGBGetClass(void);
+Iclass* iupImageRGBAGetClass(void);
+Iclass* iupUserGetClass(void);
+Iclass* iupClipboardGetClass(void);
+
+/*************************************************/
+
+void iupdrvMessageDlgInitClass(Iclass* ic);
+void iupdrvColorDlgInitClass(Iclass* ic);
+void iupdrvFontDlgInitClass(Iclass* ic);
+void iupdrvFileDlgInitClass(Iclass* ic);
+
+/************************************************/
+
+/* Common definition of the canvas class */
+typedef struct _iupCanvas {
+ int sb; /* scrollbar configuration, valid only after map, use iupBaseGetScrollbar before map */
+ float posx, posy;
+} iupCanvas;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_str.c b/iup/src/iup_str.c
new file mode 100755
index 0000000..68976f1
--- /dev/null
+++ b/iup/src/iup_str.c
@@ -0,0 +1,716 @@
+/** \file
+ * \brief String Utilities
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "iup_str.h"
+
+
+/* Line breaks can be:
+\n - UNIX
+\r - Mac
+\r\n - DOS/Windows
+*/
+
+
+int iupStrEqual(const char* str1, const char* str2)
+{
+ if (str1 == str2) return 1;
+ if (!str1 || !str2 || *str1 != *str2) return 0;
+ return (strcmp(str1, str2)==0)? 1: 0;
+}
+
+int iupStrEqualNoCase(const char* str1, const char* str2)
+{
+ int i = 0;
+ if (str1 == str2) return 1;
+ if (!str1 || !str2 || tolower(*str1) != tolower(*str2)) return 0;
+
+ while (str1[i] && str2[i] && tolower(str1[i])==tolower(str2[i]))
+ i++;
+ if (str1[i] == str2[i]) return 1;
+
+ return 0;
+}
+
+int iupStrEqualPartial(const char* str1, const char* str2)
+{
+ if (str1 == str2) return 1;
+ if (!str1 || !str2 || *str1 != *str2) return 0;
+ return (strncmp(str1, str2, strlen(str2))==0)? 1: 0;
+}
+
+int iupStrBoolean(const char* str)
+{
+ if (!str || str[0]==0) return 0;
+ if (iupStrEqualNoCase(str, "1")) return 1;
+ if (iupStrEqualNoCase(str, "YES")) return 1;
+ if (iupStrEqualNoCase(str, "ON")) return 1;
+ if (iupStrEqualNoCase(str, "TRUE")) return 1;
+ return 0;
+}
+
+void iupStrLower(char* dstr, const char* sstr)
+{
+ for (; *sstr; sstr++, dstr++)
+ *dstr = (char)tolower(*sstr);
+ *dstr = 0;
+}
+
+char *iupStrDup(const char *str)
+{
+ if (str)
+ {
+ int size = strlen(str)+1;
+ char *newstr = malloc(size);
+ if (newstr) memcpy(newstr, str, size);
+ return newstr;
+ }
+ return NULL;
+}
+
+const char* iupStrNextLine(const char* str, int *len)
+{
+ *len = 0;
+
+ while(*str!=0 && *str!='\n' && *str!='\r')
+ {
+ (*len)++;
+ str++;
+ }
+
+ if (*str=='\r' && *(str+1)=='n') /* DOS line end */
+ return str+2;
+ else if (*str=='\n' || *str=='\r') /* UNIX or MAC line end */
+ return str+1;
+ else
+ return str; /* no next line */
+}
+
+int iupStrLineCount(const char* str)
+{
+ int num_lin = 1;
+
+ if (!str)
+ return num_lin;
+
+ while(*str != 0)
+ {
+ while(*str!=0 && *str!='\n' && *str!='\r')
+ str++;
+
+ if (*str=='\r' && *(str+1)=='n') /* DOS line end */
+ {
+ num_lin++;
+ str+=2;
+ }
+ else if (*str=='\n' || *str=='\r') /* UNIX or MAC line end */
+ {
+ num_lin++;
+ str++;
+ }
+ }
+
+ return num_lin;
+}
+
+int iupStrCountChar(const char *str, int c)
+{
+ int n;
+ if (!str) return 0;
+ for (n=0; *str; str++)
+ {
+ if (*str==(char)c)
+ n++;
+ }
+ return n;
+}
+
+void iupStrCopyN(char* dst_str, int dst_max_size, const char* src_str)
+{
+ int size = strlen(src_str)+1;
+ if (size > dst_max_size) size = dst_max_size;
+ memcpy(dst_str, src_str, size);
+}
+
+char *iupStrCopyUntil(char **str, int c)
+{
+ char *p_str,*new_str;
+ if (!str || *str==NULL)
+ return NULL;
+
+ p_str=strchr(*str,c);
+ if (!p_str) return NULL;
+
+ {
+ int i;
+ int sl=(int)(p_str - (*str));
+
+ new_str = (char *) malloc (sl + 1);
+ if (!new_str) return NULL;
+
+ for (i = 0; i < sl; ++i)
+ new_str[i] = (*str)[i];
+
+ new_str[sl] = 0;
+ }
+
+ *str = p_str+1;
+ return new_str;
+}
+
+char *iupStrCopyUntilNoCase(char **str, int c)
+{
+ char *p_str,*new_str;
+ if (!str || *str==NULL)
+ return NULL;
+
+ p_str=strchr(*str,c); /* usually the lower case is enough */
+ if (!p_str && isalpha(c))
+ {
+ p_str=strchr(*str, toupper(c)); /* but check also for upper case */
+ if (!p_str) return NULL;
+ }
+
+ {
+ int i;
+ int sl=(int)(p_str - (*str));
+
+ new_str = (char *) malloc (sl + 1);
+ if (!new_str) return NULL;
+
+ for (i = 0; i < sl; ++i)
+ new_str[i] = (*str)[i];
+
+ new_str[sl] = 0;
+ }
+
+ *str = p_str+1;
+ return new_str;
+}
+
+char *iupStrGetMemory(int size)
+{
+#define MAX_BUFFERS 50
+ static char* buffers[MAX_BUFFERS];
+ static int buffers_sizes[MAX_BUFFERS];
+ static int buffers_index = -1;
+
+ int i;
+
+ if (size == -1) /* Frees memory */
+ {
+ buffers_index = -1;
+ for (i = 0; i < MAX_BUFFERS; i++)
+ {
+ if (buffers[i])
+ {
+ free(buffers[i]);
+ buffers[i] = NULL;
+ }
+ buffers_sizes[i] = 0;
+ }
+ return NULL;
+ }
+ else
+ {
+ char* ret_str;
+
+ if (buffers_index == -1)
+ {
+ memset(buffers, 0, sizeof(char*)*MAX_BUFFERS);
+ memset(buffers_sizes, 0, sizeof(int)*MAX_BUFFERS);
+ buffers_index = 0;
+ }
+
+ if (!(buffers[buffers_index]))
+ {
+ buffers_sizes[buffers_index] = size+1;
+ buffers[buffers_index] = (char*)malloc(buffers_sizes[buffers_index]);
+ }
+ else if (buffers_sizes[buffers_index] < size+1)
+ {
+ buffers_sizes[buffers_index] = size+1;
+ buffers[buffers_index] = (char*)realloc(buffers[buffers_index], buffers_sizes[buffers_index]);
+ }
+
+ memset(buffers[buffers_index], 0, buffers_sizes[buffers_index]);
+ ret_str = buffers[buffers_index];
+
+ buffers_index++;
+ if (buffers_index == MAX_BUFFERS)
+ buffers_index = 0;
+
+ return ret_str;
+ }
+}
+
+char *iupStrGetMemoryCopy(const char* str)
+{
+ if (str)
+ {
+ int size = strlen(str)+1;
+ char* ret_str = iupStrGetMemory(size);
+ memcpy(ret_str, str, size);
+ return ret_str;
+ }
+ else
+ return NULL;
+}
+
+int iupStrToRGBA(const char *str, unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *a)
+{
+ unsigned int ri = 0, gi = 0, bi = 0, ai = 0, ret;
+ if (!str) return 0;
+ ret = sscanf(str, "%u %u %u %u", &ri, &gi, &bi, &ai);
+ if (ret < 3) return 0;
+ if (ri > 255 || gi > 255 || bi > 255 || ai > 255) return 0;
+ *r = (unsigned char)ri;
+ *g = (unsigned char)gi;
+ *b = (unsigned char)bi;
+ if (ret == 4)
+ {
+ *a = (unsigned char)ai;
+ return 4;
+ }
+ else
+ return 3;
+}
+
+int iupStrToRGB(const char *str, unsigned char *r, unsigned char *g, unsigned char *b)
+{
+ unsigned int ri = 0, gi = 0, bi = 0;
+ if (!str) return 0;
+ if (sscanf(str, "%u %u %u", &ri, &gi, &bi) != 3) return 0;
+ if (ri > 255 || gi > 255 || bi > 255) return 0;
+ *r = (unsigned char)ri;
+ *g = (unsigned char)gi;
+ *b = (unsigned char)bi;
+ return 1;
+}
+
+int iupStrToInt(const char *str, int *i)
+{
+ if (!str) return 0;
+ if (sscanf(str, "%d", i) != 1) return 0;
+ return 1;
+}
+
+int iupStrToIntInt(const char *str, int *i1, int *i2, char sep)
+{
+ if (!str) return 0;
+
+ if (*str == sep || (isalpha(sep) && *str == toupper(sep))) /* no first value */
+ {
+ str++; /* skip separator */
+ if (sscanf(str, "%d", i2) != 1) return 0;
+ return 1;
+ }
+ else
+ {
+ char* p_str = iupStrCopyUntilNoCase((char**)&str, sep);
+
+ if (!p_str) /* no separator means no second value */
+ {
+ if (sscanf(str, "%d", i1) != 1) return 0;
+ return 1;
+ }
+ else if (*str==0) /* separator exists, but second value empty, also means no second value */
+ {
+ int ret = sscanf(p_str, "%d", i1);
+ free(p_str);
+ if (ret != 1) return 0;
+ return 1;
+ }
+ else
+ {
+ int ret = 0;
+ if (sscanf(p_str, "%d", i1) == 1) ret++;
+ if (sscanf(str, "%d", i2) == 1) ret++;
+ free(p_str);
+ return ret;
+ }
+ }
+}
+
+int iupStrToFloat(const char *str, float *f)
+{
+ if (!str) return 0;
+ if (sscanf(str, "%f", f) != 1) return 0;
+ return 1;
+}
+
+int iupStrToFloatFloat(const char *str, float *f1, float *f2, char sep)
+{
+ if (!str) return 0;
+
+ if (*str == sep || (isalpha(sep) && *str == toupper(sep))) /* no first value */
+ {
+ str++; /* skip separator */
+ if (sscanf(str, "%f", f2) != 1) return 0;
+ return 1;
+ }
+ else
+ {
+ char* p_str = iupStrCopyUntilNoCase((char**)&str, sep);
+
+ if (!p_str) /* no separator means no second value */
+ {
+ if (sscanf(str, "%f", f1) != 1) return 0;
+ return 1;
+ }
+ else if (*str==0) /* separator exists, but second value empty, also means no second value */
+ {
+ int ret = sscanf(p_str, "%f", f1);
+ free(p_str);
+ if (ret != 1) return 0;
+ return 1;
+ }
+ else
+ {
+ int ret = 0;
+ if (sscanf(p_str, "%f", f1) != 1) ret++;
+ if (sscanf(str, "%f", f2) != 1) ret++;
+ free(p_str);
+ return ret;
+ }
+ }
+}
+
+int iupStrToStrStr(const char *str, char *str1, char *str2, char sep)
+{
+ if (!str) return 0;
+
+ if (*str == sep || (isalpha(sep) && *str == toupper(sep))) /* no first value */
+ {
+ str++; /* skip separator */
+ strcpy(str2, str);
+ return 1;
+ }
+ else
+ {
+ char* p_str = iupStrCopyUntilNoCase((char**)&str, sep);
+
+ if (!p_str) /* no separator means no second value */
+ {
+ strcpy(str1, str);
+ return 1;
+ }
+ else if (*str==0) /* separator exists, but second value empty, also means no second value */
+ {
+ strcpy(str1, p_str);
+ free(p_str);
+ return 1;
+ }
+ else
+ {
+ strcpy(str1, p_str);
+ strcpy(str2, str);
+ free(p_str);
+ return 2;
+ }
+ }
+}
+
+char* iupStrFileGetPath(const char *file_name)
+{
+ /* Starts at the last character */
+ int len = strlen(file_name) - 1;
+ while (len != 0)
+ {
+ if (file_name[len] == '\\' || file_name[len] == '/')
+ {
+ len++;
+ break;
+ }
+
+ len--;
+ }
+
+ if (len == 0)
+ return NULL;
+
+ {
+ char* path = malloc(len+1);
+ memcpy(path, file_name, len);
+ path[len] = 0;
+
+ return path;
+ }
+}
+
+char* iupStrFileGetTitle(const char *file_name)
+{
+ /* Starts at the last character */
+ int len = strlen(file_name);
+ int offset = len - 1;
+ while (offset != 0)
+ {
+ if (file_name[offset] == '\\' || file_name[offset] == '/')
+ {
+ offset++;
+ break;
+ }
+
+ offset--;
+ }
+
+ {
+ int title_size = len - offset + 1;
+ char* file_title = malloc(title_size);
+ memcpy(file_title, file_name + offset, title_size);
+ return file_title;
+ }
+}
+
+char* iupStrFileGetExt(const char *file_name)
+{
+ /* Starts at the last character */
+ int len = strlen(file_name);
+ int offset = len - 1;
+ while (offset != 0)
+ {
+ /* if found a path separator stop. */
+ if (file_name[offset] == '\\' || file_name[offset] == '/')
+ return NULL;
+
+ if (file_name[offset] == '.')
+ {
+ offset++;
+ break;
+ }
+
+ offset--;
+ }
+
+ if (offset == 0)
+ return NULL;
+
+ {
+ int ext_size = len - offset + 1;
+ char* file_ext = (char*)malloc(ext_size);
+ memcpy(file_ext, file_name + offset, ext_size);
+ return file_ext;
+ }
+}
+
+char* iupStrFileMakeFileName(const char* path, const char* title)
+{
+ int size_path = strlen(path);
+ int size_title = strlen(title);
+ char *filename = malloc(size_path + size_title + 2);
+ memcpy(filename, path, size_path);
+
+ if (path[size_path-1] != '/')
+ {
+ filename[size_path] = '/';
+ size_path++;
+ }
+
+ memcpy(filename+size_path, title, size_title);
+ filename[size_path+size_title] = 0;
+
+ return filename;
+}
+
+int iupStrReplace(char* str, char src, char dst)
+{
+ int i = 0;
+ while (*str)
+ {
+ if (*str == src)
+ {
+ *str = dst;
+ i++;
+ }
+ str++;
+ }
+ return i;
+}
+
+void iupStrToUnix(char* str)
+{
+ char* pstr = str;
+
+ if (!str) return;
+
+ while (*str)
+ {
+ if (*str == '\r')
+ {
+ if (*(str+1) != '\n') /* MAC line end */
+ *pstr++ = '\n';
+ str++;
+ }
+ else
+ *pstr++ = *str++;
+ }
+
+ *pstr = *str;
+}
+
+char* iupStrToMac(const char* str)
+{
+ int at_start = 1;
+ char* pstr, *new_str;
+
+ if (!str) return NULL;
+
+ if (iupStrLineCount(str) == 1)
+ return (char*)str;
+
+ new_str = iupStrDup(str);
+ str = new_str;
+ pstr = new_str;
+
+ while (*str)
+ {
+ if (*str == '\n')
+ {
+ if (!at_start && *(str-1) != '\r') /* UNIX line end */
+ *pstr++ = '\r';
+ str++;
+ }
+ else
+ *pstr++ = *str++;
+ at_start = 0;
+ }
+
+ *pstr = *str;
+
+ return new_str;
+}
+
+char* iupStrToDos(const char* str)
+{
+ char *auxstr, *newstr;
+ int num_lin;
+
+ if (!str) return NULL;
+
+ num_lin = iupStrLineCount(str);
+ if (num_lin == 1)
+ return (char*)str;
+
+ newstr = malloc(num_lin + strlen(str) + 1);
+ auxstr = newstr;
+ while(*str)
+ {
+ if (*str == '\r' && *(str+1)=='\n') /* DOS line end */
+ {
+ *auxstr++ = *str++;
+ *auxstr++ = *str++;
+ }
+ else if (*str == '\r') /* MAC line end */
+ {
+ *auxstr++ = *str++;
+ *auxstr++ = '\n';
+ }
+ else if (*str == '\n') /* UNIX line end */
+ {
+ *auxstr++ = '\r';
+ *auxstr++ = *str++;
+ }
+ else
+ *auxstr++ = *str++;
+ }
+ *auxstr = 0;
+
+ return newstr;
+}
+
+void iupStrRemove(char* value, int start, int end, int dir)
+{
+ if (start == end)
+ {
+ if (dir==1)
+ end++;
+ else if (start == 0) /* there is nothing to remove before */
+ return;
+ else
+ start--;
+ }
+ value += start;
+ end -= start;
+ while (*value)
+ {
+ *value = *(value+end);
+ value++;
+ }
+}
+
+char* iupStrInsert(const char* value, const char* insert_value, int start, int end)
+{
+ char* new_value = (char*)value;
+ int insert_len = strlen(insert_value);
+ int len = strlen(value);
+ if (end==start || insert_len > end-start)
+ {
+ new_value = malloc(len - (end-start) + insert_len + 1);
+ memcpy(new_value, value, start);
+ memcpy(new_value+start, insert_value, insert_len);
+ memcpy(new_value+start+insert_len, value+end, len-end+1);
+ }
+ else
+ {
+ memcpy(new_value+start, insert_value, insert_len);
+ memcpy(new_value+start+insert_len, value+end, len-end+1);
+ }
+ return new_value;
+}
+
+char* iupStrProcessMnemonic(const char* str, char *c, int action)
+{
+ int i = 0, found = 0;
+ char* new_str, *orig_str = (char*)str;
+
+ if (!str) return NULL;
+
+ if (!strchr(str, '&'))
+ return (char*)str;
+
+ new_str = malloc(strlen(str)+1);
+ while (*str)
+ {
+ if (*str == '&')
+ {
+ if (*(str+1) == '&') /* remove & from the string, add next & to the string */
+ {
+ str++;
+ new_str[i++] = *str;
+ }
+ else if (!found) /* mnemonic found */
+ {
+ found = 1;
+
+ if (action == 1) /* replace & by c */
+ new_str[i++] = *c;
+ else if (action == -1) /* remove & and return in c */
+ *c = *(str+1); /* next is mnemonic */
+ /* else -- only remove & */
+ }
+ }
+ else
+ {
+ new_str[i++] = *str;
+ }
+
+ str++;
+ }
+ new_str[i] = 0;
+
+ if (!found)
+ {
+ free(new_str);
+ return orig_str;
+ }
+
+ return new_str;
+}
diff --git a/iup/src/iup_str.h b/iup/src/iup_str.h
new file mode 100755
index 0000000..1c2e7a5
--- /dev/null
+++ b/iup/src/iup_str.h
@@ -0,0 +1,183 @@
+/** \file
+ * \brief String Utilities
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#ifndef __IUP_STR_H
+#define __IUP_STR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup str String Utilities
+ * \par
+ * See \ref iup_str.h
+ * \ingroup util */
+
+/** Returns a copy of the given string.
+ * If str is NULL it will return NULL.
+ * \ingroup str */
+char* iupStrDup(const char* str);
+
+/** Returns a non zero value if the two strings are equal.
+ * str1 or str2 can be NULL.
+ * \ingroup str */
+int iupStrEqual(const char* str1, const char* str2);
+
+/** Returns a non zero value if the two strings are equal but ignores case.
+ * str1 or str2 can be NULL.
+ * \ingroup str */
+int iupStrEqualNoCase(const char* str1, const char* str2);
+
+/** Returns a non zero value if the two strings are equal
+ * up to a number of characters defined by the strlen of the second string.
+ * str1 or str2 can be NULL.
+ * \ingroup str */
+int iupStrEqualPartial(const char* str1, const char* str2);
+
+/** Returns 1 if the string is "1", "YES", "ON" or "TRUE". \n
+ * Returns 0 if the string is "0", "NO", "OFF" or "FALSE", or the string is NULL or empty.
+ * \ingroup str */
+int iupStrBoolean(const char* str);
+
+/** Returns the number of lines in a string.
+ * It works for UNIX, DOS and MAC line ends.
+ * \ingroup str */
+int iupStrLineCount(const char* str);
+
+/** Returns the a pointer to the next line and the size of the current line.
+ * It works for UNIX, DOS and MAC line ends. The size does not includes the line end.
+ * If str is NULL it will return NULL.
+ * \ingroup str */
+const char* iupStrNextLine(const char* str, int *len);
+
+/** Returns the number of repetitions of the character occours in the string.
+ * \ingroup str */
+int iupStrCountChar(const char *str, int c);
+
+/** Returns a new string containing a copy of the string up to the character.
+ * The string is then incremented to after the position of the character.
+ * \ingroup str */
+char *iupStrCopyUntil(char **str, int c);
+
+/** Copy the string to the buffer, but limited to the max_size of the buffer.
+ * buffer is always porperly ended.
+ * \ingroup str */
+void iupStrCopyN(char* dst_str, int dst_max_size, const char* src_str);
+
+/** Returns a buffer with the specified size+1. \n
+ * The buffer is resused after 50 calls. It must NOT be freed.
+ * Use size=-1 to free all the internal buffers.
+ * \ingroup str */
+char *iupStrGetMemory(int size);
+
+/** Returns a buffer that contains a copy of the given buffer using \ref iupStrGetMemory.
+ * \ingroup str */
+char *iupStrGetMemoryCopy(const char* str);
+
+/** Converts a string into lower case.
+ * \ingroup str */
+void iupStrLower(char* dstr, const char* sstr);
+
+/** Extract a RGB triple from the string. Returns 0 or 1.
+ * \ingroup str */
+int iupStrToRGB(const char *str, unsigned char *r, unsigned char *g, unsigned char *b);
+
+/** Extract a RGBA quad from the string, alpha is optional. Returns 0, 3 or 4.
+ * \ingroup str */
+int iupStrToRGBA(const char *str, unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *a);
+
+/** Converts the string to an int. The string must contains only the integer value.
+ * Returns a a non zero value if sucessfull.
+ * \ingroup str */
+int iupStrToInt(const char *str, int *i);
+
+/** Converts the string to two int. The string must contains two integer values in sequence,
+ * separated by the given character (usually 'x' or ':').
+ * Returns the number of converted values.
+ * Values not extracted are not changed.
+ * \ingroup str */
+int iupStrToIntInt(const char *str, int *i1, int *i2, char sep);
+
+/** Converts the string to an float. The string must contains only the real value.
+ * Returns a a non zero value if sucessfull.
+ * \ingroup str */
+int iupStrToFloat(const char *str, float *f);
+
+/** Converts the string to two float. The string must contains two real values in sequence,
+ * separated by the given character (usually 'x' or ':').
+ * Returns the number of converted values.
+ * Values not extracted are not changed.
+ * \ingroup str */
+int iupStrToFloatFloat(const char *str, float *f1, float *f2, char sep);
+
+/** Extract two strings from the string.
+ * separated by the given character (usually 'x' or ':').
+ * Returns the number of converted values.
+ * Values not extracted are not changed.
+ * \ingroup str */
+int iupStrToStrStr(const char *str, char *str1, char *str2, char sep);
+
+/** Returns the file extension of a file name.
+ * Supports UNIX and Windows directory separators.
+ * \ingroup str */
+char* iupStrFileGetExt(const char *file_name);
+
+/** Returns the file title of a file name.
+ * Supports UNIX and Windows directory separators.
+ * \ingroup str */
+char* iupStrFileGetTitle(const char *file_name);
+
+/** Returns the file path of a file name.
+ * Supports UNIX and Windows directory separators.
+ * \ingroup str */
+char* iupStrFileGetPath(const char *file_name);
+
+/** Concat path and title addind '/' between if path does not have it.
+ * \ingroup str */
+char* iupStrFileMakeFileName(const char* path, const char* title);
+
+/** Replace a character in a string.
+ * Returns the number of occurrences.
+ * \ingroup str */
+int iupStrReplace(char* str, char src, char dst);
+
+/** Convert line ends to UNIX format in place (one \n per line).
+ * \ingroup str */
+void iupStrToUnix(char* str);
+
+/** Convert line ends to MAC format (one \r per line).
+ * If returned pointer different than input it must be freed.
+ * \ingroup str */
+char* iupStrToMac(const char* str);
+
+/** Convert line ends to DOS/Windows format (the sequence \r\n per line).
+ * If returned pointer different than input it must be freed.
+ * \ingroup str */
+char* iupStrToDos(const char* str);
+
+/** Remove the interval from the string. Done in place.
+ * \ingroup str */
+void iupStrRemove(char* value, int start, int end, int dir);
+
+/** Remove the interval from the string and insert the new string at the start.
+ * \ingroup str */
+char* iupStrInsert(const char* value, const char* insert_value, int start, int end);
+
+/** Process the mnemonic in the string. If not found returns str.
+ * If found returns a new string. Action can be:
+- 1: replace & by c
+- -1: remove & and return in c
+- 0: remove &
+ * \ingroup str */
+char* iupStrProcessMnemonic(const char* str, char *c, int action);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_strmessage.c b/iup/src/iup_strmessage.c
new file mode 100755
index 0000000..5f23528
--- /dev/null
+++ b/iup/src/iup_strmessage.c
@@ -0,0 +1,137 @@
+/** \file
+ * \brief String Utilities
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <limits.h>
+#include <stdarg.h>
+
+#include "iup.h"
+
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_strmessage.h"
+#include "iup_table.h"
+
+
+static Itable *istrmessage_table = NULL; /* the function hast table indexed by the name string */
+
+void iupStrMessageInit(void)
+{
+ istrmessage_table = iupTableCreate(IUPTABLE_STRINGINDEXED);
+}
+
+void iupStrMessageFinish(void)
+{
+ iupTableDestroy(istrmessage_table);
+ istrmessage_table = NULL;
+}
+
+char* iupStrMessageGet(const char* message)
+{
+ return (char*)iupTableGet(istrmessage_table, message);
+}
+
+static void iStrMessageSet(const char* message, const char* str)
+{
+ iupTableSet(istrmessage_table, message, (char*)str, IUPTABLE_POINTER);
+}
+
+void iupStrMessageShowError(Ihandle* parent, const char* message)
+{
+ Ihandle* dlg = IupMessageDlg();
+ char* title = NULL, *str_message;
+
+ if (parent)
+ {
+ IupSetAttributeHandle(dlg, "PARENTDIALOG", parent);
+ title = IupGetAttribute(parent, "TITLE");
+ }
+
+ if (!title)
+ title = iupStrMessageGet("IUP_ERROR");
+
+ IupSetAttribute(dlg, "TITLE", title);
+ IupSetAttribute(dlg, "DIALOGTYPE", "ERROR");
+ IupSetAttribute(dlg, "BUTTONS", "OK");
+
+ str_message = iupStrMessageGet(message);
+ if (!str_message)
+ str_message = (char*)message;
+ IupSetAttribute(dlg, "VALUE", str_message);
+
+ IupPopup(dlg, IUP_CURRENT, IUP_CURRENT);
+
+ IupDestroy(dlg);
+}
+
+typedef struct _IstdMessage
+{
+ const char* code;
+ const char* lng_msg[3]; /* 2+1 for expansion */
+} IstdMessage;
+
+/* Edit this table to add support for more languages */
+
+static IstdMessage iStdMessages[] =
+{
+ {"IUP_ERROR", {"Error", "Erro", NULL}},
+ {"IUP_YES", {"Yes", "Sim", NULL}},
+ {"IUP_NO", {"No", "Nγo", NULL}},
+ {"IUP_INVALIDDIR", {"Invalid directory.", "Diretσrio invαlido.", NULL}},
+ {"IUP_FILEISDIR", {"The selected name is a directory.", "O nome selecionado ι um diretσrio.", NULL}},
+ {"IUP_FILENOTEXIST", {"File does not exist.", "Arquivo inexistente.", NULL}},
+ {"IUP_FILEOVERWRITE", {"Overwrite existing file?", "Sobrescrever arquivo?", NULL}},
+ {"IUP_CREATEFOLDER", {"Create Folder", "Criar Diretσrio", NULL}},
+ {"IUP_NAMENEWFOLDER", {"Name of the new folder:", "Nome do novo diretσrio:", NULL}},
+ {"IUP_SAVEAS", {"Save As", "Salvar Como", NULL}},
+ {"IUP_OPEN", {"Open", "Abrir", NULL}},
+ {"IUP_SELECTDIR", {"Select Directory", "Selecionar Diretσrio", NULL}},
+ {"IUP_CANCEL", {"Cancel", "Cancela", NULL}},
+ {"IUP_GETCOLOR", {"Color Selection", "Seleηγo de Cor", NULL}},
+ {"IUP_HELP", {"Help", "Ajuda", NULL}},
+ {"IUP_RED", {"&Red:", "&Vermelho:", NULL}},
+ {"IUP_GREEN", {"&Green:", "V&erde:", NULL}},
+ {"IUP_BLUE", {"&Blue:", "&Azul:", NULL}},
+ {"IUP_HUE", {"&Hue:", "&Matiz:", NULL}},
+ {"IUP_SATURATION", {"&Saturation:", "&Saturaηγo:", NULL}},
+ {"IUP_INTENSITY", {"&Intensity:", "&Intensidade:", NULL}},
+ {"IUP_OPACITY", {"&Opacity:", "&Opacidade:", NULL}},
+ {"IUP_PALETTE", {"&Palette:", "&Paleta:", NULL}},
+ {"IUP_TRUE", {"True", "Verdadeiro", NULL}},
+ {"IUP_FALSE", {"False", "Falso", NULL}},
+ {NULL, {NULL, NULL, NULL}}
+};
+
+static void iStrRegisterInternalMessages(int lng)
+{
+ IstdMessage* messages = iStdMessages;
+ while (messages->code)
+ {
+ iStrMessageSet(messages->code, messages->lng_msg[lng]);
+ messages++;
+ }
+}
+
+void iupStrMessageUpdateLanguage(const char* language)
+{
+ int lng = 0;
+ if (iupStrEqualNoCase(language, "PORTUGUESE"))
+ lng = 1;
+ iStrRegisterInternalMessages(lng);
+}
+
+void IupSetLanguage(const char *language)
+{
+ IupStoreGlobal("LANGUAGE", language);
+}
+
+char *IupGetLanguage(void)
+{
+ return IupGetGlobal("LANGUAGE");
+}
diff --git a/iup/src/iup_strmessage.h b/iup/src/iup_strmessage.h
new file mode 100755
index 0000000..dbd0374
--- /dev/null
+++ b/iup/src/iup_strmessage.h
@@ -0,0 +1,45 @@
+/** \file
+ * \brief Language Dependent String Messages
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#ifndef __IUP_STRMESSAGE_H
+#define __IUP_STRMESSAGE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup strmessage Language Dependent String Messages
+ * \par
+ * String database that is dependend of the selected language.
+ * \par
+ * See \ref iup_strmessage.h
+ * \ingroup util */
+
+/** Pre-defined dialog to show an error message. Based in IupMessageDlg.
+ * Message can be a registered coded message or a commom string.
+ * \ingroup strmessage */
+void iupStrMessageShowError(Ihandle* parent, const char* message);
+
+/** Returns a common string from a registered coded message.
+ * The returned string depends on the global LANGUAGE attribute.
+ * \ingroup strmessage */
+char* iupStrMessageGet(const char* message);
+
+/* Called from iup_global */
+void iupStrMessageUpdateLanguage(const char* language);
+
+/* called only in IupOpen and IupClose */
+void iupStrMessageInit(void);
+void iupStrMessageFinish(void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_table.c b/iup/src/iup_table.c
new file mode 100755
index 0000000..9e97ff5
--- /dev/null
+++ b/iup/src/iup_table.c
@@ -0,0 +1,736 @@
+/** \file
+ * \brief iupTable functions.
+ * Implementation by Danny Reinhold and Antonio Scuri.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+
+#include "iup_table.h"
+#include "iup_str.h"
+#include "iup_assert.h"
+
+/* #define DEBUGTABLE 1 */
+
+/* Adjust these parameters for optimal performance and memory usage */
+static const unsigned int itable_maxTableSizeIndex = 8;
+static const unsigned int itable_hashTableSize[] = { 31, 101, 401, 1601, 4001, 8009, 16001, 32003, 64007 };
+static const float itable_resizeLimit = 2;
+static const unsigned int itable_itemGrow = 5;
+
+/* Iteration context.
+ */
+typedef struct ItableContext
+{
+ unsigned int entryIndex; /* index at the Itable::entries array */
+ unsigned int itemIndex; /* index at the ItableEntry::items array */
+} ItableContext;
+
+/* A key of an item.
+ * To avoid lots of string comparisions we store
+ * a keyindex as an integer.
+ * To find a key in an item list we only have to
+ * do integer comparisions.
+ * Additionally the key itself is stored in
+ * keyStr. In a string indexed hashtable this is
+ * a duplicated string, in a pointer indexed hash table
+ * this is simply the pointer (in this case keyIndex
+ * and keyStr are equal).
+*/
+typedef struct ItableKey
+{
+ unsigned long keyIndex; /* the secondary hash number */
+ const char *keyStr;
+}
+ItableKey;
+
+/* An item in the hash table.
+ * Such an item is stored in the item list of
+ * an entry.
+ */
+typedef struct ItableItem
+{
+ Itable_Types itemType;
+ ItableKey key;
+ void *value;
+}
+ItableItem;
+
+/* An entry in the hash table.
+ * An entry is chosen by an index in the hash table
+ * and contains a list of items.
+ * The number of items in this list is stored
+ * in nextItemIndex.
+ * size is the current size of the items array.
+ */
+typedef struct ItableEntry
+{
+ unsigned int nextItemIndex;
+ unsigned int size;
+ ItableItem *items;
+}
+ItableEntry;
+
+
+/* A hash table.
+ * indexType is the type of the index.
+ * entries is an array of entries. Select an
+ * entry by its index.
+ * size is the number of entries in the hash table...
+ */
+struct Itable
+{
+ unsigned int size;
+ unsigned int numberOfEntries;
+ unsigned int tableSizeIndex; /* index into itable_hashTableSize array */
+ Itable_IndexTypes indexType;
+ ItableEntry *entries;
+ ItableContext context;
+};
+
+
+/* Prototypes of private functions */
+
+static void iTableFreeItemArray(Itable_IndexTypes indexType, unsigned int nextFreeIndex,
+ ItableItem *items);
+static unsigned int iTableGetEntryIndex(Itable *it, const char *key, unsigned long *keyIndex);
+static unsigned int iTableFindItem(Itable *it, const char *key, ItableEntry **entry,
+ unsigned int *itemIndex,
+ unsigned long *keyIndex);
+static unsigned int iTableResize(Itable *it);
+static void iTableAdd(Itable *it, ItableKey *key, void *value, Itable_Types itemType);
+static void iTableUpdateArraySize(ItableEntry *entry);
+
+#ifdef DEBUGTABLE
+static void iTableShowStatistics(Itable *it);
+static void iTableCheckDuplicated(ItableItem *item, unsigned int nextItemIndex,
+ const char *key,
+ unsigned long keyIndex);
+#endif
+
+
+Itable *iupTableCreate(Itable_IndexTypes indexType)
+{
+ return iupTableCreateSized(indexType, 1); /* 101 shows to be a better start for IUP */
+}
+
+
+Itable *iupTableCreateSized(Itable_IndexTypes indexType, unsigned int initialSizeIndex)
+{
+ Itable *it = (Itable *)malloc(sizeof(struct Itable));
+
+ iupASSERT(it!=NULL);
+ if (!it)
+ return 0;
+
+ if (initialSizeIndex > itable_maxTableSizeIndex)
+ initialSizeIndex = itable_maxTableSizeIndex;
+
+ it->size = itable_hashTableSize[initialSizeIndex];
+ it->tableSizeIndex = initialSizeIndex;
+ it->numberOfEntries = 0;
+ it->indexType = indexType;
+
+ it->entries = (ItableEntry *)malloc(it->size * sizeof(ItableEntry));
+ iupASSERT(it->entries!=NULL);
+ if (!it->entries)
+ {
+ free(it);
+ return 0;
+ }
+
+ memset(it->entries, 0, it->size * sizeof(ItableEntry));
+
+ it->context.entryIndex = (unsigned int)-1;
+ it->context.itemIndex = (unsigned int)-1;
+
+ return it;
+}
+
+void iupTableClear(Itable *it)
+{
+ unsigned int i;
+
+ if (!it)
+ return;
+
+ for (i = 0; i < it->size; i++)
+ {
+ ItableEntry *entry = &(it->entries[i]);
+ if (entry->items)
+ iTableFreeItemArray(it->indexType, entry->nextItemIndex, entry->items);
+ }
+
+ it->numberOfEntries = 0;
+
+ memset(it->entries, 0, it->size * sizeof(ItableEntry));
+
+ it->context.entryIndex = (unsigned int)-1;
+ it->context.itemIndex = (unsigned int)-1;
+}
+
+void iupTableDestroy(Itable *it)
+{
+ if (!it)
+ return;
+
+#ifdef DEBUGTABLE
+ iTableShowStatistics(it);
+#endif
+
+ iupTableClear(it);
+
+ if (it->entries)
+ free(it->entries);
+
+ free(it);
+}
+
+int iupTableCount(Itable *it)
+{
+ iupASSERT(it!=NULL);
+ if (!it)
+ return 0;
+ return it->numberOfEntries;
+}
+
+void iupTableSetFunc(Itable *it, const char *key, Ifunc func)
+{
+ iupTableSet(it, key, (void*)func, IUPTABLE_FUNCPOINTER); /* type cast from function pointer to void* */
+}
+
+void iupTableSet(Itable *it, const char *key, void *value, Itable_Types itemType)
+{
+ unsigned int itemIndex,
+ itemFound;
+ unsigned long keyIndex;
+ ItableEntry *entry;
+ ItableItem *item;
+ void *v;
+
+ iupASSERT(it!=NULL);
+ iupASSERT(key!=NULL);
+ if (!it || !key || !value)
+ return;
+
+ itemFound = iTableFindItem(it, key, &entry, &itemIndex, &keyIndex);
+
+#ifdef DEBUGTABLE
+ if (it->indexType == IUPTABLE_STRINGINDEXED)
+ iTableCheckDuplicated(&(entry->items[0]), entry->nextItemIndex, key, keyIndex);
+#endif
+
+ if (!itemFound)
+ {
+ /* create a new item */
+
+ /* first check if the hash table has to be reorganized */
+ if (iTableResize(it))
+ {
+ /* We have to search for the entry again, since it may
+ * have been moved by iTableResize. */
+ iTableFindItem(it, key, &entry, &itemIndex, &keyIndex);
+ }
+
+ iTableUpdateArraySize(entry);
+
+ /* add the item at the end of the item array */
+ if (itemType == IUPTABLE_STRING)
+ v = iupStrDup(value);
+ else
+ v = value;
+
+ item = &(entry->items[entry->nextItemIndex]);
+
+ item->itemType = itemType;
+ item->key.keyIndex = keyIndex;
+ item->key.keyStr = it->indexType == IUPTABLE_STRINGINDEXED? iupStrDup(key) : key;
+ item->value = v;
+
+ entry->nextItemIndex++;
+ it->numberOfEntries++;
+ }
+ else
+ {
+ /* change an existing item */
+ void *v;
+ item = &(entry->items[itemIndex]);
+
+ if (itemType == IUPTABLE_STRING && item->itemType == IUPTABLE_STRING)
+ {
+ /* this will avoid to free + alloc of a new pointer */
+ if (iupStrEqual((char*)item->value, (char*)value))
+ return;
+ }
+
+ if (itemType == IUPTABLE_STRING)
+ v = iupStrDup(value);
+ else
+ v = value;
+
+ if (item->itemType == IUPTABLE_STRING)
+ free(item->value);
+
+ item->value = v;
+ item->itemType = itemType;
+ }
+}
+
+static void iTableRemoveItem(Itable *it, ItableEntry *entry, unsigned int itemIndex)
+{
+ ItableItem *item;
+ unsigned int i;
+
+ item = &(entry->items[itemIndex]);
+
+ if (it->indexType == IUPTABLE_STRINGINDEXED)
+ free((void *)item->key.keyStr);
+
+ if (item->itemType == IUPTABLE_STRING)
+ free(item->value);
+
+ /* order the remaining items */
+ for (i = itemIndex; i < entry->nextItemIndex-1; i++)
+ entry->items[i] = entry->items[i+1];
+
+ /* clear the non used item */
+ memset(entry->items + entry->nextItemIndex, 0, sizeof (ItableItem));
+
+ entry->nextItemIndex--;
+ it->numberOfEntries--;
+}
+
+void iupTableRemove(Itable *it, const char *key)
+{
+ unsigned int itemFound,
+ itemIndex;
+ unsigned long keyIndex;
+ ItableEntry *entry;
+
+ iupASSERT(it!=NULL);
+ iupASSERT(key!=NULL);
+ if (!it || !key)
+ return;
+
+ itemFound = iTableFindItem(it, key, &entry, &itemIndex, &keyIndex);
+ if (itemFound)
+ iTableRemoveItem(it, entry, itemIndex);
+}
+
+void *iupTableGet(Itable *it, const char *key)
+{
+ unsigned int itemFound,
+ itemIndex;
+ unsigned long keyIndex;
+ ItableEntry *entry;
+ void *value = 0;
+
+ iupASSERT(it!=NULL);
+ iupASSERT(key!=NULL);
+ if (!it || !key)
+ return 0;
+
+ itemFound = iTableFindItem(it, key, &entry, &itemIndex, &keyIndex);
+ if (itemFound)
+ value = entry->items[itemIndex].value;
+
+ return value;
+}
+
+Ifunc iupTableGetFunc(Itable *it, const char *key, void **value)
+{
+ Itable_Types itemType = IUPTABLE_POINTER;
+ *value = iupTableGetTyped(it, key, &itemType);
+ if (itemType == IUPTABLE_FUNCPOINTER)
+ return (Ifunc)(*value); /* type cast from void* to function pointer */
+ else
+ return (Ifunc)0;
+}
+
+void *iupTableGetTyped(Itable *it, const char *key, Itable_Types *itemType)
+{
+ unsigned int itemFound,
+ itemIndex;
+ unsigned long keyIndex;
+ ItableEntry *entry;
+ void *value = 0;
+
+ iupASSERT(it!=NULL);
+ iupASSERT(key!=NULL);
+ if (!it || !key)
+ return 0;
+
+ itemFound = iTableFindItem(it, key, &entry, &itemIndex, &keyIndex);
+ if (itemFound)
+ {
+ value = entry->items[itemIndex].value;
+ if (itemType)
+ *itemType = entry->items[itemIndex].itemType;
+ }
+
+ return value;
+}
+
+void *iupTableGetCurr(Itable *it)
+{
+ iupASSERT(it!=NULL);
+ if (!it || it->context.entryIndex == (unsigned int)-1
+ || it->context.itemIndex == (unsigned int)-1)
+ return 0;
+
+ return it->entries[it->context.entryIndex].items[it->context.itemIndex].value;
+}
+
+
+char *iupTableFirst(Itable *it)
+{
+ unsigned int entryIndex;
+
+ iupASSERT(it!=NULL);
+ if (!it)
+ return 0;
+
+ it->context.entryIndex = (unsigned int)-1;
+ it->context.itemIndex = (unsigned int)-1;
+
+ /* find the first used entry */
+ for (entryIndex = 0; entryIndex < it->size; entryIndex++)
+ {
+ if (it->entries[entryIndex].nextItemIndex > 0)
+ {
+ it->context.entryIndex = entryIndex;
+ it->context.itemIndex = 0;
+ return (char*)it->entries[entryIndex].items[0].key.keyStr;
+ }
+ }
+
+ return 0;
+}
+
+
+char *iupTableNext(Itable *it)
+{
+ unsigned int entryIndex;
+
+ iupASSERT(it!=NULL);
+ if (!it || it->context.entryIndex == (unsigned int)-1
+ || it->context.itemIndex == (unsigned int)-1)
+ return 0;
+
+ if (it->context.itemIndex + 1 < it->entries[it->context.entryIndex].nextItemIndex)
+ {
+ /* key in the current entry */
+ it->context.itemIndex++;
+ return (char*)it->entries[it->context.entryIndex].items[it->context.itemIndex].key.keyStr;
+ }
+ else
+ {
+ /* find the next used entry */
+ for (entryIndex = it->context.entryIndex+1; entryIndex < it->size; entryIndex++)
+ {
+ if (it->entries[entryIndex].nextItemIndex > 0)
+ {
+ it->context.entryIndex = entryIndex;
+ it->context.itemIndex = 0;
+ return (char*)it->entries[entryIndex].items[0].key.keyStr;
+ }
+ }
+ }
+
+ return 0;
+}
+
+char *iupTableRemoveCurr(Itable *it)
+{
+ char* key;
+ unsigned int entryIndex;
+ ItableEntry *entry;
+ unsigned int itemIndex;
+
+ iupASSERT(it!=NULL);
+ if (!it || it->context.entryIndex == (unsigned int)-1
+ || it->context.itemIndex == (unsigned int)-1)
+ return 0;
+
+ entry = &it->entries[it->context.entryIndex];
+ itemIndex = it->context.itemIndex;
+
+ if (it->context.itemIndex + 1 < it->entries[it->context.entryIndex].nextItemIndex)
+ {
+ /* key in the current entry */
+ it->context.itemIndex++;
+ key = (char*)it->entries[it->context.entryIndex].items[it->context.itemIndex].key.keyStr;
+
+ iTableRemoveItem(it, entry, itemIndex);
+ return key;
+ }
+ else
+ {
+ /* find the next used entry */
+ for (entryIndex = it->context.entryIndex+1; entryIndex < it->size; entryIndex++)
+ {
+ if (it->entries[entryIndex].nextItemIndex > 0)
+ {
+ it->context.entryIndex = entryIndex;
+ it->context.itemIndex = 0;
+ key = (char*)it->entries[entryIndex].items[0].key.keyStr;
+
+ iTableRemoveItem(it, entry, itemIndex);
+ return key;
+ }
+ }
+ }
+
+ return 0;
+}
+
+
+/********************************************/
+/* Private functions */
+/********************************************/
+
+
+static void iTableFreeItemArray(Itable_IndexTypes indexType, unsigned int nextFreeIndex, ItableItem *items)
+{
+ unsigned int i;
+
+ iupASSERT(items!=NULL);
+ if (!items)
+ return;
+
+ if (indexType == IUPTABLE_STRINGINDEXED)
+ {
+ for (i = 0; i < nextFreeIndex; i++)
+ free((void *)(items[i].key.keyStr));
+ }
+
+ for (i = 0; i < nextFreeIndex; i++)
+ {
+ if (items[i].itemType == IUPTABLE_STRING)
+ free(items[i].value);
+ }
+
+ free(items);
+}
+
+
+static unsigned int iTableGetEntryIndex(Itable *it, const char *key, unsigned long *keyIndex)
+{
+ if (it->indexType == IUPTABLE_STRINGINDEXED)
+ {
+ register unsigned int checksum = 0;
+
+/* Orignal version
+ unsigned int i;
+ for (i = 0; key[i]; i++)
+ checksum = checksum*31 + key[i];
+*/
+
+ while (*key)
+ {
+ checksum *= 31;
+ checksum += *key;
+ key++;
+ }
+
+ *keyIndex = checksum; /* this could NOT be dependent from table size */
+ }
+ else
+ {
+ /* Pointer indexed */
+ *keyIndex = (unsigned long)key; /* this could NOT be dependent from table size */
+ }
+
+ return (unsigned int)((*keyIndex) % it->size);
+}
+
+#ifdef DEBUGTABLE
+static void iTableCheckDuplicated(ItableItem *item, unsigned int nextItemIndex, const char *key,
+ unsigned long keyIndex)
+{
+ unsigned int i;
+ for (i = 0; i < nextItemIndex; i++, item++)
+ {
+ if (!iupStrEqual((char*)item->key.keyStr, (char*)key) &&
+ item->key.keyIndex == keyIndex)
+ {
+ fprintf(stderr, "#ERROR# Duplicated key index (%ld): %s %s \n", keyIndex,
+ (char*)item->key.keyStr,
+ (char*)key);
+ }
+ }
+}
+#endif
+
+static unsigned int iTableFindItem(Itable *it, const char *key, ItableEntry **entry,
+ unsigned int *itemIndex,
+ unsigned long *keyIndex)
+{
+ unsigned int entryIndex,
+ itemFound,
+ i;
+ ItableItem *item;
+
+ entryIndex = iTableGetEntryIndex(it, key, keyIndex);
+
+ *entry = &(it->entries[entryIndex]);
+
+ item = &((*entry)->items[0]);
+ for (i = 0; i < (*entry)->nextItemIndex; i++, item++)
+ {
+ if (it->indexType == IUPTABLE_STRINGINDEXED)
+ itemFound = item->key.keyIndex == *keyIndex;
+/* itemFound = iupStrEqual(item->key.keyStr, key); This is the original safe version */
+ else
+ itemFound = item->key.keyStr == key;
+
+ if (itemFound)
+ {
+ *itemIndex = i;
+ return 1;
+ }
+ }
+
+ /* if not found "entry", "itemIndex" and "keyIndex" will have the new insert position. */
+
+ *itemIndex = i;
+ return 0;
+}
+
+static void iTableUpdateArraySize(ItableEntry *entry)
+{
+ if (entry->nextItemIndex >= entry->size)
+ {
+ /* we have to expand the item array */
+ unsigned int newSize;
+
+ newSize = entry->size + itable_itemGrow;
+
+ entry->items = (ItableItem *)realloc(entry->items, newSize * sizeof(ItableItem));
+ iupASSERT(entry->items!=NULL);
+ if (!entry->items)
+ return;
+
+ memset(entry->items + entry->size, 0, itable_itemGrow * sizeof(ItableItem));
+
+ entry->size = newSize;
+ }
+}
+
+
+static void iTableAdd(Itable *it, ItableKey *key, void *value, Itable_Types itemType)
+{
+ unsigned int entryIndex;
+ unsigned long keyIndex;
+ ItableEntry *entry;
+ ItableItem* item;
+
+ entryIndex = iTableGetEntryIndex(it, key->keyStr, &keyIndex);
+
+ entry = &(it->entries[entryIndex]);
+ iTableUpdateArraySize(entry);
+
+ /* add a new item at the end of the item array without duplicating memory. */
+ item = &(entry->items[entry->nextItemIndex]);
+ item->itemType = itemType;
+ item->key.keyIndex = keyIndex;
+ item->key.keyStr = key->keyStr;
+ item->value = value;
+
+ entry->nextItemIndex++;
+ it->numberOfEntries++;
+}
+
+static unsigned int iTableResize(Itable *it)
+{
+ unsigned int newSizeIndex,
+ entryIndex,
+ i;
+ Itable *newTable;
+ ItableEntry *entry;
+ ItableItem *item;
+
+ /* check if we do not need to resize the hash table */
+ if (it->numberOfEntries == 0 ||
+ it->tableSizeIndex >= itable_maxTableSizeIndex ||
+ it->size / it->numberOfEntries >= itable_resizeLimit)
+ return 0;
+
+ /* create a new hash table and copy the contents of
+ * the current table into the new one
+ */
+ newSizeIndex = it->tableSizeIndex + 1;
+ newTable = iupTableCreateSized(it->indexType, newSizeIndex);
+
+ for (entryIndex = 0; entryIndex < it->size; entryIndex++)
+ {
+ entry = &(it->entries[entryIndex]);
+
+ if (entry->items)
+ {
+ item = &(entry->items[0]);
+
+ for (i = 0; i < entry->nextItemIndex; i++, item++)
+ {
+ iTableAdd(newTable, &(item->key), item->value, item->itemType);
+ }
+
+ free(entry->items);
+ }
+ }
+
+ free(it->entries);
+
+ it->size = newTable->size;
+ it->tableSizeIndex = newTable->tableSizeIndex;
+ it->numberOfEntries = newTable->numberOfEntries;
+ it->entries = newTable->entries;
+
+ free(newTable);
+
+ return 1;
+}
+
+#ifdef DEBUGTABLE
+static void iTableShowStatistics(Itable *it)
+{
+ unsigned int nofSlots = 0;
+ unsigned int nofKeys = 0;
+ double optimalNofKeysPerSlot = 0.0;
+ unsigned int nofSlotsWithMoreKeys = 0;
+ unsigned int nofSlotsWithLessKeys = 0;
+
+ unsigned int entryIndex;
+ fprintf(stderr, "\n--- HASH TABLE STATISTICS ---\n");
+ if (!it)
+ {
+ fprintf(stderr, "no hash table...\n");
+ return;
+ }
+
+ nofSlots = it->size;
+ nofKeys = it->numberOfEntries;
+ optimalNofKeysPerSlot = (double)nofKeys / (double)nofSlots;
+
+ for (entryIndex = 0; entryIndex < it->size; entryIndex++)
+ {
+ ItableEntry *entry = &(it->entries[entryIndex]);
+
+ if (entry->nextItemIndex > optimalNofKeysPerSlot + 3)
+ nofSlotsWithMoreKeys++;
+ else if (entry->nextItemIndex < optimalNofKeysPerSlot - 3)
+ nofSlotsWithLessKeys++;
+ }
+
+ fprintf(stderr, "Number of slots: %d\n", nofSlots);
+ fprintf(stderr, "Number of keys: %d\n", nofKeys);
+ fprintf(stderr, "Optimal number of keys per slot: %f\n", optimalNofKeysPerSlot);
+ fprintf(stderr, "Number of slots with much more keys: %d\n", nofSlotsWithMoreKeys);
+ fprintf(stderr, "Number of slots with far less keys: %d\n", nofSlotsWithLessKeys);
+ fprintf(stderr, "\n");
+}
+#endif
diff --git a/iup/src/iup_table.h b/iup/src/iup_table.h
new file mode 100755
index 0000000..5222160
--- /dev/null
+++ b/iup/src/iup_table.h
@@ -0,0 +1,143 @@
+/** \file
+ * \brief Simple hash table C API.
+ * Does not allow 0 values for items...
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_TABLE_H
+#define __IUP_TABLE_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/** \defgroup table Hash Table
+ * \par
+ * The hash table can be indexed by strings or pointer address,
+ * and each value can contain strings, pointers or function pointers.
+ * \par
+ * See \ref iup_table.h
+ * \ingroup util */
+
+
+/** How the table key is interpreted.
+ * \ingroup table */
+typedef enum _Itable_IndexTypes
+{
+ IUPTABLE_POINTERINDEXED = 10, /**< a pointer address is used as key. */
+ IUPTABLE_STRINGINDEXED /**< a string as key */
+} Itable_IndexTypes;
+
+/** How the value is interpreted.
+ * \ingroup table */
+typedef enum _Itable_Types
+{
+ IUPTABLE_POINTER, /**< regular pointer for strings and other pointers */
+ IUPTABLE_STRING, /**< string duplicated internally */
+ IUPTABLE_FUNCPOINTER /**< function pointer */
+} Itable_Types;
+
+
+typedef void (*Ifunc)(void);
+
+struct Itable;
+typedef struct Itable Itable;
+
+
+/** Creates a hash table with an initial default size.
+ * This function is equivalent to iupTableCreateSized(0);
+ * \ingroup table */
+Itable *iupTableCreate(Itable_IndexTypes indexType);
+
+/** Creates a hash table with the specified initial size.
+ * Use this function if you expect the table to become very large.
+ * initialSizeIndex is an array into the (internal) list of
+ * possible hash table sizes. Currently only indexes from 0 to 8
+ * are supported. If you specify a higher value here, the maximum
+ * allowed value will be used.
+ * \ingroup table */
+Itable *iupTableCreateSized(Itable_IndexTypes indexType, unsigned int initialSizeIndex);
+
+/** Destroys the Itable.
+ * Calls \ref iupTableClear.
+ * \ingroup table */
+void iupTableDestroy(Itable *n);
+
+/** Removes all items in the table.
+ * This function does also free the memory of strings contained in the table!!!!
+ * \ingroup table */
+void iupTableClear(Itable *it);
+
+/** Returns the number of keys stored in the table.
+ * \ingroup table */
+int iupTableCount(Itable *it);
+
+/** Store an element in the table.
+ * \ingroup table */
+void iupTableSet(Itable *n, const char *key, void *value, Itable_Types itemType);
+
+/** Store a function pointer in the table.
+ * Type is set to IUPTABLE_FUNCPOINTER.
+ * \ingroup table */
+void iupTableSetFunc(Itable *n, const char *key, Ifunc func);
+
+/** Retrieves an element from the table.
+ * Returns NULL if not found.
+ * \ingroup table */
+void *iupTableGet(Itable *n, const char *key);
+
+/** Retrieves a function pointer from the table.
+ * If not a function or not found returns NULL.
+ * value always contains the element pointer.
+ * \ingroup table */
+Ifunc iupTableGetFunc(Itable *n, const char *key, void **value);
+
+/** Retrieves an element from the table and its type.
+ * \ingroup table */
+void *iupTableGetTyped(Itable *n, const char *key, Itable_Types *itemType);
+
+/** Removes the entry at the specified key from the
+ * hash table and frees the memory used by it if
+ * it is a string...
+ * \ingroup table */
+void iupTableRemove(Itable *n, const char *key);
+
+/** Key iteration function. Returns a key.
+ * To iterate over all keys call iupTableFirst at the first
+ * and call iupTableNext in a loop
+ * until 0 is returned...
+ * Do NOT change the content of the hash table during iteration.
+ * During an iteration you can use context with
+ * iupTableGetCurr() to access the value of the key
+ * very fast.
+ * \ingroup table */
+char *iupTableFirst(Itable *it);
+
+/** Key iteration function. See \ref iupTableNext.
+ * \ingroup table */
+char *iupTableNext(Itable *it);
+
+/** Returns the value at the current position.
+ * The current context is an iterator
+ * that is filled by iupTableNext().
+ * iupTableGetCur() is faster then iupTableGet(),
+ * so when you want to access an item stored
+ * at a key returned by iupTableNext(),
+ * use this function instead of iupTableGet().
+ * \ingroup table */
+void *iupTableGetCurr(Itable *it);
+
+/** Removes the current element and returns the next key.
+ * Use this function to remove an element during an iteration.
+ * \ingroup table */
+char *iupTableRemoveCurr(Itable *it);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/iup/src/iup_tabs.c b/iup/src/iup_tabs.c
new file mode 100755
index 0000000..77b2cf5
--- /dev/null
+++ b/iup/src/iup_tabs.c
@@ -0,0 +1,471 @@
+/** \file
+* \brief iuptabs control
+*
+* See Copyright Notice in "iup.h"
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <math.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_image.h"
+#include "iup_tabs.h"
+
+
+
+char* iupTabsGetPaddingAttrib(Ihandle* ih)
+{
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding);
+ return str;
+}
+
+char* iupTabsAttribGetStrId(Ihandle* ih, const char* name, int pos)
+{
+ char str[50];
+ sprintf(str, "%s%d", name, pos);
+ return iupAttribGet(ih, str);
+}
+
+static int iTabsGetMaxWidth(Ihandle* ih)
+{
+ int max_width = 0, width, pos;
+ char *tabtitle, *tabimage;
+ Ihandle* child;
+
+ for (pos = 0, child = ih->firstchild; child; child = child->brother, pos++)
+ {
+ tabtitle = iupAttribGet(child, "TABTITLE");
+ if (!tabtitle) tabtitle = iupTabsAttribGetStrId(ih, "TABTITLE", pos);
+ tabimage = iupAttribGet(child, "TABIMAGE");
+ if (!tabimage) tabimage = iupTabsAttribGetStrId(ih, "TABIMAGE", pos);
+ if (!tabtitle && !tabimage)
+ tabtitle = " ";
+
+ width = 0;
+ if (tabtitle)
+ width += iupdrvFontGetStringWidth(ih, tabtitle);
+
+ if (tabimage)
+ {
+ void* img = iupImageGetImage(tabimage, ih, 0);
+ if (img)
+ {
+ int w;
+ iupdrvImageGetInfo(img, &w, NULL, NULL);
+ width += w;
+ }
+ }
+
+ if (width > max_width) max_width = width;
+ }
+
+ return max_width;
+}
+
+static int iTabsGetMaxHeight(Ihandle* ih)
+{
+ int max_height = 0, h, pos;
+ char *tabimage;
+ Ihandle* child;
+
+ for (pos = 0, child = ih->firstchild; child; child = child->brother, pos++)
+ {
+ tabimage = iupAttribGet(child, "TABIMAGE");
+ if (!tabimage) tabimage = iupTabsAttribGetStrId(ih, "TABIMAGE", pos);
+
+ if (tabimage)
+ {
+ void* img = iupImageGetImage(tabimage, ih, 0);
+ if (img)
+ {
+ iupdrvImageGetInfo(img, NULL, &h, NULL);
+ if (h > max_height) max_height = h;
+ }
+ }
+ }
+
+ iupdrvFontGetCharSize(ih, NULL, &h);
+ if (h > max_height) max_height = h;
+
+ return max_height;
+}
+
+static void iTabsGetDecorSize(Ihandle* ih, int *width, int *height)
+{
+ if (ih->data->type == ITABS_LEFT || ih->data->type == ITABS_RIGHT)
+ {
+ if (ih->data->orientation == ITABS_HORIZONTAL)
+ {
+ int max_width = iTabsGetMaxWidth(ih);
+ *width = 4 + (3 + max_width + 3) + 2 + 4;
+ *height = 4 + 4;
+
+ if (iupdrvTabsExtraDecor(ih))
+ {
+ int h;
+ iupdrvFontGetCharSize(ih, NULL, &h);
+ *height += h + 4;
+ }
+ }
+ else
+ {
+ int max_height = iTabsGetMaxHeight(ih);
+ *width = 4 + (3 + max_height + 3) + 2 + 4;
+ *height = 4 + 4;
+
+ if (ih->handle && ih->data->is_multiline)
+ {
+ int num_lin = iupdrvTabsGetLineCountAttrib(ih);
+ *width += (num_lin-1)*(3 + max_height + 3 + 1);
+ }
+ }
+ }
+ else /* "BOTTOM" or "TOP" */
+ {
+ if (ih->data->orientation == ITABS_HORIZONTAL)
+ {
+ int max_height = iTabsGetMaxHeight(ih);
+ *width = 4 + 4;
+ *height = 4 + (3 + max_height + 3) + 2 + 4;
+
+ if (ih->handle && ih->data->is_multiline)
+ {
+ int num_lin = iupdrvTabsGetLineCountAttrib(ih);
+ *height += (num_lin-1)*(3 + max_height + 3 + 1);
+ }
+
+ if (iupdrvTabsExtraDecor(ih))
+ {
+ int h;
+ iupdrvFontGetCharSize(ih, NULL, &h);
+ *width += h + 4;
+ }
+ }
+ else
+ {
+ int max_width = iTabsGetMaxWidth(ih);
+ *width = 4 + 4;
+ *height = 4 + (3 + max_width + 3) + 2 + 4;
+ }
+ }
+
+ *width += ih->data->horiz_padding;
+ *height += ih->data->vert_padding;
+}
+
+
+/* ------------------------------------------------------------------------- */
+/* TABS - Sets and Gets - Accessors */
+/* ------------------------------------------------------------------------- */
+
+static int iTabsSetValueHandleAttrib(Ihandle* ih, const char* value)
+{
+ int pos;
+ Ihandle *child;
+
+ child = (Ihandle*)value;
+ if (!iupObjectCheck(child))
+ return 0;
+
+ pos = IupGetChildPos(ih, child);
+ if (pos != -1) /* found child */
+ {
+ if (ih->handle)
+ iupdrvTabsSetCurrentTab(ih, pos);
+ else
+ iupAttribSetStr(ih, "_IUPTABS_VALUE_HANDLE", (char*)child);
+ }
+
+ return 0;
+}
+
+char* iupTabsGetTabTypeAttrib(Ihandle* ih)
+{
+ switch(ih->data->type)
+ {
+ case ITABS_BOTTOM:
+ return "BOTTOM";
+ case ITABS_LEFT:
+ return "LEFT";
+ case ITABS_RIGHT:
+ return "RIGHT";
+ default:
+ return "TOP";
+ }
+}
+
+char* iupTabsGetTabOrientationAttrib(Ihandle* ih)
+{
+ if (ih->data->orientation == ITABS_HORIZONTAL)
+ return "HORIZONTAL";
+ else
+ return "VERTICAL";
+}
+
+static char* iTabsGetValueHandleAttrib(Ihandle* ih)
+{
+ if (ih->handle)
+ {
+ int pos = iupdrvTabsGetCurrentTab(ih);
+ return (char*)IupGetChild(ih, pos);
+ }
+ else
+ return iupAttribGet(ih, "_IUPTABS_VALUE_HANDLE");
+}
+
+static int iTabsSetValuePosAttrib(Ihandle* ih, const char* value)
+{
+ Ihandle* child;
+ int pos;
+
+ if (!iupStrToInt(value, &pos))
+ return 0;
+
+ child = IupGetChild(ih, pos);
+ if (child) /* found child */
+ {
+ if (ih->handle)
+ iupdrvTabsSetCurrentTab(ih, pos);
+ else
+ iupAttribSetStr(ih, "_IUPTABS_VALUE_HANDLE", (char*)child);
+ }
+
+ return 0;
+}
+
+static char* iTabsGetValuePosAttrib(Ihandle* ih)
+{
+ if (ih->handle)
+ {
+ int pos = iupdrvTabsGetCurrentTab(ih);
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%d", pos);
+ return str;
+ }
+ else
+ {
+ Ihandle* child = (Ihandle*)iupAttribGet(ih, "_IUPTABS_VALUE_HANDLE");
+ int pos = IupGetChildPos(ih, child);
+ if (pos != -1) /* found child */
+ {
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%d", pos);
+ return str;
+ }
+ }
+
+ return NULL;
+}
+
+static int iTabsSetValueAttrib(Ihandle* ih, const char* value)
+{
+ Ihandle *child;
+
+ if (!value)
+ return 0;
+
+ child = IupGetHandle(value);
+ if (!child)
+ return 0;
+
+ iTabsSetValueHandleAttrib(ih, (char*)child);
+
+ return 0;
+}
+
+static char* iTabsGetValueAttrib(Ihandle* ih)
+{
+ Ihandle* child = (Ihandle*)iTabsGetValueHandleAttrib(ih);
+ return IupGetName(child);
+}
+
+static char* iTabsGetClientSizeAttrib(Ihandle* ih)
+{
+ int width, height, decorwidth, decorheight;
+ char* str = iupStrGetMemory(20);
+ width = ih->currentwidth;
+ height = ih->currentheight;
+ iTabsGetDecorSize(ih, &decorwidth, &decorheight);
+ width -= decorwidth;
+ height -= decorheight;
+ if (width < 0) width = 0;
+ if (height < 0) height = 0;
+ sprintf(str, "%dx%d", width, height);
+ return str;
+}
+
+
+/* ------------------------------------------------------------------------- */
+/* TABS - Methods */
+/* ------------------------------------------------------------------------- */
+
+static void iTabsComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ Ihandle* child;
+ int children_expand,
+ children_naturalwidth, children_naturalheight;
+ int decorwidth, decorheight;
+
+ /* calculate total children natural size (even for hidden children) */
+ children_expand = 0;
+ children_naturalwidth = 0;
+ children_naturalheight = 0;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ /* update child natural size first */
+ iupBaseComputeNaturalSize(child);
+
+ children_expand |= child->expand;
+ children_naturalwidth = iupMAX(children_naturalwidth, child->naturalwidth);
+ children_naturalheight = iupMAX(children_naturalheight, child->naturalheight);
+ }
+
+ iTabsGetDecorSize(ih, &decorwidth, &decorheight);
+
+ *expand = children_expand;
+ *w = children_naturalwidth + decorwidth;
+ *h = children_naturalheight + decorheight;
+}
+
+static void iTabsSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink)
+{
+ Ihandle* child;
+ int width, height, decorwidth, decorheight;
+
+ iTabsGetDecorSize(ih, &decorwidth, &decorheight);
+
+ width = ih->currentwidth-decorwidth;
+ height = ih->currentheight-decorheight;
+ if (width < 0) width = 0;
+ if (height < 0) height = 0;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ iupBaseSetCurrentSize(child, width, height, shrink);
+ }
+}
+
+static void iTabsSetChildrenPositionMethod(Ihandle* ih, int x, int y)
+{
+ /* IupTabs is the native parent of its children,
+ so the position is restarted at (0,0).
+ In all systems, each tab is a native window covering the client area.
+ Child coordinates are relative to client left-top corner of the tab page. */
+ Ihandle* child;
+ (void)x;
+ (void)y;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ iupBaseSetPosition(child, 0, 0);
+ }
+}
+
+static void* iTabsGetInnerNativeContainerHandleMethod(Ihandle* ih, Ihandle* child)
+{
+ while (child && child->parent != ih)
+ child = child->parent;
+ if (child)
+ return iupAttribGet(child, "_IUPTAB_CONTAINER");
+ else
+ return NULL;
+}
+
+static int iTabsCreateMethod(Ihandle* ih, void **params)
+{
+ ih->data = iupALLOCCTRLDATA();
+
+ /* add children */
+ if(params)
+ {
+ Ihandle** iparams = (Ihandle**)params;
+ while (*iparams)
+ {
+ IupAppend(ih, *iparams);
+ iparams++;
+ }
+ }
+ return IUP_NOERROR;
+}
+
+Iclass* iupTabsGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "tabs";
+ ic->format = "g"; /* array of Ihandle */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILDMANY;
+ ic->is_interactive = 1;
+ ic->has_attrib_id = 1;
+
+ /* Class functions */
+ ic->Create = iTabsCreateMethod;
+ ic->GetInnerNativeContainerHandle = iTabsGetInnerNativeContainerHandleMethod;
+
+ ic->ComputeNaturalSize = iTabsComputeNaturalSizeMethod;
+ ic->SetChildrenCurrentSize = iTabsSetChildrenCurrentSizeMethod;
+ ic->SetChildrenPosition = iTabsSetChildrenPositionMethod;
+
+ ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* IupTabs Callbacks */
+ iupClassRegisterCallback(ic, "TABCHANGE_CB", "nn");
+
+ /* Common Callbacks */
+ iupBaseRegisterCommonCallbacks(ic);
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Visual */
+ iupBaseRegisterVisualAttrib(ic);
+
+ /* IupTabs only */
+ iupClassRegisterAttribute(ic, "VALUE", iTabsGetValueAttrib, iTabsSetValueAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUEPOS", iTabsGetValuePosAttrib, iTabsSetValuePosAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUE_HANDLE", iTabsGetValueHandleAttrib, iTabsSetValueHandleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+
+ /* Base Container */
+ iupClassRegisterAttribute(ic, "CLIENTSIZE", iTabsGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupdrvTabsInitClass(ic);
+
+ return ic;
+}
+
+Ihandle* IupTabs(Ihandle* first,...)
+{
+ Ihandle **params;
+ Ihandle *ih;
+
+ va_list arglist;
+ va_start(arglist, first);
+ params = (Ihandle**)iupObjectGetParamList(first, arglist);
+ va_end(arglist);
+
+ ih = IupCreatev("tabs", (void**)params);
+ free(params);
+
+ return ih;
+}
+
+Ihandle* IupTabsv(Ihandle** params)
+{
+ return IupCreatev("tabs", (void**)params);
+}
diff --git a/iup/src/iup_tabs.h b/iup/src/iup_tabs.h
new file mode 100755
index 0000000..7f5df2e
--- /dev/null
+++ b/iup/src/iup_tabs.h
@@ -0,0 +1,50 @@
+/** \file
+ * \brief Tabs Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_TABS_H
+#define __IUP_TABS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+char* iupTabsGetTabOrientationAttrib(Ihandle* ih);
+char* iupTabsGetTabTypeAttrib(Ihandle* ih);
+char* iupTabsAttribGetStrId(Ihandle* ih, const char* name, int pos);
+char* iupTabsGetPaddingAttrib(Ihandle* ih);
+
+int iupdrvTabsExtraDecor(Ihandle* ih);
+int iupdrvTabsGetLineCountAttrib(Ihandle* ih);
+void iupdrvTabsSetCurrentTab(Ihandle* ih, int pos);
+int iupdrvTabsGetCurrentTab(Ihandle* ih);
+void iupdrvTabsInitClass(Iclass* ic);
+
+typedef enum
+{
+ ITABS_TOP, ITABS_BOTTOM, ITABS_LEFT, ITABS_RIGHT
+} ItabsType;
+
+typedef enum
+{
+ ITABS_HORIZONTAL, ITABS_VERTICAL
+} ItabsOrientation;
+
+/* Control context */
+struct _IcontrolData
+{
+ ItabsType type;
+ ItabsOrientation orientation;
+ int horiz_padding, vert_padding; /* tab title margin */
+ int is_multiline; /* used only in Windows */
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_text.c b/iup/src/iup_text.c
new file mode 100755
index 0000000..6cd7235
--- /dev/null
+++ b/iup/src/iup_text.c
@@ -0,0 +1,513 @@
+/** \file
+ * \brief Text Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_mask.h"
+#include "iup_array.h"
+#include "iup_text.h"
+#include "iup_assert.h"
+
+
+char* iupTextGetFormattingAttrib(Ihandle* ih)
+{
+ if (ih->data->has_formatting)
+ return "YES";
+ else
+ return "NO";
+}
+
+int iupTextSetFormattingAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->handle) /* only before map */
+ return 0;
+
+ ih->data->has_formatting = iupStrBoolean(value);
+
+ return 0;
+}
+
+static void iTextDestroyFormatTags(Ihandle* ih)
+{
+ /* called if the element was destroyed before it was mapped */
+ int i, count = iupArrayCount(ih->data->formattags);
+ Ihandle** tag_array = (Ihandle**)iupArrayGetData(ih->data->formattags);
+ for (i = 0; i < count; i++)
+ IupDestroy(tag_array[i]);
+ iupArrayDestroy(ih->data->formattags);
+ ih->data->formattags = NULL;
+}
+
+static void iTextUpdateValueAttrib(Ihandle* ih)
+{
+ char* value = iupAttribGet(ih, "VALUE");
+ if (value)
+ {
+ int inherit;
+ iupClassObjectSetAttribute(ih, "VALUE", value, &inherit);
+
+ iupAttribSetStr(ih, "VALUE", NULL); /* clear hash table */
+ }
+}
+
+char* iupTextGetNCAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(100);
+ sprintf(str, "%d", ih->data->nc);
+ return str;
+}
+
+void iupTextUpdateFormatTags(Ihandle* ih)
+{
+ /* called when the element is mapped */
+ int i, count = iupArrayCount(ih->data->formattags);
+ Ihandle** tag_array = (Ihandle**)iupArrayGetData(ih->data->formattags);
+
+ /* must update VALUE before updating the format */
+ iTextUpdateValueAttrib(ih);
+
+ for (i = 0; i < count; i++)
+ {
+ iupdrvTextAddFormatTag(ih, tag_array[i]);
+ IupDestroy(tag_array[i]);
+ }
+ iupArrayDestroy(ih->data->formattags);
+ ih->data->formattags = NULL;
+}
+
+int iupTextSetAddFormatTagHandleAttrib(Ihandle* ih, const char* value)
+{
+ Ihandle* formattag = (Ihandle*)value;
+ if (!iupObjectCheck(formattag))
+ return 0;
+
+ if (ih->handle)
+ {
+ /* must update VALUE before updating the format */
+ iTextUpdateValueAttrib(ih);
+
+ iupdrvTextAddFormatTag(ih, formattag);
+ IupDestroy(formattag);
+ }
+ else
+ {
+ Ihandle** tag_array;
+ int i;
+
+ if (!ih->data->formattags)
+ ih->data->formattags = iupArrayCreate(10, sizeof(Ihandle*));
+
+ i = iupArrayCount(ih->data->formattags);
+ tag_array = (Ihandle**)iupArrayInc(ih->data->formattags);
+ tag_array[i] = formattag;
+ }
+ return 0;
+}
+
+int iupTextSetAddFormatTagAttrib(Ihandle* ih, const char* value)
+{
+ return iupTextSetAddFormatTagHandleAttrib(ih, (char*)IupGetHandle(value));
+}
+
+static char* iTextGetMaskDataAttrib(Ihandle* ih)
+{
+ /* Used only by the OLD iupmask API */
+ return (char*)ih->data->mask;
+}
+
+static char* iTextGetMaskAttrib(Ihandle* ih)
+{
+ if (ih->data->mask)
+ return iupMaskGetStr(ih->data->mask);
+ else
+ return NULL;
+}
+
+static int iTextSetMaskAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ if (ih->data->mask)
+ {
+ iupMaskDestroy(ih->data->mask);
+ ih->data->mask = NULL;
+ }
+ }
+ else
+ {
+ int casei = iupAttribGetInt(ih, "MASKCASEI");
+ Imask* mask = iupMaskCreate(value,casei);
+ if (mask)
+ {
+ if (ih->data->mask)
+ iupMaskDestroy(ih->data->mask);
+
+ ih->data->mask = mask;
+ return 0;
+ }
+ }
+
+ return 0;
+}
+
+static int iTextSetMaskIntAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ if (ih->data->mask)
+ {
+ iupMaskDestroy(ih->data->mask);
+ ih->data->mask = NULL;
+ }
+ }
+ else
+ {
+ Imask* mask;
+ int min, max;
+
+ if (iupStrToIntInt(value, &min, &max, ':')!=2)
+ return 0;
+
+ mask = iupMaskCreateInt(min,max);
+
+ if (ih->data->mask)
+ iupMaskDestroy(ih->data->mask);
+
+ ih->data->mask = mask;
+ }
+
+ return 0;
+}
+
+static int iTextSetMaskFloatAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ if (ih->data->mask)
+ {
+ iupMaskDestroy(ih->data->mask);
+ ih->data->mask = NULL;
+ }
+ }
+ else
+ {
+ Imask* mask;
+ float min, max;
+
+ if (iupStrToFloatFloat(value, &min, &max, ':')!=2)
+ return 0;
+
+ mask = iupMaskCreateFloat(min,max);
+
+ if (ih->data->mask)
+ iupMaskDestroy(ih->data->mask);
+
+ ih->data->mask = mask;
+ }
+
+ return 0;
+}
+
+static int iTextSetMultilineAttrib(Ihandle* ih, const char* value)
+{
+ /* valid only before map */
+ if (ih->handle)
+ return 0;
+
+ if (iupStrBoolean(value))
+ {
+ ih->data->is_multiline = 1;
+ ih->data->sb = IUP_SB_HORIZ | IUP_SB_VERT; /* reset SCROLLBAR to YES */
+ }
+ else
+ ih->data->is_multiline = 0;
+
+ return 0;
+}
+
+static char* iTextGetMultilineAttrib(Ihandle* ih)
+{
+ if (ih->data->is_multiline)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iTextSetAppendNewlineAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ ih->data->append_newline = 1;
+ else
+ ih->data->append_newline = 0;
+ return 0;
+}
+
+static char* iTextGetAppendNewlineAttrib(Ihandle* ih)
+{
+ if (ih->data->append_newline)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iTextSetScrollbarAttrib(Ihandle* ih, const char* value)
+{
+ /* valid only before map */
+ if (ih->handle || !ih->data->is_multiline)
+ return 0;
+
+ if (!value)
+ value = "YES"; /* default, if multiline, is YES */
+
+ if (iupStrEqualNoCase(value, "YES"))
+ ih->data->sb = IUP_SB_HORIZ | IUP_SB_VERT;
+ else if (iupStrEqualNoCase(value, "HORIZONTAL"))
+ ih->data->sb = IUP_SB_HORIZ;
+ else if (iupStrEqualNoCase(value, "VERTICAL"))
+ ih->data->sb = IUP_SB_VERT;
+ else
+ ih->data->sb = IUP_SB_NONE;
+
+ return 0;
+}
+
+static char* iTextGetScrollbarAttrib(Ihandle* ih)
+{
+ if (ih->data->sb == (IUP_SB_HORIZ | IUP_SB_VERT))
+ return "YES";
+ if (ih->data->sb &= IUP_SB_HORIZ)
+ return "HORIZONTAL";
+ if (ih->data->sb == IUP_SB_VERT)
+ return "VERTICAL";
+ return "NO"; /* IUP_SB_NONE */
+}
+
+char* iupTextGetPaddingAttrib(Ihandle* ih)
+{
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding);
+ return str;
+}
+
+
+/********************************************************************/
+
+
+static int iTextCreateMethod(Ihandle* ih, void** params)
+{
+ if (params)
+ {
+ if (params[0]) iupAttribStoreStr(ih, "ACTION", (char*)(params[0]));
+ }
+ ih->data = iupALLOCCTRLDATA();
+ ih->data->append_newline = 1;
+ return IUP_NOERROR;
+}
+
+static int iMultilineCreateMethod(Ihandle* ih, void** params)
+{
+ iTextCreateMethod(ih, params);
+ ih->data->is_multiline = 1;
+ ih->data->sb = IUP_SB_HORIZ | IUP_SB_VERT;
+ return IUP_NOERROR;
+}
+
+static void iTextComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ int natural_w = 0,
+ natural_h = 0,
+ visiblecolumns = iupAttribGetInt(ih, "VISIBLECOLUMNS"),
+ visiblelines = iupAttribGetInt(ih, "VISIBLELINES");
+ (void)expand; /* unset if not a container */
+
+ /* Since the contents can be changed by the user, the size can not be dependent on it. */
+ if (ih->data->is_multiline)
+ {
+ iupdrvFontGetCharSize(ih, NULL, &natural_h); /* one line height */
+ natural_w = iupdrvFontGetStringWidth(ih, "WWWWWWWWWW");
+ natural_w = (visiblecolumns*natural_w)/10;
+ natural_h = visiblelines*natural_h;
+ }
+ else
+ {
+ iupdrvFontGetCharSize(ih, NULL, &natural_h); /* one line height */
+ natural_w = iupdrvFontGetStringWidth(ih, "WWWWWWWWWW");
+ natural_w = (visiblecolumns*natural_w)/10;
+ }
+
+ /* compute the borders space */
+ if (iupAttribGetBoolean(ih, "BORDER"))
+ iupdrvTextAddBorders(&natural_w, &natural_h);
+
+ if (iupAttribGetBoolean(ih, "SPIN"))
+ iupdrvTextAddSpin(&natural_w, natural_h);
+
+ natural_w += 2*ih->data->horiz_padding;
+ natural_h += 2*ih->data->vert_padding;
+
+ /* add scrollbar */
+ if (ih->data->is_multiline && ih->data->sb)
+ {
+ int sb_size = iupdrvGetScrollbarSize();
+ if (ih->data->sb & IUP_SB_HORIZ)
+ natural_w += sb_size;
+ if (ih->data->sb & IUP_SB_VERT)
+ natural_h += sb_size;
+ }
+
+ *w = natural_w;
+ *h = natural_h;
+}
+
+static void iTextDestroyMethod(Ihandle* ih)
+{
+ if (ih->data->formattags)
+ iTextDestroyFormatTags(ih);
+ if (ih->data->mask)
+ iupMaskDestroy(ih->data->mask);
+}
+
+
+/******************************************************************************/
+
+
+void IupTextConvertLinColToPos(Ihandle* ih, int lin, int col, int *pos)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ if (!ih->handle)
+ return;
+
+ if (iupStrEqual(ih->iclass->name, "text") ||
+ iupStrEqual(ih->iclass->name, "multiline"))
+ {
+ if (ih->data->is_multiline)
+ iupdrvTextConvertLinColToPos(ih, lin, col, pos);
+ else
+ *pos = col - 1; /* IUP starts at 1 */
+ }
+}
+
+void IupTextConvertPosToLinCol(Ihandle* ih, int pos, int *lin, int *col)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ if (!ih->handle)
+ return;
+
+ if (iupStrEqual(ih->iclass->name, "text") ||
+ iupStrEqual(ih->iclass->name, "multiline"))
+ {
+ if (ih->data->is_multiline)
+ iupdrvTextConvertPosToLinCol(ih, pos, lin, col);
+ else
+ {
+ *col = pos + 1; /* IUP starts at 1 */
+ *lin = 1;
+ }
+ }
+}
+
+Ihandle* IupText(const char* action)
+{
+ void *params[2];
+ params[0] = (void*)action;
+ params[1] = NULL;
+ return IupCreatev("text", params);
+}
+
+Ihandle* IupMultiLine(const char* action)
+{
+ void *params[2];
+ params[0] = (void*)action;
+ params[1] = NULL;
+ return IupCreatev("multiline", params);
+}
+
+Iclass* iupTextGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "text";
+ ic->format = "A"; /* one optional callback name */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iTextCreateMethod;
+ ic->Destroy = iTextDestroyMethod;
+ ic->ComputeNaturalSize = iTextComputeNaturalSizeMethod;
+ ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Callbacks */
+ iupClassRegisterCallback(ic, "CARET_CB", "iii");
+ iupClassRegisterCallback(ic, "ACTION", "is");
+ iupClassRegisterCallback(ic, "DROPFILES_CB", "siii");
+ iupClassRegisterCallback(ic, "BUTTON_CB", "iiiis");
+ iupClassRegisterCallback(ic, "MOTION_CB", "iis");
+ iupClassRegisterCallback(ic, "SPIN_CB", "i");
+ iupClassRegisterCallback(ic, "VALUECHANGED_CB", "");
+
+
+ /* Common Callbacks */
+ iupBaseRegisterCommonCallbacks(ic);
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Visual */
+ iupBaseRegisterVisualAttrib(ic);
+
+ /* IupText only */
+ iupClassRegisterAttribute(ic, "SCROLLBAR", iTextGetScrollbarAttrib, iTextSetScrollbarAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MULTILINE", iTextGetMultilineAttrib, iTextSetMultilineAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "APPENDNEWLINE", iTextGetAppendNewlineAttrib, iTextSetAppendNewlineAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "MASKCASEI", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MASK", iTextGetMaskAttrib, iTextSetMaskAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MASKINT", NULL, iTextSetMaskIntAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MASKFLOAT", NULL, iTextSetMaskFloatAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "OLD_MASK_DATA", iTextGetMaskDataAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "BORDER", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPIN", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPINALIGN", NULL, NULL, IUPAF_SAMEASSYSTEM, "RIGHT", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPINAUTO", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPINWRAP", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VISIBLECOLUMNS", NULL, NULL, IUPAF_SAMEASSYSTEM, "5", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VISIBLELINES", NULL, NULL, IUPAF_SAMEASSYSTEM, "1", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "WORDWRAP", NULL, NULL, NULL, NULL, IUPAF_DEFAULT);
+
+ iupdrvTextInitClass(ic);
+
+ return ic;
+}
+
+Iclass* iupMultilineGetClass(void)
+{
+ Iclass* ic = iupTextGetClass();
+ ic->Create = iMultilineCreateMethod;
+ ic->name = "multiline"; /* register the multiline name, so LED will work */
+ return ic;
+}
diff --git a/iup/src/iup_text.h b/iup/src/iup_text.h
new file mode 100755
index 0000000..e018961
--- /dev/null
+++ b/iup/src/iup_text.h
@@ -0,0 +1,48 @@
+/** \file
+ * \brief Text Controls Private Declarations
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_TEXT_H
+#define __IUP_TEXT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void iupdrvTextInitClass(Iclass* ic);
+void iupdrvTextAddBorders(int *w, int *h);
+void iupdrvTextAddSpin(int *w, int h);
+void iupdrvTextAddFormatTag(Ihandle* ih, Ihandle* formattag);
+void iupdrvTextConvertLinColToPos(Ihandle* ih, int lin, int col, int *pos);
+void iupdrvTextConvertPosToLinCol(Ihandle* ih, int pos, int *lin, int *col);
+
+void iupTextUpdateFormatTags(Ihandle* ih);
+char* iupTextGetPaddingAttrib(Ihandle* ih);
+char* iupTextGetNCAttrib(Ihandle* ih);
+int iupTextSetFormattingAttrib(Ihandle* ih, const char* value);
+char* iupTextGetFormattingAttrib(Ihandle* ih);
+int iupTextSetAddFormatTagAttrib(Ihandle* ih, const char* value);
+int iupTextSetAddFormatTagHandleAttrib(Ihandle* ih, const char* value);
+
+struct _IcontrolData
+{
+ int is_multiline,
+ has_formatting,
+ append_newline,
+ nc,
+ sb, /* scrollbar configuration, can be changed only before map */
+ horiz_padding, vert_padding, /* button margin */
+ last_caret_pos;
+ Iarray* formattags;
+ Imask* mask;
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_timer.c b/iup/src/iup_timer.c
new file mode 100755
index 0000000..9a003b4
--- /dev/null
+++ b/iup/src/iup_timer.c
@@ -0,0 +1,80 @@
+/** \file
+ * \brief Timer Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+#include "iup_timer.h"
+
+
+static int iTimerSetRunAttrib(Ihandle *ih, const char *value)
+{
+ if (iupStrBoolean(value))
+ iupdrvTimerRun(ih);
+ else
+ iupdrvTimerStop(ih);
+
+ return 0;
+}
+
+static char* iTimerGetRunAttrib(Ihandle *ih)
+{
+ if (ih->serial > 0)
+ return "YES";
+ else
+ return "NO";
+}
+
+static char* iTimerGetWidAttrib(Ihandle *ih)
+{
+ char* str = iupStrGetMemory(50);
+ sprintf(str, "%d", ih->serial);
+ return str;
+}
+
+static void iTimerDestroyMethod(Ihandle* ih)
+{
+ iupdrvTimerStop(ih);
+}
+
+/******************************************************************************/
+
+Ihandle* IupTimer(void)
+{
+ return IupCreate("timer");
+}
+
+Iclass* iupTimerGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "timer";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Destroy = iTimerDestroyMethod;
+
+ /* Callbacks */
+ iupClassRegisterCallback(ic, "ACTION_CB", "");
+
+ /* Attribute functions */
+ iupClassRegisterAttribute(ic, "WID", iTimerGetWidAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "RUN", iTimerGetRunAttrib, iTimerSetRunAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TIME", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupdrvTimerInitClass(ic);
+
+ return ic;
+}
diff --git a/iup/src/iup_timer.h b/iup/src/iup_timer.h
new file mode 100755
index 0000000..8a61f5f
--- /dev/null
+++ b/iup/src/iup_timer.h
@@ -0,0 +1,24 @@
+/** \file
+ * \brief Timer Resource Private Declarations
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_TIMER_H
+#define __IUP_TIMER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void iupdrvTimerStop(Ihandle* ih);
+void iupdrvTimerRun(Ihandle* ih);
+void iupdrvTimerInitClass(Iclass* ic);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_toggle.c b/iup/src/iup_toggle.c
new file mode 100755
index 0000000..9a09f52
--- /dev/null
+++ b/iup/src/iup_toggle.c
@@ -0,0 +1,140 @@
+/** \file
+ * \brief Toggle Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_toggle.h"
+#include "iup_image.h"
+
+
+static char* iToggleGetRadioAttrib(Ihandle* ih)
+{
+ if (ih->data->radio)
+ return "YES";
+ else
+ return "NO";
+}
+
+char* iupToggleGetPaddingAttrib(Ihandle* ih)
+{
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding);
+ return str;
+}
+
+static int iToggleCreateMethod(Ihandle* ih, void** params)
+{
+ if (params)
+ {
+ if (params[0]) iupAttribStoreStr(ih, "TITLE", (char*)(params[0]));
+ if (params[1]) iupAttribStoreStr(ih, "ACTION", (char*)(params[1]));
+ }
+ ih->data = iupALLOCCTRLDATA();
+ return IUP_NOERROR;
+}
+
+static void iToggleComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ int natural_w = 0,
+ natural_h = 0,
+ type = ih->data->type;
+ (void)expand; /* unset if not a container */
+
+ if (!ih->handle)
+ {
+ /* if not mapped must initialize the internal values */
+ char* value = iupAttribGet(ih, "IMAGE");
+ if (value)
+ type = IUP_TOGGLE_IMAGE;
+ else
+ type = IUP_TOGGLE_TEXT;
+ }
+
+ if (type == IUP_TOGGLE_IMAGE)
+ {
+ iupImageGetInfo(iupAttribGet(ih, "IMAGE"), &natural_w, &natural_h, NULL);
+
+ /* even when IMPRESS is set, must compute the borders space */
+ iupdrvButtonAddBorders(&natural_w, &natural_h);
+
+ natural_w += 2*ih->data->horiz_padding;
+ natural_h += 2*ih->data->vert_padding;
+ }
+ else /* IUP_TOGGLE_TEXT */
+ {
+ /* must use IupGetAttribute to check from the native implementation */
+ char* title = IupGetAttribute(ih, "TITLE");
+ char* str = iupStrProcessMnemonic(title, NULL, 0); /* remove & */
+ iupdrvFontGetMultiLineStringSize(ih, str, &natural_w, &natural_h);
+ if (str && str!=title) free(str);
+
+ iupdrvToggleAddCheckBox(&natural_w, &natural_h);
+ }
+
+ *w = natural_w;
+ *h = natural_h;
+}
+
+
+/******************************************************************************/
+
+
+Ihandle* IupToggle(const char* title, const char* action)
+{
+ void *params[3];
+ params[0] = (void*)title;
+ params[1] = (void*)action;
+ params[2] = NULL;
+ return IupCreatev("toggle", params);
+}
+
+Iclass* iupToggleGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "toggle";
+ ic->format = "SA"; /* one optional string and one optional callback name */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iToggleCreateMethod;
+ ic->ComputeNaturalSize = iToggleComputeNaturalSizeMethod;
+ ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Callbacks */
+ iupClassRegisterCallback(ic, "ACTION", "i");
+ iupClassRegisterCallback(ic, "VALUECHANGED_CB", "");
+
+ /* Common Callbacks */
+ iupBaseRegisterCommonCallbacks(ic);
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Visual */
+ iupBaseRegisterVisualAttrib(ic);
+
+ iupClassRegisterAttribute(ic, "RADIO", iToggleGetRadioAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "3STATE", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+
+ iupdrvToggleInitClass(ic);
+
+ return ic;
+}
diff --git a/iup/src/iup_toggle.h b/iup/src/iup_toggle.h
new file mode 100755
index 0000000..08e14b0
--- /dev/null
+++ b/iup/src/iup_toggle.h
@@ -0,0 +1,37 @@
+/** \file
+ * \brief Toggle Controls Private Declarations
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_TOGGLE_H
+#define __IUP_TOGGLE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void iupdrvButtonAddBorders(int *x, int *y); /* reuse button borders */
+
+void iupdrvToggleInitClass(Iclass* ic);
+void iupdrvToggleAddCheckBox(int *x, int *y);
+
+Ihandle *iupRadioFindToggleParent(Ihandle* ih_toggle);
+char* iupToggleGetPaddingAttrib(Ihandle* ih);
+
+enum {IUP_TOGGLE_IMAGE, IUP_TOGGLE_TEXT};
+
+struct _IcontrolData
+{
+ int type, /* the 2 toggle possibilities */
+ radio,
+ horiz_padding, vert_padding; /* toggle margin for images */
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_tree.c b/iup/src/iup_tree.c
new file mode 100755
index 0000000..c06e573
--- /dev/null
+++ b/iup/src/iup_tree.c
@@ -0,0 +1,499 @@
+/** \file
+ * \brief Tree control
+ *
+ * See Copyright Notice in iup.h
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_tree.h"
+#include "iup_assert.h"
+
+
+#define ITREE_IMG_WIDTH 16
+#define ITREE_IMG_HEIGHT 16
+
+static void iTreeInitializeImages(void)
+{
+ Ihandle *image_leaf, *image_blank, *image_paper;
+ Ihandle *image_collapsed, *image_expanded;
+
+ unsigned char img_leaf[ITREE_IMG_WIDTH*ITREE_IMG_HEIGHT] =
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4, 4, 5, 5, 5, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 5, 5, 1, 6, 1, 5, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 4, 4, 5, 5, 1, 6, 1, 5, 0, 0, 0, 0,
+ 0, 0, 0, 3, 4, 4, 4, 5, 5, 1, 1, 5, 0, 0, 0, 0,
+ 0, 0, 0, 2, 3, 4, 4, 4, 5, 5, 5, 4, 0, 0, 0, 0,
+ 0, 0, 0, 2, 3, 3, 4, 4, 4, 5, 4, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 3, 3, 4, 4, 4, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ };
+
+ unsigned char img_collapsed[ITREE_IMG_WIDTH*ITREE_IMG_HEIGHT] =
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 6, 5, 5, 7, 7, 2, 3, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0,
+ 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 4, 3, 0,
+ 2, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 4, 3, 0,
+ 2, 5, 7, 7, 7, 7, 7, 7, 7, 1, 7, 1, 7, 4, 3, 0,
+ 2, 5, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 1, 4, 3, 0,
+ 2, 5, 7, 7, 7, 7, 7, 1, 7, 1, 7, 1, 7, 4, 3, 0,
+ 2, 5, 7, 7, 7, 7, 7, 7, 1, 7, 1, 7, 1, 4, 3, 0,
+ 2, 5, 7, 7, 7, 1, 7, 1, 7, 1, 7, 1, 1, 4, 3, 0,
+ 2, 5, 1, 7, 1, 7, 1, 7, 1, 7, 1, 1, 1, 4, 3, 0,
+ 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 0,
+ 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ };
+
+ unsigned char img_expanded[ITREE_IMG_WIDTH*ITREE_IMG_HEIGHT] =
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 1, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 0,
+ 0, 2, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 6, 4,
+ 0, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 4,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 3, 6, 4,
+ 2, 1, 3, 3, 3, 3, 3, 3, 5, 3, 5, 6, 4, 6, 6, 4,
+ 2, 1, 3, 3, 3, 3, 5, 3, 3, 5, 3, 6, 4, 6, 6, 4,
+ 0, 2, 0, 3, 3, 3, 3, 3, 5, 3, 5, 5, 2, 4, 2, 4,
+ 0, 2, 0, 3, 3, 5, 3, 5, 3, 5, 5, 5, 6, 4, 2, 4,
+ 0, 0, 2, 0, 5, 3, 5, 3, 5, 5, 5, 5, 6, 2, 4, 4,
+ 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4,
+ 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ };
+
+ unsigned char img_blank[ITREE_IMG_WIDTH*ITREE_IMG_HEIGHT] =
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 0, 0,
+ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 5, 4, 0, 0, 0,
+ 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 4, 0, 0,
+ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0,
+ 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 0,
+ 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0
+ };
+
+ unsigned char img_paper[ITREE_IMG_WIDTH*ITREE_IMG_HEIGHT] =
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 0, 0,
+ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 5, 4, 0, 0, 0,
+ 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 4, 0, 0,
+ 0, 0, 3, 1, 4, 3, 4, 3, 4, 3, 4, 2, 2, 2, 2, 0,
+ 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 3, 1, 3, 4, 3, 4, 3, 4, 3, 4, 1, 5, 2, 0,
+ 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 3, 1, 4, 3, 4, 3, 4, 3, 4, 3, 1, 5, 2, 0,
+ 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 3, 1, 3, 4, 3, 4, 3, 4, 3, 4, 1, 5, 2, 0,
+ 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 3, 1, 4, 3, 4, 3, 4, 3, 4, 3, 1, 5, 2, 0,
+ 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0,
+ 0, 0, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 0,
+ 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0
+ };
+
+ image_leaf = IupImage(ITREE_IMG_WIDTH, ITREE_IMG_HEIGHT, img_leaf);
+ image_collapsed = IupImage(ITREE_IMG_WIDTH, ITREE_IMG_HEIGHT, img_collapsed);
+ image_expanded = IupImage(ITREE_IMG_WIDTH, ITREE_IMG_HEIGHT, img_expanded);
+ image_blank = IupImage(ITREE_IMG_WIDTH, ITREE_IMG_HEIGHT, img_blank);
+ image_paper = IupImage(ITREE_IMG_WIDTH, ITREE_IMG_HEIGHT, img_paper);
+
+ IupSetAttribute(image_leaf, "0", "BGCOLOR");
+ IupSetAttribute(image_leaf, "1", "192 192 192");
+ IupSetAttribute(image_leaf, "2", "56 56 56");
+ IupSetAttribute(image_leaf, "3", "99 99 99");
+ IupSetAttribute(image_leaf, "4", "128 128 128");
+ IupSetAttribute(image_leaf, "5", "161 161 161");
+ IupSetAttribute(image_leaf, "6", "222 222 222");
+
+ IupSetAttribute(image_collapsed, "0", "BGCOLOR");
+ IupSetAttribute(image_collapsed, "1", "255 206 156");
+ IupSetAttribute(image_collapsed, "2", "156 156 0");
+ IupSetAttribute(image_collapsed, "3", "0 0 0");
+ IupSetAttribute(image_collapsed, "4", "206 206 99");
+ IupSetAttribute(image_collapsed, "5", "255 255 206");
+ IupSetAttribute(image_collapsed, "6", "247 247 247");
+ IupSetAttribute(image_collapsed, "7", "255 255 156");
+
+ IupSetAttribute(image_expanded, "0", "BGCOLOR");
+ IupSetAttribute(image_expanded, "1", "255 255 255");
+ IupSetAttribute(image_expanded, "2", "156 156 0");
+ IupSetAttribute(image_expanded, "3", "255 255 156");
+ IupSetAttribute(image_expanded, "4", "0 0 0");
+ IupSetAttribute(image_expanded, "5", "255 206 156");
+ IupSetAttribute(image_expanded, "6", "206 206 99");
+
+ IupSetAttribute(image_blank, "0", "BGCOLOR");
+ IupSetAttribute(image_blank, "1", "255 255 255");
+ IupSetAttribute(image_blank, "2", "000 000 000");
+ IupSetAttribute(image_blank, "3", "119 119 119");
+ IupSetAttribute(image_blank, "4", "136 136 136");
+ IupSetAttribute(image_blank, "5", "187 187 187");
+
+ IupSetAttribute(image_paper, "0", "BGCOLOR");
+ IupSetAttribute(image_paper, "1", "255 255 255");
+ IupSetAttribute(image_paper, "2", "000 000 000");
+ IupSetAttribute(image_paper, "3", "119 119 119");
+ IupSetAttribute(image_paper, "4", "136 136 136");
+ IupSetAttribute(image_paper, "5", "187 187 187");
+
+ IupSetHandle("IMGLEAF", image_leaf);
+ IupSetHandle("IMGCOLLAPSED", image_collapsed);
+ IupSetHandle("IMGEXPANDED", image_expanded);
+ IupSetHandle("IMGBLANK", image_blank);
+ IupSetHandle("IMGPAPER", image_paper);
+}
+
+void iupTreeUpdateImages(Ihandle *ih)
+{
+ int inherit;
+
+ char* value = iupAttribGet(ih, "IMAGELEAF");
+ if (!value) value = "IMGLEAF";
+ iupClassObjectSetAttribute(ih, "IMAGELEAF", value, &inherit);
+
+ value = iupAttribGet(ih, "IMAGEBRANCHCOLLAPSED");
+ if (!value) value = "IMGCOLLAPSED";
+ iupClassObjectSetAttribute(ih, "IMAGEBRANCHCOLLAPSED", value, &inherit);
+
+ value = iupAttribGet(ih, "IMAGEBRANCHEXPANDED");
+ if (!value) value = "IMGEXPANDED";
+ iupClassObjectSetAttribute(ih, "IMAGEBRANCHEXPANDED", value, &inherit);
+}
+
+char* iupTreeGetSpacingAttrib(Ihandle* ih)
+{
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%d", ih->data->spacing);
+ return str;
+}
+
+static char* iTreeGetMarkModeAttrib(Ihandle* ih)
+{
+ if (ih->data->mark_mode==ITREE_MARK_SINGLE)
+ return "SINGLE";
+ else
+ return "MULTIPLE";
+}
+
+static int iTreeSetMarkModeAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "MULTIPLE"))
+ ih->data->mark_mode = ITREE_MARK_MULTIPLE;
+ else
+ ih->data->mark_mode = ITREE_MARK_SINGLE;
+ if (ih->handle)
+ iupdrvTreeUpdateMarkMode(ih);
+ return 0;
+}
+
+static int iTreeSetShiftAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value) && iupAttribGetBoolean(ih, "CTRL"))
+ iTreeSetMarkModeAttrib(ih, "MULTIPLE");
+ else
+ iTreeSetMarkModeAttrib(ih, "SINGLE");
+ return 1;
+}
+
+static int iTreeSetCtrlAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value) && iupAttribGetBoolean(ih, "SHIFT"))
+ iTreeSetMarkModeAttrib(ih, "MULTIPLE");
+ else
+ iTreeSetMarkModeAttrib(ih, "SINGLE");
+ return 1;
+}
+
+static char* iTreeGetShowRenameAttrib(Ihandle* ih)
+{
+ if (ih->data->show_rename)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iTreeSetShowRenameAttrib(Ihandle* ih, const char* value)
+{
+ /* valid only before map */
+ if (ih->handle)
+ return 0;
+
+ if (iupStrBoolean(value))
+ ih->data->show_rename = 1;
+ else
+ ih->data->show_rename = 0;
+
+ return 0;
+}
+
+static char* iTreeGetShowDragDropAttrib(Ihandle* ih)
+{
+ if (ih->data->show_dragdrop)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iTreeSetShowDragDropAttrib(Ihandle* ih, const char* value)
+{
+ /* valid only before map */
+ if (ih->handle)
+ return 0;
+
+ if (iupStrBoolean(value))
+ ih->data->show_dragdrop = 1;
+ else
+ ih->data->show_dragdrop = 0;
+
+ return 0;
+}
+
+static int iTreeSetAddLeafAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ iupdrvTreeAddNode(ih, name_id, ITREE_LEAF, value, 1);
+ return 0;
+}
+
+static int iTreeSetAddBranchAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ iupdrvTreeAddNode(ih, name_id, ITREE_BRANCH, value, 1);
+ return 0;
+}
+
+static int iTreeSetInsertLeafAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ iupdrvTreeAddNode(ih, name_id, ITREE_LEAF, value, 0);
+ return 0;
+}
+
+static int iTreeSetInsertBranchAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ iupdrvTreeAddNode(ih, name_id, ITREE_BRANCH, value, 0);
+ return 0;
+}
+
+static char* iTreeGetAddExpandedAttrib(Ihandle* ih)
+{
+ if (ih->data->add_expanded)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iTreeSetAddExpandedAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ ih->data->add_expanded = 1;
+ else
+ ih->data->add_expanded = 0;
+
+ return 0;
+}
+
+static int iTreeCreateMethod(Ihandle* ih, void **params)
+{
+ (void)params;
+
+ ih->data = iupALLOCCTRLDATA();
+
+ IupSetAttribute(ih, "RASTERSIZE", "400x200");
+ IupSetAttribute(ih, "EXPAND", "YES");
+
+ ih->data->add_expanded = 1;
+
+ return IUP_NOERROR;
+}
+
+Ihandle* IupTree(void)
+{
+ return IupCreate("tree");
+}
+
+Iclass* iupTreeGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "tree";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+ ic->has_attrib_id = 1; /* has attributes with IDs that must be parsed */
+
+ /* Class functions */
+ ic->Create = iTreeCreateMethod;
+ ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Callbacks */
+ iupClassRegisterCallback(ic, "SELECTION_CB", "ii");
+ iupClassRegisterCallback(ic, "MULTISELECTION_CB", "Ii");
+ iupClassRegisterCallback(ic, "BRANCHOPEN_CB", "i");
+ iupClassRegisterCallback(ic, "BRANCHCLOSE_CB", "i");
+ iupClassRegisterCallback(ic, "EXECUTELEAF_CB", "i");
+ iupClassRegisterCallback(ic, "RENAMENODE_CB", "is");
+ iupClassRegisterCallback(ic, "SHOWRENAME_CB", "i");
+ iupClassRegisterCallback(ic, "RENAME_CB", "is");
+ iupClassRegisterCallback(ic, "DRAGDROP_CB", "iiii");
+ iupClassRegisterCallback(ic, "RIGHTCLICK_CB", "i");
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Visual */
+ iupBaseRegisterVisualAttrib(ic);
+
+ /* IupTree Attributes - GENERAL */
+ iupClassRegisterAttribute(ic, "SHOWDRAGDROP", iTreeGetShowDragDropAttrib, iTreeSetShowDragDropAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOWRENAME", iTreeGetShowRenameAttrib, iTreeSetShowRenameAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ADDEXPANDED", iTreeGetAddExpandedAttrib, iTreeSetAddExpandedAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* IupTree Attributes - MARKS */
+ iupClassRegisterAttribute(ic, "CTRL", NULL, iTreeSetCtrlAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "SHIFT", NULL, iTreeSetShiftAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "MARKMODE", iTreeGetMarkModeAttrib, iTreeSetMarkModeAttrib, IUPAF_SAMEASSYSTEM, "SINGLE", IUPAF_NOT_MAPPED);
+
+ /* IupTree Attributes - ACTION */
+ iupClassRegisterAttributeId(ic, "ADDLEAF", NULL, iTreeSetAddLeafAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "ADDBRANCH", NULL, iTreeSetAddBranchAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "INSERTLEAF", NULL, iTreeSetInsertLeafAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "INSERTBRANCH", NULL, iTreeSetInsertBranchAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+
+ /* Default node images */
+ iTreeInitializeImages();
+
+ iupdrvTreeInitClass(ic);
+
+ return ic;
+}
+
+
+/********************************************************************************************/
+
+
+void IupTreeSetAttribute(Ihandle* ih, const char* a, int id, char* v)
+{
+ char* attr = iupStrGetMemory(50);
+ sprintf(attr, "%s%d", a, id);
+ IupSetAttribute(ih, attr, v);
+}
+
+void IupTreeStoreAttribute(Ihandle* ih, const char* a, int id, char* v)
+{
+ char* attr = iupStrGetMemory(50);
+ sprintf(attr, "%s%d", a, id);
+ IupStoreAttribute(ih, attr, v);
+}
+
+char* IupTreeGetAttribute(Ihandle* ih, const char* a, int id)
+{
+ char* attr = iupStrGetMemory(50);
+ sprintf(attr, "%s%d", a, id);
+ return IupGetAttribute(ih, attr);
+}
+
+int IupTreeGetInt(Ihandle* ih, const char* a, int id)
+{
+ char* attr = iupStrGetMemory(50);
+ sprintf(attr, "%s%d", a, id);
+ return IupGetInt(ih, attr);
+}
+
+float IupTreeGetFloat(Ihandle* ih, const char* a, int id)
+{
+ char* attr = iupStrGetMemory(50);
+ sprintf(attr, "%s%d", a, id);
+ return IupGetFloat(ih, attr);
+}
+
+void IupTreeSetfAttribute(Ihandle* ih, const char* a, int id, char* f, ...)
+{
+ static char v[SHRT_MAX];
+ char* attr = iupStrGetMemory(50);
+ va_list arglist;
+ sprintf(attr, "%s%d", a, id);
+ va_start(arglist, f);
+ vsprintf(v, f, arglist);
+ va_end(arglist);
+ IupStoreAttribute(ih, attr, v);
+}
+
+
+/************************************************************************************/
+
+
+int IupTreeSetUserId(Ihandle* ih, int id, void* userdata)
+{
+ char attr[30];
+ sprintf(attr,"USERDATA%d",id);
+ IupSetAttribute(ih, attr, userdata);
+ return IupGetAttribute(ih, attr)? 1: 0;
+}
+
+int IupTreeGetId(Ihandle* ih, void *userdata)
+{
+ int id = -1;
+ char* value;
+ char attr[30];
+ sprintf(attr,"FINDUSERDATA:%p",userdata);
+ value = IupGetAttribute(ih, attr);
+ if (!value) return -1;
+
+ iupStrToInt(value, &id);
+ return id;
+}
+
+void* IupTreeGetUserId(Ihandle* ih, int id)
+{
+ char attr[30];
+ sprintf(attr,"USERDATA%d",id);
+ return IupGetAttribute(ih, attr);
+}
diff --git a/iup/src/iup_tree.h b/iup/src/iup_tree.h
new file mode 100755
index 0000000..f96a698
--- /dev/null
+++ b/iup/src/iup_tree.h
@@ -0,0 +1,57 @@
+/** \file
+ * \brief iuptree control internal definitions.
+ *
+ * See Copyright Notice in iup.h
+ */
+
+#ifndef __IUP_TREE_H
+#define __IUP_TREE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Kinds of node */
+#define ITREE_BRANCH 0
+#define ITREE_LEAF 1
+
+#define ITREE_MARK_SINGLE 0
+#define ITREE_MARK_MULTIPLE 1
+
+#define ITREE_UPDATEIMAGE_LEAF 1
+#define ITREE_UPDATEIMAGE_COLLAPSED 2
+#define ITREE_UPDATEIMAGE_EXPANDED 3
+
+void iupdrvTreeInitClass(Iclass* ic);
+void iupTreeUpdateImages(Ihandle *ih);
+void iupdrvTreeAddNode(Ihandle* ih, const char* id_string, int kind, const char* title, int add);
+void iupdrvTreeUpdateMarkMode(Ihandle *ih);
+
+char* iupTreeGetSpacingAttrib(Ihandle* ih);
+
+/* Structure of the tree */
+struct _IcontrolData
+{
+ int mark_mode,
+ add_expanded,
+ show_dragdrop,
+ show_rename,
+ spacing;
+
+ void* def_image_leaf; /* Default image leaf */
+ void* def_image_collapsed; /* Default image collapsed */
+ void* def_image_expanded; /* Default image expanded */
+
+ void* def_image_leaf_mask; /* Motif Only */
+ void* def_image_collapsed_mask;
+ void* def_image_expanded_mask;
+
+ int id_control; /* auxiliary variable for computing or finding the id of a node */
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_user.c b/iup/src/iup_user.c
new file mode 100755
index 0000000..842f436
--- /dev/null
+++ b/iup/src/iup_user.c
@@ -0,0 +1,41 @@
+/** \file
+ * \brief User Element.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_stdcontrols.h"
+
+
+static int iUserSetClearAttributesAttrib(Ihandle* ih, const char* value)
+{
+ (void)value;
+ iupTableClear(ih->attrib);
+ return 0;
+}
+
+Ihandle* IupUser(void)
+{
+ return IupCreate("user");
+}
+
+Iclass* iupUserGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "user";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPEVOID;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ iupClassRegisterAttribute(ic, "CLEARATTRIBUTES", NULL, iUserSetClearAttributesAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
diff --git a/iup/src/iup_val.c b/iup/src/iup_val.c
new file mode 100755
index 0000000..521e35a
--- /dev/null
+++ b/iup/src/iup_val.c
@@ -0,0 +1,209 @@
+/** \file
+ * \brief Valuator Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+#include "iupcontrols.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_val.h"
+
+
+void iupValCropValue(Ihandle* ih)
+{
+ if (ih->data->val > ih->data->vmax)
+ ih->data->val = ih->data->vmax;
+ else if (ih->data->val < ih->data->vmin)
+ ih->data->val = ih->data->vmin;
+}
+
+char* iupValGetShowTicksAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(30);
+ sprintf(str, "%d", ih->data->show_ticks);
+ return str;
+}
+
+char* iupValGetValueAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(30);
+ sprintf(str, "%g", ih->data->val);
+ return str;
+}
+
+char* iupValGetStepAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(30);
+ sprintf(str, "%g", ih->data->step);
+ return str;
+}
+
+char* iupValGetPageStepAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(30);
+ sprintf(str, "%g", ih->data->pagestep);
+ return str;
+}
+
+static int iValSetMaxAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->vmax = atof(value);
+ iupValCropValue(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iValGetMaxAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(30);
+ sprintf(str, "%g", ih->data->vmax);
+ return str;
+}
+
+static int iValSetMinAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->vmin = atof(value);
+ iupValCropValue(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iValGetMinAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(30);
+ sprintf(str, "%g", ih->data->vmin);
+ return str;
+}
+
+static int iValSetTypeAttrib(Ihandle* ih, const char *value)
+{
+ int min_w, min_h;
+
+ /* valid only before map */
+ if (ih->handle)
+ return 0;
+
+ iupdrvValGetMinSize(ih, &min_w, &min_h);
+
+ if (iupStrEqualNoCase(value, "VERTICAL"))
+ {
+ /* val natural vertical size is MinWx100 */
+ IupSetfAttribute(ih, "RASTERSIZE", "%dx%d", min_w, 100);
+ ih->data->type = IVAL_VERTICAL;
+ }
+ else /* "HORIZONTAL" */
+ {
+ /* val natural horizontal size is 100xMinH */
+ IupSetfAttribute(ih, "RASTERSIZE", "%dx%d", 100, min_h);
+ ih->data->type = IVAL_HORIZONTAL;
+ }
+
+ return 0; /* do not store value in hash table */
+}
+
+static char* iValGetTypeAttrib(Ihandle* ih)
+{
+ if (ih->data->type == IVAL_HORIZONTAL)
+ return "HORIZONTAL";
+ else /* (ih->data->type == IVAL_VERTICAL) */
+ return "VERTICAL";
+}
+
+static int iValSetInvertedAttrib(Ihandle* ih, const char *value)
+{
+ /* valid only before map */
+ if (ih->handle)
+ return 0;
+
+ if (iupStrBoolean(value))
+ ih->data->inverted = 1;
+ else
+ ih->data->inverted = 0;
+
+ return 0; /* do not store value in hash table */
+}
+
+static char* iValGetInvertedAttrib(Ihandle* ih)
+{
+ if (ih->data->inverted)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iValCreateMethod(Ihandle* ih, void **params)
+{
+ char* type = "HORIZONTAL";
+ if (params && params[0])
+ type = params[0];
+
+ ih->data = iupALLOCCTRLDATA();
+
+ iValSetTypeAttrib(ih, type);
+ if (ih->data->type == IVAL_VERTICAL)
+ ih->data->inverted = 1; /* default is YES when vertical */
+
+ ih->data->vmax = 1.00;
+ ih->data->step = 0.01;
+ ih->data->pagestep = 0.10;
+
+ return IUP_NOERROR;
+}
+
+Iclass* iupValGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "val";
+ ic->format = "S"; /* one optional string */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iValCreateMethod;
+ ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Callbacks */
+ iupClassRegisterCallback(ic, "VALUECHANGED_CB", "");
+
+ /* Common Callbacks */
+ iupBaseRegisterCommonCallbacks(ic);
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Visual */
+ iupBaseRegisterVisualAttrib(ic);
+
+ /* IupVal only */
+ iupClassRegisterAttribute(ic, "MAX", iValGetMaxAttrib, iValSetMaxAttrib, IUPAF_SAMEASSYSTEM, "1.0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "MIN", iValGetMinAttrib, iValSetMinAttrib, IUPAF_SAMEASSYSTEM, "0.0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "TYPE", iValGetTypeAttrib, iValSetTypeAttrib, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "INVERTED", iValGetInvertedAttrib, iValSetInvertedAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupdrvValInitClass(ic);
+
+ return ic;
+}
+
+Ihandle *IupVal(const char *type)
+{
+ void *params[2];
+ params[0] = (void*)type;
+ params[1] = NULL;
+ return IupCreatev("val", params);
+}
diff --git a/iup/src/iup_val.h b/iup/src/iup_val.h
new file mode 100755
index 0000000..dea8df4
--- /dev/null
+++ b/iup/src/iup_val.h
@@ -0,0 +1,42 @@
+/** \file
+ * \brief Valuator Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_VAL_H
+#define __IUP_VAL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {IVAL_VERTICAL, IVAL_HORIZONTAL};
+
+struct _IcontrolData
+{
+ int type;
+ int show_ticks; /* Windows and Motif only - can be used only after map */
+ int inverted;
+ double val;
+ double step;
+ double pagestep;
+ double vmin;
+ double vmax;
+};
+
+void iupValCropValue(Ihandle* ih);
+char* iupValGetValueAttrib(Ihandle* ih);
+char* iupValGetStepAttrib(Ihandle* ih);
+char* iupValGetPageStepAttrib(Ihandle* ih);
+char* iupValGetShowTicksAttrib(Ihandle* ih);
+
+void iupdrvValInitClass(Iclass* ic);
+void iupdrvValGetMinSize(Ihandle* ih, int *w, int *h);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/iup_vbox.c b/iup/src/iup_vbox.c
new file mode 100755
index 0000000..f71aa51
--- /dev/null
+++ b/iup/src/iup_vbox.c
@@ -0,0 +1,311 @@
+/** \file
+ * \brief Vbox Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+#include "iup_box.h"
+
+
+static int iVboxSetRasterSizeAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ ih->userwidth = 0;
+ ih->userheight = 0;
+ }
+ else
+ {
+ int s = 0;
+ iupStrToInt(value, &s);
+ if (s > 0)
+ {
+ ih->userheight = s;
+ ih->userwidth = 0;
+ }
+ }
+ iupAttribSetStr(ih, "SIZE", NULL); /* clear SIZE in hash table */
+ return 0;
+}
+
+static int iVboxSetSizeAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ ih->userwidth = 0;
+ ih->userheight = 0;
+ }
+ else
+ {
+ int s = 0;
+ iupStrToInt(value, &s);
+ if (s > 0)
+ {
+ int charwidth, charheight;
+ iupdrvFontGetCharSize(ih, &charwidth, &charheight);
+ ih->userheight = iupHEIGHT2RASTER(s, charheight);
+ ih->userwidth = 0;
+ }
+ }
+ return 1;
+}
+
+static int iVboxSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "ARIGHT"))
+ ih->data->alignment = IUP_ALIGN_ARIGHT;
+ else if (iupStrEqualNoCase(value, "ACENTER"))
+ ih->data->alignment = IUP_ALIGN_ACENTER;
+ else if (iupStrEqualNoCase(value, "ALEFT"))
+ ih->data->alignment = IUP_ALIGN_ALEFT;
+ return 0;
+}
+
+static char* iVboxGetAlignmentAttrib(Ihandle* ih)
+{
+ char* align2str[3] = {"ALEFT", "ACENTER", "ARIGHT"};
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%s", align2str[ih->data->alignment]);
+ return str;
+}
+
+static void iVboxComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ Ihandle* child;
+ int children_naturalwidth, children_naturalheight;
+
+ /* calculate total children natural size */
+ int children_expand = 0;
+ int children_count = 0;
+ int children_natural_maxwidth = 0;
+ int children_natural_maxheight = 0;
+ int children_natural_totalheight = 0;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ /* update child natural size first */
+ iupBaseComputeNaturalSize(child);
+
+ if (!child->is_floating)
+ {
+ children_expand |= child->expand;
+ children_natural_maxwidth = iupMAX(children_natural_maxwidth, child->naturalwidth);
+ children_natural_maxheight = iupMAX(children_natural_maxheight, child->naturalheight);
+ children_count++;
+ }
+ }
+
+ /* reset to max natural width and/or height if NORMALIZESIZE is defined */
+ if (ih->data->normalize_size)
+ iupNormalizeSizeBoxChild(ih, ih->data->normalize_size, children_natural_maxwidth, children_natural_maxheight);
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (!child->is_floating)
+ children_natural_totalheight += child->naturalheight;
+ }
+
+ /* leave room at the element for the maximum natural size of the children when is_homogeneous */
+ if (ih->data->is_homogeneous)
+ children_natural_totalheight = children_natural_maxheight*children_count;
+
+ /* compute the Vbox contents natural size */
+ children_naturalwidth = children_natural_maxwidth + 2*ih->data->margin_x;
+ children_naturalheight = children_natural_totalheight + (children_count-1)*ih->data->gap + 2*ih->data->margin_y;
+
+ /* Store to be used in iVboxCalcEmptyHeight */
+ ih->data->children_naturalsize = children_naturalheight;
+
+ *expand = children_expand;
+ *w = children_naturalwidth;
+ *h = children_naturalheight;
+}
+
+static int iHboxCalcHomogeneousHeight(Ihandle *ih)
+{
+ /* This is the space that the child can be expanded. */
+ Ihandle* child;
+ int homogeneous_height;
+
+ int children_count=0;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (!child->is_floating)
+ children_count++;
+ }
+ if (children_count == 0)
+ return 0;
+
+ /* equal spaces for all elements */
+ homogeneous_height = (ih->currentheight - (children_count-1)*ih->data->gap - 2*ih->data->margin_y)/children_count;
+ if (homogeneous_height < 0) homogeneous_height = 0;
+ return homogeneous_height;
+}
+
+static int iVboxCalcEmptyHeight(Ihandle *ih, int expand)
+{
+ /* This is the space that the child can be expanded. */
+ Ihandle* child;
+ int empty_height;
+
+ int expand_count=0;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (!child->is_floating && child->expand & expand)
+ expand_count++;
+ }
+ if (expand_count == 0)
+ return 0;
+
+ /* equal spaces for all expandable elements */
+ empty_height = (ih->currentheight - ih->data->children_naturalsize)/expand_count;
+ if (empty_height < 0) empty_height = 0;
+ return empty_height;
+}
+
+static void iVboxSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink)
+{
+ Ihandle* child;
+ int empty_h0 = 0, empty_h1 = 0, client_width;
+
+ if (ih->data->expand_children)
+ ih->expand |= ih->data->expand_children;
+
+ if (ih->data->is_homogeneous)
+ ih->data->homogeneous_size = iHboxCalcHomogeneousHeight(ih);
+ else
+ {
+ ih->data->homogeneous_size = 0;
+
+ /* must calculate the space left for each control to grow inside the container */
+ /* H1 means there is an EXPAND enabled inside */
+ if (ih->expand & IUP_EXPAND_H1)
+ empty_h1 = iVboxCalcEmptyHeight(ih, IUP_EXPAND_H1);
+ /* Not H1 and H0 means that EXPAND is not enabled, but there are some IupFill inside */
+ else if (ih->expand & IUP_EXPAND_H0)
+ empty_h0 = iVboxCalcEmptyHeight(ih, IUP_EXPAND_H0);
+ }
+
+ client_width = ih->currentwidth - 2*ih->data->margin_x;
+ if (client_width<0) client_width=0;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (!child->is_floating)
+ {
+ int old_expand = child->expand;
+ if (ih->data->expand_children)
+ child->expand |= ih->data->expand_children;
+
+ if (ih->data->homogeneous_size)
+ iupBaseSetCurrentSize(child, client_width, ih->data->homogeneous_size, shrink);
+ else
+ {
+ int empty = (child->expand & IUP_EXPAND_H1)? empty_h1: ((child->expand & IUP_EXPAND_H0)? empty_h0: 0);
+ iupBaseSetCurrentSize(child, client_width, child->naturalheight+empty, shrink);
+ }
+
+ if (ih->data->expand_children)
+ child->expand = old_expand;
+ }
+ else
+ {
+ /* update children to their own natural size */
+ iupBaseSetCurrentSize(child, child->naturalwidth, child->naturalheight, shrink);
+ }
+ }
+}
+
+static void iVboxSetChildrenPositionMethod(Ihandle* ih, int x, int y)
+{
+ int dx, client_width;
+ Ihandle* child;
+
+ x += ih->data->margin_x;
+ y += ih->data->margin_y;
+
+ client_width = ih->currentwidth - 2*ih->data->margin_x;
+ if (client_width<0) client_width=0;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (!child->is_floating)
+ {
+ if (ih->data->alignment == IUP_ALIGN_ACENTER)
+ dx = (client_width - child->currentwidth)/2;
+ else if (ih->data->alignment == IUP_ALIGN_ARIGHT)
+ dx = client_width - child->currentwidth;
+ else /* IUP_ALIGN_ALEFT */
+ dx = 0;
+ if (dx<0) dx = 0;
+
+ /* update child */
+ iupBaseSetPosition(child, x+dx, y);
+
+ /* calculate next */
+ if (ih->data->homogeneous_size)
+ y += ih->data->homogeneous_size + ih->data->gap;
+ else
+ y += child->currentheight + ih->data->gap;
+ }
+ }
+}
+
+
+/******************************************************************************/
+
+
+Ihandle *IupVboxv(Ihandle **children)
+{
+ return IupCreatev("vbox", (void**)children);
+}
+
+Ihandle *IupVbox(Ihandle* child, ...)
+{
+ Ihandle **children;
+ Ihandle *ih;
+
+ va_list arglist;
+ va_start(arglist, child);
+ children = (Ihandle **)iupObjectGetParamList(child, arglist);
+ va_end(arglist);
+
+ ih = IupCreatev("vbox", (void**)children);
+ free(children);
+
+ return ih;
+}
+
+Iclass* iupVboxGetClass(void)
+{
+ Iclass* ic = iupBoxClassBase();
+
+ ic->name = "vbox";
+
+ /* Class functions */
+ ic->ComputeNaturalSize = iVboxComputeNaturalSizeMethod;
+ ic->SetChildrenCurrentSize = iVboxSetChildrenCurrentSizeMethod;
+ ic->SetChildrenPosition = iVboxSetChildrenPositionMethod;
+
+ /* Overwrite Common */
+ iupClassRegisterAttribute(ic, "SIZE", iupBaseGetSizeAttrib, iVboxSetSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "RASTERSIZE", iupBaseGetRasterSizeAttrib, iVboxSetRasterSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* Vbox only */
+ iupClassRegisterAttribute(ic, "ALIGNMENT", iVboxGetAlignmentAttrib, iVboxSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "ALEFT", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
diff --git a/iup/src/iup_zbox.c b/iup/src/iup_zbox.c
new file mode 100755
index 0000000..3f79892
--- /dev/null
+++ b/iup/src/iup_zbox.c
@@ -0,0 +1,375 @@
+/** \file
+ * \brief Zbox Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_layout.h"
+
+
+enum{IZBOX_ALIGN_NORTH, IZBOX_ALIGN_SOUTH, IZBOX_ALIGN_WEST, IZBOX_ALIGN_EAST,
+ IZBOX_ALIGN_NE, IZBOX_ALIGN_SE, IZBOX_ALIGN_NW, IZBOX_ALIGN_SW,
+ IZBOX_ALIGN_ACENTER};
+
+struct _IcontrolData
+{
+ int alignment;
+ Ihandle* value_handle;
+};
+
+static int iZboxCreateMethod(Ihandle* ih, void** params)
+{
+ ih->data = iupALLOCCTRLDATA();
+
+ ih->data->alignment = IZBOX_ALIGN_NW;
+
+ if (params)
+ {
+ Ihandle** iparams = (Ihandle**)params;
+ while (*iparams)
+ {
+ IupAppend(ih, *iparams);
+ iparams++;
+ }
+ }
+
+ return IUP_NOERROR;
+}
+
+static void iZboxChildAddedMethod(Ihandle* ih, Ihandle* child)
+{
+ if (!ih->data->value_handle)
+ {
+ IupSetAttribute(child, "VISIBLE", "YES");
+ ih->data->value_handle = child;
+ }
+ else
+ IupSetAttribute(child, "VISIBLE", "NO");
+}
+
+static void iZboxChildRemovedMethod(Ihandle* ih, Ihandle* child)
+{
+ if (child == ih->data->value_handle)
+ {
+ /* reset to the first child, even if it is NULL */
+ if (ih->firstchild)
+ IupSetAttribute(ih->firstchild, "VISIBLE", "YES");
+ ih->data->value_handle = ih->firstchild;
+ }
+}
+
+static int iZboxSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "NORTH") || iupStrEqualNoCase(value, "ATOP"))
+ ih->data->alignment = IZBOX_ALIGN_NORTH;
+ else if (iupStrEqualNoCase(value, "SOUTH") || iupStrEqualNoCase(value, "ABOTTOM"))
+ ih->data->alignment = IZBOX_ALIGN_SOUTH;
+ else if (iupStrEqualNoCase(value, "WEST") || iupStrEqualNoCase(value, "ALEFT"))
+ ih->data->alignment = IZBOX_ALIGN_WEST;
+ else if (iupStrEqualNoCase(value, "EAST") || iupStrEqualNoCase(value, "ARIGHT"))
+ ih->data->alignment = IZBOX_ALIGN_EAST;
+ else if (iupStrEqualNoCase(value, "NE"))
+ ih->data->alignment = IZBOX_ALIGN_NE;
+ else if (iupStrEqualNoCase(value, "SE"))
+ ih->data->alignment = IZBOX_ALIGN_SE;
+ else if (iupStrEqualNoCase(value, "NW"))
+ ih->data->alignment = IZBOX_ALIGN_NW;
+ else if (iupStrEqualNoCase(value, "SW"))
+ ih->data->alignment = IZBOX_ALIGN_SW;
+ else if (iupStrEqualNoCase(value, "ACENTER"))
+ ih->data->alignment = IZBOX_ALIGN_ACENTER;
+ return 0;
+}
+
+static char* iZboxGetAlignmentAttrib(Ihandle* ih)
+{
+ static char* align2str[9] = {"NORTH", "SOUTH", "WEST", "EAST",
+ "NE", "SE", "NW", "SW",
+ "ACENTER"};
+ return align2str[ih->data->alignment];
+}
+
+static int iZboxSetValueHandleAttrib(Ihandle* ih, const char* value)
+{
+ Ihandle* old_handle, *new_handle, *child;
+
+ new_handle = (Ihandle*)value;
+ if (!iupObjectCheck(new_handle))
+ return 0;
+
+ old_handle = ih->data->value_handle;
+ if (!iupObjectCheck(old_handle))
+ old_handle = NULL;
+
+ if (old_handle == new_handle)
+ return 0;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (child == new_handle) /* found child */
+ {
+ if (old_handle && old_handle != new_handle)
+ IupSetAttribute(old_handle, "VISIBLE", "NO");
+
+ IupSetAttribute(new_handle, "VISIBLE", "YES");
+ ih->data->value_handle = new_handle;
+ return 0;
+ }
+ }
+
+ return 0;
+}
+
+static int iZboxSetValuePosAttrib(Ihandle* ih, const char* value)
+{
+ Ihandle* child;
+ int pos, i;
+
+ if (!iupStrToInt(value, &pos))
+ return 0;
+
+ for (i=0, child=ih->firstchild; child; child = child->brother, i++)
+ {
+ if (i == pos) /* found child */
+ {
+ iZboxSetValueHandleAttrib(ih, (char*)child);
+ return 0;
+ }
+ }
+
+ return 0;
+}
+
+static char* iZboxGetValuePosAttrib(Ihandle* ih)
+{
+ Ihandle* child;
+ int pos;
+
+ if (!iupObjectCheck(ih->data->value_handle))
+ return NULL;
+
+ for (pos=0, child = ih->firstchild; child; child = child->brother, pos++)
+ {
+ if (child == ih->data->value_handle) /* found child */
+ {
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%d", pos);
+ return str;
+ }
+ }
+
+ return NULL;
+}
+
+static int iZboxSetValueAttrib(Ihandle* ih, const char* value)
+{
+ Ihandle *new_handle;
+
+ if (!value)
+ return 0;
+
+ new_handle = IupGetHandle(value);
+ if (!new_handle)
+ return 0;
+
+ iZboxSetValueHandleAttrib(ih, (char*)new_handle);
+
+ return 0;
+}
+
+static char* iZboxGetValueAttrib(Ihandle* ih)
+{
+ Ihandle* child;
+ int pos;
+
+ if (!iupObjectCheck(ih->data->value_handle))
+ return NULL;
+
+ for (pos=0, child = ih->firstchild; child; child = child->brother, pos++)
+ {
+ if (child == ih->data->value_handle) /* found child, just cheking */
+ return IupGetName(ih->data->value_handle);
+ }
+
+ return NULL;
+}
+
+static int iZboxSetVisibleAttrib(Ihandle* ih, const char* value)
+{
+ if (iupObjectCheck(ih->data->value_handle))
+ IupSetAttribute(ih->data->value_handle, "VISIBLE", (char*)value);
+ return 0;
+}
+
+static void iZboxComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ Ihandle* child;
+ int children_expand,
+ children_naturalwidth, children_naturalheight;
+
+ /* calculate total children natural size (even for hidden children) */
+ children_expand = 0;
+ children_naturalwidth = 0;
+ children_naturalheight = 0;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ /* update child natural size first */
+ iupBaseComputeNaturalSize(child);
+
+ if (!child->is_floating)
+ {
+ children_expand |= child->expand;
+ children_naturalwidth = iupMAX(children_naturalwidth, child->naturalwidth);
+ children_naturalheight = iupMAX(children_naturalheight, child->naturalheight);
+ }
+ }
+
+ *expand = children_expand;
+ *w = children_naturalwidth;
+ *h = children_naturalheight;
+}
+
+static void iZboxSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink)
+{
+ Ihandle* child;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (!child->is_floating)
+ iupBaseSetCurrentSize(child, ih->currentwidth, ih->currentheight, shrink);
+ }
+}
+
+static void iZboxSetChildrenPositionMethod(Ihandle* ih, int x, int y)
+{
+ int dx = 0, dy = 0;
+ Ihandle* child;
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ if (!child->is_floating)
+ {
+ switch (ih->data->alignment)
+ {
+ case IZBOX_ALIGN_ACENTER:
+ dx=(ih->currentwidth-child->currentwidth)/2;
+ dy=(ih->currentheight-child->currentheight)/2;
+ break;
+ case IZBOX_ALIGN_NORTH:
+ dx=(ih->currentwidth-child->currentwidth)/2;
+ dy=0;
+ break;
+ case IZBOX_ALIGN_SOUTH:
+ dx=(ih->currentwidth-child->currentwidth)/2;
+ dy=ih->currentheight-child->currentheight;
+ break;
+ case IZBOX_ALIGN_WEST:
+ dx=0;
+ dy=(ih->currentheight-child->currentheight)/2;
+ break;
+ case IZBOX_ALIGN_EAST:
+ dx=ih->currentwidth-child->currentwidth;
+ dy=(ih->currentheight-child->currentheight)/2;
+ break;
+ case IZBOX_ALIGN_NE:
+ dx=ih->currentwidth-child->currentwidth;
+ dy=0;
+ break;
+ case IZBOX_ALIGN_SE:
+ dx=ih->currentwidth-child->currentwidth;
+ dy=ih->currentheight-child->currentheight;
+ break;
+ case IZBOX_ALIGN_SW:
+ dx=0;
+ dy=ih->currentheight-child->currentheight;
+ break;
+ case IZBOX_ALIGN_NW:
+ default:
+ dx=0;
+ dy=0;
+ break;
+ }
+ if (dx<0) dx = 0;
+ if (dy<0) dy = 0;
+
+ /* update child */
+ iupBaseSetPosition(child, x+dx, y+dy);
+ }
+ }
+}
+
+
+/******************************************************************************/
+
+
+Ihandle *IupZboxv(Ihandle **children)
+{
+ return IupCreatev("zbox", (void**)children);
+}
+
+Ihandle *IupZbox(Ihandle* child, ...)
+{
+ Ihandle **children;
+ Ihandle *ih;
+
+ va_list arglist;
+ va_start(arglist, child);
+ children = (Ihandle **)iupObjectGetParamList(child, arglist);
+ va_end(arglist);
+
+ ih = IupCreatev("zbox", (void**)children);
+ free(children);
+
+ return ih;
+}
+
+Iclass* iupZboxGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "zbox";
+ ic->format = "g"; /* array of Ihandle */
+ ic->nativetype = IUP_TYPEVOID;
+ ic->childtype = IUP_CHILDMANY;
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Create = iZboxCreateMethod;
+ ic->Map = iupBaseTypeVoidMapMethod;
+ ic->ChildAdded = iZboxChildAddedMethod;
+ ic->ChildRemoved = iZboxChildRemovedMethod;
+
+ ic->ComputeNaturalSize = iZboxComputeNaturalSizeMethod;
+ ic->SetChildrenCurrentSize = iZboxSetChildrenCurrentSizeMethod;
+ ic->SetChildrenPosition = iZboxSetChildrenPositionMethod;
+
+ /* Common */
+ iupBaseRegisterCommonAttrib(ic);
+
+ /* Base Container */
+ iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CLIENTSIZE", iupBaseGetRasterSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* Zbox only */
+ iupClassRegisterAttribute(ic, "ALIGNMENT", iZboxGetAlignmentAttrib, iZboxSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "NW", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUE", iZboxGetValueAttrib, iZboxSetValueAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUEPOS", iZboxGetValuePosAttrib, iZboxSetValuePosAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUE_HANDLE", NULL, iZboxSetValueHandleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+
+ /* Intercept VISIBLE since ZBOX works showing and hidding its children */
+ iupClassRegisterAttribute(ic, "VISIBLE", NULL, iZboxSetVisibleAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
diff --git a/iup/src/iupgtk.dep b/iup/src/iupgtk.dep
new file mode 100644
index 0000000..4e2bb45
--- /dev/null
+++ b/iup/src/iupgtk.dep
@@ -0,0 +1,259 @@
+$(OBJDIR)/iup_array.o: iup_array.c iup_array.h iup_assert.h
+$(OBJDIR)/iup_callback.o: iup_callback.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_assert.h
+$(OBJDIR)/iup_dlglist.o: iup_dlglist.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_dlglist.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_assert.h
+$(OBJDIR)/iup_attrib.o: iup_attrib.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_childtree.h iup_str.h iup_ledlex.h iup_attrib.h \
+ iup_assert.h
+$(OBJDIR)/iup_focus.o: iup_focus.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_focus.h iup_assert.h iup_attrib.h \
+ iup_str.h iup_drv.h
+$(OBJDIR)/iup_font.o: iup_font.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_str.h iup_drvfont.h iup_assert.h iup_attrib.h \
+ iup_class.h iup_table.h iup_classbase.h
+$(OBJDIR)/iup_globalattrib.o: iup_globalattrib.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h iup_table.h iup_globalattrib.h \
+ iup_drv.h iup_drvfont.h iup_assert.h iup_str.h
+$(OBJDIR)/iup_object.o: iup_object.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_assert.h iup_register.h iup_names.h
+$(OBJDIR)/iup_key.o: iup_key.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_key.h iup_str.h \
+ iup_object.h iup_class.h iup_table.h iup_classbase.h iup_drv.h \
+ iup_focus.h
+$(OBJDIR)/iup_layout.o: iup_layout.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_drv.h iup_attrib.h iup_str.h iup_layout.h \
+ iup_assert.h
+$(OBJDIR)/iup_ledlex.o: iup_ledlex.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_class.h iup_table.h iup_classbase.h \
+ iup_ledlex.h iup_str.h iup_register.h
+$(OBJDIR)/iup_names.o: iup_names.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_str.h iup_table.h iup_names.h iup_object.h \
+ iup_class.h iup_classbase.h iup_assert.h
+$(OBJDIR)/iup_open.o: iup_open.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_str.h iup_globalattrib.h iup_names.h iup_func.h \
+ iup_drv.h iup_drvinfo.h iup_drvfont.h iup_predial.h iup_class.h \
+ iup_table.h iup_classbase.h iup_register.h iup_key.h iup_image.h \
+ iup_dlglist.h iup_assert.h iup_strmessage.h
+$(OBJDIR)/iup_ledparse.o: iup_ledparse.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_ledlex.h iup_str.h iup_assert.h
+$(OBJDIR)/iup_predial.o: iup_predial.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_predial.h iup_attrib.h iup_str.h \
+ iup_strmessage.h
+$(OBJDIR)/iup_register.o: iup_register.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_register.h iup_stdcontrols.h
+$(OBJDIR)/iup_scanf.o: iup_scanf.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_predial.h iup_str.h iup_assert.h
+$(OBJDIR)/iup_show.o: iup_show.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_layout.h iup_attrib.h iup_dialog.h iup_menu.h \
+ iup_assert.h iup_str.h iup_drv.h iup_drvfont.h
+$(OBJDIR)/iup_str.o: iup_str.c iup_str.h
+$(OBJDIR)/iup_table.o: iup_table.c iup_table.h iup_str.h iup_assert.h
+$(OBJDIR)/iup_func.o: iup_func.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_str.h iup_table.h iup_func.h iup_drv.h \
+ iup_assert.h
+$(OBJDIR)/iup_childtree.o: iup_childtree.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_dlglist.h iup_childtree.h iup_attrib.h iup_assert.h \
+ iup_str.h iup_drv.h
+$(OBJDIR)/iup.o: iup.c ../include/iup.h ../include/iupkey.h ../include/iupdef.h
+$(OBJDIR)/iup_classattrib.o: iup_classattrib.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_drv.h iup_drvfont.h iup_str.h iup_attrib.h \
+ iup_assert.h iup_register.h iup_globalattrib.h
+$(OBJDIR)/iup_dialog.o: iup_dialog.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_class.h iup_table.h \
+ iup_classbase.h iup_object.h iup_dlglist.h iup_layout.h iup_attrib.h \
+ iup_drv.h iup_drvinfo.h iup_drvfont.h iup_focus.h iup_str.h \
+ iup_dialog.h
+$(OBJDIR)/iup_assert.o: iup_assert.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_assert.h iup_attrib.h iup_str.h \
+ iup_strmessage.h
+$(OBJDIR)/iup_canvas.o: iup_canvas.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_canvas.h
+$(OBJDIR)/iup_messagedlg.o: iup_messagedlg.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_stdcontrols.h
+$(OBJDIR)/iup_timer.o: iup_timer.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_str.h iup_stdcontrols.h iup_timer.h
+$(OBJDIR)/iup_image.o: iup_image.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_str.h iup_image.h iup_assert.h \
+ iup_stdcontrols.h
+$(OBJDIR)/iup_label.o: iup_label.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_label.h iup_image.h
+$(OBJDIR)/iup_fill.o: iup_fill.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h
+$(OBJDIR)/iup_zbox.o: iup_zbox.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h
+$(OBJDIR)/iup_colordlg.o: iup_colordlg.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h
+$(OBJDIR)/iup_fontdlg.o: iup_fontdlg.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h
+$(OBJDIR)/iup_filedlg.o: iup_filedlg.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h
+$(OBJDIR)/iup_strmessage.o: iup_strmessage.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_attrib.h iup_str.h iup_strmessage.h iup_table.h
+$(OBJDIR)/iup_menu.o: iup_menu.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_dialog.h iup_str.h iup_assert.h \
+ iup_key.h iup_stdcontrols.h iup_drvinfo.h iup_menu.h
+$(OBJDIR)/iup_frame.o: iup_frame.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_frame.h
+$(OBJDIR)/iup_user.o: iup_user.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_stdcontrols.h
+$(OBJDIR)/iup_button.o: iup_button.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_button.h iup_image.h
+$(OBJDIR)/iup_radio.o: iup_radio.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h
+$(OBJDIR)/iup_toggle.o: iup_toggle.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_toggle.h iup_image.h
+$(OBJDIR)/iup_progressbar.o: iup_progressbar.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_progressbar.h
+$(OBJDIR)/iup_text.o: iup_text.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_mask.h iup_array.h \
+ iup_text.h iup_assert.h
+$(OBJDIR)/iup_val.o: iup_val.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../include/iupcontrols.h \
+ iup_object.h iup_class.h iup_table.h iup_classbase.h iup_attrib.h \
+ iup_str.h iup_drv.h iup_stdcontrols.h iup_layout.h iup_val.h
+$(OBJDIR)/iup_box.o: iup_box.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_box.h
+$(OBJDIR)/iup_hbox.o: iup_hbox.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_box.h
+$(OBJDIR)/iup_vbox.o: iup_vbox.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_box.h
+$(OBJDIR)/iup_cbox.o: iup_cbox.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h
+$(OBJDIR)/iup_class.o: iup_class.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_drv.h iup_drvfont.h iup_str.h iup_attrib.h \
+ iup_assert.h
+$(OBJDIR)/iup_classbase.o: iup_classbase.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_drv.h iup_drvfont.h iup_str.h \
+ iup_attrib.h iup_assert.h
+$(OBJDIR)/iup_maskmatch.o: iup_maskmatch.c iup_maskparse.h iup_maskmatch.h
+$(OBJDIR)/iup_mask.o: iup_mask.c iup_maskparse.h iup_mask.h iup_str.h
+$(OBJDIR)/iup_maskparse.o: iup_maskparse.c iup_maskparse.h iup_maskmatch.h
+$(OBJDIR)/iup_tabs.o: iup_tabs.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_image.h iup_tabs.h
+$(OBJDIR)/iup_spin.o: iup_spin.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h \
+ iup_childtree.h
+$(OBJDIR)/iup_list.o: iup_list.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_assert.h iup_object.h \
+ iup_class.h iup_table.h iup_classbase.h iup_attrib.h iup_str.h \
+ iup_drv.h iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_mask.h \
+ iup_list.h
+$(OBJDIR)/iup_getparam.o: iup_getparam.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_attrib.h iup_str.h iup_strmessage.h \
+ iup_drvfont.h
+$(OBJDIR)/iup_sbox.o: iup_sbox.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_stdcontrols.h iup_layout.h iup_childtree.h
+$(OBJDIR)/iup_normalizer.o: iup_normalizer.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_str.h iup_array.h iup_stdcontrols.h
+$(OBJDIR)/iup_tree.o: iup_tree.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \
+ iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_tree.h iup_assert.h
+$(OBJDIR)/iupgtk_focus.o: gtk/iupgtk_focus.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_focus.h iup_attrib.h iup_drv.h iup_assert.h \
+ gtk/iupgtk_drv.h
+$(OBJDIR)/iupgtk_font.o: gtk/iupgtk_font.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_str.h iup_attrib.h iup_array.h iup_object.h \
+ iup_class.h iup_table.h iup_classbase.h iup_drv.h iup_drvfont.h \
+ iup_assert.h gtk/iupgtk_drv.h
+$(OBJDIR)/iupgtk_key.o: gtk/iupgtk_key.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_key.h gtk/iupgtk_drv.h
+$(OBJDIR)/iupgtk_loop.o: gtk/iupgtk_loop.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h
+$(OBJDIR)/iupgtk_open.o: gtk/iupgtk_open.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_str.h iup_drv.h iup_drvinfo.h iup_object.h \
+ iup_class.h iup_table.h iup_classbase.h iup_globalattrib.h \
+ gtk/iupgtk_drv.h
+$(OBJDIR)/iupgtk_messagedlg.o: gtk/iupgtk_messagedlg.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_dialog.h \
+ gtk/iupgtk_drv.h
+$(OBJDIR)/iupgtk_timer.o: gtk/iupgtk_timer.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_attrib.h iup_str.h iup_assert.h iup_timer.h
+$(OBJDIR)/iupgtk_colordlg.o: gtk/iupgtk_colordlg.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_dialog.h \
+ gtk/iupgtk_drv.h
+$(OBJDIR)/iupgtk_fontdlg.o: gtk/iupgtk_fontdlg.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_dialog.h \
+ gtk/iupgtk_drv.h
+$(OBJDIR)/iupgtk_progressbar.o: gtk/iupgtk_progressbar.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \
+ iup_object.h iup_class.h iup_table.h iup_classbase.h iup_layout.h \
+ iup_attrib.h iup_str.h iup_progressbar.h iup_drv.h gtk/iupgtk_drv.h
+$(OBJDIR)/iupgtk_val.o: gtk/iupgtk_val.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_layout.h iup_attrib.h iup_str.h \
+ iup_val.h iup_drv.h iup_drvfont.h iup_key.h gtk/iupgtk_drv.h
+$(OBJDIR)/iupgtk_frame.o: gtk/iupgtk_frame.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_object.h iup_class.h iup_table.h \
+ iup_classbase.h iup_layout.h iup_attrib.h iup_str.h iup_dialog.h \
+ iup_drv.h iup_drvfont.h iup_stdcontrols.h gtk/iupgtk_drv.h
+$(OBJDIR)/iupgtk_menu.o: gtk/iupgtk_menu.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \
+ iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \
+ iup_str.h iup_label.h iup_drv.h iup_drvfont.h iup_image.h iup_menu.h \
+ gtk/iupgtk_drv.h
+$(OBJDIR)/iupgtk_help.o: gtk/iupgtk_help.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h iup_str.h
+$(OBJDIR)/iupunix_info.o: mot/iupunix_info.c iup_str.h iup_drvinfo.h
diff --git a/iup/src/iupstub.mak b/iup/src/iupstub.mak
new file mode 100755
index 0000000..9ca920f
--- /dev/null
+++ b/iup/src/iupstub.mak
@@ -0,0 +1,12 @@
+PROJNAME = iup
+LIBNAME = iupstub
+OPT = YES
+
+USE_DLL = Yes
+
+INCLUDES = ../include
+
+SRC = win/iupwindows_main.c
+
+iupstup-dll:
+ @move /y ..\lib\vc6\iupstub.lib ..\lib\dll
diff --git a/iup/src/make_uname b/iup/src/make_uname
new file mode 100755
index 0000000..7fec9f8
--- /dev/null
+++ b/iup/src/make_uname
@@ -0,0 +1,4 @@
+#This builds all the libraries of the folder for 1 uname
+
+tecmake $1 $2 $3 $4 $5 $6 $7
+tecmake USE_GTK=Yes $1 $2 $3 $4 $5 $6 $7
diff --git a/iup/src/make_uname.bat b/iup/src/make_uname.bat
new file mode 100755
index 0000000..1a79780
--- /dev/null
+++ b/iup/src/make_uname.bat
@@ -0,0 +1,55 @@
+@echo off
+REM This builds all the libraries of the folder for 1 uname
+
+call tecmake %1 %2 %3 %4 %5 %6
+call tecmake %1 "USE_GTK=Yes" %2 %3 %4 %5 %6
+
+if "%1"=="dll" goto stub_dll
+if "%1"=="dll7" goto stub_dll7
+if "%1"=="dll8" goto stub_dll8
+if "%1"=="dll8_64" goto stub_dll8_64
+if "%1"=="dll9" goto stub_dll9
+if "%1"=="dll9_64" goto stub_dll9_64
+if "%1"=="all" goto all_dll
+goto fim
+
+:stub_dll
+call tecmake vc6 "MF=iupstub" %2 %3 %4 %5 %6 %7
+move /y ..\lib\vc6\iupstub.lib ..\lib\dll
+goto fim
+
+:stub_dll7
+call tecmake vc7 "MF=iupstub" %2 %3 %4 %5 %6 %7
+move /y ..\lib\vc7\iupstub.lib ..\lib\dll7
+goto fim
+
+:stub_dll8
+call tecmake vc8 "MF=iupstub" %2 %3 %4 %5 %6 %7
+move /y ..\lib\vc8\iupstub.lib ..\lib\dll8
+goto fim
+
+:stub_dll8_64
+call tecmake vc8_64 "MF=iupstub" %2 %3 %4 %5 %6 %7
+move /y ..\lib\vc8_64\iupstub.lib ..\lib\dll8_64
+goto fim
+
+:stub_dll9
+call tecmake vc9 "MF=iupstub" %2 %3 %4 %5 %6 %7
+move /y ..\lib\vc9\iupstub.lib ..\lib\dll9
+goto fim
+
+:stub_dll9_64
+call tecmake vc9_64 "MF=iupstub" %2 %3 %4 %5 %6 %7
+move /y ..\lib\vc9_64\iupstub.lib ..\lib\dll9_64
+goto fim
+
+:all_dll
+call make_uname dll %2 %3 %4 %5 %6
+call make_uname dll7 %2 %3 %4 %5 %6
+call make_uname dll8 %2 %3 %4 %5 %6
+call make_uname dll8_64 %2 %3 %4 %5 %6
+call make_uname dll9 %2 %3 %4 %5 %6
+call make_uname dll9_64 %2 %3 %4 %5 %6
+goto fim
+
+:fim
diff --git a/iup/src/mot/iupmot_button.c b/iup/src/mot/iupmot_button.c
new file mode 100755
index 0000000..2d93588
--- /dev/null
+++ b/iup/src/mot/iupmot_button.c
@@ -0,0 +1,301 @@
+/** \file
+ * \brief Button Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+#include <Xm/PushB.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_button.h"
+#include "iup_drv.h"
+#include "iup_image.h"
+#include "iup_key.h"
+
+#include "iupmot_drv.h"
+
+
+void iupdrvButtonAddBorders(int *x, int *y)
+{
+ int border_size = 2*5;
+ (*x) += border_size;
+ (*y) += border_size;
+}
+
+static int motButtonSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_BUTTON_TEXT)
+ {
+ iupmotSetMnemonicTitle(ih, value);
+ return 1;
+ }
+
+ return 0;
+}
+
+static int motButtonSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char align;
+ char value1[30]="", value2[30]="";
+
+ iupStrToStrStr(value, value1, value2, ':'); /* value2 is ignored, NOT supported in Motif */
+
+ if (iupStrEqualNoCase(value1, "ARIGHT"))
+ align = XmALIGNMENT_END;
+ else if (iupStrEqualNoCase(value1, "ACENTER"))
+ align = XmALIGNMENT_CENTER;
+ else /* "ALEFT" */
+ align = XmALIGNMENT_BEGINNING;
+
+ XtVaSetValues (ih->handle, XmNalignment, align, NULL);
+ return 1;
+}
+
+static int motButtonSetImageAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_BUTTON_IMAGE)
+ {
+ iupmotSetPixmap(ih, value, XmNlabelPixmap, 0);
+
+ if (!iupAttribGet(ih, "IMINACTIVE"))
+ {
+ /* if not active and IMINACTIVE is not defined
+ then automaticaly create one based on IMAGE */
+ iupmotSetPixmap(ih, value, XmNlabelInsensitivePixmap, 1); /* make_inactive */
+ }
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int motButtonSetImInactiveAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_BUTTON_IMAGE)
+ {
+ iupmotSetPixmap(ih, value, XmNlabelInsensitivePixmap, 0);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int motButtonSetImPressAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_BUTTON_IMAGE)
+ {
+ iupmotSetPixmap(ih, value, XmNarmPixmap, 0);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int motButtonSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+ if (ih->handle)
+ {
+ XtVaSetValues(ih->handle, XmNmarginHeight, ih->data->vert_padding,
+ XmNmarginWidth, ih->data->horiz_padding, NULL);
+ }
+ return 0;
+}
+
+static int motButtonSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ if (iupAttribGet(ih, "IMPRESS") || iupAttribGetBoolean(ih, "FLAT"))
+ {
+ /* ignore given value, must use only from parent */
+ value = iupBaseNativeParentGetBgColor(ih);
+
+ if (iupdrvBaseSetBgColorAttrib(ih, value))
+ return 1;
+ }
+
+ return iupdrvBaseSetBgColorAttrib(ih, value);
+}
+
+static int motButtonSetBackgroundAttrib(Ihandle* ih, const char* value)
+{
+ if (iupAttribGet(ih, "IMPRESS") || iupAttribGetBoolean(ih, "FLAT"))
+ {
+ /* ignore given value, must use only from parent */
+ value = iupAttribGetInheritNativeParent(ih, "BACKGROUND");
+
+ if (iupdrvBaseSetBgColorAttrib(ih, value))
+ return 1;
+ else
+ {
+ Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0);
+ if (pixmap)
+ {
+ XtVaSetValues(ih->handle, XmNbackgroundPixmap, pixmap, NULL);
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+static void motButtonActivateCallback(Widget w, Ihandle* ih, XtPointer call_data)
+{
+ Icallback cb;
+
+ /* Must manually hide the tip if the button is pressed. */
+ iupmotTipLeaveNotify();
+
+ cb = IupGetCallback(ih, "ACTION");
+ if (cb)
+ {
+ if (cb(ih) == IUP_CLOSE)
+ IupExitLoop();
+ }
+ (void)w;
+ (void)call_data;
+}
+
+static void motButtonEnterLeaveWindowEvent(Widget w, Ihandle* ih, XEvent *evt, Boolean *cont)
+{
+ iupmotEnterLeaveWindowEvent(w, ih, evt, cont);
+
+ if (evt->type == EnterNotify)
+ XtVaSetValues(ih->handle, XmNshadowThickness, 2, NULL);
+ else if (evt->type == LeaveNotify)
+ XtVaSetValues(ih->handle, XmNshadowThickness, 0, NULL);
+}
+
+static int motButtonMapMethod(Ihandle* ih)
+{
+ char* value;
+ int num_args = 0;
+ Arg args[30];
+
+ value = iupAttribGet(ih, "IMAGE");
+ if (value)
+ {
+ ih->data->type = IUP_BUTTON_IMAGE;
+ iupmotSetArg(args, num_args, XmNlabelType, XmPIXMAP);
+ }
+ else
+ {
+ ih->data->type = IUP_BUTTON_TEXT;
+ iupmotSetArg(args, num_args, XmNlabelType, XmSTRING);
+ }
+
+ /* Core */
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */
+ iupmotSetArg(args, num_args, XmNx, 0); /* x-position */
+ iupmotSetArg(args, num_args, XmNy, 0); /* y-position */
+ iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */
+ iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */
+ /* Label */
+ iupmotSetArg(args, num_args, XmNrecomputeSize, False); /* no automatic resize from text */
+ iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* default padding */
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0);
+ iupmotSetArg(args, num_args, XmNmarginTop, 0); /* no extra margins */
+ iupmotSetArg(args, num_args, XmNmarginLeft, 0);
+ iupmotSetArg(args, num_args, XmNmarginBottom, 0);
+ iupmotSetArg(args, num_args, XmNmarginRight, 0);
+ /* PushButton */
+ iupmotSetArg(args, num_args, XmNfillOnArm, False);
+
+ /* Primitive */
+ if (iupAttribGetBoolean(ih, "FOCUSONCLICK"))
+ {
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ iupmotSetArg(args, num_args, XmNtraversalOn, True);
+ else
+ iupmotSetArg(args, num_args, XmNtraversalOn, False);
+ }
+ else
+ iupmotSetArg(args, num_args, XmNtraversalOn, False);
+ iupmotSetArg(args, num_args, XmNhighlightThickness, 2);
+ iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP);
+
+ ih->handle = XtCreateManagedWidget(
+ iupDialogGetChildIdStr(ih), /* child identifier */
+ xmPushButtonWidgetClass, /* widget class */
+ iupChildTreeGetNativeParentHandle(ih), /* widget parent */
+ args, num_args);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupDialogGetChildId(ih); /* must be after using the string */
+
+ XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih);
+
+ value = iupAttribGet(ih, "IMPRESS");
+ if (iupAttribGetBoolean(ih, "FLAT") && !value)
+ {
+ XtVaSetValues(ih->handle, XmNshadowThickness, 0, NULL);
+ XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)motButtonEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)motButtonEnterLeaveWindowEvent, (XtPointer)ih);
+ }
+ else
+ {
+ if (value && !iupAttribGetStr(ih, "IMPRESSBORDER"))
+ XtVaSetValues(ih->handle, XmNshadowThickness, 0, NULL);
+ else
+ XtVaSetValues(ih->handle, XmNshadowThickness, 2, NULL);
+ XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ }
+
+ XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih);
+
+ XtAddCallback(ih->handle, XmNactivateCallback, (XtCallbackProc)motButtonActivateCallback, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, ButtonPressMask|ButtonReleaseMask, False, (XtEventHandler)iupmotButtonPressReleaseEvent, (XtPointer)ih);
+
+ /* Disable Drag Source */
+ iupmotDisableDragSource(ih->handle);
+
+ /* initialize the widget */
+ XtRealizeWidget(ih->handle);
+
+ if (ih->data->type == IUP_BUTTON_TEXT)
+ iupmotSetString(ih->handle, XmNlabelString, "");
+
+ return IUP_NOERROR;
+}
+
+void iupdrvButtonInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motButtonMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", iupmotGetBgColorAttrib, motButtonSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motButtonSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iupdrvBaseSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "TITLE", NULL, motButtonSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupButton only */
+ iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, motButtonSetAlignmentAttrib, "ACENTER:ACENTER", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, motButtonSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, motButtonSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMPRESS", NULL, motButtonSetImPressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FOCUSONCLICK", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "PADDING", iupButtonGetPaddingAttrib, motButtonSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+}
diff --git a/iup/src/mot/iupmot_canvas.c b/iup/src/mot/iupmot_canvas.c
new file mode 100755
index 0000000..7777cf3
--- /dev/null
+++ b/iup/src/mot/iupmot_canvas.c
@@ -0,0 +1,639 @@
+/** \file
+ * \brief Canvas Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+#include <Xm/ScrolledW.h>
+#include <Xm/DrawingA.h>
+#include <Xm/ScrollBar.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+#include <limits.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_canvas.h"
+#include "iup_key.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+
+static void motDialogScrollbarCallback(Widget w, XtPointer client_data, XtPointer call_data)
+{
+ int op = (int)client_data, ipage, ipos;
+ Ihandle *ih;
+ IFniff cb;
+ double posx, posy;
+ (void)call_data;
+
+ XtVaGetValues(w, XmNuserData, &ih, NULL);
+ if (!ih) return;
+
+ XtVaGetValues(w,
+ XmNvalue, &ipos,
+ XmNpageIncrement, &ipage,
+ NULL);
+
+ if (op > IUP_SBDRAGV)
+ {
+ iupCanvasCalcScrollRealPos(iupAttribGetFloat(ih,"XMIN"), iupAttribGetFloat(ih,"XMAX"), &posx,
+ IUP_SB_MIN, IUP_SB_MAX, ipage, &ipos);
+ ih->data->posx = (float)posx;
+ posy = ih->data->posy;
+ }
+ else
+ {
+ iupCanvasCalcScrollRealPos(iupAttribGetFloat(ih,"YMIN"), iupAttribGetFloat(ih,"YMAX"), &posy,
+ IUP_SB_MIN, IUP_SB_MAX, ipage, &ipos);
+ ih->data->posy = (float)posy;
+ posx = ih->data->posx;
+ }
+
+ cb = (IFniff)IupGetCallback(ih,"SCROLL_CB");
+ if (cb)
+ cb(ih, op, (float)posx, (float)posy);
+ else
+ {
+ IFnff cb = (IFnff)IupGetCallback(ih,"ACTION");
+ if (cb)
+ cb (ih, (float)posx, (float)posy);
+ }
+}
+
+static void motCanvasResizeCallback(Widget w, Ihandle *ih, XtPointer call_data)
+{
+ Dimension width, height;
+ IFnii cb;
+ (void)call_data;
+
+ if (!XtWindow(w) || !ih) return;
+
+ /* client size */
+ XtVaGetValues(w, XmNwidth, &width,
+ XmNheight, &height,
+ NULL);
+
+ cb = (IFnii)IupGetCallback(ih,"RESIZE_CB");
+ if (cb)
+ cb(ih,width,height);
+}
+
+static int motCanvasSetBgColorAttrib(Ihandle* ih, const char* value);
+
+static void motCanvasExposeCallback(Widget w, Ihandle *ih, XtPointer call_data)
+{
+ IFnff cb;
+ (void)call_data;
+
+ if (!XtWindow(w) || !ih) return;
+
+ cb = (IFnff)IupGetCallback(ih,"ACTION");
+ if (cb)
+ {
+ if (!iupAttribGet(ih, "_IUPMOT_NO_BGCOLOR"))
+ motCanvasSetBgColorAttrib(ih, iupAttribGetStr(ih, "BGCOLOR")); /* reset to update window attributes */
+
+ cb (ih, ih->data->posx, ih->data->posy);
+ }
+}
+
+static void motCanvasInputCallback(Widget w, Ihandle *ih, XtPointer call_data)
+{
+ XEvent *evt = ((XmDrawingAreaCallbackStruct*)call_data)->event;
+
+ if (!XtWindow(w) || !ih) return;
+
+ switch (evt->type)
+ {
+ case ButtonPress:
+ /* Force focus on canvas click */
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ XmProcessTraversal(w, XmTRAVERSE_CURRENT);
+ /* break missing on purpose... */
+ case ButtonRelease:
+ {
+ XButtonEvent *but_evt = (XButtonEvent*)evt;
+ Boolean cont = True;
+ iupmotButtonPressReleaseEvent(w, ih, evt, &cont);
+ if (cont == False)
+ return;
+
+ if ((evt->type==ButtonPress) && (but_evt->button==Button4 || but_evt->button==Button5))
+ {
+ IFnfiis wcb = (IFnfiis)IupGetCallback(ih, "WHEEL_CB");
+ if (wcb)
+ {
+ char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT;
+ int delta = but_evt->button==Button4? 1: -1;
+ iupmotButtonKeySetStatus(but_evt->state, but_evt->button, status, 0);
+
+ wcb(ih, (float)delta, but_evt->x, but_evt->y, status);
+ }
+ else
+ {
+ IFniff scb = (IFniff)IupGetCallback(ih,"SCROLL_CB");
+ float posy = ih->data->posy;
+ int delta = but_evt->button==Button4? 1: -1;
+ int op = but_evt->button==Button4? IUP_SBUP: IUP_SBDN;
+ posy -= delta*iupAttribGetFloat(ih, "DY")/10.0f;
+ IupSetfAttribute(ih, "POSY", "%g", posy);
+ if (scb)
+ scb(ih,op,ih->data->posx,ih->data->posy);
+ }
+ }
+ }
+ break;
+ }
+}
+
+static void motCanvasSetScrollInfo(Widget sb, int imin, int imax, int ipos, int ipage, int iline)
+{
+ XtVaSetValues(sb,
+ XmNminimum, imin,
+ XmNmaximum, imax,
+ XmNvalue, ipos,
+ XmNincrement, iline,
+ XmNpageIncrement, ipage,
+ XmNsliderSize, ipage, /* to make the thumb proportional */
+ NULL);
+}
+
+static int motCanvasSetDXAttrib(Ihandle* ih, const char *value)
+{
+ if (ih->data->sb & IUP_SB_HORIZ)
+ {
+ double posx, xmin, xmax, linex;
+ float dx;
+ int iposx, ipagex, ilinex;
+ Widget sb_horiz, sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb_horiz, NULL);
+ if (!sb_horiz) return 1;
+
+ if (!iupStrToFloat(value, &dx))
+ return 1;
+
+ xmin = iupAttribGetFloat(ih, "XMIN");
+ xmax = iupAttribGetFloat(ih, "XMAX");
+ posx = ih->data->posx;
+
+ iupCanvasCalcScrollIntPos(xmin, xmax, dx, posx,
+ IUP_SB_MIN, IUP_SB_MAX, &ipagex, &iposx);
+
+ if (!iupAttribGet(ih,"LINEX"))
+ {
+ ilinex = ipagex/10;
+ if (!ilinex)
+ ilinex = 1;
+ }
+ else
+ {
+ /* line and page convertions are the same */
+ linex = iupAttribGetFloat(ih,"LINEX");
+ iupCanvasCalcScrollIntPos(xmin, xmax, linex, 0,
+ IUP_SB_MIN, IUP_SB_MAX, &ilinex, NULL);
+ }
+
+ if (dx >= (xmax-xmin))
+ {
+ if (iupAttribGetBoolean(ih, "XAUTOHIDE"))
+ XtUnmanageChild(sb_horiz);
+ else
+ XtSetSensitive(sb_horiz, 0);
+ return 1;
+ }
+ else
+ {
+ if (!XtIsManaged(sb_horiz))
+ XtManageChild(sb_horiz);
+ XtSetSensitive(sb_horiz, 1);
+ }
+
+ motCanvasSetScrollInfo(sb_horiz, IUP_SB_MIN, IUP_SB_MAX, iposx, ipagex, ilinex);
+
+ /* update position because it could be corrected */
+ iupCanvasCalcScrollRealPos(xmin, xmax, &posx,
+ IUP_SB_MIN, IUP_SB_MAX, ipagex, &iposx);
+
+ ih->data->posx = (float)posx;
+ }
+ return 1;
+}
+
+static int motCanvasSetPosXAttrib(Ihandle* ih, const char *value)
+{
+ if (ih->data->sb & IUP_SB_HORIZ)
+ {
+ double xmin, xmax, dx;
+ float posx;
+ int iposx, ipagex;
+ Widget sb_horiz, sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb_horiz, NULL);
+ if (!sb_horiz) return 1;
+
+ if (!iupStrToFloat(value, &posx))
+ return 1;
+
+ xmin = iupAttribGetFloat(ih, "XMIN");
+ xmax = iupAttribGetFloat(ih, "XMAX");
+ dx = iupAttribGetFloat(ih, "DX");
+
+ if (posx < xmin) posx = (float)xmin;
+ if (posx > (xmax - dx)) posx = (float)(xmax - dx);
+ ih->data->posx = posx;
+
+ iupCanvasCalcScrollIntPos(xmin, xmax, dx, posx,
+ IUP_SB_MIN, IUP_SB_MAX, &ipagex, &iposx);
+
+ XtVaSetValues(sb_horiz, XmNvalue, iposx, NULL);
+ }
+ return 1;
+}
+
+static int motCanvasSetDYAttrib(Ihandle* ih, const char *value)
+{
+ if (ih->data->sb & IUP_SB_VERT)
+ {
+ double posy, ymin, ymax, liney;
+ float dy;
+ int iposy, ipagey, iliney;
+ Widget sb_vert, sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ XtVaGetValues(sb_win, XmNverticalScrollBar, &sb_vert, NULL);
+ if (!sb_vert) return 1;
+
+ if (!iupStrToFloat(value, &dy))
+ return 1;
+
+ ymin = iupAttribGetFloat(ih, "YMIN");
+ ymax = iupAttribGetFloat(ih, "YMAX");
+ posy = ih->data->posy;
+
+ iupCanvasCalcScrollIntPos(ymin, ymax, dy, posy,
+ IUP_SB_MIN, IUP_SB_MAX, &ipagey, &iposy);
+
+ if (!iupAttribGet(ih,"LINEY"))
+ {
+ iliney = ipagey/10;
+ if (!iliney)
+ iliney = 1;
+ }
+ else
+ {
+ /* line and page convertions are the same */
+ liney = iupAttribGetFloat(ih,"LINEY");
+ iupCanvasCalcScrollIntPos(ymin, ymax, liney, 0,
+ IUP_SB_MIN, IUP_SB_MAX, &iliney, NULL);
+ }
+
+ if (dy >= (ymax-ymin))
+ {
+ if (iupAttribGetBoolean(ih, "YAUTOHIDE"))
+ XtUnmanageChild(sb_vert);
+ else
+ XtSetSensitive(sb_vert, 0);
+ return 1;
+ }
+ else
+ {
+ if (!XtIsManaged(sb_vert))
+ XtManageChild(sb_vert);
+ XtSetSensitive(sb_vert, 1);
+ }
+
+ motCanvasSetScrollInfo(sb_vert, IUP_SB_MIN, IUP_SB_MAX, iposy, ipagey, iliney);
+
+ /* update position because it could be corrected */
+ iupCanvasCalcScrollRealPos(ymin, ymax, &posy,
+ IUP_SB_MIN, IUP_SB_MAX, ipagey, &iposy);
+
+ ih->data->posy = (float)posy;
+ }
+ return 1;
+}
+
+static int motCanvasSetPosYAttrib(Ihandle* ih, const char *value)
+{
+ if (ih->data->sb & IUP_SB_VERT)
+ {
+ double ymin, ymax, dy;
+ float posy;
+ int iposy, ipagey;
+ Widget sb_vert, sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ XtVaGetValues(sb_win, XmNverticalScrollBar, &sb_vert, NULL);
+ if (!sb_vert) return 1;
+
+ if (!iupStrToFloat(value, &posy))
+ return 1;
+
+ ymin = iupAttribGetFloat(ih, "YMIN");
+ ymax = iupAttribGetFloat(ih, "YMAX");
+ dy = iupAttribGetFloat(ih, "DY");
+
+ if (posy < ymin) posy = (float)ymin;
+ if (posy > (ymax - dy)) posy = (float)(ymax - dy);
+ ih->data->posy = posy;
+
+ iupCanvasCalcScrollIntPos(ymin, ymax, dy, posy,
+ IUP_SB_MIN, IUP_SB_MAX, &ipagey, &iposy);
+
+ XtVaSetValues(sb_vert, XmNvalue, iposy, NULL);
+ }
+ return 1;
+}
+
+static char* motCanvasGetXDisplayAttrib(Ihandle *ih)
+{
+ (void)ih;
+ return (char*)iupmot_display;
+}
+
+static char* motCanvasGetXScreenAttrib(Ihandle *ih)
+{
+ (void)ih;
+ return (char*)iupmot_screen;
+}
+
+static char* motCanvasGetXWindowAttrib(Ihandle *ih)
+{
+ return (char*)XtWindow(ih->handle);
+}
+
+static char* motCanvasGetClientSizeAttrib(Ihandle *ih)
+{
+ char* str = iupStrGetMemory(20);
+
+ Dimension width, height;
+ XtVaGetValues(ih->handle, XmNwidth, &width,
+ XmNheight, &height,
+ NULL);
+
+ sprintf(str, "%dx%d", (int)width, (int)height);
+ return str;
+}
+
+static int motCanvasSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color;
+
+ /* ignore given value, must use only from parent for the scrollbars */
+ char* parent_value = iupBaseNativeParentGetBgColor(ih);
+
+ color = iupmotColorGetPixelStr(parent_value);
+ if (color != (Pixel)-1)
+ {
+ Widget sb;
+ Widget sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+
+ iupmotSetBgColor(sb_win, color);
+
+ XtVaGetValues(sb_win, XmNverticalScrollBar, &sb, NULL);
+ if (sb) iupmotSetBgColor(sb, color);
+
+ XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb, NULL);
+ if (sb) iupmotSetBgColor(sb, color);
+ }
+
+ if (!IupGetCallback(ih, "ACTION"))
+ iupdrvBaseSetBgColorAttrib(ih, value); /* Use the given value only here */
+ else
+ {
+ XSetWindowAttributes attrs;
+ attrs.background_pixmap = None;
+ XChangeWindowAttributes(iupmot_display, XtWindow(ih->handle), CWBackPixmap, &attrs);
+ iupAttribSetStr(ih, "_IUPMOT_NO_BGCOLOR", "1");
+ }
+
+ return 1;
+}
+
+static void motCanvasLayoutUpdateMethod(Ihandle *ih)
+{
+ Widget sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ Dimension border;
+
+ /* IMPORTANT:
+ The ScrolledWindow border, added by the Core, is NOT included in the Motif size.
+ So when setting the size, we must compensate the border,
+ so the actual size will be the size we expect.
+ */
+
+ XtVaGetValues(sb_win, XmNborderWidth, &border, NULL);
+
+ XtVaSetValues(sb_win,
+ XmNx, (XtArgVal)ih->x,
+ XmNy, (XtArgVal)ih->y,
+ XmNwidth, (XtArgVal)(ih->currentwidth-2*border),
+ XmNheight, (XtArgVal)(ih->currentheight-2*border),
+ NULL);
+}
+
+static int motCanvasMapMethod(Ihandle* ih)
+{
+ Widget sb_win;
+ char *visual;
+ int num_args = 0;
+ Arg args[20];
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ ih->data->sb = iupBaseGetScrollbar(ih);
+
+ /******************************/
+ /* Create the scrolled window */
+ /******************************/
+
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */
+ iupmotSetArg(args, num_args, XmNscrollingPolicy, XmAPPLICATION_DEFINED);
+ iupmotSetArg(args, num_args, XmNvisualPolicy, XmVARIABLE);
+ iupmotSetArg(args, num_args, XmNspacing, 0); /* no space between scrollbars and draw area */
+ iupmotSetArg(args, num_args, XmNshadowThickness, 0);
+
+ if (iupAttribGetBoolean(ih, "BORDER"))
+ {
+ iupmotSetArg(args, num_args, XmNborderWidth, 1);
+ iupmotSetArg(args, num_args, XmNborderColor, iupmotColorGetPixelStr("0 0 0"));
+ }
+ else
+ iupmotSetArg(args, num_args, XmNborderWidth, 0);
+
+ sb_win = XtCreateManagedWidget(
+ iupDialogGetChildIdStr(ih), /* child identifier */
+ xmScrolledWindowWidgetClass, /* widget class */
+ iupChildTreeGetNativeParentHandle(ih), /* widget parent */
+ args, num_args);
+
+ if (!sb_win)
+ return IUP_ERROR;
+
+ ih->serial = iupDialogGetChildId(ih); /* must be after using the string */
+
+ /****************************/
+ /* Create the drawing area */
+ /****************************/
+
+ num_args = 0;
+ iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* no shadow margins */
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0); /* no shadow margins */
+ iupmotSetArg(args, num_args, XmNshadowThickness, 0);
+ iupmotSetArg(args, num_args, XmNresizePolicy, XmRESIZE_NONE); /* no automatic resize of children */
+ if (ih->iclass->is_interactive)
+ {
+ iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP); /* include in navigation */
+
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ iupmotSetArg(args, num_args, XmNtraversalOn, True);
+ else
+ iupmotSetArg(args, num_args, XmNtraversalOn, False);
+ }
+ else
+ {
+ iupmotSetArg(args, num_args, XmNnavigationType, XmNONE);
+ iupmotSetArg(args, num_args, XmNtraversalOn, False);
+ }
+
+ iupmotSetArg(args, num_args, XmNx, 0); /* x-position */
+ iupmotSetArg(args, num_args, XmNy, 0); /* y-position */
+ iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */
+ iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */
+
+ visual = IupGetAttribute(ih, "VISUAL"); /* defined by the OpenGL Canvas or NULL */
+ if (visual)
+ {
+ Colormap colormap = (Colormap)iupAttribGet(ih, "COLORMAP");
+ if (colormap)
+ iupmotSetArg(args, num_args, XmNcolormap,colormap);
+
+ iupmotDialogSetVisual(ih, visual);
+ }
+
+ ih->handle = XtCreateManagedWidget(
+ "draw_area", /* child identifier */
+ xmDrawingAreaWidgetClass, /* widget class */
+ sb_win, /* widget parent */
+ args, num_args);
+
+ if (!ih->handle)
+ {
+ XtDestroyWidget(sb_win);
+ return IUP_ERROR;
+ }
+
+ if (visual)
+ iupmotDialogResetVisual(ih);
+
+ iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)sb_win);
+ XtVaSetValues(sb_win, XmNworkWindow, ih->handle, NULL);
+
+ {
+ XSetWindowAttributes attrs;
+ attrs.bit_gravity = ForgetGravity; /* For the DrawingArea widget gets Expose events when you resize it to be smaller. */
+
+ if (iupAttribGetBoolean(ih, "BACKINGSTORE"))
+ attrs.backing_store = WhenMapped;
+ else
+ attrs.backing_store = NotUseful;
+
+ XChangeWindowAttributes(iupmot_display, XtWindow(ih->handle), CWBitGravity|CWBackingStore, &attrs);
+ }
+
+ if (ih->data->sb & IUP_SB_HORIZ)
+ {
+ Widget sb_horiz = XtVaCreateManagedWidget("sb_horiz",
+ xmScrollBarWidgetClass, sb_win,
+ XmNorientation, XmHORIZONTAL,
+ XmNsliderMark, XmTHUMB_MARK,
+ XmNuserData, ih,
+ NULL);
+
+ XtAddCallback(sb_horiz, XmNvalueChangedCallback, motDialogScrollbarCallback, (void*)IUP_SBPOSH);
+ XtAddCallback(sb_horiz, XmNdragCallback, motDialogScrollbarCallback, (void*)IUP_SBDRAGH);
+ XtAddCallback(sb_horiz, XmNdecrementCallback, motDialogScrollbarCallback, (void*)IUP_SBLEFT);
+ XtAddCallback(sb_horiz, XmNincrementCallback, motDialogScrollbarCallback, (void*)IUP_SBRIGHT);
+ XtAddCallback(sb_horiz, XmNpageDecrementCallback, motDialogScrollbarCallback, (void*)IUP_SBPGLEFT);
+ XtAddCallback(sb_horiz, XmNpageIncrementCallback, motDialogScrollbarCallback, (void*)IUP_SBPGRIGHT);
+
+ XtVaSetValues(sb_win, XmNhorizontalScrollBar, sb_horiz, NULL);
+ }
+
+ if (ih->data->sb & IUP_SB_VERT)
+ {
+ Widget sb_vert = XtVaCreateManagedWidget("sb_vert",
+ xmScrollBarWidgetClass, sb_win,
+ XmNorientation, XmVERTICAL,
+ XmNsliderMark, XmTHUMB_MARK,
+ XmNuserData, ih,
+ NULL);
+
+ XtAddCallback(sb_vert, XmNvalueChangedCallback, motDialogScrollbarCallback, (void*)IUP_SBPOSV);
+ XtAddCallback(sb_vert, XmNdragCallback, motDialogScrollbarCallback, (void*)IUP_SBDRAGV);
+ XtAddCallback(sb_vert, XmNdecrementCallback, motDialogScrollbarCallback, (void*)IUP_SBUP);
+ XtAddCallback(sb_vert, XmNincrementCallback, motDialogScrollbarCallback, (void*)IUP_SBDN);
+ XtAddCallback(sb_vert, XmNpageDecrementCallback, motDialogScrollbarCallback, (void*)IUP_SBPGUP);
+ XtAddCallback(sb_vert, XmNpageIncrementCallback, motDialogScrollbarCallback, (void*)IUP_SBPGDN);
+
+ XtVaSetValues(sb_win, XmNverticalScrollBar, sb_vert, NULL);
+ }
+
+ XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNexposeCallback, (XtCallbackProc)motCanvasExposeCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNresizeCallback, (XtCallbackProc)motCanvasResizeCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNinputCallback, (XtCallbackProc)motCanvasInputCallback, (XtPointer)ih);
+
+ XtAddEventHandler(ih->handle, EnterWindowMask, False,(XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, LeaveWindowMask, False,(XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+
+ XtAddEventHandler(ih->handle, FocusChangeMask, False,(XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, KeyReleaseMask, False, (XtEventHandler)iupmotCanvasKeyReleaseEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, PointerMotionMask, False, (XtEventHandler)iupmotPointerMotionEvent, (XtPointer)ih);
+
+ /* initialize the widget */
+ XtRealizeWidget(sb_win);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvCanvasInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motCanvasMapMethod;
+ ic->LayoutUpdate = motCanvasLayoutUpdateMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motCanvasSetBgColorAttrib, "255 255 255", NULL, IUPAF_DEFAULT); /* force new default value */
+
+ /* IupCanvas only */
+ iupClassRegisterAttribute(ic, "DRAWSIZE", motCanvasGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CURSOR", NULL, iupdrvBaseSetCursorAttrib, IUPAF_SAMEASSYSTEM, "ARROW", IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "DX", NULL, motCanvasSetDXAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "DY", NULL, motCanvasSetDYAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "POSX", iupCanvasGetPosXAttrib, motCanvasSetPosXAttrib, "0.0", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "POSY", iupCanvasGetPosYAttrib, motCanvasSetPosYAttrib, "0.0", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "YAUTOHIDE", NULL, NULL, "YES", NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "XAUTOHIDE", NULL, NULL, "YES", NULL, IUPAF_NOT_MAPPED);
+
+ /* IupCanvas X only */
+ iupClassRegisterAttribute(ic, "XWINDOW", motCanvasGetXWindowAttrib, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "XDISPLAY", motCanvasGetXDisplayAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "XSCREEN", motCanvasGetXScreenAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "BACKINGSTORE", NULL, NULL, "YES", NULL, IUPAF_NOT_MAPPED);
+}
diff --git a/iup/src/mot/iupmot_clipboard.c b/iup/src/mot/iupmot_clipboard.c
new file mode 100755
index 0000000..43a0087
--- /dev/null
+++ b/iup/src/mot/iupmot_clipboard.c
@@ -0,0 +1,208 @@
+/** \file
+ * \brief Clipboard for the Motif Driver.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <Xm/Xm.h>
+#include <Xm/CutPaste.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_image.h"
+
+#include "iupmot_drv.h"
+
+
+static Window motClipboardGetWindow(void)
+{
+ Ihandle* focus = IupGetFocus();
+ Ihandle* dlg;
+ if (!focus) return (Window)NULL;
+ dlg = IupGetDialog(focus);
+ if (dlg)
+ return XtWindow(dlg->handle);
+ else
+ return (Window)NULL;
+}
+
+static int motClipboardSetTextAttrib(Ihandle *ih, const char *value)
+{
+ long item_id = 0;
+ Window window = motClipboardGetWindow();
+ XmString clip_label = XmStringCreateLocalized ("IupClipboard");
+ (void)ih;
+
+ if (XmClipboardStartCopy(iupmot_display, window, clip_label, CurrentTime, NULL, NULL, &item_id)!=ClipboardSuccess)
+ {
+ XmStringFree(clip_label);
+ return 0;
+ }
+
+ XmStringFree(clip_label);
+
+ XmClipboardCopy(iupmot_display, window, item_id, "STRING", (char*)value, (long)strlen(value)+1, 0, NULL);
+ XmClipboardEndCopy(iupmot_display, window, item_id);
+ return 0;
+}
+
+static char* motClipboardGetTextAttrib(Ihandle *ih)
+{
+ unsigned long size;
+ char* str;
+ Window window = motClipboardGetWindow();
+ (void)ih;
+
+ if (XmClipboardInquireLength(iupmot_display, window, "STRING", &size)!=ClipboardSuccess)
+ return NULL;
+
+ str = iupStrGetMemory(size+1);
+
+ if (XmClipboardRetrieve(iupmot_display, window, "STRING", str, size+1, NULL, NULL)!=ClipboardSuccess)
+ return NULL;
+
+ return str;
+}
+
+static int motClipboardSetImageAttrib(Ihandle *ih, const char *value)
+{
+ Pixmap pixmap;
+ long item_id = 0;
+ Window window = motClipboardGetWindow();
+ XmString clip_label = XmStringCreateLocalized ("IupClipboard");
+
+ if (XmClipboardStartCopy(iupmot_display, window, clip_label, CurrentTime, NULL, NULL, &item_id)!=ClipboardSuccess)
+ {
+ XmStringFree(clip_label);
+ return 0;
+ }
+
+ XmStringFree(clip_label);
+
+ pixmap = (Pixmap)iupImageGetImage(value, ih, 0);
+
+ XmClipboardCopy(iupmot_display, window, item_id, "PIXMAP", (char*)&pixmap, sizeof(Pixmap), 0, NULL);
+ XmClipboardEndCopy(iupmot_display, window, item_id);
+
+ (void)ih;
+ return 0;
+}
+
+static int motClipboardSetNativeImageAttrib(Ihandle *ih, const char *value)
+{
+ long item_id = 0;
+ Window window = motClipboardGetWindow();
+ XmString clip_label = XmStringCreateLocalized ("IupClipboard");
+ Pixmap pixmap = (Pixmap)value;
+
+ if (XmClipboardStartCopy(iupmot_display, window, clip_label, CurrentTime, NULL, NULL, &item_id)!=ClipboardSuccess)
+ {
+ XmStringFree(clip_label);
+ return 0;
+ }
+
+ XmStringFree(clip_label);
+
+ XmClipboardCopy(iupmot_display, window, item_id, "PIXMAP", (char*)&pixmap, sizeof(Pixmap), 0, NULL);
+ XmClipboardEndCopy(iupmot_display, window, item_id);
+
+ (void)ih;
+ return 0;
+}
+
+static char* motClipboardGetNativeImageAttrib(Ihandle *ih)
+{
+ unsigned long size;
+ void* data;
+ Pixmap pixmap;
+ Window window = motClipboardGetWindow();
+ (void)ih;
+
+ if (XmClipboardInquireLength(iupmot_display, window, "PIXMAP", &size)!=ClipboardSuccess)
+ return NULL;
+
+ data = XtMalloc(size);
+
+ if (XmClipboardRetrieve(iupmot_display, window, "PIXMAP", data, size, NULL, NULL)!=ClipboardSuccess)
+ return NULL;
+
+ pixmap = *((Pixmap*)data);
+ XtFree(data);
+ return (char*)pixmap;
+}
+
+static int motClipboardIsAvailable(const char* format_name)
+{
+ Window window = motClipboardGetWindow();
+ int count, i;
+ unsigned long max_length, length;
+ char* str;
+
+ if (XmClipboardInquireCount(iupmot_display, window, &count, &max_length) != ClipboardSuccess)
+ return 0;
+
+ str = iupStrGetMemory(max_length+1);
+
+ for (i = 1; i<=count; i++)
+ {
+ if (XmClipboardInquireFormat(iupmot_display, window, i, str, max_length+1, &length)==ClipboardSuccess)
+ {
+ if (iupStrEqualNoCase(str, format_name))
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+static char* motClipboardGetTextAvailableAttrib(Ihandle *ih)
+{
+ (void)ih;
+ if (motClipboardIsAvailable("STRING"))
+ return "YES";
+ else
+ return "NO";
+}
+
+static char* motClipboardGetImageAvailableAttrib(Ihandle *ih)
+{
+ (void)ih;
+ if (motClipboardIsAvailable("PIXMAP"))
+ return "YES";
+ else
+ return "NO";
+}
+
+/******************************************************************************/
+
+Ihandle* IupClipboard(void)
+{
+ return IupCreate("clipboard");
+}
+
+Iclass* iupClipboardGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "clipboard";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ /* Attribute functions */
+ iupClassRegisterAttribute(ic, "TEXT", motClipboardGetTextAttrib, motClipboardSetTextAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "NATIVEIMAGE", motClipboardGetNativeImageAttrib, motClipboardSetNativeImageAttrib, NULL, NULL, IUPAF_NO_STRING|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, motClipboardSetImageAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TEXTAVAILABLE", motClipboardGetTextAvailableAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGEAVAILABLE", motClipboardGetImageAvailableAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
diff --git a/iup/src/mot/iupmot_color.c b/iup/src/mot/iupmot_color.c
new file mode 100755
index 0000000..276bccc
--- /dev/null
+++ b/iup/src/mot/iupmot_color.c
@@ -0,0 +1,380 @@
+/** \file
+ * \brief Motif Driver color management
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <limits.h>
+
+#include <Xm/Xm.h>
+#include <X11/Xproto.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drvinfo.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+
+/* local variables */
+
+typedef struct _Icolor
+{
+ Colormap colormap; /* colormap for all canvas, dialogs and menus */
+ XColor color_table[256]; /* colormap colors */
+ int num_colors; /* number of colors in colormap */
+
+ int rshift; /* red shift for truecolor */
+ int gshift; /* green shift for truecolor */
+ int bshift; /* blue shift for truecolor */
+
+ int direct_conv[256]; /* used with directColor visuals */
+} Icolor;
+
+static Icolor mot_color;
+
+
+/*******************************************
+ NOT TrueColor Functions
+*******************************************/
+
+static int motColor8BppErrorHandler(Display* dpy, XErrorEvent *err)
+{
+ char msg[80];
+
+ /* BadAcess in XFreeColors is OK */
+ if (err->request_code==X_FreeColors && err->error_code==BadAccess)
+ return 0;
+
+ XGetErrorText(dpy, err->error_code, msg, 80 );
+ fprintf(stderr,"IUP Motif error handler: Xlib request %d: %s\n", err->request_code, msg);
+
+ return 0;
+}
+
+static unsigned long motColorNearestRGB(XColor* xc1)
+{
+ static int nearest_try = 0;
+
+ int pos = 0, i;
+ unsigned long min_dist = ULONG_MAX, this_dist;
+ int dr, dg, db;
+ XColor* xc2;
+
+ for (i=0; i<mot_color.num_colors; i++)
+ {
+ xc2 = &(mot_color.color_table[i]);
+
+ dr = (xc1->red - xc2->red) / 850; /* 0.30 / 255 */
+ dg = (xc1->green - xc2->green) / 432; /* 0.59 / 255 */
+ db = (xc1->blue - xc2->blue) / 2318; /* 0.11 / 255 */
+
+ this_dist = dr*dr + dg*dg + db*db;
+
+ if (this_dist < min_dist)
+ {
+ min_dist = this_dist;
+ pos = i;
+ }
+ }
+
+ /* verifico se a cor ainda esta alocada */
+ /* Try to allocate the closest match color. This should only
+ fail if the cell is read/write. Otherwise, we're incrementing
+ the cell's reference count. (comentario extraido da biblioteca Mesa) */
+ if (!XAllocColor(iupmot_display, mot_color.colormap,
+ &(mot_color.color_table[pos])))
+ {
+ /* nao esta, preciso atualizar a tabela e procurar novamente */
+ /* isto acontece porque a cor encontrada pode ter sido de uma aplicacao que nao existe mais */
+ /* uma vez atualizada, o problema nao ocorrera' na nova procura */
+ /* ou a celula e' read write */
+
+ if (nearest_try == 1)
+ {
+ nearest_try = 0;
+ return mot_color.color_table[pos].pixel;
+ }
+
+ XQueryColors(iupmot_display, mot_color.colormap, mot_color.color_table, mot_color.num_colors);
+
+ nearest_try = 1; /* garante que so' vai tentar isso uma vez */
+ return motColorNearestRGB(xc1);
+ }
+
+ return mot_color.color_table[pos].pixel;
+}
+
+static unsigned long motColorGetPixel_NotTrueColor(unsigned char cr, unsigned char cg, unsigned char cb)
+{
+ unsigned long pixel;
+ XColor xc;
+ xc.red = iupCOLOR8TO16(cr);
+ xc.green = iupCOLOR8TO16(cg);
+ xc.blue = iupCOLOR8TO16(cb);
+ xc.flags = DoRed | DoGreen | DoBlue;
+
+ /* verificamos se a nova cor ja' esta' disponivel */
+ if (!XAllocColor(iupmot_display, mot_color.colormap, &xc))
+ {
+ /* nao estava disponivel, procuro pela mais proxima na tabela de cores */
+ pixel = motColorNearestRGB(&xc);
+ }
+ else
+ {
+ /* ja' estava disponivel */
+ /* atualizo a tabela de cores */
+ mot_color.color_table[xc.pixel] = xc;
+ pixel = xc.pixel;
+ }
+
+ return pixel;
+}
+
+static void motColorGetRGB_NotTrueColor(unsigned long pixel, unsigned char* red, unsigned char* green, unsigned char* blue)
+{
+ XColor xc;
+ xc.pixel = pixel;
+ XQueryColor(iupmot_display, mot_color.colormap, &xc);
+ *red = (unsigned char)xc.red;
+ *green = (unsigned char)xc.green;
+ *blue = (unsigned char)xc.blue;
+}
+
+static void motColorReserveColors(void)
+{
+ unsigned char r, g, b;
+ unsigned long background, foreground, shadow, highlight, selection;
+ XtVaGetValues(iupmot_appshell, XmNbackground, &background, NULL);
+ XmGetColors(DefaultScreenOfDisplay(iupmot_display), mot_color.colormap,
+ background, &foreground, &highlight, &shadow, &selection);
+ motColorGetRGB_NotTrueColor(background, &r, &g, &b);
+ motColorGetPixel_NotTrueColor(r, g, b);
+ motColorGetRGB_NotTrueColor(foreground, &r, &g, &b);
+ motColorGetPixel_NotTrueColor(r, g, b);
+ motColorGetRGB_NotTrueColor(shadow, &r, &g, &b);
+ motColorGetPixel_NotTrueColor(r, g, b);
+ motColorGetRGB_NotTrueColor(highlight, &r, &g, &b);
+ motColorGetPixel_NotTrueColor(r, g, b);
+ motColorGetRGB_NotTrueColor(selection, &r, &g, &b);
+ motColorGetPixel_NotTrueColor(r, g, b);
+}
+
+
+/*******************************************
+ TrueColor Functions
+*******************************************/
+
+
+static void motColorGetRGB_TrueColor(unsigned long pixel, unsigned char* red, unsigned char* green, unsigned char* blue)
+{
+ unsigned long r = pixel & iupmot_visual->red_mask;
+ unsigned long g = pixel & iupmot_visual->green_mask;
+ unsigned long b = pixel & iupmot_visual->blue_mask;
+ if (mot_color.rshift<0) r = r >> (-mot_color.rshift);
+ else r = r << mot_color.rshift;
+ if (mot_color.gshift<0) g = g >> (-mot_color.gshift);
+ else g = g << mot_color.gshift;
+ if (mot_color.bshift<0) b = b >> (-mot_color.bshift);
+ else b = b << mot_color.bshift;
+ *red = iupCOLOR16TO8(r);
+ *green = iupCOLOR16TO8(g);
+ *blue = iupCOLOR16TO8(b);
+}
+
+static unsigned long motColorGetPixel_TrueColor(unsigned char cr, unsigned char cg, unsigned char cb)
+{
+ unsigned long r = iupCOLOR8TO16(cr);
+ unsigned long g = iupCOLOR8TO16(cg);
+ unsigned long b = iupCOLOR8TO16(cb);
+
+ if (mot_color.rshift<0)
+ r = r << (-mot_color.rshift);
+ else
+ r = r >> mot_color.rshift;
+
+ if (mot_color.gshift<0)
+ g = g << (-mot_color.gshift);
+ else
+ g = g >> mot_color.gshift;
+
+ if (mot_color.bshift<0)
+ b = b << (-mot_color.bshift);
+ else
+ b = b >> mot_color.bshift;
+
+ r = r & iupmot_visual->red_mask;
+ g = g & iupmot_visual->green_mask;
+ b = b & iupmot_visual->blue_mask;
+
+ return r | g | b;
+}
+
+static int motColorHighBit(unsigned long ul)
+{
+/* returns position of highest set bit in 'ul' as an integer (0-31),
+ or -1 if none */
+ int i; unsigned long hb;
+
+ hb = 0x80; hb = hb << 24; /* hb = 0x80000000UL */
+ for (i=31; ((ul & hb) == 0) && i>=0; i--, ul<<=1);
+ return i;
+}
+
+static void motColorMakeDirectCmap(Colormap cmap)
+{
+ int i, cmaplen, numgot;
+ unsigned char origgot[256];
+ XColor c;
+ unsigned long rmask, gmask, bmask;
+ int rshift, gshift, bshift;
+
+ rmask = iupmot_visual->red_mask;
+ gmask = iupmot_visual->green_mask;
+ bmask = iupmot_visual->blue_mask;
+
+ rshift = motColorHighBit(rmask) - 15;
+ gshift = motColorHighBit(gmask) - 15;
+ bshift = motColorHighBit(bmask) - 15;
+
+ if (rshift<0) rmask = rmask << (-rshift);
+ else rmask = rmask >> rshift;
+
+ if (gshift<0) gmask = gmask << (-gshift);
+ else gmask = gmask >> gshift;
+
+ if (bshift<0) bmask = bmask << (-bshift);
+ else bmask = bmask >> bshift;
+
+ cmaplen = iupmot_visual->map_entries;
+ if (cmaplen>256) cmaplen=256;
+
+ /* try to alloc a 'cmaplen' long grayscale colormap. May not get all
+ entries for whatever reason. Build table 'mot_color.direct_conv[]' that
+ maps range [0..(cmaplen-1)] into set of colors we did get */
+
+ for (i=0; i<256; i++) { origgot[i] = 0; mot_color.direct_conv[i] = i; }
+
+ for (i=numgot=0; i<cmaplen; i++)
+ {
+ c.red = c.green = c.blue = (unsigned short)((i * 0xffff) / (cmaplen - 1));
+ c.red = (unsigned short)(c.red & rmask);
+ c.green = (unsigned short)(c.green & gmask);
+ c.blue = (unsigned short)(c.blue & bmask);
+ c.flags = DoRed | DoGreen | DoBlue;
+
+ if (XAllocColor(iupmot_display, cmap, &c))
+ {
+ origgot[i] = 1;
+ numgot++;
+ }
+ }
+
+ if (numgot == 0)
+ return;
+
+ /* mot_color.direct_conv may or may not have holes in it. */
+ for (i=0; i<cmaplen; i++)
+ {
+ if (!origgot[i])
+ {
+ int numbak, numfwd;
+ numbak = numfwd = 0;
+ while ((i - numbak) >= 0 && !origgot[i-numbak]) numbak++;
+ while ((i + numfwd) < cmaplen && !origgot[i+numfwd]) numfwd++;
+
+ if (i-numbak<0 || !origgot[i-numbak]) numbak = 999;
+ if (i+numfwd>=cmaplen || !origgot[i+numfwd]) numfwd = 999;
+
+ if (numbak<numfwd) mot_color.direct_conv[i] = mot_color.direct_conv[i-numbak];
+ else if (numfwd<999) mot_color.direct_conv[i] = mot_color.direct_conv[i+numfwd];
+ }
+ }
+}
+
+
+/*******************************************
+ Exported Functions
+*******************************************/
+
+unsigned long (* iupmotColorGetPixel)(unsigned char r, unsigned char g, unsigned char b) = 0;
+void (* iupmotColorGetRGB)(unsigned long pixel, unsigned char* red, unsigned char* green, unsigned char* blue) = 0;
+
+void iupmotColorInit(void)
+{
+ int depth = iupdrvGetScreenDepth();
+
+ if (depth > 8)
+ {
+ iupmotColorGetRGB = motColorGetRGB_TrueColor;
+ iupmotColorGetPixel = motColorGetPixel_TrueColor;
+
+ /* make linear colormap for DirectColor visual */
+ if (iupmot_visual->class == DirectColor)
+ motColorMakeDirectCmap(DefaultColormap(iupmot_display, iupmot_screen));
+
+ mot_color.rshift = 15 - motColorHighBit(iupmot_visual->red_mask);
+ mot_color.gshift = 15 - motColorHighBit(iupmot_visual->green_mask);
+ mot_color.bshift = 15 - motColorHighBit(iupmot_visual->blue_mask);
+
+ mot_color.num_colors = 0;
+ mot_color.colormap = 0;
+ }
+ else
+ {
+ int i;
+ iupmotColorGetRGB = motColorGetRGB_NotTrueColor;
+ iupmotColorGetPixel = motColorGetPixel_NotTrueColor;
+
+ mot_color.colormap = DefaultColormap(iupmot_display, iupmot_screen);
+ mot_color.num_colors = 1L << depth;
+
+ for (i=0; i<mot_color.num_colors; i++)
+ mot_color.color_table[i].pixel = i;
+
+ XQueryColors(iupmot_display, mot_color.colormap, mot_color.color_table, mot_color.num_colors);
+ XSetErrorHandler(motColor8BppErrorHandler);
+
+ motColorReserveColors();
+ }
+}
+
+void iupmotColorFinish(void)
+{
+ if (mot_color.colormap)
+ {
+ unsigned long pixels[256];
+ int i;
+
+ /* release colors */
+ for (i = 0; i < mot_color.num_colors; i++)
+ pixels[i] = mot_color.color_table[i].pixel;
+
+ XFreeColors(iupmot_display, mot_color.colormap, pixels, mot_color.num_colors, 0);
+
+ /* release palette */
+ if (mot_color.colormap != DefaultColormap(iupmot_display, iupmot_screen))
+ XFreeColormap(iupmot_display, mot_color.colormap);
+ }
+}
+
+Colormap iupmotColorMap(void)
+{
+ return mot_color.colormap;
+}
+
+unsigned long iupmotColorGetPixelStr(const char* color)
+{
+ unsigned char r, g, b;
+ if (!iupStrToRGB(color, &r, &g, &b))
+ return (unsigned long)-1;
+
+ return iupmotColorGetPixel(r, g, b);
+}
diff --git a/iup/src/mot/iupmot_color.h b/iup/src/mot/iupmot_color.h
new file mode 100755
index 0000000..a306fd3
--- /dev/null
+++ b/iup/src/mot/iupmot_color.h
@@ -0,0 +1,36 @@
+/** \file
+ * \brief Motif Color Management
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMOT_COLOR_H
+#define __IUPMOT_COLOR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Returns a pixel value from a RGB triple. */
+extern unsigned long (* iupmotColorGetPixel)(unsigned char r, unsigned char g, unsigned char b);
+
+/* Returns a RGB triple from a pixel value. */
+extern void (* iupmotColorGetRGB)(unsigned long pixel, unsigned char *r, unsigned char *g, unsigned char *b);
+
+/* initialize the toplevel colormap and the iupmotColorGet* functions */
+void iupmotColorInit(void);
+void iupmotColorFinish(void);
+
+/* returns the toplevel colormap */
+Colormap iupmotColorMap(void);
+
+/* Returns a pixel value from a IUP color description. */
+unsigned long iupmotColorGetPixelStr(const char* color);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/mot/iupmot_colordlg.c b/iup/src/mot/iupmot_colordlg.c
new file mode 100755
index 0000000..7a949bf
--- /dev/null
+++ b/iup/src/mot/iupmot_colordlg.c
@@ -0,0 +1,31 @@
+/** \file
+ * \brief IupColorDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drvinfo.h"
+#include "iup_dialog.h"
+
+#include "iupmot_drv.h"
+
+
+static int motColorDlgPopup(Ihandle* ih, int x, int y)
+{
+ (void)ih;
+ (void)x;
+ (void)y;
+ return IUP_ERROR;
+}
+
+void iupdrvColorDlgInitClass(Iclass* ic)
+{
+ ic->DlgPopup = motColorDlgPopup;
+}
diff --git a/iup/src/mot/iupmot_common.c b/iup/src/mot/iupmot_common.c
new file mode 100755
index 0000000..7b3f8b7
--- /dev/null
+++ b/iup/src/mot/iupmot_common.c
@@ -0,0 +1,630 @@
+/** \file
+ * \brief Motif Base Functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include <Xm/Xm.h>
+#include <Xm/ScrollBar.h>
+#include <X11/cursorfont.h>
+
+#include "iup.h"
+#include "iupkey.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_key.h"
+#include "iup_str.h"
+#include "iup_class.h"
+#include "iup_attrib.h"
+#include "iup_focus.h"
+#include "iup_key.h"
+#include "iup_drv.h"
+#include "iup_image.h"
+#include "iup_drv.h"
+
+#include "iupmot_color.h"
+#include "iupmot_drv.h"
+
+
+
+void iupdrvActivate(Ihandle* ih)
+{
+ if (iupStrEqual(ih->iclass->name, "text") || iupStrEqual(ih->iclass->name, "multiline"))
+ XmProcessTraversal(ih->handle, XmTRAVERSE_CURRENT);
+ else
+ XtCallActionProc(ih->handle, "ArmAndActivate", 0, 0, 0 );
+}
+
+static int motActivateMnemonic(Ihandle *dialog, int c)
+{
+ Ihandle *ih;
+ char attrib[19] = "_IUPMOT_MNEMONIC_ ";
+ attrib[17] = (char)c;
+ ih = (Ihandle*)iupAttribGet(dialog, attrib);
+ if (iupObjectCheck(ih))
+ {
+ iupdrvActivate(ih);
+ return IUP_IGNORE;
+ }
+ return IUP_CONTINUE;
+}
+
+void iupmotSetMnemonicTitle(Ihandle *ih, const char* value)
+{
+ char c;
+ char* str;
+
+ if (!value)
+ value = "";
+
+ str = iupStrProcessMnemonic(value, &c, -1); /* remove & and return in c */
+ if (str != value)
+ {
+ KeySym keysym = iupmotKeyCharToKeySym(c);
+ XtVaSetValues(ih->handle, XmNmnemonic, keysym, NULL); /* works only for menus, but underlines the letter */
+
+ if (ih->iclass->nativetype != IUP_TYPEMENU)
+ {
+ Ihandle* dialog = IupGetDialog(ih);
+ char attrib[22] = "_IUPMOT_MNEMONIC_ \0CB";
+ attrib[17] = (char)toupper(c);
+
+ /* used by motActivateMnemonic */
+ if (iupStrEqual(ih->iclass->name, "label"))
+ iupAttribSetStr(dialog, attrib, (char*)iupFocusNextInteractive(ih));
+ else
+ iupAttribSetStr(dialog, attrib, (char*)ih);
+
+ /* used by iupmotKeyPressEvent */
+ attrib[18] = '_';
+ IupSetCallback(dialog, attrib, (Icallback)motActivateMnemonic);
+ }
+
+ iupmotSetString(ih->handle, XmNlabelString, str);
+ free(str);
+ }
+ else
+ {
+ XtVaSetValues (ih->handle, XmNmnemonic, NULL, NULL);
+ iupmotSetString(ih->handle, XmNlabelString, str);
+ }
+}
+
+void iupmotSetString(Widget w, const char *resource, const char* value)
+{
+ XmString xm_str = XmStringCreateLocalized((String)value);
+ XtVaSetValues(w, resource, xm_str, NULL);
+ XmStringFree(xm_str);
+}
+
+char* iupmotConvertString(XmString str)
+{
+ char* text = (char*)XmStringUnparse(str, NULL, XmCHARSET_TEXT, XmCHARSET_TEXT, NULL, 0, XmOUTPUT_ALL);
+ char* buf = iupStrGetMemoryCopy(text);
+ XtFree(text);
+ return buf;
+}
+
+#ifdef OLD_CONVERT
+char* iupmotConvertString(XmString str)
+{
+ XmStringContext context;
+ char *text, *p, *buf;
+ unsigned int length;
+ XmStringComponentType type;
+
+ if (!XmStringInitContext (&context, str))
+ return NULL;
+
+ buf = iupStrGetMemory(XmStringLength(str)); /* always greatter than strlen */
+
+ /* p keeps a running pointer through buf as text is read */
+ p = buf;
+ while ((type = XmStringGetNextTriple(context, &length, (XtPointer)&text)) != XmSTRING_COMPONENT_END)
+ {
+ switch (type)
+ {
+ case XmSTRING_COMPONENT_TEXT:
+ memcpy(p, text, length);
+ p += length;
+ *p = 0;
+ break;
+ case XmSTRING_COMPONENT_TAB:
+ *p++ = '\t';
+ *p = 0;
+ break;
+ case XmSTRING_COMPONENT_SEPARATOR:
+ *p++ = '\n';
+ *p = 0;
+ break;
+ }
+ XtFree(text);
+ }
+
+ XmStringFreeContext(context);
+
+ return buf;
+}
+#endif
+
+void iupdrvReparent(Ihandle* ih)
+{
+ Widget native_parent = iupChildTreeGetNativeParentHandle(ih);
+ Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (!widget) widget = ih->handle;
+ XReparentWindow(iupmot_display, XtWindow(widget), XtWindow(native_parent), 0, 0);
+}
+
+void iupdrvBaseLayoutUpdateMethod(Ihandle *ih)
+{
+ Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (!widget) widget = ih->handle;
+
+ XtVaSetValues(widget,
+ XmNx, (XtArgVal)ih->x,
+ XmNy, (XtArgVal)ih->y,
+ XmNwidth, (XtArgVal)ih->currentwidth,
+ XmNheight, (XtArgVal)ih->currentheight,
+ NULL);
+}
+
+void iupdrvBaseUnMapMethod(Ihandle* ih)
+{
+ Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (!widget) widget = ih->handle;
+
+ XtUnrealizeWidget(widget); /* To match the call to XtRealizeWidget */
+ XtDestroyWidget(widget); /* To match the call to XtCreateManagedWidget */
+}
+
+void iupdrvDisplayUpdate(Ihandle *ih)
+{
+ XExposeEvent evt;
+ Dimension w, h;
+
+ XtVaGetValues(ih->handle, XmNwidth, &w,
+ XmNheight, &h,
+ NULL);
+
+ evt.type = Expose;
+ evt.display = iupmot_display;
+ evt.send_event = True;
+ evt.window = XtWindow(ih->handle);
+
+ evt.x = 0;
+ evt.y = 0;
+ evt.width = w;
+ evt.height = h;
+
+ evt.count = 0;
+
+ /* POST a Redraw */
+ XSendEvent(iupmot_display, XtWindow(ih->handle), False, ExposureMask, (XEvent*)&evt);
+}
+
+void iupdrvDisplayRedraw(Ihandle *ih)
+{
+ Widget w;
+
+ /* POST a Redraw */
+ iupdrvDisplayUpdate(ih);
+
+ /* if this element has an inner native parent (like IupTabs),
+ then redraw that native parent if different from the element. */
+ w = (Widget)iupClassObjectGetInnerNativeContainerHandle(ih, (Ihandle*)IupGetAttribute(ih, "VALUE_HANDLE"));
+ if (w && w != ih->handle)
+ {
+ Widget handle = ih->handle;
+ ih->handle = w;
+ iupdrvDisplayUpdate(ih);
+ ih->handle = handle;
+ }
+
+ /* flush exposure events. */
+ XmUpdateDisplay(ih->handle);
+}
+
+void iupdrvScreenToClient(Ihandle* ih, int *x, int *y)
+{
+ Window child;
+ XTranslateCoordinates(iupmot_display, RootWindow(iupmot_display, iupmot_screen),
+ XtWindow(ih->handle),
+ *x, *y, x, y, &child);
+}
+
+void iupmotHelpCallback(Widget w, Ihandle *ih, XtPointer call_data)
+{
+ Icallback cb = IupGetCallback(ih, "HELP_CB");
+ if (cb && cb(ih) == IUP_CLOSE)
+ IupExitLoop();
+
+ (void)call_data;
+ (void)w;
+}
+
+void iupmotEnterLeaveWindowEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont)
+{
+ Icallback cb = NULL;
+ (void)cont;
+ (void)w;
+
+ if (evt->type == EnterNotify)
+ {
+ iupmotTipEnterNotify(ih);
+
+ cb = IupGetCallback(ih, "ENTERWINDOW_CB");
+ }
+ else if (evt->type == LeaveNotify)
+ {
+ iupmotTipLeaveNotify();
+
+ cb = IupGetCallback(ih, "LEAVEWINDOW_CB");
+ }
+
+ if (cb)
+ cb(ih);
+}
+
+int iupdrvBaseSetZorderAttrib(Ihandle* ih, const char* value)
+{
+ if (iupdrvIsVisible(ih))
+ {
+ if (iupStrEqualNoCase(value, "TOP"))
+ XRaiseWindow(iupmot_display, XtWindow(ih->handle));
+ else
+ XLowerWindow(iupmot_display, XtWindow(ih->handle));
+ }
+
+ return 0;
+}
+
+void iupdrvSetVisible(Ihandle* ih, int visible)
+{
+ Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (!widget) widget = ih->handle;
+
+ if (visible)
+ XtMapWidget(widget);
+ else
+ XtUnmapWidget(widget);
+}
+
+int iupdrvIsVisible(Ihandle* ih)
+{
+ XWindowAttributes wa;
+ XGetWindowAttributes(iupmot_display, XtWindow(ih->handle), &wa);
+ return (wa.map_state == IsViewable);
+}
+
+int iupdrvIsActive(Ihandle* ih)
+{
+ return XtIsSensitive(ih->handle);
+}
+
+void iupdrvSetActive(Ihandle* ih, int enable)
+{
+ Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (!widget) widget = ih->handle;
+
+ XtSetSensitive(widget, enable);
+}
+
+char* iupmotGetXWindowAttrib(Ihandle *ih)
+{
+ return (char*)XtWindow(ih->handle);
+}
+
+char* iupdrvBaseGetXAttrib(Ihandle *ih)
+{
+ int x, y;
+ Window child;
+ char* str = iupStrGetMemory(20);
+ Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (!widget) widget = ih->handle;
+
+ /* Translating to absolute screen coordinates */
+ /* source destination */
+ XTranslateCoordinates(iupmot_display,
+ XtWindow(widget), RootWindow(iupmot_display, iupmot_screen),
+ 0, 0, &x, &y,
+ &child);
+
+ sprintf(str, "%d", x);
+ return str;
+}
+
+char* iupdrvBaseGetYAttrib(Ihandle *ih)
+{
+ int x, y;
+ Window child;
+ char* str = iupStrGetMemory(20);
+ Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (!widget) widget = ih->handle;
+
+ /* Translating to absolute screen coordinates */
+ /* source destination */
+ XTranslateCoordinates(iupmot_display,
+ XtWindow(widget), RootWindow(iupmot_display, iupmot_screen),
+ 0, 0, &x, &y,
+ &child);
+
+ sprintf(str, "%d", y);
+ return str;
+}
+
+void iupmotSetBgColor(Widget w, Pixel color)
+{
+ Pixel fgcolor;
+ XtVaGetValues(w, XmNforeground, &fgcolor, NULL);
+ XmChangeColor(w, color);
+ /* XmChangeColor also sets the XmNforeground color, so we must reset to the previous one. */
+ XtVaSetValues(w, XmNforeground, fgcolor, NULL);
+ XtVaSetValues(w, XmNbackgroundPixmap, XmUNSPECIFIED_PIXMAP, NULL);
+}
+
+int iupdrvBaseSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ {
+ iupmotSetBgColor(ih->handle, color);
+
+ /* update internal image cache for controls that have the IMAGE attribute */
+ iupImageUpdateParent(ih);
+ }
+ return 1;
+}
+
+char* iupmotGetBgColorAttrib(Ihandle* ih)
+{
+ unsigned char r, g, b;
+ Pixel color;
+ char* str = iupStrGetMemory(20);
+ XtVaGetValues(ih->handle, XmNbackground, &color, NULL);
+ iupmotColorGetRGB(color, &r, &g, &b);
+ sprintf(str, "%d %d %d", (int)r, (int)g, (int)b);
+ return str;
+}
+
+int iupdrvBaseSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ XtVaSetValues(ih->handle, XmNforeground, color, NULL);
+ return 1;
+}
+
+void iupmotGetWindowSize(Ihandle *ih, int *width, int *height)
+{
+ Dimension w, h;
+ XtVaGetValues(ih->handle, XmNwidth, &w,
+ XmNheight, &h,
+ NULL);
+ *width = w;
+ *height = h;
+}
+
+static Cursor motEmptyCursor(Ihandle* ih)
+{
+ /* creates an empty cursor */
+ XColor cursor_color = {0L,0,0,0,0,0};
+ char bitsnull[1] = {0x00};
+ Pixmap pixmapnull;
+ Cursor cur;
+
+ pixmapnull = XCreateBitmapFromData(iupmot_display,
+ XtWindow(ih->handle),
+ bitsnull,
+ 1,1);
+
+ cur = XCreatePixmapCursor(iupmot_display,
+ pixmapnull,
+ pixmapnull,
+ &cursor_color,
+ &cursor_color,
+ 0,0);
+
+ XFreePixmap(iupmot_display, pixmapnull);
+
+ return cur;
+}
+
+static Cursor motGetCursor(Ihandle* ih, const char* name)
+{
+ static struct {
+ const char* iupname;
+ int sysname;
+ } table[] = {
+ { "NONE", 0},
+ { "NULL", 0},
+ { "ARROW", XC_left_ptr},
+ { "BUSY", XC_watch},
+ { "CROSS", XC_crosshair},
+ { "HAND", XC_hand2},
+ { "HELP", XC_question_arrow},
+ { "IUP", XC_question_arrow},
+ { "MOVE", XC_fleur},
+ { "PEN", XC_pencil},
+ { "RESIZE_N", XC_top_side},
+ { "RESIZE_S", XC_bottom_side},
+ { "RESIZE_NS", XC_sb_v_double_arrow},
+ { "RESIZE_W", XC_left_side},
+ { "RESIZE_E", XC_right_side},
+ { "RESIZE_WE", XC_sb_h_double_arrow},
+ { "RESIZE_NE", XC_top_right_corner},
+ { "RESIZE_SE", XC_bottom_right_corner},
+ { "RESIZE_NW", XC_top_left_corner},
+ { "RESIZE_SW", XC_bottom_left_corner},
+ { "TEXT", XC_xterm},
+ { "UPARROW", XC_center_ptr}
+ };
+
+ Cursor cur;
+ char str[50];
+ int i, count = sizeof(table)/sizeof(table[0]);
+
+ /* check the cursor cache first (per control)*/
+ sprintf(str, "_IUPMOT_CURSOR_%s", name);
+ cur = (Cursor)iupAttribGet(ih, str);
+ if (cur)
+ return cur;
+
+ /* check the pre-defined IUP names first */
+ for (i = 0; i < count; i++)
+ {
+ if (iupStrEqualNoCase(name, table[i].iupname))
+ {
+ if (table[i].sysname)
+ cur = XCreateFontCursor(iupmot_display, table[i].sysname);
+ else
+ cur = motEmptyCursor(ih);
+
+ break;
+ }
+ }
+
+ if (i == count)
+ {
+ /* check for a name defined cursor */
+ cur = (Cursor)iupImageGetCursor(name);
+ }
+
+ iupAttribSetStr(ih, str, (char*)cur);
+ return cur;
+}
+
+int iupdrvBaseSetCursorAttrib(Ihandle* ih, const char* value)
+{
+ Cursor cur = motGetCursor(ih, value);
+ if (cur)
+ {
+ XDefineCursor(iupmot_display, XtWindow(ih->handle), cur);
+ return 1;
+ }
+ return 0;
+}
+
+#include <Xm/XmP.h>
+#include <Xm/DrawP.h>
+
+void iupdrvDrawFocusRect(Ihandle* ih, void* _gc, int x, int y, int w, int h)
+{
+ Drawable wnd = (Drawable)IupGetAttribute(ih, "XWINDOW"); /* Use IupGetAttribute to consult the native implemetation */
+ GC gc = (GC)_gc;
+ XmeDrawHighlight(iupmot_display, wnd, gc, x, y, w, h, 1);
+}
+
+void iupdrvBaseRegisterCommonAttrib(Iclass* ic)
+{
+ iupClassRegisterAttribute(ic, "XMFONTLIST", iupmotGetFontListAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "XFONTSTRUCT", iupmotGetFontStructAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "XFONTID", iupmotGetFontIdAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+}
+
+static void motDoNothing(Widget w, XEvent* evt, String* params, Cardinal* num_params)
+{
+ (void)w;
+ (void)evt;
+ (void)params;
+ (void)num_params;
+}
+
+void iupmotDisableDragSource(Widget w)
+{
+ char dragTranslations[] = "#override <Btn2Down>: iupDoNothing()";
+ static int do_nothing_rec = 0;
+ if (!do_nothing_rec)
+ {
+ XtActionsRec rec = {"iupDoNothing", (XtActionProc)motDoNothing};
+ XtAppAddActions(iupmot_appcontext, &rec, 1);
+ do_nothing_rec = 1;
+ }
+ XtOverrideTranslations(w, XtParseTranslationTable(dragTranslations));
+}
+
+int iupdrvGetScrollbarSize(void)
+{
+ return 15;
+}
+
+void iupmotSetPixmap(Ihandle* ih, const char* name, const char* prop, int make_inactive)
+{
+ if (name)
+ {
+ Pixmap old_pixmap;
+ Pixmap pixmap = (Pixmap)iupImageGetImage(name, ih, make_inactive);
+ if (!pixmap)
+ pixmap = XmUNSPECIFIED_PIXMAP;
+ XtVaGetValues(ih->handle, prop, &old_pixmap, NULL);
+ if (pixmap != old_pixmap)
+ XtVaSetValues(ih->handle, prop, pixmap, NULL);
+ return;
+ }
+
+ /* if not defined */
+ XtVaSetValues(ih->handle, prop, XmUNSPECIFIED_PIXMAP, NULL);
+}
+
+void iupmotButtonPressReleaseEvent(Widget w, Ihandle* ih, XEvent* evt, Boolean* cont)
+{
+ unsigned long elapsed;
+ static Time last = 0;
+ char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT;
+ IFniiiis cb;
+
+ XButtonEvent *but_evt = (XButtonEvent*)evt;
+ if (but_evt->button!=Button1 &&
+ but_evt->button!=Button2 &&
+ but_evt->button!=Button3 &&
+ but_evt->button!=Button4 &&
+ but_evt->button!=Button5)
+ return;
+
+ cb = (IFniiiis) IupGetCallback(ih,"BUTTON_CB");
+ if (cb)
+ {
+ int ret, doubleclick = 0;
+ int b = IUP_BUTTON1+(but_evt->button-1);
+
+ /* Double/Single Click */
+ if (but_evt->type==ButtonPress)
+ {
+ elapsed = but_evt->time - last;
+ last = but_evt->time;
+ if ((int)elapsed <= XtGetMultiClickTime(iupmot_display))
+ doubleclick = 1;
+ }
+
+ iupmotButtonKeySetStatus(but_evt->state, but_evt->button, status, doubleclick);
+
+ ret = cb(ih, b, (but_evt->type==ButtonPress), but_evt->x, but_evt->y, status);
+ if (ret==IUP_CLOSE)
+ IupExitLoop();
+ else if (ret==IUP_IGNORE)
+ *cont=False;
+ }
+
+ (void)w;
+}
+
+void iupmotPointerMotionEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont)
+{
+ IFniis cb = (IFniis)IupGetCallback(ih,"MOTION_CB");
+ if (cb)
+ {
+ XMotionEvent *motion_evt = (XMotionEvent*)evt;
+ char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT;
+ iupmotButtonKeySetStatus(motion_evt->state, 0, status, 0);
+ cb(ih, motion_evt->x, motion_evt->y, status);
+ }
+
+ (void)w;
+ (void)cont;
+}
diff --git a/iup/src/mot/iupmot_dialog.c b/iup/src/mot/iupmot_dialog.c
new file mode 100755
index 0000000..4eeb834
--- /dev/null
+++ b/iup/src/mot/iupmot_dialog.c
@@ -0,0 +1,1069 @@
+/** \file
+ * \brief IupDialog class
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+#include <Xm/BulletinB.h>
+#include <Xm/MwmUtil.h>
+#include <Xm/AtomMgr.h>
+#include <Xm/Protocols.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+#include <limits.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_class.h"
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_dlglist.h"
+#include "iup_attrib.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_drvinfo.h"
+#include "iup_focus.h"
+#include "iup_str.h"
+#define _IUPDLG_PRIVATE
+#include "iup_dialog.h"
+#include "iup_image.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+Atom iupmot_wm_deletewindow = 0; /* used also by IupMessageDlg */
+
+static int motDialogSetBgColorAttrib(Ihandle* ih, const char* value);
+
+/****************************************************************
+ Utilities
+****************************************************************/
+
+
+int iupdrvDialogIsVisible(Ihandle* ih)
+{
+ return iupdrvIsVisible(ih) || ih->data->show_state == IUP_MINIMIZE;
+}
+
+void iupdrvDialogUpdateSize(Ihandle* ih)
+{
+ Dimension width, height;
+ XtVaGetValues(ih->handle, XmNwidth, &width, XmNheight, &height, NULL);
+ ih->currentwidth = width;
+ ih->currentheight = height;
+}
+
+void iupdrvDialogGetSize(InativeHandle* handle, int *w, int *h)
+{
+ Dimension width, height;
+ XtVaGetValues(handle, XmNwidth, &width, XmNheight, &height, NULL);
+ if (w) *w = width;
+ if (h) *h = height;
+}
+
+void iupmotDialogSetVisual(Ihandle* ih, void* visual)
+{
+ Ihandle *dialog = IupGetDialog(ih);
+ XtVaSetValues(dialog->handle, XmNvisual, visual, NULL);
+}
+
+void iupmotDialogResetVisual(Ihandle* ih)
+{
+ Ihandle *dialog = IupGetDialog(ih);
+ XtVaSetValues(dialog->handle, XmNvisual, iupmot_visual, NULL);
+}
+
+void iupdrvDialogSetVisible(Ihandle* ih, int visible)
+{
+ if (visible)
+ {
+ XtMapWidget(ih->handle);
+ XRaiseWindow(iupmot_display, XtWindow(ih->handle));
+ while (!iupdrvDialogIsVisible(ih)); /* waits until window get mapped */
+ }
+ else
+ {
+ /* if iupdrvIsVisible reports hidden, then it should be minimized */
+ if (!iupdrvIsVisible(ih)) /* can NOT hide a minimized window, so map it first. */
+ {
+ XtMapWidget(ih->handle);
+ XRaiseWindow(iupmot_display, XtWindow(ih->handle));
+ while (!iupdrvDialogIsVisible(ih)); /* waits until window get mapped */
+ }
+
+ XtUnmapWidget(ih->handle);
+ while (iupdrvDialogIsVisible(ih)); /* waits until window gets unmapped */
+ }
+}
+
+void iupdrvDialogGetPosition(InativeHandle* handle, int *x, int *y)
+{
+ Dimension cur_x, cur_y;
+ XtVaGetValues(handle, XmNx, &cur_x,
+ XmNy, &cur_y,
+ NULL);
+ if (x) *x = cur_x;
+ if (y) *y = cur_y;
+}
+
+void iupdrvDialogSetPosition(Ihandle *ih, int x, int y)
+{
+ XtVaSetValues(ih->handle,
+ XmNx, (XtArgVal)x,
+ XmNy, (XtArgVal)y,
+ NULL);
+}
+
+static int motDialogGetMenuSize(Ihandle* ih)
+{
+ if (ih->data->menu)
+ return iupdrvMenuGetMenuBarSize(ih->data->menu);
+ else
+ return 0;
+}
+
+void iupdrvDialogGetDecoration(Ihandle* ih, int *border, int *caption, int *menu)
+{
+ static int native_border = 0;
+ static int native_caption = 0;
+
+ int has_caption = iupAttribGetBoolean(ih, "MAXBOX") ||
+ iupAttribGetBoolean(ih, "MINBOX") ||
+ iupAttribGetBoolean(ih, "MENUBOX") ||
+ IupGetAttribute(ih, "TITLE"); /* must use IupGetAttribute to check from the native implementation */
+
+ int has_border = has_caption ||
+ iupAttribGetBoolean(ih, "RESIZE") ||
+ iupAttribGetBoolean(ih, "BORDER");
+
+ *menu = motDialogGetMenuSize(ih);
+
+ if (ih->handle && iupdrvDialogIsVisible(ih))
+ {
+ int win_border, win_caption;
+ if (iupdrvGetWindowDecor((void*)XtWindow(ih->handle), &win_border, &win_caption))
+ {
+ *border = 0;
+ if (has_border)
+ *border = win_border;
+
+ *caption = 0;
+ if (has_caption)
+ *caption = win_caption;
+
+ if (!native_border && *border)
+ native_border = win_border;
+
+ if (!native_caption && *caption)
+ native_caption = win_caption;
+
+ return;
+ }
+ }
+
+ /* I could not set the size of the window including the decorations when the dialog is hidden */
+ /* So we have to estimate the size of borders and caption when the dialog is hidden */
+
+ *border = 0;
+ if (has_border)
+ {
+ if (native_border)
+ *border = native_border;
+ else
+ *border = 5;
+ }
+
+ *caption = 0;
+ if (has_caption)
+ {
+ if (native_caption)
+ *caption = native_caption;
+ else
+ *caption = 20;
+ }
+}
+
+static int motDialogQueryWMspecSupport(Atom feature)
+{
+ static Atom netsuppport = 0;
+ Atom type;
+ Atom *atoms;
+ int format;
+ unsigned long after, natoms, i;
+
+ if (!netsuppport)
+ netsuppport = XmInternAtom(iupmot_display, "_NET_SUPPORTED", False);
+
+ /* get all the features */
+ XGetWindowProperty(iupmot_display, RootWindow(iupmot_display, iupmot_screen),
+ netsuppport, 0, LONG_MAX, False, XA_ATOM, &type, &format, &natoms,
+ &after, (unsigned char **)&atoms);
+ if (type != XA_ATOM || atoms == NULL)
+ {
+ if (atoms) XFree(atoms);
+ return 0;
+ }
+
+ /* Lookup the feature we want */
+ for (i = 0; i < natoms; i++)
+ {
+ if (atoms[i] == feature)
+ {
+ XFree(atoms);
+ return 1;
+ }
+ }
+
+ XFree(atoms);
+ return 0;
+}
+
+static void motDialogSetWindowManagerStyle(Ihandle* ih)
+{
+ MwmHints hints;
+ static Atom xwmhint = 0;
+ if (!xwmhint)
+ xwmhint = XmInternAtom(iupmot_display, "_MOTIF_WM_HINTS", False);
+
+ hints.flags = (MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS);
+ hints.functions = 0;
+ hints.decorations = 0;
+ hints.input_mode = 0;
+ hints.status = 0;
+
+ if (IupGetAttribute(ih, "TITLE")) { /* must use IupGetAttribute to check from the native implementation */
+ hints.functions |= MWM_FUNC_MOVE;
+ hints.decorations |= MWM_DECOR_TITLE;
+ }
+
+ if (iupAttribGetBoolean(ih, "MENUBOX")) {
+ hints.functions |= MWM_FUNC_CLOSE;
+ hints.decorations |= MWM_DECOR_MENU;
+ }
+
+ if (iupAttribGetBoolean(ih, "MINBOX")) {
+ hints.functions |= MWM_FUNC_MINIMIZE;
+ hints.decorations |= MWM_DECOR_MINIMIZE;
+ }
+
+ if (iupAttribGetBoolean(ih, "MAXBOX")) {
+ hints.functions |= MWM_FUNC_MAXIMIZE;
+ hints.decorations |= MWM_DECOR_MAXIMIZE;
+ }
+
+ if (iupAttribGetBoolean(ih, "RESIZE")) {
+ hints.functions |= MWM_FUNC_RESIZE;
+ hints.decorations |= MWM_DECOR_RESIZEH;
+ }
+
+ if (iupAttribGetBoolean(ih, "BORDER"))
+ hints.decorations |= MWM_DECOR_BORDER;
+
+ XChangeProperty(iupmot_display, XtWindow(ih->handle),
+ xwmhint, xwmhint,
+ 32, PropModeReplace,
+ (const unsigned char *) &hints,
+ PROP_MOTIF_WM_HINTS_ELEMENTS);
+}
+
+static void motDialogChangeWMState(Ihandle* ih, Atom state1, Atom state2, int operation)
+{
+ static Atom wmstate = 0;
+ if (!wmstate)
+ wmstate = XmInternAtom(iupmot_display, "_NET_WM_STATE", False);
+
+ if (iupdrvDialogIsVisible(ih))
+ {
+ XEvent evt;
+ evt.type = ClientMessage;
+ evt.xclient.type = ClientMessage;
+ evt.xclient.serial = 0;
+ evt.xclient.send_event = True;
+ evt.xclient.display = iupmot_display;
+ evt.xclient.window = XtWindow(ih->handle);
+ evt.xclient.message_type = wmstate;
+ evt.xclient.format = 32;
+ evt.xclient.data.l[0] = operation;
+ evt.xclient.data.l[1] = state1;
+ evt.xclient.data.l[2] = state2;
+ evt.xclient.data.l[3] = 0;
+ evt.xclient.data.l[4] = 0;
+
+ XSendEvent(iupmot_display, RootWindow(iupmot_display, iupmot_screen), False,
+ SubstructureRedirectMask | SubstructureNotifyMask, &evt);
+ }
+ else
+ {
+ if (operation)
+ {
+ if (state1 && state2)
+ {
+ Atom atoms[2];
+ atoms[0] = state1;
+ atoms[0] = state2;
+
+ XChangeProperty(iupmot_display, XtWindow(ih->handle),
+ wmstate, XA_ATOM,
+ 32, PropModeReplace,
+ (const unsigned char *)&atoms, 2);
+ }
+ else
+ {
+ XChangeProperty(iupmot_display, XtWindow(ih->handle),
+ wmstate, XA_ATOM,
+ 32, PropModeReplace,
+ (const unsigned char *)&state1, 1);
+ }
+ }
+ else
+ {
+ /* TODO: This is not working. The property is not correctly removed. */
+ /* XDeleteProperty(iupmot_display, XtWindow(ih->handle), wmstate); */
+
+ /* Maybe the right way to do it is to retrieve all the atoms */
+ /* and change again with all atoms except the one to remove */
+ }
+ }
+}
+
+static int motDialogSetFullScreen(Ihandle* ih, int fullscreen)
+{
+ static int support_fullscreen = -1; /* WARNING: The WM can be changed dinamically */
+
+ static Atom xwmfs = 0;
+ if (!xwmfs)
+ xwmfs = XmInternAtom(iupmot_display, "_NET_WM_STATE_FULLSCREEN", False);
+
+ if (support_fullscreen == -1)
+ support_fullscreen = motDialogQueryWMspecSupport(xwmfs);
+
+ if (support_fullscreen)
+ {
+ motDialogChangeWMState(ih, xwmfs, 0, fullscreen);
+ return 1;
+ }
+
+ return 0;
+}
+
+int iupdrvDialogSetPlacement(Ihandle* ih)
+{
+ char* placement;
+ ih->data->show_state = IUP_SHOW;
+
+ if (iupAttribGetBoolean(ih, "FULLSCREEN"))
+ return 1;
+
+ placement = iupAttribGet(ih, "PLACEMENT");
+ if (!placement)
+ return 0;
+
+ if (iupStrEqualNoCase(placement, "MINIMIZED"))
+ {
+ if (iupdrvDialogIsVisible(ih))
+ XIconifyWindow(iupmot_display, XtWindow(ih->handle), iupmot_screen);
+ else
+ {
+ /* TODO: This is not working, so force a minimize after visible. */
+ /*XWMHints wm_hints; */
+ /*wm_hints.flags = StateHint; */
+ /*wm_hints.initial_state = IconicState; */
+ /*XSetWMHints(iupmot_display, XtWindow(ih->handle), &wm_hints); */
+
+ XtMapWidget(ih->handle);
+ XIconifyWindow(iupmot_display, XtWindow(ih->handle), iupmot_screen);
+ }
+ }
+ else if (iupStrEqualNoCase(placement, "MAXIMIZED"))
+ {
+ static Atom maxatoms[2] = {0, 0};
+ if (!(maxatoms[0]))
+ {
+ maxatoms[0] = XmInternAtom(iupmot_display, "_NET_WM_STATE_MAXIMIZED_VERT", False);
+ maxatoms[1] = XmInternAtom(iupmot_display, "_NET_WM_STATE_MAXIMIZED_HORZ", False);
+ }
+
+ motDialogChangeWMState(ih, maxatoms[0], maxatoms[1], 1);
+ }
+ else if (iupStrEqualNoCase(placement, "FULL"))
+ {
+ int width, height, x, y;
+ int border, caption, menu;
+ iupdrvDialogGetDecoration(ih, &border, &caption, &menu);
+
+ /* position the decoration outside the screen */
+ x = -(border);
+ y = -(border+caption+menu);
+
+ /* the dialog client area will cover the task bar */
+ iupdrvGetFullSize(&width, &height);
+
+ height += menu; /* the menu is included in the client area size in Motif. */
+
+ /* set the new size and position */
+ /* The resize event will update the layout */
+ XtVaSetValues(ih->handle,
+ XmNx, (XtArgVal)x, /* outside border */
+ XmNy, (XtArgVal)y,
+ XmNwidth, (XtArgVal)width, /* client size */
+ XmNheight, (XtArgVal)height,
+ NULL);
+ }
+
+ iupAttribSetStr(ih, "PLACEMENT", NULL); /* reset to NORMAL */
+
+ return 1;
+}
+
+/****************************************************************************
+ Attributes
+****************************************************************************/
+
+
+static int motDialogSetMinSizeAttrib(Ihandle* ih, const char* value)
+{
+ int decorwidth = 0, decorheight = 0;
+ int min_w = 1, min_h = 1; /* MINSIZE default value */
+ iupStrToIntInt(value, &min_w, &min_h, 'x');
+
+ /* The minmax size restricts the client area */
+ iupDialogGetDecorSize(ih, &decorwidth, &decorheight);
+
+ if (min_w > decorwidth)
+ XtVaSetValues(ih->handle, XmNminWidth, min_w-decorwidth, NULL);
+ if (min_h > decorheight)
+ XtVaSetValues(ih->handle, XmNminHeight, min_h-decorheight, NULL);
+
+ return 1;
+}
+
+static int motDialogSetMaxSizeAttrib(Ihandle* ih, const char* value)
+{
+ int decorwidth = 0, decorheight = 0;
+ int max_w = 65535, max_h = 65535; /* MAXSIZE default value */
+ iupStrToIntInt(value, &max_w, &max_h, 'x');
+
+ /* The minmax size restricts the client area */
+ iupDialogGetDecorSize(ih, &decorwidth, &decorheight);
+
+ if (max_w > decorwidth)
+ XtVaSetValues(ih->handle, XmNmaxWidth, max_w-decorwidth, NULL);
+ if (max_h > decorheight)
+ XtVaSetValues(ih->handle, XmNmaxHeight, max_h-decorheight, NULL);
+
+ return 1;
+}
+
+static char* motDialogGetXAttrib(Ihandle *ih)
+{
+ char* str = iupStrGetMemory(20);
+
+ int x;
+ iupdrvDialogGetPosition(ih->handle, &x, NULL);
+
+ sprintf(str, "%d", x);
+ return str;
+}
+
+static char* motDialogGetYAttrib(Ihandle *ih)
+{
+ char* str = iupStrGetMemory(20);
+
+ int y;
+ iupdrvDialogGetPosition(ih->handle, &y, NULL);
+
+ sprintf(str, "%d", y);
+ return str;
+}
+
+static int motDialogSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ value = "";
+
+ XtVaSetValues(ih->handle, XmNtitle, value,
+ XmNiconName, value,
+ NULL);
+ return 0;
+}
+
+static char* motDialogGetTitleAttrib(Ihandle* ih)
+{
+ char* title;
+ XtVaGetValues(ih->handle, XmNtitle, &title, NULL);
+
+ if (!title || title[0] == 0)
+ return NULL;
+ else
+ {
+ char* str = iupStrGetMemory(200);
+ strcpy(str, title);
+ return str;
+ }
+}
+
+static char* motDialogGetClientSizeAttrib(Ihandle *ih)
+{
+ char* str = iupStrGetMemory(20);
+
+ Dimension manager_width, manager_height;
+ Widget dialog_manager = XtNameToWidget(ih->handle, "*dialog_manager");
+ XtVaGetValues(dialog_manager, XmNwidth, &manager_width,
+ XmNheight, &manager_height,
+ NULL);
+
+ sprintf(str, "%dx%d", (int)manager_width, (int)manager_height - motDialogGetMenuSize(ih));
+ return str;
+}
+
+static int motDialogSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ {
+ Widget dialog_manager = XtNameToWidget(ih->handle, "*dialog_manager");
+ XtVaSetValues(dialog_manager, XmNbackground, color, NULL);
+ XtVaSetValues(dialog_manager, XmNbackgroundPixmap, XmUNSPECIFIED_PIXMAP, NULL);
+ return 1;
+ }
+ return 0;
+}
+
+static int motDialogSetBackgroundAttrib(Ihandle* ih, const char* value)
+{
+ if (motDialogSetBgColorAttrib(ih, value))
+ return 1;
+ else
+ {
+ Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0);
+ if (pixmap)
+ {
+ Widget dialog_manager = XtNameToWidget(ih->handle, "*dialog_manager");
+ XtVaSetValues(dialog_manager, XmNbackgroundPixmap, pixmap, NULL);
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static int motDialogSetFullScreenAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ {
+ if (!iupAttribGet(ih, "_IUPMOT_FS_STYLE"))
+ {
+ int visible = iupdrvDialogIsVisible(ih);
+ if (visible)
+ iupAttribSetStr(ih, "_IUPMOT_FS_STYLE", "VISIBLE");
+ else
+ iupAttribSetStr(ih, "_IUPMOT_FS_STYLE", "HIDDEN");
+
+ /* save the previous decoration attributes */
+ /* during fullscreen these attributes can be consulted by the application */
+ iupAttribStoreStr(ih, "_IUPMOT_FS_MAXBOX", iupAttribGet(ih, "MAXBOX"));
+ iupAttribStoreStr(ih, "_IUPMOT_FS_MINBOX", iupAttribGet(ih, "MINBOX"));
+ iupAttribStoreStr(ih, "_IUPMOT_FS_MENUBOX",iupAttribGet(ih, "MENUBOX"));
+ iupAttribStoreStr(ih, "_IUPMOT_FS_RESIZE", iupAttribGet(ih, "RESIZE"));
+ iupAttribStoreStr(ih, "_IUPMOT_FS_BORDER", iupAttribGet(ih, "BORDER"));
+ iupAttribStoreStr(ih, "_IUPMOT_FS_TITLE", IupGetAttribute(ih, "TITLE")); /* must use IupGetAttribute to check from the native implementation */
+
+ /* remove the decorations attributes */
+ iupAttribSetStr(ih, "MAXBOX", "NO");
+ iupAttribSetStr(ih, "MINBOX", "NO");
+ iupAttribSetStr(ih, "MENUBOX", "NO");
+ IupSetAttribute(ih, "TITLE", NULL); iupAttribSetStr(ih, "TITLE", NULL); /* remove from the hash table if we are during IupMap */
+ iupAttribSetStr(ih, "RESIZE", "NO");
+ iupAttribSetStr(ih, "BORDER", "NO");
+
+ /* use WM fullscreen support */
+ if (!motDialogSetFullScreen(ih, 1))
+ {
+ /* or configure fullscreen manually */
+ int decor;
+ int width, height;
+
+ /* hide before changing decorations */
+ if (visible)
+ {
+ iupAttribSetStr(ih, "_IUPMOT_SHOW_STATE", NULL); /* To avoid a SHOW_CB notification */
+ XtUnmapWidget(ih->handle);
+ }
+
+ /* save the previous position and size */
+ iupAttribStoreStr(ih, "_IUPMOT_FS_X", IupGetAttribute(ih, "X")); /* must use IupGetAttribute to check from the native implementation */
+ iupAttribStoreStr(ih, "_IUPMOT_FS_Y", IupGetAttribute(ih, "Y"));
+ iupAttribStoreStr(ih, "_IUPMOT_FS_SIZE", IupGetAttribute(ih, "RASTERSIZE"));
+
+ /* save the previous decoration */
+ XtVaGetValues(ih->handle, XmNmwmDecorations, &decor, NULL);
+ iupAttribSetStr(ih, "_IUPMOT_FS_DECOR", (char*)decor);
+
+ /* remove the decorations */
+ XtVaSetValues(ih->handle, XmNmwmDecorations, (XtArgVal)0, NULL);
+ motDialogSetWindowManagerStyle(ih);
+
+ /* get full screen size */
+ iupdrvGetFullSize(&width, &height);
+
+ /* set position and size */
+ XtVaSetValues(ih->handle, XmNwidth, (XtArgVal)width,
+ XmNheight, (XtArgVal)height,
+ XmNx, (XtArgVal)0,
+ XmNy, (XtArgVal)0,
+ NULL);
+
+ /* layout will be updated in motDialogConfigureNotify */
+ if (visible)
+ XtMapWidget(ih->handle);
+ }
+ }
+ }
+ else
+ {
+ char* fs_style = iupAttribGet(ih, "_IUPMOT_FS_STYLE");
+ if (fs_style)
+ {
+ /* can only switch back from full screen if window was visible */
+ /* when fullscreen was set */
+ if (iupStrEqualNoCase(fs_style, "VISIBLE"))
+ {
+ iupAttribSetStr(ih, "_IUPMOT_FS_STYLE", NULL);
+
+ /* restore the decorations attributes */
+ iupAttribStoreStr(ih, "MAXBOX", iupAttribGet(ih, "_IUPMOT_FS_MAXBOX"));
+ iupAttribStoreStr(ih, "MINBOX", iupAttribGet(ih, "_IUPMOT_FS_MINBOX"));
+ iupAttribStoreStr(ih, "MENUBOX",iupAttribGet(ih, "_IUPMOT_FS_MENUBOX"));
+ IupSetAttribute(ih, "TITLE", iupAttribGet(ih, "_IUPMOT_FS_TITLE")); /* TITLE is not stored in the HashTable */
+ iupAttribStoreStr(ih, "RESIZE", iupAttribGet(ih, "_IUPMOT_FS_RESIZE"));
+ iupAttribStoreStr(ih, "BORDER", iupAttribGet(ih, "_IUPMOT_FS_BORDER"));
+
+ if (!motDialogSetFullScreen(ih, 0))
+ {
+ int border, caption, menu, x, y;
+ int visible = iupdrvDialogIsVisible(ih);
+ if (visible)
+ XtUnmapWidget(ih->handle);
+
+ /* restore the decorations */
+ XtVaSetValues(ih->handle, XmNmwmDecorations, (XtArgVal)(int)iupAttribGet(ih, "_IUPMOT_FS_DECOR"), NULL);
+ motDialogSetWindowManagerStyle(ih);
+
+ /* the dialog decoration will not be considered yet in the next XtVaSetValues */
+ /* so compensate the decoration when restoring the position and size */
+ iupdrvDialogGetDecoration(ih, &border, &caption, &menu);
+ x = iupAttribGetInt(ih, "_IUPMOT_FS_X") - (border);
+ y = iupAttribGetInt(ih, "_IUPMOT_FS_Y") - (border+caption+menu);
+
+ /* restore position and size */
+ XtVaSetValues(ih->handle,
+ XmNx, (XtArgVal)x,
+ XmNy, (XtArgVal)y,
+ XmNwidth, (XtArgVal)(IupGetInt(ih, "_IUPMOT_FS_SIZE") - (2*border)),
+ XmNheight, (XtArgVal)(IupGetInt2(ih, "_IUPMOT_FS_SIZE") - (2*border+caption)),
+ NULL);
+
+ /* layout will be updated in motDialogConfigureNotify */
+ if (visible)
+ XtMapWidget(ih->handle);
+
+ /* remove auxiliar attributes */
+ iupAttribSetStr(ih, "_IUPMOT_FS_X", NULL);
+ iupAttribSetStr(ih, "_IUPMOT_FS_Y", NULL);
+ iupAttribSetStr(ih, "_IUPMOT_FS_SIZE", NULL);
+ iupAttribSetStr(ih, "_IUPMOT_FS_DECOR", NULL);
+ }
+
+ /* remove auxiliar attributes */
+ iupAttribSetStr(ih, "_IUPMOT_FS_MAXBOX", NULL);
+ iupAttribSetStr(ih, "_IUPMOT_FS_MINBOX", NULL);
+ iupAttribSetStr(ih, "_IUPMOT_FS_MENUBOX",NULL);
+ iupAttribSetStr(ih, "_IUPMOT_FS_RESIZE", NULL);
+ iupAttribSetStr(ih, "_IUPMOT_FS_BORDER", NULL);
+ iupAttribSetStr(ih, "_IUPMOT_FS_TITLE", NULL);
+ }
+ }
+ }
+ return 1;
+}
+
+static int motDialogSetIconAttrib(Ihandle* ih, const char *value)
+{
+ if (!value)
+ XtVaSetValues(ih->handle, XmNiconPixmap, NULL, NULL);
+ else
+ {
+ Pixmap icon = (Pixmap)iupImageGetIcon(value);
+ Pixmap icon_mask = (Pixmap)iupImageGetMask(value);
+ if (icon)
+ XtVaSetValues(ih->handle, XmNiconPixmap, icon, NULL);
+ if (icon_mask)
+ XtVaSetValues(ih->handle, XmNiconMask, icon, NULL);
+ }
+ return 1;
+}
+
+/****************************************************************
+ Callbacks and Events
+****************************************************************/
+
+
+static void motDialogCBclose(Widget w, XtPointer client_data, XtPointer call_data)
+{
+ Icallback cb;
+ Ihandle *ih = (Ihandle*)client_data;
+ if (!ih) return;
+ (void)call_data;
+ (void)w;
+
+ /* even when ACTIVE=NO the dialog gets this event */
+ if (!iupdrvIsActive(ih))
+ return;
+
+ cb = IupGetCallback(ih, "CLOSE_CB");
+ if (cb)
+ {
+ int ret = cb(ih);
+ if (ret == IUP_IGNORE)
+ return;
+ if (ret == IUP_CLOSE)
+ IupExitLoop();
+ }
+
+ IupHide(ih); /* default: close the window */
+}
+
+static void motDialogConfigureNotify(Widget w, XEvent *evt, String* s, Cardinal *card)
+{
+ IFnii cb;
+ int border, caption, menu;
+ XConfigureEvent *cevent = (XConfigureEvent *)evt;
+ Ihandle* ih;
+ (void)s;
+ (void)card;
+
+ XtVaGetValues(w, XmNuserData, &ih, NULL);
+ if (!ih) return;
+
+ if (ih->data->menu && ih->data->menu->handle)
+ {
+ XtVaSetValues(ih->data->menu->handle,
+ XmNwidth, (XtArgVal)(cevent->width),
+ NULL);
+ }
+
+ if (ih->data->ignore_resize) return;
+
+ iupdrvDialogGetDecoration(ih, &border, &caption, &menu);
+
+ /* update dialog size */
+ ih->currentwidth = cevent->width + 2*border;
+ ih->currentheight = cevent->height + 2*border + caption; /* menu is inside the dialog_manager */
+
+ cb = (IFnii)IupGetCallback(ih, "RESIZE_CB");
+ if (!cb || cb(ih, cevent->width, cevent->height - menu)!=IUP_IGNORE) /* width and height here are for the client area */
+ {
+ ih->data->ignore_resize = 1;
+ IupRefresh(ih);
+ ih->data->ignore_resize = 0;
+ }
+}
+
+static void motDialogCBStructureNotifyEvent(Widget w, XtPointer data, XEvent *evt, Boolean *cont)
+{
+ Ihandle *ih = (Ihandle*)data;
+ int state = -1;
+ (void)cont;
+ (void)w;
+
+ switch(evt->type)
+ {
+ case MapNotify:
+ {
+ if (ih->data->show_state == IUP_MINIMIZE) /* it is a RESTORE. */
+ state = IUP_RESTORE;
+ break;
+ }
+ case UnmapNotify:
+ {
+ if (ih->data->show_state != IUP_HIDE) /* it is a MINIMIZE. */
+ state = IUP_MINIMIZE;
+ break;
+ }
+ }
+
+ if (state < 0)
+ return;
+
+ if (ih->data->show_state != state)
+ {
+ IFni cb;
+ ih->data->show_state = state;
+
+ cb = (IFni)IupGetCallback(ih, "SHOW_CB");
+ if (cb && cb(ih, state) == IUP_CLOSE)
+ IupExitLoop();
+ }
+}
+
+static void motDialogDestroyCallback(Widget w, Ihandle *ih, XtPointer call_data)
+{
+ /* If the IUP dialog was not destroyed, destroy it here. */
+ if (iupObjectCheck(ih))
+ IupDestroy(ih);
+
+ /* this callback is usefull to destroy children dialogs when the parent is destroyed. */
+ /* The application is responsable for destroying the children before this happen. */
+ (void)w;
+ (void)call_data;
+}
+
+
+/****************************************************************
+ Idialog
+****************************************************************/
+
+/* replace the common dialog SetChildrenPosition method because of
+ the menu that it is inside the dialog. */
+static void motDialogSetChildrenPositionMethod(Ihandle* ih, int x, int y)
+{
+ int menu_h = motDialogGetMenuSize(ih);
+ (void)x;
+ (void)y;
+
+ /* Child coordinates are relative to client left-top corner. */
+ iupBaseSetPosition(ih->firstchild, 0, menu_h);
+}
+
+static void* motDialogGetInnerNativeContainerHandleMethod(Ihandle* ih, Ihandle* child)
+{
+ (void)child;
+ return XtNameToWidget(ih->handle, "*dialog_manager");
+}
+
+static int motDialogMapMethod(Ihandle* ih)
+{
+ Widget dialog_manager;
+ InativeHandle* parent;
+ int mwm_decor = 0;
+ int num_args = 0;
+ Arg args[20];
+
+ if (iupAttribGetBoolean(ih, "DIALOGFRAME"))
+ {
+ iupAttribSetStr(ih, "RESIZE", "NO");
+ iupAttribSetStr(ih, "MAXBOX", "NO");
+ iupAttribSetStr(ih, "MINBOX", "NO");
+ }
+
+ /****************************/
+ /* Create the dialog shell */
+ /****************************/
+
+ if (iupAttribGet(ih, "TITLE"))
+ mwm_decor |= MWM_DECOR_TITLE;
+ if (iupAttribGetBoolean(ih, "MENUBOX"))
+ mwm_decor |= MWM_DECOR_MENU;
+ if (iupAttribGetBoolean(ih, "MINBOX"))
+ mwm_decor |= MWM_DECOR_MINIMIZE;
+ if (iupAttribGetBoolean(ih, "MAXBOX"))
+ mwm_decor |= MWM_DECOR_MAXIMIZE;
+ if (iupAttribGetBoolean(ih, "RESIZE"))
+ mwm_decor |= MWM_DECOR_RESIZEH;
+ if (iupAttribGetBoolean(ih, "BORDER"))
+ mwm_decor |= MWM_DECOR_BORDER;
+
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* so XtRealizeWidget will not show the dialog */
+ iupmotSetArg(args, num_args, XmNdeleteResponse, XmDO_NOTHING);
+ iupmotSetArg(args, num_args, XmNallowShellResize, True); /* Used so the BulletinBoard can control the shell size */
+ iupmotSetArg(args, num_args, XmNtitle, "");
+ iupmotSetArg(args, num_args, XmNvisual, iupmot_visual);
+
+ if (iupmotColorMap())
+ iupmotSetArg(args, num_args, XmNcolormap, iupmotColorMap());
+
+ if (mwm_decor != 0x7E)
+ iupmotSetArg(args, num_args, XmNmwmDecorations, mwm_decor);
+
+ if (iupAttribGetBoolean(ih, "SAVEUNDER"))
+ iupmotSetArg(args, num_args, XmNsaveUnder, True);
+
+ parent = iupDialogGetNativeParent(ih);
+ if (parent)
+ ih->handle = XtCreatePopupShell(NULL, topLevelShellWidgetClass, (Widget)parent, args, num_args);
+ else
+ ih->handle = XtAppCreateShell(NULL, "dialog", topLevelShellWidgetClass, iupmot_display, args, num_args);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ XmAddWMProtocolCallback(ih->handle, iupmot_wm_deletewindow, motDialogCBclose, (XtPointer)ih);
+
+ XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, StructureNotifyMask, False, (XtEventHandler)motDialogCBStructureNotifyEvent, (XtPointer)ih);
+
+ XtAddCallback(ih->handle, XmNdestroyCallback, (XtCallbackProc)motDialogDestroyCallback, (XtPointer)ih);
+
+ /*****************************/
+ /* Create the dialog manager */
+ /*****************************/
+
+ dialog_manager = XtVaCreateManagedWidget(
+ "dialog_manager",
+ xmBulletinBoardWidgetClass,
+ ih->handle,
+ XmNmarginWidth, 0,
+ XmNmarginHeight, 0,
+ XmNwidth, 100, /* set this to avoid size calculation problems */
+ XmNheight, 100,
+ XmNborderWidth, 0,
+ XmNshadowThickness, 0,
+ XmNnoResize, iupAttribGetBoolean(ih, "RESIZE")? False: True,
+ XmNresizePolicy, XmRESIZE_NONE, /* no automatic resize of children */
+ XmNuserData, ih, /* used only in motDialogConfigureNotify */
+ XmNnavigationType, XmTAB_GROUP,
+ NULL);
+
+ XtOverrideTranslations(dialog_manager, XtParseTranslationTable("<Configure>: iupDialogConfigure()"));
+ XtAddCallback(dialog_manager, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih);
+ XtAddEventHandler(dialog_manager, KeyPressMask, False,(XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih);
+
+ /* initialize the widget */
+ XtRealizeWidget(ih->handle);
+
+ /* child dialogs must be always on top of the parent */
+ if (parent)
+ XSetTransientForHint(iupmot_display, XtWindow(ih->handle), XtWindow(parent));
+
+ if (mwm_decor != 0x7E) /* some decoration was changed */
+ motDialogSetWindowManagerStyle(ih);
+
+ /* Ignore VISIBLE before mapping */
+ iupAttribSetStr(ih, "VISIBLE", NULL);
+
+ if (IupGetGlobal("_IUP_RESET_DLGBGCOLOR"))
+ {
+ iupmotSetGlobalColorAttrib(dialog_manager, XmNbackground, "DLGBGCOLOR");
+ iupmotSetGlobalColorAttrib(dialog_manager, XmNforeground, "DLGFGCOLOR");
+ IupSetGlobal("_IUP_RESET_DLGBGCOLOR", NULL);
+ }
+
+ return IUP_NOERROR;
+}
+
+static void motDialogUnMapMethod(Ihandle* ih)
+{
+ Widget dialog_manager;
+ if (ih->data->menu)
+ {
+ ih->data->menu->handle = NULL; /* the dialog will destroy the native menu */
+ IupDestroy(ih->data->menu);
+ }
+
+ dialog_manager = XtNameToWidget(ih->handle, "*dialog_manager");
+ XtVaSetValues(dialog_manager, XmNuserData, NULL, NULL);
+
+ XtRemoveEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih);
+ XtRemoveEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih);
+ XtRemoveEventHandler(ih->handle, StructureNotifyMask, False, (XtEventHandler)motDialogCBStructureNotifyEvent, (XtPointer)ih);
+ XtRemoveCallback(ih->handle, XmNdestroyCallback, (XtCallbackProc)motDialogDestroyCallback, (XtPointer)ih);
+
+ XtRemoveEventHandler(dialog_manager, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih);
+ XtRemoveCallback(dialog_manager, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih);
+
+ iupdrvBaseUnMapMethod(ih);
+}
+
+static void motDialogLayoutUpdateMethod(Ihandle *ih)
+{
+ int border, caption, menu;
+
+ if (ih->data->ignore_resize ||
+ iupAttribGet(ih, "_IUPMOT_FS_STYLE"))
+ return;
+
+ /* for dialogs the position is not updated here */
+ ih->data->ignore_resize = 1;
+
+ iupdrvDialogGetDecoration(ih, &border, &caption, &menu);
+
+ if (!iupAttribGetBoolean(ih, "RESIZE"))
+ {
+ int width = ih->currentwidth - 2*border;
+ int height = ih->currentheight - 2*border - caption;
+ XtVaSetValues(ih->handle,
+ XmNwidth, width,
+ XmNheight, height,
+ XmNminWidth, width,
+ XmNminHeight, height,
+ XmNmaxWidth, width,
+ XmNmaxHeight, height,
+ NULL);
+ }
+ else
+ {
+ XtVaSetValues(ih->handle,
+ XmNwidth, (XtArgVal)(ih->currentwidth - 2*border), /* excluding the border */
+ XmNheight, (XtArgVal)(ih->currentheight - 2*border - caption),
+ NULL);
+ }
+
+ ih->data->ignore_resize = 0;
+}
+
+/***************************************************************/
+
+void iupdrvDialogInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class methods */
+ ic->Map = motDialogMapMethod;
+ ic->UnMap = motDialogUnMapMethod;
+ ic->LayoutUpdate = motDialogLayoutUpdateMethod;
+ ic->SetChildrenPosition = motDialogSetChildrenPositionMethod;
+ ic->GetInnerNativeContainerHandle = motDialogGetInnerNativeContainerHandleMethod;
+
+ if (!iupmot_wm_deletewindow)
+ {
+ /* Set up a translation table that captures "Resize" events
+ (also called ConfigureNotify or Configure events). */
+ XtActionsRec rec = {"iupDialogConfigure", motDialogConfigureNotify};
+ XtAppAddActions(iupmot_appcontext, &rec, 1);
+
+ /* register atom to intercept the close button in the window frame */
+ iupmot_wm_deletewindow = XmInternAtom(iupmot_display, "WM_DELETE_WINDOW", False);
+ }
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motDialogSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Overwrite Visual */
+ iupClassRegisterAttribute(ic, "X", motDialogGetXAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "Y", motDialogGetYAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT);
+
+ /* Base Container */
+ iupClassRegisterAttribute(ic, "CLIENTSIZE", motDialogGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "TITLE", motDialogGetTitleAttrib, motDialogSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupDialog only */
+ iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motDialogSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "ICON", NULL, motDialogSetIconAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FULLSCREEN", NULL, motDialogSetFullScreenAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MINSIZE", NULL, motDialogSetMinSizeAttrib, IUPAF_SAMEASSYSTEM, "1x1", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MAXSIZE", NULL, motDialogSetMaxSizeAttrib, IUPAF_SAMEASSYSTEM, "65535x65535", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SAVEUNDER", NULL, NULL, "YES", NULL, IUPAF_NO_INHERIT);
+
+ /* IupDialog X Only */
+ iupClassRegisterAttribute(ic, "XWINDOW", iupmotGetXWindowAttrib, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+}
diff --git a/iup/src/mot/iupmot_drv.h b/iup/src/mot/iupmot_drv.h
new file mode 100755
index 0000000..8a536ef
--- /dev/null
+++ b/iup/src/mot/iupmot_drv.h
@@ -0,0 +1,75 @@
+/** \file
+ * \brief Motif Driver
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMOT_DRV_H
+#define __IUPMOT_DRV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* global variables, declared in iupmot_open.c */
+extern Widget iupmot_appshell;
+extern Display* iupmot_display;
+extern int iupmot_screen;
+extern XtAppContext iupmot_appcontext;
+extern Visual* iupmot_visual;
+extern Atom iupmot_wm_deletewindow;
+
+/* dialog */
+void iupmotDialogSetVisual(Ihandle* ih, void* visual);
+void iupmotDialogResetVisual(Ihandle* ih);
+
+/* focus */
+void iupmotFocusChangeEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont);
+
+/* key */
+void iupmotCanvasKeyReleaseEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont);
+void iupmotKeyPressEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont);
+KeySym iupmotKeyCharToKeySym(char c);
+void iupmotButtonKeySetStatus(unsigned int state, unsigned int but, char* status, int doubleclick);
+void iupmotKeyEncode(int key, unsigned int *keyval, unsigned int *state);
+
+/* font */
+char* iupmotGetFontListAttrib(Ihandle *ih);
+XmFontList iupmotGetFontList(const char* foundry, const char* value);
+char* iupmotFindFontList(XmFontList fontlist);
+char* iupmotGetFontStructAttrib(Ihandle *ih);
+char* iupmotGetFontIdAttrib(Ihandle *ih);
+
+/* tips */
+/* called from Enter/Leave events to check if a TIP is present. */
+void iupmotTipEnterNotify(Ihandle* ih);
+void iupmotTipLeaveNotify(void);
+void iupmotTipsFinish(void);
+
+/* common */
+void iupmotPointerMotionEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont);
+void iupmotButtonPressReleaseEvent(Widget w, Ihandle* ih, XEvent* evt, Boolean* cont);
+void iupmotEnterLeaveWindowEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont);
+void iupmotHelpCallback(Widget w, Ihandle *ih, XtPointer call_data);
+void iupmotSetString(Widget w, const char *resource, const char* value);
+char* iupmotConvertString(XmString str);
+void iupmotSetMnemonicTitle(Ihandle *ih, const char* value);
+void iupmotDisableDragSource(Widget w);
+void iupmotSetPixmap(Ihandle* ih, const char* name, const char* prop, int make_inactive);
+void iupmotSetGlobalColorAttrib(Widget w, const char* xmname, const char* name);
+void iupmotSetBgColor(Widget w, Pixel color);
+char* iupmotGetBgColorAttrib(Ihandle* ih);
+
+void iupmotGetWindowSize(Ihandle *ih, int *width, int *height);
+
+char* iupmotGetXWindowAttrib(Ihandle *ih);
+
+#define iupmotSetArg(_a, _i, _n, _d) ((_a)[(_i)].name = (_n), (_a)[(_i)].value = (XtArgVal)(_d), (_i)++)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/mot/iupmot_filedlg.c b/iup/src/mot/iupmot_filedlg.c
new file mode 100755
index 0000000..768dd2b
--- /dev/null
+++ b/iup/src/mot/iupmot_filedlg.c
@@ -0,0 +1,578 @@
+/** \file
+ * \brief Motif IupFileDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <Xm/Xm.h>
+#include <Xm/MwmUtil.h>
+#include <Xm/FileSB.h>
+#include <Xm/Protocols.h>
+#include <Xm/SelectioB.h>
+#include <Xm/MessageB.h>
+#include <Xm/DrawingA.h>
+#include <Xm/PushB.h>
+#include <Xm/Frame.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drvinfo.h"
+#include "iup_dialog.h"
+#include "iup_strmessage.h"
+#include "iup_drvinfo.h"
+
+#include "iupmot_drv.h"
+
+
+enum {IUP_DIALOGOPEN, IUP_DIALOGSAVE, IUP_DIALOGDIR};
+
+static void motFileDlgAskUserCallback(Widget w, int* ret_code, XmSelectionBoxCallbackStruct* cbs)
+{
+ if (cbs->reason == XmCR_OK)
+ *ret_code = 1;
+ else
+ *ret_code = -1;
+ XtDestroyWidget(XtParent(w));
+}
+
+static int motFileDlgAskUser(Widget parent, const char* message)
+{
+ Widget questionbox;
+ Arg args[3];
+ int ret_code = 0;
+ XmString title;
+
+ XtSetArg(args[0], XmNautoUnmanage, False);
+ XtSetArg(args[1], XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL);
+ XtSetArg(args[2], XmNnoResize, True);
+ questionbox = XmCreateQuestionDialog(parent, "filedlg_question", args, 3);
+ iupmotSetString(questionbox, XmNmessageString, message);
+ XtVaGetValues(parent, XmNdialogTitle, &title, NULL);
+ XtVaSetValues(questionbox, XmNdialogTitle, title, NULL);
+
+ XtAddCallback(questionbox, XmNokCallback, (XtCallbackProc)motFileDlgAskUserCallback, (XtPointer)&ret_code);
+ XtAddCallback(questionbox, XmNcancelCallback, (XtCallbackProc)motFileDlgAskUserCallback, (XtPointer)&ret_code);
+ XtUnmanageChild(XmMessageBoxGetChild(questionbox, XmDIALOG_HELP_BUTTON));
+ XtManageChild(questionbox);
+
+ while (ret_code == 0)
+ XtAppProcessEvent(iupmot_appcontext, XtIMAll);
+
+ XtUnmanageChild(questionbox);
+
+ if (ret_code == 1)
+ return 1;
+ else
+ return 0;
+}
+
+static int motFileDlgCheckValue(Ihandle* ih, Widget w)
+{
+ char* value = iupAttribGet(ih, "VALUE");
+ int dialogtype = iupAttribGetInt(ih, "_IUPDLG_DIALOGTYPE");
+
+ if (dialogtype == IUP_DIALOGDIR)
+ {
+ if (!iupdrvIsDirectory(value)) /* if does not exist or not a directory */
+ {
+ iupStrMessageShowError(ih, "IUP_INVALIDDIR");
+ return 0;
+ }
+ }
+ else
+ {
+ if (iupdrvIsDirectory(value)) /* selected a directory */
+ {
+ iupStrMessageShowError(ih, "IUP_INVALIDDIR");
+ return 0;
+ }
+ else if (!iupdrvIsFile(value)) /* new file */
+ {
+ value = iupAttribGet(ih, "ALLOWNEW");
+ if (!value)
+ {
+ if (dialogtype == IUP_DIALOGSAVE)
+ value = "YES";
+ else
+ value = "NO";
+ }
+
+ if (!iupStrBoolean(value))
+ {
+ iupStrMessageShowError(ih, "IUP_FILENOTEXIST");
+ return 0;
+ }
+ }
+ else if (dialogtype == IUP_DIALOGSAVE && !iupAttribGetInt(ih, "NOOVERWRITEPROMPT"))
+ {
+ if (!motFileDlgAskUser(w, iupStrMessageGet("IUP_FILEOVERWRITE")))
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+static void motFileDlgCBclose(Widget w, XtPointer client_data, XtPointer call_data)
+{
+ Ihandle *ih = (Ihandle*)client_data;
+ if (!ih) return;
+ (void)call_data;
+ (void)w;
+ iupAttribSetStr(ih, "VALUE", NULL);
+ iupAttribSetStr(ih, "STATUS", "-1");
+ iupAttribSetStr(ih, "_IUP_WM_DELETE", "1");
+}
+
+static void motFileDlgCallback(Widget w, Ihandle* ih, XmFileSelectionBoxCallbackStruct* call_data)
+{
+ (void)w;
+ if (call_data->reason == XmCR_OK)
+ {
+ int dialogtype = iupAttribGetInt(ih, "_IUPDLG_DIALOGTYPE");
+ char* filename;
+ XmStringGetLtoR(call_data->value, XmSTRING_DEFAULT_CHARSET, &filename);
+ iupAttribStoreStr(ih, "VALUE", filename);
+ XtFree(filename);
+
+ if (!motFileDlgCheckValue(ih, w))
+ return;
+
+ if (dialogtype == IUP_DIALOGDIR)
+ {
+ iupAttribSetStr(ih, "STATUS", "0");
+ iupAttribSetStr(ih, "FILEEXIST", NULL);
+ }
+ else
+ {
+ IFnss file_cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ if (file_cb && file_cb(ih, iupAttribGet(ih, "VALUE"), "OK") == IUP_IGNORE)
+ return;
+
+ if (iupdrvIsFile(iupAttribGet(ih, "VALUE"))) /* check if file exists */
+ {
+ iupAttribSetStr(ih, "FILEEXIST", "YES");
+ iupAttribSetStr(ih, "STATUS", "0");
+ }
+ else
+ {
+ iupAttribSetStr(ih, "FILEEXIST", "NO");
+ iupAttribSetStr(ih, "STATUS", "1");
+ }
+ }
+
+ if (!iupAttribGetBoolean(ih, "NOCHANGEDIR")) /* do change the current directory */
+ {
+ /* XmFileSelection does not change the current directory */
+ XmString xm_dir;
+ char* dir;
+ XtVaGetValues(w, XmNdirectory, &xm_dir, NULL);
+ XmStringGetLtoR(xm_dir, XmSTRING_DEFAULT_CHARSET, &dir);
+ iupdrvSetCurrentDirectory(dir);
+ XtFree(dir);
+ }
+ }
+ else if (call_data->reason == XmCR_CANCEL)
+ {
+ iupAttribSetStr(ih, "VALUE", NULL);
+ iupAttribSetStr(ih, "FILEEXIST", NULL);
+ iupAttribSetStr(ih, "STATUS", "-1");
+ }
+}
+
+static void motFileDlgHelpCallback(Widget w, XtPointer client_data, XtPointer call_data)
+{
+ Ihandle *ih = (Ihandle*)client_data;
+ Icallback cb = IupGetCallback(ih, "HELP_CB");
+ if (cb && cb(ih) == IUP_CLOSE)
+ {
+ iupAttribSetStr(ih, "VALUE", NULL);
+ iupAttribSetStr(ih, "FILEEXIST", NULL);
+ iupAttribSetStr(ih, "STATUS", "-1");
+ }
+
+ (void)call_data;
+ (void)w;
+}
+
+typedef struct _ImotPromt
+{
+ XmString xm_dir;
+ int ret_code;
+} ImotPromt;
+
+static void motFileDlgPromptCallback(Widget w, ImotPromt* prompt, XmSelectionBoxCallbackStruct* cbs)
+{
+ if (cbs->reason == XmCR_OK)
+ prompt->xm_dir = XmStringCopy(cbs->value);
+
+ prompt->ret_code = 1;
+ XtDestroyWidget(XtParent(w));
+}
+
+static XmString motFileDlgPrompt(Widget parent, const char* message)
+{
+ Widget promptbox;
+ Arg args[2];
+ ImotPromt prompt;
+ XmString title;
+
+ XtSetArg(args[0], XmNautoUnmanage, False);
+ XtSetArg(args[1], XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL);
+ promptbox = XmCreatePromptDialog(parent, "filedlg_prompt", args, 2);
+ iupmotSetString(promptbox, XmNselectionLabelString, message);
+ XtVaGetValues(parent, XmNdialogTitle, &title, NULL);
+ XtVaSetValues(promptbox, XmNdialogTitle, title, NULL);
+
+ prompt.ret_code = 0;
+ prompt.xm_dir = NULL;
+
+ XtAddCallback(promptbox, XmNokCallback, (XtCallbackProc)motFileDlgPromptCallback, (XtPointer)&prompt);
+ XtAddCallback(promptbox, XmNcancelCallback, (XtCallbackProc)motFileDlgPromptCallback, (XtPointer)&prompt);
+ XtUnmanageChild(XmSelectionBoxGetChild(promptbox, XmDIALOG_HELP_BUTTON));
+ XtManageChild(promptbox);
+
+ while (prompt.ret_code == 0)
+ XtAppProcessEvent(iupmot_appcontext, XtIMAll);
+
+ XtUnmanageChild(promptbox);
+
+ return prompt.xm_dir;
+}
+
+static void motFileDlgNewFolderCallback(Widget w, Widget filebox, XtPointer call_data)
+{
+ XmString xm_new_dir = motFileDlgPrompt(filebox, iupStrMessageGet("IUP_NAMENEWFOLDER"));
+ if (xm_new_dir)
+ {
+ XmString xm_dir;
+ XtVaGetValues(filebox, XmNdirectory, &xm_dir, NULL);
+ xm_dir = XmStringConcat(xm_dir, xm_new_dir);
+
+ {
+ char* dir;
+ XmStringGetLtoR(xm_dir, XmSTRING_DEFAULT_CHARSET, &dir);
+ iupdrvMakeDirectory(dir);
+ XtFree(dir);
+ }
+
+ XtVaSetValues(filebox, XmNdirectory, xm_dir, NULL);
+
+ XmStringFree(xm_dir);
+ XmStringFree(xm_new_dir);
+ }
+
+ (void)call_data;
+ (void)w;
+}
+
+static void motFileDlgPreviewCanvasResizeCallback(Widget w, Ihandle *ih, XtPointer call_data)
+{
+ Dimension width, height;
+ XtVaGetValues(w, XmNwidth, &width,
+ XmNheight, &height,
+ NULL);
+
+ iupAttribSetInt(ih, "PREVIEWWIDTH", width);
+ iupAttribSetInt(ih, "PREVIEWHEIGHT", height);
+
+ (void)call_data;
+}
+
+static void motFileDlgUpdatePreviewGLCanvas(Ihandle* ih)
+{
+ Ihandle* glcanvas = IupGetAttributeHandle(ih, "PREVIEWGLCANVAS");
+ if (glcanvas)
+ {
+ iupAttribSetStr(glcanvas, "XWINDOW", iupAttribGet(ih, "XWINDOW"));
+ glcanvas->iclass->Map(glcanvas);
+ }
+}
+
+static void motFileDlgPreviewCanvasInit(Ihandle *ih, Widget w)
+{
+ XSetWindowAttributes attrs;
+ GC gc = XCreateGC(iupmot_display, XtWindow(w), 0, NULL);
+ iupAttribSetStr(ih, "PREVIEWDC", (char*)gc);
+ iupAttribSetStr(ih, "WID", (char*)w);
+
+ iupAttribSetStr(ih, "XWINDOW", (char*)XtWindow(w));
+ iupAttribSetStr(ih, "XDISPLAY", (char*)iupmot_display);
+ motFileDlgUpdatePreviewGLCanvas(ih);
+
+ attrs.bit_gravity = ForgetGravity; /* For the DrawingArea widget gets Expose events when you resize it to be smaller. */
+ attrs.background_pixmap = None;
+ XChangeWindowAttributes(iupmot_display, XtWindow(w), CWBitGravity|CWBackPixmap, &attrs);
+}
+
+static void motFileDlgPreviewCanvasExposeCallback(Widget w, Ihandle *ih, XtPointer call_data)
+{
+ Widget filebox = (Widget)iupAttribGet(ih, "_IUPDLG_FILEBOX");
+ char* filename;
+ XmString xm_file;
+ IFnss cb;
+
+ if (!iupAttribGet(ih, "PREVIEWDC"))
+ motFileDlgPreviewCanvasInit(ih, w);
+
+ XtVaGetValues(filebox, XmNdirSpec, &xm_file, NULL);
+ XmStringGetLtoR(xm_file, XmSTRING_DEFAULT_CHARSET, &filename);
+
+ cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ if (iupdrvIsFile(filename))
+ cb(ih, filename, "PAINT");
+ else
+ cb(ih, NULL, "PAINT");
+
+ XtFree(filename);
+ (void)call_data;
+ (void)w;
+}
+
+static void motFileDlgBrowseSelectionCallback(Widget w, Ihandle* ih, XmListCallbackStruct* list_data)
+{
+ char* filename;
+
+ XmStringGetLtoR(list_data->item, XmSTRING_DEFAULT_CHARSET, &filename);
+
+ if (iupdrvIsFile(filename))
+ {
+ IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ cb(ih, filename, "SELECT");
+ }
+
+ XtFree(filename);
+ (void)w;
+}
+
+static int motFileDlgPopup(Ihandle* ih, int x, int y)
+{
+ InativeHandle* parent = iupDialogGetNativeParent(ih);
+ Widget filebox, dialog;
+ int dialogtype, style = XmDIALOG_FULL_APPLICATION_MODAL;
+ IFnss file_cb = NULL;
+ Widget preview_canvas = NULL;
+ char* value;
+
+ iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */
+ iupAttribSetInt(ih, "_IUPDLG_Y", y);
+
+ value = iupAttribGetStr(ih, "DIALOGTYPE");
+ if (iupStrEqualNoCase(value, "SAVE"))
+ dialogtype = IUP_DIALOGSAVE;
+ else if (iupStrEqualNoCase(value, "DIR"))
+ dialogtype = IUP_DIALOGDIR;
+ else
+ dialogtype = IUP_DIALOGOPEN;
+ iupAttribSetInt(ih, "_IUPDLG_DIALOGTYPE", dialogtype);
+
+ if (parent)
+ {
+ filebox = XmCreateFileSelectionDialog(parent, "filedialog", NULL, 0);
+ dialog = XtParent(filebox);
+ }
+ else
+ {
+ dialog = XtAppCreateShell(NULL, "filedialog", topLevelShellWidgetClass, iupmot_display, NULL, 0);
+ filebox = XmCreateFileSelectionBox(dialog, "filebox", NULL, 0);
+ style = XmDIALOG_MODELESS;
+ XtVaSetValues(dialog,
+ XmNmwmInputMode, MWM_INPUT_FULL_APPLICATION_MODAL,
+ XmNmappedWhenManaged, False,
+ XmNsaveUnder, True,
+ NULL);
+ }
+ if (!filebox)
+ return IUP_NOERROR;
+
+ if (!iupAttribGetBoolean(ih, "SHOWHIDDEN"))
+ XtVaSetValues(filebox, XmNfileFilterStyle, XmFILTER_HIDDEN_FILES, NULL);
+
+ value = iupAttribGet(ih, "TITLE");
+ if (!value)
+ {
+ if (dialogtype == IUP_DIALOGSAVE)
+ value = "IUP_SAVEAS";
+ else if (dialogtype == IUP_DIALOGOPEN)
+ value = "IUP_OPEN";
+ else
+ value = "IUP_SELECTDIR";
+ iupAttribSetStr(ih, "TITLE", iupStrMessageGet(value));
+ }
+ iupmotSetString(filebox, XmNdialogTitle, value);
+
+ XtVaSetValues(filebox,
+ XmNdialogStyle, style,
+ XmNautoUnmanage, False,
+ NULL);
+
+ if (dialogtype == IUP_DIALOGDIR)
+ XtVaSetValues(filebox, XmNfileTypeMask, XmFILE_DIRECTORY, NULL);
+
+ /* just check for the path inside FILE */
+ value = iupAttribGet(ih, "FILE");
+ if (value && value[0] == '/')
+ {
+ char* dir = iupStrFileGetPath(value);
+ iupAttribStoreStr(ih, "DIRECTORY", dir);
+ free(dir);
+ }
+
+ /* set XmNdirectory before XmNpattern and before XmNdirSpec */
+
+ value = iupAttribGet(ih, "DIRECTORY");
+ if (value)
+ iupmotSetString(filebox, XmNdirectory, value);
+
+ value = iupAttribGet(ih, "FILTER");
+ if (value)
+ {
+ char *filter = value;
+ char *p = strchr(value, ';');
+ if (p)
+ {
+ int size = p-value;
+ filter = (char*)malloc(size+1);
+ memcpy(filter, value, size);
+ filter[size] = 0;
+ }
+
+ iupmotSetString(filebox, XmNpattern, filter);
+
+ if (filter != value)
+ free(filter);
+ }
+
+ value = iupAttribGet(ih, "FILE");
+ if (value)
+ {
+ char* file = value;
+
+ if (value[0] != '/') /* if does not contains a full path, then add the directory */
+ {
+ char* cur_dir = NULL;
+ char* dir = iupAttribGet(ih, "DIRECTORY");
+ if (!dir)
+ {
+ cur_dir = iupdrvGetCurrentDirectory();
+ dir = cur_dir;
+ }
+
+ file = iupStrFileMakeFileName(dir, value);
+
+ if (cur_dir)
+ free(cur_dir);
+ }
+
+ /* clear value before setting. Do not know why we have to do this,
+ but if not cleared it will fail to set the XmNdirSpec value. */
+ iupmotSetString(filebox, XmNdirSpec, "");
+ iupmotSetString(filebox, XmNdirSpec, file);
+
+ if (file != value)
+ free(file);
+ }
+
+ if (!IupGetCallback(ih, "HELP_CB"))
+ XtUnmanageChild(XmFileSelectionBoxGetChild(filebox, XmDIALOG_HELP_BUTTON));
+
+ XtAddCallback(filebox, XmNokCallback, (XtCallbackProc)motFileDlgCallback, (XtPointer)ih);
+ XtAddCallback(filebox, XmNcancelCallback, (XtCallbackProc)motFileDlgCallback, (XtPointer)ih);
+ XtAddCallback(filebox, XmNhelpCallback, (XtCallbackProc)motFileDlgHelpCallback, (XtPointer)ih);
+
+ if (dialogtype == IUP_DIALOGDIR)
+ {
+ Widget new_folder = XtVaCreateManagedWidget("new_folder", xmPushButtonWidgetClass, filebox,
+ XmNlabelType, XmSTRING,
+ NULL);
+ iupmotSetString(new_folder, XmNlabelString, iupStrMessageGet("IUP_CREATEFOLDER"));
+ XtAddCallback(new_folder, XmNactivateCallback, (XtCallbackProc)motFileDlgNewFolderCallback, (XtPointer)filebox);
+ }
+ else
+ {
+ file_cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ if (file_cb)
+ {
+ Widget file_list = XmFileSelectionBoxGetChild(filebox, XmDIALOG_LIST);
+ XtAddCallback(file_list, XmNbrowseSelectionCallback, (XtCallbackProc)motFileDlgBrowseSelectionCallback, (XtPointer)ih);
+
+ if (iupAttribGetBoolean(ih, "SHOWPREVIEW"))
+ {
+ Widget frame = XtVaCreateManagedWidget("preview_canvas", xmFrameWidgetClass, filebox,
+ XmNshadowType, XmSHADOW_ETCHED_IN,
+ NULL);
+
+ preview_canvas = XtVaCreateManagedWidget("preview_canvas", xmDrawingAreaWidgetClass, frame,
+ XmNwidth, 180,
+ XmNheight, 150,
+ XmNresizePolicy, XmRESIZE_GROW,
+ NULL);
+
+ XtAddCallback(preview_canvas, XmNexposeCallback, (XtCallbackProc)motFileDlgPreviewCanvasExposeCallback, (XtPointer)ih);
+ XtAddCallback(preview_canvas, XmNresizeCallback, (XtCallbackProc)motFileDlgPreviewCanvasResizeCallback, (XtPointer)ih);
+
+ iupAttribSetStr(ih, "_IUPDLG_FILEBOX", (char*)filebox);
+ }
+ }
+ }
+
+ XmAddWMProtocolCallback(dialog, iupmot_wm_deletewindow, motFileDlgCBclose, (XtPointer)ih);
+ XtManageChild(filebox);
+
+ XtRealizeWidget(dialog);
+ ih->handle = dialog;
+ iupDialogUpdatePosition(ih);
+ ih->handle = NULL; /* reset handle */
+
+ if (file_cb)
+ {
+ if (preview_canvas)
+ motFileDlgPreviewCanvasInit(ih, preview_canvas);
+
+ file_cb(ih, NULL, "INIT");
+ }
+
+ if (style == XmDIALOG_MODELESS)
+ XtPopup(dialog, XtGrabExclusive);
+
+ /* while the user hasn't provided an answer, simulate main loop.
+ ** The answer changes as soon as the user selects one of the
+ ** buttons and the callback routine changes its value. */
+ iupAttribSetStr(ih, "STATUS", NULL);
+ while (iupAttribGet(ih, "STATUS") == NULL)
+ XtAppProcessEvent(iupmot_appcontext, XtIMAll);
+
+ if (file_cb)
+ {
+ if (preview_canvas)
+ XFreeGC(iupmot_display, (GC)iupAttribGet(ih, "PREVIEWDC"));
+
+ file_cb(ih, NULL, "FINISH");
+ }
+
+ if (!iupAttribGet(ih, "_IUP_WM_DELETE"))
+ {
+ XtUnmanageChild(filebox);
+
+ if (style == XmDIALOG_MODELESS)
+ {
+ XtPopdown(dialog);
+ XtDestroyWidget(dialog);
+ }
+ }
+
+ return IUP_NOERROR;
+}
+
+void iupdrvFileDlgInitClass(Iclass* ic)
+{
+ ic->DlgPopup = motFileDlgPopup;
+}
diff --git a/iup/src/mot/iupmot_focus.c b/iup/src/mot/iupmot_focus.c
new file mode 100755
index 0000000..5b09bd9
--- /dev/null
+++ b/iup/src/mot/iupmot_focus.c
@@ -0,0 +1,35 @@
+/** \file
+ * \brief Motif Focus
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+
+#include <stdio.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_focus.h"
+#include "iup_attrib.h"
+#include "iup_assert.h"
+#include "iup_drv.h"
+
+#include "iupmot_drv.h"
+
+void iupdrvSetFocus(Ihandle *ih)
+{
+ XmProcessTraversal(ih->handle, XmTRAVERSE_CURRENT);
+}
+
+void iupmotFocusChangeEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont)
+{
+ (void)w;
+ (void)cont;
+
+ if (evt->type == FocusIn)
+ iupCallGetFocusCb(ih);
+ else if (evt->type == FocusOut)
+ iupCallKillFocusCb(ih);
+}
diff --git a/iup/src/mot/iupmot_font.c b/iup/src/mot/iupmot_font.c
new file mode 100755
index 0000000..8da06dd
--- /dev/null
+++ b/iup/src/mot/iupmot_font.c
@@ -0,0 +1,443 @@
+/** \file
+ * \brief Motif Font mapping
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <Xm/Xm.h>
+#include <Xm/XmP.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+#include "iup_attrib.h"
+#include "iup_array.h"
+#include "iup_object.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_assert.h"
+
+#include "iupmot_drv.h"
+
+
+typedef struct _ImotFont
+{
+ char standardfont[1024];
+ char xlfd[1024]; /* X-Windows Font Description */
+ XmFontList fontlist; /* same as XmRenderTable */
+ XFontStruct *fontstruct;
+ int charwidth, charheight;
+} ImotFont;
+
+static Iarray* mot_fonts = NULL;
+
+static int motGetFontSize(char* font_name)
+{
+ int i = 0;
+ while (i < 8)
+ {
+ font_name = strchr(font_name, '-')+1;
+ i++;
+ }
+
+ *(strchr(font_name, '-')) = 0;
+ return atoi(font_name);
+}
+
+static XFontStruct* motLoadFont(const char* foundry, const char *typeface, int size, int bold, int italic, char *xlfd)
+{
+ XFontStruct* fontstruct;
+ char font_name[1024];
+ char **font_names_list;
+ char *weight, *slant;
+ int i, num_fonts, font_size, near_size;
+
+ /* no underline or strikeout support */
+
+ if (iupStrEqualNoCase(typeface, "System"))
+ typeface = "fixed";
+
+ if (!foundry) foundry = "*";
+
+ if (iupStrEqualNoCase(typeface, "fixed"))
+ foundry = "misc";
+
+ if (bold)
+ weight = "bold";
+ else
+ weight = "medium";
+
+ if (italic)
+ slant = "i";
+ else
+ slant = "r";
+
+ sprintf(font_name,"-%s-%s-%s-%s-*-*-*-*-*-*-*-*-*-*", foundry, typeface, weight, slant);
+
+ font_names_list = XListFonts(iupmot_display, font_name, 32767, &num_fonts);
+ if (!num_fonts)
+ {
+ /* try changing 'i' to 'o', for italic */
+ if (italic)
+ {
+ slant = "o";
+ strstr(font_name, "-i-")[1] = 'o';
+ font_names_list = XListFonts(iupmot_display, font_name, 32767, &num_fonts);
+ }
+
+ if (!num_fonts)
+ return NULL;
+ }
+
+ if (size < 0) /* if in pixels convert to points */
+ {
+ double res = ((double)DisplayWidth(iupmot_display, iupmot_screen) / (double)DisplayWidthMM(iupmot_display, iupmot_screen)); /* pixels/mm */
+ /* 1 point = 1/72 inch 1 inch = 25.4 mm */
+ /* pixel = ((point/72)*25.4)*pixel/mm */
+ size = (int)((-size/res)*2.83464567 + 0.5); /* from pixels to points */
+ }
+
+ size *= 10; /* convert to deci-points */
+
+ near_size = -1000;
+ for (i=0; i<num_fonts; i++)
+ {
+ font_size = motGetFontSize(font_names_list[i]);
+
+ if (font_size == size)
+ {
+ near_size = font_size;
+ break;
+ }
+
+ if (abs(font_size-size) < abs(near_size-size))
+ near_size = font_size;
+ }
+
+ XFreeFontNames(font_names_list);
+
+ sprintf(font_name,"-%s-%s-%s-%s-*-*-*-%d-*-*-*-*-*-*", foundry, typeface, weight, slant, near_size);
+ fontstruct = XLoadQueryFont(iupmot_display, font_name);
+
+ if (fontstruct)
+ strcpy(xlfd, font_name);
+
+ return fontstruct;
+}
+
+static XmFontList motFontCreateRenderTable(XFontStruct* fontstruct, int is_underline, int is_strikeout)
+{
+ XmFontList fontlist;
+ XmRendition rendition;
+ Arg args[10];
+ int num_args = 0;
+
+ iupmotSetArg(args, num_args, XmNfontType, XmFONT_IS_FONT);
+ iupmotSetArg(args, num_args, XmNfont, (XtPointer)fontstruct);
+ iupmotSetArg(args, num_args, XmNloadModel, XmLOAD_IMMEDIATE);
+
+ if (is_underline)
+ iupmotSetArg(args, num_args, XmNunderlineType, XmSINGLE_LINE);
+ else
+ iupmotSetArg(args, num_args, XmNunderlineType, XmNO_LINE);
+
+ if (is_strikeout)
+ iupmotSetArg(args, num_args, XmNstrikethruType, XmSINGLE_LINE);
+ else
+ iupmotSetArg(args, num_args, XmNstrikethruType, XmNO_LINE);
+
+ rendition = XmRenditionCreate(NULL, "", args, num_args);
+
+ fontlist = XmRenderTableAddRenditions(NULL, &rendition, 1, XmDUPLICATE);
+
+ XmRenditionFree(rendition);
+
+ return fontlist;
+}
+
+static int motFontCalcCharWidth(XFontStruct *fontstruct)
+{
+ if (fontstruct->per_char)
+ {
+ int i, all=0;
+ int first = fontstruct->min_char_or_byte2;
+ int last = fontstruct->max_char_or_byte2;
+ if (first < 32) first = 32; /* space */
+ if (last > 126) last = 126; /* tilde */
+ for (i=first; i<=last; i++)
+ all += fontstruct->per_char[i].width;
+ return all/(last-first + 1); /* average character width */
+ }
+ else
+ return fontstruct->max_bounds.width;
+}
+
+static ImotFont* motFindFont(const char* foundry, const char *standardfont)
+{
+ char xlfd[1024];
+ XFontStruct* fontstruct;
+ int i, count = iupArrayCount(mot_fonts);
+ int is_underline = 0, is_strikeout = 0;
+
+ ImotFont* fonts = (ImotFont*)iupArrayGetData(mot_fonts);
+
+ /* Check if the standardfont already exists in cache */
+ for (i = 0; i < count; i++)
+ {
+ if (iupStrEqualNoCase(standardfont, fonts[i].standardfont))
+ return &fonts[i];
+ }
+
+ /* not found, create a new one */
+ if (standardfont[0] == '-')
+ {
+ fontstruct = XLoadQueryFont(iupmot_display, standardfont);
+ if (!fontstruct) return NULL;
+ strcpy(xlfd, standardfont);
+ }
+ else
+ {
+ int size = 0,
+ is_bold = 0,
+ is_italic = 0;
+ char typeface[1024];
+ const char* mapped_name;
+
+ if (!iupFontParsePango(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ return NULL;
+
+ mapped_name = iupFontGetXName(typeface);
+ if (mapped_name)
+ strcpy(typeface, mapped_name);
+
+ fontstruct = motLoadFont(foundry, typeface, size, is_bold, is_italic, xlfd);
+ if (!fontstruct) return NULL;
+ }
+
+ /* create room in the array */
+ fonts = (ImotFont*)iupArrayInc(mot_fonts);
+
+ strcpy(fonts[i].standardfont, standardfont);
+ strcpy(fonts[i].xlfd, xlfd);
+ fonts[i].fontstruct = fontstruct;
+ fonts[i].fontlist = motFontCreateRenderTable(fontstruct, is_underline, is_strikeout);
+ fonts[i].charwidth = motFontCalcCharWidth(fontstruct);
+ fonts[i].charheight = fontstruct->ascent + fontstruct->descent;
+
+ return &fonts[i];
+}
+
+char* iupdrvGetSystemFont(void)
+{
+ static char systemfont[200] = "";
+ ImotFont* motfont = NULL;
+ char* font = XGetDefault(iupmot_display, "Iup", "fontList");
+ if (font)
+ motfont = motFindFont(NULL, font);
+
+ if (!motfont)
+ {
+ font = "Fixed, 11";
+ motfont = motFindFont("misc", font);
+ }
+
+ strcpy(systemfont, font);
+ return systemfont;
+}
+
+char* iupmotFindFontList(XmFontList fontlist)
+{
+ int i, count = iupArrayCount(mot_fonts);
+ ImotFont* fonts = (ImotFont*)iupArrayGetData(mot_fonts);
+
+ /* Check if the standardfont already exists in cache */
+ for (i = 0; i < count; i++)
+ {
+ if (fontlist == fonts[i].fontlist)
+ return fonts[i].standardfont;
+ }
+
+ return NULL;
+}
+
+XmFontList iupmotGetFontList(const char* foundry, const char* value)
+{
+ ImotFont *motfont = motFindFont(foundry, value);
+ if (!motfont)
+ {
+ iupERROR1("Failed to create Font: %s", value);
+ return NULL;
+ }
+
+ return motfont->fontlist;
+}
+
+static ImotFont* motFontCreateNativeFont(Ihandle* ih, const char* value)
+{
+ ImotFont *motfont = motFindFont(iupAttribGet(ih, "FOUNDRY"), value);
+ if (!motfont)
+ {
+ iupERROR1("Failed to create Font: %s", value);
+ return NULL;
+ }
+
+ iupAttribSetStr(ih, "_IUPMOT_FONT", (char*)motfont);
+ iupAttribSetStr(ih, "XLFD", motfont->xlfd);
+ return motfont;
+}
+
+static ImotFont* motGetFont(Ihandle *ih)
+{
+ ImotFont* motfont = (ImotFont*)iupAttribGet(ih, "_IUPMOT_FONT");
+ if (!motfont)
+ motfont = motFontCreateNativeFont(ih, iupGetFontAttrib(ih));
+ return motfont;
+}
+
+char* iupmotGetFontListAttrib(Ihandle *ih)
+{
+ ImotFont* motfont = motGetFont(ih);
+ if (!motfont)
+ return NULL;
+ else
+ return (char*)motfont->fontlist;
+}
+
+char* iupmotGetFontStructAttrib(Ihandle *ih)
+{
+ ImotFont* motfont = motGetFont(ih);
+ if (!motfont)
+ return NULL;
+ else
+ return (char*)motfont->fontstruct;
+}
+
+char* iupmotGetFontIdAttrib(Ihandle *ih)
+{
+ ImotFont* motfont = motGetFont(ih);
+ if (!motfont)
+ return NULL;
+ else
+ return (char*)motfont->fontstruct->fid;
+}
+
+int iupdrvSetStandardFontAttrib(Ihandle* ih, const char* value)
+{
+ ImotFont *motfont = motFontCreateNativeFont(ih, value);
+ if (!motfont)
+ return 1;
+
+ /* If FONT is changed, must update the SIZE attribute */
+ iupBaseUpdateSizeFromFont(ih);
+
+ /* FONT attribute must be able to be set before mapping,
+ so the font is enable for size calculation. */
+ if (ih->handle && (ih->iclass->nativetype != IUP_TYPEVOID))
+ XtVaSetValues(ih->handle, XmNrenderTable, motfont->fontlist, NULL);
+
+ return 1;
+}
+
+int iupdrvFontGetStringWidth(Ihandle* ih, const char* str)
+{
+ XFontStruct* fontstruct;
+ int len;
+ char* line_end;
+
+ if (!str || str[0]==0)
+ return 0;
+
+ fontstruct = (XFontStruct*)iupmotGetFontStructAttrib(ih);
+ if (!fontstruct)
+ return 0;
+
+ line_end = strchr(str, '\n');
+ if (line_end)
+ len = line_end-str;
+ else
+ len = strlen(str);
+
+ return XTextWidth(fontstruct, str, len);
+}
+
+void iupdrvFontGetMultiLineStringSize(Ihandle* ih, const char* str, int *w, int *h)
+{
+ int num_lin, max_w;
+
+ ImotFont* motfont = motGetFont(ih);
+ if (!motfont)
+ {
+ if (w) *w = 0;
+ if (h) *h = 0;
+ return;
+ }
+
+ if (!str)
+ {
+ if (w) *w = 0;
+ if (h) *h = motfont->charheight * 1;
+ return;
+ }
+
+ max_w = 0;
+ num_lin = 1;
+ if (str[0])
+ {
+ int len, lw;
+ const char *nextstr;
+ const char *curstr = str;
+ do
+ {
+ nextstr = iupStrNextLine(curstr, &len);
+ lw = XTextWidth(motfont->fontstruct, curstr, len);
+ max_w = iupMAX(max_w, lw);
+
+ curstr = nextstr;
+ if (*nextstr)
+ num_lin++;
+ } while(*nextstr);
+ }
+
+ if (w) *w = max_w;
+ if (h) *h = motfont->charheight * num_lin;
+}
+
+
+void iupdrvFontGetCharSize(Ihandle* ih, int *charwidth, int *charheight)
+{
+ ImotFont* motfont = motGetFont(ih);
+ if (!motfont)
+ {
+ if (charwidth) *charwidth = 0;
+ if (charheight) *charheight = 0;
+ return;
+ }
+
+ if (charheight)
+ *charheight = motfont->charheight;
+
+ if (charwidth)
+ *charwidth = motfont->charwidth;
+}
+
+void iupdrvFontInit(void)
+{
+ mot_fonts = iupArrayCreate(50, sizeof(ImotFont));
+}
+
+void iupdrvFontFinish(void)
+{
+ int i, count = iupArrayCount(mot_fonts);
+ ImotFont* fonts = (ImotFont*)iupArrayGetData(mot_fonts);
+ for (i = 0; i < count; i++)
+ {
+ XmFontListFree(fonts[i].fontlist);
+ fonts[i].fontlist = NULL;
+ XFreeFont(iupmot_display, fonts[i].fontstruct);
+ fonts[i].fontstruct = NULL;
+ }
+ iupArrayDestroy(mot_fonts);
+}
diff --git a/iup/src/mot/iupmot_fontdlg.c b/iup/src/mot/iupmot_fontdlg.c
new file mode 100755
index 0000000..42767b2
--- /dev/null
+++ b/iup/src/mot/iupmot_fontdlg.c
@@ -0,0 +1,31 @@
+/** \file
+ * \brief IupFontDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drvinfo.h"
+#include "iup_dialog.h"
+
+#include "iupmot_drv.h"
+
+
+static int motFontDlgPopup(Ihandle* ih, int x, int y)
+{
+ (void)ih;
+ (void)x;
+ (void)y;
+ return IUP_ERROR;
+}
+
+void iupdrvFontDlgInitClass(Iclass* ic)
+{
+ ic->DlgPopup = motFontDlgPopup;
+}
diff --git a/iup/src/mot/iupmot_frame.c b/iup/src/mot/iupmot_frame.c
new file mode 100755
index 0000000..39de5d8
--- /dev/null
+++ b/iup/src/mot/iupmot_frame.c
@@ -0,0 +1,257 @@
+/** \file
+ * \brief Frame Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+#include <Xm/Frame.h>
+#include <Xm/Label.h>
+#include <Xm/BulletinB.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_dialog.h"
+#include "iup_image.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+void iupdrvFrameGetDecorOffset(Ihandle* ih, int *x, int *y)
+{
+ (void)ih;
+ *x = 0;
+ *y = 0;
+}
+
+static int motFrameSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color;
+
+ /* ignore given value, must use only from parent */
+ value = iupBaseNativeParentGetBgColor(ih);
+
+ color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ {
+ Widget title_label, child_manager;
+
+ iupmotSetBgColor(ih->handle, color);
+
+ child_manager = XtNameToWidget(ih->handle, "*child_manager");
+ iupmotSetBgColor(child_manager, color);
+
+ title_label = XtNameToWidget(ih->handle, "*title_label");
+ if (!title_label) return 1;
+ iupmotSetBgColor(title_label, color);
+
+ return 1;
+ }
+ return 0;
+}
+
+static int motFrameSetBackgroundAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color;
+
+ /* ignore given value, must use only from parent */
+ value = iupAttribGetInheritNativeParent(ih, "BACKGROUND");
+
+ color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ {
+ Widget title_label, child_manager;
+
+ iupmotSetBgColor(ih->handle, color);
+
+ child_manager = XtNameToWidget(ih->handle, "*child_manager");
+ iupmotSetBgColor(child_manager, color);
+
+ title_label = XtNameToWidget(ih->handle, "*title_label");
+ if (!title_label) return 1;
+ iupmotSetBgColor(title_label, color);
+
+ return 1;
+ }
+ else
+ {
+ Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0);
+ if (pixmap)
+ {
+ Widget child_manager = XtNameToWidget(ih->handle, "*child_manager");
+ Widget title_label = XtNameToWidget(ih->handle, "*title_label");
+
+ XtVaSetValues(child_manager, XmNbackgroundPixmap, pixmap, NULL);
+ if (title_label)
+ XtVaSetValues(title_label, XmNbackgroundPixmap, pixmap, NULL);
+
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static int motFrameSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ {
+ Widget title_label = XtNameToWidget(ih->handle, "*title_label");
+ if (!title_label) return 0;
+ XtVaSetValues(title_label, XmNforeground, color, NULL);
+ return 1;
+ }
+ return 0;
+}
+
+static int motFrameSetStandardFontAttrib(Ihandle* ih, const char* value)
+{
+ iupdrvSetStandardFontAttrib(ih, value);
+
+ if (ih->handle)
+ {
+ XmFontList fontlist;
+ Widget title_label = XtNameToWidget(ih->handle, "*title_label");
+ if (!title_label) return 1;
+
+ fontlist = (XmFontList)iupmotGetFontListAttrib(ih);
+ XtVaSetValues(title_label, XmNrenderTable, fontlist, NULL);
+ }
+
+ return 1;
+}
+
+static int motFrameSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ Widget title_label = XtNameToWidget(ih->handle, "*title_label");
+ if (title_label)
+ {
+ if (!value) value = "";
+ iupmotSetString(title_label, XmNlabelString, value);
+ return 1;
+ }
+ return 0;
+}
+
+static void* motFrameGetInnerNativeContainerHandleMethod(Ihandle* ih, Ihandle* child)
+{
+ (void)child;
+ return XtNameToWidget(ih->handle, "*child_manager");
+}
+
+static int motFrameMapMethod(Ihandle* ih)
+{
+ char *title;
+ int num_args = 0;
+ Arg args[20];
+ Widget child_manager;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ title = iupAttribGet(ih, "TITLE");
+
+ if (title)
+ iupAttribSetStr(ih, "_IUPFRAME_HAS_TITLE", "1");
+ else
+ {
+ char* value = iupAttribGetStr(ih, "SUNKEN");
+ if (iupStrBoolean(value))
+ iupmotSetArg(args, num_args, XmNshadowType, XmSHADOW_IN);
+ else
+ iupmotSetArg(args, num_args, XmNshadowType, XmSHADOW_ETCHED_IN);
+ }
+
+ /* Core */
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */
+ iupmotSetArg(args, num_args, XmNx, 0); /* x-position */
+ iupmotSetArg(args, num_args, XmNy, 0); /* y-position */
+ iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */
+ iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */
+ /* Manager */
+ iupmotSetArg(args, num_args, XmNshadowThickness, 2);
+ /* Frame */
+ iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* no shadow margins */
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0); /* no shadow margins */
+
+ ih->handle = XtCreateManagedWidget(
+ iupDialogGetChildIdStr(ih), /* child identifier */
+ xmFrameWidgetClass, /* widget class */
+ iupChildTreeGetNativeParentHandle(ih), /* widget parent */
+ args, num_args);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupDialogGetChildId(ih); /* must be after using the string */
+
+ if (title)
+ {
+ Widget title_label;
+ num_args = 0;
+ /* Label */
+ iupmotSetArg(args, num_args, XmNlabelType, XmSTRING);
+ iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* default padding */
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0);
+ /* Frame Constraint */
+ iupmotSetArg(args, num_args, XmNchildType, XmFRAME_TITLE_CHILD);
+ title_label = XtCreateManagedWidget("title_label", xmLabelWidgetClass, ih->handle, args, num_args);
+ iupmotSetString(title_label, XmNlabelString, title);
+ }
+
+ child_manager = XtVaCreateManagedWidget(
+ "child_manager",
+ xmBulletinBoardWidgetClass,
+ ih->handle,
+ /* Core */
+ XmNborderWidth, 0,
+ /* Manager */
+ XmNshadowThickness, 0,
+ XmNnavigationType, XmTAB_GROUP,
+ /* BulletinBoard */
+ XmNmarginWidth, 0,
+ XmNmarginHeight, 0,
+ XmNresizePolicy, XmRESIZE_NONE, /* no automatic resize of children */
+ /* Frame Constraint */
+ XmNchildType, XmFRAME_WORKAREA_CHILD,
+ NULL);
+
+ /* initialize the widget */
+ XtRealizeWidget(ih->handle);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvFrameInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motFrameMapMethod;
+ ic->GetInnerNativeContainerHandle = motFrameGetInnerNativeContainerHandleMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Overwrite Common */
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, motFrameSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED);
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motFrameSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motFrameSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, motFrameSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "TITLE", NULL, motFrameSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/mot/iupmot_globalattrib.c b/iup/src/mot/iupmot_globalattrib.c
new file mode 100755
index 0000000..9567cf5
--- /dev/null
+++ b/iup/src/mot/iupmot_globalattrib.c
@@ -0,0 +1,155 @@
+/** \file
+ * \brief Motif Driver implementation of iupdrvSetGlobal
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+
+#include <stdio.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvinfo.h"
+#include "iup_strmessage.h"
+
+#include "iupmot_drv.h"
+
+
+static void motGlobalSendKey(int key, int press)
+{
+ Window focus;
+ int revert_to;
+ XKeyEvent evt;
+ memset(&evt, 0, sizeof(XKeyEvent));
+ evt.display = iupmot_display;
+ evt.send_event = True;
+ evt.root = DefaultRootWindow(iupmot_display);
+
+ XGetInputFocus(iupmot_display, &focus, &revert_to);
+ evt.window = focus;
+
+ iupmotKeyEncode(key, &evt.keycode, &evt.state);
+ if (!evt.keycode)
+ return;
+
+ if (press & 0x01)
+ {
+ evt.type = KeyPress;
+ XSendEvent(iupmot_display, (Window)InputFocus, False, KeyPressMask, (XEvent*)&evt);
+ }
+
+ if (press & 0x02)
+ {
+ evt.type = KeyRelease;
+ XSendEvent(iupmot_display, (Window)InputFocus, False, KeyReleaseMask, (XEvent*)&evt);
+ }
+}
+
+int iupdrvSetGlobal(const char *name, const char *value)
+{
+ if (iupStrEqual(name, "LANGUAGE"))
+ {
+ iupStrMessageUpdateLanguage(value);
+ return 1;
+ }
+ if (iupStrEqual(name, "AUTOREPEAT"))
+ {
+ XKeyboardControl values;
+ if (iupStrBoolean(value))
+ values.auto_repeat_mode = 1;
+ else
+ values.auto_repeat_mode = 0;
+ XChangeKeyboardControl(iupmot_display, KBAutoRepeatMode, &values);
+ return 0;
+ }
+ if (iupStrEqual(name, "CURSORPOS"))
+ {
+ int x, y;
+ if (iupStrToIntInt(value, &x, &y, 'x') == 2)
+ XWarpPointer(iupmot_display,None,RootWindow(iupmot_display, iupmot_screen),0,0,0,0,x,y);
+ return 0;
+ }
+ if (iupStrEqual(name, "KEYPRESS"))
+ {
+ int key;
+ if (iupStrToInt(value, &key))
+ motGlobalSendKey(key, 0x01);
+ return 0;
+ }
+ if (iupStrEqual(name, "KEYRELEASE"))
+ {
+ int key;
+ if (iupStrToInt(value, &key))
+ motGlobalSendKey(key, 0x02);
+ return 0;
+ }
+ if (iupStrEqual(name, "KEY"))
+ {
+ int key;
+ if (iupStrToInt(value, &key))
+ motGlobalSendKey(key, 0x03);
+ return 0;
+ }
+ return 1;
+}
+
+char* iupdrvGetGlobal(const char *name)
+{
+ if (iupStrEqual(name, "CURSORPOS"))
+ {
+ int x, y;
+ char* str = iupStrGetMemory(50);
+ iupdrvGetCursorPos(&x, &y);
+ sprintf(str, "%dx%d", x, y);
+ return str;
+ }
+ if (iupStrEqual(name, "SHIFTKEY"))
+ {
+ char key[5];
+ iupdrvGetKeyState(key);
+ if (key[0] == 'S')
+ return "ON";
+ return "OFF";
+ }
+ if (iupStrEqual(name, "CONTROLKEY"))
+ {
+ char key[5];
+ iupdrvGetKeyState(key);
+ if (key[1] == 'C')
+ return "ON";
+ return "OFF";
+ }
+ if (iupStrEqual(name, "MODKEYSTATE"))
+ {
+ char *str = iupStrGetMemory(5);
+ iupdrvGetKeyState(str);
+ return str;
+ }
+ if (iupStrEqual(name, "SCREENSIZE"))
+ {
+ char *str = iupStrGetMemory(50);
+ int w, h;
+ iupdrvGetScreenSize(&w, &h);
+ sprintf(str, "%dx%d", w, h);
+ return str;
+ }
+ if (iupStrEqual(name, "FULLSIZE"))
+ {
+ char *str = iupStrGetMemory(50);
+ int w, h;
+ iupdrvGetFullSize(&w, &h);
+ sprintf(str, "%dx%d", w, h);
+ return str;
+ }
+ if (iupStrEqual(name, "SCREENDEPTH"))
+ {
+ char *str = iupStrGetMemory(50);
+ int bpp = iupdrvGetScreenDepth();
+ sprintf(str, "%d", bpp);
+ return str;
+ }
+ return NULL;
+}
diff --git a/iup/src/mot/iupmot_image.c b/iup/src/mot/iupmot_image.c
new file mode 100755
index 0000000..b0078d5
--- /dev/null
+++ b/iup/src/mot/iupmot_image.c
@@ -0,0 +1,397 @@
+/** \file
+ * \brief Image Resource.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+
+#include <stdio.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <memory.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_image.h"
+#include "iup_drvinfo.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+void iupdrvImageGetRawData(void* handle, unsigned char* imgdata)
+{
+ Pixmap pixmap = (Pixmap)handle;
+ int w, h, y, x, bpp;
+ XImage *xi;
+
+ if (!iupdrvImageGetInfo(handle, &w, &h, &bpp))
+ return;
+
+ if (bpp==8)
+ return;
+
+ xi = XGetImage(iupmot_display, pixmap, 0, 0, w, h, ULONG_MAX, ZPixmap);
+ if (xi)
+ {
+ /* planes are separated in imgdata */
+ int planesize = w*h;
+ unsigned char *r = imgdata,
+ *g = imgdata+planesize,
+ *b = imgdata+2*planesize;
+ for (y=0; y<h; y++)
+ {
+ int lineoffset = (h-1 - y)*w; /* imgdata is bottom up */
+ for (x=0; x<w; x++)
+ {
+ iupmotColorGetRGB(XGetPixel(xi, x, y), r + lineoffset+x, g + lineoffset+x, b + lineoffset+x);
+ }
+ }
+
+ XDestroyImage(xi);
+ }
+}
+
+void* iupdrvImageCreateImageRaw(int width, int height, int bpp, iupColor* colors, int colors_count, unsigned char *imgdata)
+{
+ int y, x;
+ Pixmap pixmap;
+ GC gc;
+
+ pixmap = XCreatePixmap(iupmot_display,
+ RootWindow(iupmot_display,iupmot_screen),
+ width, height, iupdrvGetScreenDepth());
+ if (!pixmap)
+ return NULL;
+
+ gc = XCreateGC(iupmot_display,pixmap,0,NULL);
+
+ /* Pixmap is top-bottom */
+ /* imgdata is bottom up */
+
+ if (bpp == 8)
+ {
+ Pixel color2pixel[256];
+ int i;
+ for (i=0;i<colors_count;i++)
+ color2pixel[i] = iupmotColorGetPixel(colors[i].r, colors[i].g, colors[i].b);
+
+ for (y=0;y<height;y++)
+ {
+ int lineoffset = (height-1 - y)*width; /* imgdata is bottom up */
+ for(x=0;x<width;x++)
+ {
+ unsigned long p = color2pixel[imgdata[lineoffset+x]];
+ XSetForeground(iupmot_display,gc,p);
+ XDrawPoint(iupmot_display,pixmap,gc,x,y);
+ }
+ }
+ }
+ else
+ {
+ /* planes are separated in imgdata */
+ int planesize = width*height;
+ unsigned char *r = imgdata,
+ *g = imgdata+planesize,
+ *b = imgdata+2*planesize;
+ for (y=0;y<height;y++)
+ {
+ int lineoffset = (height-1 - y)*width; /* imgdata is bottom up */
+ for(x=0;x<width;x++)
+ {
+ unsigned long p = iupmotColorGetPixel(r[lineoffset+x], g[lineoffset+x], b[lineoffset+x]);
+ XSetForeground(iupmot_display,gc,p);
+ XDrawPoint(iupmot_display,pixmap,gc,x,y);
+ }
+ }
+ }
+
+ XFreeGC(iupmot_display,gc);
+
+ return (void*)pixmap;
+}
+
+void* iupdrvImageCreateImage(Ihandle *ih, const char* bgcolor, int make_inactive)
+{
+ int y, x, bpp, bgcolor_depend = 0,
+ width = ih->currentwidth,
+ height = ih->currentheight;
+ unsigned char *imgdata = (unsigned char*)iupAttribGetStr(ih, "WID");
+ Pixmap pixmap;
+ unsigned char bg_r=0, bg_g=0, bg_b=0;
+ GC gc;
+ Pixel color2pixel[256];
+
+ bpp = iupAttribGetInt(ih, "BPP");
+
+ iupStrToRGB(bgcolor, &bg_r, &bg_g, &bg_b);
+
+ if (bpp == 8)
+ {
+ int i, colors_count = 0;
+ iupColor colors[256];
+
+ iupImageInitColorTable(ih, colors, &colors_count);
+
+ for (i=0;i<colors_count;i++)
+ {
+ if (colors[i].a == 0)
+ {
+ colors[i].r = bg_r;
+ colors[i].g = bg_g;
+ colors[i].b = bg_b;
+ colors[i].a = 255;
+ bgcolor_depend = 1;
+ }
+
+ if (make_inactive)
+ iupImageColorMakeInactive(&(colors[i].r), &(colors[i].g), &(colors[i].b),
+ bg_r, bg_g, bg_b);
+
+ color2pixel[i] = iupmotColorGetPixel(colors[i].r, colors[i].g, colors[i].b);
+ }
+ }
+
+ pixmap = XCreatePixmap(iupmot_display,
+ RootWindow(iupmot_display,iupmot_screen),
+ width, height, iupdrvGetScreenDepth());
+ if (!pixmap)
+ return NULL;
+
+ gc = XCreateGC(iupmot_display,pixmap,0,NULL);
+ for (y=0;y<height;y++)
+ {
+ for(x=0;x<width;x++)
+ {
+ unsigned long p;
+ if (bpp == 8)
+ p = color2pixel[imgdata[y*width+x]];
+ else
+ {
+ int channels = (bpp==24)? 3: 4;
+ unsigned char *pixel_data = imgdata + y*width*channels + x*channels;
+ unsigned char r = *(pixel_data),
+ g = *(pixel_data+1),
+ b = *(pixel_data+2);
+
+ if (bpp == 32)
+ {
+ unsigned char a = *(pixel_data+3);
+ if (a != 255)
+ {
+ r = iupALPHABLEND(r, bg_r, a);
+ g = iupALPHABLEND(g, bg_g, a);
+ b = iupALPHABLEND(b, bg_b, a);
+ bgcolor_depend = 1;
+ }
+ }
+
+ if (make_inactive)
+ iupImageColorMakeInactive(&r, &g, &b, bg_r, bg_g, bg_b);
+
+ p = iupmotColorGetPixel(r, g, b);
+ }
+
+ XSetForeground(iupmot_display,gc,p);
+ XDrawPoint(iupmot_display,pixmap,gc,x,y);
+ }
+ }
+ XFreeGC(iupmot_display,gc);
+
+ if (bgcolor_depend || make_inactive)
+ iupAttribSetStr(ih, "_IUP_BGCOLOR_DEPEND", "1");
+
+ return (void*)pixmap;
+}
+
+void* iupdrvImageCreateIcon(Ihandle *ih)
+{
+ return iupdrvImageCreateImage(ih, NULL, 0);
+}
+
+void* iupdrvImageCreateCursor(Ihandle *ih)
+{
+ int bpp,y,x,hx,hy,
+ width = ih->currentwidth,
+ height = ih->currentheight,
+ line_size = (width+7)/8,
+ size_bytes = line_size*height;
+ unsigned char *imgdata = (unsigned char*)iupAttribGetStr(ih, "WID");
+ char *sbits, *mbits, *sb, *mb;
+ Pixmap source, mask;
+ XColor fg, bg;
+ unsigned char r, g, b;
+ Cursor cursor;
+
+ bpp = iupAttribGetInt(ih, "BPP");
+ if (bpp > 8)
+ return NULL;
+
+ sbits = (char*)malloc(2*size_bytes);
+ if (!sbits) return NULL;
+ memset(sbits, 0, 2*size_bytes);
+ mbits = sbits + size_bytes;
+
+ sb = sbits;
+ mb = mbits;
+ for (y=0; y<height; y++)
+ {
+ for (x=0; x<width; x++)
+ {
+ int byte = x/8;
+ int bit = x%8;
+ int index = (int)imgdata[y*width+x];
+ /* index==0 is transparent */
+ if (index == 1)
+ sb[byte] = (char)(sb[byte] | (1<<bit));
+ if (index != 0)
+ mb[byte] = (char)(mb[byte] | (1<<bit));
+ }
+
+ sb += line_size;
+ mb += line_size;
+ }
+
+ r = 255; g = 255; b = 255;
+ iupStrToRGB(iupAttribGet(ih, "1"), &r, &g, &b );
+ fg.red = iupCOLOR8TO16(r);
+ fg.green = iupCOLOR8TO16(g);
+ fg.blue = iupCOLOR8TO16(b);
+ fg.flags = DoRed | DoGreen | DoBlue;
+
+ r = 0; g = 0; b = 0;
+ iupStrToRGB(iupAttribGet(ih, "2"), &r, &g, &b );
+ bg.red = iupCOLOR8TO16(r);
+ bg.green = iupCOLOR8TO16(g);
+ bg.blue = iupCOLOR8TO16(b);
+ bg.flags = DoRed | DoGreen | DoBlue;
+
+ hx=0; hy=0;
+ iupStrToIntInt(iupAttribGet(ih, "HOTSPOT"), &hx, &hy, ':');
+
+ source = XCreateBitmapFromData(iupmot_display,
+ RootWindow(iupmot_display,iupmot_screen),
+ sbits, width, height);
+ mask = XCreateBitmapFromData(iupmot_display,
+ RootWindow(iupmot_display,iupmot_screen),
+ mbits, width, height);
+
+ cursor = XCreatePixmapCursor(iupmot_display, source, mask, &fg, &bg, hx, hy);
+
+ free(sbits);
+ return (void*)cursor;
+}
+
+void* iupdrvImageCreateMask(Ihandle *ih)
+{
+ int bpp,y,x,
+ width = ih->currentwidth,
+ height = ih->currentheight,
+ line_size = (width+7)/8,
+ size_bytes = line_size*height;
+ unsigned char *imgdata = (unsigned char*)iupAttribGetStr(ih, "WID");
+ char *bits, *sb;
+ Pixmap mask;
+ unsigned char colors[256];
+
+ bpp = iupAttribGetInt(ih, "BPP");
+ if (bpp > 8)
+ return NULL;
+
+ bits = (char*)malloc(size_bytes);
+ if (!bits) return NULL;
+ memset(bits, 0, size_bytes);
+
+ iupImageInitNonBgColors(ih, colors);
+
+ sb = bits;
+ for (y=0; y<height; y++)
+ {
+ for (x=0; x<width; x++)
+ {
+ int byte = x/8;
+ int bit = x%8;
+ int index = (int)imgdata[y*width+x];
+ if (colors[index])
+ sb[byte] = (char)(sb[byte] | (1<<bit));
+ }
+
+ sb += line_size;
+ }
+
+ mask = XCreateBitmapFromData(iupmot_display,
+ RootWindow(iupmot_display,iupmot_screen),
+ bits, width, height);
+
+ free(bits);
+ return (void*)mask;
+}
+
+void* iupdrvImageLoad(const char* name, int type)
+{
+ if (type == IUPIMAGE_CURSOR)
+ {
+ Cursor cursor = 0;
+ int id;
+ if (iupStrToInt(name, &id))
+ cursor = XCreateFontCursor(iupmot_display, id);
+ return (void*)cursor;
+ }
+ else /* IUPIMAGE_IMAGE or IUPIMAGE_ICON */
+ {
+ Screen* screen = ScreenOfDisplay(iupmot_display, iupmot_screen);
+ Pixmap pixmap = XmGetPixmap(screen, (char*)name, BlackPixelOfScreen(screen), WhitePixelOfScreen(screen));
+ if (pixmap == XmUNSPECIFIED_PIXMAP)
+ {
+ unsigned int width, height;
+ int hotx, hoty;
+ pixmap = 0;
+ XReadBitmapFile(iupmot_display, RootWindow(iupmot_display,iupmot_screen), name, &width, &height, &pixmap, &hotx, &hoty);
+ }
+ return (void*)pixmap;
+ }
+}
+
+int iupdrvImageGetInfo(void* handle, int *w, int *h, int *bpp)
+{
+ Pixmap pixmap = (Pixmap)handle;
+ Window root;
+ int x, y;
+ unsigned int width, height, b, depth;
+ if (!XGetGeometry(iupmot_display, pixmap, &root, &x, &y, &width, &height, &b, &depth))
+ {
+ if (w) *w = 0;
+ if (h) *h = 0;
+ if (bpp) *bpp = 0;
+ return 0;
+ }
+ if (w) *w = width;
+ if (h) *h = height;
+ if (bpp) *bpp = iupImageNormBpp(depth);
+ return 1;
+}
+
+int iupdrvImageGetRawInfo(void* handle, int *w, int *h, int *bpp, iupColor* colors, int *colors_count)
+{
+ /* How to get the pallete? */
+ (void)colors;
+ (void)colors_count;
+ return iupdrvImageGetInfo(handle, w, h, bpp);
+}
+
+void iupdrvImageDestroy(void* handle, int type)
+{
+ if (type == IUPIMAGE_CURSOR)
+ XFreeCursor(iupmot_display, (Cursor)handle);
+ else
+ {
+ Screen* screen = ScreenOfDisplay(iupmot_display, iupmot_screen);
+ if (!XmDestroyPixmap(screen, (Pixmap)handle))
+ XFreePixmap(iupmot_display, (Pixmap)handle);
+ }
+}
+
diff --git a/iup/src/mot/iupmot_key.c b/iup/src/mot/iupmot_key.c
new file mode 100755
index 0000000..835b5d7
--- /dev/null
+++ b/iup/src/mot/iupmot_key.c
@@ -0,0 +1,425 @@
+/** \file
+ * \brief Motif Driver keyboard mapping
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+#include <X11/keysym.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+
+#include "iup_object.h"
+#include "iup_key.h"
+#include "iup_str.h"
+
+#include "iupmot_drv.h"
+
+typedef struct Imot2iupkey
+{
+ KeySym motcode;
+ int iupcode;
+ int s_iupcode;
+ int c_iupcode;
+ int m_iupcode;
+ int y_iupcode;
+} Imot2iupkey;
+
+static Imot2iupkey motkey_map[] = {
+
+{ XK_Escape, K_ESC, K_sESC, K_cESC, K_mESC ,K_yESC },
+{ XK_Pause, K_PAUSE, K_sPAUSE, K_cPAUSE, K_mPAUSE ,K_yPAUSE },
+{ XK_Print, K_Print, K_sPrint, K_cPrint, K_mPrint ,K_yPrint },
+{ XK_Menu, K_Menu, K_sMenu, K_cMenu, K_mMenu ,K_yMenu },
+
+{ XK_Home, K_HOME, K_sHOME, K_cHOME, K_mHOME ,K_yHOME },
+{ XK_Up, K_UP, K_sUP, K_cUP, K_mUP ,K_yUP },
+{ XK_Prior, K_PGUP, K_sPGUP, K_cPGUP, K_mPGUP ,K_yPGUP },
+{ XK_Left, K_LEFT, K_sLEFT, K_cLEFT, K_mLEFT ,K_yLEFT },
+{ XK_Begin, K_MIDDLE,K_sMIDDLE, K_cMIDDLE,K_mMIDDLE,K_yMIDDLE},
+{ XK_Right, K_RIGHT, K_sRIGHT, K_cRIGHT, K_mRIGHT ,K_yRIGHT },
+{ XK_End, K_END, K_sEND, K_cEND, K_mEND ,K_yEND },
+{ XK_Down, K_DOWN, K_sDOWN, K_cDOWN, K_mDOWN ,K_yDOWN },
+{ XK_Next, K_PGDN, K_sPGDN, K_cPGDN, K_mPGDN ,K_yPGDN },
+{ XK_Insert, K_INS, K_sINS, K_cINS, K_mINS ,K_yINS },
+{ XK_Delete, K_DEL, K_sDEL, K_cDEL, K_mDEL ,K_yDEL },
+{ XK_space, K_SP, K_sSP, K_cSP, K_mSP ,K_ySP },
+{ XK_Tab, K_TAB, K_sTAB, K_cTAB, K_mTAB ,K_yTAB },
+{ XK_Return, K_CR, K_sCR, K_cCR, K_mCR ,K_yCR },
+{ XK_BackSpace, K_BS, K_sBS, K_cBS, K_mBS ,K_yBS },
+
+{ XK_1, K_1, K_exclam, K_c1, K_m1, K_y1 },
+{ XK_2, K_2, K_at, K_c2, K_m2, K_y2 },
+{ XK_3, K_3, K_numbersign, K_c3, K_m3, K_y3 },
+{ XK_4, K_4, K_dollar, K_c4, K_m4, K_y4 },
+{ XK_5, K_5, K_percent, K_c5, K_m5, K_y5 },
+{ XK_6, K_6, K_circum, K_c6, K_m6, K_y6 },
+{ XK_7, K_7, K_ampersand, K_c7, K_m7, K_y7 },
+{ XK_8, K_8, K_asterisk, K_c8, K_m8, K_y8 },
+{ XK_9, K_9, K_parentleft, K_c9, K_m9, K_y9 },
+{ XK_0, K_0, K_parentright, K_c0, K_m0, K_y0 },
+
+{ XK_a, K_a, K_A, K_cA, K_mA, K_yA },
+{ XK_b, K_b, K_B, K_cB, K_mB, K_yB },
+{ XK_c, K_c, K_C, K_cC, K_mC, K_yC },
+{ XK_d, K_d, K_D, K_cD, K_mD, K_yD },
+{ XK_e, K_e, K_E, K_cE, K_mE, K_yE },
+{ XK_f, K_f, K_F, K_cF, K_mF, K_yF },
+{ XK_g, K_g, K_G, K_cG, K_mG, K_yG },
+{ XK_h, K_h, K_H, K_cH, K_mH, K_yH },
+{ XK_i, K_i, K_I, K_cI, K_mI, K_yI },
+{ XK_j, K_j, K_J, K_cJ, K_mJ, K_yJ },
+{ XK_k, K_k, K_K, K_cK, K_mK, K_yK },
+{ XK_l, K_l, K_L, K_cL, K_mL, K_yL },
+{ XK_m, K_m, K_M, K_cM, K_mM, K_yM },
+{ XK_n, K_n, K_N, K_cN, K_mN, K_yN },
+{ XK_o, K_o, K_O, K_cO, K_mO, K_yO },
+{ XK_p, K_p, K_P, K_cP, K_mP, K_yP },
+{ XK_q, K_q, K_Q, K_cQ, K_mQ, K_yQ },
+{ XK_r, K_r, K_R, K_cR, K_mR, K_yR },
+{ XK_s, K_s, K_S, K_cS, K_mS, K_yS },
+{ XK_t, K_t, K_T, K_cT, K_mT, K_yT },
+{ XK_u, K_u, K_U, K_cU, K_mU, K_yU },
+{ XK_v, K_v, K_V, K_cV, K_mV, K_yV },
+{ XK_w, K_w, K_W, K_cW, K_mW, K_yW },
+{ XK_x, K_x, K_X, K_cX, K_mX, K_yX },
+{ XK_y, K_y, K_Y, K_cY, K_mY, K_yY },
+{ XK_z, K_z, K_Z, K_cZ, K_mZ, K_yZ },
+
+{ XK_F1, K_F1, K_sF1, K_cF1, K_mF1, K_yF1 },
+{ XK_F2, K_F2, K_sF2, K_cF2, K_mF2, K_yF2 },
+{ XK_F3, K_F3, K_sF3, K_cF3, K_mF3, K_yF3 },
+{ XK_F4, K_F4, K_sF4, K_cF4, K_mF4, K_yF4 },
+{ XK_F5, K_F5, K_sF5, K_cF5, K_mF5, K_yF5 },
+{ XK_F6, K_F6, K_sF6, K_cF6, K_mF6, K_yF6 },
+{ XK_F7, K_F7, K_sF7, K_cF7, K_mF7, K_yF7 },
+{ XK_F8, K_F8, K_sF8, K_cF8, K_mF8, K_yF8 },
+{ XK_F9, K_F9, K_sF9, K_cF9, K_mF9, K_yF9 },
+{ XK_F10, K_F10, K_sF10, K_cF10, K_mF10, K_yF10 },
+{ XK_F11, K_F11, K_sF11, K_cF11, K_mF11, K_yF11 },
+{ XK_F12, K_F12, K_sF12, K_cF12, K_mF12, K_yF12 },
+
+{ XK_semicolon, K_semicolon, K_colon, K_cSemicolon, K_mSemicolon, K_ySemicolon },
+{ XK_equal, K_equal, K_plus, K_cEqual, K_mEqual, K_yEqual },
+{ XK_comma, K_comma, K_less, K_cComma, K_mComma, K_yComma },
+{ XK_minus, K_minus, K_underscore, K_cMinus, K_mMinus, K_yMinus },
+{ XK_period, K_period, K_greater, K_cPeriod, K_mPeriod, K_yPeriod },
+{ XK_slash, K_slash, K_question, K_cSlash, K_mSlash, K_ySlash },
+{ XK_grave, K_grave, K_tilde, 0, 0, 0 },
+{ XK_bracketleft, K_bracketleft, K_braceleft, K_cBracketleft, K_mBracketleft, K_yBracketleft },
+{ XK_backslash, K_backslash, K_bar, K_cBackslash, K_mBackslash, K_yBackslash },
+{ XK_bracketright,K_bracketright, K_braceright, K_cBracketright,K_mBracketright,K_yBracketright },
+{ XK_apostrophe, K_apostrophe, K_quotedbl, 0, 0, 0 },
+
+{ XK_KP_0, K_0, K_0, K_c0, K_m0, K_y0 },
+{ XK_KP_1, K_1, K_1, K_c1, K_m1, K_y1 },
+{ XK_KP_2, K_2, K_2, K_c2, K_m2, K_y2 },
+{ XK_KP_3, K_3, K_3, K_c3, K_m3, K_y3 },
+{ XK_KP_4, K_4, K_4, K_c4, K_m4, K_y4 },
+{ XK_KP_5, K_5, K_5, K_c5, K_m5, K_y5 },
+{ XK_KP_6, K_6, K_6, K_c6, K_m6, K_y6 },
+{ XK_KP_7, K_7, K_7, K_c7, K_m7, K_y7 },
+{ XK_KP_8, K_8, K_8, K_c8, K_m8, K_y8 },
+{ XK_KP_9, K_9, K_9, K_c9, K_m9, K_y9 },
+{ XK_KP_Multiply, K_asterisk, K_sAsterisk, K_cAsterisk, K_mAsterisk, K_yAsterisk },
+{ XK_KP_Add, K_plus, K_sPlus, K_cPlus, K_mPlus, K_yPlus },
+{ XK_KP_Subtract, K_minus, K_sMinus, K_cMinus, K_mMinus, K_yMinus },
+{ XK_KP_Decimal, K_period, K_sPeriod, K_cPeriod, K_mPeriod, K_yPeriod },
+{ XK_KP_Divide, K_slash, K_sSlash, K_cSlash, K_mSlash, K_ySlash },
+{ XK_KP_Separator, K_comma, K_sComma, K_cComma, K_mComma, K_yComma },
+
+{ XK_ccedilla, K_ccedilla, K_Ccedilla, K_cCcedilla, K_mCcedilla, K_yCcedilla },
+
+{ XK_dead_tilde, K_tilde, K_circum, 0, 0, 0 },
+{ XK_dead_acute, K_acute, K_grave, 0, 0, 0 },
+{ XK_dead_grave, K_grave, K_tilde, 0, 0, 0 },
+
+{ XK_KP_F1, K_F1, K_sF1, K_cF1, K_mF1, K_yF1 },
+{ XK_KP_F2, K_F2, K_sF2, K_cF2, K_mF2, K_yF2 },
+{ XK_KP_F3, K_F3, K_sF3, K_cF3, K_mF3, K_yF3 },
+{ XK_KP_F4, K_F4, K_sF4, K_cF4, K_mF4, K_yF4 },
+{ XK_KP_Space, K_SP, K_sSP, K_cSP, K_mSP ,K_ySP },
+{ XK_KP_Tab, K_TAB, K_sTAB, K_cTAB, K_mTAB ,K_yTAB },
+{ XK_KP_Equal, K_equal, 0, K_cEqual, K_mEqual, K_yEqual },
+
+{ XK_KP_Enter, K_CR, K_sCR, K_cCR, K_mCR, K_yCR },
+{ XK_KP_Home, K_HOME, K_sHOME, K_cHOME, K_mHOME, K_yHOME },
+{ XK_KP_Up, K_UP, K_sUP, K_cUP, K_mUP, K_yUP },
+{ XK_KP_Page_Up, K_PGUP, K_sPGUP, K_cPGUP, K_mPGUP, K_yPGUP },
+{ XK_KP_Left, K_LEFT, K_sLEFT, K_cLEFT, K_mLEFT, K_yLEFT },
+{ XK_KP_Begin, K_MIDDLE,K_sMIDDLE, K_cMIDDLE,K_mMIDDLE,K_yMIDDLE},
+{ XK_KP_Right, K_RIGHT, K_sRIGHT, K_cRIGHT, K_mRIGHT, K_yRIGHT },
+{ XK_KP_End, K_END, K_sEND, K_cEND, K_mEND, K_yEND },
+{ XK_KP_Down, K_DOWN, K_sDOWN, K_cDOWN, K_mDOWN, K_yDOWN },
+{ XK_KP_Page_Down, K_PGDN, K_sPGDN, K_cPGDN, K_mPGDN, K_yPGDN },
+{ XK_KP_Insert, K_INS, K_sINS, K_cINS, K_mINS, K_yINS },
+{ XK_KP_Delete, K_DEL, K_sDEL, K_cDEL, K_mDEL, K_yDEL }
+
+};
+
+void iupmotKeyEncode(int key, unsigned int *keyval, unsigned int *state)
+{
+ int i, iupcode = key & 0xFF; /* 0-255 interval */
+ int count = sizeof(motkey_map)/sizeof(motkey_map[0]);
+ for (i = 0; i < count; i++)
+ {
+ Imot2iupkey* key_map = &(motkey_map[i]);
+ if (key_map->iupcode == iupcode)
+ {
+ *keyval = XKeysymToKeycode(iupmot_display, key_map->motcode);
+ *state = 0;
+
+ if (iupcode != key)
+ {
+ if (key_map->c_iupcode == key)
+ *state = ControlMask;
+ else if (key_map->m_iupcode == key)
+ *state = Mod1Mask;
+ else if (key_map->y_iupcode == key)
+ *state = Mod4Mask;
+ else if (key_map->s_iupcode == key)
+ *state = ShiftMask;
+ }
+ return;
+ }
+ else if (key_map->s_iupcode == key) /* There are Shift keys bellow 256 */
+ {
+ *keyval = XKeysymToKeycode(iupmot_display, key_map->motcode);
+ *state = ShiftMask;
+ return;
+ }
+ }
+}
+
+static int motKeyMap2Iup(unsigned int state, int i)
+{
+ int code = 0;
+ if (state & ControlMask) /* Ctrl */
+ code = motkey_map[i].c_iupcode;
+ else if (state & Mod1Mask ||
+ state & Mod5Mask) /* Alt */
+ code = motkey_map[i].m_iupcode;
+ else if (state & Mod4Mask) /* Apple/Win */
+ code = motkey_map[i].y_iupcode;
+ else if (state & LockMask) /* CapsLock */
+ {
+ if ((state & ShiftMask) || !iupKeyCanCaps(motkey_map[i].iupcode))
+ return motkey_map[i].iupcode;
+ else
+ code = motkey_map[i].s_iupcode;
+ }
+ else if (state & ShiftMask) /* Shift */
+ code = motkey_map[i].s_iupcode;
+ else
+ return motkey_map[i].iupcode;
+
+ if (!code)
+ code = motkey_map[i].iupcode;
+
+ return code;
+}
+
+static int motKeyDecode(XKeyEvent *evt)
+{
+ int i;
+ KeySym motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0);
+ int count = sizeof(motkey_map)/sizeof(motkey_map[0]);
+
+ if ((evt->state & Mod2Mask) && /* NumLock */
+ (motcode >= XK_KP_Home) &&
+ (motcode <= XK_KP_Delete))
+ {
+ /* remap to numeric keys */
+ KeySym remap_numkey[] = {XK_KP_7, XK_KP_4, XK_KP_8, XK_KP_6, XK_KP_2, XK_KP_9, XK_KP_3, XK_KP_1, XK_KP_5, XK_KP_0, XK_KP_Decimal};
+ motcode = remap_numkey[motcode-XK_KP_Home];
+ }
+
+ for (i = 0; i < count; i++)
+ {
+ if (motkey_map[i].motcode == motcode)
+ return motKeyMap2Iup(evt->state, i);
+ }
+
+ return 0;
+}
+
+KeySym iupmotKeyCharToKeySym(char c)
+{
+ int i;
+ int count = sizeof(motkey_map)/sizeof(motkey_map[0]);
+
+ for (i = 0; i < count; i++)
+ {
+ if (motkey_map[i].iupcode == c)
+ return motkey_map[i].motcode;
+ if (motkey_map[i].s_iupcode == c)
+ {
+ if (motkey_map[i].motcode >= XK_a &&
+ motkey_map[i].motcode <= XK_z)
+ return motkey_map[i].motcode - (XK_a-XK_A);
+ }
+ }
+
+ return 0;
+}
+
+/* Discards keyrepeat by removing the keypress event from the queue.
+ * The pair keyrelease/keypress is always put together in the queue,
+ * by removing the keypress, we only worry about keyrelease. In case
+ * of a keyrelease, we ignore it if the next event is a keypress (which
+ * means repetition. Otherwise it is a real keyrelease.
+ *
+ * Returns 1 if the keypress is found in the queue and 0 otherwise.
+ */
+static int motKeyDiscardKeypressRepeat(XEvent *evt)
+{
+ XEvent ahead;
+ if (XEventsQueued(iupmot_display, QueuedAfterReading))
+ {
+ XPeekEvent(iupmot_display, &ahead);
+ if (ahead.type == KeyPress && ahead.xkey.window == evt->xkey.window
+ && ahead.xkey.keycode == evt->xkey.keycode && ahead.xkey.time == evt->xkey.time)
+ {
+ /* Pop off the repeated KeyPress and ignore */
+ XNextEvent(iupmot_display, evt);
+ /* Ignore the auto repeated KeyRelease/KeyPress pair */
+ return 1;
+ }
+ }
+ /* No KeyPress found */
+ return 0;
+}
+
+/* this is called only for canvas */
+void iupmotCanvasKeyReleaseEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont)
+{
+ if (motKeyDiscardKeypressRepeat(evt))
+ {
+ /* call key_press because it was removed from the queue */
+ iupmotKeyPressEvent(w, ih, evt, cont);
+ }
+ else
+ {
+ int result;
+ int code = motKeyDecode((XKeyEvent*)evt);
+ if (code == 0)
+ return;
+ result = iupKeyCallKeyPressCb(ih, code, 0);
+ if (result == IUP_CLOSE)
+ {
+ IupExitLoop();
+ return;
+ }
+ if (result == IUP_IGNORE)
+ {
+ *cont = False;
+ return;
+ }
+ }
+}
+
+void iupmotKeyPressEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont)
+{
+ int result;
+ int code = motKeyDecode((XKeyEvent*)evt);
+ if (code == 0)
+ return;
+
+ if ((((XKeyEvent*)evt)->state & Mod1Mask || ((XKeyEvent*)evt)->state & Mod5Mask)) /* Alt */
+ {
+ KeySym motcode = XKeycodeToKeysym(iupmot_display, ((XKeyEvent*)evt)->keycode, 0);
+ if (motcode < 128)
+ {
+ IFni cb;
+ Ihandle* dialog = IupGetDialog(ih);
+ char attrib[22] = "_IUPMOT_MNEMONIC_ _CB";
+ attrib[17] = (char)toupper(motcode);
+ cb = (IFni)IupGetCallback(dialog, attrib);
+ if (cb)
+ {
+ cb(dialog, attrib[17]);
+ return;
+ }
+ }
+ }
+
+ result = iupKeyCallKeyCb(ih, code);
+ if (result == IUP_CLOSE)
+ {
+ IupExitLoop();
+ return;
+ }
+ if (result == IUP_IGNORE)
+ {
+ *cont = False;
+ return;
+ }
+
+ /* in the previous callback the dialog could be destroyed */
+ if (iupObjectCheck(ih))
+ {
+ /* this is called only for canvas */
+ if (ih->iclass->nativetype==IUP_TYPECANVAS)
+ {
+ result = iupKeyCallKeyPressCb(ih, code, 1);
+ if (result == IUP_CLOSE)
+ {
+ IupExitLoop();
+ return;
+ }
+ if (result == IUP_IGNORE)
+ {
+ *cont = False;
+ return;
+ }
+ }
+
+ if (!iupKeyProcessNavigation(ih, code, ((XKeyEvent*)evt)->state & ShiftMask))
+ {
+ *cont = False;
+ return;
+ }
+ }
+
+ (void)w;
+}
+
+void iupmotButtonKeySetStatus(unsigned int state, unsigned int but, char* status, int doubleclick)
+{
+ if (state & ShiftMask)
+ iupKEYSETSHIFT(status);
+
+ if (state & ControlMask)
+ iupKEYSETCONTROL(status);
+
+ if ((state & Button1Mask) || but==Button1)
+ iupKEYSETBUTTON1(status);
+
+ if ((state & Button2Mask) || but==Button2)
+ iupKEYSETBUTTON2(status);
+
+ if ((state & Button3Mask) || but==Button3)
+ iupKEYSETBUTTON3(status);
+
+ if ((state & Button4Mask) || but==Button4)
+ iupKEYSETBUTTON4(status);
+
+ if ((state & Button5Mask) || but==Button5)
+ iupKEYSETBUTTON5(status);
+
+ if (state & Mod1Mask || state & Mod5Mask) /* Alt */
+ iupKEYSETALT(status);
+
+ if (state & Mod4Mask) /* Apple/Win */
+ iupKEYSETSYS(status);
+
+ if (doubleclick)
+ iupKEYSETDOUBLE(status);
+}
+
diff --git a/iup/src/mot/iupmot_label.c b/iup/src/mot/iupmot_label.c
new file mode 100755
index 0000000..52dfc9a
--- /dev/null
+++ b/iup/src/mot/iupmot_label.c
@@ -0,0 +1,256 @@
+/** \file
+ * \brief Label Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+#include <Xm/Label.h>
+#include <Xm/Separator.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_label.h"
+#include "iup_drv.h"
+#include "iup_image.h"
+
+#include "iupmot_drv.h"
+
+
+static int motLabelSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_LABEL_TEXT)
+ {
+ iupmotSetMnemonicTitle(ih, value);
+ return 1;
+ }
+
+ return 0;
+}
+
+static int motLabelSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ /* ignore given value, must use only from parent */
+ value = iupBaseNativeParentGetBgColor(ih);
+
+ if (iupdrvBaseSetBgColorAttrib(ih, value))
+ return 1;
+ return 0;
+}
+
+static int motLabelSetBackgroundAttrib(Ihandle* ih, const char* value)
+{
+ /* ignore given value, must use only from parent */
+ value = iupAttribGetInheritNativeParent(ih, "BACKGROUND");
+
+ if (iupdrvBaseSetBgColorAttrib(ih, value))
+ return 1;
+ else
+ {
+ Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0);
+ if (pixmap)
+ {
+ XtVaSetValues(ih->handle, XmNbackgroundPixmap, pixmap, NULL);
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static int motLabelSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT)
+ {
+ unsigned char align;
+ char value1[30]="", value2[30]="";
+
+ iupStrToStrStr(value, value1, value2, ':'); /* value2 is ignored, NOT supported in Motif */
+
+ if (iupStrEqualNoCase(value1, "ARIGHT"))
+ align = XmALIGNMENT_END;
+ else if (iupStrEqualNoCase(value1, "ACENTER"))
+ align = XmALIGNMENT_CENTER;
+ else /* "ALEFT" */
+ align = XmALIGNMENT_BEGINNING;
+
+ XtVaSetValues(ih->handle, XmNalignment, align, NULL);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int motLabelSetImageAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_LABEL_IMAGE)
+ {
+ iupmotSetPixmap(ih, value, XmNlabelPixmap, 0);
+
+ if (!iupdrvIsActive(ih))
+ {
+ if (!iupAttribGet(ih, "IMINACTIVE"))
+ {
+ /* if not active and IMINACTIVE is not defined
+ then automaticaly create one based on IMAGE */
+ iupmotSetPixmap(ih, value, XmNlabelInsensitivePixmap, 1); /* make_inactive */
+ }
+ }
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int motLabelSetImInactiveAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_LABEL_IMAGE)
+ {
+ iupmotSetPixmap(ih, value, XmNlabelInsensitivePixmap, 0);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int motLabelSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ /* update the inactive image if necessary */
+ if (ih->data->type == IUP_LABEL_IMAGE && !iupStrBoolean(value))
+ {
+ if (!iupAttribGet(ih, "IMINACTIVE"))
+ {
+ /* if not defined then automaticaly create one based on IMAGE */
+ char* name = iupAttribGet(ih, "IMAGE");
+ iupmotSetPixmap(ih, name, XmNlabelInsensitivePixmap, 1); /* make_inactive */
+ }
+ }
+
+ return iupBaseSetActiveAttrib(ih, value);
+}
+
+static int motLabelSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+ if (ih->handle && ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT)
+ {
+ XtVaSetValues(ih->handle, XmNmarginHeight, ih->data->vert_padding,
+ XmNmarginWidth, ih->data->horiz_padding, NULL);
+ }
+ return 0;
+}
+
+static int motLabelMapMethod(Ihandle* ih)
+{
+ char* value;
+ int num_args = 0;
+ Arg args[20];
+ WidgetClass widget_class;
+
+ value = iupAttribGet(ih, "SEPARATOR");
+ if (value)
+ {
+ widget_class = xmSeparatorWidgetClass;
+ if (iupStrEqualNoCase(value, "HORIZONTAL"))
+ {
+ ih->data->type = IUP_LABEL_SEP_HORIZ;
+ iupmotSetArg(args, num_args, XmNorientation, XmHORIZONTAL);
+ }
+ else /* "VERTICAL" */
+ {
+ ih->data->type = IUP_LABEL_SEP_VERT;
+ iupmotSetArg(args, num_args, XmNorientation, XmVERTICAL);
+ }
+ }
+ else
+ {
+ value = iupAttribGet(ih, "IMAGE");
+ widget_class = xmLabelWidgetClass;
+ if (value)
+ {
+ ih->data->type = IUP_LABEL_IMAGE;
+ iupmotSetArg(args, num_args, XmNlabelType, XmPIXMAP);
+ }
+ else
+ {
+ ih->data->type = IUP_LABEL_TEXT;
+ iupmotSetArg(args, num_args, XmNlabelType, XmSTRING);
+ }
+ }
+
+ /* Core */
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */
+ iupmotSetArg(args, num_args, XmNx, 0); /* x-position */
+ iupmotSetArg(args, num_args, XmNy, 0); /* y-position */
+ iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */
+ iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */
+ /* Primitive */
+ iupmotSetArg(args, num_args, XmNtraversalOn, False);
+ iupmotSetArg(args, num_args, XmNhighlightThickness, 0);
+ /* Label */
+ iupmotSetArg(args, num_args, XmNrecomputeSize, False); /* no automatic resize from text */
+ iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* default padding */
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0);
+ iupmotSetArg(args, num_args, XmNmarginTop, 0); /* no extra margins */
+ iupmotSetArg(args, num_args, XmNmarginLeft, 0);
+ iupmotSetArg(args, num_args, XmNmarginBottom, 0);
+ iupmotSetArg(args, num_args, XmNmarginRight, 0);
+
+ ih->handle = XtCreateManagedWidget(
+ iupDialogGetChildIdStr(ih), /* child identifier */
+ widget_class, /* widget class */
+ iupChildTreeGetNativeParentHandle(ih), /* widget parent */
+ args, num_args);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupDialogGetChildId(ih); /* must be after using the string */
+
+ /* Drag Source is enabled by default in label */
+ iupmotDisableDragSource(ih->handle);
+
+ /* initialize the widget */
+ XtRealizeWidget(ih->handle);
+
+ if (ih->data->type == IUP_LABEL_TEXT)
+ iupmotSetString(ih->handle, XmNlabelString, "");
+
+ return IUP_NOERROR;
+}
+
+void iupdrvLabelInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motLabelMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Overwrite Visual */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, motLabelSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BGCOLOR", iupmotGetBgColorAttrib, motLabelSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motLabelSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iupdrvBaseSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "TITLE", NULL, motLabelSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupLabel only */
+ iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, motLabelSetAlignmentAttrib, "ALEFT:ACENTER", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, motLabelSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "PADDING", iupLabelGetPaddingAttrib, motLabelSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+
+ /* IupLabel GTK and Motif only */
+ iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, motLabelSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/mot/iupmot_list.c b/iup/src/mot/iupmot_list.c
new file mode 100755
index 0000000..f8e73ed
--- /dev/null
+++ b/iup/src/mot/iupmot_list.c
@@ -0,0 +1,1404 @@
+/** \file
+ * \brief List Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+#include <Xm/List.h>
+#include <Xm/ComboBox.h>
+#include <Xm/ScrolledW.h>
+#include <Xm/TextF.h>
+#include <X11/keysym.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+#include <time.h>
+#include <limits.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_mask.h"
+#include "iup_key.h"
+#include "iup_list.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+static void motListComboBoxSelectionCallback(Widget w, Ihandle* ih, XmComboBoxCallbackStruct* call_data);
+
+
+void iupdrvListAddItemSpace(Ihandle* ih, int *h)
+{
+ if (ih->data->has_editbox)
+ *h += 1;
+ else
+ *h += 3;
+}
+
+void iupdrvListAddBorders(Ihandle* ih, int *x, int *y)
+{
+ int border_size = 2*4;
+ (*x) += border_size;
+ (*y) += border_size;
+
+ if (ih->data->is_dropdown)
+ {
+ if (ih->data->has_editbox)
+ {
+ /* extra border for the editbox */
+ int internal_border_size = 2*2;
+ (*x) += internal_border_size;
+ (*y) += internal_border_size;
+ }
+ }
+ else
+ {
+ if (ih->data->has_editbox)
+ (*y) += 2*2; /* internal border between editbox and list */
+ else
+ (*x) += 2; /* extra border for the simple list */
+ }
+}
+
+static int motListConvertXYToPos(Ihandle* ih, int x, int y)
+{
+ (void)x;
+ if (ih->data->has_editbox)
+ {
+ Widget cblist;
+ XtVaGetValues(ih->handle, XmNlist, &cblist, NULL);
+ return XmListYToPos(cblist, (Position)y); /* XmListYToPos returns start at 1 */
+ }
+ else
+ return XmListYToPos(ih->handle, (Position)y);
+}
+
+int iupdrvListGetCount(Ihandle* ih)
+{
+ int count;
+ XtVaGetValues(ih->handle, XmNitemCount, &count, NULL);
+ return count;
+}
+
+static void motListAddItem(Ihandle* ih, int pos, const char* value)
+{
+ XmString str = XmStringCreateLocalized((String)value);
+ /* The utility functions use 0=last 1=first */
+ if (ih->data->is_dropdown || ih->data->has_editbox)
+ XmComboBoxAddItem(ih->handle, str, pos+1, False);
+ else
+ XmListAddItem(ih->handle, str, pos+1);
+ XmStringFree(str);
+}
+
+static void motListAddSortedItem(Ihandle* ih, const char *value)
+{
+ char *text;
+ XmString *strlist;
+ int u_bound, l_bound = 0;
+
+ XtVaGetValues(ih->handle, XmNitemCount, &u_bound, XmNitems, &strlist, NULL);
+
+ u_bound--;
+ /* perform binary search */
+ while (u_bound >= l_bound)
+ {
+ int i = l_bound + (u_bound - l_bound)/2;
+ text = (char*)XmStringUnparse(strlist[i], NULL, XmCHARSET_TEXT, XmCHARSET_TEXT, NULL, 0, XmOUTPUT_ALL);
+ if (!text)
+ break;
+ if (strcmp (text, value) > 0)
+ u_bound = i-1; /* newtext comes before item */
+ else
+ l_bound = i+1; /* newtext comes after item */
+ XtFree(text);
+ }
+
+ motListAddItem(ih, l_bound, value);
+}
+
+void iupdrvListAppendItem(Ihandle* ih, const char* value)
+{
+ if (iupAttribGetBoolean(ih, "SORT"))
+ motListAddSortedItem(ih, value);
+ else
+ motListAddItem(ih, -1, value);
+}
+
+void iupdrvListInsertItem(Ihandle* ih, int pos, const char* value)
+{
+ if (iupAttribGetBoolean(ih, "SORT"))
+ motListAddSortedItem(ih, value);
+ else
+ motListAddItem(ih, pos, value);
+}
+
+void iupdrvListRemoveItem(Ihandle* ih, int pos)
+{
+ /* The utility functions use 0=last 1=first */
+ if (ih->data->is_dropdown || ih->data->has_editbox)
+ XmComboBoxDeletePos(ih->handle, pos+1);
+ else
+ XmListDeletePos(ih->handle, pos+1);
+}
+
+void iupdrvListRemoveAllItems(Ihandle* ih)
+{
+ if (ih->data->is_dropdown || ih->data->has_editbox)
+ {
+ Widget cblist;
+ XtVaGetValues(ih->handle, XmNlist, &cblist, NULL);
+ XmListDeleteAllItems(cblist);
+ XmComboBoxUpdate(ih->handle);
+ }
+ else
+ XmListDeleteAllItems(ih->handle);
+}
+
+
+/*********************************************************************************/
+
+
+static char* motListGetIdValueAttrib(Ihandle* ih, const char* name_id)
+{
+ int pos = iupListGetPos(ih, name_id);
+ if (pos != -1)
+ {
+ XmString* items;
+ XtVaGetValues(ih->handle, XmNitems, &items, NULL);
+ return iupmotConvertString(items[pos]);
+ }
+ return NULL;
+}
+
+static int motListSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ Widget sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (sb_win)
+ {
+ Pixel color;
+
+ /* ignore given value for the scrollbars, must use only from parent */
+ char* parent_value = iupBaseNativeParentGetBgColor(ih);
+
+ color = iupmotColorGetPixelStr(parent_value);
+ if (color != (Pixel)-1)
+ {
+ Widget sb = NULL;
+
+ iupmotSetBgColor(sb_win, color);
+
+ XtVaGetValues(sb_win, XmNverticalScrollBar, &sb, NULL);
+ if (sb) iupmotSetBgColor(sb, color);
+
+ XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb, NULL);
+ if (sb) iupmotSetBgColor(sb, color);
+ }
+
+ return iupdrvBaseSetBgColorAttrib(ih, value); /* use given value for contents */
+ }
+ else
+ {
+ char* parent_value;
+
+ /* use given value for Edit and List also */
+ Pixel color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ {
+ Widget cbedit, cblist, sb;
+
+ iupmotSetBgColor(ih->handle, color);
+
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ if (cbedit) iupmotSetBgColor(cbedit, color);
+
+ XtVaGetValues(ih->handle, XmNlist, &cblist, NULL);
+ if (cblist) iupmotSetBgColor(cblist, color);
+
+ XtVaGetValues(cblist, XmNverticalScrollBar, &sb, NULL);
+ if (sb) iupmotSetBgColor(sb, color);
+
+ XtVaGetValues(cblist, XmNhorizontalScrollBar, &sb, NULL);
+ if (sb) iupmotSetBgColor(sb, color);
+ }
+
+ /* but reset just the background, so the combobox will look like a button */
+ parent_value = iupBaseNativeParentGetBgColor(ih);
+
+ color = iupmotColorGetPixelStr(parent_value);
+ if (color != (Pixel)-1)
+ XtVaSetValues(ih->handle, XmNbackground, color, NULL);
+
+ return 1;
+ }
+}
+
+static int motListSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ {
+ XtVaSetValues(ih->handle, XmNforeground, color, NULL);
+
+ if (ih->data->is_dropdown || ih->data->has_editbox)
+ {
+ Widget w;
+ XtVaGetValues(ih->handle, XmNtextField, &w, NULL);
+ XtVaSetValues(w, XmNforeground, color, NULL);
+
+ XtVaGetValues(ih->handle, XmNlist, &w, NULL);
+ XtVaSetValues(w, XmNforeground, color, NULL);
+ }
+ }
+
+ return 1;
+}
+
+static char* motListGetValueAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ char *str, *xstr;
+ Widget cbedit;
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ xstr = XmTextFieldGetString(cbedit);
+ str = iupStrGetMemoryCopy(xstr);
+ XtFree(xstr);
+ return str;
+ }
+ else
+ {
+ if (ih->data->is_dropdown)
+ {
+ char* str;
+ int pos;
+ XtVaGetValues(ih->handle, XmNselectedPosition, &pos, NULL);
+ str = iupStrGetMemory(50);
+ sprintf(str, "%d", pos+1); /* IUP starts at 1 */
+ return str;
+ }
+ else
+ {
+ int *pos, sel_count;
+ if (XmListGetSelectedPos(ih->handle, &pos, &sel_count)) /* XmListGetSelectedPos starts at 1 */
+ {
+ if (!ih->data->is_multiple)
+ {
+ char* str = iupStrGetMemory(50);
+ sprintf(str, "%d", pos[0]);
+ XtFree((char*)pos);
+ return str;
+ }
+ else
+ {
+ int i, count;
+ char* str;
+ XtVaGetValues(ih->handle, XmNitemCount, &count, NULL);
+ str = iupStrGetMemory(count+1);
+ memset(str, '-', count);
+ str[count]=0;
+ for (i=0; i<sel_count; i++)
+ str[pos[i]-1] = '+';
+ XtFree((char*)pos);
+ return str;
+ }
+ }
+ }
+ }
+
+ return NULL;
+}
+
+static int motListSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->has_editbox)
+ {
+ Widget cbedit;
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ if (!value) value = "";
+
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); /* disable callbacks */
+
+ XmTextFieldSetString(cbedit, (char*)value);
+
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+ else
+ {
+ if (ih->data->is_dropdown)
+ {
+ int pos;
+ if (iupStrToInt(value, &pos)==1)
+ {
+ XtRemoveCallback(ih->handle, XmNselectionCallback, (XtCallbackProc)motListComboBoxSelectionCallback, (XtPointer)ih);
+
+ XtVaSetValues(ih->handle, XmNselectedPosition, pos-1, NULL); /* IUP starts at 1 */
+ iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos);
+
+ XtAddCallback(ih->handle, XmNselectionCallback, (XtCallbackProc)motListComboBoxSelectionCallback, (XtPointer)ih);
+ }
+ }
+ else
+ {
+ if (!ih->data->is_multiple)
+ {
+ int pos;
+ if (iupStrToInt(value, &pos)==1)
+ {
+ XmListSelectPos(ih->handle, pos, FALSE); /* XmListSelectPos starts at 1 */
+ iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos);
+ }
+ else
+ {
+ XmListDeselectAllItems(ih->handle);
+ iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL);
+ }
+ }
+ else
+ {
+ /* User has changed a multiple selection on a simple list. */
+ int i, count, len;
+
+ /* Clear all selections */
+ XmListDeselectAllItems(ih->handle);
+
+ if (!value)
+ {
+ iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL);
+ return 0;
+ }
+
+ XtVaGetValues(ih->handle, XmNitemCount, &count, NULL);
+ len = strlen(value);
+ if (len < count)
+ count = len;
+
+ XtVaSetValues(ih->handle, XmNselectionPolicy, XmMULTIPLE_SELECT, NULL);
+
+ /* update selection list */
+ for (i = 0; i<count; i++)
+ {
+ if (value[i]=='+')
+ XmListSelectPos(ih->handle, i+1, False); /* XmListSelectPos starts at 1 */
+ }
+
+ XtVaSetValues(ih->handle, XmNselectionPolicy, XmEXTENDED_SELECT,
+ XmNselectionMode, XmNORMAL_MODE, NULL); /* must also restore this */
+ iupAttribStoreStr(ih, "_IUPLIST_OLDVALUE", value);
+ }
+ }
+ }
+
+ return 0;
+}
+
+static int motListSetVisibleItemsAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->is_dropdown)
+ {
+ int count;
+ if (iupStrToInt(value, &count)==1)
+ XtVaSetValues(ih->handle, XmNvisibleItemCount, count, NULL);
+ }
+ return 1;
+}
+
+static int motListSetShowDropdownAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->is_dropdown)
+ {
+ if (iupStrBoolean(value))
+ {
+ XButtonEvent ev;
+ memset(&ev, 0, sizeof(XButtonEvent));
+ ev.type = ButtonPress;
+ ev.display = XtDisplay(ih->handle);
+ ev.send_event = True;
+ ev.root = RootWindow(iupmot_display, iupmot_screen);
+ ev.time = clock()*CLOCKS_PER_SEC;
+ ev.window = XtWindow(ih->handle);
+ ev.state = Button1Mask;
+ ev.button = Button1;
+ ev.same_screen = True;
+ XtCallActionProc(ih->handle, "CBDropDownList", (XEvent*)&ev, 0, 0 );
+ }
+ else
+ XtCallActionProc(ih->handle, "CBDisarm", 0, 0, 0 );
+ }
+ return 0;
+}
+
+static int motListSetTopItemAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->is_dropdown)
+ {
+ int pos = 1;
+ if (iupStrToInt(value, &pos))
+ {
+ if (ih->data->has_editbox)
+ {
+ Widget cblist;
+ XtVaGetValues(ih->handle, XmNlist, &cblist, NULL);
+ XtVaSetValues(cblist, XmNtopItemPosition, pos, NULL);
+ }
+ else
+ XtVaSetValues(ih->handle, XmNtopItemPosition, pos, NULL);
+ }
+ }
+ return 0;
+}
+
+static int motListSetSpacingAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->is_dropdown)
+ return 0;
+
+ if (!iupStrToInt(value, &ih->data->spacing))
+ ih->data->spacing = 0;
+
+ if (ih->handle)
+ {
+ if (ih->data->has_editbox)
+ {
+ Widget cblist;
+ XtVaGetValues(ih->handle, XmNlist, &cblist, NULL);
+ XtVaSetValues(cblist, XmNlistSpacing, ih->data->spacing*2,
+ XmNlistMarginWidth, ih->data->spacing,
+ XmNlistMarginHeight, ih->data->spacing,
+ NULL);
+ }
+ else
+ XtVaSetValues(ih->handle, XmNlistSpacing, ih->data->spacing*2,
+ XmNlistMarginWidth, ih->data->spacing,
+ XmNlistMarginHeight, ih->data->spacing,
+ NULL);
+ return 0;
+ }
+ else
+ return 1; /* store until not mapped, when mapped will be set again */
+}
+
+static int motListSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->has_editbox)
+ return 0;
+
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+ if (ih->handle)
+ {
+ Widget cbedit;
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XtVaSetValues(cbedit, XmNmarginHeight, ih->data->vert_padding,
+ XmNmarginWidth, ih->data->horiz_padding, NULL);
+ return 0;
+ }
+ else
+ return 1; /* store until not mapped, when mapped will be set again */
+}
+
+static int motListSetReadOnlyAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->has_editbox)
+ {
+ Widget cbedit;
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XtVaSetValues(cbedit, XmNeditable, iupStrBoolean(value)? False: True, NULL);
+ }
+ return 0;
+}
+
+static char* motListGetReadOnlyAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ Boolean editable;
+ Widget cbedit;
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XtVaGetValues(cbedit, XmNeditable, &editable, NULL);
+ if (editable)
+ return "YES";
+ else
+ return "NO";
+ }
+ else
+ return NULL;
+}
+
+static int motListSetInsertAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ return 0;
+
+ if (ih->data->has_editbox)
+ {
+ Widget cbedit;
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); /* disable callbacks */
+ XmTextFieldRemove(cbedit);
+ XmTextFieldInsert(cbedit, XmTextFieldGetInsertionPosition(cbedit), (char*)value);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+
+ return 0;
+}
+
+static int motListSetSelectedTextAttrib(Ihandle* ih, const char* value)
+{
+ XmTextPosition start, end;
+ Widget cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value)
+ return 0;
+
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ if (XmTextFieldGetSelectionPosition(cbedit, &start, &end) && start!=end)
+ {
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); /* disable callbacks */
+ XmTextFieldReplace(cbedit, start, end, (char*)value);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+
+ return 0;
+}
+
+static char* motListGetSelectedTextAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ char* selectedtext, *str;
+ Widget cbedit;
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ selectedtext = XmTextFieldGetSelection(cbedit);
+ str = iupStrGetMemoryCopy(selectedtext);
+ XtFree(selectedtext);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+static int motListSetAppendAttrib(Ihandle* ih, const char* value)
+{
+ if (value && ih->data->has_editbox)
+ {
+ XmTextPosition pos;
+ Widget cbedit;
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ pos = XmTextFieldGetLastPosition(cbedit);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); /* disable callbacks */
+ XmTextFieldInsert(cbedit, pos+1, (char*)value);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+ return 0;
+}
+
+static int motListSetSelectionAttrib(Ihandle* ih, const char* value)
+{
+ int start=1, end=1;
+ Widget cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value || iupStrEqualNoCase(value, "NONE"))
+ {
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XmTextFieldClearSelection(cbedit, CurrentTime);
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(value, "ALL"))
+ {
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XmTextFieldSetSelection(cbedit, (XmTextPosition)0, (XmTextPosition)XmTextFieldGetLastPosition(cbedit), CurrentTime);
+ return 0;
+ }
+
+ if (iupStrToIntInt(value, &start, &end, ':')!=2)
+ return 0;
+
+ if(start<1 || end<1)
+ return 0;
+
+ start--; /* IUP starts at 1 */
+ end--;
+
+ /* end is inside the selection, in IUP is outside */
+ end--;
+
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XmTextFieldSetSelection(cbedit, (XmTextPosition)start, (XmTextPosition)end, CurrentTime);
+
+ return 0;
+}
+
+static char* motListGetSelectionAttrib(Ihandle* ih)
+{
+ XmTextPosition start = 0, end = 0;
+ char* str;
+ Widget cbedit;
+ if (!ih->data->has_editbox)
+ return NULL;
+
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ if (!XmTextFieldGetSelectionPosition(cbedit, &start, &end) || start==end)
+ return NULL;
+
+ str = iupStrGetMemory(100);
+
+ /* end is inside the selection, in IUP is outside */
+ end++;
+
+ start++; /* IUP starts at 1 */
+ end++;
+ sprintf(str, "%d:%d", (int)start, (int)end);
+
+ return str;
+}
+
+static int motListSetSelectionPosAttrib(Ihandle* ih, const char* value)
+{
+ int start=0, end=0;
+ Widget cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value || iupStrEqualNoCase(value, "NONE"))
+ {
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XmTextFieldClearSelection(cbedit, CurrentTime);
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(value, "ALL"))
+ {
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XmTextFieldSetSelection(cbedit, (XmTextPosition)0, (XmTextPosition)XmTextFieldGetLastPosition(cbedit), CurrentTime);
+ return 0;
+ }
+
+ if (iupStrToIntInt(value, &start, &end, ':')!=2)
+ return 0;
+
+ if(start<0 || end<0)
+ return 0;
+
+ /* end is inside the selection, in IUP is outside */
+ end--;
+
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XmTextFieldSetSelection(cbedit, (XmTextPosition)start, (XmTextPosition)end, CurrentTime);
+
+ return 0;
+}
+
+static char* motListGetSelectionPosAttrib(Ihandle* ih)
+{
+ XmTextPosition start = 0, end = 0;
+ char* str;
+ Widget cbedit;
+ if (!ih->data->has_editbox)
+ return NULL;
+
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ if (!XmTextFieldGetSelectionPosition(cbedit, &start, &end) || start==end)
+ return NULL;
+
+ str = iupStrGetMemory(100);
+
+ /* end is inside the selection, in IUP is outside */
+ end++;
+
+ sprintf(str, "%d:%d", (int)start, (int)end);
+
+ return str;
+}
+
+static int motListSetCaretAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 1;
+ Widget cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ pos--; /* IUP starts at 1 */
+
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XmTextFieldSetInsertionPosition(cbedit, (XmTextPosition)pos);
+ XmTextFieldShowPosition(cbedit, (XmTextPosition)pos);
+
+ return 0;
+}
+
+static char* motListGetCaretAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ XmTextPosition pos;
+ Widget cbedit;
+ char* str = iupStrGetMemory(50);
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ pos = XmTextFieldGetInsertionPosition(cbedit);
+ pos++; /* IUP starts at 1 */
+ sprintf(str, "%d", (int)pos);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+static int motListSetCaretPosAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 0;
+ Widget cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 0) pos = 0;
+
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XmTextFieldSetInsertionPosition(cbedit, (XmTextPosition)pos);
+ XmTextFieldShowPosition(cbedit, (XmTextPosition)pos);
+
+ return 0;
+}
+
+static char* motListGetCaretPosAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ XmTextPosition pos;
+ Widget cbedit;
+ char* str = iupStrGetMemory(50);
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ pos = XmTextFieldGetInsertionPosition(cbedit);
+ sprintf(str, "%d", (int)pos);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+static int motListSetScrollToAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 1;
+ Widget cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 1) pos = 1;
+ pos--; /* return to Motif referece */
+
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XmTextFieldShowPosition(cbedit, (XmTextPosition)pos);
+
+ return 0;
+}
+
+static int motListSetScrollToPosAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 0;
+ Widget cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 0) pos = 0;
+
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XmTextFieldShowPosition(cbedit, (XmTextPosition)pos);
+
+ return 0;
+}
+
+static int motListSetNCAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!iupStrToInt(value, &ih->data->nc))
+ ih->data->nc = INT_MAX;
+
+ if (ih->handle)
+ {
+ Widget cbedit;
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XtVaSetValues(cbedit, XmNmaxLength, ih->data->nc, NULL);
+ }
+ return 0;
+}
+
+static int motListSetClipboardAttrib(Ihandle *ih, const char *value)
+{
+ Widget cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+
+ if (iupStrEqualNoCase(value, "COPY"))
+ {
+ char *str = XmTextFieldGetSelection(cbedit);
+
+ XmTextFieldCopy(cbedit, CurrentTime);
+
+ /* do it also for the X clipboard */
+ XStoreBytes(iupmot_display, str, strlen(str)+1);
+ XtFree(str);
+ }
+ else if (iupStrEqualNoCase(value, "CUT"))
+ {
+ char *str = XmTextFieldGetSelection(cbedit);
+
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+
+ XmTextFieldCut(cbedit, CurrentTime);
+
+ /* do it also for the X clipboard */
+ XStoreBytes(iupmot_display, str, strlen(str)+1);
+ XtFree(str);
+ XmTextFieldRemove(cbedit);
+
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+ else if (iupStrEqualNoCase(value, "PASTE"))
+ {
+ int size;
+ char* str = XFetchBytes(iupmot_display, &size);
+
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+
+ XmTextFieldPaste(cbedit); /* TODO: this could force 2 pastes, check in CDE */
+
+ /* do it also for the X clipboard */
+ XmTextFieldRemove(cbedit);
+ XmTextFieldInsert(cbedit, XmTextFieldGetInsertionPosition(cbedit), str);
+ XFree(str);
+
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+ else if (iupStrEqualNoCase(value, "CLEAR"))
+ {
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+ XmTextFieldRemove(cbedit);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+ return 0;
+}
+
+
+/*********************************************************************************/
+
+
+static void motListEditModifyVerifyCallback(Widget cbedit, Ihandle *ih, XmTextVerifyPtr text)
+{
+ int start, end, key = 0;
+ char *value, *new_value, *insert_value;
+ KeySym motcode = 0;
+ IFnis cb;
+
+ if (iupAttribGet(ih, "_IUPMOT_DISABLE_TEXT_CB"))
+ return;
+
+ cb = (IFnis)IupGetCallback(ih, "EDIT_CB");
+ if (!cb && !ih->data->mask)
+ return;
+
+ if (text->event && text->event->type == KeyPress)
+ {
+ unsigned int state = ((XKeyEvent*)text->event)->state;
+ if (state & ControlMask || /* Ctrl */
+ state & Mod1Mask ||
+ state & Mod5Mask || /* Alt */
+ state & Mod4Mask) /* Apple/Win */
+ return;
+
+ motcode = XKeycodeToKeysym(iupmot_display, ((XKeyEvent*)text->event)->keycode, 0);
+ }
+
+ value = XmTextFieldGetString(cbedit);
+ start = text->startPos;
+ end = text->endPos;
+ insert_value = text->text->ptr;
+
+ if (motcode == XK_Delete)
+ {
+ new_value = value;
+ iupStrRemove(value, start, end, 1);
+ }
+ else if (motcode == XK_BackSpace)
+ {
+ new_value = value;
+ iupStrRemove(value, start, end, -1);
+ }
+ else
+ {
+ if (!value)
+ new_value = iupStrDup(insert_value);
+ else if (insert_value)
+ new_value = iupStrInsert(value, insert_value, start, end);
+ else
+ new_value = value;
+ }
+
+ if (insert_value && insert_value[0]!=0 && insert_value[1]==0)
+ key = insert_value[0];
+
+ if (ih->data->mask && iupMaskCheck(ih->data->mask, new_value)==0)
+ {
+ if (new_value != value) free(new_value);
+ XtFree(value);
+ text->doit = False; /* abort processing */
+ return;
+ }
+
+ if (cb)
+ {
+ int cb_ret = cb(ih, key, (char*)new_value);
+ if (cb_ret==IUP_IGNORE)
+ text->doit = False; /* abort processing */
+ else if (cb_ret==IUP_CLOSE)
+ {
+ IupExitLoop();
+ text->doit = False; /* abort processing */
+ }
+ else if (cb_ret!=0 && key!=0 &&
+ cb_ret != IUP_DEFAULT && cb_ret != IUP_CONTINUE)
+ {
+ insert_value[0] = (char)cb_ret; /* replace key */
+ }
+ }
+
+ if (new_value != value) free(new_value);
+ XtFree(value);
+}
+
+static void motListEditMotionVerifyCallback(Widget w, Ihandle* ih, XmTextVerifyCallbackStruct* textverify)
+{
+ int pos;
+
+ IFniii cb = (IFniii)IupGetCallback(ih, "CARET_CB");
+ if (!cb) return;
+
+ pos = textverify->newInsert;
+
+ if (pos != ih->data->last_caret_pos)
+ {
+ ih->data->last_caret_pos = pos;
+ cb(ih, 1, pos+1, pos);
+ }
+
+ (void)w;
+}
+
+static void motListEditKeyPressEvent(Widget cbedit, Ihandle *ih, XKeyEvent *evt, Boolean *cont)
+{
+ *cont = True;
+ iupmotKeyPressEvent(cbedit, ih, (XEvent*)evt, cont);
+ if (*cont == False)
+ return;
+
+ if (evt->state & ControlMask) /* Ctrl */
+ {
+ KeySym motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0);
+ if (motcode == XK_c)
+ {
+ motListSetClipboardAttrib(ih, "COPY");
+ *cont = False;
+ return;
+ }
+ else if (motcode == XK_x)
+ {
+ motListSetClipboardAttrib(ih, "CUT");
+ *cont = False;
+ return;
+ }
+ else if (motcode == XK_v)
+ {
+ motListSetClipboardAttrib(ih, "PASTE");
+ *cont = False;
+ return;
+ }
+ else if (motcode == XK_a)
+ {
+ XmTextFieldSetSelection(cbedit, 0, XmTextFieldGetLastPosition(cbedit), CurrentTime);
+ *cont = False;
+ return;
+ }
+ }
+}
+
+static void motListEditValueChangedCallback(Widget w, Ihandle* ih, XmAnyCallbackStruct* valuechanged)
+{
+ if (iupAttribGet(ih, "_IUPMOT_DISABLE_TEXT_CB"))
+ return;
+
+ iupBaseCallValueChangedCb(ih);
+
+ (void)valuechanged;
+ (void)w;
+}
+
+static void motListDropDownPopupCallback(Widget w, Ihandle* ih, XtPointer call_data)
+{
+ IFni cb = (IFni)IupGetCallback(ih, "DROPDOWN_CB");
+ if (cb)
+ cb(ih, 1);
+ (void)w;
+ (void)call_data;
+}
+
+static void motListDropDownPopdownCallback(Widget w, Ihandle* ih, XtPointer call_data)
+{
+ IFni cb = (IFni)IupGetCallback(ih, "DROPDOWN_CB");
+ if (cb)
+ cb(ih, 0);
+ (void)w;
+ (void)call_data;
+}
+
+static void motListDefaultActionCallback(Widget w, Ihandle* ih, XmListCallbackStruct* call_data)
+{
+ if (call_data->event->type == ButtonPress || call_data->event->type == ButtonRelease)
+ {
+ IFnis cb = (IFnis) IupGetCallback(ih, "DBLCLICK_CB");
+ if (cb)
+ {
+ int pos = call_data->item_position; /* Here Motif already starts at 1 */
+ iupListSingleCallDblClickCallback(ih, cb, pos);
+ }
+ }
+
+ (void)w;
+}
+
+static void motListComboBoxSelectionCallback(Widget w, Ihandle* ih, XmComboBoxCallbackStruct* call_data)
+{
+ IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION");
+ if (cb)
+ {
+ int pos = call_data->item_position;
+ if (pos==0)
+ {
+ /* must check if it is really checked or it is for the edit box */
+ XmString* items;
+ XtVaGetValues(ih->handle, XmNitems, &items, NULL);
+ if (!XmStringCompare(call_data->item_or_text, items[0]))
+ return;
+ }
+ pos++; /* IUP starts at 1 */
+ iupListSingleCallActionCallback(ih, cb, pos);
+ }
+
+ if (!ih->data->has_editbox)
+ iupBaseCallValueChangedCb(ih);
+
+ (void)w;
+}
+
+static void motListBrowseSelectionCallback(Widget w, Ihandle* ih, XmListCallbackStruct* call_data)
+{
+ IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION");
+ if (cb)
+ {
+ int pos = call_data->item_position; /* Here Motif already starts at 1 */
+ iupListSingleCallActionCallback(ih, cb, pos);
+ }
+
+ if (!ih->data->has_editbox)
+ iupBaseCallValueChangedCb(ih);
+
+ (void)w;
+}
+
+static void motListExtendedSelectionCallback(Widget w, Ihandle* ih, XmListCallbackStruct* call_data)
+{
+ IFns multi_cb = (IFns)IupGetCallback(ih, "MULTISELECT_CB");
+ IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION");
+ if (multi_cb || cb)
+ {
+ int* pos = call_data->selected_item_positions;
+ int sel_count = call_data->selected_item_count;
+ int i;
+
+ /* In Motif, the position of item is "plus one".
+ "iupListMultipleCallActionCallback" works with the list of selected items from the zero position.
+ So, "minus one" here. */
+ for (i = 0; i < sel_count; i++)
+ pos[i] -= 1;
+
+ iupListMultipleCallActionCallback(ih, cb, multi_cb, pos, sel_count);
+ }
+
+ if (!ih->data->has_editbox)
+ iupBaseCallValueChangedCb(ih);
+
+ (void)w;
+}
+
+
+/*********************************************************************************/
+
+
+static int motListMapMethod(Ihandle* ih)
+{
+ int num_args = 0;
+ Arg args[30];
+ Widget parent = iupChildTreeGetNativeParentHandle(ih);
+ char* child_id = iupDialogGetChildIdStr(ih);
+
+ if (ih->data->is_dropdown || ih->data->has_editbox)
+ {
+ /* could not set XmNmappedWhenManaged to False because the list and the edit box where not displayed */
+ /* iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); */
+ iupmotSetArg(args, num_args, XmNx, 0); /* x-position */
+ iupmotSetArg(args, num_args, XmNy, 0); /* y-position */
+ iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */
+ iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */
+ iupmotSetArg(args, num_args, XmNmarginHeight, 0);
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0);
+
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ iupmotSetArg(args, num_args, XmNtraversalOn, True);
+ else
+ iupmotSetArg(args, num_args, XmNtraversalOn, False);
+
+ iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP);
+ iupmotSetArg(args, num_args, XmNhighlightThickness, 2);
+ iupmotSetArg(args, num_args, XmNshadowThickness, 2);
+
+ if (ih->data->has_editbox)
+ {
+ if (ih->data->is_dropdown)
+ iupmotSetArg(args, num_args, XmNcomboBoxType, XmDROP_DOWN_COMBO_BOX); /* hidden-list+edit */
+ else
+ iupmotSetArg(args, num_args, XmNcomboBoxType, XmCOMBO_BOX); /* visible-list+edit */
+ }
+ else
+ iupmotSetArg(args, num_args, XmNcomboBoxType, XmDROP_DOWN_LIST); /* hidden-list */
+
+ ih->handle = XtCreateManagedWidget(
+ child_id, /* child identifier */
+ xmComboBoxWidgetClass, /* widget class */
+ parent, /* widget parent */
+ args, num_args);
+ }
+ else
+ {
+ Widget sb_win;
+
+ /* Create the scrolled window */
+
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */
+ iupmotSetArg(args, num_args, XmNscrollingPolicy, XmAPPLICATION_DEFINED);
+ iupmotSetArg(args, num_args, XmNvisualPolicy, XmVARIABLE);
+ iupmotSetArg(args, num_args, XmNscrollBarDisplayPolicy, XmSTATIC); /* can NOT be XmAS_NEEDED because XmAPPLICATION_DEFINED */
+ iupmotSetArg(args, num_args, XmNspacing, 0); /* no space between scrollbars and text */
+ iupmotSetArg(args, num_args, XmNborderWidth, 0);
+ iupmotSetArg(args, num_args, XmNshadowThickness, 0);
+
+ sb_win = XtCreateManagedWidget(
+ child_id, /* child identifier */
+ xmScrolledWindowWidgetClass, /* widget class */
+ parent, /* widget parent */
+ args, num_args);
+
+ if (!sb_win)
+ return IUP_ERROR;
+
+ parent = sb_win;
+ child_id = "list";
+
+ /* Create the list */
+
+ num_args = 0;
+ iupmotSetArg(args, num_args, XmNx, 0); /* x-position */
+ iupmotSetArg(args, num_args, XmNy, 0); /* y-position */
+ iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */
+ iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */
+
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ iupmotSetArg(args, num_args, XmNtraversalOn, True);
+ else
+ iupmotSetArg(args, num_args, XmNtraversalOn, False);
+
+ iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP);
+ iupmotSetArg(args, num_args, XmNhighlightThickness, 2);
+ iupmotSetArg(args, num_args, XmNshadowThickness, 2);
+
+ iupmotSetArg(args, num_args, XmNlistMarginHeight, 0); /* default padding */
+ iupmotSetArg(args, num_args, XmNlistMarginWidth, 0);
+ iupmotSetArg(args, num_args, XmNlistSpacing, 0);
+ iupmotSetArg(args, num_args, XmNlistSizePolicy, XmCONSTANT); /* don't grow to fit, add scrollbar */
+
+ if (ih->data->is_multiple)
+ iupmotSetArg(args, num_args, XmNselectionPolicy, XmEXTENDED_SELECT);
+ else
+ iupmotSetArg(args, num_args, XmNselectionPolicy, XmBROWSE_SELECT);
+
+ if (iupAttribGetBoolean(ih, "AUTOHIDE"))
+ iupmotSetArg(args, num_args, XmNscrollBarDisplayPolicy, XmAS_NEEDED);
+ else
+ iupmotSetArg(args, num_args, XmNscrollBarDisplayPolicy, XmSTATIC);
+
+ ih->handle = XtCreateManagedWidget(
+ child_id, /* child identifier */
+ xmListWidgetClass, /* widget class */
+ parent, /* widget parent */
+ args, num_args);
+ }
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupDialogGetChildId(ih); /* must be after using the string */
+
+ if (ih->data->is_dropdown || ih->data->has_editbox)
+ {
+ Widget cbedit, cblist;
+ XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
+ XtVaGetValues(ih->handle, XmNlist, &cblist, NULL);
+
+ XtAddEventHandler(cbedit, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih);
+ XtAddEventHandler(cbedit, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(cbedit, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddCallback(cbedit, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih);
+
+ XtAddCallback(ih->handle, XmNselectionCallback, (XtCallbackProc)motListComboBoxSelectionCallback, (XtPointer)ih);
+
+ if (ih->data->has_editbox)
+ {
+ XtAddEventHandler(cbedit, KeyPressMask, False, (XtEventHandler)motListEditKeyPressEvent, (XtPointer)ih);
+ XtAddCallback(cbedit, XmNmodifyVerifyCallback, (XtCallbackProc)motListEditModifyVerifyCallback, (XtPointer)ih);
+ XtAddCallback(cbedit, XmNmotionVerifyCallback, (XtCallbackProc)motListEditMotionVerifyCallback, (XtPointer)ih);
+ XtAddCallback(cbedit, XmNvalueChangedCallback, (XtCallbackProc)motListEditValueChangedCallback, (XtPointer)ih);
+
+ /* Disable Drag Source */
+ iupmotDisableDragSource(cbedit);
+ }
+ else
+ XtAddEventHandler(cbedit, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih);
+
+ if (ih->data->is_dropdown)
+ {
+ XtVaSetValues(ih->handle, XmNvisibleItemCount, 5, NULL);
+ XtAddCallback(XtParent(XtParent(cblist)), XmNpopupCallback, (XtCallbackProc)motListDropDownPopupCallback, (XtPointer)ih);
+ XtAddCallback(XtParent(XtParent(cblist)), XmNpopdownCallback, (XtCallbackProc)motListDropDownPopdownCallback, (XtPointer)ih);
+ }
+ else
+ {
+ XtAddCallback(cblist, XmNdefaultActionCallback, (XtCallbackProc)motListDefaultActionCallback, (XtPointer)ih);
+ XtAddEventHandler(cblist, PointerMotionMask, False, (XtEventHandler)iupmotPointerMotionEvent, (XtPointer)ih);
+ XtAddEventHandler(cblist, ButtonPressMask|ButtonReleaseMask, False, (XtEventHandler)iupmotButtonPressReleaseEvent, (XtPointer)ih);
+
+ /* Disable Drag Source */
+ iupmotDisableDragSource(cblist);
+ }
+ }
+ else
+ {
+ iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)parent);
+ XtVaSetValues(parent, XmNworkWindow, ih->handle, NULL);
+
+ XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, PointerMotionMask, False, (XtEventHandler)iupmotPointerMotionEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, ButtonPressMask|ButtonReleaseMask, False, (XtEventHandler)iupmotButtonPressReleaseEvent, (XtPointer)ih);
+
+ XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih);
+ XtAddCallback (ih->handle, XmNbrowseSelectionCallback, (XtCallbackProc)motListBrowseSelectionCallback, (XtPointer)ih);
+ XtAddCallback (ih->handle, XmNextendedSelectionCallback, (XtCallbackProc)motListExtendedSelectionCallback, (XtPointer)ih);
+ XtAddCallback (ih->handle, XmNdefaultActionCallback, (XtCallbackProc)motListDefaultActionCallback, (XtPointer)ih);
+ }
+
+ /* Disable Drag Source */
+ iupmotDisableDragSource(ih->handle);
+
+ /* initialize the widget */
+ if (ih->data->is_dropdown || ih->data->has_editbox)
+ XtRealizeWidget(ih->handle);
+ else
+ XtRealizeWidget(parent);
+
+ if (IupGetGlobal("_IUP_RESET_TXTCOLORS"))
+ {
+ iupmotSetGlobalColorAttrib(ih->handle, XmNbackground, "TXTBGCOLOR");
+ iupmotSetGlobalColorAttrib(ih->handle, XmNforeground, "TXTFGCOLOR");
+ IupSetGlobal("_IUP_RESET_TXTCOLORS", NULL);
+ }
+
+ IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)motListConvertXYToPos);
+
+ iupListSetInitialItems(ih);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvListInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motListMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motListSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, motListSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT);
+
+ /* IupList only */
+ iupClassRegisterAttributeId(ic, "IDVALUE", motListGetIdValueAttrib, iupListSetIdValueAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUE", motListGetValueAttrib, motListSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VISIBLE_ITEMS", NULL, motListSetVisibleItemsAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "TOPITEM", NULL, motListSetTopItemAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOWDROPDOWN", NULL, motListSetShowDropdownAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPACING", iupListGetSpacingAttrib, motListSetSpacingAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+
+ iupClassRegisterAttribute(ic, "PADDING", iupListGetPaddingAttrib, motListSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "SELECTEDTEXT", motListGetSelectedTextAttrib, motListSetSelectedTextAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTION", motListGetSelectionAttrib, motListSetSelectionAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTIONPOS", motListGetSelectionPosAttrib, motListSetSelectionPosAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CARET", motListGetCaretAttrib, motListSetCaretAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CARETPOS", motListGetCaretPosAttrib, motListSetCaretPosAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "INSERT", NULL, motListSetInsertAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "APPEND", NULL, motListSetAppendAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "READONLY", motListGetReadOnlyAttrib, motListSetReadOnlyAttrib, NULL, NULL, IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "NC", iupListGetNCAttrib, motListSetNCAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "CLIPBOARD", NULL, motListSetClipboardAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SCROLLTO", NULL, motListSetScrollToAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SCROLLTOPOS", NULL, motListSetScrollToPosAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/mot/iupmot_loop.c b/iup/src/mot/iupmot_loop.c
new file mode 100755
index 0000000..828ddcd
--- /dev/null
+++ b/iup/src/mot/iupmot_loop.c
@@ -0,0 +1,108 @@
+/** \file
+ * \brief Motif Message Loop
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+
+#include <Xm/Xm.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iupmot_drv.h"
+
+
+/* local variables */
+static int mot_mainloop = 0;
+static int mot_exitmainloop = 0;
+static IFidle mot_idle_cb = NULL;
+static XtWorkProcId mot_idle_id;
+
+
+static Boolean motIdlecbWorkProc(XtPointer client_data)
+{
+ (void)client_data;
+ if (mot_idle_cb)
+ {
+ int ret = mot_idle_cb();
+ if (ret == IUP_CLOSE)
+ {
+ mot_idle_cb = NULL;
+ IupExitLoop();
+ return True; /* removes the working procedure */
+ }
+ if (ret == IUP_IGNORE)
+ {
+ mot_idle_cb = NULL;
+ return True; /* removes the working procedure */
+ }
+
+ return False; /* keeps the working procedure */
+ }
+
+ return True; /* removes the working procedure */
+}
+
+void iupdrvSetIdleFunction(Icallback f)
+{
+ if (mot_idle_cb)
+ XtRemoveWorkProc(mot_idle_id);
+
+ mot_idle_cb = (IFidle)f;
+
+ if (mot_idle_cb)
+ mot_idle_id = XtAppAddWorkProc(iupmot_appcontext, motIdlecbWorkProc, NULL);
+}
+
+static int motLoopStep(void)
+{
+ XtAppProcessEvent(iupmot_appcontext, XtIMAll);
+ return (mot_exitmainloop)? IUP_CLOSE : IUP_DEFAULT;
+}
+
+void IupExitLoop(void)
+{
+ mot_exitmainloop = 1;
+}
+
+int IupMainLoopLevel(void)
+{
+ return mot_mainloop;
+}
+
+int IupMainLoop(void)
+{
+ mot_mainloop++;
+ mot_exitmainloop = 0;
+
+ while (!mot_exitmainloop)
+ {
+ if (motLoopStep() == IUP_CLOSE)
+ break;
+ }
+
+ mot_exitmainloop = 0;
+ mot_mainloop--;
+ return IUP_NOERROR;
+}
+
+int IupLoopStep(void)
+{
+ if (!XtAppPending(iupmot_appcontext))
+ return IUP_DEFAULT;
+
+ return motLoopStep();
+}
+
+void IupFlush(void)
+{
+ while (XPending(iupmot_display) != 0)
+ {
+ if (motLoopStep() == IUP_CLOSE)
+ break;
+ }
+
+ XFlush(iupmot_display);
+}
diff --git a/iup/src/mot/iupmot_menu.c b/iup/src/mot/iupmot_menu.c
new file mode 100755
index 0000000..be9b953
--- /dev/null
+++ b/iup/src/mot/iupmot_menu.c
@@ -0,0 +1,457 @@
+/** \file
+ * \brief Menu Resources
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+#include <Xm/RowColumn.h>
+#include <Xm/Separator.h>
+#include <Xm/CascadeB.h>
+#include <Xm/ToggleB.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_label.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_image.h"
+#include "iup_menu.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+static int mot_menu_exitloop = 0;
+
+int iupdrvMenuPopup(Ihandle* ih, int x, int y)
+{
+ XButtonEvent ev;
+ ev.x_root = x;
+ ev.y_root = y;
+ XmMenuPosition(ih->handle, &ev);
+
+ XtManageChild(ih->handle);
+
+ mot_menu_exitloop = 0;
+ while (!mot_menu_exitloop)
+ XtAppProcessEvent(iupmot_appcontext, XtIMAll);
+ mot_menu_exitloop = 0;
+
+ return IUP_NOERROR;
+}
+
+int iupdrvMenuGetMenuBarSize(Ihandle* ih)
+{
+ int ch;
+ iupdrvFontGetCharSize(ih, NULL, &ch);
+ return 5 + ch + 5;
+}
+
+
+/*******************************************************************************************/
+
+
+static void motItemActivateCallback(Widget w, Ihandle* ih, XtPointer call_data)
+{
+ Icallback cb;
+
+ if (XmIsToggleButton(ih->handle) && !iupAttribGetBoolean(ih, "AUTOTOGGLE") && !iupAttribGetBoolean(ih->parent, "RADIO"))
+ {
+ /* Motif by default will do autotoggle */
+ XmToggleButtonSetState(ih->handle, !XmToggleButtonGetState(ih->handle),0);
+ }
+
+ cb = IupGetCallback(ih, "ACTION");
+ if (cb && cb(ih)==IUP_CLOSE)
+ IupExitLoop();
+
+ (void)w;
+ (void)call_data;
+}
+
+static void motItemArmCallback(Widget w, Ihandle* ih, XtPointer call_data)
+{
+ Icallback cb = IupGetCallback(ih, "HIGHLIGHT_CB");
+ if (cb)
+ cb(ih);
+
+ (void)w;
+ (void)call_data;
+}
+
+static void motMenuMapCallback(Widget w, Ihandle* ih, XtPointer call_data)
+{
+ Icallback cb = IupGetCallback(ih, "OPEN_CB");
+ if (!cb && ih->parent) cb = (Icallback)IupGetCallback(ih->parent, "OPEN_CB"); /* check also in the Submenu */
+ if (cb) cb(ih);
+
+ (void)w;
+ (void)call_data;
+}
+
+static void motMenuUnmapCallback(Widget w, Ihandle* ih, XtPointer call_data)
+{
+ Icallback cb = IupGetCallback(ih, "MENUCLOSE_CB");
+ if (!cb && ih->parent) cb = (Icallback)IupGetCallback(ih->parent, "MENUCLOSE_CB"); /* check also in the Submenu */
+ if (cb) cb(ih);
+
+ (void)w;
+ (void)call_data;
+}
+
+static void motPopupMenuUnmapCallback(Widget w, Ihandle* ih, XtPointer call_data)
+{
+ motMenuUnmapCallback(w, ih, call_data);
+ mot_menu_exitloop = 1;
+}
+
+
+/*******************************************************************************************/
+
+
+static void motMenuUnMapMethod(Ihandle* ih)
+{
+ if (iupMenuIsMenuBar(ih))
+ XtDestroyWidget(ih->handle);
+ else
+ XtDestroyWidget(XtParent(ih->handle)); /* in this case the RowColumn widget is a child of a MenuShell. */
+}
+
+static int motMenuMapMethod(Ihandle* ih)
+{
+ int num_args = 0;
+ Arg args[30];
+
+ if (iupMenuIsMenuBar(ih))
+ {
+ /* top level menu used for MENU attribute in IupDialog (a menu bar) */
+
+ ih->handle = XtVaCreateManagedWidget(
+ iupMenuGetChildIdStr(ih),
+ xmRowColumnWidgetClass,
+ iupChildTreeGetNativeParentHandle(ih),
+ XmNrowColumnType, XmMENU_BAR,
+ XmNmarginHeight, 0,
+ XmNmarginWidth, 0,
+ XmNresizeWidth, False,
+ NULL);
+ if (!ih->handle)
+ return IUP_ERROR;
+ }
+ else
+ {
+ /* all XmCreate* functions here, also create RowColumn Widgets. */
+
+ if (ih->parent)
+ {
+ /* parent is a submenu */
+
+ if (iupAttribGetBoolean(ih, "RADIO"))
+ {
+ iupmotSetArg(args, num_args, XmNpacking, XmPACK_COLUMN);
+ iupmotSetArg(args, num_args, XmNradioBehavior, TRUE);
+ }
+
+ ih->handle = XmCreatePulldownMenu(
+ ih->parent->handle,
+ iupMenuGetChildIdStr(ih),
+ args,
+ num_args);
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ /* update the CascadeButton */
+ XtVaSetValues(ih->parent->handle, XmNsubMenuId, ih->handle, NULL);
+
+ XtAddCallback(ih->handle, XmNmapCallback, (XtCallbackProc)motMenuMapCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNunmapCallback, (XtCallbackProc)motMenuUnmapCallback, (XtPointer)ih);
+ }
+ else
+ {
+ /* top level menu used for IupPopup */
+
+ iupmotSetArg(args, num_args, XmNpopupEnabled, XmPOPUP_AUTOMATIC);
+
+ ih->handle = XmCreatePopupMenu(
+ iupmot_appshell,
+ iupMenuGetChildIdStr(ih),
+ args,
+ num_args);
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ XtAddCallback(ih->handle, XmNmapCallback, (XtCallbackProc)motMenuMapCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNunmapCallback, (XtCallbackProc)motPopupMenuUnmapCallback, (XtPointer)ih);
+ }
+ }
+
+ ih->serial = iupMenuGetChildId(ih); /* must be after using the string */
+
+ return IUP_NOERROR;
+}
+
+void iupdrvMenuInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motMenuMapMethod;
+ ic->UnMap = motMenuUnMapMethod;
+
+ /* Used by iupdrvMenuGetMenuBarSize */
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, NULL, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_DEFAULT); /* use inheritance to retrieve standard fonts */
+
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+}
+
+
+/*******************************************************************************************/
+
+
+static int motItemSetTitleImageAttrib(Ihandle* ih, const char* value)
+{
+ iupmotSetPixmap(ih, value, XmNlabelPixmap, 0);
+ return 1;
+}
+
+static int motItemSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ char *str;
+
+ if (!value)
+ {
+ str = " ";
+ value = str;
+ }
+ else
+ str = iupMenuProcessTitle(ih, value);
+
+ if (XmIsToggleButton(ih->handle))
+ {
+ char *p = strchr(str, '\t');
+ if (p)
+ {
+ int offset = (p-str);
+ char* new_value = iupStrDup(str);
+ char* acc_value = new_value + offset + 1;
+ new_value[offset] = 0;
+ iupmotSetMnemonicTitle(ih, new_value);
+ iupmotSetString(ih->handle, XmNacceleratorText, acc_value);
+ free(new_value);
+
+ if (str != value) free(str);
+ return 1;
+ }
+ }
+
+ iupmotSetMnemonicTitle(ih, str);
+
+ if (str != value) free(str);
+ return 1;
+}
+
+static int motItemSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (XmIsToggleButton(ih->handle))
+ {
+ if (iupAttribGetBoolean(ih->parent, "RADIO"))
+ value = "ON";
+
+ XmToggleButtonSetState(ih->handle, iupStrBoolean(value),0);
+ }
+ return 0;
+}
+
+static char* motItemGetValueAttrib(Ihandle* ih)
+{
+ if (XmIsToggleButton(ih->handle) && XmToggleButtonGetState(ih->handle))
+ return "ON";
+ else
+ return "OFF";
+}
+
+static int motItemMapMethod(Ihandle* ih)
+{
+ int pos;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ /* Menu bar can contain only CascadeButtons */
+ if (iupMenuIsMenuBar(ih->parent))
+ {
+ ih->handle = XtVaCreateManagedWidget(
+ iupMenuGetChildIdStr(ih),
+ xmCascadeButtonWidgetClass,
+ ih->parent->handle,
+ NULL);
+
+ XtAddCallback(ih->handle, XmNactivateCallback, (XtCallbackProc)motItemActivateCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNcascadingCallback, (XtCallbackProc)motItemArmCallback, (XtPointer)ih);
+ }
+ else
+ {
+ int num_args = 0;
+ Arg args[10];
+
+ if (iupAttribGetBoolean(ih->parent, "RADIO"))
+ {
+ iupmotSetArg(args, num_args, XmNtoggleMode, XmTOGGLE_BOOLEAN);
+ iupmotSetArg(args, num_args, XmNindicatorType, XmONE_OF_MANY_ROUND);
+ iupmotSetArg(args, num_args, XmNindicatorOn, XmINDICATOR_CHECK_BOX);
+ iupmotSetArg(args, num_args, XmNindicatorSize, 13);
+ iupmotSetArg(args, num_args, XmNselectColor, iupmotColorGetPixel(0, 0, 0));
+ }
+ else
+ {
+ if (iupAttribGetBoolean(ih, "HIDEMARK"))
+ iupmotSetArg(args, num_args, XmNindicatorOn, XmINDICATOR_NONE);
+ else
+ iupmotSetArg(args, num_args, XmNindicatorOn, XmINDICATOR_CHECK);
+ iupmotSetArg(args, num_args, XmNlabelType, iupAttribGet(ih, "TITLEIMAGE")? XmPIXMAP: XmSTRING);
+ }
+
+ ih->handle = XtCreateManagedWidget(
+ iupMenuGetChildIdStr(ih),
+ xmToggleButtonWidgetClass,
+ ih->parent->handle,
+ args,
+ num_args);
+
+ XtAddCallback(ih->handle, XmNvalueChangedCallback, (XtCallbackProc)motItemActivateCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNarmCallback, (XtCallbackProc)motItemArmCallback, (XtPointer)ih);
+ }
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupMenuGetChildId(ih); /* must be after using the string */
+
+ XtAddCallback (ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih);
+
+ pos = IupGetChildPos(ih->parent, ih);
+ XtVaSetValues(ih->handle, XmNpositionIndex, pos, NULL); /* RowColumn Constraint */
+
+ iupUpdateStandardFontAttrib(ih);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvItemInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motItemMapMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Common */
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, iupdrvSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); /* use inheritance to retrieve standard fonts */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iupBaseSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* IupItem only */
+ iupClassRegisterAttribute(ic, "VALUE", motItemGetValueAttrib, motItemSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TITLE", NULL, motItemSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TITLEIMAGE", NULL, motItemSetTitleImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupItem Gtk and Motif only */
+ iupClassRegisterAttribute(ic, "HIDEMARK", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED);
+}
+
+
+/*******************************************************************************************/
+
+
+static int motSubmenuMapMethod(Ihandle* ih)
+{
+ int pos;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ ih->handle = XtVaCreateManagedWidget(
+ iupMenuGetChildIdStr(ih),
+ xmCascadeButtonWidgetClass,
+ ih->parent->handle,
+ NULL);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupMenuGetChildId(ih); /* must be after using the string */
+
+ pos = IupGetChildPos(ih->parent, ih);
+ XtVaSetValues(ih->handle, XmNpositionIndex, pos, NULL); /* RowColumn Constraint */
+
+ XtAddCallback(ih->handle, XmNcascadingCallback, (XtCallbackProc)motItemArmCallback, (XtPointer)ih);
+
+ iupUpdateStandardFontAttrib(ih);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvSubmenuInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motSubmenuMapMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ /* Common */
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, iupdrvSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); /* use inheritance to retrieve standard fonts */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iupBaseSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* IupSubmenu only */
+ iupClassRegisterAttribute(ic, "TITLE", NULL, motItemSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+}
+
+
+/*******************************************************************************************/
+
+
+static int motSeparatorMapMethod(Ihandle* ih)
+{
+ int pos;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ ih->handle = XtVaCreateManagedWidget(
+ iupMenuGetChildIdStr(ih),
+ xmSeparatorWidgetClass,
+ ih->parent->handle,
+ NULL);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupMenuGetChildId(ih); /* must be after using the string */
+
+ pos = IupGetChildPos(ih->parent, ih);
+ XtVaSetValues(ih->handle, XmNpositionIndex, pos, NULL); /* RowColumn Constraint */
+
+ return IUP_NOERROR;
+}
+
+void iupdrvSeparatorInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motSeparatorMapMethod;
+ ic->UnMap = iupdrvBaseUnMapMethod;
+
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+}
diff --git a/iup/src/mot/iupmot_messagedlg.c b/iup/src/mot/iupmot_messagedlg.c
new file mode 100755
index 0000000..6660503
--- /dev/null
+++ b/iup/src/mot/iupmot_messagedlg.c
@@ -0,0 +1,191 @@
+/** \file
+ * \brief Motif IupMessageDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <Xm/Xm.h>
+#include <Xm/MwmUtil.h>
+#include <Xm/MessageB.h>
+#include <Xm/Protocols.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drvinfo.h"
+#include "iup_dialog.h"
+#include "iup_strmessage.h"
+
+#include "iupmot_drv.h"
+
+
+static void motMessageDlgDeleteWindowCallback(Widget w, XtPointer client_data, XtPointer call_data)
+{
+ Ihandle *ih = (Ihandle*)client_data;
+ if (!ih) return;
+ (void)call_data;
+ (void)w;
+ if (iupStrEqualNoCase(iupAttribGetStr(ih, "BUTTONS"), "OK"))
+ iupAttribSetStr(ih, "BUTTONRESPONSE", "1");
+ else
+ iupAttribSetStr(ih, "BUTTONRESPONSE", "2");
+ iupAttribSetStr(ih, "_IUP_WM_DELETE", "1");
+}
+
+static void motMessageDlgCallback(Widget w, Ihandle* ih, XmAnyCallbackStruct* call_data)
+{
+ (void)w;
+ if (call_data->reason == XmCR_OK)
+ iupAttribSetStr(ih, "BUTTONRESPONSE", "1");
+ else if (call_data->reason == XmCR_CANCEL)
+ iupAttribSetStr(ih, "BUTTONRESPONSE", "2");
+}
+
+static void motMessageDlgHelpCallback(Widget w, XtPointer client_data, XtPointer call_data)
+{
+ Ihandle *ih = (Ihandle*)client_data;
+ Icallback cb = (Icallback)IupGetCallback(ih, "HELP_CB");
+ if (cb && cb(ih) == IUP_CLOSE)
+ {
+ if (iupStrEqualNoCase(iupAttribGetStr(ih, "BUTTONS"), "OK"))
+ iupAttribSetStr(ih, "BUTTONRESPONSE", "1");
+ else
+ iupAttribSetStr(ih, "BUTTONRESPONSE", "2");
+ }
+
+ (void)call_data;
+ (void)w;
+}
+
+static int motMessageDlgPopup(Ihandle* ih, int x, int y)
+{
+ InativeHandle* parent = iupDialogGetNativeParent(ih);
+ Widget msgbox, dialog;
+ int style = XmDIALOG_FULL_APPLICATION_MODAL;
+ int type = XmDIALOG_MESSAGE;
+ int num_but = 2;
+ char *value;
+
+ iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */
+ iupAttribSetInt(ih, "_IUPDLG_Y", y);
+
+ if (parent)
+ {
+ msgbox = XmCreateMessageDialog(parent, "messagedialog", NULL, 0);
+ dialog = XtParent(msgbox);
+ }
+ else
+ {
+ dialog = XtAppCreateShell(NULL, "messagedialog", topLevelShellWidgetClass, iupmot_display, NULL, 0);
+ msgbox = XmCreateMessageBox(dialog, "messagebox", NULL, 0);
+ style = XmDIALOG_MODELESS;
+ XtVaSetValues(dialog,
+ XmNmwmInputMode, MWM_INPUT_FULL_APPLICATION_MODAL,
+ XmNmappedWhenManaged, False,
+ XmNsaveUnder, True,
+ NULL);
+ }
+ if (!msgbox)
+ return IUP_NOERROR;
+
+ value = iupAttribGetStr(ih, "DIALOGTYPE");
+ if (iupStrEqualNoCase(value, "ERROR"))
+ type = XmDIALOG_ERROR;
+ else if (iupStrEqualNoCase(value, "WARNING"))
+ type = XmDIALOG_WARNING;
+ else if (iupStrEqualNoCase(value, "INFORMATION"))
+ type = XmDIALOG_INFORMATION;
+ else if (iupStrEqualNoCase(value, "QUESTION"))
+ type = XmDIALOG_QUESTION;
+
+
+ value = iupAttribGet(ih, "TITLE");
+ if (value)
+ iupmotSetString(msgbox, XmNdialogTitle, value);
+ else
+ {
+ if (parent)
+ {
+ XmString title;
+ XtVaGetValues(parent, XmNdialogTitle, &title, NULL);
+ XtVaSetValues(msgbox, XmNdialogTitle, title, NULL);
+ }
+ }
+
+ value = iupAttribGet(ih, "VALUE");
+ if (value)
+ iupmotSetString(msgbox, XmNmessageString, value);
+
+ XtVaSetValues(msgbox,
+ XmNdialogType, type,
+ XmNdialogStyle, style,
+ XmNautoUnmanage, False,
+ XmNnoResize, True,
+ NULL);
+
+ value = iupAttribGetStr(ih, "BUTTONS");
+ if (iupStrEqualNoCase(value, "OK"))
+ {
+ XtUnmanageChild(XmMessageBoxGetChild(msgbox, XmDIALOG_CANCEL_BUTTON));
+ num_but = 1;
+ }
+ else if (iupStrEqualNoCase(value, "YESNO"))
+ {
+ iupmotSetString(msgbox, XmNokLabelString, iupStrMessageGet("IUP_YES"));
+ iupmotSetString(msgbox, XmNcancelLabelString, iupStrMessageGet("IUP_NO"));
+ }
+
+ if (!IupGetCallback(ih, "HELP_CB"))
+ XtUnmanageChild(XmMessageBoxGetChild(msgbox, XmDIALOG_HELP_BUTTON));
+
+ if (num_but == 2 && iupAttribGetInt(ih, "BUTTONDEFAULT") == 2)
+ XtVaSetValues(msgbox, XmNdefaultButtonType, XmDIALOG_CANCEL_BUTTON, NULL);
+ else
+ XtVaSetValues(msgbox, XmNdefaultButtonType, XmDIALOG_OK_BUTTON, NULL);
+
+ XtAddCallback(msgbox, XmNokCallback, (XtCallbackProc)motMessageDlgCallback, (XtPointer)ih);
+ XtAddCallback(msgbox, XmNcancelCallback, (XtCallbackProc)motMessageDlgCallback, (XtPointer)ih);
+ XtAddCallback(msgbox, XmNhelpCallback, (XtCallbackProc)motMessageDlgHelpCallback, (XtPointer)ih);
+
+ XmAddWMProtocolCallback(dialog, iupmot_wm_deletewindow, motMessageDlgDeleteWindowCallback, (XtPointer)ih);
+ XtManageChild(msgbox);
+
+ XtRealizeWidget(dialog);
+ ih->handle = dialog;
+ iupDialogUpdatePosition(ih);
+ ih->handle = NULL; /* reset handle */
+
+ if (style == XmDIALOG_MODELESS)
+ XtPopup(dialog, XtGrabExclusive);
+
+ /* while the user hasn't provided an answer, simulate main loop.
+ ** The answer changes as soon as the user selects one of the
+ ** buttons and the callback routine changes its value. */
+ iupAttribSetStr(ih, "BUTTONRESPONSE", NULL);
+ while (iupAttribGet(ih, "BUTTONRESPONSE") == NULL)
+ XtAppProcessEvent(iupmot_appcontext, XtIMAll);
+
+ if (!iupAttribGet(ih, "_IUP_WM_DELETE"))
+ {
+ XtUnmanageChild(msgbox);
+
+ if (style == XmDIALOG_MODELESS)
+ {
+ XtPopdown(dialog);
+ XtDestroyWidget(dialog);
+ }
+ }
+
+ return IUP_NOERROR;
+}
+
+void iupdrvMessageDlgInitClass(Iclass* ic)
+{
+ ic->DlgPopup = motMessageDlgPopup;
+}
diff --git a/iup/src/mot/iupmot_open.c b/iup/src/mot/iupmot_open.c
new file mode 100755
index 0000000..a59dbff
--- /dev/null
+++ b/iup/src/mot/iupmot_open.c
@@ -0,0 +1,141 @@
+/** \file
+ * \brief Motif Open/Close
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <locale.h>
+#include <string.h>
+
+#include <Xm/Xm.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_globalattrib.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+/* global variables */
+Widget iupmot_appshell = 0;
+Display* iupmot_display = 0;
+int iupmot_screen = 0;
+Visual* iupmot_visual = 0;
+XtAppContext iupmot_appcontext = 0;
+
+void* iupdrvGetDisplay(void)
+{
+ return iupmot_display;
+}
+
+void iupmotSetGlobalColorAttrib(Widget w, const char* xmname, const char* name)
+{
+ unsigned char r, g, b;
+ Pixel color;
+
+ XtVaGetValues(w, xmname, &color, NULL);
+ iupmotColorGetRGB(color, &r, &g, &b);
+
+ iupGlobalSetDefaultColorAttrib(name, r, g, b);
+}
+
+int iupdrvOpen(int *argc, char ***argv)
+{
+ IupSetGlobal("DRIVER", "Motif");
+
+ /* XtSetLanguageProc(NULL, NULL, NULL);
+ Removed to avoid invalid locale in modern Linux that set LANG=en_US.UTF-8 */
+
+ /* We do NOT use XtVaOpenApplication because it crashes when using internal dummy argc and argv.
+ iupmot_appshell = XtVaOpenApplication(&iupmot_appcontext, "Iup", NULL, 0, argc, *argv, NULL,
+ sessionShellWidgetClass, NULL); */
+
+ XtToolkitInitialize();
+
+ iupmot_appcontext = XtCreateApplicationContext();
+
+ iupmot_display = XtOpenDisplay(iupmot_appcontext, NULL, NULL, "Iup", NULL, 0, argc, *argv);
+ if (!iupmot_display)
+ {
+ fprintf (stderr, "IUP error: cannot open display.\n");
+ return IUP_ERROR;
+ }
+
+ iupmot_appshell = XtAppCreateShell(NULL, "Iup", sessionShellWidgetClass, iupmot_display, NULL, 0);
+ if (!iupmot_appshell)
+ {
+ fprintf(stderr, "IUP error: cannot create shell.\n");
+ return IUP_ERROR;
+ }
+ IupSetGlobal("APPSHELL", (char*)iupmot_appshell);
+
+ IupStoreGlobal("SYSTEMLANGUAGE", setlocale(LC_ALL, NULL));
+
+ iupmot_screen = XDefaultScreen(iupmot_display);
+
+ IupSetGlobal("XDISPLAY", (char*)iupmot_display);
+ IupSetGlobal("XSCREEN", (char*)iupmot_screen);
+
+ /* screen depth can be 8bpp, but canvas can be 24bpp */
+ {
+ XVisualInfo vinfo;
+ if (XMatchVisualInfo(iupmot_display, iupmot_screen, 24, TrueColor, &vinfo) ||
+ XMatchVisualInfo(iupmot_display, iupmot_screen, 16, TrueColor, &vinfo))
+ {
+ iupmot_visual = vinfo.visual;
+ IupSetGlobal("TRUECOLORCANVAS", "YES");
+ }
+ else
+ {
+ iupmot_visual = DefaultVisual(iupmot_display, iupmot_screen);
+ IupSetGlobal("TRUECOLORCANVAS", "NO");
+ }
+ }
+
+ /* driver system version */
+ {
+ int major = xmUseVersion/1000;
+ int minor = xmUseVersion - major * 1000;
+ IupSetfAttribute(NULL, "MOTIFVERSION", "%d.%d", major, minor);
+ IupSetfAttribute(NULL, "MOTIFNUMBER", "%d", (XmVERSION * 1000 + XmREVISION * 100 + XmUPDATE_LEVEL));
+
+ IupSetGlobal("XSERVERVENDOR", ServerVendor(iupmot_display));
+ IupSetfAttribute(NULL, "XVENDORRELEASE", "%d", VendorRelease(iupmot_display));
+ }
+
+ iupmotColorInit();
+
+ /* dialog background color */
+ {
+ iupmotSetGlobalColorAttrib(iupmot_appshell, XmNbackground, "DLGBGCOLOR");
+ iupGlobalSetDefaultColorAttrib("DLGFGCOLOR", 0, 0, 0);
+ IupSetGlobal("_IUP_RESET_DLGBGCOLOR", "YES"); /* will update the DLGFGCOLOR when the first dialog is mapped */
+
+ iupGlobalSetDefaultColorAttrib("TXTBGCOLOR", 255, 255, 255);
+ iupGlobalSetDefaultColorAttrib("TXTFGCOLOR", 0, 0, 0);
+ IupSetGlobal("_IUP_RESET_TXTCOLORS", "YES"); /* will update the TXTCOLORS when the first text or list is mapped */
+ }
+
+ if (getenv("IUP_DEBUG"))
+ XSynchronize(iupmot_display, 1);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvClose(void)
+{
+ iupmotColorFinish();
+ iupmotTipsFinish();
+
+ if (iupmot_appshell)
+ XtDestroyWidget(iupmot_appshell);
+
+ if (iupmot_appcontext)
+ XtDestroyApplicationContext(iupmot_appcontext);
+}
diff --git a/iup/src/mot/iupmot_progressbar.c b/iup/src/mot/iupmot_progressbar.c
new file mode 100755
index 0000000..7266d38
--- /dev/null
+++ b/iup/src/mot/iupmot_progressbar.c
@@ -0,0 +1,165 @@
+/** \file
+* \brief Progress bar Control
+*
+* See Copyright Notice in "iup.h"
+*/
+
+#include <Xm/Xm.h>
+#include <Xm/Scale.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+#include <limits.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_progressbar.h"
+#include "iup_drv.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+static int motProgressBarSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ ih->data->value = 0;
+ else
+ ih->data->value = atof(value);
+ iProgressBarCropValue(ih);
+
+ XtVaSetValues(ih->handle, XmNvalue, (int)(SHRT_MAX * (ih->data->value - ih->data->vmin) / (ih->data->vmax - ih->data->vmin)), NULL);
+
+ return 0;
+}
+
+static int motProgressBarSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ if (!iupAttribGetStr(ih, "FGCOLOR"))
+ {
+ Pixel color;
+ unsigned char r, g, b;
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ r = (r*8)/10;
+ g = (g*8)/10;
+ b = (b*8)/10;
+
+ color = iupmotColorGetPixel(r, g, b);
+ if (color != (Pixel)-1)
+ {
+ Widget w = XtNameToWidget(ih->handle, "*Scrollbar");
+ XtVaSetValues(w, XmNtroughColor, color, NULL);
+ }
+ }
+
+ return iupdrvBaseSetBgColorAttrib(ih, value);
+}
+
+
+static int motProgressBarSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ {
+ Widget w = XtNameToWidget(ih->handle, "*Scrollbar");
+ XtVaSetValues(w, XmNtroughColor, color, NULL);
+ }
+
+ return 1;
+}
+
+static void motProgressBarLayoutUpdateMethod(Ihandle *ih)
+{
+ unsigned char orientation;
+ XtVaGetValues(ih->handle, XmNorientation, &orientation, NULL);
+
+ if (orientation == XmVERTICAL)
+ XtVaSetValues(ih->handle, XmNscaleWidth, ih->currentwidth, NULL);
+ else
+ XtVaSetValues(ih->handle, XmNscaleHeight, ih->currentheight, NULL);
+
+ iupdrvBaseLayoutUpdateMethod(ih);
+}
+
+static int motProgressBarMapMethod(Ihandle* ih)
+{
+ int num_args = 0;
+ Arg args[30];
+
+ /* Core */
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */
+ iupmotSetArg(args, num_args, XmNx, 0); /* x-position */
+ iupmotSetArg(args, num_args, XmNy, 0); /* y-position */
+ iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */
+ iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */
+ /* Primitive */
+ iupmotSetArg(args, num_args, XmNtraversalOn, False);
+ iupmotSetArg(args, num_args, XmNhighlightThickness, 0);
+ /* Scale */
+ iupmotSetArg(args, num_args, XmNminimum, 0);
+ iupmotSetArg(args, num_args, XmNmaximum, SHRT_MAX);
+ iupmotSetArg(args, num_args, XmNslidingMode, XmTHERMOMETER); /* thermometer effect */
+ iupmotSetArg(args, num_args, XmNsliderMark, XmNONE);
+ iupmotSetArg(args, num_args, XmNeditable, False);
+ iupmotSetArg(args, num_args, XmNshowValue, XmNONE);
+
+ if (iupStrEqualNoCase(iupAttribGetStr(ih, "ORIENTATION"), "VERTICAL"))
+ {
+ iupmotSetArg(args, num_args, XmNorientation, XmVERTICAL);
+
+ if (ih->currentheight < ih->currentwidth)
+ {
+ int tmp = ih->currentheight;
+ ih->currentheight = ih->currentwidth;
+ ih->currentwidth = tmp;
+ }
+ }
+ else
+ iupmotSetArg(args, num_args, XmNorientation, XmHORIZONTAL);
+
+ ih->handle = XtCreateManagedWidget(
+ iupDialogGetChildIdStr(ih), /* child identifier */
+ xmScaleWidgetClass, /* widget class */
+ iupChildTreeGetNativeParentHandle(ih), /* widget parent */
+ args, num_args);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupDialogGetChildId(ih); /* must be after using the string */
+
+ /* initialize the widget */
+ XtRealizeWidget(ih->handle);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvProgressBarInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motProgressBarMapMethod;
+ ic->LayoutUpdate = motProgressBarLayoutUpdateMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motProgressBarSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, motProgressBarSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT);
+
+ /* IupProgressBar only */
+ iupClassRegisterAttribute(ic, "VALUE", iProgressBarGetValueAttrib, motProgressBarSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ORIENTATION", NULL, NULL, "HORIZONTAL", NULL, IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/mot/iupmot_tabs.c b/iup/src/mot/iupmot_tabs.c
new file mode 100755
index 0000000..7c8a6b5
--- /dev/null
+++ b/iup/src/mot/iupmot_tabs.c
@@ -0,0 +1,593 @@
+/** \file
+* \brief Tabs Control
+*
+* See Copyright Notice in "iup.h"
+*/
+
+#include <Xm/Xm.h>
+#include <Xm/Notebook.h>
+#include <Xm/BulletinB.h>
+#include <Xm/PushB.h>
+#include <Xm/Label.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_childtree.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_dialog.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_tabs.h"
+#include "iup_image.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+int iupdrvTabsExtraDecor(Ihandle* ih)
+{
+ (void)ih;
+ return 1;
+}
+
+int iupdrvTabsGetLineCountAttrib(Ihandle* ih)
+{
+ (void)ih;
+ return 1;
+}
+
+void iupdrvTabsSetCurrentTab(Ihandle* ih, int pos)
+{
+ Ihandle* child = IupGetChild(ih, pos);
+ Ihandle* prev_child = IupGetChild(ih, iupdrvTabsGetCurrentTab(ih));
+ IupSetAttribute(child, "VISIBLE", "YES");
+ IupSetAttribute(prev_child, "VISIBLE", "NO");
+
+ XtVaSetValues(ih->handle, XmNcurrentPageNumber, pos, NULL);
+}
+
+int iupdrvTabsGetCurrentTab(Ihandle* ih)
+{
+ int pos;
+ XtVaGetValues(ih->handle, XmNcurrentPageNumber, &pos, NULL);
+ return pos;
+}
+
+static void motTabsUpdatePageNumber(Ihandle* ih)
+{
+ int pos, old_pos;
+ Ihandle* child;
+ for (pos = 0, child = ih->firstchild; child; child = child->brother, pos++)
+ {
+ Widget child_manager = (Widget)iupAttribGet(child, "_IUPTAB_CONTAINER");
+ if (child_manager)
+ {
+ old_pos = iupAttribGetInt(child, "_IUPMOT_TABNUMBER"); /* did not work when using XtVaGetValues(child_manager, XmNpageNumber) */
+ if (pos != old_pos)
+ {
+ Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON");
+ XtVaSetValues(child_manager, XmNpageNumber, pos, NULL);
+ XtVaSetValues(tab_button, XmNpageNumber, pos, NULL);
+ iupAttribSetInt(child, "_IUPMOT_TABNUMBER", pos);
+ }
+ }
+ }
+}
+
+static void motTabsUpdatePageBgPixmap(Ihandle* ih, Pixmap pixmap)
+{
+ Ihandle* child;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ Widget child_manager = (Widget)iupAttribGet(child, "_IUPTAB_CONTAINER");
+ if (child_manager)
+ XtVaSetValues(child_manager, XmNbackgroundPixmap, pixmap, NULL);
+ }
+}
+
+static void motTabsUpdatePageBgColor(Ihandle* ih, Pixel color)
+{
+ Ihandle* child;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ Widget child_manager = (Widget)iupAttribGet(child, "_IUPTAB_CONTAINER");
+ if (child_manager)
+ iupmotSetBgColor(child_manager, color);
+ }
+}
+
+static void motTabsUpdateButtonsFgColor(Ihandle* ih, Pixel color)
+{
+ Ihandle* child;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON");
+ if (tab_button)
+ XtVaSetValues(tab_button, XmNforeground, color, NULL);
+ }
+}
+
+static void motTabsUpdateButtonsBgColor(Ihandle* ih, Pixel color)
+{
+ Ihandle* child;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON");
+ if (tab_button)
+ iupmotSetBgColor(tab_button, color);
+ }
+}
+
+static void motTabsUpdateButtonsPadding(Ihandle* ih)
+{
+ Ihandle* child;
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON");
+ if (tab_button)
+ XtVaSetValues(tab_button, XmNmarginHeight, ih->data->vert_padding,
+ XmNmarginWidth, ih->data->horiz_padding, NULL);
+ }
+}
+
+static void motTabsUpdatePageFont(Ihandle* ih)
+{
+ Ihandle* child;
+ XmFontList fontlist = (XmFontList)iupmotGetFontListAttrib(ih);
+
+ for (child = ih->firstchild; child; child = child->brother)
+ {
+ Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON");
+ if (tab_button)
+ XtVaSetValues(tab_button, XmNrenderTable, fontlist, NULL);
+ }
+}
+
+/* ------------------------------------------------------------------------- */
+/* motTabs - Sets and Gets accessors */
+/* ------------------------------------------------------------------------- */
+
+static int motTabsSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+
+ if (ih->handle)
+ motTabsUpdateButtonsPadding(ih);
+ return 0;
+}
+
+static void motTabsUpdateTabType(Ihandle* ih)
+{
+ if (ih->data->type == ITABS_LEFT)
+ XtVaSetValues(ih->handle, XmNbackPagePlacement, XmBOTTOM_LEFT,
+ XmNorientation, XmHORIZONTAL,
+ NULL);
+ else if(ih->data->type == ITABS_RIGHT)
+ XtVaSetValues(ih->handle, XmNbackPagePlacement, XmBOTTOM_RIGHT,
+ XmNorientation, XmHORIZONTAL,
+ NULL);
+ else if(ih->data->type == ITABS_BOTTOM)
+ XtVaSetValues(ih->handle, XmNbackPagePlacement, XmBOTTOM_RIGHT,
+ XmNorientation, XmVERTICAL,
+ NULL);
+ else /* "TOP" */
+ XtVaSetValues(ih->handle, XmNbackPagePlacement, XmTOP_RIGHT,
+ XmNorientation, XmVERTICAL,
+ NULL);
+}
+
+static int motTabsSetTabTypeAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "LEFT"))
+ ih->data->type = ITABS_LEFT;
+ else if(iupStrEqualNoCase(value, "RIGHT"))
+ ih->data->type = ITABS_RIGHT;
+ else if(iupStrEqualNoCase(value, "BOTTOM"))
+ ih->data->type = ITABS_BOTTOM;
+ else /* "TOP" */
+ ih->data->type = ITABS_TOP;
+
+ if (ih->handle)
+ motTabsUpdateTabType(ih);
+
+ return 0;
+}
+
+static int motTabsSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color;
+
+ /* given value is used only for child, to the Tabs must use only from parent */
+ char* parent_value = iupBaseNativeParentGetBgColor(ih);
+
+ color = iupmotColorGetPixelStr(parent_value);
+ if (color != (Pixel)-1)
+ {
+ iupmotSetBgColor(ih->handle, color);
+ motTabsUpdatePageBgColor(ih, color);
+ }
+
+ color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ motTabsUpdateButtonsBgColor(ih, color);
+
+ return 1;
+}
+
+static int motTabsSetBackgroundAttrib(Ihandle* ih, const char* value)
+{
+ /* given value is used only for child, to the Tabs must use only from parent */
+ char* parent_value = iupAttribGetInheritNativeParent(ih, "BACKGROUND");
+
+ Pixel color = iupmotColorGetPixelStr(parent_value);
+ if (color != (Pixel)-1)
+ {
+ iupmotSetBgColor(ih->handle, color);
+ motTabsUpdatePageBgColor(ih, color);
+ }
+ else
+ {
+ Pixmap pixmap = (Pixmap)iupImageGetImage(parent_value, ih, 0);
+ if (pixmap)
+ {
+ XtVaSetValues(ih->handle, XmNbackgroundPixmap, pixmap, NULL);
+ motTabsUpdatePageBgPixmap(ih, pixmap);
+ }
+ }
+
+ (void)value;
+ return 1;
+}
+
+static int motTabsSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ {
+ XtVaSetValues(ih->handle, XmNforeground, color, NULL);
+ motTabsUpdateButtonsFgColor(ih, color);
+ return 1;
+ }
+ return 0;
+}
+
+static int motTabsSetStandardFontAttrib(Ihandle* ih, const char* value)
+{
+ iupdrvSetStandardFontAttrib(ih, value);
+ if (ih->handle)
+ motTabsUpdatePageFont(ih);
+ return 1;
+}
+
+static int motTabsSetTabTitleAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int pos;
+ if (value && iupStrToInt(name_id, &pos)==1)
+ {
+ Ihandle* child = IupGetChild(ih, pos);
+ Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON");
+ if (tab_button)
+ iupmotSetString(tab_button, XmNlabelString, value);
+ }
+ return 1;
+}
+
+static int motTabsSetTabImageAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int pos;
+ if (value && iupStrToInt(name_id, &pos)==1)
+ {
+ Ihandle* child = IupGetChild(ih, pos);
+ Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON");
+ if (tab_button)
+ {
+ Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0);
+ if (pixmap)
+ XtVaSetValues(tab_button, XmNlabelPixmap, pixmap, NULL);
+ }
+ }
+ return 1;
+}
+
+
+/* ------------------------------------------------------------------------- */
+/* motTabs - Callback */
+/* ------------------------------------------------------------------------- */
+
+void motTabsPageChangedCallback(Widget w, Ihandle* ih, XmNotebookCallbackStruct *nptr)
+{
+ if (nptr->reason == XmCR_MAJOR_TAB)
+ {
+ IFnnn cb;
+ Ihandle* child = IupGetChild(ih, nptr->page_number);
+ Ihandle* prev_child = IupGetChild(ih, nptr->prev_page_number);
+ IupSetAttribute(child, "VISIBLE", "YES");
+ IupSetAttribute(prev_child, "VISIBLE", "NO");
+
+ cb = (IFnnn)IupGetCallback(ih, "TABCHANGE_CB");
+ if (cb)
+ cb(ih, child, prev_child);
+ }
+ (void)w;
+}
+
+static void motTabsConfigureNotify(Widget w, XEvent *evt, String* s, Cardinal *card)
+{
+ /* Motif does not process the changed of position and/or size of children outside the parent's client area.
+ Since Notebook pages are not resized until they are moved into the visible area,
+ we must update the children position and size when a tab page is resize.
+ Since tab pages are not hidden, they are moved outside the visible area,
+ a resize occours every time a tab is activated.
+ */
+ Ihandle *child;
+ (void)s;
+ (void)card;
+ (void)evt;
+
+ XtVaGetValues(w, XmNuserData, &child, NULL);
+ if (!child) return;
+
+ iupLayoutUpdate(child);
+}
+
+/* ------------------------------------------------------------------------- */
+/* motTabs - Methods and Init Class */
+/* ------------------------------------------------------------------------- */
+
+static void motTabsChildAddedMethod(Ihandle* ih, Ihandle* child)
+{
+ if (IupGetName(child) == NULL)
+ iupAttribSetHandleName(child);
+
+ if (ih->handle)
+ {
+ Widget child_manager;
+ Widget tab_button;
+ int num_args = 0, pos;
+ Arg args[30];
+ char *tabtitle, *tabimage, *background;
+ Pixel color;
+
+ /* open space for new tab number */
+ motTabsUpdatePageNumber(ih);
+
+ pos = IupGetChildPos(ih, child);
+
+ /* Create pages */
+ child_manager = XtVaCreateManagedWidget(
+ "child_manager",
+ xmBulletinBoardWidgetClass,
+ ih->handle,
+ /* Core */
+ XmNborderWidth, 0,
+ /* Manager */
+ XmNshadowThickness, 0,
+ XmNnavigationType, XmTAB_GROUP,
+ XmNuserData, child, /* used only in motTabsConfigureNotify */
+ /* BulletinBoard */
+ XmNmarginWidth, 0,
+ XmNmarginHeight, 0,
+ XmNresizePolicy, XmRESIZE_NONE, /* no automatic resize of children */
+ /* Notebook Constraint */
+ XmNnotebookChildType, XmPAGE,
+ XmNpageNumber, pos,
+ XmNresizable, True,
+ NULL);
+
+ XtOverrideTranslations(child_manager, XtParseTranslationTable("<Configure>: iupTabsConfigure()"));
+
+ tabtitle = iupAttribGet(child, "TABTITLE");
+ if (!tabtitle) tabtitle = iupTabsAttribGetStrId(ih, "TABTITLE", pos);
+ tabimage = iupAttribGet(child, "TABIMAGE");
+ if (!tabimage) tabimage = iupTabsAttribGetStrId(ih, "TABIMAGE", pos);
+ if (!tabtitle && !tabimage)
+ tabtitle = " ";
+
+ /* Create tabs */
+ /* Label */
+ iupmotSetArg(args, num_args, XmNlabelType, tabtitle? XmSTRING: XmPIXMAP);
+ iupmotSetArg(args, num_args, XmNmarginHeight, 0);
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0);
+ /* Notebook Constraint */
+ iupmotSetArg(args, num_args, XmNnotebookChildType, XmMAJOR_TAB);
+ iupmotSetArg(args, num_args, XmNpageNumber, pos);
+ tab_button = XtCreateManagedWidget("tab_button", xmPushButtonWidgetClass, ih->handle, args, num_args);
+
+ /* Disable Drag Source */
+ iupmotDisableDragSource(tab_button);
+
+ XtAddEventHandler(tab_button, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(tab_button, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(tab_button, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih);
+ XtAddEventHandler(tab_button, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih);
+
+ if (tabtitle)
+ iupmotSetString(tab_button, XmNlabelString, tabtitle);
+ else
+ {
+ Pixmap pixmap = (Pixmap)iupImageGetImage(tabimage, ih, 0);
+ if (pixmap)
+ XtVaSetValues(tab_button, XmNlabelPixmap, pixmap, NULL);
+ }
+
+ background = iupBaseNativeParentGetBgColorAttrib(ih);
+ color = iupmotColorGetPixelStr(background);
+ if (color != -1)
+ iupmotSetBgColor(child_manager, color);
+ else
+ {
+ Pixmap pixmap = (Pixmap)iupImageGetImage(background, ih, 0);
+ if (pixmap)
+ {
+ XtVaSetValues(child_manager, XmNbackgroundPixmap, pixmap, NULL);
+ }
+ }
+
+ background = iupAttribGetStr(ih, "BGCOLOR");
+ color = iupmotColorGetPixelStr(background);
+ if (color != -1)
+ iupmotSetBgColor(tab_button, color);
+
+ color = iupmotColorGetPixelStr(IupGetAttribute(ih, "FGCOLOR"));
+ XtVaSetValues(tab_button, XmNforeground, color, NULL);
+
+ XtRealizeWidget(child_manager);
+ XtRealizeWidget(tab_button);
+
+ iupAttribSetStr(child, "_IUPTAB_CONTAINER", (char*)child_manager);
+ iupAttribSetStr(child, "_IUPMOT_TABBUTTON", (char*)tab_button);
+ iupAttribSetInt(child, "_IUPMOT_TABNUMBER", pos);
+
+ if (pos == iupdrvTabsGetCurrentTab(ih))
+ IupSetAttribute(child, "VISIBLE", "YES");
+ else
+ IupSetAttribute(child, "VISIBLE", "NO");
+ }
+}
+
+static void motTabsChildRemovedMethod(Ihandle* ih, Ihandle* child)
+{
+ if (ih->handle)
+ {
+ Widget child_manager = (Widget)iupAttribGet(child, "_IUPTAB_CONTAINER");
+ if (child_manager)
+ {
+ int cur_pos, pos;
+ Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON");
+
+ cur_pos = iupdrvTabsGetCurrentTab(ih);
+ pos = iupAttribGetInt(child, "_IUPMOT_TABNUMBER"); /* did not work when using XtVaGetValues(child_manager, XmNpageNumber) */
+ if (cur_pos == pos)
+ {
+ if (cur_pos == 0)
+ cur_pos = 1;
+ else
+ cur_pos--;
+
+ iupdrvTabsSetCurrentTab(ih, cur_pos);
+ }
+
+ XtDestroyWidget(tab_button);
+ XtDestroyWidget(child_manager);
+
+ /* compact the tab number usage */
+ motTabsUpdatePageNumber(ih);
+
+ iupAttribSetStr(child, "_IUPTAB_CONTAINER", NULL);
+ iupAttribSetStr(child, "_IUPMOT_TABBUTTON", NULL);
+ iupAttribSetStr(child, "_IUPMOT_TABNUMBER", NULL);
+ }
+ }
+}
+
+static int motTabsMapMethod(Ihandle* ih)
+{
+ int num_args = 0;
+ Arg args[30];
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ /* Core */
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */
+ iupmotSetArg(args, num_args, XmNx, 0); /* x-position */
+ iupmotSetArg(args, num_args, XmNy, 0); /* y-position */
+ iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */
+ iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */
+ /* Manager */
+ iupmotSetArg(args, num_args, XmNshadowThickness, 0);
+ iupmotSetArg(args, num_args, XmNtraversalOn, True);
+ iupmotSetArg(args, num_args, XmNhighlightThickness, 0);
+ /* Notebook */
+ iupmotSetArg(args, num_args, XmNbindingType, XmNONE);
+ iupmotSetArg(args, num_args, XmNbindingWidth, 0);
+ iupmotSetArg(args, num_args, XmNfirstPageNumber, 0); /* IupTabs index always starts with zero */
+ iupmotSetArg(args, num_args, XmNbackPageSize, 0);
+ iupmotSetArg(args, num_args, XmNbackPageNumber, 1);
+ iupmotSetArg(args, num_args, XmNframeShadowThickness, 2);
+
+ ih->handle = XtCreateManagedWidget(
+ iupDialogGetChildIdStr(ih), /* child identifier */
+ xmNotebookWidgetClass, /* widget class */
+ iupChildTreeGetNativeParentHandle(ih), /* widget parent */
+ args, num_args);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupDialogGetChildId(ih); /* must be after using the string */
+
+ /* Disable page scroller */
+ {
+ Widget scroller;
+ scroller = XtNameToWidget(ih->handle, "*PageScroller");
+ XtUnmanageChild(scroller);
+ }
+
+ /* Callbacks */
+ XtAddCallback(ih->handle, XmNpageChangedCallback, (XtCallbackProc)motTabsPageChangedCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih);
+
+ /* update Tab position */
+ motTabsUpdateTabType(ih);
+
+ /* current value is now given by the native system */
+ iupAttribSetStr(ih, "_IUPTABS_VALUE_HANDLE", NULL);
+
+ /* initialize the widget */
+ XtRealizeWidget(ih->handle);
+
+ /* Create pages and tabs */
+ if (ih->firstchild)
+ {
+ Ihandle* child;
+ for (child = ih->firstchild; child; child = child->brother)
+ motTabsChildAddedMethod(ih, child);
+ }
+
+ return IUP_NOERROR;
+}
+
+void iupdrvTabsInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motTabsMapMethod;
+ ic->ChildAdded = motTabsChildAddedMethod;
+ ic->ChildRemoved = motTabsChildRemovedMethod;
+
+ {
+ /* Set up a translation table that captures "Resize" events
+ (also called ConfigureNotify or Configure events). */
+ XtActionsRec rec = {"iupTabsConfigure", motTabsConfigureNotify};
+ XtAppAddActions(iupmot_appcontext, &rec, 1);
+ }
+
+ /* Driver Dependent Attribute functions */
+
+ /* Common */
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, motTabsSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED);
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motTabsSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, motTabsSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motTabsSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* IupTabs only */
+ iupClassRegisterAttribute(ic, "TABTYPE", iupTabsGetTabTypeAttrib, motTabsSetTabTypeAttrib, IUPAF_SAMEASSYSTEM, "TOP", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TABORIENTATION", iupTabsGetTabOrientationAttrib, NULL, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); /* can not be set, always HORIZONTAL in Motif */
+ iupClassRegisterAttributeId(ic, "TABTITLE", NULL, motTabsSetTabTitleAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "TABIMAGE", NULL, motTabsSetTabImageAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "PADDING", iupTabsGetPaddingAttrib, motTabsSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+}
diff --git a/iup/src/mot/iupmot_text.c b/iup/src/mot/iupmot_text.c
new file mode 100755
index 0000000..4a8f936
--- /dev/null
+++ b/iup/src/mot/iupmot_text.c
@@ -0,0 +1,1165 @@
+/** \file
+ * \brief Text Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+#include <Xm/TextF.h>
+#include <Xm/Text.h>
+#include <Xm/ScrolledW.h>
+#include <Xm/SpinB.h>
+#include <X11/keysym.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+#include <limits.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_mask.h"
+#include "iup_drv.h"
+#include "iup_array.h"
+#include "iup_text.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+#ifndef XmIsSpinBox
+#define XmIsSpinBox(w) XtIsSubclass(w, xmSpinBoxWidgetClass)
+#endif
+
+#ifndef XmNwrap
+#define XmNwrap "Nwrap"
+#endif
+
+void iupdrvTextAddFormatTag(Ihandle* ih, Ihandle* formattag)
+{
+ (void)ih;
+ (void)formattag;
+}
+
+void iupdrvTextAddSpin(int *w, int h)
+{
+ *w += h/2;
+}
+
+void iupdrvTextAddBorders(int *w, int *h)
+{
+ int border_size = 2*5;
+ (*w) += border_size;
+ (*h) += border_size;
+}
+
+static void motTextGetLinColFromPosition(const char *str, int pos, int *lin, int *col )
+{
+ int i;
+
+ *lin = 0;
+ *col = 0;
+
+ for (i=0; i<pos; i++)
+ {
+ if (*str == '\n')
+ {
+ (*lin)++;
+ *col = 0;
+ }
+ else
+ (*col)++;
+
+ str++;
+ }
+
+ (*lin)++; /* IUP starts at 1 */
+ (*col)++;
+}
+
+static int motTextSetLinColToPosition(const char *str, int lin, int col)
+{
+ int pos=0, cur_lin=0, cur_col=0;
+
+ lin--; /* IUP starts at 1 */
+ col--;
+
+ while (*str)
+ {
+ if (lin<=cur_lin && col<=cur_col)
+ break;
+
+ if (*str == '\n')
+ {
+ cur_lin++;
+ cur_col = 0;
+ }
+ else
+ cur_col++;
+
+ str++;
+ pos++;
+ }
+
+ return pos;
+}
+
+void iupdrvTextConvertLinColToPos(Ihandle* ih, int lin, int col, int *pos)
+{
+ char* str = XmTextGetString(ih->handle);
+ *pos = motTextSetLinColToPosition(str, lin, col);
+ XtFree(str);
+}
+
+void iupdrvTextConvertPosToLinCol(Ihandle* ih, int pos, int *lin, int *col)
+{
+ char *str = XmTextGetString(ih->handle);
+ motTextGetLinColFromPosition(str, pos, lin, col);
+ XtFree(str);
+}
+
+static int motTextConvertXYToPos(Ihandle* ih, int x, int y)
+{
+ return XmTextXYToPos(ih->handle, x, y);
+}
+
+
+/*******************************************************************************************/
+
+
+static int motTextSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+ if (ih->handle)
+ {
+ XtVaSetValues(ih->handle, XmNmarginHeight, ih->data->vert_padding,
+ XmNmarginWidth, ih->data->horiz_padding, NULL);
+ }
+ return 0;
+}
+
+static int motTextSetReadOnlyAttrib(Ihandle* ih, const char* value)
+{
+ XtVaSetValues(ih->handle, XmNeditable, iupStrBoolean(value)? False: True, NULL);
+ return 0;
+}
+
+static char* motTextGetReadOnlyAttrib(Ihandle* ih)
+{
+ Boolean editable;
+ XtVaGetValues(ih->handle, XmNeditable, &editable, NULL);
+ if (editable)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int motTextSetInsertAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ if (!value)
+ return 0;
+
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+ XmTextRemove(ih->handle);
+ XmTextInsert(ih->handle, XmTextGetInsertionPosition(ih->handle), (char*)value);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+
+ return 0;
+}
+
+static int motTextSetSelectedTextAttrib(Ihandle* ih, const char* value)
+{
+ XmTextPosition start, end;
+
+ if (!value)
+ return 0;
+
+ if (XmTextGetSelectionPosition(ih->handle, &start, &end) && start!=end)
+ {
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+ XmTextReplace(ih->handle, start, end, (char*)value);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+
+ return 0;
+}
+
+static char* motTextGetSelectedTextAttrib(Ihandle* ih)
+{
+ char* selectedtext = XmTextGetSelection(ih->handle);
+ char* str = iupStrGetMemoryCopy(selectedtext);
+ XtFree(selectedtext);
+ return str;
+}
+
+static int motTextSetAppendAttrib(Ihandle* ih, const char* value)
+{
+ XmTextPosition pos;
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ pos = XmTextGetLastPosition(ih->handle);
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+ if (ih->data->is_multiline && ih->data->append_newline)
+ XmTextInsert(ih->handle, pos, "\n");
+ if (value)
+ XmTextInsert(ih->handle, pos+1, (char*)value);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ return 0;
+}
+
+static int motTextSetSelectionAttrib(Ihandle* ih, const char* value)
+{
+ int start=1, end=1;
+
+ if (!value || iupStrEqualNoCase(value, "NONE"))
+ {
+ XmTextClearSelection(ih->handle, CurrentTime);
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(value, "ALL"))
+ {
+ XmTextSetSelection(ih->handle, (XmTextPosition)0, (XmTextPosition)XmTextGetLastPosition(ih->handle), CurrentTime);
+ return 0;
+ }
+
+ if (ih->data->is_multiline)
+ {
+ int lin_start=1, col_start=1, lin_end=1, col_end=1;
+ char *str;
+
+ if (sscanf(value, "%d,%d:%d,%d", &lin_start, &col_start, &lin_end, &col_end)!=4) return 0;
+ if (lin_start<1 || col_start<1 || lin_end<1 || col_end<1) return 0;
+
+ str = XmTextGetString(ih->handle);
+ start = motTextSetLinColToPosition(str, lin_start, col_start);
+ end = motTextSetLinColToPosition(str, lin_end, col_end);
+ XtFree(str);
+ }
+ else
+ {
+ if (iupStrToIntInt(value, &start, &end, ':')!=2)
+ return 0;
+
+ if(start<1 || end<1)
+ return 0;
+
+ start--; /* IUP starts at 1 */
+ end--;
+ }
+
+ /* end is inside the selection, in IUP is outside */
+ end--;
+
+ XmTextSetSelection(ih->handle, (XmTextPosition)start, (XmTextPosition)end, CurrentTime);
+
+ return 0;
+}
+
+static char* motTextGetSelectionAttrib(Ihandle* ih)
+{
+ XmTextPosition start = 0, end = 0;
+ char* str;
+
+ if (!XmTextGetSelectionPosition(ih->handle, &start, &end) || start==end)
+ return NULL;
+
+ str = iupStrGetMemory(100);
+
+ /* end is inside the selection, in IUP is outside */
+ end++;
+
+ if (ih->data->is_multiline)
+ {
+ int start_col, start_lin, end_col, end_lin;
+
+ char *value = XmTextGetString(ih->handle);
+ motTextGetLinColFromPosition(value, start, &start_lin, &start_col);
+ motTextGetLinColFromPosition(value, end, &end_lin, &end_col);
+ XtFree(value);
+
+ sprintf(str,"%d,%d:%d,%d", start_lin, start_col, end_lin, end_col);
+ }
+ else
+ {
+ start++; /* IUP starts at 1 */
+ end++;
+ sprintf(str, "%d:%d", (int)start, (int)end);
+ }
+
+ return str;
+}
+
+static int motTextSetSelectionPosAttrib(Ihandle* ih, const char* value)
+{
+ int start=0, end=0;
+
+ if (!value || iupStrEqualNoCase(value, "NONE"))
+ {
+ XmTextClearSelection(ih->handle, CurrentTime);
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(value, "ALL"))
+ {
+ XmTextSetSelection(ih->handle, (XmTextPosition)0, (XmTextPosition)XmTextGetLastPosition(ih->handle), CurrentTime);
+ return 0;
+ }
+
+ if (iupStrToIntInt(value, &start, &end, ':')!=2)
+ return 0;
+
+ if(start<0 || end<0)
+ return 0;
+
+ /* end is inside the selection, in IUP is outside */
+ end--;
+
+ XmTextSetSelection(ih->handle, (XmTextPosition)start, (XmTextPosition)end, CurrentTime);
+
+ return 0;
+}
+
+static char* motTextGetSelectionPosAttrib(Ihandle* ih)
+{
+ XmTextPosition start = 0, end = 0;
+ char* str;
+
+ if (!XmTextGetSelectionPosition(ih->handle, &start, &end) || start==end)
+ return NULL;
+
+ str = iupStrGetMemory(100);
+
+ /* end is inside the selection, in IUP is outside */
+ end++;
+
+ sprintf(str, "%d:%d", (int)start, (int)end);
+
+ return str;
+}
+
+static int motTextSetCaretAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 1;
+
+ if (!value)
+ return 0;
+
+ if (ih->data->is_multiline)
+ {
+ int lin = 1, col = 1;
+ char *str;
+
+ iupStrToIntInt(value, &lin, &col, ',');
+
+ str = XmTextGetString(ih->handle);
+ pos = motTextSetLinColToPosition(str, lin, col);
+ XtFree(str);
+ }
+ else
+ {
+ sscanf(value,"%i",&pos);
+ pos--; /* IUP starts at 1 */
+ }
+
+ XmTextSetInsertionPosition(ih->handle, (XmTextPosition)pos);
+ XmTextShowPosition(ih->handle, (XmTextPosition)pos);
+
+ return 0;
+}
+
+static char* motTextGetCaretAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(50);
+
+ XmTextPosition pos = XmTextGetInsertionPosition(ih->handle);
+
+ if (ih->data->is_multiline)
+ {
+ int col, lin;
+
+ char *value = XmTextGetString(ih->handle);
+ motTextGetLinColFromPosition(value, pos, &lin, &col);
+ XtFree(value);
+
+ sprintf(str, "%d,%d", lin, col);
+ }
+ else
+ {
+ pos++; /* IUP starts at 1 */
+ sprintf(str, "%d", (int)pos);
+ }
+
+ return str;
+}
+
+static int motTextSetCaretPosAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 0) pos = 0;
+
+ XmTextSetInsertionPosition(ih->handle, (XmTextPosition)pos);
+ XmTextShowPosition(ih->handle, (XmTextPosition)pos);
+
+ return 0;
+}
+
+static char* motTextGetCaretPosAttrib(Ihandle* ih)
+{
+ XmTextPosition pos = XmTextGetInsertionPosition(ih->handle);
+ char* str = iupStrGetMemory(50);
+ sprintf(str, "%d", (int)pos);
+ return str;
+}
+
+static int motTextSetScrollToAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 1;
+
+ if (!value)
+ return 0;
+
+ if (ih->data->is_multiline)
+ {
+ int lin = 1, col = 1, pos;
+ char* str;
+
+ iupStrToIntInt(value, &lin, &col, ',');
+ if (lin < 1) lin = 1;
+ if (col < 1) col = 1;
+
+ str = XmTextGetString(ih->handle);
+ pos = motTextSetLinColToPosition(str, lin, col);
+ XtFree(str);
+ }
+ else
+ {
+ sscanf(value,"%i",&pos);
+ if (pos < 1) pos = 1;
+ pos--; /* return to Motif referece */
+ }
+
+ XmTextShowPosition(ih->handle, (XmTextPosition)pos);
+
+ return 0;
+}
+
+static int motTextSetScrollToPosAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 0) pos = 0;
+
+ XmTextShowPosition(ih->handle, (XmTextPosition)pos);
+
+ return 0;
+}
+
+static int motTextSetNCAttrib(Ihandle* ih, const char* value)
+{
+ if (!iupStrToInt(value, &ih->data->nc))
+ ih->data->nc = INT_MAX;
+ if (ih->handle)
+ XtVaSetValues(ih->handle, XmNmaxLength, ih->data->nc, NULL);
+ return 0;
+}
+
+static int motTextSetClipboardAttrib(Ihandle *ih, const char *value)
+{
+ if (iupStrEqualNoCase(value, "COPY"))
+ {
+ char *str = XmTextGetSelection(ih->handle);
+ if (!str) return 0;
+
+ XmTextCopy(ih->handle, CurrentTime);
+
+ /* do it also for the X clipboard */
+ XStoreBytes(iupmot_display, str, strlen(str)+1);
+ XtFree(str);
+ }
+ else if (iupStrEqualNoCase(value, "CUT"))
+ {
+ char *str = XmTextGetSelection(ih->handle);
+ if (!str) return 0;
+
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+
+ XmTextCut(ih->handle, CurrentTime);
+
+ /* do it also for the X clipboard */
+ XStoreBytes(iupmot_display, str, strlen(str)+1);
+ XtFree(str);
+ XmTextRemove(ih->handle);
+
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+ else if (iupStrEqualNoCase(value, "PASTE"))
+ {
+ int size;
+ char* str = XFetchBytes(iupmot_display, &size);
+ if (!str) return 0;
+
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+
+ XmTextPaste(ih->handle); /* TODO: this could force 2 pastes, check in CDE */
+
+ /* do it also for the X clipboard */
+ XmTextRemove(ih->handle);
+ XmTextInsert(ih->handle, XmTextGetInsertionPosition(ih->handle), str);
+ XFree(str);
+
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+ else if (iupStrEqualNoCase(value, "CLEAR"))
+ {
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+ XmTextRemove(ih->handle);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+ return 0;
+}
+
+static int motTextSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ Widget sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (sb_win)
+ {
+ Pixel color;
+
+ /* ignore given value for the scrollbars, must use only from parent */
+ char* parent_value = iupBaseNativeParentGetBgColor(ih);
+
+ color = iupmotColorGetPixelStr(parent_value);
+ if (color != (Pixel)-1)
+ {
+ Widget sb = NULL;
+
+ iupmotSetBgColor(sb_win, color);
+
+ XtVaGetValues(sb_win, XmNverticalScrollBar, &sb, NULL);
+ if (sb) iupmotSetBgColor(sb, color);
+
+ XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb, NULL);
+ if (sb) iupmotSetBgColor(sb, color);
+ }
+ }
+
+ return iupdrvBaseSetBgColorAttrib(ih, value); /* use given value for contents */
+}
+
+static int motTextSetSpinMinAttrib(Ihandle* ih, const char* value)
+{
+ Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (spinbox && XmIsSpinBox(spinbox))
+ {
+ int min;
+ if (iupStrToInt(value, &min))
+ {
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+ XtVaSetValues(ih->handle, XmNminimumValue, min, NULL);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+ }
+ return 1;
+}
+
+static int motTextSetSpinMaxAttrib(Ihandle* ih, const char* value)
+{
+ Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (spinbox && XmIsSpinBox(spinbox))
+ {
+ int max;
+ if (iupStrToInt(value, &max))
+ {
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+ XtVaSetValues(ih->handle, XmNmaximumValue, max, NULL);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+ }
+ return 1;
+}
+
+static int motTextSetSpinIncAttrib(Ihandle* ih, const char* value)
+{
+ Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (spinbox && XmIsSpinBox(spinbox))
+ {
+ int inc;
+ if (iupStrToInt(value, &inc))
+ {
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+ XtVaSetValues(ih->handle, XmNincrementValue, inc, NULL);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ }
+ }
+ return 1;
+}
+
+static int motTextSetSpinValueAttrib(Ihandle* ih, const char* value)
+{
+ Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (spinbox && XmIsSpinBox(spinbox))
+ {
+ int pos;
+ if (iupStrToInt(value, &pos))
+ {
+ char* value = NULL;
+ int min, max;
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+ XtVaGetValues(ih->handle, XmNminimumValue, &min,
+ XmNmaximumValue, &max, NULL);
+ if (pos < min) pos = min;
+ if (pos > max) pos = max;
+ if (iupAttribGet(ih, "_IUPMOT_SPIN_NOAUTO"))
+ value = XmTextGetString(ih->handle);
+
+ XtVaSetValues(ih->handle, XmNposition, pos, NULL);
+
+ if (value)
+ {
+ XmTextSetString(ih->handle, (char*)value);
+ XtFree(value);
+ }
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static char* motTextGetSpinValueAttrib(Ihandle* ih)
+{
+ Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (spinbox && XmIsSpinBox(spinbox))
+ {
+ int pos;
+ char *str = iupStrGetMemory(50);
+ XtVaGetValues(ih->handle, XmNposition, &pos, NULL);
+ sprintf(str, "%d", pos);
+ return str;
+ }
+ return NULL;
+}
+
+static int motTextSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (!value) value = "";
+ motTextSetSpinValueAttrib(ih, value);
+ /* disable callbacks */
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+ XmTextSetString(ih->handle, (char*)value);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ return 0;
+}
+
+static char* motTextGetValueAttrib(Ihandle* ih)
+{
+ char* value = XmTextGetString(ih->handle);
+ char* str = iupStrGetMemoryCopy(value);
+ XtFree(value);
+ return str;
+}
+
+
+/******************************************************************************/
+
+
+static void motTextSpinModifyVerifyCallback(Widget w, Ihandle* ih, XmSpinBoxCallbackStruct *cbs)
+{
+ IFni cb = (IFni) IupGetCallback(ih, "SPIN_CB");
+ if (cb)
+ {
+ int ret = cb(ih, cbs->position);
+ if (ret == IUP_IGNORE)
+ {
+ cbs->doit = 1;
+ return;
+ }
+ }
+ (void)w;
+
+ iupAttribSetStr(ih, "_IUPMOT_SPIN_DISABLE_TEXT_CB", "1");
+}
+
+static void motTextModifyVerifyCallback(Widget w, Ihandle *ih, XmTextVerifyPtr text)
+{
+ int start, end, key = 0;
+ char *value, *new_value, *insert_value;
+ KeySym motcode = 0;
+ IFnis cb;
+
+ if (iupAttribGet(ih, "_IUPMOT_DISABLE_TEXT_CB"))
+ return;
+
+ if (iupAttribGet(ih, "_IUPMOT_SPIN_DISABLE_TEXT_CB"))
+ {
+ if (iupAttribGet(ih, "_IUPMOT_SPIN_NOAUTO"))
+ text->doit = False;
+
+ iupAttribSetStr(ih, "_IUPMOT_SPIN_DISABLE_TEXT_CB", NULL);
+ return;
+ }
+
+ cb = (IFnis)IupGetCallback(ih, "ACTION");
+ if (!cb && !ih->data->mask)
+ return;
+
+ if (text->event && text->event->type == KeyPress)
+ {
+ unsigned int state = ((XKeyEvent*)text->event)->state;
+ if (state & ControlMask || /* Ctrl */
+ state & Mod1Mask ||
+ state & Mod5Mask || /* Alt */
+ state & Mod4Mask) /* Apple/Win */
+ return;
+
+ motcode = XKeycodeToKeysym(iupmot_display, ((XKeyEvent*)text->event)->keycode, 0);
+ }
+
+ value = XmTextGetString(ih->handle);
+ start = text->startPos;
+ end = text->endPos;
+ insert_value = text->text->ptr;
+
+ if (motcode == XK_Delete)
+ {
+ new_value = value;
+ iupStrRemove(value, start, end, 1);
+ }
+ else if (motcode == XK_BackSpace)
+ {
+ new_value = value;
+ iupStrRemove(value, start, end, -1);
+ }
+ else
+ {
+ if (!value)
+ new_value = iupStrDup(insert_value);
+ else if (insert_value)
+ new_value = iupStrInsert(value, insert_value, start, end);
+ else
+ new_value = value;
+ }
+
+ if (insert_value && insert_value[0]!=0 && insert_value[1]==0)
+ key = insert_value[0];
+
+ if (ih->data->mask && iupMaskCheck(ih->data->mask, new_value)==0)
+ {
+ if (new_value != value) free(new_value);
+ XtFree(value);
+ text->doit = False; /* abort processing */
+ return;
+ }
+
+ if (cb)
+ {
+ int cb_ret = cb(ih, key, (char*)new_value);
+ if (cb_ret==IUP_IGNORE)
+ text->doit = False; /* abort processing */
+ else if (cb_ret==IUP_CLOSE)
+ {
+ IupExitLoop();
+ text->doit = False; /* abort processing */
+ }
+ else if (cb_ret!=0 && key!=0 &&
+ cb_ret != IUP_DEFAULT && cb_ret != IUP_CONTINUE)
+ {
+ insert_value[0] = (char)cb_ret; /* replace key */
+ }
+ }
+
+ if (text->doit)
+ {
+ /* Spin is not automatically updated when you directly edit the text */
+ Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (spinbox && XmIsSpinBox(spinbox) && !iupAttribGet(ih, "_IUPMOT_SPIN_NOAUTO"))
+ {
+ int pos;
+ if (iupStrToInt(new_value, &pos))
+ {
+ XmTextPosition caret_pos = text->currInsert;
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
+ XtVaSetValues(ih->handle, XmNposition, pos, NULL);
+ iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
+ /* do not handle all situations, but handle the basic ones */
+ if (text->startPos == text->endPos) /* insert */
+ caret_pos++;
+ else if (text->startPos < text->endPos && text->startPos < text->currInsert) /* backspace */
+ caret_pos--;
+ XmTextSetInsertionPosition(ih->handle, caret_pos);
+ text->doit = False;
+ }
+ }
+ }
+
+ if (new_value != value) free(new_value);
+ XtFree(value);
+ (void)w;
+}
+
+static void motTextMotionVerifyCallback(Widget w, Ihandle* ih, XmTextVerifyCallbackStruct* textverify)
+{
+ int col, lin, pos;
+
+ IFniii cb = (IFniii)IupGetCallback(ih, "CARET_CB");
+ if (!cb) return;
+
+ pos = textverify->newInsert;
+
+ if (ih->data->is_multiline)
+ {
+ char *value = XmTextGetString(ih->handle);
+ motTextGetLinColFromPosition(value, pos, &lin, &col);
+ XtFree(value);
+ }
+ else
+ {
+ col = pos;
+ col++; /* IUP starts at 1 */
+ lin = 1;
+ }
+
+ if (pos != ih->data->last_caret_pos)
+ {
+ ih->data->last_caret_pos = pos;
+ cb(ih, lin, col, pos);
+ }
+
+ (void)w;
+}
+
+static void motTextValueChangedCallback(Widget w, Ihandle* ih, XmAnyCallbackStruct* valuechanged)
+{
+ if (iupAttribGet(ih, "_IUPMOT_DISABLE_TEXT_CB"))
+ return;
+
+ iupBaseCallValueChangedCb(ih);
+
+ (void)valuechanged;
+ (void)w;
+}
+
+static void motTextKeyPressEvent(Widget w, Ihandle *ih, XKeyEvent *evt, Boolean *cont)
+{
+ Widget spinbox;
+
+ *cont = True;
+ iupmotKeyPressEvent(w, ih, (XEvent*)evt, cont);
+ if (*cont == False)
+ return;
+
+ if (evt->state & ControlMask) /* Ctrl */
+ {
+ KeySym motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0);
+ if (motcode == XK_c)
+ motTextSetClipboardAttrib(ih, "COPY");
+ else if (motcode == XK_x)
+ motTextSetClipboardAttrib(ih, "CUT");
+ else if (motcode == XK_v)
+ motTextSetClipboardAttrib(ih, "PASTE");
+ else if (motcode == XK_a)
+ XmTextSetSelection(ih->handle, 0, XmTextGetLastPosition(ih->handle), CurrentTime);
+ }
+
+ spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (spinbox && XmIsSpinBox(spinbox))
+ {
+ KeySym motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0);
+ if (motcode == XK_Left || motcode == XK_Right)
+ {
+ /* avoid spin increment using Left/Right arrows,
+ but must manually handle the new cursor position */
+ XmTextPosition caret_pos = XmTextGetInsertionPosition(ih->handle);
+ XmTextSetInsertionPosition(ih->handle, (motcode == XK_Left)? caret_pos-1: caret_pos+1);
+ *cont = False;
+ }
+ }
+}
+
+
+/******************************************************************************/
+
+
+static void motTextLayoutUpdateMethod(Ihandle* ih)
+{
+ Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ if (spinbox && XmIsSpinBox(spinbox))
+ {
+ XtVaSetValues(ih->handle,
+ XmNwidth, (XtArgVal)ih->currentwidth-ih->currentheight/2,
+ XmNheight, (XtArgVal)ih->currentheight,
+ NULL);
+
+ XtVaSetValues(spinbox,
+ XmNx, (XtArgVal)ih->x,
+ XmNy, (XtArgVal)ih->y,
+ XmNwidth, (XtArgVal)ih->currentwidth,
+ XmNheight, (XtArgVal)ih->currentheight,
+ XmNarrowSize, ih->currentheight/2,
+ NULL);
+ }
+ else
+ iupdrvBaseLayoutUpdateMethod(ih);
+}
+
+static int motTextMapMethod(Ihandle* ih)
+{
+ int num_args = 0;
+ Arg args[30];
+ Widget parent = iupChildTreeGetNativeParentHandle(ih);
+ char* child_id = iupDialogGetChildIdStr(ih);
+ int spin = 0;
+ WidgetClass widget_class = xmTextWidgetClass;
+
+ if (ih->data->is_multiline)
+ {
+ Widget sb_win;
+ int wordwrap = 0;
+
+ if (iupAttribGetBoolean(ih, "WORDWRAP"))
+ {
+ wordwrap = 1;
+ ih->data->sb &= ~IUP_SB_HORIZ; /* must remove the horizontal scroolbar */
+ }
+
+ /******************************/
+ /* Create the scrolled window */
+ /******************************/
+
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */
+ iupmotSetArg(args, num_args, XmNscrollingPolicy, XmAPPLICATION_DEFINED);
+ iupmotSetArg(args, num_args, XmNvisualPolicy, XmVARIABLE);
+ iupmotSetArg(args, num_args, XmNscrollBarDisplayPolicy, XmSTATIC); /* can NOT be XmAS_NEEDED because XmAPPLICATION_DEFINED */
+ iupmotSetArg(args, num_args, XmNspacing, 0); /* no space between scrollbars and text */
+ iupmotSetArg(args, num_args, XmNborderWidth, 0);
+ iupmotSetArg(args, num_args, XmNshadowThickness, 0);
+
+ sb_win = XtCreateManagedWidget(
+ child_id, /* child identifier */
+ xmScrolledWindowWidgetClass, /* widget class */
+ parent, /* widget parent */
+ args, num_args);
+
+ if (!sb_win)
+ return IUP_ERROR;
+
+ parent = sb_win;
+ child_id = "text";
+
+ num_args = 0;
+ iupmotSetArg(args, num_args, XmNeditMode, XmMULTI_LINE_EDIT);
+ if (wordwrap)
+ iupmotSetArg(args, num_args, XmNwordWrap, True);
+ }
+ else
+ {
+ widget_class = xmTextFieldWidgetClass;
+
+ if (iupAttribGetBoolean(ih, "SPIN"))
+ {
+ Widget spinbox;
+
+ num_args = 0;
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */
+ iupmotSetArg(args, num_args, XmNspacing, 0); /* no space between spin and text */
+ iupmotSetArg(args, num_args, XmNborderWidth, 0);
+ iupmotSetArg(args, num_args, XmNshadowThickness, 0);
+ iupmotSetArg(args, num_args, XmNmarginHeight, 0);
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0);
+ iupmotSetArg(args, num_args, XmNarrowSize, 8);
+
+ if (iupStrEqualNoCase(iupAttribGetStr(ih, "SPINALIGN"), "LEFT"))
+ iupmotSetArg(args, num_args, XmNarrowLayout, XmARROWS_BEGINNING);
+ else
+ iupmotSetArg(args, num_args, XmNarrowLayout, XmARROWS_END);
+
+ spinbox = XtCreateManagedWidget(
+ child_id, /* child identifier */
+ xmSpinBoxWidgetClass, /* widget class */
+ parent, /* widget parent */
+ args, num_args);
+
+ if (!spinbox)
+ return IUP_ERROR;
+
+ XtAddCallback(spinbox, XmNmodifyVerifyCallback, (XtCallbackProc)motTextSpinModifyVerifyCallback, (XtPointer)ih);
+
+ parent = spinbox;
+ child_id = "text";
+ spin = 1;
+
+ if (!iupAttribGetBoolean(ih, "SPINAUTO"))
+ iupAttribSetStr(ih, "_IUPMOT_SPIN_NOAUTO", "1");
+ }
+
+ num_args = 0;
+ iupmotSetArg(args, num_args, XmNeditMode, XmSINGLE_LINE_EDIT);
+
+ if (spin)
+ {
+ /* Spin Constraints */
+ iupmotSetArg(args, num_args, XmNspinBoxChildType, XmNUMERIC);
+ iupmotSetArg(args, num_args, XmNminimumValue, 0);
+ iupmotSetArg(args, num_args, XmNmaximumValue, 100);
+ iupmotSetArg(args, num_args, XmNposition, 0);
+
+ if (iupAttribGetBoolean(ih, "SPINWRAP"))
+ iupmotSetArg(args, num_args, XmNwrap, TRUE);
+ else
+ iupmotSetArg(args, num_args, XmNwrap, FALSE);
+ }
+ else
+ {
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */
+ }
+ }
+
+ iupmotSetArg(args, num_args, XmNx, 0); /* x-position */
+ iupmotSetArg(args, num_args, XmNy, 0); /* y-position */
+ iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */
+ iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */
+
+ iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* default padding */
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0);
+
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ iupmotSetArg(args, num_args, XmNtraversalOn, True);
+ else
+ iupmotSetArg(args, num_args, XmNtraversalOn, False);
+
+ iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP);
+ iupmotSetArg(args, num_args, XmNhighlightThickness, 2);
+ iupmotSetArg(args, num_args, XmNverifyBell, False);
+ iupmotSetArg(args, num_args, XmNspacing, 0);
+
+ if (iupAttribGetBoolean(ih, "BORDER"))
+ iupmotSetArg(args, num_args, XmNshadowThickness, 2);
+ else
+ iupmotSetArg(args, num_args, XmNshadowThickness, 0);
+
+ if (ih->data->is_multiline)
+ {
+ if (ih->data->sb & IUP_SB_HORIZ)
+ iupmotSetArg(args, num_args, XmNscrollHorizontal, True);
+ else
+ iupmotSetArg(args, num_args, XmNscrollHorizontal, False);
+
+ if (ih->data->sb & IUP_SB_VERT)
+ iupmotSetArg(args, num_args, XmNscrollVertical, True);
+ else
+ iupmotSetArg(args, num_args, XmNscrollVertical, False);
+ }
+
+ ih->handle = XtCreateManagedWidget(
+ child_id, /* child identifier */
+ widget_class, /* widget class */
+ parent, /* widget parent */
+ args, num_args);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupDialogGetChildId(ih); /* must be after using the string */
+
+ if (ih->data->is_multiline)
+ {
+ iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)parent);
+ XtVaSetValues(parent, XmNworkWindow, ih->handle, NULL);
+ }
+ else if (spin)
+ iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)parent);
+
+ XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)motTextKeyPressEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, PointerMotionMask, False, (XtEventHandler)iupmotPointerMotionEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, ButtonPressMask|ButtonReleaseMask, False, (XtEventHandler)iupmotButtonPressReleaseEvent, (XtPointer)ih);
+
+ XtAddCallback(ih->handle, XmNmodifyVerifyCallback, (XtCallbackProc)motTextModifyVerifyCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNmotionVerifyCallback, (XtCallbackProc)motTextMotionVerifyCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNvalueChangedCallback, (XtCallbackProc)motTextValueChangedCallback, (XtPointer)ih);
+
+ /* Disable Drag Source */
+ iupmotDisableDragSource(ih->handle);
+
+ /* initialize the widget */
+ if (ih->data->is_multiline || spin)
+ XtRealizeWidget(parent);
+ else
+ XtRealizeWidget(ih->handle);
+
+ if (IupGetGlobal("_IUP_RESET_TXTCOLORS"))
+ {
+ iupmotSetGlobalColorAttrib(ih->handle, XmNbackground, "TXTBGCOLOR");
+ iupmotSetGlobalColorAttrib(ih->handle, XmNforeground, "TXTFGCOLOR");
+ IupSetGlobal("_IUP_RESET_TXTCOLORS", NULL);
+ }
+
+ IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)motTextConvertXYToPos);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvTextInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motTextMapMethod;
+ ic->LayoutUpdate = motTextLayoutUpdateMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Overwrite Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motTextSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iupdrvBaseSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT);
+
+ /* IupText only */
+ iupClassRegisterAttribute(ic, "PADDING", iupTextGetPaddingAttrib, motTextSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "VALUE", motTextGetValueAttrib, motTextSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTEDTEXT", motTextGetSelectedTextAttrib, motTextSetSelectedTextAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTION", motTextGetSelectionAttrib, motTextSetSelectionAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTIONPOS", motTextGetSelectionPosAttrib, motTextSetSelectionPosAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CARET", motTextGetCaretAttrib, motTextSetCaretAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CARETPOS", motTextGetCaretPosAttrib, motTextSetCaretPosAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "INSERT", NULL, motTextSetInsertAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "APPEND", NULL, motTextSetAppendAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "READONLY", motTextGetReadOnlyAttrib, motTextSetReadOnlyAttrib, NULL, NULL, IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "NC", iupTextGetNCAttrib, motTextSetNCAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "CLIPBOARD", NULL, motTextSetClipboardAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FORMATTING", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); /* formatting not supported in Motif */
+ iupClassRegisterAttribute(ic, "SCROLLTO", NULL, motTextSetScrollToAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SCROLLTOPOS", NULL, motTextSetScrollToPosAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPINMIN", NULL, motTextSetSpinMinAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPINMAX", NULL, motTextSetSpinMaxAttrib, IUPAF_SAMEASSYSTEM, "100", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPININC", NULL, motTextSetSpinIncAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPINVALUE", motTextGetSpinValueAttrib, motTextSetSpinValueAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/mot/iupmot_timer.c b/iup/src/mot/iupmot_timer.c
new file mode 100755
index 0000000..d23867e
--- /dev/null
+++ b/iup/src/mot/iupmot_timer.c
@@ -0,0 +1,70 @@
+/** \file
+ * \brief Timer for the Motif Driver.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <Xm/Xm.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_assert.h"
+#include "iup_timer.h"
+
+#include "iupmot_drv.h"
+
+
+static void motTimerProc(XtPointer client_data, XtIntervalId *id)
+{
+ Ihandle *ih = (Ihandle*)client_data;
+ Icallback cb;
+ (void)id;
+
+ if (!iupObjectCheck(ih)) /* control could be destroyed before timer callback */
+ return;
+
+ ih->serial = -1;
+ /* we have to restart the timer everytime */
+ iupdrvTimerRun(ih);
+
+ cb = IupGetCallback(ih, "ACTION_CB");
+ if (cb)
+ {
+ if (cb(ih)==IUP_CLOSE)
+ IupExitLoop();
+ }
+}
+
+void iupdrvTimerRun(Ihandle *ih)
+{
+ unsigned int time_ms;
+
+ if (ih->serial > 0) /* timer already started */
+ return;
+
+ time_ms = iupAttribGetInt(ih, "TIME");
+ if (time_ms > 0)
+ ih->serial = XtAppAddTimeOut(iupmot_appcontext, time_ms, motTimerProc, (XtPointer)ih);
+}
+
+void iupdrvTimerStop(Ihandle* ih)
+{
+ if (ih->serial > 0)
+ {
+ XtRemoveTimeOut(ih->serial);
+ ih->serial = -1;
+ }
+}
+
+void iupdrvTimerInitClass(Iclass* ic)
+{
+ (void)ic;
+}
diff --git a/iup/src/mot/iupmot_tips.c b/iup/src/mot/iupmot_tips.c
new file mode 100755
index 0000000..25bdbea
--- /dev/null
+++ b/iup/src/mot/iupmot_tips.c
@@ -0,0 +1,226 @@
+/** \file
+ * \brief Motif Driver TIPS Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+#include <Xm/Label.h>
+
+#include <stdio.h>
+
+#include "iup.h"
+
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+/* Default offset from cursor */
+#define TIP_X_OFFSET 12
+#define TIP_Y_OFFSET 12
+
+typedef struct _Imottips
+{
+ Widget Dialog;
+ Widget Label;
+ XtIntervalId ShowTimerId; /* Timer: from enterwin to show tip */
+ XtIntervalId HideTimerId; /* Timer: from visible to hide tip */
+ unsigned long ShowInterval; /* Time for tipPopupTimerId */
+ unsigned long HideInterval; /* Time for tipActiveTimerId */
+ int Visible;
+ Ihandle* ih;
+} Imottips;
+
+static Imottips mot_tips = {0, 0, 0, 0, 0, 0};
+
+static void motTipsShow(void)
+{
+ Window root, child;
+ int cx, cy, x, y;
+ unsigned int keys;
+ char* value;
+
+ XQueryPointer(iupmot_display, RootWindow(iupmot_display, iupmot_screen),
+ &root, &child, &x, &y, &cx, &cy, &keys);
+
+ value = iupAttribGet(mot_tips.ih, "TIPRECT");
+ if (value)
+ {
+ int x1, x2, y1, y2, wx = x, wy = y;
+ sscanf(value, "%d %d %d %d", &x1, &y1, &x2, &y2);
+ iupdrvScreenToClient(mot_tips.ih, &wx, &wy);
+ if (wx < x1 || wx > x2 || wy < y1 || wy > y2)
+ {
+ iupmotTipLeaveNotify();
+ return;
+ }
+ }
+
+ XtVaSetValues(mot_tips.Dialog,
+ XmNx, (XtArgVal)(x+TIP_X_OFFSET),
+ XmNy, (XtArgVal)(y+TIP_Y_OFFSET),
+ NULL);
+
+ if (mot_tips.Visible)
+ XRaiseWindow(iupmot_display, XtWindow(mot_tips.Dialog));
+ else
+ XtMapWidget(mot_tips.Dialog);
+
+ mot_tips.ShowTimerId = (XtIntervalId) NULL;
+ mot_tips.Visible = TRUE;
+}
+
+static void motTipsHide(void)
+{
+ mot_tips.HideTimerId = (XtIntervalId) NULL;
+ iupmotTipLeaveNotify();
+}
+
+static int motTipsSet(Ihandle *ih)
+{
+ char* tipText = iupAttribGet(ih, "TIP");
+ if (!tipText)
+ return FALSE;
+
+ if (!mot_tips.Dialog)
+ {
+ mot_tips.Dialog = XtVaAppCreateShell(" ", "tip",
+ overrideShellWidgetClass, iupmot_display,
+ XmNmappedWhenManaged, False,
+ NULL);
+
+ mot_tips.Label = XtVaCreateManagedWidget("label tip",
+ xmLabelWidgetClass, mot_tips.Dialog, /* must use IupGetAttribute to use inheritance */
+ XmNforeground, iupmotColorGetPixelStr(IupGetAttribute(ih, "TIPFGCOLOR")),
+ XmNbackground, iupmotColorGetPixelStr(IupGetAttribute(ih, "TIPBGCOLOR")),
+ NULL);
+
+ XtRealizeWidget(mot_tips.Dialog);
+ }
+
+ /* set label font */
+ {
+ XmFontList fontlist = (XmFontList)iupmotGetFontListAttrib(ih);
+ char* value = iupAttribGetStr(ih, "TIPFONT");
+ if (value)
+ {
+ if (iupStrEqualNoCase(value, "SYSTEM"))
+ fontlist = NULL;
+ else
+ fontlist = iupmotGetFontList(iupAttribGet(ih, "TIPFOUNDRY"), value);
+ }
+
+ if (fontlist)
+ XtVaSetValues(mot_tips.Label, XmNfontList, fontlist, NULL);
+ }
+
+ /* set label contents */
+ iupmotSetString(mot_tips.Label, XmNlabelString, tipText);
+
+ /* set label size */
+ {
+ int lw = 0, lh = 0;
+ iupdrvFontGetMultiLineStringSize(ih, tipText, &lw, &lh);
+
+ /* add room for margin */
+ lw += 2*(2);
+ lh += 2*(2);
+
+ XtVaSetValues(mot_tips.Label,
+ XmNwidth, (XtArgVal)lw,
+ XmNheight, (XtArgVal)lh,
+ NULL);
+ XtVaSetValues(mot_tips.Dialog,
+ XmNwidth, (XtArgVal)lw,
+ XmNheight, (XtArgVal)lh,
+ NULL);
+ }
+
+ mot_tips.ShowTimerId = (XtIntervalId) NULL;
+ mot_tips.HideTimerId = (XtIntervalId) NULL;
+ mot_tips.Visible = FALSE;
+ mot_tips.ShowInterval = 500; /* 1/2 second to show */
+
+ {
+ int delay = IupGetInt(ih, "TIPDELAY"); /* must use IupGetInt to use inheritance */
+ mot_tips.HideInterval = delay + mot_tips.ShowInterval;
+ }
+
+ return TRUE;
+}
+
+int iupdrvBaseSetTipVisibleAttrib(Ihandle* ih, const char* value)
+{
+ /* must use IupGetAttribute to use inheritance */
+ if (!IupGetAttribute(ih, "TIP"))
+ return 0;
+
+ if (iupStrBoolean(value))
+ iupmotTipEnterNotify(ih);
+ else
+ iupmotTipLeaveNotify();
+
+ return 0;
+}
+
+void iupmotTipEnterNotify(Ihandle *ih)
+{
+ iupmotTipLeaveNotify();
+
+ if (motTipsSet(ih) == FALSE)
+ return;
+
+ mot_tips.ih = ih;
+
+ mot_tips.ShowTimerId = XtAppAddTimeOut( /* EnterWin to Show */
+ iupmot_appcontext,
+ mot_tips.ShowInterval,
+ (XtTimerCallbackProc)motTipsShow,
+ NULL);
+ mot_tips.HideTimerId = XtAppAddTimeOut( /* Visible to Hide */
+ iupmot_appcontext,
+ mot_tips.HideInterval,
+ (XtTimerCallbackProc)motTipsHide,
+ NULL);
+}
+
+void iupmotTipLeaveNotify(void)
+{
+ if (mot_tips.ShowTimerId)
+ {
+ XtRemoveTimeOut(mot_tips.ShowTimerId);
+ mot_tips.ShowTimerId = (XtIntervalId) NULL;
+ }
+ if (mot_tips.HideTimerId)
+ {
+ XtRemoveTimeOut(mot_tips.HideTimerId);
+ mot_tips.HideTimerId = (XtIntervalId) NULL;
+ }
+ if (mot_tips.Visible)
+ {
+ XtUnmapWidget(mot_tips.Dialog);
+ mot_tips.Visible = FALSE;
+ }
+}
+
+void iupmotTipsFinish(void)
+{
+ if (mot_tips.Dialog)
+ {
+ XtDestroyWidget(mot_tips.Dialog);
+ memset(&mot_tips, 0, sizeof(Imottips));
+ }
+}
+
+int iupdrvBaseSetTipAttrib(Ihandle* ih, const char* value)
+{
+ /* implement this stub here because of the other drivers. */
+ (void)ih;
+ (void)value;
+ return 1;
+}
diff --git a/iup/src/mot/iupmot_toggle.c b/iup/src/mot/iupmot_toggle.c
new file mode 100755
index 0000000..b18f24d
--- /dev/null
+++ b/iup/src/mot/iupmot_toggle.c
@@ -0,0 +1,469 @@
+/** \file
+ * \brief Toggle Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+#include <Xm/ToggleB.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_toggle.h"
+#include "iup_drv.h"
+#include "iup_image.h"
+#include "iup_key.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+void iupdrvToggleAddCheckBox(int *x, int *y)
+{
+ (*x) += 15+6+3;
+ if ((*y) < 15+6) (*y) = 12+6; /* minimum height */
+ (*y) += 6;
+}
+
+
+/*********************************************************************************/
+
+
+static int motToggleSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_TEXT)
+ {
+ char* parent_value = iupAttribGetInheritNativeParent(ih, "BGCOLOR");
+ if (!parent_value)
+ {
+ /* if not defined at a native parent,
+ then change the toggle button color to the given color instead using the default */
+ if (iupdrvBaseSetBgColorAttrib(ih, value)) /* let XmChangeColor do its job */
+ {
+ parent_value = IupGetGlobal("DLGBGCOLOR");
+ XtVaSetValues(ih->handle, XmNbackground, iupmotColorGetPixelStr(parent_value), NULL); /* reset just the background */
+
+ if (ih->data->radio)
+ XtVaSetValues(ih->handle, XmNselectColor, iupmotColorGetPixel(0, 0, 0), NULL);
+ XtVaSetValues(ih->handle, XmNunselectColor, iupmotColorGetPixelStr(value), NULL);
+ return 1;
+ }
+ }
+ else
+ {
+ /* ignore given value, must use only from parent */
+ if (iupdrvBaseSetBgColorAttrib(ih, parent_value))
+ {
+ if (ih->data->radio)
+ XtVaSetValues(ih->handle, XmNselectColor, iupmotColorGetPixel(0, 0, 0), NULL);
+ XtVaSetValues(ih->handle, XmNunselectColor, iupmotColorGetPixelStr(parent_value), NULL);
+ return 1;
+ }
+ }
+ return 0;
+ }
+ else
+ return iupdrvBaseSetBgColorAttrib(ih, value);
+}
+
+static int motToggleSetBackgroundAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_TEXT)
+ {
+ Pixel color;
+
+ /* ignore given value, must use only from parent */
+ value = iupAttribGetInheritNativeParent(ih, "BACKGROUND");
+
+ color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ {
+ XtVaSetValues(ih->handle, XmNbackground, color, NULL);
+ return 1;
+ }
+ else
+ {
+ Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0);
+ if (pixmap)
+ {
+ XtVaSetValues(ih->handle, XmNbackgroundPixmap, pixmap, NULL);
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+static int motToggleSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_TEXT)
+ {
+ iupmotSetMnemonicTitle(ih, value);
+ return 1;
+ }
+
+ return 0;
+}
+
+static int motToggleSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char align;
+ char value1[30]="", value2[30]="";
+
+ if (ih->data->type == IUP_TOGGLE_TEXT)
+ return 0;
+
+ iupStrToStrStr(value, value1, value2, ':'); /* value2 is ignored, NOT supported in Motif */
+
+ if (iupStrEqualNoCase(value1, "ARIGHT"))
+ align = XmALIGNMENT_END;
+ else if (iupStrEqualNoCase(value1, "ACENTER"))
+ align = XmALIGNMENT_CENTER;
+ else /* "ALEFT" */
+ align = XmALIGNMENT_BEGINNING;
+
+ XtVaSetValues (ih->handle, XmNalignment, align, NULL);
+ return 1;
+}
+
+static int motToggleSetImageAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ iupmotSetPixmap(ih, value, XmNlabelPixmap, 0);
+
+ if (!iupAttribGet(ih, "IMINACTIVE"))
+ {
+ /* if not active and IMINACTIVE is not defined
+ then automaticaly create one based on IMAGE */
+ iupmotSetPixmap(ih, value, XmNlabelInsensitivePixmap, 1); /* make_inactive */
+ }
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int motToggleSetImInactiveAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ iupmotSetPixmap(ih, value, XmNlabelInsensitivePixmap, 0);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int motToggleSetImPressAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ iupmotSetPixmap(ih, value, XmNselectPixmap, 0);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int motToggleSetValueAttrib(Ihandle* ih, const char* value)
+{
+ Ihandle *radio;
+ unsigned char check;
+
+ if (iupStrEqualNoCase(value,"NOTDEF"))
+ check = XmINDETERMINATE;
+ else if (iupStrBoolean(value))
+ check = XmSET;
+ else
+ check = XmUNSET;
+
+ /* This is necessary because Motif toggle does not have support for radio.
+ It is implemented using an external RadioBox that we do not use. */
+ radio = iupRadioFindToggleParent(ih);
+ if (radio)
+ {
+ Ihandle* last_tg;
+ unsigned char oldcheck;
+
+ XtVaGetValues(ih->handle, XmNset, &oldcheck, NULL);
+
+ last_tg = (Ihandle*)iupAttribGet(radio, "_IUPMOT_LASTTOGGLE");
+ if (check)
+ {
+ if (iupObjectCheck(last_tg) && last_tg != ih)
+ XtVaSetValues(last_tg->handle, XmNset, XmUNSET, NULL);
+ iupAttribSetStr(radio, "_IUPMOT_LASTTOGGLE", (char*)ih);
+ }
+
+ if (last_tg != ih && oldcheck != check)
+ XtVaSetValues(ih->handle, XmNset, check, NULL);
+ }
+ else
+ XtVaSetValues(ih->handle, XmNset, check, NULL);
+
+ return 0;
+}
+
+static char* motToggleGetValueAttrib(Ihandle* ih)
+{
+ unsigned char check = 0;
+ XtVaGetValues (ih->handle, XmNset, &check, NULL);
+ if (check == XmINDETERMINATE)
+ return "NOTDEF";
+ else if (check == XmSET)
+ return "ON";
+ else
+ return "OFF";
+}
+
+static int motToggleSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+ if (ih->handle && ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ XtVaSetValues(ih->handle, XmNmarginHeight, ih->data->vert_padding,
+ XmNmarginWidth, ih->data->horiz_padding, NULL);
+ }
+ return 0;
+}
+
+static char* motToggleGetSelectColorAttrib(Ihandle* ih)
+{
+ unsigned char r, g, b;
+ Pixel color;
+ char* str = iupStrGetMemory(20);
+ XtVaGetValues(ih->handle, XmNselectColor, &color, NULL);
+ iupmotColorGetRGB(color, &r, &g, &b);
+ sprintf(str, "%d %d %d", (int)r, (int)g, (int)b);
+ return str;
+}
+
+static int motToggleSetSelectColorAttrib(Ihandle* ih, const char *value)
+{
+ Pixel color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ XtVaSetValues(ih->handle, XmNselectColor, color, NULL);
+ return 1;
+}
+
+static void motToggleValueChangedCallback(Widget w, Ihandle* ih, XmToggleButtonCallbackStruct* call_data)
+{
+ Ihandle *radio;
+ IFni cb;
+ int check = call_data->set;
+
+ /* Must manually hide the tip if the toggle is pressed. */
+ iupmotTipLeaveNotify();
+
+ /* This is necessary because Motif toggle does not have support for radio.
+ It is implemented using an external RadioBox that we do not use. */
+ radio = iupRadioFindToggleParent(ih);
+ if (radio)
+ {
+ if (check)
+ {
+ Ihandle* last_tg = (Ihandle*)iupAttribGet(radio, "_IUPMOT_LASTTOGGLE");
+ if (iupObjectCheck(last_tg) && last_tg != ih)
+ {
+ /* uncheck last toggle */
+ XtVaSetValues(last_tg->handle, XmNset, XmUNSET, NULL);
+
+ cb = (IFni) IupGetCallback(last_tg, "ACTION");
+ if (cb && cb(last_tg, 0) == IUP_CLOSE)
+ IupExitLoop();
+
+ iupBaseCallValueChangedCb(last_tg);
+ }
+ iupAttribSetStr(radio, "_IUPMOT_LASTTOGGLE", (char*)ih);
+
+ if (last_tg != ih)
+ {
+ cb = (IFni)IupGetCallback(ih, "ACTION");
+ if (cb && cb (ih, 1) == IUP_CLOSE)
+ IupExitLoop();
+
+ iupBaseCallValueChangedCb(ih);
+ }
+ }
+ else
+ {
+ /* Force stay checked */
+ XtVaSetValues(ih->handle, XmNset, XmSET, NULL);
+ }
+ }
+ else
+ {
+ if (check == XmINDETERMINATE)
+ check = -1;
+
+ cb = (IFni)IupGetCallback(ih, "ACTION");
+ if (cb)
+ {
+ if (cb(ih, check) == IUP_CLOSE)
+ IupExitLoop();
+ }
+
+ iupBaseCallValueChangedCb(ih);
+ }
+
+ (void)w;
+}
+
+static int motToggleMapMethod(Ihandle* ih)
+{
+ Ihandle* radio = iupRadioFindToggleParent(ih);
+ char* value;
+ int num_args = 0;
+ Arg args[40];
+
+ if (radio)
+ ih->data->radio = 1;
+
+ value = iupAttribGet(ih, "IMAGE");
+ if (value)
+ {
+ ih->data->type = IUP_TOGGLE_IMAGE;
+ iupmotSetArg(args, num_args, XmNlabelType, XmPIXMAP);
+ }
+ else
+ {
+ ih->data->type = IUP_TOGGLE_TEXT;
+ iupmotSetArg(args, num_args, XmNlabelType, XmSTRING);
+ }
+
+ /* Core */
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */
+ iupmotSetArg(args, num_args, XmNx, 0); /* x-position */
+ iupmotSetArg(args, num_args, XmNy, 0); /* y-position */
+ iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */
+ iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */
+ /* Primitive */
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ iupmotSetArg(args, num_args, XmNtraversalOn, True);
+ else
+ iupmotSetArg(args, num_args, XmNtraversalOn, False);
+ iupmotSetArg(args, num_args, XmNhighlightThickness, 2);
+ iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP);
+ /* Label */
+ iupmotSetArg(args, num_args, XmNrecomputeSize, False); /* no automatic resize from text */
+ iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* default padding */
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0);
+ iupmotSetArg(args, num_args, XmNmarginTop, 0); /* no extra margins */
+ iupmotSetArg(args, num_args, XmNmarginLeft, 0);
+ iupmotSetArg(args, num_args, XmNmarginBottom, 0);
+ iupmotSetArg(args, num_args, XmNmarginRight, 0);
+
+ if (radio)
+ {
+ iupmotSetArg(args, num_args, XmNtoggleMode, XmTOGGLE_BOOLEAN);
+ iupmotSetArg(args, num_args, XmNindicatorType, XmONE_OF_MANY_ROUND);
+
+ if (!iupAttribGet(radio, "_IUPMOT_LASTTOGGLE"))
+ {
+ /* this is the first toggle in the radio, and the last toggle with VALUE=ON */
+ iupAttribSetStr(ih, "VALUE","ON");
+ }
+ }
+ else
+ {
+ if (ih->data->type == IUP_TOGGLE_TEXT && iupAttribGetBoolean(ih, "3STATE"))
+ iupmotSetArg(args, num_args, XmNtoggleMode, XmTOGGLE_INDETERMINATE);
+ else
+ iupmotSetArg(args, num_args, XmNtoggleMode, XmTOGGLE_BOOLEAN);
+ iupmotSetArg(args, num_args, XmNindicatorType, XmN_OF_MANY);
+ }
+
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ iupmotSetArg(args, num_args, XmNindicatorOn, XmINDICATOR_NONE);
+ iupmotSetArg(args, num_args, XmNalignment, XmALIGNMENT_CENTER);
+ iupmotSetArg(args, num_args, XmNshadowThickness, 2);
+ }
+ else
+ {
+ iupmotSetArg(args, num_args, XmNspacing, 3);
+ iupmotSetArg(args, num_args, XmNindicatorOn, XmINDICATOR_CHECK_BOX);
+ iupmotSetArg(args, num_args, XmNalignment, XmALIGNMENT_BEGINNING);
+ if (radio)
+ {
+ iupmotSetArg(args, num_args, XmNindicatorSize, 13);
+ iupmotSetArg(args, num_args, XmNselectColor, iupmotColorGetPixel(0, 0, 0));
+ }
+ else
+ iupmotSetArg(args, num_args, XmNindicatorSize, 15);
+
+ iupmotSetArg(args, num_args, XmNshadowThickness, 0);
+ iupmotSetArg(args, num_args, XmNdetailShadowThickness, 2);
+ }
+
+ ih->handle = XtCreateManagedWidget(
+ iupDialogGetChildIdStr(ih), /* child identifier */
+ xmToggleButtonWidgetClass, /* widget class */
+ iupChildTreeGetNativeParentHandle(ih), /* widget parent */
+ args, num_args);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupDialogGetChildId(ih); /* must be after using the string */
+
+ XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih);
+
+ XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+
+ XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih);
+
+ XtAddCallback(ih->handle, XmNvalueChangedCallback, (XtCallbackProc)motToggleValueChangedCallback, (XtPointer)ih);
+
+ /* Disable Drag Source */
+ iupmotDisableDragSource(ih->handle);
+
+ /* initialize the widget */
+ XtRealizeWidget(ih->handle);
+
+ if (ih->data->type == IUP_TOGGLE_TEXT)
+ iupmotSetString(ih->handle, XmNlabelString, "");
+
+ return IUP_NOERROR;
+}
+
+void iupdrvToggleInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motToggleMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Overwrite Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", iupmotGetBgColorAttrib, motToggleSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motToggleSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iupdrvBaseSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "TITLE", NULL, motToggleSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupToggle only */
+ iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, motToggleSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "ACENTER:ACENTER", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, motToggleSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, motToggleSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMPRESS", NULL, motToggleSetImPressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUE", motToggleGetValueAttrib, motToggleSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTCOLOR", motToggleGetSelectColorAttrib, motToggleSetSelectColorAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "PADDING", iupToggleGetPaddingAttrib, motToggleSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+}
diff --git a/iup/src/mot/iupmot_tree.c b/iup/src/mot/iupmot_tree.c
new file mode 100755
index 0000000..eb230af
--- /dev/null
+++ b/iup/src/mot/iupmot_tree.c
@@ -0,0 +1,2848 @@
+#include <Xm/Xm.h>
+#include <Xm/Form.h>
+#include <Xm/Container.h>
+#include <Xm/IconG.h>
+#include <Xm/ScrolledW.h>
+#include <Xm/XmosP.h>
+#include <Xm/Text.h>
+#include <Xm/Transfer.h>
+#include <Xm/DragDrop.h>
+#include <X11/keysym.h>
+
+#include <sys/stat.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+#include <limits.h>
+#include <time.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_dialog.h"
+#include "iup_layout.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvinfo.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_key.h"
+#include "iup_image.h"
+#include "iup_array.h"
+#include "iup_tree.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+typedef struct _motTreeItemData
+{
+ Pixmap image, image_mask;
+ Pixmap image_expanded, image_expanded_mask;
+ unsigned char kind;
+ void* userdata;
+} motTreeItemData;
+
+
+static void motTreeShowEditField(Ihandle* ih, Widget wItem);
+static int motTreeGetNodeId(Ihandle* ih, Widget wItem);
+
+typedef int (*motTreeNodeFunc)(Ihandle* ih, Widget wItem, void* userdata);
+
+static int motTreeForEach(Ihandle* ih, Widget wItem, motTreeNodeFunc func, void* userdata)
+{
+ WidgetList wItemChildList = NULL;
+ int i, numChild;
+
+ if (!wItem)
+ wItem = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+
+ if (!func(ih, wItem, userdata))
+ return 0;
+
+ numChild = XmContainerGetItemChildren(ih->handle, wItem, &wItemChildList);
+ for (i=0; i<numChild; i++)
+ {
+ /* Recursively traverse child items */
+ if (!motTreeForEach(ih, wItemChildList[i], func, userdata))
+ {
+ XtFree((char*)wItemChildList);
+ return 0;
+ }
+ }
+ if (wItemChildList) XtFree((char*)wItemChildList);
+
+ return 1;
+}
+
+/*****************************************************************************/
+/* COPYING ITEMS (Branches and its children) */
+/*****************************************************************************/
+/* Insert the copied item in a new location. Returns the new item. */
+static Widget motTreeCopyItem(Ihandle* ih, Widget wItem, Widget wParent, int pos, int full_copy)
+{
+ Widget wNewItem;
+ XmString title;
+ motTreeItemData *itemData;
+ Pixel fgcolor, bgcolor;
+ int num_args = 0;
+ Arg args[30];
+ Pixmap image = XmUNSPECIFIED_PIXMAP, mask = XmUNSPECIFIED_PIXMAP;
+ unsigned char state;
+
+ iupmotSetArg(args, num_args, XmNentryParent, wParent);
+ iupmotSetArg(args, num_args, XmNmarginHeight, ih->data->spacing);
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0);
+ iupmotSetArg(args, num_args, XmNviewType, XmSMALL_ICON);
+ iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP);
+ iupmotSetArg(args, num_args, XmNtraversalOn, True);
+ iupmotSetArg(args, num_args, XmNshadowThickness, 0);
+
+ /* Get values to copy */
+ XtVaGetValues(wItem, XmNlabelString, &title,
+ XmNuserData, &itemData,
+ XmNforeground, &fgcolor,
+ XmNsmallIconPixmap, &image,
+ XmNsmallIconMask, &mask,
+ XmNoutlineState, &state,
+ NULL);
+
+ if (full_copy) /* during a full copy the userdata reference is not copied */
+ {
+ /* create a new one */
+ motTreeItemData* itemDataNew = malloc(sizeof(motTreeItemData));
+ memcpy(itemDataNew, itemData, sizeof(motTreeItemData));
+ itemDataNew->userdata = NULL;
+ itemData = itemDataNew;
+ }
+
+ iupmotSetArg(args, num_args, XmNlabelString, title);
+ iupmotSetArg(args, num_args, XmNuserData, itemData);
+ iupmotSetArg(args, num_args, XmNforeground, fgcolor);
+ iupmotSetArg(args, num_args, XmNsmallIconPixmap, image);
+ iupmotSetArg(args, num_args, XmNsmallIconMask, mask);
+ iupmotSetArg(args, num_args, XmNoutlineState, state);
+
+ iupmotSetArg(args, num_args, XmNentryParent, wParent);
+ iupmotSetArg(args, num_args, XmNpositionIndex, pos);
+
+ XtVaGetValues(ih->handle, XmNbackground, &bgcolor, NULL);
+ iupmotSetArg(args, num_args, XmNbackground, bgcolor);
+
+ wNewItem = XtCreateManagedWidget("icon", xmIconGadgetClass, ih->handle, args, num_args);
+
+ /* Root always expanded */
+ XtVaSetValues((Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"), XmNoutlineState, XmEXPANDED, NULL);
+
+ XtRealizeWidget(wNewItem);
+
+ return wNewItem;
+}
+
+static void motTreeCopyChildren(Ihandle* ih, Widget wItemSrc, Widget wItemDst, int full_copy)
+{
+ WidgetList wItemChildList = NULL;
+ int i = 0;
+ int numChild = XmContainerGetItemChildren(ih->handle, wItemSrc, &wItemChildList);
+ while(i != numChild)
+ {
+ Widget wNewItem = motTreeCopyItem(ih, wItemChildList[i], wItemDst, i, full_copy); /* Use the same order they where enumerated */
+
+ /* Recursively transfer all the items */
+ motTreeCopyChildren(ih, wItemChildList[i], wNewItem, full_copy);
+
+ /* Go to next sibling item */
+ i++;
+ }
+
+ if (wItemChildList) XtFree((char*)wItemChildList);
+}
+
+/* Copies all items in a branch to a new location. Returns the new branch node. */
+static Widget motTreeCopyNode(Ihandle* ih, Widget wItemSrc, Widget wItemDst, int full_copy)
+{
+ Widget wNewItem, wParent;
+ motTreeItemData *itemDataDst;
+ unsigned char stateDst;
+ int pos;
+
+ XtVaGetValues(wItemDst, XmNoutlineState, &stateDst,
+ XmNuserData, &itemDataDst,
+ NULL);
+
+ if (itemDataDst->kind == ITREE_BRANCH && stateDst == XmEXPANDED)
+ {
+ /* copy as first child of expanded branch */
+ wParent = wItemDst;
+ pos = 0;
+ }
+ else
+ {
+ /* copy as next brother of item or collapsed branch */
+ XtVaGetValues(wItemDst, XmNentryParent, &wParent, NULL);
+ XtVaGetValues(wItemDst, XmNpositionIndex, &pos, NULL);
+ pos++;
+ }
+
+ wNewItem = motTreeCopyItem(ih, wItemSrc, wParent, pos, full_copy);
+
+ motTreeCopyChildren(ih, wItemSrc, wNewItem, full_copy);
+
+ return wNewItem;
+}
+
+static void motTreeContainerDeselectAll(Ihandle *ih)
+{
+ XKeyEvent ev;
+
+ memset(&ev, 0, sizeof(XKeyEvent));
+ ev.type = KeyPress;
+ ev.display = XtDisplay(ih->handle);
+ ev.send_event = True;
+ ev.root = RootWindow(iupmot_display, iupmot_screen);
+ ev.time = clock()*CLOCKS_PER_SEC;
+ ev.window = XtWindow(ih->handle);
+ ev.state = ControlMask;
+ ev.keycode = XK_backslash;
+ ev.same_screen = True;
+
+ XtCallActionProc(ih->handle, "ContainerDeselectAll", (XEvent*)&ev, 0, 0);
+}
+
+static void motTreeContainerSelectAll(Ihandle *ih)
+{
+ XKeyEvent ev;
+
+ memset(&ev, 0, sizeof(XKeyEvent));
+ ev.type = KeyPress;
+ ev.display = XtDisplay(ih->handle);
+ ev.send_event = True;
+ ev.root = RootWindow(iupmot_display, iupmot_screen);
+ ev.time = clock()*CLOCKS_PER_SEC;
+ ev.window = XtWindow(ih->handle);
+ ev.state = ControlMask;
+ ev.keycode = XK_slash;
+ ev.same_screen = True;
+
+ XtCallActionProc(ih->handle, "ContainerSelectAll", (XEvent*)&ev, 0, 0);
+}
+
+static Widget motTreeGetLastVisibleNode(Ihandle* ih, Widget wItem)
+{
+ unsigned char itemState;
+
+ XtVaGetValues(wItem, XmNoutlineState, &itemState, NULL);
+
+ if (itemState == XmEXPANDED)
+ {
+ WidgetList wChildrenTree = NULL;
+ int numChildren = XmContainerGetItemChildren(ih->handle, wItem, &wChildrenTree);
+ if(numChildren)
+ wItem = motTreeGetLastVisibleNode(ih, wChildrenTree[numChildren - 1]);
+ if (wChildrenTree) XtFree((char*)wChildrenTree);
+ }
+
+ return wItem;
+}
+
+static Widget motTreeFindVisibleNodeId(Ihandle* ih, WidgetList itemList, int numItems, Widget itemNode)
+{
+ Widget itemChild;
+ WidgetList itemChildList;
+ int i = 0;
+ int numChild;
+ unsigned char itemState;
+
+ while(i != numItems)
+ {
+ /* ID control to traverse items */
+ ih->data->id_control++; /* not the real id since it counts only the visible ones */
+
+ /* StateID founded! */
+ if(itemList[i] == itemNode)
+ return itemList[i];
+
+ /* Check whether we have child items */
+ itemChildList = NULL;
+ numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList);
+ XtVaGetValues(itemList[i], XmNoutlineState, &itemState, NULL);
+
+ /* The itemWidget has child and it is expanded (visible) */
+ if (numChild && itemState == XmEXPANDED)
+ {
+ /* pass the list of children of this item */
+ itemChild = motTreeFindVisibleNodeId(ih, itemChildList, numChild, itemNode);
+
+ /* StateID founded! */
+ if(itemChild)
+ {
+ XtFree((char*)itemChildList);
+ return itemChild;
+ }
+ }
+
+ if (itemChildList) XtFree((char*)itemChildList);
+ /* Go to next sibling item */
+ i++;
+ }
+
+ return NULL;
+}
+
+static Widget motTreeFindVisibleNodeFromId(Ihandle* ih, WidgetList itemList, int numItems)
+{
+ Widget itemChild;
+ WidgetList itemChildList;
+ int i = 0;
+ int numChild;
+ unsigned char itemState;
+
+ while(i != numItems)
+ {
+ /* ID control to traverse items */
+ ih->data->id_control--; /* not the real id since it counts only the visible ones */
+
+ /* StateID founded! */
+ if(ih->data->id_control < 0)
+ return itemList[i];
+
+ /* Check whether we have child items */
+ itemChildList = NULL;
+ numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList);
+ XtVaGetValues(itemList[i], XmNoutlineState, &itemState, NULL);
+
+ /* The itemWidget has child and it is expanded (visible) */
+ if (numChild && itemState == XmEXPANDED)
+ {
+ /* pass the list of children of this item */
+ itemChild = motTreeFindVisibleNodeFromId(ih, itemChildList, numChild);
+
+ /* StateID founded! */
+ if(ih->data->id_control < 0)
+ {
+ if (itemChildList) XtFree((char*)itemChildList);
+ return itemChild;
+ }
+ }
+
+ if (itemChildList) XtFree((char*)itemChildList);
+ /* Go to next sibling item */
+ i++;
+ }
+
+ return NULL;
+}
+
+static Widget motTreeGetNextVisibleNode(Ihandle* ih, Widget wRoot, Widget wItem)
+{
+ Widget wNext;
+
+ ih->data->id_control = -1;
+ motTreeFindVisibleNodeId(ih, &wRoot, 1, wItem);
+ ih->data->id_control++; /* more 1 visible node */
+
+ wNext = motTreeFindVisibleNodeFromId(ih, &wRoot, 1);
+
+ if (ih->data->id_control >= 0)
+ wNext = motTreeGetLastVisibleNode(ih, wRoot);
+
+ return wNext;
+}
+
+static Widget motTreeGetPreviousVisibleNode(Ihandle* ih, Widget wRoot, Widget wItem)
+{
+ ih->data->id_control = -1;
+ motTreeFindVisibleNodeId(ih, &wRoot, 1, wItem);
+ ih->data->id_control--; /* less 1 visible node */
+
+ if (ih->data->id_control < 0)
+ ih->data->id_control = 0; /* Begin of tree = Root id */
+
+ return motTreeFindVisibleNodeFromId(ih, &wRoot, 1);
+}
+
+static void motTreeUpdateBgColor(Ihandle* ih, WidgetList itemList, int numItems, Pixel bgcolor)
+{
+ WidgetList itemChildList;
+ int i = 0;
+ int numChild;
+
+ while(i != numItems)
+ {
+ XtVaSetValues(itemList[i], XmNbackground, bgcolor, NULL);
+
+ /* Check whether we have child items */
+ itemChildList = NULL;
+ numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList);
+ if(numChild)
+ motTreeUpdateBgColor(ih, itemChildList, numChild, bgcolor);
+ if (itemChildList) XtFree((char*)itemChildList);
+
+ /* Go to next sibling item */
+ i++;
+ }
+}
+
+static void motTreeUpdateImages(Ihandle* ih, WidgetList itemList, int numItems, int mode)
+{
+ motTreeItemData *itemData;
+ int i = 0;
+
+ /* called when one of the default images is changed */
+
+ while(i != numItems)
+ {
+ /* Get node attributes */
+ XtVaGetValues(itemList[i], XmNuserData, &itemData, NULL);
+
+ if (itemData->kind == ITREE_BRANCH)
+ {
+ unsigned char itemState;
+ XtVaGetValues(itemList[i], XmNoutlineState, &itemState, NULL);
+
+ if (itemState == XmEXPANDED)
+ {
+ if (mode == ITREE_UPDATEIMAGE_EXPANDED)
+ {
+ XtVaSetValues(itemList[i], XmNsmallIconPixmap, (itemData->image_expanded!=XmUNSPECIFIED_PIXMAP)? itemData->image_expanded: (Pixmap)ih->data->def_image_expanded, NULL);
+ XtVaSetValues(itemList[i], XmNsmallIconMask, (itemData->image_expanded_mask!=XmUNSPECIFIED_PIXMAP)? itemData->image_expanded_mask: (Pixmap)ih->data->def_image_expanded_mask, NULL);
+ }
+ }
+ else
+ {
+ if (mode == ITREE_UPDATEIMAGE_COLLAPSED)
+ {
+ XtVaSetValues(itemList[i], XmNsmallIconPixmap, (itemData->image!=XmUNSPECIFIED_PIXMAP)? itemData->image: (Pixmap)ih->data->def_image_collapsed, NULL);
+ XtVaSetValues(itemList[i], XmNsmallIconMask, (itemData->image_mask!=XmUNSPECIFIED_PIXMAP)? itemData->image_mask: (Pixmap)ih->data->def_image_collapsed_mask, NULL);
+ }
+ }
+
+ /* Recursively traverse child items */
+ {
+ WidgetList itemChildList;
+ int numChild;
+ itemChildList = NULL;
+ numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList);
+ motTreeUpdateImages(ih, itemChildList, numChild, mode);
+ if (itemChildList) XtFree((char*)itemChildList);
+ }
+ }
+ else
+ {
+ if (mode == ITREE_UPDATEIMAGE_LEAF)
+ {
+ XtVaSetValues(itemList[i], XmNsmallIconPixmap, (itemData->image!=XmUNSPECIFIED_PIXMAP)? itemData->image: (Pixmap)ih->data->def_image_leaf, NULL);
+ XtVaSetValues(itemList[i], XmNsmallIconMask, (itemData->image_mask!=XmUNSPECIFIED_PIXMAP)? itemData->image_mask: (Pixmap)ih->data->def_image_leaf_mask, NULL);
+ }
+ }
+
+ /* Go to next sibling node */
+ i++;
+ }
+}
+
+static int motTreeSelectFunc(Ihandle* ih, Widget wItem, int *select)
+{
+ int do_select = *select;
+ if (do_select == -1)
+ {
+ unsigned char isSelected;
+ XtVaGetValues(wItem, XmNvisualEmphasis, &isSelected, NULL);
+ do_select = (isSelected == XmSELECTED)? 0: 1; /* toggle */
+ }
+
+ if (do_select)
+ XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL);
+ else
+ XtVaSetValues(wItem, XmNvisualEmphasis, XmNOT_SELECTED, NULL);
+
+ (void)ih;
+ return 1;
+}
+
+static void motTreeInvertAllNodeMarking(Ihandle* ih)
+{
+ int select = -1;
+ motTreeForEach(ih, NULL, (motTreeNodeFunc)motTreeSelectFunc, &select);
+}
+
+typedef struct _motTreeRange{
+ Widget wItem1, wItem2;
+ char inside, clear;
+}motTreeRange;
+
+static int motTreeSelectRangeFunc(Ihandle* ih, Widget wItem, motTreeRange* range)
+{
+ int end_range = 0;
+
+ if (range->inside == 0) /* detect the range start */
+ {
+ if (range->wItem1 == wItem) range->inside=1;
+ else if (range->wItem2 == wItem) range->inside=1;
+ }
+ else if (range->inside == 1) /* detect the range end */
+ {
+ if (range->wItem1 == wItem) end_range=1;
+ else if (range->wItem2 == wItem) end_range=1;
+ }
+
+ if (range->inside == 1) /* if inside, select */
+ XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL);
+ else if (range->clear) /* if outside and clear, unselect */
+ XtVaSetValues(wItem, XmNvisualEmphasis, XmNOT_SELECTED, NULL);
+
+ if (end_range || (range->inside && range->wItem1==range->wItem2))
+ range->inside=-1; /* update after selecting the node */
+
+ (void)ih;
+ return 1;
+}
+
+static void motTreeSelectRange(Ihandle* ih, Widget wItem1, Widget wItem2, int clear)
+{
+ motTreeRange range;
+ range.wItem1 = wItem1;
+ range.wItem2 = wItem2;
+ range.inside = 0;
+ range.clear = (char)clear;
+ motTreeForEach(ih, NULL, (motTreeNodeFunc)motTreeSelectRangeFunc, &range);
+}
+
+void motTreeExpandCollapseAllNodes(Ihandle* ih, WidgetList itemList, int numItems, unsigned char itemState)
+{
+ WidgetList itemChildList;
+ int numChild;
+ int i = 0;
+
+ while(i != numItems)
+ {
+ /* Check whether we have child items */
+ itemChildList = NULL;
+ numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList);
+
+ if(numChild)
+ {
+ XtVaSetValues(itemList[i], XmNoutlineState, itemState, NULL);
+ motTreeExpandCollapseAllNodes(ih, itemChildList, numChild, itemState);
+ }
+
+ if (itemChildList) XtFree((char*)itemChildList);
+ /* Go to next sibling item */
+ i++;
+ }
+}
+
+static void motTreeDestroyItemData(Ihandle* ih, Widget wItem)
+{
+ motTreeItemData *itemData = NULL;
+ XtVaGetValues(wItem, XmNuserData, &itemData, NULL);
+ if (itemData)
+ {
+ IFnis cb = (IFnis)IupGetCallback(ih, "NODEREMOVED_CB");
+ if (cb) cb(ih, motTreeGetNodeId(ih, wItem), (char*)itemData->userdata);
+ free(itemData);
+ XtVaSetValues(wItem, XmNuserData, NULL, NULL);
+ }
+}
+
+static void motTreeRemoveChildren(Ihandle* ih, WidgetList itemList, int numItems, int del_userdata)
+{
+ WidgetList itemChildList;
+ int numChild;
+ int i = 0;
+
+ while(i != numItems)
+ {
+ /* Check whether we have child items */
+ itemChildList = NULL;
+ numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList);
+ if (numChild)
+ motTreeRemoveChildren(ih, itemChildList, numChild, del_userdata);
+
+ if (del_userdata)
+ motTreeDestroyItemData(ih, itemList[i]);
+
+ XtDestroyWidget(itemList[i]);
+
+ if (itemChildList) XtFree((char*)itemChildList);
+ /* Go to next sibling item */
+ i++;
+ }
+}
+
+static void motTreeRemoveNode(Ihandle* ih, Widget wItem, int del_userdata)
+{
+ WidgetList wChildList = NULL;
+ int numChild = XmContainerGetItemChildren(ih->handle, wItem, &wChildList);
+ if (numChild)
+ motTreeRemoveChildren(ih, wChildList, numChild, del_userdata);
+ if (del_userdata)
+ motTreeDestroyItemData(ih, wItem);
+ XtDestroyWidget(wItem);
+ if (wChildList) XtFree((char*)wChildList);
+}
+
+static Widget motTreeFindNodeID(Ihandle* ih, WidgetList itemList, int numItems, Widget itemNode)
+{
+ Widget itemChild;
+ WidgetList itemChildList;
+ int i = 0;
+ int numChild;
+
+ while(i != numItems)
+ {
+ /* ID control to traverse items */
+ ih->data->id_control++;
+
+ /* StateID founded! */
+ if(itemList[i] == itemNode)
+ return itemList[i];
+
+ /* Check whether we have child items */
+ itemChildList = NULL;
+ numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList);
+ if(numChild)
+ {
+ /* pass the list of children of this item */
+ itemChild = motTreeFindNodeID(ih, itemChildList, numChild, itemNode);
+
+ /* StateID founded! */
+ if(itemChild)
+ {
+ if (itemChildList) XtFree((char*)itemChildList);
+ return itemChild;
+ }
+ }
+
+ if (itemChildList) XtFree((char*)itemChildList);
+ /* Go to next sibling item */
+ i++;
+ }
+
+ return NULL;
+}
+
+static Widget motTreeFindNodeFromID(Ihandle* ih, WidgetList itemList, int numItems)
+{
+ Widget itemChild;
+ WidgetList itemChildList;
+ int i = 0;
+ int numChild;
+
+ while(i != numItems)
+ {
+ /* ID control to traverse items */
+ ih->data->id_control--;
+
+ /* StateID founded! */
+ if(ih->data->id_control < 0)
+ return itemList[i];
+
+ /* Check whether we have child items */
+ itemChildList = NULL;
+ numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList);
+ if(numChild)
+ {
+ /* pass the list of children of this item */
+ itemChild = motTreeFindNodeFromID(ih, itemChildList, numChild);
+
+ /* StateID founded! */
+ if(ih->data->id_control < 0)
+ {
+ if (itemChildList) XtFree((char*)itemChildList);
+ return itemChild;
+ }
+ }
+
+ if (itemChildList) XtFree((char*)itemChildList);
+ /* Go to next sibling item */
+ i++;
+ }
+
+ return NULL;
+}
+
+static int motTreeGetNodeId(Ihandle* ih, Widget wItem)
+{
+ Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+ ih->data->id_control = -1;
+ if (motTreeFindNodeID(ih, &wRoot, 1, wItem))
+ return ih->data->id_control;
+ else
+ return -1;
+}
+
+static Widget motTreeFindUserDataID(Ihandle* ih, WidgetList itemList, int numItems, void* userdata)
+{
+ Widget itemChild;
+ WidgetList itemChildList;
+ motTreeItemData *itemData;
+ int i = 0;
+ int numChild;
+
+ while(i != numItems)
+ {
+ /* ID control to traverse items */
+ ih->data->id_control++;
+
+ XtVaGetValues(itemList[i], XmNuserData, &itemData, NULL);
+
+ /* StateID founded! */
+ if(itemData->userdata == userdata)
+ return itemList[i];
+
+ /* Check whether we have child items */
+ itemChildList = NULL;
+ numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList);
+ if(numChild)
+ {
+ /* pass the list of children of this item */
+ itemChild = motTreeFindUserDataID(ih, itemChildList, numChild, userdata);
+
+ /* StateID founded! */
+ if (itemChild)
+ {
+ if (itemChildList) XtFree((char*)itemChildList);
+ return itemChild;
+ }
+ }
+
+ if (itemChildList) XtFree((char*)itemChildList);
+ /* Go to next sibling item */
+ i++;
+ }
+
+ return NULL;
+}
+
+static int motTreeGetUserDataId(Ihandle* ih, void* userdata)
+{
+ Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+ ih->data->id_control = -1;
+ if (motTreeFindUserDataID(ih, &wRoot, 1, userdata))
+ return ih->data->id_control;
+ else
+ return -1;
+}
+
+static void motTreeSetFocusNode(Ihandle* ih, Widget wItem)
+{
+ iupAttribSetStr(ih, "_IUPTREE_LAST_FOCUS", (char*)wItem);
+ XmProcessTraversal(wItem, XmTRAVERSE_CURRENT);
+}
+
+static Widget motTreeGetFocusNode(Ihandle* ih)
+{
+ Widget wItem = XmGetFocusWidget(ih->handle); /* returns the focus in the dialog */
+ if (wItem && XtParent(wItem) == ih->handle) /* is a node */
+ return wItem;
+
+ return (Widget)iupAttribGet(ih, "_IUPTREE_LAST_FOCUS");
+}
+
+static Widget motTreeFindNodeFromString(Ihandle* ih, const char* name_id)
+{
+ if (name_id[0])
+ {
+ Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+ iupStrToInt(name_id, &ih->data->id_control);
+ return motTreeFindNodeFromID(ih, &wRoot, 1);
+ }
+ else
+ return motTreeGetFocusNode(ih);
+}
+
+static void motTreeEnterLeaveWindowEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont)
+{
+ if (iupAttribGet(ih, "_IUPTREE_EDITFIELD"))
+ return;
+
+ /* usually when one Gadget is selected different than the previous one,
+ leave/enter events are generated. But we could not find the exact condition,
+ so this is a workaround. Some leave events will be lost. */
+ if (evt->type == EnterNotify)
+ {
+ if (iupAttribGet(ih, "_IUPTREE_IGNORE_ENTERLEAVE"))
+ {
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_ENTERLEAVE", NULL);
+ return;
+ }
+ }
+ else if (evt->type == LeaveNotify)
+ {
+ if (iupAttribGet(ih, "_IUPTREE_IGNORE_ENTERLEAVE"))
+ return;
+ }
+
+ iupmotEnterLeaveWindowEvent(w, ih, evt, cont);
+}
+
+static void motTreeFocusChangeEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont)
+{
+ unsigned char selpol;
+ Widget wItem = XmGetFocusWidget(w); /* returns the focus in the dialog */
+ Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+
+ if (XtParent(wItem) == w) /* is a node */
+ iupAttribSetStr(ih, "_IUPTREE_LAST_FOCUS", (char*)wItem);
+
+ if (wItem == NULL || wItem == wRoot)
+ {
+ iupmotFocusChangeEvent(w, ih, evt, cont);
+ return;
+ }
+
+ XtVaGetValues(w, XmNselectionPolicy, &selpol, NULL);
+ if (selpol != XmSINGLE_SELECT)
+ return;
+
+ if (evt->type == FocusIn && !iupStrBoolean(IupGetGlobal("CONTROLKEY")))
+ {
+ XtVaSetValues(w, XmNselectedObjects, NULL, NULL);
+ XtVaSetValues(w, XmNselectedObjectCount, 0, NULL);
+ XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL);
+ }
+}
+
+void iupdrvTreeAddNode(Ihandle* ih, const char* name_id, int kind, const char* title, int add)
+{
+ Widget wItemPrev = motTreeFindNodeFromString(ih, name_id);
+ Widget wNewItem;
+ XmString itemTitle;
+ motTreeItemData *itemData, *itemDataPrev;
+ Pixel bgcolor, fgcolor;
+ int kindPrev, num_args = 0;
+ Arg args[30];
+
+ if (!wItemPrev)
+ return;
+
+ itemData = calloc(1, sizeof(motTreeItemData));
+ itemData->image = XmUNSPECIFIED_PIXMAP;
+ itemData->image_expanded = XmUNSPECIFIED_PIXMAP;
+ itemData->image_mask = XmUNSPECIFIED_PIXMAP;
+ itemData->image_expanded_mask = XmUNSPECIFIED_PIXMAP;
+ itemData->kind = (unsigned char)kind;
+
+ itemTitle = XmStringCreateLocalized((String)title);
+
+ /* Get default colors */
+ XtVaGetValues(ih->handle, XmNforeground, &fgcolor, NULL);
+ XtVaGetValues(ih->handle, XmNbackground, &bgcolor, NULL);
+
+ /* Get the kind of previous item */
+ XtVaGetValues(wItemPrev, XmNuserData, &itemDataPrev, NULL);
+ kindPrev = itemDataPrev->kind;
+
+ if (kindPrev == ITREE_BRANCH && add)
+ {
+ /* wItemPrev is parent of the new item (firstchild of it) */
+ iupmotSetArg(args, num_args, XmNentryParent, wItemPrev);
+ iupmotSetArg(args, num_args, XmNpositionIndex, 0);
+ }
+ else
+ {
+ /* wItemPrev is sibling of the new item (set its parent to the new item) */
+ Widget wItemParent;
+ int pos;
+
+ XtVaGetValues(wItemPrev, XmNentryParent, &wItemParent, NULL);
+ XtVaGetValues(wItemPrev, XmNpositionIndex, &pos, NULL);
+
+ iupmotSetArg(args, num_args, XmNentryParent, wItemParent);
+ iupmotSetArg(args, num_args, XmNpositionIndex, pos+1);
+ }
+
+ iupmotSetArg(args, num_args, XmNuserData, itemData);
+ iupmotSetArg(args, num_args, XmNforeground, fgcolor);
+ iupmotSetArg(args, num_args, XmNbackground, bgcolor);
+ iupmotSetArg(args, num_args, XmNmarginHeight, ih->data->spacing);
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0);
+ iupmotSetArg(args, num_args, XmNviewType, XmSMALL_ICON);
+ iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP);
+ iupmotSetArg(args, num_args, XmNtraversalOn, True);
+ iupmotSetArg(args, num_args, XmNshadowThickness, 0);
+ iupmotSetArg(args, num_args, XmNlabelString, itemTitle);
+
+ if (kind == ITREE_BRANCH)
+ {
+ if (ih->data->add_expanded)
+ {
+ iupmotSetArg(args, num_args, XmNsmallIconPixmap, ih->data->def_image_expanded);
+ iupmotSetArg(args, num_args, XmNsmallIconMask, ih->data->def_image_expanded_mask);
+ }
+ else
+ {
+ iupmotSetArg(args, num_args, XmNsmallIconPixmap, ih->data->def_image_collapsed);
+ iupmotSetArg(args, num_args, XmNsmallIconMask, ih->data->def_image_collapsed_mask);
+ }
+ }
+ else
+ {
+ iupmotSetArg(args, num_args, XmNsmallIconPixmap, ih->data->def_image_leaf);
+ iupmotSetArg(args, num_args, XmNsmallIconMask, ih->data->def_image_leaf_mask);
+ }
+
+
+ wNewItem = XtCreateManagedWidget("icon", xmIconGadgetClass, ih->handle, args, num_args);
+
+ if (kind == ITREE_BRANCH)
+ {
+ if (ih->data->add_expanded)
+ {
+ iupAttribSetStr(ih, "_IUP_IGNORE_BRANCHOPEN", "1");
+ XtVaSetValues(wNewItem, XmNoutlineState, XmEXPANDED, NULL);
+ }
+ else
+ XtVaSetValues(wNewItem, XmNoutlineState, XmCOLLAPSED, NULL);
+ }
+
+ /* Root always expanded */
+ XtVaSetValues((Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"), XmNoutlineState, XmEXPANDED, NULL);
+
+ XtRealizeWidget(wNewItem);
+ XmStringFree(itemTitle);
+}
+
+static void motTreeAddRootNode(Ihandle* ih)
+{
+ Widget wRootItem;
+ motTreeItemData *itemData;
+ Pixel bgcolor, fgcolor;
+ int num_args = 0;
+ Arg args[30];
+
+ itemData = calloc(1, sizeof(motTreeItemData));
+ itemData->image = XmUNSPECIFIED_PIXMAP;
+ itemData->image_expanded = XmUNSPECIFIED_PIXMAP;
+ itemData->image_mask = XmUNSPECIFIED_PIXMAP;
+ itemData->image_expanded_mask = XmUNSPECIFIED_PIXMAP;
+ itemData->kind = ITREE_BRANCH;
+
+ /* Get default foreground color */
+ XtVaGetValues(ih->handle, XmNforeground, &fgcolor, NULL);
+ XtVaGetValues(ih->handle, XmNbackground, &bgcolor, NULL);
+
+ iupmotSetArg(args, num_args, XmNentryParent, NULL);
+ iupmotSetArg(args, num_args, XmNuserData, itemData);
+ iupmotSetArg(args, num_args, XmNforeground, fgcolor);
+ iupmotSetArg(args, num_args, XmNbackground, bgcolor);
+ iupmotSetArg(args, num_args, XmNoutlineState, XmEXPANDED);
+ iupmotSetArg(args, num_args, XmNmarginHeight, ih->data->spacing);
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0);
+ iupmotSetArg(args, num_args, XmNviewType, XmSMALL_ICON);
+ iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP);
+ iupmotSetArg(args, num_args, XmNtraversalOn, True);
+ iupmotSetArg(args, num_args, XmNshadowThickness, 0);
+ iupmotSetArg(args, num_args, XmNsmallIconPixmap, ih->data->def_image_expanded);
+ iupmotSetArg(args, num_args, XmNsmallIconMask, ih->data->def_image_expanded_mask);
+
+ wRootItem = XtCreateManagedWidget("icon", xmIconGadgetClass, ih->handle, args, num_args);
+
+ /* Select the new item */
+ XtVaSetValues(wRootItem, XmNvisualEmphasis, XmSELECTED, NULL);
+
+ XtRealizeWidget(wRootItem);
+
+ /* Save the root node for later use */
+ iupAttribSetStr(ih, "_IUPTREE_ROOTITEM", (char*)wRootItem);
+
+ /* MarkStart node */
+ iupAttribSetStr(ih, "_IUPTREE_MARKSTART_NODE", (char*)wRootItem);
+
+ /* Set the default VALUE */
+ /* In Motif this will set also the current focus */
+ motTreeSetFocusNode(ih, wRootItem);
+}
+
+/*****************************************************************************/
+
+static int motTreeSetImageExpandedAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ motTreeItemData *itemData;
+ unsigned char itemState;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return 0;
+
+ XtVaGetValues(wItem, XmNuserData, &itemData, NULL);
+ XtVaGetValues(wItem, XmNoutlineState, &itemState, NULL);
+ itemData->image_expanded = (Pixmap)iupImageGetImage(value, ih, 0);
+ if (!itemData->image_expanded)
+ {
+ itemData->image_expanded = XmUNSPECIFIED_PIXMAP;
+ itemData->image_expanded_mask = XmUNSPECIFIED_PIXMAP;
+ }
+ else
+ {
+ itemData->image_expanded_mask = (Pixmap)iupImageGetMask(value);
+ if (!itemData->image_expanded_mask) itemData->image_expanded_mask = XmUNSPECIFIED_PIXMAP;
+ }
+
+ if (itemData->kind == ITREE_BRANCH && itemState == XmEXPANDED)
+ {
+ if (itemData->image_expanded == XmUNSPECIFIED_PIXMAP)
+ XtVaSetValues(wItem, XmNsmallIconPixmap, (Pixmap)ih->data->def_image_expanded,
+ XmNsmallIconMask, (Pixmap)ih->data->def_image_expanded_mask,
+ NULL);
+ else
+ XtVaSetValues(wItem, XmNsmallIconPixmap, itemData->image_expanded,
+ XmNsmallIconMask, itemData->image_expanded_mask,
+ NULL);
+ }
+
+ return 1;
+}
+
+static int motTreeSetImageAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ motTreeItemData *itemData;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return 0;
+
+ XtVaGetValues(wItem, XmNuserData, &itemData, NULL);
+ itemData->image = (Pixmap)iupImageGetImage(value, ih, 0);
+ if (!itemData->image)
+ {
+ itemData->image = XmUNSPECIFIED_PIXMAP;
+ itemData->image_mask = XmUNSPECIFIED_PIXMAP;
+ }
+ else
+ {
+ itemData->image_mask = (Pixmap)iupImageGetMask(value);
+ if (!itemData->image_mask) itemData->image_mask = XmUNSPECIFIED_PIXMAP;
+ }
+
+ if (itemData->kind == ITREE_BRANCH)
+ {
+ unsigned char itemState;
+ XtVaGetValues(wItem, XmNoutlineState, &itemState, NULL);
+ if (itemState == XmCOLLAPSED)
+ {
+ if (itemData->image == XmUNSPECIFIED_PIXMAP)
+ XtVaSetValues(wItem, XmNsmallIconPixmap, (Pixmap)ih->data->def_image_collapsed,
+ XmNsmallIconMask, (Pixmap)ih->data->def_image_collapsed_mask,
+ NULL);
+ else
+ XtVaSetValues(wItem, XmNsmallIconPixmap, itemData->image,
+ XmNsmallIconMask, itemData->image_mask,
+ NULL);
+ }
+ }
+ else
+ {
+ if (itemData->image == XmUNSPECIFIED_PIXMAP)
+ XtVaSetValues(wItem, XmNsmallIconPixmap, (Pixmap)ih->data->def_image_leaf,
+ XmNsmallIconMask, (Pixmap)ih->data->def_image_leaf_mask,
+ NULL);
+ else
+ XtVaSetValues(wItem, XmNsmallIconPixmap, itemData->image,
+ XmNsmallIconMask, itemData->image_mask,
+ NULL);
+ }
+
+ return 1;
+}
+
+static int motTreeSetImageBranchExpandedAttrib(Ihandle* ih, const char* value)
+{
+ Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+ ih->data->def_image_expanded = iupImageGetImage(value, ih, 0);
+ if (!ih->data->def_image_expanded)
+ {
+ ih->data->def_image_expanded = (void*)XmUNSPECIFIED_PIXMAP;
+ ih->data->def_image_expanded_mask = (void*)XmUNSPECIFIED_PIXMAP;
+ }
+ else
+ {
+ ih->data->def_image_expanded_mask = iupImageGetMask(value);
+ if (!ih->data->def_image_expanded_mask) ih->data->def_image_expanded_mask = (void*)XmUNSPECIFIED_PIXMAP;
+ }
+
+ /* Update all images, starting at root node */
+ motTreeUpdateImages(ih, &wRoot, 1, ITREE_UPDATEIMAGE_EXPANDED);
+
+ return 1;
+}
+
+static int motTreeSetImageBranchCollapsedAttrib(Ihandle* ih, const char* value)
+{
+ Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+ ih->data->def_image_collapsed = iupImageGetImage(value, ih, 0);
+ if (!ih->data->def_image_collapsed)
+ {
+ ih->data->def_image_collapsed = (void*)XmUNSPECIFIED_PIXMAP;
+ ih->data->def_image_collapsed_mask = (void*)XmUNSPECIFIED_PIXMAP;
+ }
+ else
+ {
+ ih->data->def_image_collapsed_mask = iupImageGetMask(value);
+ if (!ih->data->def_image_collapsed_mask) ih->data->def_image_collapsed_mask = (void*)XmUNSPECIFIED_PIXMAP;
+ }
+
+ /* Update all images, starting at root node */
+ motTreeUpdateImages(ih, &wRoot, 1, ITREE_UPDATEIMAGE_COLLAPSED);
+
+ return 1;
+}
+
+static int motTreeSetImageLeafAttrib(Ihandle* ih, const char* value)
+{
+ Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+ ih->data->def_image_leaf = iupImageGetImage(value, ih, 0);
+ if (!ih->data->def_image_leaf)
+ {
+ ih->data->def_image_leaf = (void*)XmUNSPECIFIED_PIXMAP;
+ ih->data->def_image_leaf_mask = (void*)XmUNSPECIFIED_PIXMAP;
+ }
+ else
+ {
+ ih->data->def_image_leaf_mask = iupImageGetMask(value);
+ if (!ih->data->def_image_leaf_mask) ih->data->def_image_leaf_mask = (void*)XmUNSPECIFIED_PIXMAP;
+ }
+
+ /* Update all images, starting at root node */
+ motTreeUpdateImages(ih, &wRoot, 1, ITREE_UPDATEIMAGE_LEAF);
+
+ return 1;
+}
+
+static char* motTreeGetStateAttrib(Ihandle* ih, const char* name_id)
+{
+ int hasChildren;
+ unsigned char itemState;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return 0;
+
+ XtVaGetValues(wItem, XmNnumChildren, &hasChildren, NULL);
+ XtVaGetValues(wItem, XmNoutlineState, &itemState, NULL);
+
+ if (hasChildren)
+ {
+ if(itemState == XmEXPANDED)
+ return "EXPANDED";
+ else
+ return "COLLAPSED";
+ }
+
+ return NULL;
+}
+
+static int motTreeSetStateAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return 0;
+
+ if (iupStrEqualNoCase(value, "EXPANDED"))
+ XtVaSetValues(wItem, XmNoutlineState, XmEXPANDED, NULL);
+ else
+ XtVaSetValues(wItem, XmNoutlineState, XmCOLLAPSED, NULL);
+
+ return 0;
+}
+
+static char* motTreeGetColorAttrib(Ihandle* ih, const char* name_id)
+{
+ unsigned char r, g, b;
+ Pixel color;
+ char* str;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return NULL;
+
+ XtVaGetValues(wItem, XmNforeground, &color, NULL);
+ iupmotColorGetRGB(color, &r, &g, &b);
+
+ str = iupStrGetMemory(20);
+ sprintf(str, "%d %d %d", (int)r, (int)g, (int)b);
+ return str;
+}
+
+static int motTreeSetColorAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ Pixel color;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return 0;
+
+ color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ XtVaSetValues(wItem, XmNforeground, color, NULL);
+ return 0;
+}
+
+static char* motTreeGetDepthAttrib(Ihandle* ih, const char* name_id)
+{
+ Widget wRoot;
+ int dep = 0;
+ char* depth;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return NULL;
+
+ wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+
+ while((wRoot != wItem) && (wItem != NULL))
+ {
+ XtVaGetValues(wItem, XmNentryParent, &wItem, NULL);
+ dep++;
+ }
+
+ depth = iupStrGetMemory(10);
+ sprintf(depth, "%d", dep);
+ return depth;
+}
+
+static int motTreeSetMoveNodeAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ Widget wItemDst, wParent, wItemSrc;
+
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ wItemSrc = motTreeFindNodeFromString(ih, name_id);
+ if (!wItemSrc)
+ return 0;
+ wItemDst = motTreeFindNodeFromString(ih, value);
+ if (!wItemDst)
+ return 0;
+
+ /* If Drag item is an ancestor of Drop item then return */
+ wParent = wItemDst;
+ while(wParent)
+ {
+ XtVaGetValues(wParent, XmNentryParent, &wParent, NULL);
+ if (wParent == wItemSrc)
+ return 0;
+ }
+
+ /* Copying the node and its children to the new position */
+ motTreeCopyNode(ih, wItemSrc, wItemDst, 0); /* not a full copy, preserve user data */
+
+ /* Deleting the node (and its children) inserted into the old position */
+ motTreeRemoveNode(ih, wItemSrc, 0); /* do not delete the user data, we copy the references in CopyNode */
+
+ return 0;
+}
+
+static int motTreeSetCopyNodeAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ Widget wItemDst, wParent, wItemSrc;
+
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ wItemSrc = motTreeFindNodeFromString(ih, name_id);
+ if (!wItemSrc)
+ return 0;
+ wItemDst = motTreeFindNodeFromString(ih, value);
+ if (!wItemDst)
+ return 0;
+
+ /* If Drag item is an ancestor of Drop item then return */
+ wParent = wItemDst;
+ while(wParent)
+ {
+ XtVaGetValues(wParent, XmNentryParent, &wParent, NULL);
+ if (wParent == wItemSrc)
+ return 0;
+ }
+
+ /* Copying the node and its children to the new position */
+ motTreeCopyNode(ih, wItemSrc, wItemDst, 1);
+
+ return 0;
+}
+
+static char* motTreeGetParentAttrib(Ihandle* ih, const char* name_id)
+{
+ Widget wItemParent;
+ char* str;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return NULL;
+
+ /* get the parent item */
+ XtVaGetValues(wItem, XmNentryParent, &wItemParent, NULL);
+ if (!wItemParent)
+ return NULL;
+
+ str = iupStrGetMemory(10);
+ sprintf(str, "%d", motTreeGetNodeId(ih, wItemParent));
+ return str;
+}
+
+static char* motTreeGetChildCountAttrib(Ihandle* ih, const char* name_id)
+{
+ char* str;
+ WidgetList wList = NULL;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return NULL;
+
+ str = iupStrGetMemory(10);
+ sprintf(str, "%d", XmContainerGetItemChildren(ih->handle, wItem, &wList));
+ if (wList) XtFree((char*)wList);
+ return str;
+}
+
+static int motTreeCount(Ihandle* ih, Widget wItem)
+{
+ WidgetList wList = NULL;
+ int i, count = 0;
+ int childCount = XmContainerGetItemChildren(ih->handle, wItem, &wList);
+ count++;
+ for (i=0; i<childCount; i++)
+ count += motTreeCount(ih, wList[i]);
+ if (wList) XtFree((char*)wList);
+ return count;
+}
+
+static char* motTreeGetCountAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(10);
+ Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+ sprintf(str, "%d", motTreeCount(ih, wRoot));
+ return str;
+}
+
+static char* motTreeGetKindAttrib(Ihandle* ih, const char* name_id)
+{
+ motTreeItemData *itemData;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return NULL;
+
+ XtVaGetValues(wItem, XmNuserData, &itemData, NULL);
+
+ if(itemData->kind == ITREE_BRANCH)
+ return "BRANCH";
+ else
+ return "LEAF";
+}
+
+static char* motTreeGetValueAttrib(Ihandle* ih)
+{
+ char* str;
+ Widget wItem = motTreeGetFocusNode(ih);
+ if (!wItem)
+ return "0"; /* default VALUE is root */
+
+ str = iupStrGetMemory(10);
+ sprintf(str, "%d", motTreeGetNodeId(ih, wItem));
+ return str;
+}
+
+static int motTreeSetMarkAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->mark_mode==ITREE_MARK_SINGLE)
+ return 0;
+
+ if(iupStrEqualNoCase(value, "CLEARALL"))
+ motTreeContainerDeselectAll(ih);
+ else if(iupStrEqualNoCase(value, "MARKALL"))
+ motTreeContainerSelectAll(ih);
+ else if(iupStrEqualNoCase(value, "INVERTALL")) /* INVERTALL *MUST* appear before INVERT, or else INVERTALL will never be called. */
+ motTreeInvertAllNodeMarking(ih);
+ else if(iupStrEqualPartial(value, "INVERT"))
+ {
+ unsigned char isSelected;
+ Widget wItem = motTreeFindNodeFromString(ih, &value[strlen("INVERT")]);
+ if (!wItem)
+ return 0;
+
+ XtVaGetValues(wItem, XmNvisualEmphasis, &isSelected, NULL);
+ if (isSelected == XmSELECTED)
+ XtVaSetValues(wItem, XmNvisualEmphasis, XmNOT_SELECTED, NULL);
+ else
+ XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL);
+ }
+ else if(iupStrEqualNoCase(value, "BLOCK"))
+ {
+ Widget wItem = (Widget)iupAttribGet(ih, "_IUPTREE_MARKSTART_NODE");
+ Widget wFocusItem = motTreeGetFocusNode(ih);
+ if(!wFocusItem || !wItem)
+ return 0;
+ motTreeSelectRange(ih, wFocusItem, wItem, 0);
+ }
+ else
+ {
+ Widget wItem1, wItem2;
+ char str1[50], str2[50];
+ if (iupStrToStrStr(value, str1, str2, '-')!=2)
+ return 0;
+
+ wItem1 = motTreeFindNodeFromString(ih, str1);
+ if (!wItem1)
+ return 0;
+ wItem2 = motTreeFindNodeFromString(ih, str2);
+ if (!wItem2)
+ return 0;
+
+ motTreeSelectRange(ih, wItem1, wItem2, 0);
+ }
+
+ return 1;
+}
+
+static int motTreeSetValueAttrib(Ihandle* ih, const char* value)
+{
+ Widget wRoot, wItem;
+
+ if (motTreeSetMarkAttrib(ih, value))
+ return 0;
+
+ wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+
+ if (iupStrEqualNoCase(value, "ROOT"))
+ wItem = wRoot;
+ else if(iupStrEqualNoCase(value, "LAST"))
+ wItem = motTreeGetLastVisibleNode(ih, wRoot);
+ else if(iupStrEqualNoCase(value, "PGUP"))
+ {
+ Widget wItemFocus = motTreeGetFocusNode(ih);
+ if(!wItemFocus)
+ return 0;
+
+ ih->data->id_control = -1;
+ motTreeFindVisibleNodeId(ih, &wRoot, 1, wItemFocus);
+ ih->data->id_control -= 10; /* less 10 visible nodes */
+
+ if(ih->data->id_control < 0)
+ ih->data->id_control = 0; /* Begin of tree = Root id */
+
+ wItem = motTreeFindVisibleNodeFromId(ih, &wRoot, 1);
+ }
+ else if(iupStrEqualNoCase(value, "PGDN"))
+ {
+ Widget wNext, wItemFocus;
+
+ wItemFocus = motTreeGetFocusNode(ih);
+ if(!wItemFocus)
+ return 0;
+
+ ih->data->id_control = -1;
+ motTreeFindVisibleNodeId(ih, &wRoot, 1, wItemFocus);
+ ih->data->id_control += 10; /* more 10 visible nodes */
+
+ wNext = motTreeFindVisibleNodeFromId(ih, &wRoot, 1);
+
+ if (ih->data->id_control >= 0)
+ wNext = motTreeGetLastVisibleNode(ih, wRoot);
+
+ wItem = wNext;
+ }
+ else if(iupStrEqualNoCase(value, "NEXT"))
+ {
+ Widget wItemFocus = motTreeGetFocusNode(ih);
+ if (!wItemFocus)
+ return 0;
+
+ wItem = motTreeGetNextVisibleNode(ih, wRoot, wItemFocus);
+ }
+ else if(iupStrEqualNoCase(value, "PREVIOUS"))
+ {
+ Widget wItemFocus = motTreeGetFocusNode(ih);
+ if(!wItemFocus)
+ return 0;
+
+ wItem = motTreeGetPreviousVisibleNode(ih, wRoot, wItemFocus);
+ }
+ else
+ wItem = motTreeFindNodeFromString(ih, value);
+
+ if (!wItem)
+ return 0;
+
+ /* select */
+ if (ih->data->mark_mode==ITREE_MARK_SINGLE)
+ {
+ /* clear previous selection */
+ XtVaSetValues(ih->handle, XmNselectedObjects, NULL, NULL);
+ XtVaSetValues(ih->handle, XmNselectedObjectCount, 0, NULL);
+
+ XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL);
+ }
+
+ /* set focus (will scroll to visible) */
+ motTreeSetFocusNode(ih, wItem);
+
+ iupAttribSetInt(ih, "_IUPTREE_OLDVALUE", motTreeGetNodeId(ih, wItem));
+
+ return 0;
+}
+
+static int motTreeSetMarkStartAttrib(Ihandle* ih, const char* name_id)
+{
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return 0;
+
+ iupAttribSetStr(ih, "_IUPTREE_MARKSTART_NODE", (char*)wItem);
+
+ return 1;
+}
+
+static char* motTreeGetMarkedAttrib(Ihandle* ih, const char* name_id)
+{
+ unsigned char isSelected;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return NULL;
+
+ XtVaGetValues(wItem, XmNvisualEmphasis, &isSelected, NULL);
+
+ if(isSelected == XmSELECTED)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int motTreeSetMarkedAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return 0;
+
+ if (iupStrBoolean(value))
+ XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL);
+ else
+ XtVaSetValues(wItem, XmNvisualEmphasis, XmNOT_SELECTED, NULL);
+
+ return 0;
+}
+
+static char* motTreeGetTitle(Widget wItem)
+{
+ char *title;
+ XmString itemTitle;
+ XtVaGetValues(wItem, XmNlabelString, &itemTitle, NULL);
+ title = iupmotConvertString(itemTitle);
+ XmStringFree(itemTitle);
+ return title;
+}
+
+static char* motTreeGetTitleAttrib(Ihandle* ih, const char* name_id)
+{
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return NULL;
+ return motTreeGetTitle(wItem);
+}
+
+static int motTreeSetTitleAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return 0;
+
+ iupmotSetString(wItem, XmNlabelString, value);
+
+ return 0;
+}
+
+static int motTreeSetTitleFontAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ XmFontList fontlist = NULL;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return 0;
+
+ if (value)
+ {
+ char attr[20];
+ sprintf(attr, "TITLEFOUNDRY%s", name_id);
+ fontlist = iupmotGetFontList(iupAttribGet(ih, attr), value);
+ }
+ XtVaSetValues(wItem, XmNrenderTable, fontlist, NULL);
+
+ return 0;
+}
+
+static char* motTreeGetTitleFontAttrib(Ihandle* ih, const char* name_id)
+{
+ XmFontList fontlist;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return NULL;
+
+ XtVaGetValues(wItem, XmNrenderTable, &fontlist, NULL);
+ return iupmotFindFontList(fontlist);
+}
+
+static char* motTreeGetFindUserDataAttrib(Ihandle* ih, const char* name_id)
+{
+ int id;
+ char* str = (char*)(name_id+1); /* skip ':' */
+ void* userdata = NULL;
+ if (sscanf(str, "%p", &userdata)!=1)
+ return NULL;
+ id = motTreeGetUserDataId(ih, userdata);
+ if (id == -1)
+ return NULL;
+ str = iupStrGetMemory(16);
+ sprintf(str, "%d", id);
+ return str;
+}
+
+static char* motTreeGetUserDataAttrib(Ihandle* ih, const char* name_id)
+{
+ motTreeItemData *itemData;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return NULL;
+
+ XtVaGetValues(wItem, XmNuserData, &itemData, NULL);
+
+ return itemData->userdata;
+}
+
+static int motTreeSetUserDataAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ motTreeItemData *itemData;
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ if (!wItem)
+ return 0;
+
+ XtVaGetValues(wItem, XmNuserData, &itemData, NULL);
+ itemData->userdata = (void*)value;
+
+ return 0;
+}
+
+static int motTreeSetRenameAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->show_rename)
+ {
+ IFni cbShowRename = (IFni)IupGetCallback(ih, "SHOWRENAME_CB");
+ Widget wItemFocus = motTreeGetFocusNode(ih);
+ if (cbShowRename)
+ cbShowRename(ih, motTreeGetNodeId(ih, wItemFocus));
+ motTreeShowEditField(ih, wItemFocus);
+ }
+ else
+ {
+ IFnis cbRenameNode = (IFnis)IupGetCallback(ih, "RENAMENODE_CB");
+ if (cbRenameNode)
+ {
+ Widget wItemFocus = motTreeGetFocusNode(ih);
+ cbRenameNode(ih, motTreeGetNodeId(ih, wItemFocus), motTreeGetTitle(wItemFocus));
+ }
+ }
+
+ (void)value;
+ return 0;
+}
+
+static int motTreeSetDelNodeAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ if(iupStrEqualNoCase(value, "SELECTED")) /* selected here means the specified one */
+ {
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+ Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+
+ /* the root node can't be deleted */
+ if(!wItem || wItem == wRoot) /* root is the unique child */
+ return 0;
+
+ /* deleting the specified node (and it's children) */
+ motTreeRemoveNode(ih, wItem, 1);
+ }
+ else if(iupStrEqualNoCase(value, "CHILDREN")) /* children of the specified one */
+ {
+ Widget wItem = motTreeFindNodeFromString(ih, name_id);
+
+ if(!wItem)
+ return 0;
+
+ {
+ /* deleting the selected node's children only */
+ WidgetList wItemList = NULL;
+ int numChild = XmContainerGetItemChildren(ih->handle, wItem, &wItemList);
+ if(numChild)
+ motTreeRemoveChildren(ih, wItemList, numChild, 1);
+ if (wItemList) XtFree((char*)wItemList);
+ }
+ }
+ else if(iupStrEqualNoCase(value, "MARKED")) /* Delete the array of marked nodes */
+ {
+ WidgetList wSelectedItemList = NULL;
+ Widget wRoot;
+ int countItems, i;
+
+ XtVaGetValues(ih->handle, XmNselectedObjects, &wSelectedItemList,
+ XmNselectedObjectCount, &countItems, NULL);
+
+ wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+
+ for(i = 0; i < countItems; i++)
+ {
+ int ok = XmIsIconGadget(wSelectedItemList[i]);
+ if ((wSelectedItemList[i] != wRoot) && ok) /* the root node can't be deleted */
+ motTreeRemoveNode(ih, wSelectedItemList[i], 1);
+ }
+ }
+
+ return 0;
+}
+
+static char* motTreeGetIndentationAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(255);
+ Dimension indent;
+ XtVaGetValues(ih->handle, XmNoutlineIndentation, &indent, NULL);
+ sprintf(str, "%d", (int)indent);
+ return str;
+}
+
+static int motTreeSetIndentationAttrib(Ihandle* ih, const char* value)
+{
+ int indent;
+ if (iupStrToInt(value, &indent))
+ XtVaSetValues(ih->handle, XmNoutlineIndentation, (Dimension)indent, NULL);
+ return 0;
+}
+
+static int motTreeSetTopItemAttrib(Ihandle* ih, const char* value)
+{
+ Widget wItem = motTreeFindNodeFromString(ih, value);
+ Widget sb_win;
+ Widget wItemParent;
+
+ if (!wItem)
+ return 0;
+
+ /* expand all parents */
+ XtVaGetValues(wItem, XmNentryParent, &wItemParent, NULL);
+ while(wItemParent)
+ {
+ XtVaSetValues(wItemParent, XmNoutlineState, XmEXPANDED, NULL);
+ XtVaGetValues(wItemParent, XmNentryParent, &wItemParent, NULL);
+ }
+
+ sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ XmScrollVisible(sb_win, wItem, 0, 0);
+
+ return 0;
+}
+
+static int motTreeSpacingFunc(Ihandle* ih, Widget wItem, void *data)
+{
+ XtVaSetValues(wItem, XmNmarginHeight, ih->data->spacing, NULL);
+ (void)data;
+ return 1;
+}
+
+static int motTreeSetSpacingAttrib(Ihandle* ih, const char* value)
+{
+ if (!iupStrToInt(value, &ih->data->spacing))
+ ih->data->spacing = 1;
+
+ if (ih->data->spacing < 1)
+ ih->data->spacing = 1;
+
+ if (ih->handle)
+ {
+ motTreeForEach(ih, NULL, (motTreeNodeFunc)motTreeSpacingFunc, 0);
+ return 0;
+ }
+ else
+ return 1; /* store until not mapped, when mapped will be set again */
+}
+
+static int motTreeSetExpandAllAttrib(Ihandle* ih, const char* value)
+{
+ Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+
+ if (iupStrBoolean(value))
+ motTreeExpandCollapseAllNodes(ih, &wRoot, 1, XmEXPANDED);
+ else
+ {
+ motTreeExpandCollapseAllNodes(ih, &wRoot, 1, XmCOLLAPSED);
+
+ /* The root node is always expanded */
+ XtVaSetValues((Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"), XmNoutlineState, XmEXPANDED, NULL);
+ }
+
+ return 0;
+}
+
+static int motTreeSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ Widget sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+ Pixel color;
+
+ /* ignore given value for the scrollbars, must use only from parent */
+ char* parent_value = iupBaseNativeParentGetBgColor(ih);
+
+ color = iupmotColorGetPixelStr(parent_value);
+ if (color != (Pixel)-1)
+ {
+ Widget sb = NULL;
+
+ iupmotSetBgColor(sb_win, color);
+
+ XtVaGetValues(sb_win, XmNverticalScrollBar, &sb, NULL);
+ if (sb) iupmotSetBgColor(sb, color);
+
+ XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb, NULL);
+ if (sb) iupmotSetBgColor(sb, color);
+ }
+
+ color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ {
+ Widget wRoot;
+ Widget clipwin = NULL;
+
+ XtVaGetValues(sb_win, XmNclipWindow, &clipwin, NULL);
+ if (clipwin) iupmotSetBgColor(clipwin, color);
+
+ wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+
+ /* Update all children, starting at root node */
+ motTreeUpdateBgColor(ih, &wRoot, 1, color);
+ }
+
+ iupdrvBaseSetBgColorAttrib(ih, value); /* use given value for contents */
+
+ /* update internal image cache */
+ iupTreeUpdateImages(ih);
+
+ return 1;
+}
+
+static int motTreeSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ XtVaSetValues(ih->handle, XmNforeground, color, NULL);
+
+ return 1;
+}
+
+void iupdrvTreeUpdateMarkMode(Ihandle *ih)
+{
+ XtVaSetValues(ih->handle, XmNselectionPolicy, (ih->data->mark_mode==ITREE_MARK_SINGLE)? XmSINGLE_SELECT: XmEXTENDED_SELECT, NULL);
+}
+
+/************************************************************************************************/
+
+
+static void motTreeSetRenameCaretPos(Widget cbEdit, const char* value)
+{
+ int pos = 1;
+
+ if (iupStrToInt(value, &pos))
+ {
+ if (pos < 1) pos = 1;
+ pos--; /* IUP starts at 1 */
+
+ XtVaSetValues(cbEdit, XmNcursorPosition, pos, NULL);
+ }
+}
+
+static void motTreeSetRenameSelectionPos(Widget cbEdit, const char* value)
+{
+ int start = 1, end = 1;
+
+ if (iupStrToIntInt(value, &start, &end, ':') != 2)
+ return;
+
+ if(start < 1 || end < 1)
+ return;
+
+ start--; /* IUP starts at 1 */
+ end--;
+
+ XmTextSetSelection(cbEdit, start, end, CurrentTime);
+}
+
+/*****************************************************************************/
+
+static int motTreeCallBranchCloseCb(Ihandle* ih, Widget wItem)
+{
+ IFni cbBranchClose = (IFni)IupGetCallback(ih, "BRANCHCLOSE_CB");
+
+ if(cbBranchClose)
+ return cbBranchClose(ih, motTreeGetNodeId(ih, wItem));
+
+ return IUP_DEFAULT;
+}
+
+static int motTreeCallBranchOpenCb(Ihandle* ih, Widget wItem)
+{
+ IFni cbBranchOpen;
+
+ if (iupAttribGet(ih, "_IUP_IGNORE_BRANCHOPEN"))
+ {
+ iupAttribSetStr(ih, "_IUP_IGNORE_BRANCHOPEN", NULL);
+ return IUP_DEFAULT;
+ }
+
+ cbBranchOpen = (IFni)IupGetCallback(ih, "BRANCHOPEN_CB");
+ if (cbBranchOpen)
+ return cbBranchOpen(ih, motTreeGetNodeId(ih, wItem));
+
+ return IUP_DEFAULT;
+}
+
+static void motTreeCallMultiSelectionCb(Ihandle* ih)
+{
+ IFnIi cbMulti = (IFnIi)IupGetCallback(ih, "MULTISELECTION_CB");
+ IFnii cbSelec = (IFnii)IupGetCallback(ih, "SELECTION_CB");
+ WidgetList wSelectedItemList = NULL;
+ Widget wRoot;
+ int countItems;
+
+ wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+
+ XtVaGetValues(ih->handle, XmNselectedObjects, &wSelectedItemList,
+ XmNselectedObjectCount, &countItems, NULL);
+ if (countItems == 0)
+ return;
+
+ if (cbMulti || cbSelec)
+ {
+ int* id_rowItem = malloc(sizeof(int) * countItems);
+ int i = 0;
+
+ for(i = 0; i < countItems; i++)
+ id_rowItem[i] = motTreeGetNodeId(ih, wSelectedItemList[i]);
+
+ if (cbMulti)
+ cbMulti(ih, id_rowItem, countItems);
+ else
+ {
+ for (i=0; i<countItems; i++)
+ cbSelec(ih, id_rowItem[i], 1);
+ }
+
+ free(id_rowItem);
+ }
+}
+
+static int motTreeConvertXYToPos(Ihandle* ih, int x, int y)
+{
+ Widget wItem = XmObjectAtPoint(ih->handle, (Position)x, (Position)y);
+ if (wItem)
+ return motTreeGetNodeId(ih, wItem);
+ return -1;
+}
+
+static void motTreeCallRightClickCb(Ihandle* ih, int x, int y)
+{
+ IFni cbRightClick = (IFni)IupGetCallback(ih, "RIGHTCLICK_CB");
+ if (cbRightClick)
+ {
+ int id = motTreeConvertXYToPos(ih, x, y);
+ if (id != -1)
+ cbRightClick(ih, id);
+ }
+}
+
+static void motTreeCallRenameCb(Ihandle* ih)
+{
+ IFnis cbRename;
+ Widget wItem, wEdit;
+ int ignore = 0;
+ String title = NULL;
+
+ wItem = (Widget)iupAttribGet(ih, "_IUPTREE_SELECTED");
+ wEdit = (Widget)iupAttribGet(ih, "_IUPTREE_EDITFIELD");
+
+ XtVaGetValues((Widget)iupAttribGet(ih, "_IUPTREE_EDITFIELD"), XmNvalue, &title, NULL);
+
+ cbRename = (IFnis)IupGetCallback(ih, "RENAME_CB");
+ if (cbRename)
+ {
+ if (cbRename(ih, motTreeGetNodeId(ih, wItem), title) == IUP_IGNORE)
+ ignore = 1;
+ }
+
+ if (!ignore)
+ iupmotSetString(wItem, XmNlabelString, title);
+
+ XtDestroyWidget(wEdit);
+
+ iupAttribSetStr(ih, "_IUPTREE_EDITFIELD", NULL);
+ iupAttribSetStr(ih, "_IUPTREE_SELECTED", NULL);
+}
+
+static int motTreeCallDragDropCb(Ihandle* ih, Widget wItemDrag, Widget wItemDrop, int *is_ctrl)
+{
+ IFniiii cbDragDrop = (IFniiii)IupGetCallback(ih, "DRAGDROP_CB");
+ int is_shift = 0;
+ char key[5];
+ iupdrvGetKeyState(key);
+ if (key[0] == 'S')
+ is_shift = 1;
+ if (key[1] == 'C')
+ *is_ctrl = 1;
+ else
+ *is_ctrl = 0;
+
+ if (cbDragDrop)
+ {
+ int drag_id = motTreeGetNodeId(ih, wItemDrag);
+ int drop_id = motTreeGetNodeId(ih, wItemDrop);
+ return cbDragDrop(ih, drag_id, drop_id, is_shift, *is_ctrl);
+ }
+
+ return IUP_CONTINUE; /* allow to move by default if callback not defined */
+}
+
+static void motTreeEditFocusChangeEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont)
+{
+ if (evt->type == FocusOut)
+ motTreeCallRenameCb(ih);
+
+ (void)cont;
+ (void)w;
+}
+
+static void motTreeEditKeyPressEvent(Widget w, Ihandle *ih, XKeyEvent *evt, Boolean *cont)
+{
+ KeySym motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0);
+ if (motcode == XK_Return)
+ {
+ Widget wItem = (Widget)iupAttribGet(ih, "_IUPTREE_SELECTED");
+ motTreeCallRenameCb(ih);
+ motTreeSetFocusNode(ih, wItem);
+ }
+ else if (motcode == XK_Escape)
+ {
+ Widget wEdit = (Widget)iupAttribGet(ih, "_IUPTREE_EDITFIELD");
+ Widget wItem = (Widget)iupAttribGet(ih, "_IUPTREE_SELECTED");
+
+ XtDestroyWidget(wEdit);
+ motTreeSetFocusNode(ih, wItem);
+
+ iupAttribSetStr(ih, "_IUPTREE_EDITFIELD", NULL);
+ iupAttribSetStr(ih, "_IUPTREE_SELECTED", NULL);
+ }
+
+ (void)cont;
+ (void)w;
+}
+
+static void motTreeScrollbarOffset(Widget sb_win, Position *x, Position *y)
+{
+ Widget sb_horiz, sb_vert;
+ XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb_horiz, NULL);
+ if (sb_horiz)
+ {
+ int pos;
+ XtVaGetValues(sb_horiz, XmNvalue, &pos, NULL);
+ *x = *x - (Position)pos;
+ }
+ XtVaGetValues(sb_win, XmNverticalScrollBar, &sb_vert, NULL);
+ if (sb_vert)
+ {
+ int pos;
+ XtVaGetValues(sb_vert, XmNvalue, &pos, NULL);
+ *y = *y - (Position)pos;
+ }
+}
+
+static void motTreeShowEditField(Ihandle* ih, Widget wItem)
+{
+ int num_args = 0, w_img = 0;
+ Arg args[30];
+ Position x, y;
+ Dimension w, h;
+ char* child_id = iupDialogGetChildIdStr(ih);
+ Widget cbEdit;
+ XmString title;
+ char* value;
+ Pixel color;
+ Pixmap image = XmUNSPECIFIED_PIXMAP;
+ XmFontList fontlist;
+ Widget sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
+
+ XtVaGetValues(wItem, XmNx, &x,
+ XmNy, &y,
+ XmNwidth, &w,
+ XmNheight, &h,
+ XmNlabelString, &title,
+ XmNsmallIconPixmap, &image,
+ XmNforeground, &color,
+ XmNrenderTable, &fontlist,
+ NULL);
+
+ motTreeScrollbarOffset(sb_win, &x, &y);
+ iupdrvImageGetInfo((void*)image, &w_img, NULL, NULL);
+ w_img += 3; /* add some room for borders */
+
+ iupmotSetArg(args, num_args, XmNx, x+w_img); /* x-position */
+ iupmotSetArg(args, num_args, XmNy, y); /* y-position */
+ iupmotSetArg(args, num_args, XmNwidth, w-w_img); /* default width to avoid 0 */
+ iupmotSetArg(args, num_args, XmNheight, h); /* default height to avoid 0 */
+ iupmotSetArg(args, num_args, XmNmarginHeight, ih->data->spacing); /* default padding */
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0);
+ iupmotSetArg(args, num_args, XmNforeground, color);
+ iupmotSetArg(args, num_args, XmNrenderTable, fontlist);
+ iupmotSetArg(args, num_args, XmNvalue, iupmotConvertString(title));
+ iupmotSetArg(args, num_args, XmNtraversalOn, True);
+
+ cbEdit = XtCreateManagedWidget(
+ child_id, /* child identifier */
+ xmTextWidgetClass, /* widget class */
+ sb_win,
+ args, num_args);
+
+ /* Disable Drag Source */
+ iupmotDisableDragSource(cbEdit);
+
+ XtAddEventHandler(cbEdit, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(cbEdit, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(cbEdit, FocusChangeMask, False, (XtEventHandler)motTreeEditFocusChangeEvent, (XtPointer)ih);
+ XtAddEventHandler(cbEdit, KeyPressMask, False, (XtEventHandler)motTreeEditKeyPressEvent, (XtPointer)ih);
+
+ iupAttribSetStr(ih, "_IUPTREE_SELECTED", (char*)wItem);
+ iupAttribSetStr(ih, "_IUPTREE_EDITFIELD", (char*)cbEdit);
+
+ XmProcessTraversal(cbEdit, XmTRAVERSE_CURRENT);
+
+ XmTextSetSelection(cbEdit, (XmTextPosition)0, (XmTextPosition)XmTextGetLastPosition(cbEdit), CurrentTime);
+
+ value = iupAttribGetStr(ih, "RENAMECARET");
+ if (value)
+ motTreeSetRenameCaretPos(cbEdit, value);
+
+ value = iupAttribGetStr(ih, "RENAMESELECTION");
+ if (value)
+ motTreeSetRenameSelectionPos(cbEdit, value);
+
+ /* the parents callbacks can be called while editing
+ so we must avoid their processing if _IUPTREE_EDITFIELD is defined. */
+}
+
+static void motTreeSelectionCallback(Widget w, Ihandle* ih, XmContainerSelectCallbackStruct *nptr)
+{
+ IFnii cbSelec;
+ int is_ctrl = 0;
+ (void)w;
+ (void)nptr;
+
+printf("SelectionCallback(%d)\n", nptr->selected_item_count);
+
+ if (ih->data->mark_mode == ITREE_MARK_MULTIPLE)
+ {
+ char key[5];
+ iupdrvGetKeyState(key);
+ if (key[0] == 'S')
+ return;
+ else if (key[1] == 'C')
+ is_ctrl = 1;
+
+ if (nptr->selected_item_count>1 && !is_ctrl)
+ {
+ if (IupGetCallback(ih, "MULTISELECTION_CB"))
+ {
+ if (nptr->auto_selection_type==XmAUTO_NO_CHANGE)
+ motTreeCallMultiSelectionCb(ih);
+ }
+ else
+ {
+ if (nptr->auto_selection_type==XmAUTO_MOTION)
+ motTreeCallMultiSelectionCb(ih);
+ }
+ return;
+ }
+ }
+
+ cbSelec = (IFnii)IupGetCallback(ih, "SELECTION_CB");
+ if (cbSelec)
+ {
+ Widget wItemFocus = motTreeGetFocusNode(ih);
+ int curpos = motTreeGetNodeId(ih, wItemFocus);
+ if (is_ctrl)
+ {
+ unsigned char isSelected;
+ XtVaGetValues(wItemFocus, XmNvisualEmphasis, &isSelected, NULL);
+ cbSelec(ih, curpos, isSelected == XmSELECTED? 1: 0);
+ }
+ else
+ {
+ int oldpos = iupAttribGetInt(ih, "_IUPTREE_OLDVALUE");
+ if (oldpos != curpos)
+ {
+ cbSelec(ih, oldpos, 0); /* unselected */
+ cbSelec(ih, curpos, 1); /* selected */
+
+ iupAttribSetInt(ih, "_IUPTREE_OLDVALUE", curpos);
+ }
+ }
+ }
+}
+
+static void motTreeDefaultActionCallback(Widget w, Ihandle* ih, XmContainerSelectCallbackStruct *nptr)
+{
+ unsigned char itemState;
+ WidgetList wSelectedItemList = NULL;
+ int countItems;
+ motTreeItemData *itemData;
+ Widget wItem;
+ (void)w;
+
+ wSelectedItemList = nptr->selected_items;
+ countItems = nptr->selected_item_count;
+
+ if (!countItems || (Widget)iupAttribGet(ih, "_IUPTREE_EDITFIELD"))
+ return;
+
+ /* this works also when using multiple selection */
+ wItem = wSelectedItemList[0];
+
+ XtVaGetValues(wItem, XmNoutlineState, &itemState,
+ XmNuserData, &itemData, NULL);
+
+ if (itemData->kind == ITREE_BRANCH)
+ {
+ if (itemState == XmEXPANDED)
+ XtVaSetValues(wItem, XmNoutlineState, XmCOLLAPSED, NULL);
+ else
+ XtVaSetValues(wItem, XmNoutlineState, XmEXPANDED, NULL);
+ }
+ else
+ {
+ IFni cbExecuteLeaf = (IFni)IupGetCallback(ih, "EXECUTELEAF_CB");
+ if (cbExecuteLeaf)
+ cbExecuteLeaf(ih, motTreeGetNodeId(ih, wItem));
+ }
+}
+
+static void motTreeOutlineChangedCallback(Widget w, Ihandle* ih, XmContainerOutlineCallbackStruct *nptr)
+{
+ motTreeItemData *itemData;
+ XtVaGetValues(nptr->item, XmNuserData, &itemData, NULL);
+
+ if (nptr->reason == XmCR_EXPANDED)
+ {
+ if (motTreeCallBranchOpenCb(ih, nptr->item) == IUP_IGNORE)
+ nptr->new_outline_state = XmCOLLAPSED; /* prevent the change */
+ else
+ {
+ XtVaSetValues(nptr->item, XmNsmallIconPixmap, (itemData->image_expanded!=XmUNSPECIFIED_PIXMAP)? itemData->image_expanded: (Pixmap)ih->data->def_image_expanded, NULL);
+ XtVaSetValues(nptr->item, XmNsmallIconMask, (itemData->image_expanded_mask!=XmUNSPECIFIED_PIXMAP)? itemData->image_expanded_mask: (Pixmap)ih->data->def_image_expanded_mask, NULL);
+ }
+ }
+ else if (nptr->reason == XmCR_COLLAPSED)
+ {
+ if (motTreeCallBranchCloseCb(ih, nptr->item) == IUP_IGNORE)
+ nptr->new_outline_state = XmEXPANDED; /* prevent the change */
+ else
+ {
+ XtVaSetValues(nptr->item, XmNsmallIconPixmap, (itemData->image!=XmUNSPECIFIED_PIXMAP)? itemData->image: (Pixmap)ih->data->def_image_collapsed, NULL);
+ XtVaSetValues(nptr->item, XmNsmallIconMask, (itemData->image_mask!=XmUNSPECIFIED_PIXMAP)? itemData->image_mask: (Pixmap)ih->data->def_image_collapsed_mask, NULL);
+ }
+ }
+
+ (void)w;
+}
+
+static void motTreeTraverseObscuredCallback(Widget widget, Ihandle* ih, XmTraverseObscuredCallbackStruct *cbs)
+{
+ (void)ih;
+ /* allow to do automatic scroll when navigating in the tree */
+ XmScrollVisible(widget, cbs->traversal_destination, 10, 10);
+}
+
+static void motTreeKeyReleaseEvent(Widget w, Ihandle *ih, XKeyEvent *evt, Boolean *cont)
+{
+ KeySym motcode;
+
+ if (iupAttribGet(ih, "_IUPTREE_EDITFIELD"))
+ return;
+
+ motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0);
+ if (motcode == XK_Down || motcode == XK_U || motcode == XK_Home || motcode == XK_End)
+ {
+ if (ih->data->mark_mode==ITREE_MARK_MULTIPLE && (evt->state & ShiftMask))
+ motTreeCallMultiSelectionCb(ih);
+ }
+
+ (void)w;
+ (void)cont;
+}
+
+static void motTreeKeyPressEvent(Widget w, Ihandle *ih, XKeyEvent *evt, Boolean *cont)
+{
+ KeySym motcode;
+
+ if (iupAttribGet(ih, "_IUPTREE_EDITFIELD"))
+ return;
+
+ *cont = True;
+ iupmotKeyPressEvent(w, ih, (XEvent*)evt, cont);
+ if (*cont == False)
+ return;
+
+ motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0);
+ if (motcode == XK_F2)
+ motTreeSetRenameAttrib(ih, NULL);
+ else if (motcode == XK_F1)
+ iupmotHelpCallback(w, ih, NULL);
+ else if ((motcode == XK_Down || motcode == XK_Up) && (evt->state & ControlMask))
+ {
+ Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+ Widget wItem;
+ Widget wItemFocus = motTreeGetFocusNode(ih);
+
+ /* Ctrl+Arrows move only focus */
+ if (motcode == XK_Down)
+ wItem = motTreeGetNextVisibleNode(ih, wRoot, wItemFocus);
+ else
+ wItem = motTreeGetPreviousVisibleNode(ih, wRoot, wItemFocus);
+
+ motTreeSetFocusNode(ih, wItem);
+ *cont = False;
+ }
+ else if(motcode == XK_Home || motcode == XK_End)
+ {
+ Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM");
+ Widget wItem;
+
+ /* Not processed by Motif */
+
+ if (motcode == XK_Home)
+ wItem = wRoot;
+ else
+ wItem = motTreeGetLastVisibleNode(ih, wRoot);
+
+ /* Ctrl+Arrows move only focus */
+ if (!(evt->state & ControlMask))
+ {
+ /* Shift+Arrows select block */
+ if (evt->state & ShiftMask)
+ {
+ Widget wItemFocus = motTreeGetFocusNode(ih);
+ if (!wItemFocus)
+ return;
+ motTreeSelectRange(ih, wItemFocus, wItem, 1);
+ }
+ else
+ {
+ /* clear previous selection */
+ XtVaSetValues(ih->handle, XmNselectedObjects, NULL, NULL);
+ XtVaSetValues(ih->handle, XmNselectedObjectCount, 0, NULL);
+
+ XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL);
+ }
+ }
+
+ motTreeSetFocusNode(ih, wItem);
+ *cont = False;
+ }
+ else if(motcode == XK_space && (evt->state & ControlMask))
+ {
+ Widget wItemFocus = motTreeGetFocusNode(ih);
+ if (wItemFocus)
+ {
+ unsigned char isSelected;
+ XtVaGetValues(wItemFocus, XmNvisualEmphasis, &isSelected, NULL);
+ if (isSelected == XmSELECTED)
+ XtVaSetValues(wItemFocus, XmNvisualEmphasis, XmNOT_SELECTED, NULL);
+ else
+ XtVaSetValues(wItemFocus, XmNvisualEmphasis, XmSELECTED, NULL);
+ }
+ }
+}
+
+static void motTreeButtonEvent(Widget w, Ihandle* ih, XButtonEvent* evt, Boolean* cont)
+{
+ (void)w;
+ (void)cont;
+
+ if (iupAttribGet(ih, "_IUPTREE_EDITFIELD"))
+ return;
+
+ *cont = True;
+ iupmotButtonPressReleaseEvent(w, ih, (XEvent*)evt, cont);
+ if (*cont == False)
+ return;
+
+ if (evt->type==ButtonPress)
+ {
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_ENTERLEAVE", "1");
+
+ if (evt->button==Button1)
+ {
+ Widget wItemFocus = motTreeGetFocusNode(ih);
+ static Widget wLastItem = NULL;
+ static Time last = 0;
+ int clicktwice = 0, doubleclicktime = XtGetMultiClickTime(iupmot_display);
+ int elapsed = (int)(evt->time - last);
+ last = evt->time;
+
+ /* stay away from double click and leave some room for clicks */
+ if (elapsed > (3*doubleclicktime)/2 && elapsed <= 3*doubleclicktime)
+ clicktwice = 1;
+
+ if (clicktwice && wLastItem && wLastItem==wItemFocus)
+ {
+ motTreeSetRenameAttrib(ih, NULL);
+ *cont = False;
+ }
+ wLastItem = wItemFocus;
+ }
+ else if (evt->button==Button3)
+ motTreeCallRightClickCb(ih, evt->x, evt->y);
+ }
+ else if (evt->type==ButtonRelease)
+ {
+ if (evt->button==Button1)
+ {
+ if (ih->data->mark_mode==ITREE_MARK_MULTIPLE && (evt->state & ShiftMask))
+ motTreeCallMultiSelectionCb(ih);
+ }
+ }
+}
+
+static void motTreeTransferProc(Widget drop_context, XtPointer client_data, Atom *seltype, Atom *type, XtPointer value, unsigned long *length, int format)
+{
+ Atom atomTreeItem = XInternAtom(iupmot_display, "TREE_ITEM", False);
+ Widget wItemDrop = (Widget)client_data;
+ Widget wItemDrag = (Widget)value;
+
+ if (*type == atomTreeItem)
+ {
+ Widget wParent;
+ Ihandle* ih = NULL;
+ int is_ctrl;
+
+ if (!wItemDrop || wItemDrag == wItemDrop)
+ return;
+
+ wParent = wItemDrop;
+ while(wParent)
+ {
+ XtVaGetValues(wParent, XmNentryParent, &wParent, NULL);
+ if (wParent == wItemDrag)
+ return;
+ }
+
+ XtVaGetValues(XtParent(wItemDrag), XmNuserData, &ih, NULL);
+
+ if (motTreeCallDragDropCb(ih, wItemDrag, wItemDrop, &is_ctrl) == IUP_CONTINUE)
+ {
+ /* Copy the dragged item to the new position. */
+ Widget wNewItem = motTreeCopyNode(ih, wItemDrag, wItemDrop, is_ctrl);
+
+ if (!is_ctrl)
+ {
+ /* do not delete the user data, we copy the references in CopyNode */
+ motTreeRemoveNode(ih, wItemDrag, 0);
+ }
+
+ /* Select the dragged item */
+ XtVaSetValues(ih->handle, XmNselectedObjects, NULL, NULL);
+ XtVaSetValues(ih->handle, XmNselectedObjectCount, 0, NULL);
+ XtVaSetValues(wNewItem, XmNvisualEmphasis, XmSELECTED, NULL);
+
+ motTreeSetFocusNode(ih, wNewItem);
+ }
+ }
+
+ (void)drop_context;
+ (void)seltype;
+ (void)format;
+ (void)length;
+}
+
+static void motTreeDropProc(Widget w, XtPointer client_data, XmDropProcCallbackStruct* drop_data)
+{
+ Atom atomTreeItem = XInternAtom(iupmot_display, "TREE_ITEM", False);
+ XmDropTransferEntryRec transferList[2];
+ Arg args[10];
+ int i, num_args = 0;
+ Widget wItemDrop, drop_context;
+ Cardinal numExportTargets;
+ Atom *exportTargets;
+ Boolean found = False;
+ (void)client_data;
+
+ drop_context = drop_data->dragContext;
+
+ /* retrieve the data targets */
+ iupmotSetArg(args, num_args, XmNexportTargets, &exportTargets);
+ iupmotSetArg(args, num_args, XmNnumExportTargets, &numExportTargets);
+ XtGetValues(drop_context, args, num_args);
+
+ for (i = 0; i < (int)numExportTargets; i++)
+ {
+ if (exportTargets[i] == atomTreeItem)
+ {
+ found = True;
+ break;
+ }
+ }
+
+ wItemDrop = XmObjectAtPoint(w, drop_data->x, drop_data->y);
+ if (!wItemDrop)
+ found = False;
+
+ num_args = 0;
+ if ((!found) || (drop_data->dropAction != XmDROP) || (drop_data->operation != XmDROP_COPY && drop_data->operation != XmDROP_MOVE))
+ {
+ iupmotSetArg(args, num_args, XmNtransferStatus, XmTRANSFER_FAILURE);
+ iupmotSetArg(args, num_args, XmNnumDropTransfers, 0);
+ }
+ else
+ {
+ /* set up transfer requests for drop site */
+ transferList[0].target = atomTreeItem;
+ transferList[0].client_data = (XtPointer)wItemDrop;
+ iupmotSetArg(args, num_args, XmNdropTransfers, transferList);
+ iupmotSetArg(args, num_args, XmNnumDropTransfers, 1);
+ iupmotSetArg(args, num_args, XmNtransferProc, motTreeTransferProc);
+ }
+
+ XmDropTransferStart(drop_context, args, num_args);
+}
+
+static void motTreeDragDropFinishCallback(Widget drop_context, XtPointer client_data, XtPointer call_data)
+{
+ Widget source_icon = NULL;
+ XtVaGetValues(drop_context, XmNsourceCursorIcon, &source_icon, NULL);
+ if (source_icon)
+ XtDestroyWidget(source_icon);
+ (void)call_data;
+ (void)client_data;
+}
+
+static void motTreeDragMotionCallback(Widget drop_context, Widget wItemDrag, XmDragMotionCallbackStruct* drag_motion)
+{
+ Ihandle* ih = NULL;
+ XtVaGetValues(XtParent(wItemDrag), XmNuserData, &ih, NULL);
+ if (!iupAttribGet(ih, "NODRAGFEEDBACK"))
+ {
+ Widget wItem;
+ int x = drag_motion->x;
+ int y = drag_motion->y;
+ iupdrvScreenToClient(ih, &x, &y);
+ wItem = XmObjectAtPoint(ih->handle, (Position)x, (Position)y);
+ if (wItem)
+ {
+ XtVaSetValues(ih->handle, XmNselectedObjects, NULL, NULL);
+ XtVaSetValues(ih->handle, XmNselectedObjectCount, 0, NULL);
+ XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL);
+ }
+ }
+ (void)drop_context;
+}
+
+static Boolean motTreeConvertProc(Widget drop_context, Atom *selection, Atom *target, Atom *type_return,
+ XtPointer *value_return, unsigned long *length_return, int *format_return)
+{
+ Atom atomMotifDrop = XInternAtom(iupmot_display, "_MOTIF_DROP", False);
+ Atom atomTreeItem = XInternAtom(iupmot_display, "TREE_ITEM", False);
+ Widget wItemDrag = NULL;
+
+ /* check if we are dealing with a drop */
+ if (*selection != atomMotifDrop || *target != atomTreeItem)
+ return False;
+
+ XtVaGetValues(drop_context, XmNclientData, &wItemDrag, NULL);
+ if (!wItemDrag)
+ return False;
+
+ /* format the value for transfer */
+ *type_return = atomTreeItem;
+ *value_return = (XtPointer)wItemDrag;
+ *length_return = 1;
+ *format_return = 32;
+ return True;
+}
+
+static void motTreeStartDrag(Widget w, XButtonEvent* evt, String* params, Cardinal* num_params)
+{
+ Atom atomTreeItem = XInternAtom(iupmot_display, "TREE_ITEM", False);
+ Atom exportList[1];
+ Widget drag_icon, drop_context;
+ Pixmap pixmap = 0, mask = 0;
+ int num_args = 0;
+ Arg args[40];
+ Pixel fg, bg;
+ Widget wItemDrag = XmObjectAtPoint(w, (Position)evt->x, (Position)evt->y);
+ if (!wItemDrag)
+ return;
+
+ XtVaGetValues(wItemDrag, XmNsmallIconPixmap, &pixmap,
+ XmNsmallIconMask, &mask,
+ XmNbackground, &bg,
+ XmNforeground, &fg,
+ NULL);
+
+ iupmotSetArg(args, num_args, XmNpixmap, pixmap);
+ iupmotSetArg(args, num_args, XmNmask, mask);
+ drag_icon = XmCreateDragIcon(w, "drag_icon", args, num_args);
+
+ exportList[0] = atomTreeItem;
+
+ /* specify resources for DragContext for the transfer */
+ num_args = 0;
+ iupmotSetArg(args, num_args, XmNcursorBackground, bg);
+ iupmotSetArg(args, num_args, XmNcursorForeground, fg);
+ /* iupmotSetArg(args, num_args, XmNsourcePixmapIcon, drag_icon); works, but only outside the dialog, inside disapears */
+ iupmotSetArg(args, num_args, XmNsourceCursorIcon, drag_icon); /* does not work, shows the default cursor */
+ iupmotSetArg(args, num_args, XmNexportTargets, exportList);
+ iupmotSetArg(args, num_args, XmNnumExportTargets, 1);
+ iupmotSetArg(args, num_args, XmNdragOperations, XmDROP_MOVE|XmDROP_COPY);
+ iupmotSetArg(args, num_args, XmNconvertProc, motTreeConvertProc);
+ iupmotSetArg(args, num_args, XmNclientData, wItemDrag);
+
+ /* start the drag and register a callback to clean up when done */
+ drop_context = XmDragStart(w, (XEvent*)evt, args, num_args);
+ XtAddCallback(drop_context, XmNdragDropFinishCallback, (XtCallbackProc)motTreeDragDropFinishCallback, NULL);
+ XtAddCallback(drop_context, XmNdragMotionCallback, (XtCallbackProc)motTreeDragMotionCallback, (XtPointer)wItemDrag);
+
+ (void)params;
+ (void)num_params;
+}
+
+static void motTreeEnableDragDrop(Widget w)
+{
+ Atom atomTreeItem = XInternAtom(iupmot_display, "TREE_ITEM", False);
+ Atom importList[1];
+ Arg args[40];
+ int num_args = 0;
+ char dragTranslations[] = "#override <Btn2Down>: StartDrag()";
+ static int do_rec = 0;
+ if (!do_rec)
+ {
+ XtActionsRec rec = {"StartDrag", (XtActionProc)motTreeStartDrag};
+ XtAppAddActions(iupmot_appcontext, &rec, 1);
+ do_rec = 1;
+ }
+ XtOverrideTranslations(w, XtParseTranslationTable(dragTranslations));
+
+ importList[0] = atomTreeItem;
+ iupmotSetArg(args, num_args, XmNimportTargets, importList);
+ iupmotSetArg(args, num_args, XmNnumImportTargets, 1);
+ iupmotSetArg(args, num_args, XmNdropSiteOperations, XmDROP_MOVE|XmDROP_COPY);
+ iupmotSetArg(args, num_args, XmNdropProc, motTreeDropProc);
+ XmDropSiteUpdate(w, args, num_args);
+
+ XtVaSetValues(XmGetXmDisplay(iupmot_display), XmNenableDragIcon, True, NULL);
+}
+
+static int motTreeMapMethod(Ihandle* ih)
+{
+ int num_args = 0;
+ Arg args[40];
+ Widget parent = iupChildTreeGetNativeParentHandle(ih);
+ char* child_id = iupDialogGetChildIdStr(ih);
+ Widget sb_win;
+
+ /******************************/
+ /* Create the scrolled window */
+ /******************************/
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */
+ iupmotSetArg(args, num_args, XmNscrollingPolicy, XmAUTOMATIC);
+ iupmotSetArg(args, num_args, XmNvisualPolicy, XmVARIABLE);
+ iupmotSetArg(args, num_args, XmNscrollBarDisplayPolicy, XmAS_NEEDED);
+ iupmotSetArg(args, num_args, XmNspacing, 0); /* no space between scrollbars and text */
+ iupmotSetArg(args, num_args, XmNborderWidth, 0);
+ iupmotSetArg(args, num_args, XmNshadowThickness, 2);
+
+ sb_win = XtCreateManagedWidget(
+ child_id, /* child identifier */
+ xmScrolledWindowWidgetClass, /* widget class */
+ parent, /* widget parent */
+ args, num_args);
+
+ if (!sb_win)
+ return IUP_ERROR;
+
+ XtAddCallback (sb_win, XmNtraverseObscuredCallback, (XtCallbackProc)motTreeTraverseObscuredCallback, (XtPointer)ih);
+
+ parent = sb_win;
+ child_id = "container";
+
+ num_args = 0;
+
+ iupmotSetArg(args, num_args, XmNx, 0); /* x-position */
+ iupmotSetArg(args, num_args, XmNy, 0); /* y-position */
+ iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */
+ iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */
+
+ iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* default padding */
+ iupmotSetArg(args, num_args, XmNmarginWidth, 0);
+
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ iupmotSetArg(args, num_args, XmNtraversalOn, True);
+ else
+ iupmotSetArg(args, num_args, XmNtraversalOn, False);
+
+ iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP);
+ iupmotSetArg(args, num_args, XmNhighlightThickness, 2);
+ iupmotSetArg(args, num_args, XmNshadowThickness, 0);
+
+ iupmotSetArg(args, num_args, XmNlayoutType, XmOUTLINE);
+ iupmotSetArg(args, num_args, XmNentryViewType, XmSMALL_ICON);
+ iupmotSetArg(args, num_args, XmNselectionPolicy, XmSINGLE_SELECT);
+ iupmotSetArg(args, num_args, XmNoutlineIndentation, 20);
+
+ if (iupAttribGetBoolean(ih, "HIDELINES"))
+ iupmotSetArg(args, num_args, XmNoutlineLineStyle, XmNO_LINE);
+ else
+ iupmotSetArg(args, num_args, XmNoutlineLineStyle, XmSINGLE);
+
+ if (iupAttribGetBoolean(ih, "HIDEBUTTONS"))
+ iupmotSetArg(args, num_args, XmNoutlineButtonPolicy, XmOUTLINE_BUTTON_ABSENT);
+ else
+ iupmotSetArg(args, num_args, XmNoutlineButtonPolicy, XmOUTLINE_BUTTON_PRESENT);
+
+ ih->handle = XtCreateManagedWidget(
+ child_id, /* child identifier */
+ xmContainerWidgetClass, /* widget class */
+ parent, /* widget parent */
+ args, num_args);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ ih->serial = iupDialogGetChildId(ih); /* must be after using the string */
+
+ iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)parent);
+
+ XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)motTreeEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)motTreeEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)motTreeFocusChangeEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)motTreeKeyPressEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, KeyReleaseMask, False, (XtEventHandler)motTreeKeyReleaseEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, ButtonPressMask|ButtonReleaseMask, False, (XtEventHandler)motTreeButtonEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, PointerMotionMask, False, (XtEventHandler)iupmotPointerMotionEvent, (XtPointer)ih);
+
+ /* Callbacks */
+ /* XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih); NOT WORKING */
+ XtAddCallback(ih->handle, XmNoutlineChangedCallback, (XtCallbackProc)motTreeOutlineChangedCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNdefaultActionCallback, (XtCallbackProc)motTreeDefaultActionCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNselectionCallback, (XtCallbackProc)motTreeSelectionCallback, (XtPointer)ih);
+
+ XtRealizeWidget(parent);
+
+ if (ih->data->show_dragdrop)
+ {
+ motTreeEnableDragDrop(ih->handle);
+ XtVaSetValues(ih->handle, XmNuserData, ih, NULL); /* to be used in motTreeTransferProc */
+ }
+ else
+ iupmotDisableDragSource(ih->handle);
+
+ /* Force background update before setting the images */
+ {
+ char* value = iupAttribGet(ih, "BGCOLOR");
+ if (value)
+ {
+ motTreeSetBgColorAttrib(ih, value);
+ iupAttribSetStr(ih, "BGCOLOR", NULL);
+ }
+ }
+
+ /* Initialize the default images */
+ ih->data->def_image_leaf = iupImageGetImage("IMGLEAF", ih, 0);
+ if (!ih->data->def_image_leaf)
+ {
+ ih->data->def_image_leaf = (void*)XmUNSPECIFIED_PIXMAP;
+ ih->data->def_image_leaf_mask = (void*)XmUNSPECIFIED_PIXMAP;
+ }
+ else
+ {
+ ih->data->def_image_leaf_mask = iupImageGetMask("IMGLEAF");
+ if (!ih->data->def_image_leaf_mask) ih->data->def_image_leaf_mask = (void*)XmUNSPECIFIED_PIXMAP;
+ }
+
+ ih->data->def_image_collapsed = iupImageGetImage("IMGCOLLAPSED", ih, 0);
+ if (!ih->data->def_image_collapsed)
+ {
+ ih->data->def_image_collapsed = (void*)XmUNSPECIFIED_PIXMAP;
+ ih->data->def_image_collapsed_mask = (void*)XmUNSPECIFIED_PIXMAP;
+ }
+ else
+ {
+ ih->data->def_image_collapsed_mask = iupImageGetMask("IMGCOLLAPSED");
+ if (!ih->data->def_image_collapsed_mask) ih->data->def_image_collapsed_mask = (void*)XmUNSPECIFIED_PIXMAP;
+ }
+
+ ih->data->def_image_expanded = iupImageGetImage("IMGEXPANDED", ih, 0);
+ if (!ih->data->def_image_expanded)
+ {
+ ih->data->def_image_expanded = (void*)XmUNSPECIFIED_PIXMAP;
+ ih->data->def_image_expanded_mask = (void*)XmUNSPECIFIED_PIXMAP;
+ }
+ else
+ {
+ ih->data->def_image_expanded_mask = iupImageGetMask("IMGEXPANDED");
+ if (!ih->data->def_image_expanded_mask) ih->data->def_image_expanded_mask = (void*)XmUNSPECIFIED_PIXMAP;
+ }
+
+ motTreeAddRootNode(ih);
+
+ IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)motTreeConvertXYToPos);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvTreeInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motTreeMapMethod;
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motTreeSetBgColorAttrib, "TXTBGCOLOR", NULL, IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, motTreeSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT);
+
+ /* IupTree Attributes - GENERAL */
+ iupClassRegisterAttribute(ic, "EXPANDALL", NULL, motTreeSetExpandAllAttrib, NULL, NULL, IUPAF_WRITEONLY||IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "INDENTATION", motTreeGetIndentationAttrib, motTreeSetIndentationAttrib, NULL, NULL, IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "COUNT", motTreeGetCountAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPACING", iupTreeGetSpacingAttrib, motTreeSetSpacingAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "TOPITEM", NULL, motTreeSetTopItemAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+
+ /* IupTree Attributes - IMAGES */
+ iupClassRegisterAttributeId(ic, "IMAGE", NULL, motTreeSetImageAttrib, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "IMAGEEXPANDED", NULL, motTreeSetImageExpandedAttrib, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "IMAGELEAF", NULL, motTreeSetImageLeafAttrib, IUPAF_SAMEASSYSTEM, "IMGLEAF", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGEBRANCHCOLLAPSED", NULL, motTreeSetImageBranchCollapsedAttrib, IUPAF_SAMEASSYSTEM, "IMGCOLLAPSED", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGEBRANCHEXPANDED", NULL, motTreeSetImageBranchExpandedAttrib, IUPAF_SAMEASSYSTEM, "IMGEXPANDED", IUPAF_NO_INHERIT);
+
+ /* IupTree Attributes - NODES */
+ iupClassRegisterAttributeId(ic, "STATE", motTreeGetStateAttrib, motTreeSetStateAttrib, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "DEPTH", motTreeGetDepthAttrib, NULL, IUPAF_READONLY|IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "KIND", motTreeGetKindAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "PARENT", motTreeGetParentAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "COLOR", motTreeGetColorAttrib, motTreeSetColorAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "NAME", motTreeGetTitleAttrib, motTreeSetTitleAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "TITLE", motTreeGetTitleAttrib, motTreeSetTitleAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "USERDATA", motTreeGetUserDataAttrib, motTreeSetUserDataAttrib, IUPAF_NO_STRING|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "CHILDCOUNT", motTreeGetChildCountAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "TITLEFONT", motTreeGetTitleFontAttrib, motTreeSetTitleFontAttrib, IUPAF_NO_INHERIT);
+
+ /* IupTree Attributes - MARKS */
+ iupClassRegisterAttributeId(ic, "MARKED", motTreeGetMarkedAttrib, motTreeSetMarkedAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute (ic, "MARK", NULL, motTreeSetMarkAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute (ic, "STARTING", NULL, motTreeSetMarkStartAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute (ic, "MARKSTART", NULL, motTreeSetMarkStartAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute (ic, "VALUE", motTreeGetValueAttrib, motTreeSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupTree Attributes - ACTION */
+ iupClassRegisterAttributeId(ic, "DELNODE", NULL, motTreeSetDelNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "RENAME", NULL, motTreeSetRenameAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "MOVENODE", NULL, motTreeSetMoveNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "COPYNODE", NULL, motTreeSetCopyNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "FINDUSERDATA", motTreeGetFindUserDataAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/mot/iupmot_val.c b/iup/src/mot/iupmot_val.c
new file mode 100755
index 0000000..200d2b4
--- /dev/null
+++ b/iup/src/mot/iupmot_val.c
@@ -0,0 +1,488 @@
+/** \file
+ * \brief Valuator Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <Xm/Xm.h>
+#include <Xm/Scale.h>
+#include <Xm/SeparatoG.h>
+#include <X11/keysym.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <memory.h>
+#include <stdarg.h>
+#include <limits.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_val.h"
+#include "iup_image.h"
+#include "iup_drv.h"
+
+#include "iupmot_drv.h"
+#include "iupmot_color.h"
+
+
+void iupdrvValGetMinSize(Ihandle* ih, int *w, int *h)
+{
+ int ticks_size = 0;
+ if (iupAttribGetInt(ih, "SHOWTICKS"))
+ ticks_size = 8;
+
+ if (ih->data->type == IVAL_HORIZONTAL)
+ {
+ *w = 30;
+ *h = 20+ticks_size;
+ }
+ else
+ {
+ *w = 20+ticks_size;
+ *h = 30;
+ }
+}
+
+static void motValRemoveOldTicks(Widget scale)
+{
+ WidgetList children = (WidgetList)0;
+ Cardinal num_children = (Cardinal)0;
+ Cardinal i;
+ String name;
+
+ XtVaGetValues(scale, XmNchildren, &children,
+ XmNnumChildren, &num_children,
+ NULL);
+
+ for (i = 0; i < num_children; i++)
+ {
+ if (XmIsSeparatorGadget(children[i]))
+ {
+ if ((name = XtName(children[i])) != (String)0)
+ {
+ if ((strcmp(name, "BigTic") == 0) ||
+ (strcmp(name, "MedTic") == 0) ||
+ (strcmp(name, "SmallTic") == 0))
+ {
+ XtDestroyWidget(children[i]);
+ }
+ }
+ }
+ }
+}
+
+static int motValSetShowTicksAttrib(Ihandle* ih, const char* value)
+{
+ int tick_freq, show_ticks;
+
+ if (!ih->data->show_ticks) /* can only set if already not zero */
+ return 0;
+
+ show_ticks = atoi(value);
+ if (show_ticks<2) show_ticks=2;
+ ih->data->show_ticks = show_ticks;
+
+ motValRemoveOldTicks(ih->handle);
+
+ /* Defines the interval frequency for tick marks */
+ tick_freq = SHRT_MAX/(show_ticks-1);
+ XmScaleSetTicks(ih->handle, tick_freq, 0, 0, 8, 0, 0);
+ return 0;
+}
+
+static int motValSetPageStepAttrib(Ihandle* ih, const char* value)
+{
+ int pagesize;
+ ih->data->pagestep = atof(value);
+ pagesize = (int)(ih->data->pagestep*SHRT_MAX);
+ XtVaSetValues(ih->handle, XmNscaleMultiple, pagesize, NULL);
+ return 0; /* do not store value in hash table */
+}
+
+static int motValSetStepAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->step = atof(value);
+ return 0; /* do not store value in hash table */
+}
+
+static int motValSetValueAttrib(Ihandle* ih, const char* value)
+{
+ int ival;
+
+ ih->data->val = atof(value);
+ iupValCropValue(ih);
+
+ ival = (int)(((ih->data->val-ih->data->vmin)/(ih->data->vmax - ih->data->vmin))*SHRT_MAX);
+ XtVaSetValues(ih->handle, XmNvalue, ival, NULL);
+
+ return 0; /* do not store value in hash table */
+}
+
+static int motValSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color;
+ unsigned char r, g, b;
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ r = (r*8)/10;
+ g = (g*8)/10;
+ b = (b*8)/10;
+
+ color = iupmotColorGetPixel(r, g, b);
+ if (color != (Pixel)-1)
+ {
+ Widget w = XtNameToWidget(ih->handle, "*Scrollbar");
+ XtVaSetValues(w, XmNtroughColor, color, NULL);
+ }
+
+ return iupdrvBaseSetBgColorAttrib(ih, value);
+}
+
+static int motValSetBackgroundAttrib(Ihandle* ih, const char* value)
+{
+ Pixel color;
+
+ /* ignore given value, must use only from parent */
+ value = iupAttribGetInheritNativeParent(ih, "BACKGROUND");
+
+ color = iupmotColorGetPixelStr(value);
+ if (color != (Pixel)-1)
+ {
+ XtVaSetValues(ih->handle, XmNbackground, color, NULL);
+ return 1;
+ }
+ else
+ {
+ Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0);
+ if (pixmap)
+ {
+ XtVaSetValues(ih->handle, XmNbackgroundPixmap, pixmap, NULL);
+ return 1;
+ }
+ }
+ return 0;
+}
+
+
+/*********************************************************************************************/
+
+
+static void motValCallAction(Ihandle* ih, int ival, int cb_state)
+{
+ double old_val = ih->data->val;
+ IFn cb;
+
+ ih->data->val = (((double)ival/(double)SHRT_MAX)*(ih->data->vmax - ih->data->vmin)) + ih->data->vmin;
+ iupValCropValue(ih);
+
+ cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB");
+ if (cb)
+ {
+ if (ih->data->val == old_val)
+ return;
+
+ cb(ih);
+ }
+ else
+ {
+ IFnd cb_old;
+ if (cb_state == 0)
+ cb_old = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB");
+ else if (cb_state == -1)
+ cb_old = (IFnd) IupGetCallback(ih, "BUTTON_RELEASE_CB");
+ else
+ cb_old = (IFnd) IupGetCallback(ih, "BUTTON_PRESS_CB");
+
+ if (cb_old)
+ cb_old(ih, ih->data->val);
+ }
+}
+
+static void motValIncPageValue(Ihandle *ih, int dir)
+{
+ int pagesize, ival;
+ pagesize = (int)(ih->data->pagestep*SHRT_MAX);
+
+ if (ih->data->inverted)
+ dir *= -1;
+
+ XtVaGetValues(ih->handle, XmNvalue, &ival, NULL);
+ ival += dir*pagesize;
+ if (ival < 0) ival = 0;
+ if (ival > SHRT_MAX) ival = SHRT_MAX;
+ XtVaSetValues(ih->handle, XmNvalue, ival, NULL);
+
+ motValCallAction(ih, ival, 1);
+}
+
+static void motValIncLineValue(Ihandle *ih, int dir)
+{
+ int linesize, ival;
+ linesize = (int)(ih->data->step*SHRT_MAX);
+
+ if (ih->data->inverted)
+ dir *= -1;
+
+ XtVaGetValues(ih->handle, XmNvalue, &ival, NULL);
+ ival += dir*linesize;
+ if (ival < 0) ival = 0;
+ if (ival > SHRT_MAX) ival = SHRT_MAX;
+ XtVaSetValues(ih->handle, XmNvalue, ival, NULL);
+
+ motValCallAction(ih, ival, 1);
+}
+
+static void motValKeyPressEvent(Widget w, Ihandle *ih, XKeyEvent *evt, Boolean *cont)
+{
+ KeySym motcode;
+
+ *cont = True;
+ iupmotKeyPressEvent(w, ih, (XEvent*)evt, cont);
+ if (*cont == False)
+ return;
+
+ motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0);
+
+ /* add missing support for numeric keyboard */
+ /* add missing support for left/right in vertical
+ and up/down in horizontal */
+ if (motcode == XK_Left || motcode == XK_KP_Left ||
+ motcode == XK_Up || motcode == XK_KP_Up)
+ {
+ motValIncLineValue(ih, -1);
+ *cont = False;
+ return;
+ }
+ if (motcode == XK_Right || motcode == XK_KP_Right ||
+ motcode == XK_Down || motcode == XK_KP_Down)
+ {
+ motValIncLineValue(ih, 1);
+ *cont = False;
+ return;
+ }
+ if (motcode == XK_Prior || motcode == XK_KP_Page_Up)
+ {
+ motValIncPageValue(ih, -1);
+ *cont = False;
+ return;
+ }
+ if (motcode == XK_Next || motcode == XK_KP_Page_Down)
+ {
+ motValIncPageValue(ih, 1);
+ *cont = False;
+ return;
+ }
+
+ /* change Home and End default behaviour */
+ if (ih->data->inverted)
+ {
+ if (motcode==XK_Home || motcode==XK_KP_Home)
+ {
+ int ival = SHRT_MAX; /* set to maximum */
+ XtVaSetValues(ih->handle, XmNvalue, ival, NULL);
+ motValCallAction(ih, ival, 1);
+ *cont = False;
+ return;
+ }
+ if (motcode==XK_End || motcode==XK_KP_End)
+ {
+ int ival = 0; /* set to minimum */
+ XtVaSetValues(ih->handle, XmNvalue, ival, NULL);
+ motValCallAction(ih, ival, 1);
+ *cont = False;
+ return;
+ }
+ }
+ else
+ {
+ /* add missing support for numeric keyboard */
+ if (motcode==XK_KP_Home)
+ {
+ int ival = 0; /* set to minimum */
+ XtVaSetValues(ih->handle, XmNvalue, ival, NULL);
+ motValCallAction(ih, ival, 1);
+ *cont = False;
+ return;
+ }
+ if (motcode==XK_KP_End)
+ {
+ int ival = SHRT_MAX; /* set to maximum */
+ XtVaSetValues(ih->handle, XmNvalue, ival, NULL);
+ motValCallAction(ih, ival, 1);
+ *cont = False;
+ return;
+ }
+ }
+}
+
+static void motValValueChangedCallback(Widget w, Ihandle* ih, XmScaleCallbackStruct *cbs)
+{
+ int cb_state = 1;
+
+ if(cbs->reason == XmCR_DRAG)
+ cb_state = 0;
+ else if (cbs->event && (cbs->event->type==ButtonRelease || cbs->event->type==KeyRelease))
+ cb_state = -1;
+
+ motValCallAction(ih, cbs->value, cb_state);
+
+ (void)w;
+}
+
+static void motValButtonPressReleaseEvent(Widget w, Ihandle* ih, XButtonEvent* evt, Boolean* cont)
+{
+ (void)w;
+ (void)cont;
+
+ /* When Button1 is pressed, the Scrollbar loses its focus to the scale,
+ So we avoid calling GETFOCUS/KILLFOCUS.
+ */
+
+ if (evt->type==ButtonPress && evt->button==Button1)
+ {
+ iupAttribSetStr(ih, "_IUPVAL_IGNOREFOCUS", "1");
+ }
+ if (evt->type==ButtonRelease && evt->button==Button1)
+ {
+ iupAttribSetStr(ih, "_IUPVAL_IGNOREFOCUS", NULL);
+ iupAttribSetStr(ih, "_IUPVAL_IGNOREKILLFOCUS", "1");
+ }
+}
+
+static void motValFocusChangeEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont)
+{
+ if (iupAttribGet(ih, "_IUPVAL_IGNOREFOCUS"))
+ return;
+
+ if (evt->type == FocusOut && iupAttribGet(ih, "_IUPVAL_IGNOREKILLFOCUS"))
+ {
+ iupAttribSetStr(ih, "_IUPVAL_IGNOREKILLFOCUS", NULL);
+ return;
+ }
+
+ iupmotFocusChangeEvent(w, ih, evt, cont);
+}
+
+
+/*********************************************************************************************/
+
+
+static int motValMapMethod(Ihandle* ih)
+{
+ int num_args = 0;
+ Arg args[30];
+ int show_ticks;
+
+ /* Core */
+ iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */
+ iupmotSetArg(args, num_args, XmNx, 0); /* x-position */
+ iupmotSetArg(args, num_args, XmNy, 0); /* y-position */
+ iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */
+ iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */
+ /* Primitive */
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ iupmotSetArg(args, num_args, XmNtraversalOn, True);
+ else
+ iupmotSetArg(args, num_args, XmNtraversalOn, False);
+ iupmotSetArg(args, num_args, XmNhighlightThickness, 2);
+ iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP);
+ /* Scale */
+ iupmotSetArg(args, num_args, XmNminimum, 0);
+ iupmotSetArg(args, num_args, XmNmaximum, SHRT_MAX);
+ iupmotSetArg(args, num_args, XmNslidingMode, XmSLIDER);
+ iupmotSetArg(args, num_args, XmNsliderMark, XmETCHED_LINE);
+ iupmotSetArg(args, num_args, XmNsliderSize, 16);
+ iupmotSetArg(args, num_args, XmNshowValue, XmNONE);
+
+ if (ih->data->type == IVAL_HORIZONTAL)
+ {
+ iupmotSetArg(args, num_args, XmNorientation, XmHORIZONTAL);
+ if (ih->data->inverted)
+ iupmotSetArg(args, num_args, XmNprocessingDirection, XmMAX_ON_LEFT);
+ else
+ iupmotSetArg(args, num_args, XmNprocessingDirection, XmMAX_ON_RIGHT);
+ }
+ else
+ {
+ iupmotSetArg(args, num_args, XmNorientation, XmVERTICAL);
+ if (ih->data->inverted)
+ iupmotSetArg(args, num_args, XmNprocessingDirection, XmMAX_ON_TOP);
+ else
+ iupmotSetArg(args, num_args, XmNprocessingDirection, XmMAX_ON_BOTTOM);
+ }
+
+ ih->handle = XtCreateManagedWidget(
+ iupDialogGetChildIdStr(ih), /* child identifier */
+ xmScaleWidgetClass, /* widget class */
+ iupChildTreeGetNativeParentHandle(ih), /* widget parent */
+ args, num_args);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ /* callbacks */
+ XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+ XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
+
+ /* XmScale changes the default behavior of these, must set directly into the scrollbar */
+ /* XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih); */
+ /* XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih); */
+
+ XtAddCallback(ih->handle, XmNdragCallback, (XtCallbackProc)motValValueChangedCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNvalueChangedCallback, (XtCallbackProc)motValValueChangedCallback, (XtPointer)ih);
+ XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih);
+
+ {
+ Widget sb = XtNameToWidget(ih->handle, "Scrollbar"); /* TODO: Test this in other Motifs */
+ if (sb)
+ {
+ XtAddEventHandler(sb, FocusChangeMask, False, (XtEventHandler)motValFocusChangeEvent, (XtPointer)ih);
+ XtAddEventHandler(sb, KeyPressMask, False, (XtEventHandler)motValKeyPressEvent, (XtPointer)ih);
+ XtAddEventHandler(sb, ButtonPressMask|ButtonReleaseMask, False, (XtEventHandler)motValButtonPressReleaseEvent, (XtPointer)ih);
+ }
+ }
+
+ /* Ticks can only be created before XtRealizeWidget */
+ show_ticks = iupAttribGetInt(ih, "SHOWTICKS");
+ if (show_ticks)
+ {
+ if (show_ticks<2) show_ticks=2;
+ ih->data->show_ticks = show_ticks; /* non zero value, can be changed later, but not to zero */
+ }
+
+ ih->serial = iupDialogGetChildId(ih); /* must be after using the string */
+
+ /* initialize the widget */
+ XtRealizeWidget(ih->handle);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvValInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = motValMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motValSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motValSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+
+ /* IupVal only */
+ iupClassRegisterAttribute(ic, "VALUE", iupValGetValueAttrib, motValSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "PAGESTEP", iupValGetPageStepAttrib, motValSetPageStepAttrib, IUPAF_SAMEASSYSTEM, "0.1", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOWTICKS", iupValGetShowTicksAttrib, motValSetShowTicksAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "STEP", iupValGetStepAttrib, motValSetStepAttrib, IUPAF_SAMEASSYSTEM, "0.01", IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/mot/iupunix_help.c b/iup/src/mot/iupunix_help.c
new file mode 100755
index 0000000..02be1da
--- /dev/null
+++ b/iup/src/mot/iupunix_help.c
@@ -0,0 +1,44 @@
+/** \file
+ * \brief Motif Driver IupHelp
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+
+int IupHelp(const char *url)
+{
+ char *cmd;
+ int ret;
+ char *browser = getenv("IUP_HELPAPP");
+ if (!browser)
+ browser = IupGetGlobal("HELPAPP");
+
+ if (!browser)
+ {
+ char* system = IupGetGlobal("SYSTEM");
+ if (iupStrEqualNoCase(system, "Linux") ||
+ iupStrEqualNoCase(system, "FreeBSD"))
+ browser = "firefox";
+ else if (iupStrEqualNoCase(system, "Darwin"))
+ browser = "safari";
+ else if (iupStrEqualPartial(system, "CYGWIN"))
+ browser = "iexplore";
+ else
+ browser = "netscape";
+ }
+
+ cmd = (char*)malloc(sizeof(char)*(strlen(url)+strlen(browser)+3));
+ sprintf(cmd, "%s %s &", browser, url);
+ ret = system(cmd);
+ free(cmd);
+ if (ret == -1)
+ return -1;
+ return 1;
+}
diff --git a/iup/src/mot/iupunix_info.c b/iup/src/mot/iupunix_info.c
new file mode 100755
index 0000000..b522638
--- /dev/null
+++ b/iup/src/mot/iupunix_info.c
@@ -0,0 +1,305 @@
+/** \file
+ * \brief UNIX System Information
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+#include <sys/stat.h>
+
+/* This module should depend only on IUP core headers
+ and UNIX system headers. NO Motif headers allowed. */
+
+#include <X11/X.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <sys/utsname.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/stat.h>
+
+#include "iup_str.h"
+#include "iup_drvinfo.h"
+
+
+int iupdrvMakeDirectory(const char* name)
+{
+ mode_t oldmask = umask((mode_t)0);
+ int fail = mkdir(name, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP |
+ S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH);
+ umask (oldmask);
+ if (fail)
+ return 0;
+ return 1;
+}
+
+int iupdrvIsFile(const char* name)
+{
+ struct stat status;
+ if (stat(name, &status) != 0)
+ return 0;
+ if (S_ISDIR(status.st_mode))
+ return 0;
+ return 1;
+}
+
+int iupdrvIsDirectory(const char* name)
+{
+ struct stat status;
+ if (stat(name, &status) != 0)
+ return 0;
+ if (S_ISDIR(status.st_mode))
+ return 1;
+ return 0;
+}
+
+char* iupdrvGetCurrentDirectory(void)
+{
+ size_t size = 256;
+ char *buffer = (char *)malloc(size);
+
+ for (;;)
+ {
+ if (getcwd(buffer, size) != NULL)
+ return buffer;
+
+ if (errno != ERANGE)
+ {
+ free(buffer);
+ return NULL;
+ }
+
+ size += size;
+ buffer = (char *)realloc(buffer, size);
+ }
+
+ return NULL;
+}
+
+int iupdrvSetCurrentDirectory(const char* dir)
+{
+ return chdir(dir) == 0? 1: 0;
+}
+
+int iupdrvGetWindowDecor(void* wnd, int *border, int *caption)
+{
+ XWindowAttributes wa;
+ wa.x = 0; wa.y = 0;
+ XGetWindowAttributes((Display*)iupdrvGetDisplay(), (Window)wnd, &wa);
+ if (wa.x > 0 && wa.y > 0 && wa.y >= wa.x)
+ {
+ *border = wa.x;
+ *caption = wa.y - *border;
+ return 1;
+ }
+
+ *border = 0;
+ *caption = 0;
+
+ return 0;
+}
+
+static int xGetWorkAreaSize(Display* display, int screen, int *width, int *height)
+{
+ /* _NET_WORKAREA, x, y, width, height CARDINAL[][4]/32 */
+ static Atom workarea = 0;
+ Atom type;
+ long *data;
+ int format;
+ unsigned long after, ndata;
+
+ if (!workarea)
+ workarea = XInternAtom(display, "_NET_WORKAREA", False);
+
+ XGetWindowProperty(display, RootWindow(display, screen),
+ workarea, 0, LONG_MAX, False, XA_CARDINAL, &type, &format, &ndata,
+ &after, (unsigned char **)&data);
+ if (type != XA_CARDINAL || data == NULL)
+ {
+ if (data) XFree(data);
+ return 0;
+ }
+
+ *width = data[2]; /* get only for the first desktop */
+ *height = data[3];
+
+ XFree(data);
+ return 1;
+}
+
+void iupdrvGetScreenSize(int *width, int *height)
+{
+ Display* display = (Display*)iupdrvGetDisplay();
+ int screen = XDefaultScreen(display);
+ if (!xGetWorkAreaSize(display, screen, width, height))
+ {
+ *width = DisplayWidth(display, screen);
+ *height = DisplayHeight(display, screen);
+ }
+}
+
+void iupdrvGetFullSize(int *width, int *height)
+{
+ Display* display = (Display*)iupdrvGetDisplay();
+ int screen = XDefaultScreen(display);
+ Window root = RootWindow(display, screen);
+ XWindowAttributes wa;
+ XGetWindowAttributes(display, root, &wa);
+ *width = wa.width;
+ *height = wa.height;
+}
+
+static int xCheckVisualInfo(Display* drv_display, int bpp)
+{
+ int nitems;
+ XVisualInfo info, *ret_info;
+
+ info.depth = bpp;
+ ret_info = XGetVisualInfo(drv_display, VisualDepthMask, &info, &nitems);
+ if (ret_info != NULL)
+ {
+ XFree(ret_info);
+ return 1;
+ }
+ return 0;
+}
+
+int iupdrvGetScreenDepth(void)
+{
+ static int first = 1;
+ static int bpp;
+
+ if (first)
+ {
+ Display* drv_display = (Display*)iupdrvGetDisplay();
+
+ if (xCheckVisualInfo(drv_display, 24))
+ {
+ bpp = 24;
+ return bpp;
+ }
+
+ if (xCheckVisualInfo(drv_display, 16))
+ {
+ bpp = 16;
+ return bpp;
+ }
+
+ if (xCheckVisualInfo(drv_display, 8))
+ {
+ bpp = 8;
+ return bpp;
+ }
+
+ if (xCheckVisualInfo(drv_display, 4))
+ {
+ bpp = 4;
+ return bpp;
+ }
+
+ bpp = 2;
+
+ first = 0;
+ }
+
+ return bpp;
+}
+
+void iupdrvGetCursorPos(int *x, int *y)
+{
+ Window root, child;
+ int cx, cy;
+ unsigned int keys;
+ Display* display = (Display*)iupdrvGetDisplay();
+ int screen = XDefaultScreen(display);
+
+ XQueryPointer(display, RootWindow(display, screen),
+ &root, &child, x, y, &cx, &cy, &keys);
+}
+
+static int xCheckModifier(KeyCode* modifiermap, int max_keypermod, int index, const char* keys)
+{
+ int i;
+ for (i = 0; i < max_keypermod; i++)
+ {
+ KeyCode key = modifiermap[max_keypermod * index + i];
+ if (key)
+ {
+ int KeyIndex = key / 8;
+ int KeyMask = 1 << (key % 8);
+ if (keys[KeyIndex] & KeyMask)
+ return 1;
+ }
+ }
+ return 0;
+}
+
+void iupdrvGetKeyState(char* key)
+{
+ char keys[32];
+ Display* display = (Display*)iupdrvGetDisplay();
+ XModifierKeymap *modMap = XGetModifierMapping(display);
+ XQueryKeymap(display, keys);
+
+ if (xCheckModifier(modMap->modifiermap, modMap->max_keypermod, ShiftMapIndex, keys))
+ key[0] = 'S';
+ else
+ key[0] = ' ';
+ if (xCheckModifier(modMap->modifiermap, modMap->max_keypermod, ControlMapIndex, keys))
+ key[1] = 'C';
+ else
+ key[1] = ' ';
+ if (xCheckModifier(modMap->modifiermap, modMap->max_keypermod, Mod1MapIndex, keys) ||
+ xCheckModifier(modMap->modifiermap, modMap->max_keypermod, Mod5MapIndex, keys))
+ key[2] = 'A';
+ else
+ key[2] = ' ';
+ if (xCheckModifier(modMap->modifiermap, modMap->max_keypermod, Mod4MapIndex, keys))
+ key[3] = 'Y';
+ else
+ key[3] = ' ';
+
+ key[4] = 0;
+
+ XFreeModifiermap(modMap);
+}
+
+char *iupdrvGetSystemName(void)
+{
+ struct utsname un;
+ char *str = iupStrGetMemory(50);
+
+ uname(&un);
+ strcpy(str, un.sysname);
+
+ return str;
+}
+
+char *iupdrvGetSystemVersion(void)
+{
+ struct utsname un;
+ char *str = iupStrGetMemory(60);
+
+ uname(&un);
+ strcpy(str, un.release);
+ strcat(str, ".");
+ strcat(str, un.version);
+
+ return str;
+}
+
+char *iupdrvGetComputerName(void)
+{
+ char* str = iupStrGetMemory(50);
+ gethostname(str, 50);
+ return str;
+}
+
+char *iupdrvGetUserName(void)
+{
+ return (char*)getlogin();
+}
diff --git a/iup/src/win/iupwin_brush.c b/iup/src/win/iupwin_brush.c
new file mode 100755
index 0000000..228e6d4
--- /dev/null
+++ b/iup/src/win/iupwin_brush.c
@@ -0,0 +1,62 @@
+/** \file
+ * \brief Windows Brush Cache
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <windows.h>
+
+#include "iup.h"
+#include "iup_array.h"
+
+#include "iupwin_brush.h"
+
+
+typedef struct _IwinBrush
+{
+ HBRUSH hbrush;
+ COLORREF color;
+} IwinBrush;
+
+static Iarray* win_brushes = NULL;
+
+HBRUSH iupwinBrushGet(COLORREF color)
+{
+ int i, count = iupArrayCount(win_brushes);
+
+ /* If a brush with the desired color already exists... */
+ IwinBrush* brushes = (IwinBrush*)iupArrayGetData(win_brushes);
+ for (i = 0; i < count; i++)
+ {
+ if (brushes[i].color == color)
+ return brushes[i].hbrush;
+ }
+
+ /* If it doesn't exist, it should be created... */
+ brushes = (IwinBrush*)iupArrayInc(win_brushes);
+
+ brushes[i].color = color;
+ brushes[i].hbrush = CreateSolidBrush(color);
+
+ return brushes[i].hbrush;
+}
+
+void iupwinBrushInit(void)
+{
+ win_brushes = iupArrayCreate(50, sizeof(IwinBrush));
+}
+
+void iupwinBrushFinish(void)
+{
+ int i, count = iupArrayCount(win_brushes);
+ IwinBrush* brushes = (IwinBrush*)iupArrayGetData(win_brushes);
+ for (i = 0; i < count; i++)
+ {
+ DeleteObject(brushes[i].hbrush);
+ brushes[i].hbrush = NULL;
+ }
+ iupArrayDestroy(win_brushes);
+}
diff --git a/iup/src/win/iupwin_brush.h b/iup/src/win/iupwin_brush.h
new file mode 100755
index 0000000..463f323
--- /dev/null
+++ b/iup/src/win/iupwin_brush.h
@@ -0,0 +1,26 @@
+/** \file
+ * \brief Windows Brush Cache
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPWIN_BRUSH_H
+#define __IUPWIN_BRUSH_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* returns a brush from the brush cache. */
+HBRUSH iupwinBrushGet(COLORREF c);
+
+/* initializes the brush cache */
+void iupwinBrushInit(void);
+void iupwinBrushFinish(void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/win/iupwin_button.c b/iup/src/win/iupwin_button.c
new file mode 100755
index 0000000..7f780e3
--- /dev/null
+++ b/iup/src/win/iupwin_button.c
@@ -0,0 +1,715 @@
+/** \file
+ * \brief Button Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+#include <commctrl.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_button.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_image.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+#include "iupwin_draw.h"
+
+
+#ifndef CDIS_SHOWKEYBOARDCUES
+#define CDIS_SHOWKEYBOARDCUES 0x0200 /* it is defined only when _WIN32_WINNT >= 0x0501 */
+#endif
+
+
+static int winButtonGetBorder(void)
+{
+ return 4;
+}
+
+void iupdrvButtonAddBorders(int *x, int *y)
+{
+ int border_size = winButtonGetBorder()*2;
+ (*x) += border_size;
+ (*y) += border_size;
+}
+
+/****************************************************************/
+
+static int winButtonCalcAlignPosX(int horiz_alignment, int rect_width, int width, int xpad, int shift)
+{
+ int x;
+
+ if (horiz_alignment == IUP_ALIGN_ARIGHT)
+ x = rect_width - (width + 2*xpad);
+ else if (horiz_alignment == IUP_ALIGN_ACENTER)
+ x = (rect_width - (width + 2*xpad))/2;
+ else /* ALEFT */
+ x = 0;
+
+ x += xpad;
+
+ if (shift)
+ x++;
+
+ return x;
+}
+
+static int winButtonCalcAlignPosY(int vert_alignment, int rect_height, int height, int ypad, int shift)
+{
+ int y;
+
+ if (vert_alignment == IUP_ALIGN_ABOTTOM)
+ y = rect_height - (height + 2*ypad);
+ else if (vert_alignment == IUP_ALIGN_ATOP)
+ y = 0;
+ else /* ACENTER */
+ y = (rect_height - (height + 2*ypad))/2;
+
+ y += ypad;
+
+ if (shift)
+ y++;
+
+ return y;
+}
+
+static HBITMAP winButtonGetBitmap(Ihandle* ih, UINT itemState, int *shift, int *w, int *h, int *bpp, HBITMAP *hMask)
+{
+ char *name;
+ int make_inactive = 0;
+ HBITMAP hBitmap;
+ *hMask = NULL;
+
+ if (itemState & ODS_DISABLED)
+ {
+ name = iupAttribGet(ih, "IMINACTIVE");
+ if (!name)
+ {
+ name = iupAttribGet(ih, "IMAGE");
+ make_inactive = 1;
+ }
+ }
+ else
+ {
+ name = iupAttribGet(ih, "IMPRESS");
+ if (itemState & ODS_SELECTED && name)
+ {
+ if (shift && !iupAttribGetStr(ih, "IMPRESSBORDER"))
+ *shift = 0;
+ }
+ else
+ name = iupAttribGet(ih, "IMAGE");
+ }
+
+ hBitmap = iupImageGetImage(name, ih, make_inactive);
+
+ /* must use this info, since image can be a driver image loaded from resources */
+ iupdrvImageGetInfo(hBitmap, w, h, bpp);
+
+ if (*bpp == 8)
+ *hMask = iupdrvImageCreateMask(IupGetHandle(name));
+
+ return hBitmap;
+}
+
+static void winButtonDrawImageText(Ihandle* ih, HDC hDC, int rect_width, int rect_height, int border, UINT itemState)
+{
+ int xpad = ih->data->horiz_padding + border,
+ ypad = ih->data->vert_padding + border;
+ int x, y, width, height,
+ txt_x, txt_y, txt_width, txt_height,
+ img_x, img_y, img_width, img_height,
+ bpp, shift = 0;
+ HFONT hFont = (HFONT)iupwinGetHFontAttrib(ih);
+ HBITMAP hBitmap, hMask;
+ COLORREF fgcolor;
+
+ char* title = iupdrvBaseGetTitleAttrib(ih);
+ char* str = iupStrProcessMnemonic(title, NULL, 0); /* remove & */
+ iupdrvFontGetMultiLineStringSize(ih, str, &txt_width, &txt_height);
+ if (str && str!=title) free(str);
+
+ if (itemState & ODS_DISABLED)
+ fgcolor = GetSysColor(COLOR_GRAYTEXT);
+ else
+ fgcolor = ih->data->fgcolor;
+
+ hBitmap = winButtonGetBitmap(ih, itemState, NULL, &img_width, &img_height, &bpp, &hMask);
+ if (!hBitmap)
+ return;
+
+ if (ih->data->img_position == IUP_IMGPOS_RIGHT ||
+ ih->data->img_position == IUP_IMGPOS_LEFT)
+ {
+ width = img_width + txt_width + ih->data->spacing;
+ height = iupMAX(img_height, txt_height);
+ }
+ else
+ {
+ width = iupMAX(img_width, txt_width);
+ height = img_height + txt_height + ih->data->spacing;
+ }
+
+ if (itemState & ODS_SELECTED && !iupwin_comctl32ver6)
+ shift = 1;
+
+ x = winButtonCalcAlignPosX(ih->data->horiz_alignment, rect_width, width, xpad, shift);
+ y = winButtonCalcAlignPosY(ih->data->vert_alignment, rect_height, height, ypad, shift);
+
+ switch(ih->data->img_position)
+ {
+ case IUP_IMGPOS_TOP:
+ img_y = y;
+ txt_y = y + img_height + ih->data->spacing;
+ if (img_width > txt_width)
+ {
+ img_x = x;
+ txt_x = x + (img_width-txt_width)/2;
+ }
+ else
+ {
+ img_x = x + (txt_width-img_width)/2;
+ txt_x = x;
+ }
+ break;
+ case IUP_IMGPOS_BOTTOM:
+ img_y = y + txt_height + ih->data->spacing;
+ txt_y = y;
+ if (img_width > txt_width)
+ {
+ img_x = x;
+ txt_x = x + (img_width-txt_width)/2;
+ }
+ else
+ {
+ img_x = x + (txt_width-img_width)/2;
+ txt_x = x;
+ }
+ break;
+ case IUP_IMGPOS_RIGHT:
+ img_x = x + txt_width + ih->data->spacing;
+ txt_x = x;
+ if (img_height > txt_height)
+ {
+ img_y = y;
+ txt_y = y + (img_height-txt_height)/2;
+ }
+ else
+ {
+ img_y = y + (txt_height-img_height)/2;
+ txt_y = y;
+ }
+ break;
+ default: /* IUP_IMGPOS_LEFT */
+ img_x = x;
+ txt_x = x + img_width + ih->data->spacing;
+ if (img_height > txt_height)
+ {
+ img_y = y;
+ txt_y = y + (img_height-txt_height)/2;
+ }
+ else
+ {
+ img_y = y + (txt_height-img_height)/2;
+ txt_y = y;
+ }
+ break;
+ }
+
+ iupwinDrawBitmap(hDC, hBitmap, hMask, img_x, img_y, img_width, img_height, bpp);
+ iupwinDrawText(hDC, title, txt_x, txt_y, txt_width, txt_height, hFont, fgcolor, 0);
+
+ if (hMask)
+ DeleteObject(hMask);
+}
+
+static void winButtonDrawImage(Ihandle* ih, HDC hDC, int rect_width, int rect_height, int border, UINT itemState)
+{
+ int xpad = ih->data->horiz_padding + border,
+ ypad = ih->data->vert_padding + border;
+ int x, y, width, height, bpp, shift = 0;
+ HBITMAP hBitmap, hMask;
+
+ if (itemState & ODS_SELECTED && !iupwin_comctl32ver6)
+ shift = 1;
+
+ hBitmap = winButtonGetBitmap(ih, itemState, &shift, &width, &height, &bpp, &hMask);
+ if (!hBitmap)
+ return;
+
+ x = winButtonCalcAlignPosX(ih->data->horiz_alignment, rect_width, width, xpad, shift);
+ y = winButtonCalcAlignPosY(ih->data->vert_alignment, rect_height, height, ypad, shift);
+
+ iupwinDrawBitmap(hDC, hBitmap, hMask, x, y, width, height, bpp);
+
+ if (hMask)
+ DeleteObject(hMask);
+}
+
+static void winButtonDrawText(Ihandle* ih, HDC hDC, int rect_width, int rect_height, int border, UINT itemState)
+{
+ int xpad = ih->data->horiz_padding + border,
+ ypad = ih->data->vert_padding + border;
+ int x, y, width, height, shift = 0;
+ COLORREF fgcolor;
+
+ char* title = iupdrvBaseGetTitleAttrib(ih);
+ if (title)
+ {
+ HFONT hFont = (HFONT)iupwinGetHFontAttrib(ih);
+ char* str = iupStrProcessMnemonic(title, NULL, 0); /* remove & */
+ iupdrvFontGetMultiLineStringSize(ih, str, &width, &height);
+ if (str && str!=title) free(str);
+
+ if (itemState & ODS_DISABLED)
+ fgcolor = GetSysColor(COLOR_GRAYTEXT);
+ else
+ fgcolor = ih->data->fgcolor;
+
+ if (itemState & ODS_SELECTED && !iupwin_comctl32ver6)
+ shift = 1;
+
+ x = winButtonCalcAlignPosX(ih->data->horiz_alignment, rect_width, width, xpad, shift);
+ y = winButtonCalcAlignPosY(ih->data->vert_alignment, rect_height, height, ypad, shift);
+
+ iupwinDrawText(hDC, title, x, y, width, height, hFont, fgcolor, 0);
+ }
+ else
+ {
+ /* fill with the background color if defined at the element */
+ char* bgcolor = iupAttribGet(ih, "BGCOLOR");
+ if (bgcolor)
+ {
+ RECT rect;
+ unsigned char r=0, g=0, b=0;
+ iupStrToRGB(bgcolor, &r, &g, &b);
+ SetDCBrushColor(hDC, RGB(r,g,b));
+ rect.left = xpad;
+ rect.top = ypad;
+ rect.right = rect_width - xpad;
+ rect.bottom = rect_height - ypad;
+ FillRect(hDC, &rect, (HBRUSH)GetStockObject(DC_BRUSH));
+ }
+ }
+}
+
+static void winButtonDrawItem(Ihandle* ih, DRAWITEMSTRUCT *drawitem)
+{
+ iupwinBitmapDC bmpDC;
+ int border, draw_border;
+ int width = drawitem->rcItem.right - drawitem->rcItem.left;
+ int height = drawitem->rcItem.bottom - drawitem->rcItem.top;
+
+ HDC hDC = iupwinDrawCreateBitmapDC(&bmpDC, drawitem->hDC, width, height);
+
+ iupwinDrawParentBackground(ih, hDC, &drawitem->rcItem);
+
+ if ((drawitem->itemState & ODS_FOCUS) && !(drawitem->itemState & ODS_HOTLIGHT))
+ drawitem->itemState |= ODS_DEFAULT;
+
+ border = winButtonGetBorder();
+
+ if (ih->data->type & IUP_BUTTON_IMAGE && iupAttribGet(ih, "IMPRESS") && !iupAttribGetStr(ih, "IMPRESSBORDER"))
+ draw_border = 0;
+ else
+ {
+ if (iupAttribGetBoolean(ih, "FLAT"))
+ {
+ if (drawitem->itemState & ODS_HOTLIGHT || iupAttribGet(ih, "_IUPWINBUT_ENTERWIN"))
+ draw_border = 1;
+ else
+ draw_border = 0;
+ }
+ else
+ draw_border = 1;
+ }
+
+ if (draw_border)
+ iupwinDrawButtonBorder(ih->handle, hDC, &drawitem->rcItem, drawitem->itemState);
+
+ if (ih->data->type == IUP_BUTTON_IMAGE)
+ winButtonDrawImage(ih, hDC, width, height, border, drawitem->itemState);
+ else if (ih->data->type == IUP_BUTTON_TEXT)
+ winButtonDrawText(ih, hDC, width, height, border, drawitem->itemState);
+ else /* both */
+ winButtonDrawImageText(ih, hDC, width, height, border, drawitem->itemState);
+
+ if (drawitem->itemState & ODS_FOCUS)
+ {
+ border--;
+ iupdrvDrawFocusRect(ih, hDC, border, border, width-2*border, height-2*border);
+ }
+
+ iupwinDrawDestroyBitmapDC(&bmpDC);
+}
+
+
+/***********************************************************************************************/
+
+
+static int winButtonSetImageAttrib(Ihandle* ih, const char* value)
+{
+ (void)value;
+ if (ih->data->type != IUP_BUTTON_TEXT)
+ {
+ iupdrvDisplayUpdate(ih);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int winButtonSetImInactiveAttrib(Ihandle* ih, const char* value)
+{
+ (void)value;
+ if (ih->data->type != IUP_BUTTON_TEXT)
+ {
+ iupdrvDisplayUpdate(ih);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int winButtonSetImPressAttrib(Ihandle* ih, const char* value)
+{
+ (void)value;
+ if (ih->data->type != IUP_BUTTON_TEXT)
+ {
+ iupdrvDisplayUpdate(ih);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int winButtonSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ /* redraw IMINACTIVE image if any */
+ if (ih->data->type != IUP_BUTTON_TEXT)
+ iupdrvDisplayUpdate(ih);
+
+ return iupBaseSetActiveAttrib(ih, value);
+}
+
+static int winButtonSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ char value1[30]="", value2[30]="";
+
+ iupStrToStrStr(value, value1, value2, ':');
+
+ if (iupStrEqualNoCase(value1, "ARIGHT"))
+ ih->data->horiz_alignment = IUP_ALIGN_ARIGHT;
+ else if (iupStrEqualNoCase(value1, "ALEFT"))
+ ih->data->horiz_alignment = IUP_ALIGN_ALEFT;
+ else /* "ACENTER" */
+ ih->data->horiz_alignment = IUP_ALIGN_ACENTER;
+
+ if (iupStrEqualNoCase(value2, "ABOTTOM"))
+ ih->data->vert_alignment = IUP_ALIGN_ABOTTOM;
+ else if (iupStrEqualNoCase(value2, "ATOP"))
+ ih->data->vert_alignment = IUP_ALIGN_ATOP;
+ else /* "ACENTER" */
+ ih->data->vert_alignment = IUP_ALIGN_ACENTER;
+
+ iupdrvDisplayRedraw(ih);
+
+ return 1;
+}
+
+static char* winButtonGetAlignmentAttrib(Ihandle *ih)
+{
+ char* horiz_align2str[3] = {"ALEFT", "ACENTER", "ARIGHT"};
+ char* vert_align2str[3] = {"ATOP", "ACENTER", "ABOTTOM"};
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%s:%s", horiz_align2str[ih->data->horiz_alignment], vert_align2str[ih->data->vert_alignment]);
+ return str;
+}
+
+static int winButtonSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+ if (ih->handle)
+ iupdrvDisplayRedraw(ih);
+ return 0;
+}
+
+static int winButtonSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ /* update internal image cache for controls that have the IMAGE attribute */
+ if (ih->data->type != IUP_BUTTON_TEXT)
+ {
+ iupAttribSetStr(ih, "BGCOLOR", value);
+ iupImageUpdateParent(ih);
+ iupdrvDisplayRedraw(ih);
+ }
+ return 1;
+}
+
+static char* winButtonGetBgColorAttrib(Ihandle* ih)
+{
+ /* the most important use of this is to provide
+ the correct background for images */
+ if (iupwin_comctl32ver6 && !iupAttribGet(ih, "IMPRESS"))
+ {
+ COLORREF cr;
+ if (iupwinDrawGetThemeButtonBgColor(ih->handle, &cr))
+ {
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%d %d %d", (int)GetRValue(cr), (int)GetGValue(cr), (int)GetBValue(cr));
+ return str;
+ }
+ }
+
+ if (iupAttribGet(ih, "IMPRESS"))
+ return iupBaseNativeParentGetBgColorAttrib(ih);
+ else
+ return NULL;
+}
+
+static int winButtonSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ if (iupStrToRGB(value, &r, &g, &b))
+ {
+ ih->data->fgcolor = RGB(r,g,b);
+ iupdrvDisplayRedraw(ih);
+ }
+ return 1;
+}
+
+/****************************************************************************************/
+
+static int winButtonProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ if (ih->data->type != IUP_BUTTON_TEXT)
+ {
+ /* redraw IMPRESS image if any */
+ if ((msg == WM_LBUTTONDOWN || msg == WM_LBUTTONUP) && iupAttribGet(ih, "IMPRESS"))
+ iupdrvDisplayRedraw(ih);
+ }
+
+ switch (msg)
+ {
+ case WM_XBUTTONDBLCLK:
+ case WM_LBUTTONDBLCLK:
+ case WM_MBUTTONDBLCLK:
+ case WM_RBUTTONDBLCLK:
+ case WM_XBUTTONDOWN:
+ case WM_LBUTTONDOWN:
+ case WM_MBUTTONDOWN:
+ case WM_RBUTTONDOWN:
+ {
+ iupwinButtonDown(ih, msg, wp, lp);
+ break;
+ }
+ case WM_XBUTTONUP:
+ case WM_LBUTTONUP:
+ case WM_MBUTTONUP:
+ case WM_RBUTTONUP:
+ {
+ iupwinButtonUp(ih, msg, wp, lp);
+
+ /* BN_CLICKED will NOT be notified when not receiving the focus */
+ if (msg==WM_LBUTTONUP && !iupAttribGetBoolean(ih, "FOCUSONCLICK"))
+ {
+ Icallback cb = IupGetCallback(ih, "ACTION");
+ if (cb && cb(ih) == IUP_CLOSE)
+ IupExitLoop();
+ }
+
+ break;
+ }
+ case WM_KEYDOWN:
+ case WM_SYSKEYDOWN:
+ if (wp==VK_RETURN)
+ {
+ /* enter activates the button */
+ iupdrvActivate(ih);
+
+ *result = 0;
+ return 1; /* abort default processing, or the default button will be activated,
+ in this case even if there is a default button, this button must be activated instead. */
+ }
+ break;
+ case WM_MOUSELEAVE:
+ if (!iupwin_comctl32ver6)
+ {
+ iupAttribSetStr(ih, "_IUPWINBUT_ENTERWIN", NULL);
+ iupdrvDisplayRedraw(ih);
+ }
+ break;
+ case WM_MOUSEMOVE:
+ if (!iupwin_comctl32ver6)
+ {
+ if (!iupAttribGet(ih, "_IUPWINBUT_ENTERWIN"))
+ {
+ iupAttribSetStr(ih, "_IUPWINBUT_ENTERWIN", "1");
+ iupdrvDisplayRedraw(ih);
+ }
+ }
+ break;
+ case WM_SETFOCUS:
+ {
+ HWND previous = (HWND)wp;
+ if (!iupAttribGetBoolean(ih, "FOCUSONCLICK") && wp && iupAttribGet(ih, "_IUPWIN_ENTERWIN"))
+ {
+ SetFocus(previous);
+ *result = 0;
+ return 1;
+ }
+ }
+ break;
+ }
+
+ return iupwinBaseProc(ih, msg, wp, lp, result);
+}
+
+static int winButtonWmNotify(Ihandle* ih, NMHDR* msg_info, int *result)
+{
+ if (msg_info->code == NM_CUSTOMDRAW)
+ {
+ NMCUSTOMDRAW *customdraw = (NMCUSTOMDRAW*)msg_info;
+
+ if (customdraw->dwDrawStage==CDDS_PREERASE)
+ {
+ DRAWITEMSTRUCT drawitem;
+ drawitem.itemState = 0;
+
+ if (customdraw->uItemState & CDIS_DISABLED)
+ drawitem.itemState |= ODS_DISABLED;
+ else if (customdraw->uItemState & CDIS_SELECTED)
+ drawitem.itemState |= ODS_SELECTED;
+ else if (customdraw->uItemState & CDIS_HOT)
+ drawitem.itemState |= ODS_HOTLIGHT;
+ else if (customdraw->uItemState & CDIS_DEFAULT)
+ drawitem.itemState |= ODS_DEFAULT;
+
+ if (customdraw->uItemState & CDIS_FOCUS && (customdraw->uItemState & CDIS_SHOWKEYBOARDCUES))
+ drawitem.itemState |= ODS_FOCUS;
+
+ drawitem.hDC = customdraw->hdc;
+ drawitem.rcItem = customdraw->rc;
+
+ winButtonDrawItem(ih, (void*)&drawitem); /* Simulate a WM_DRAWITEM */
+
+ *result = CDRF_SKIPDEFAULT;
+ return 1;
+ }
+ }
+
+ return 0; /* result not used */
+}
+
+static int winButtonWmCommand(Ihandle* ih, WPARAM wp, LPARAM lp)
+{
+ int cmd = HIWORD(wp);
+ switch (cmd)
+ {
+ case BN_DOUBLECLICKED:
+ case BN_CLICKED:
+ {
+ Icallback cb = IupGetCallback(ih, "ACTION");
+ if (cb && cb(ih) == IUP_CLOSE)
+ IupExitLoop();
+ }
+ }
+
+ (void)lp;
+ return 0; /* not used */
+}
+
+static int winButtonMapMethod(Ihandle* ih)
+{
+ char* value;
+ DWORD dwStyle = WS_CHILD |
+ BS_NOTIFY; /* necessary because of the base messages */
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ /* Buttons with the BS_PUSHBUTTON style do NOT use the returned brush in WM_CTLCOLORBTN.
+ Buttons with these styles are always drawn with the default system colors.
+ So FGCOLOR and BGCOLOR do NOT work.
+ The BS_FLAT style does NOT completely remove the borders. With XP styles is ignored. So FLAT do NOT work.
+ BCM_SETTEXTMARGIN is not working.
+ Buttons with images and with XP styles do NOT draw the focus feedback.
+ Can NOT remove the borders when using IMPRESS.
+ So IUP will draw its own button,
+ but uses the Windows functions to draw text and images in native format. */
+ if (iupwin_comctl32ver6)
+ dwStyle |= BS_PUSHBUTTON; /* it will be an ownerdraw because we use NM_CUSTOMDRAW */
+ else
+ dwStyle |= BS_OWNERDRAW;
+
+ value = iupAttribGet(ih, "IMAGE");
+ if (value)
+ {
+ ih->data->type = IUP_BUTTON_IMAGE;
+
+ value = iupAttribGet(ih, "TITLE");
+ if (value)
+ ih->data->type |= IUP_BUTTON_TEXT;
+ }
+ else
+ ih->data->type = IUP_BUTTON_TEXT;
+
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ dwStyle |= WS_TABSTOP;
+
+ if (!iupwinCreateWindowEx(ih, "BUTTON", 0, dwStyle))
+ return IUP_ERROR;
+
+ /* Process WM_COMMAND */
+ IupSetCallback(ih, "_IUPWIN_COMMAND_CB", (Icallback)winButtonWmCommand);
+
+ /* Process BUTTON_CB */
+ IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winButtonProc);
+
+ if (iupwin_comctl32ver6)
+ IupSetCallback(ih, "_IUPWIN_NOTIFY_CB", (Icallback)winButtonWmNotify); /* Process WM_NOTIFY */
+ else
+ IupSetCallback(ih, "_IUPWIN_DRAWITEM_CB", (Icallback)winButtonDrawItem); /* Process WM_DRAWITEM */
+
+ return IUP_NOERROR;
+}
+
+void iupdrvButtonInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = winButtonMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Overwrite Visual */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, winButtonSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", winButtonGetBgColorAttrib, winButtonSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, winButtonSetFgColorAttrib, "DLGFGCOLOR", NULL, IUPAF_NOT_MAPPED); /* force the new default value */
+ iupClassRegisterAttribute(ic, "TITLE", iupdrvBaseGetTitleAttrib, iupdrvBaseSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupButton only */
+ iupClassRegisterAttribute(ic, "ALIGNMENT", winButtonGetAlignmentAttrib, winButtonSetAlignmentAttrib, "ACENTER:ACENTER", NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, winButtonSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, winButtonSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMPRESS", NULL, winButtonSetImPressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FOCUSONCLICK", NULL, NULL, "YES", NULL, IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "PADDING", iupButtonGetPaddingAttrib, winButtonSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+}
diff --git a/iup/src/win/iupwin_canvas.c b/iup/src/win/iupwin_canvas.c
new file mode 100755
index 0000000..bb88b8a
--- /dev/null
+++ b/iup/src/win/iupwin_canvas.c
@@ -0,0 +1,724 @@
+/** \file
+ * \brief Canvas Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <limits.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_canvas.h"
+#include "iup_key.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+#include "iupwin_brush.h"
+
+
+static void winCanvasSetScrollInfo(HWND hWnd, int imin, int imax, int ipos, int ipage, int flag)
+{
+ SCROLLINFO scrollinfo;
+ scrollinfo.cbSize = sizeof(SCROLLINFO);
+ scrollinfo.fMask = SIF_RANGE | SIF_PAGE | SIF_POS;
+ scrollinfo.nPage = ipage;
+ scrollinfo.nPos = ipos;
+ scrollinfo.nMax = imax;
+ scrollinfo.nMin = imin;
+ SetScrollInfo(hWnd, flag, &scrollinfo, TRUE);
+}
+
+static int winCanvasSetBgColorAttrib(Ihandle *ih, const char *value)
+{
+ (void)value;
+ iupdrvDisplayUpdate(ih);
+ return 1;
+}
+
+static int winCanvasSetDXAttrib(Ihandle *ih, const char *value)
+{
+ if (ih->data->sb & IUP_SB_HORIZ)
+ {
+ double posx, xmin, xmax;
+ float dx;
+ int iposx, ipagex;
+
+ if (!iupStrToFloat(value, &dx))
+ return 1;
+
+ xmin = iupAttribGetFloat(ih, "XMIN");
+ xmax = iupAttribGetFloat(ih, "XMAX");
+ posx = ih->data->posx;
+
+ iupCanvasCalcScrollIntPos(xmin, xmax, dx, posx,
+ IUP_SB_MIN, IUP_SB_MAX, &ipagex, &iposx);
+
+ if (dx >= (xmax-xmin))
+ {
+ if (iupAttribGetBoolean(ih, "XAUTOHIDE"))
+ ShowScrollBar(ih->handle, SB_HORZ, FALSE);
+ else
+ EnableScrollBar(ih->handle, SB_HORZ, ESB_DISABLE_BOTH);
+ return 1;
+ }
+ else
+ {
+ ShowScrollBar(ih->handle, SB_HORZ, TRUE);
+ EnableScrollBar(ih->handle, SB_HORZ, ESB_ENABLE_BOTH);
+ }
+
+ winCanvasSetScrollInfo(ih->handle, IUP_SB_MIN, IUP_SB_MAX, iposx, ipagex, SB_HORZ);
+
+ /* update position because it could be corrected */
+ iupCanvasCalcScrollRealPos(xmin, xmax, &posx,
+ IUP_SB_MIN, IUP_SB_MAX, ipagex, &iposx);
+
+ ih->data->posx = (float)posx;
+ }
+ return 1;
+}
+
+static int winCanvasSetPosXAttrib(Ihandle *ih, const char *value)
+{
+ if (ih->data->sb & IUP_SB_HORIZ)
+ {
+ double xmin, xmax, dx;
+ float posx;
+ int iposx, ipagex;
+
+ if (!iupStrToFloat(value, &posx))
+ return 1;
+
+ xmin = iupAttribGetFloat(ih, "XMIN");
+ xmax = iupAttribGetFloat(ih, "XMAX");
+ dx = iupAttribGetFloat(ih, "DX");
+
+ if (posx < xmin) posx = (float)xmin;
+ if (posx > (xmax - dx)) posx = (float)(xmax - dx);
+ ih->data->posx = posx;
+
+ iupCanvasCalcScrollIntPos(xmin, xmax, dx, posx,
+ IUP_SB_MIN, IUP_SB_MAX, &ipagex, &iposx);
+
+ SetScrollPos(ih->handle,SB_HORZ,iposx,TRUE);
+ }
+ return 1;
+}
+
+static int winCanvasSetDYAttrib(Ihandle *ih, const char *value)
+{
+ if (ih->data->sb & IUP_SB_VERT)
+ {
+ double posy, ymin, ymax;
+ float dy;
+ int iposy, ipagey;
+
+ if (!iupStrToFloat(value, &dy))
+ return 1;
+
+ ymin = iupAttribGetFloat(ih, "YMIN");
+ ymax = iupAttribGetFloat(ih, "YMAX");
+ posy = ih->data->posy;
+
+ iupCanvasCalcScrollIntPos(ymin, ymax, dy, posy,
+ IUP_SB_MIN, IUP_SB_MAX, &ipagey, &iposy);
+
+ if (dy >= (ymax-ymin))
+ {
+ if (iupAttribGetBoolean(ih, "YAUTOHIDE"))
+ ShowScrollBar(ih->handle, SB_VERT, FALSE);
+ else
+ EnableScrollBar(ih->handle, SB_VERT, ESB_DISABLE_BOTH);
+ return 1;
+ }
+ else
+ {
+ ShowScrollBar(ih->handle, SB_VERT, TRUE);
+ EnableScrollBar(ih->handle, SB_VERT, ESB_ENABLE_BOTH);
+ }
+
+ winCanvasSetScrollInfo(ih->handle, IUP_SB_MIN, IUP_SB_MAX, iposy, ipagey, SB_VERT);
+
+ /* update position because it could be corrected */
+ iupCanvasCalcScrollRealPos(ymin, ymax, &posy,
+ IUP_SB_MIN, IUP_SB_MAX, ipagey, &iposy);
+
+ ih->data->posy = (float)posy;
+ }
+ return 1;
+}
+
+static int winCanvasSetPosYAttrib(Ihandle *ih, const char *value)
+{
+ if (ih->data->sb & IUP_SB_VERT)
+ {
+ double ymin, ymax, dy;
+ float posy;
+ int iposy, ipagey;
+
+ if (!iupStrToFloat(value, &posy))
+ return 1;
+
+ ymin = iupAttribGetFloat(ih, "YMIN");
+ ymax = iupAttribGetFloat(ih, "YMAX");
+ dy = iupAttribGetFloat(ih, "DY");
+
+ if (posy < ymin) posy = (float)ymin;
+ if (posy > (ymax - dy)) posy = (float)(ymax - dy);
+ ih->data->posy = posy;
+
+ iupCanvasCalcScrollIntPos(ymin, ymax, dy, posy,
+ IUP_SB_MIN, IUP_SB_MAX, &ipagey, &iposy);
+
+ SetScrollPos(ih->handle,SB_VERT,iposy,TRUE);
+ }
+ return 1;
+}
+
+static void winCanvasGetScrollInfo(HWND hWnd, int *ipos, int *ipage, int flag, int track)
+{
+ SCROLLINFO scrollinfo;
+ scrollinfo.cbSize = sizeof(SCROLLINFO);
+ if (track)
+ scrollinfo.fMask = SIF_PAGE | SIF_TRACKPOS;
+ else
+ scrollinfo.fMask = SIF_PAGE | SIF_POS;
+ GetScrollInfo(hWnd, flag, &scrollinfo);
+ *ipage = scrollinfo.nPage;
+ if (track)
+ *ipos = scrollinfo.nTrackPos;
+ else
+ *ipos = scrollinfo.nPos;
+}
+
+static void winCanvasUpdateHorScroll(Ihandle* ih, WORD winop)
+{
+ IFniff cb;
+ double xmin, xmax, posx, linex;
+ int ipagex, iposx, ilinex, op;
+
+ /* unused */
+ if (winop == SB_TOP ||
+ winop == SB_BOTTOM ||
+ winop == SB_ENDSCROLL)
+ return;
+
+ xmax = iupAttribGetFloat(ih,"XMAX");
+ xmin = iupAttribGetFloat(ih,"XMIN");
+
+ winCanvasGetScrollInfo(ih->handle, &iposx, &ipagex, SB_HORZ, winop==SB_THUMBTRACK? 1: 0);
+
+ if (!iupAttribGet(ih,"LINEX"))
+ {
+ ilinex = ipagex/10;
+ if (!ilinex)
+ ilinex = 1;
+ }
+ else
+ {
+ /* line and page convertions are the same */
+ linex = iupAttribGetFloat(ih,"LINEX");
+ iupCanvasCalcScrollIntPos(xmin, xmax, linex, 0,
+ IUP_SB_MIN, IUP_SB_MAX, &ilinex, NULL);
+ }
+
+ switch (winop)
+ {
+ case SB_LINEDOWN:
+ iposx = iposx + ilinex;
+ op = IUP_SBRIGHT;
+ break;
+ case SB_LINEUP:
+ iposx = iposx - ilinex;
+ op = IUP_SBLEFT;
+ break;
+ case SB_PAGEDOWN:
+ iposx = iposx + ipagex;
+ op = IUP_SBPGRIGHT;
+ break;
+ case SB_PAGEUP:
+ iposx = iposx - ipagex;
+ op = IUP_SBPGLEFT;
+ break;
+ case SB_THUMBTRACK:
+ op = IUP_SBDRAGH;
+ break;
+ case SB_THUMBPOSITION:
+ op = IUP_SBPOSH;
+ break;
+ default:
+ return;
+ }
+
+ iupCanvasCalcScrollRealPos(xmin, xmax, &posx,
+ IUP_SB_MIN, IUP_SB_MAX, ipagex, &iposx);
+
+ SetScrollPos(ih->handle,SB_HORZ,iposx,TRUE);
+ ih->data->posx = (float)posx;
+
+ cb = (IFniff)IupGetCallback(ih,"SCROLL_CB");
+ if (cb)
+ cb(ih,op,(float)posx,ih->data->posy);
+ else
+ {
+ IFnff cb = (IFnff)IupGetCallback(ih,"ACTION");
+ if (cb)
+ cb (ih, (float)posx, ih->data->posy);
+ }
+}
+
+static void winCanvasUpdateVerScroll(Ihandle* ih, WORD winop)
+{
+ IFniff cb;
+ double ymin, ymax, posy, liney;
+ int ipagey, iposy, iliney, op;
+
+ /* unused */
+ if (winop == SB_TOP ||
+ winop == SB_BOTTOM ||
+ winop == SB_ENDSCROLL)
+ return;
+
+ ymax = iupAttribGetFloat(ih,"YMAX");
+ ymin = iupAttribGetFloat(ih,"YMIN");
+
+ winCanvasGetScrollInfo(ih->handle, &iposy, &ipagey, SB_VERT, winop==SB_THUMBTRACK? 1: 0);
+
+ if (!iupAttribGet(ih, "LINEY"))
+ {
+ iliney = ipagey/10;
+ if (!iliney)
+ iliney = 1;
+ }
+ else
+ {
+ /* line and page convertions are the same */
+ liney = iupAttribGetFloat(ih,"LINEY");
+ iupCanvasCalcScrollIntPos(ymin, ymax, liney, 0,
+ IUP_SB_MIN, IUP_SB_MAX, &iliney, NULL);
+ }
+
+ switch (winop)
+ {
+ case SB_LINEDOWN:
+ iposy = iposy + iliney;
+ op = IUP_SBDN;
+ break;
+ case SB_LINEUP:
+ iposy = iposy - iliney;
+ op = IUP_SBUP;
+ break;
+ case SB_PAGEDOWN:
+ iposy = iposy + ipagey;
+ op = IUP_SBPGDN;
+ break;
+ case SB_PAGEUP:
+ iposy = iposy - ipagey;
+ op = IUP_SBPGUP;
+ break;
+ case SB_THUMBTRACK:
+ op = IUP_SBDRAGV;
+ break;
+ case SB_THUMBPOSITION:
+ op = IUP_SBPOSV;
+ break;
+ default:
+ return;
+ }
+
+ iupCanvasCalcScrollRealPos(ymin, ymax, &posy,
+ IUP_SB_MIN, IUP_SB_MAX, ipagey, &iposy);
+
+ SetScrollPos(ih->handle,SB_VERT,iposy,TRUE);
+ ih->data->posy = (float)posy;
+
+ cb = (IFniff)IupGetCallback(ih,"SCROLL_CB");
+ if (cb)
+ cb(ih, op, ih->data->posx,(float)posy);
+ else
+ {
+ IFnff cb = (IFnff)IupGetCallback(ih,"ACTION");
+ if (cb)
+ cb (ih, ih->data->posx, (float)posy);
+ }
+}
+
+static int winCanvasProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ switch (msg)
+ {
+ case WM_ERASEBKGND:
+ /* only paint background if ACTION is not defined */
+ if (!IupGetCallback(ih, "ACTION"))
+ {
+ RECT rect;
+ HDC hdc = (HDC)wp;
+ COLORREF color;
+ iupwinGetColorRef(ih, "BGCOLOR", &color);
+ GetClientRect(ih->handle, &rect);
+ FillRect(hdc, &rect, iupwinBrushGet(color));
+ }
+ /* always return non zero value */
+ *result = 1;
+ return 1;
+ case WM_PAINT:
+ {
+ IFnff cb = (IFnff)IupGetCallback(ih, "ACTION");
+ if (cb)
+ {
+ PAINTSTRUCT ps;
+ HDC hdc = BeginPaint(ih->handle, &ps);
+ iupAttribSetStr(ih, "HDC_WMPAINT", (char*)&hdc);
+ iupAttribSetStrf(ih, "CLIPRECT", "%d %d %d %d", ps.rcPaint.left, ps.rcPaint.top, ps.rcPaint.right-ps.rcPaint.left, ps.rcPaint.bottom-ps.rcPaint.top);
+
+ cb(ih, ih->data->posx, ih->data->posy);
+
+ iupAttribSetStr(ih, "CLIPRECT", NULL);
+ iupAttribSetStr(ih, "HDC_WMPAINT", NULL);
+ EndPaint(ih->handle, &ps);
+ }
+ break;
+ }
+ case WM_SIZE:
+ {
+ IFnii cb = (IFnii)IupGetCallback(ih, "RESIZE_CB");
+ if (cb)
+ {
+ RECT rect;
+ GetClientRect(ih->handle, &rect);
+ cb(ih, rect.right-rect.left, rect.bottom-rect.top);
+ /* w=LOWORD (lp), h=HIWORD(lp) can not be used because and invalid size
+ at the first time of WM_SIZE with scroolbars. */
+ }
+ *result = 0;
+ return 1;
+ }
+ case WM_GETDLGCODE:
+ /* avoid beeps when keys are pressed */
+ *result = DLGC_WANTCHARS|DLGC_WANTARROWS;
+ return 1;
+ case WM_MOUSEWHEEL:
+ {
+ IFnfiis cb = (IFnfiis)IupGetCallback(ih, "WHEEL_CB");
+ short delta = (short)HIWORD(wp);
+ if (cb)
+ {
+ char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT;
+ POINT p;
+ p.x = LOWORD(lp); p.y = HIWORD(lp);
+ ScreenToClient(ih->handle, &p);
+
+ iupwinButtonKeySetStatus(LOWORD(wp), status, 0);
+
+ cb(ih, (float)delta/120.0f, p.x, p.y, status);
+ }
+ else
+ {
+ if (ih->data->sb & IUP_SB_VERT)
+ {
+ int i, winop = delta>0? SB_LINEUP: SB_LINEDOWN;
+ delta = (short)abs(delta/120);
+ for (i=0; i < delta; i++)
+ SendMessage(ih->handle, WM_VSCROLL, MAKELONG(winop, 0), 0);
+ }
+ }
+
+ *result = 0;
+ return 1;
+ }
+ case WM_XBUTTONDBLCLK:
+ case WM_LBUTTONDBLCLK:
+ case WM_MBUTTONDBLCLK:
+ case WM_RBUTTONDBLCLK:
+ case WM_XBUTTONDOWN:
+ case WM_LBUTTONDOWN:
+ case WM_MBUTTONDOWN:
+ case WM_RBUTTONDOWN:
+ {
+ /* Force focus on canvas click */
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ SetFocus(ih->handle);
+
+ SetCapture(ih->handle);
+
+ if (iupwinButtonDown(ih, msg, wp, lp))
+ {
+ /* refresh the cursor, it could have been changed in BUTTON_CB */
+ SendMessage(ih->handle, WM_SETCURSOR, (WPARAM)ih->handle, MAKELPARAM(1,WM_MOUSEMOVE));
+ }
+
+ if (msg==WM_XBUTTONDOWN || msg==WM_XBUTTONDBLCLK)
+ *result = 1;
+ else
+ *result = 0;
+ return 1;
+ }
+ case WM_MOUSEMOVE:
+ {
+ if (iupwinMouseMove(ih, msg, wp, lp))
+ {
+ /* refresh the cursor, it could have been changed in MOTION_CB */
+ SendMessage(ih->handle, WM_SETCURSOR, (WPARAM)ih->handle, MAKELPARAM(1,WM_MOUSEMOVE));
+ }
+
+ break; /* let iupwinBaseProc process enter/leavewin */
+ }
+ case WM_XBUTTONUP:
+ case WM_LBUTTONUP:
+ case WM_MBUTTONUP:
+ case WM_RBUTTONUP:
+ {
+ ReleaseCapture();
+
+ if (iupwinButtonUp(ih, msg, wp, lp))
+ {
+ /* refresh the cursor, it could have been changed in BUTTON_CB */
+ SendMessage(ih->handle, WM_SETCURSOR, (WPARAM)ih->handle, MAKELPARAM(1,WM_MOUSEMOVE));
+ }
+
+ *result = 0;
+ if (msg==WM_XBUTTONUP)
+ *result = 1;
+ return 1;
+ }
+ case WM_KILLFOCUS:
+ {
+ if (GetCapture() == ih->handle)
+ ReleaseCapture();
+ break;
+ }
+ case WM_SETCURSOR:
+ {
+ if (ih->handle == (HWND)wp && LOWORD(lp)==HTCLIENT)
+ {
+ HCURSOR hCur = (HCURSOR)iupAttribGet(ih, "_IUPWIN_HCURSOR");
+ if (hCur)
+ {
+ SetCursor(hCur);
+ *result = 1;
+ return 1;
+ }
+ else if (iupAttribGet(ih, "CURSOR"))
+ {
+ SetCursor(NULL);
+ *result = 1;
+ return 1;
+ }
+ }
+ break;
+ }
+ case WM_INITMENU:
+ /* abort capture if a menu is opened */
+ ReleaseCapture();
+ break;
+ case WM_VSCROLL:
+ winCanvasUpdateVerScroll(ih, LOWORD(wp));
+ *result = 0;
+ return 1;
+ case WM_HSCROLL:
+ winCanvasUpdateHorScroll(ih, LOWORD(wp));
+ *result = 0;
+ return 1;
+ }
+
+ /* can be a container */
+ if (ih->firstchild)
+ return iupwinBaseContainerProc(ih, msg, wp, lp, result);
+ else
+ return iupwinBaseProc(ih, msg, wp, lp, result);
+}
+
+static void winCanvasRegisterClass(void)
+{
+ WNDCLASS wndclass;
+ ZeroMemory(&wndclass, sizeof(WNDCLASS));
+
+ wndclass.hInstance = iupwin_hinstance;
+ wndclass.lpszClassName = "IupCanvas";
+ wndclass.lpfnWndProc = (WNDPROC)iupwinBaseWinProc;
+ wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
+ wndclass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; /* using CS_OWNDC will minimize the work of cdActivate in the CD library */
+ wndclass.hbrBackground = NULL; /* remove the background to optimize redraw */
+
+ RegisterClass(&wndclass);
+}
+
+static int winCanvasMapMethod(Ihandle* ih)
+{
+ CLIENTCREATESTRUCT clientstruct;
+ void *clientdata = NULL;
+ char *classname;
+ DWORD dwStyle = WS_CHILD, dwExStyle = 0;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ if (ih->iclass->is_interactive)
+ {
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ dwStyle |= WS_TABSTOP;
+ }
+
+ if (ih->firstchild) /* can be a container */
+ {
+ dwStyle |= WS_CLIPSIBLINGS;
+
+ if (iupAttribGetBoolean(IupGetDialog(ih), "COMPOSITED"))
+ dwExStyle |= WS_EX_COMPOSITED;
+ else
+ dwStyle |= WS_CLIPCHILDREN;
+ }
+
+ if (iupAttribGetBoolean(ih, "MDICLIENT"))
+ {
+ /* creating a MDI Client that will be inside the MDI Frame,
+ it will work as parent of all MDI children */
+ Ihandle *winmenu = IupGetAttributeHandle(ih, "MDIMENU");
+
+ classname = "mdiclient";
+
+ iupAttribSetStr(ih, "BORDER", "NO");
+
+ iupAttribSetStr(IupGetDialog(ih), "MDICLIENT_HANDLE", (char*)ih);
+
+ clientdata = &clientstruct;
+ clientstruct.hWindowMenu = winmenu? winmenu->handle: NULL;
+
+ /* The system increments the identifier
+ for each additional MDI child window the application creates,
+ and reassigns identifiers when the application
+ destroys a window to keep the range of identifiers contiguous. */
+ clientstruct.idFirstChild = IUP_MDICHILD_START;
+ }
+ else
+ classname = "IupCanvas";
+
+ if (iupAttribGetBoolean(ih, "BORDER"))
+ dwStyle |= WS_BORDER;
+
+ ih->data->sb = iupBaseGetScrollbar(ih);
+ if (ih->data->sb & IUP_SB_HORIZ)
+ dwStyle |= WS_HSCROLL;
+ if (ih->data->sb & IUP_SB_VERT)
+ dwStyle |= WS_VSCROLL;
+
+ ih->serial = iupDialogGetChildId(ih);
+
+ ih->handle = CreateWindowEx(dwExStyle,/* extended style */
+ classname, /* window class */
+ NULL, /* title */
+ dwStyle, /* window style */
+ 0, /* x-position */
+ 0, /* y-position */
+ 10, /* default width to avoid 0 */
+ 10, /* default height to avoid 0 */
+ iupChildTreeGetNativeParentHandle(ih), /* window parent */
+ (HMENU)ih->serial, /* child identifier */
+ iupwin_hinstance, /* instance of app. */
+ clientdata);
+
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ /* associate HWND with Ihandle*, all Win32 controls must call this. */
+ iupwinHandleSet(ih);
+
+ IupSetCallback(ih, "_IUPWIN_OLDPROC_CB", (Icallback)DefWindowProc);
+ IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winCanvasProc);
+
+ /* configure for DRAG&DROP */
+ if (IupGetCallback(ih, "DROPFILES_CB"))
+ iupAttribSetStr(ih, "DRAGDROP", "YES");
+
+ return IUP_NOERROR;
+}
+
+static void winCanvasMDICloseChildren(Ihandle* client)
+{
+ HWND hWndChild = (HWND)SendMessage(client->handle, WM_MDIGETACTIVE, 0, 0);
+
+ /* As long as the MDI client has a child, close it */
+ while (hWndChild)
+ {
+ Ihandle* child = iupwinHandleGet(hWndChild);
+ if (iupObjectCheck(child) && iupAttribGetBoolean(child, "MDICHILD"))
+ IupDestroy(child);
+
+ hWndChild = (HWND)SendMessage(client->handle, WM_MDIGETACTIVE, 0, 0);
+ }
+}
+
+static void winCanvasUnMapMethod(Ihandle* ih)
+{
+ if (iupAttribGetBoolean(ih, "MDICLIENT"))
+ {
+ /* hide the MDI client window to avoid multiple re-paints */
+ ShowWindow(ih->handle, SW_HIDE);
+
+ /* must destroy all MDI Children */
+ winCanvasMDICloseChildren(ih);
+
+ DestroyWindow(ih->handle);
+
+ /* mdiclient class is not a IUP class, must return here */
+ return;
+ }
+
+ /* remove the association before destroying */
+ iupwinHandleRemove(ih);
+
+ /* remove from parent and destroys window */
+ SetParent(ih->handle, NULL);
+ DestroyWindow(ih->handle);
+}
+
+static void winCanvasReleaseMethod(Iclass* ic)
+{
+ (void)ic;
+ if (iupwinClassExist("IupCanvas"))
+ UnregisterClass("IupCanvas", iupwin_hinstance);
+}
+
+void iupdrvCanvasInitClass(Iclass* ic)
+{
+ if (!iupwinClassExist("IupCanvas"))
+ winCanvasRegisterClass();
+
+ /* Driver Dependent Class functions */
+ ic->Map = winCanvasMapMethod;
+ ic->UnMap = winCanvasUnMapMethod;
+ ic->Release = winCanvasReleaseMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, winCanvasSetBgColorAttrib, "255 255 255", NULL, IUPAF_DEFAULT); /* force new default value */
+
+ /* IupCanvas only */
+ iupClassRegisterAttribute(ic, "DRAWSIZE", iupdrvBaseGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "DX", NULL, winCanvasSetDXAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "DY", NULL, winCanvasSetDYAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "POSX", iupCanvasGetPosXAttrib, winCanvasSetPosXAttrib, "0.0", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "POSY", iupCanvasGetPosYAttrib, winCanvasSetPosYAttrib, "0.0", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "XAUTOHIDE", NULL, NULL, "YES", NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "YAUTOHIDE", NULL, NULL, "YES", NULL, IUPAF_NOT_MAPPED);
+
+ /* IupCanvas Windows only */
+ iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupwinSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "HWND", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/win/iupwin_clipboard.c b/iup/src/win/iupwin_clipboard.c
new file mode 100755
index 0000000..1e0fab4
--- /dev/null
+++ b/iup/src/win/iupwin_clipboard.c
@@ -0,0 +1,190 @@
+/** \file
+ * \brief Clipboard for the Windows Driver.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_image.h"
+
+#include "iupwin_drv.h"
+
+
+static int winClipboardSetTextAttrib(Ihandle *ih, const char *value)
+{
+ HANDLE hHandle;
+ void* clip_str;
+ int size = strlen(value)+1;
+ (void)ih;
+
+ if (!OpenClipboard(NULL))
+ return 0;
+
+ hHandle = GlobalAlloc(GMEM_MOVEABLE, size);
+ if (!hHandle)
+ return 0;
+
+ clip_str = GlobalLock(hHandle);
+ CopyMemory(clip_str, value, size);
+ GlobalUnlock(hHandle);
+
+ EmptyClipboard();
+ SetClipboardData(CF_TEXT, hHandle);
+ CloseClipboard();
+
+ return 0;
+}
+
+static char* winClipboardGetTextAttrib(Ihandle *ih)
+{
+ HANDLE hHandle;
+ char* str;
+ (void)ih;
+
+ if (!OpenClipboard(NULL))
+ return NULL;
+
+ hHandle = GetClipboardData(CF_TEXT);
+ if (!hHandle)
+ {
+ CloseClipboard();
+ return NULL;
+ }
+
+ str = iupStrGetMemoryCopy((char*)GlobalLock(hHandle));
+
+ GlobalUnlock(hHandle);
+ CloseClipboard();
+ return str;
+}
+
+static int winClipboardSetImageAttrib(Ihandle *ih, const char *value)
+{
+ HBITMAP hBitmap;
+
+ if (!OpenClipboard(NULL))
+ return 0;
+
+ hBitmap = (HBITMAP)iupImageGetImage(value, ih, 0);
+ iupImageClearCache(ih, hBitmap);
+
+ EmptyClipboard();
+ SetClipboardData(CF_BITMAP, (HANDLE)hBitmap);
+ CloseClipboard();
+
+ return 0;
+}
+
+static int winClipboardSetNativeImageAttrib(Ihandle *ih, const char *value)
+{
+ if (!OpenClipboard(NULL))
+ return 0;
+
+ EmptyClipboard();
+ SetClipboardData(CF_DIB, (HANDLE)value);
+ CloseClipboard();
+
+ (void)ih;
+ return 0;
+}
+
+static HANDLE winCopyHandle(HANDLE hHandle)
+{
+ void *src_data, *dst_data;
+ SIZE_T size = GlobalSize(hHandle);
+ HANDLE hNewHandle = GlobalAlloc(GMEM_MOVEABLE, size);
+ if (!hNewHandle)
+ return NULL;
+
+ src_data = GlobalLock(hHandle);
+ dst_data = GlobalLock(hNewHandle);
+ CopyMemory(dst_data, src_data, size);
+ GlobalUnlock(hHandle);
+ GlobalUnlock(hNewHandle);
+
+ return hNewHandle;
+}
+
+static char* winClipboardGetNativeImageAttrib(Ihandle *ih)
+{
+ HANDLE hHandle;
+
+ if (!OpenClipboard(NULL))
+ return 0;
+
+ hHandle = GetClipboardData(CF_DIB);
+ if (!hHandle)
+ {
+ CloseClipboard();
+ return NULL;
+ }
+
+ hHandle = winCopyHandle(hHandle); /* must duplicate because CloseClipboard will invalidate the handle */
+ CloseClipboard();
+
+ (void)ih;
+ return (char*)hHandle;
+}
+
+static char* winClipboardGetTextAvailableAttrib(Ihandle *ih)
+{
+ int check;
+ (void)ih;
+ OpenClipboard(NULL);
+ check = IsClipboardFormatAvailable(CF_TEXT);
+ CloseClipboard();
+ if (check)
+ return "YES";
+ else
+ return "NO";
+}
+
+static char* winClipboardGetImageAvailableAttrib(Ihandle *ih)
+{
+ int check;
+ (void)ih;
+ OpenClipboard(NULL);
+ check = IsClipboardFormatAvailable(CF_DIB);
+ CloseClipboard();
+ if (check)
+ return "YES";
+ else
+ return "NO";
+}
+
+/******************************************************************************/
+
+Ihandle* IupClipboard(void)
+{
+ return IupCreate("clipboard");
+}
+
+Iclass* iupClipboardGetClass(void)
+{
+ Iclass* ic = iupClassNew(NULL);
+
+ ic->name = "clipboard";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPECONTROL;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ /* Attribute functions */
+ iupClassRegisterAttribute(ic, "TEXT", winClipboardGetTextAttrib, winClipboardSetTextAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "NATIVEIMAGE", winClipboardGetNativeImageAttrib, winClipboardSetNativeImageAttrib, NULL, NULL, IUPAF_NO_STRING|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, winClipboardSetImageAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TEXTAVAILABLE", winClipboardGetTextAvailableAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGEAVAILABLE", winClipboardGetImageAvailableAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
diff --git a/iup/src/win/iupwin_colordlg.c b/iup/src/win/iupwin_colordlg.c
new file mode 100755
index 0000000..f0baa79
--- /dev/null
+++ b/iup/src/win/iupwin_colordlg.c
@@ -0,0 +1,133 @@
+/** \file
+ * \brief IupColorDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+#include <stdio.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_dialog.h"
+
+
+#define IUP_COLOR_RED 706
+
+static UINT_PTR winColorDlgHookProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
+{
+ (void)wParam;
+ if (uiMsg == WM_INITDIALOG)
+ {
+ HWND hWndItem;
+ CHOOSECOLOR* choosecolor = (CHOOSECOLOR*)lParam;
+ Ihandle* ih = (Ihandle*)choosecolor->lCustData;
+
+ char* value = iupAttribGet(ih, "TITLE");
+ if (value)
+ SetWindowText(hWnd, value);
+
+ ih->handle = hWnd;
+ iupDialogUpdatePosition(ih);
+ ih->handle = NULL; /* reset handle */
+ iupAttribSetStr(ih, "HWND", (char*)hWnd); /* used by HELP_CB in winDialogBaseProc */
+
+ hWndItem = GetDlgItem(hWnd, IUP_COLOR_RED);
+ SetFocus(hWndItem);
+ }
+ return 0;
+}
+
+static char* winColorDlgColorsToString(COLORREF* lpCustColors)
+{
+ int i, inc, off = 0;
+ char iup_str[20];
+ char* str = iupStrGetMemory(300);
+ for (i=0; i < 16; i++)
+ {
+ inc = sprintf(iup_str, "%d %d %d;", (int)GetRValue(*lpCustColors), (int)GetGValue(*lpCustColors), (int)GetBValue(*lpCustColors));
+ memcpy(str+off, iup_str, inc);
+ off += inc;
+ lpCustColors++;
+ }
+ str[off-1] = 0; /* remove last separator */
+ return str;
+}
+
+static void winColorDlgStringToColors(char* str, COLORREF* lpCustColors)
+{
+ int i = 0;
+ unsigned char r, g, b;
+
+ while (str && *str && i < 16)
+ {
+ if (iupStrToRGB(str, &r, &g, &b))
+ *lpCustColors = RGB(r,g,b);
+
+ str = strchr(str, ';');
+ if (str) str++;
+ i++;
+ lpCustColors++;
+ }
+}
+
+static int winColorDlgPopup(Ihandle* ih, int x, int y)
+{
+ InativeHandle* parent = iupDialogGetNativeParent(ih);
+ CHOOSECOLOR choosecolor;
+ unsigned char r, g, b;
+ COLORREF lpCustColors[16];
+ char* value;
+
+ iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */
+ iupAttribSetInt(ih, "_IUPDLG_Y", y);
+
+ if (!parent)
+ parent = GetActiveWindow();
+
+ iupStrToRGB(iupAttribGet(ih, "VALUE"), &r, &g, &b);
+
+ ZeroMemory(lpCustColors, 16*sizeof(COLORREF));
+
+ value = iupAttribGetStr(ih, "COLORTABLE");
+ if (value)
+ winColorDlgStringToColors(value, lpCustColors);
+
+ ZeroMemory(&choosecolor, sizeof(CHOOSECOLOR));
+ choosecolor.lStructSize = sizeof(CHOOSECOLOR);
+ choosecolor.hwndOwner = parent;
+ choosecolor.rgbResult = RGB(r, g, b);
+ choosecolor.lpCustColors = lpCustColors;
+ choosecolor.lCustData = (LPARAM)ih;
+
+ choosecolor.Flags = CC_RGBINIT|CC_FULLOPEN;
+ if (IupGetCallback(ih, "HELP_CB"))
+ choosecolor.Flags |= CC_SHOWHELP;
+
+ choosecolor.Flags |= CC_ENABLEHOOK;
+ choosecolor.lpfnHook = (LPCCHOOKPROC)winColorDlgHookProc;
+
+ if (!ChooseColor(&choosecolor))
+ {
+ iupAttribSetStr(ih, "VALUE", NULL);
+ iupAttribSetStr(ih, "COLORTABLE", NULL);
+ iupAttribSetStr(ih, "STATUS", NULL);
+ return IUP_NOERROR;
+ }
+
+ iupAttribSetStrf(ih, "VALUE", "%d %d %d", GetRValue(choosecolor.rgbResult),
+ GetGValue(choosecolor.rgbResult),
+ GetBValue(choosecolor.rgbResult));
+ iupAttribSetStr(ih, "COLORTABLE", winColorDlgColorsToString(lpCustColors));
+ iupAttribSetStr(ih, "STATUS", "1");
+
+ return IUP_NOERROR;
+}
+
+void iupdrvColorDlgInitClass(Iclass* ic)
+{
+ ic->DlgPopup = winColorDlgPopup;
+}
diff --git a/iup/src/win/iupwin_common.c b/iup/src/win/iupwin_common.c
new file mode 100755
index 0000000..a1a7c0f
--- /dev/null
+++ b/iup/src/win/iupwin_common.c
@@ -0,0 +1,865 @@
+/** \file
+ * \brief Windows Base Procedure
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <windows.h>
+#include <commctrl.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_key.h"
+#include "iup_str.h"
+#include "iup_class.h"
+#include "iup_attrib.h"
+#include "iup_focus.h"
+#include "iup_image.h"
+#include "iup_dialog.h"
+#include "iup_drvinfo.h"
+#include "iup_drv.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+#include "iupwin_brush.h"
+
+
+#ifndef XBUTTON1
+#define XBUTTON1 0x0001 /* not defined in MingW3 */
+#endif
+
+int iupwinClassExist(const char* name)
+{
+ WNDCLASS WndClass;
+ if (GetClassInfo(iupwin_hinstance, name, &WndClass))
+ return 1;
+ return 0;
+}
+
+int iupwinGetScreenRes(void)
+{
+ int res;
+ HDC ScreenDC = GetDC(NULL);
+ res = GetDeviceCaps(ScreenDC, LOGPIXELSY);
+ ReleaseDC(NULL, ScreenDC);
+ return res;
+}
+
+void iupdrvActivate(Ihandle* ih)
+{
+ /* do not use BM_CLICK because it changes the focus
+ and does not animates the button press */
+ SendMessage(ih->handle, BM_SETSTATE, TRUE, 0);
+ IupFlush();
+ Sleep(150);
+ SendMessage(GetParent(ih->handle), WM_COMMAND, MAKEWPARAM(0, BN_CLICKED), (LPARAM)ih->handle);
+ SendMessage(ih->handle, BM_SETSTATE, FALSE, 0);
+}
+
+WCHAR* iupwinStrChar2Wide(const char* str)
+{
+ if (str)
+ {
+ int len = strlen(str)+1;
+ WCHAR* wstr = malloc(len * sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, str, -1, wstr, len);
+ return wstr;
+ }
+
+ return NULL;
+}
+
+int iupdrvGetScrollbarSize(void)
+{
+ int xv = GetSystemMetrics(SM_CXVSCROLL);
+ int yh = GetSystemMetrics(SM_CYHSCROLL);
+ return xv > yh ? xv : yh;
+}
+
+void iupdrvReparent(Ihandle* ih)
+{
+ SetParent(ih->handle, iupChildTreeGetNativeParentHandle(ih));
+}
+
+void iupdrvBaseLayoutUpdateMethod(Ihandle *ih)
+{
+ SetWindowPos(ih->handle, NULL, ih->x, ih->y, ih->currentwidth, ih->currentheight,
+ SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOOWNERZORDER);
+}
+
+void iupdrvDisplayRedraw(Ihandle *ih)
+{
+ /* REDRAW Now */
+ RedrawWindow(ih->handle,NULL,NULL,RDW_ERASE|RDW_INVALIDATE|RDW_INTERNALPAINT|RDW_NOCHILDREN|RDW_UPDATENOW);
+}
+
+void iupdrvDisplayUpdate(Ihandle *ih)
+{
+ /* Post a REDRAW */
+ RedrawWindow(ih->handle,NULL,NULL,RDW_ERASE|RDW_INVALIDATE|RDW_INTERNALPAINT|RDW_NOCHILDREN);
+}
+
+void iupdrvScreenToClient(Ihandle* ih, int *x, int *y)
+{
+ POINT p;
+ p.x = *x;
+ p.y = *y;
+ ScreenToClient(ih->handle, &p);
+ *x = p.x;
+ *y = p.y;
+}
+
+static void winTrackMouse(HWND hwnd, int enter)
+{
+ TRACKMOUSEEVENT mouse;
+ mouse.cbSize = sizeof(TRACKMOUSEEVENT);
+
+ if (enter)
+ mouse.dwFlags = TME_HOVER;
+ else
+ mouse.dwFlags = TME_LEAVE;
+
+ mouse.hwndTrack = hwnd;
+ mouse.dwHoverTime = 1;
+ TrackMouseEvent(&mouse);
+}
+
+static void winCallEnterLeaveWindow(Ihandle *ih, int enter)
+{
+ Icallback cb = NULL;
+
+ if (!ih->iclass->is_interactive)
+ return;
+
+ if (enter)
+ {
+ winTrackMouse(ih->handle, 0);
+
+ if (!iupAttribGetInt(ih, "_IUPWIN_ENTERWIN"))
+ {
+ cb = IupGetCallback(ih,"ENTERWINDOW_CB");
+ iupAttribSetStr(ih, "_IUPWIN_ENTERWIN", "1");
+ }
+ }
+ else
+ {
+ cb = IupGetCallback(ih,"LEAVEWINDOW_CB");
+ iupAttribSetStr(ih, "_IUPWIN_ENTERWIN", NULL);
+ }
+
+ if (cb)
+ cb(ih);
+}
+
+void iupwinMergeStyle(Ihandle* ih, DWORD old_mask, DWORD value)
+{
+ DWORD dwStyle = GetWindowLong(ih->handle, GWL_STYLE);
+ dwStyle &= ~(old_mask); /* clear old bits */
+ dwStyle |= value;
+ SetWindowLong(ih->handle, GWL_STYLE, dwStyle);
+}
+
+void iupwinSetStyle(Ihandle* ih, DWORD value, int set)
+{
+ DWORD dwStyle = GetWindowLong(ih->handle, GWL_STYLE);
+ if (set)
+ dwStyle |= value;
+ else
+ dwStyle &= ~(value);
+ SetWindowLong(ih->handle, GWL_STYLE, dwStyle);
+}
+
+int iupwinBaseProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ (void)lp;
+
+ switch (msg)
+ {
+ case WM_GETDLGCODE:
+ {
+ *result = DLGC_WANTALLKEYS;
+ return 1;
+ }
+ case WM_NOTIFY: /* usually sent only to parent,
+ but TIPs are configured to be handled here */
+ {
+ NMHDR* msg_info = (NMHDR*)lp;
+ if (msg_info->code == TTN_GETDISPINFO)
+ iupwinTipsGetDispInfo(lp);
+ break;
+ }
+ case WM_DROPFILES:
+ iupwinDropFiles((HDROP)wp, ih);
+ break;
+ case WM_HELP:
+ {
+ Ihandle* child;
+ HELPINFO* help_info = (HELPINFO*)lp;
+
+ if (help_info->iContextType == HELPINFO_MENUITEM)
+ child = iupwinMenuGetItemHandle((HMENU)help_info->hItemHandle, (int)help_info->iCtrlId);
+ else
+ child = iupwinHandleGet(help_info->hItemHandle);
+
+ if (child)
+ {
+ Icallback cb = (Icallback) IupGetCallback(child, "HELP_CB");
+ if (cb)
+ {
+ if (cb(child) == IUP_CLOSE)
+ IupExitLoop();
+
+ *result = 0;
+ return 1; /* abort default processing */
+ }
+ }
+ break;
+ }
+ case WM_MOUSELEAVE:
+ winCallEnterLeaveWindow(ih, 0);
+ break;
+ case WM_MOUSEMOVE:
+ winCallEnterLeaveWindow(ih, 1);
+ break;
+ case WM_KEYDOWN:
+ case WM_SYSKEYDOWN:
+ if (!iupwinKeyEvent(ih, (int)wp, 1))
+ {
+ *result = 0;
+ return 1; /* abort default processing */
+ }
+ break;
+ case WM_SYSKEYUP:
+ case WM_KEYUP:
+ {
+ int ret;
+ if (wp == VK_SNAPSHOT) /* called only on key up */
+ {
+ ret = iupwinKeyEvent(ih, (int)wp, 1);
+ if (ret && iupObjectCheck(ih))
+ ret = iupwinKeyEvent(ih, (int)wp, 0);
+ }
+ else
+ ret = iupwinKeyEvent(ih, (int)wp, 0);
+
+ if (!ret)
+ {
+ *result = 0;
+ return 1; /* abort default processing */
+ }
+
+ break;
+ }
+ case WM_SETFOCUS:
+ iupwinWmSetFocus(ih);
+ break;
+ case WM_KILLFOCUS:
+ iupCallKillFocusCb(ih);
+ break;
+ case WOM_CLOSE:
+ case WOM_DONE:
+ case WOM_OPEN:
+ {
+ IFni cb = (IFni)IupGetCallback(ih, "WOM_CB");
+ if (cb)
+ {
+ int v = -2; /* Error */
+ switch(msg)
+ {
+ case WOM_OPEN: v = 1; break;
+ case WOM_DONE: v = 0; break;
+ case WOM_CLOSE: v = -1; break;
+ }
+ cb(ih, v);
+ }
+ break;
+ }
+ }
+
+ return 0;
+}
+
+LRESULT CALLBACK iupwinBaseWinProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
+{
+ int ret = 0;
+ LRESULT result = 0;
+ IwinProc winProc;
+ WNDPROC oldProc;
+ Ihandle *ih;
+
+ ih = iupwinHandleGet(hwnd);
+ if (!ih)
+ return DefWindowProc(hwnd, msg, wp, lp); /* should never happen */
+
+ /* retrieve the control previous procedure for subclassing */
+ oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_OLDPROC_CB");
+
+ /* check if the element defines a custom procedure */
+ winProc = (IwinProc)IupGetCallback(ih, "_IUPWIN_CTRLPROC_CB");
+ if (winProc)
+ ret = winProc(ih, msg, wp, lp, &result);
+ else
+ ret = iupwinBaseProc(ih, msg, wp, lp, &result);
+
+ if (ret)
+ return result;
+ else
+ return CallWindowProc(oldProc, hwnd, msg, wp, lp);
+}
+
+static Ihandle* winContainerWmCommandGetIhandle(Ihandle *ih, WPARAM wp, LPARAM lp)
+{
+ /* WPARAM - if HIWORD is 0 if the message is from a menu.
+ or HIWORD is 1 if the message is from an accelerator.
+ or HIWORD is the notification code if the message is from a control.
+ LOWORD is the identifier.
+ LPARAM - the control sending the message or 0. */
+
+ Ihandle *child = NULL;
+
+ if (HIWORD(wp)==0 && lp==0 && LOWORD(wp)>10)
+ {
+ Ihandle* dlg_menu = IupGetAttributeHandle(ih, "MENU");
+ if (dlg_menu)
+ child = iupwinMenuGetItemHandle((HMENU)dlg_menu->handle, LOWORD(wp)); /* menu */
+ }
+ else
+ {
+ if (lp==0)
+ child = ih; /* native parent */
+ else
+ {
+ child = iupwinHandleGet((void*)lp); /* control */
+ if (!child)
+ child = iupwinHandleGet((void*)GetParent((HWND)lp)); /* control */
+ }
+ }
+
+ return child;
+}
+
+int iupwinBaseContainerProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ /* All messages here are sent to the parent Window,
+ but they are usefull for child controls. */
+
+ switch (msg)
+ {
+ case WM_COMMAND:
+ {
+ Ihandle* child = winContainerWmCommandGetIhandle(ih, wp, lp);
+ if (child)
+ {
+ IFnii cb = (IFnii)IupGetCallback(child, "_IUPWIN_COMMAND_CB");
+ if (cb)
+ cb(child, wp, lp);
+ }
+
+ break;
+ }
+ case WM_CTLCOLOREDIT:
+ case WM_CTLCOLORLISTBOX:
+ case WM_CTLCOLORBTN:
+ case WM_CTLCOLORSCROLLBAR:
+ case WM_CTLCOLORSTATIC:
+ {
+ Ihandle* child = iupwinHandleGet((void*)lp);
+ if (child)
+ {
+ IFctlColor cb = (IFctlColor)IupGetCallback(child, "_IUPWIN_CTLCOLOR_CB");
+ if (cb)
+ return cb(child, (HDC)wp, result);
+ }
+ break;
+ }
+ case WM_DRAWITEM: /* for OWNERDRAW controls */
+ {
+ Ihandle *child = NULL;
+ DRAWITEMSTRUCT *drawitem = (LPDRAWITEMSTRUCT)lp;
+ if (!drawitem)
+ break;
+
+ if (wp == 0) /* a menu */
+ child = iupwinMenuGetItemHandle((HMENU)drawitem->hwndItem, drawitem->itemID);
+ else
+ child = iupwinHandleGet(drawitem->hwndItem);
+
+ if (child)
+ {
+ IFdrawItem cb = (IFdrawItem)IupGetCallback(child, "_IUPWIN_DRAWITEM_CB");
+ if (cb)
+ {
+ cb(child, (void*)drawitem);
+ *result = TRUE;
+ return 1;
+ }
+ }
+ break;
+ }
+ case WM_HSCROLL:
+ case WM_VSCROLL:
+ {
+ Ihandle *child = iupwinHandleGet((void*)lp);
+ if (child)
+ {
+ IFni cb = (IFni)IupGetCallback(child, "_IUPWIN_CUSTOMSCROLL_CB");
+ if (cb)
+ cb(child, LOWORD(wp));
+ }
+ break;
+ }
+ case WM_NOTIFY: /* Currently, the following controls support custom draw functionality:
+ Header, List-view, Rebar, Toolbar, ToolTip, Trackbar, Tree-view.
+ And for Button if using Windows XP Style. */
+ {
+ Ihandle *child;
+ NMHDR* msg_info = (NMHDR*)lp;
+ if (!msg_info)
+ break;
+
+ child = iupwinHandleGet(msg_info->hwndFrom);
+ if (child)
+ {
+ IFnotify cb = (IFnotify)IupGetCallback(child, "_IUPWIN_NOTIFY_CB");
+ if (cb)
+ {
+ if (cb(child, (void*)msg_info, result))
+ return 1;
+ }
+ }
+ break;
+ }
+ }
+
+ return iupwinBaseProc(ih, msg, wp, lp, result);
+}
+
+void iupwinChangeProc(Ihandle *ih, WNDPROC new_proc)
+{
+ IupSetCallback(ih, "_IUPWIN_OLDPROC_CB", (Icallback)GetWindowLongPtr(ih->handle, GWLP_WNDPROC));
+ SetWindowLongPtr(ih->handle, GWLP_WNDPROC, (LONG_PTR)new_proc);
+}
+
+void iupdrvBaseUnMapMethod(Ihandle* ih)
+{
+ WNDPROC oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_OLDPROC_CB");
+ if (oldProc)
+ {
+ SetWindowLongPtr(ih->handle, GWLP_WNDPROC, (LONG_PTR)oldProc);
+ IupSetCallback(ih, "_IUPWIN_OLDPROC_CB", NULL);
+ }
+
+ /* remove the association before destroying */
+ iupwinHandleRemove(ih);
+
+ /* destroys window (it will remove from parent) */
+ DestroyWindow(ih->handle);
+}
+
+void iupwinDropFiles(HDROP hDrop, Ihandle *ih)
+{
+ char *filename;
+ int i, numFiles, numchar, ret;
+ POINT point;
+
+ IFnsiii cb = (IFnsiii)IupGetCallback(ih, "DROPFILES_CB");
+ if (!cb) return;
+
+ numFiles = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
+ DragQueryPoint(hDrop, &point);
+ for (i = 0; i < numFiles; i++)
+ {
+ numchar = DragQueryFile(hDrop, i, NULL, 0);
+ filename = malloc(numchar+1);
+ if (!filename)
+ break;
+
+ DragQueryFile(hDrop, i, filename, numchar+1);
+
+ ret = cb(ih, filename, numFiles-i-1, (int) point.x, (int) point.y);
+
+ free(filename);
+
+ if (ret == IUP_IGNORE)
+ break;
+ }
+ DragFinish(hDrop);
+}
+
+int iupwinGetColorRef(Ihandle *ih, char *name, COLORREF *color)
+{
+ unsigned char r, g, b;
+ /* must use IupGetAttribute to use inheritance */
+ if (iupStrToRGB(IupGetAttribute(ih, name), &r, &g, &b))
+ {
+ *color = RGB(r,g,b);
+ return 1;
+ }
+ return 0;
+}
+
+int iupwinGetParentBgColor(Ihandle* ih, COLORREF* cr)
+{
+ unsigned char r, g, b;
+ char* color = iupBaseNativeParentGetBgColorAttrib(ih);
+ if (iupStrToRGB(color, &r, &g, &b))
+ {
+ *cr = RGB(r,g,b);
+ return 1;
+ }
+ return 0;
+}
+
+int iupdrvBaseSetZorderAttrib(Ihandle* ih, const char* value)
+{
+ if (IsWindowVisible(ih->handle))
+ {
+ if (iupStrEqualNoCase(value, "TOP"))
+ SetWindowPos(ih->handle, HWND_TOP, 0, 0, 0, 0,
+ SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW | SWP_NOACTIVATE);
+ else
+ SetWindowPos(ih->handle, HWND_BOTTOM, 0, 0, 0, 0,
+ SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW | SWP_NOACTIVATE);
+ }
+
+ return 0;
+}
+
+void iupdrvSetVisible(Ihandle* ih, int visible)
+{
+ ShowWindow(ih->handle, visible? SW_SHOWNORMAL: SW_HIDE);
+}
+
+int iupdrvIsVisible(Ihandle* ih)
+{
+ return IsWindowVisible(ih->handle);
+}
+
+int iupdrvIsActive(Ihandle* ih)
+{
+ return IsWindowEnabled(ih->handle);
+}
+
+void iupdrvSetActive(Ihandle* ih, int enable)
+{
+ EnableWindow(ih->handle, enable);
+}
+
+int iupdrvBaseSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ if (!value) value = "";
+ SetWindowText(ih->handle, value);
+ return 0;
+}
+
+char* iupdrvBaseGetTitleAttrib(Ihandle* ih)
+{
+ int nc = GetWindowTextLength(ih->handle);
+ if (nc)
+ {
+ char* str = iupStrGetMemory(nc+1);
+ GetWindowText(ih->handle, str, nc+1);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+int iupwinSetDragDropAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ DragAcceptFiles(ih->handle, TRUE);
+ else
+ DragAcceptFiles(ih->handle, FALSE);
+ return 1;
+}
+
+char *iupdrvBaseGetXAttrib(Ihandle *ih)
+{
+ char* str = iupStrGetMemory(20);
+ RECT rect;
+ GetWindowRect(ih->handle, &rect);
+ sprintf(str, "%d", (int)rect.left);
+ return str;
+}
+
+char *iupdrvBaseGetYAttrib(Ihandle *ih)
+{
+ char* str = iupStrGetMemory(20);
+ RECT rect;
+ GetWindowRect(ih->handle, &rect);
+ sprintf(str, "%d", (int)rect.top);
+ return str;
+}
+
+char* iupdrvBaseGetClientSizeAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(20);
+ RECT rect;
+ GetClientRect(ih->handle, &rect);
+ sprintf(str, "%dx%d", (int)(rect.right-rect.left), (int)(rect.bottom-rect.top));
+ return str;
+}
+
+#ifndef IDC_HAND
+#define IDC_HAND MAKEINTRESOURCE(32649)
+#endif
+#ifndef IDC_APPSTARTING
+#define IDC_APPSTARTING MAKEINTRESOURCE(32650)
+#endif
+#ifndef IDC_HELP
+#define IDC_HELP MAKEINTRESOURCE(32651)
+#endif
+
+static HCURSOR winGetCursor(Ihandle* ih, const char* name)
+{
+ static struct {
+ const char* iupname;
+ const char* sysname;
+ } table[] = {
+ {"NONE", NULL},
+ {"NULL", NULL},
+ {"ARROW", IDC_ARROW},
+ {"BUSY", IDC_WAIT},
+ {"CROSS", IDC_CROSS},
+ {"HAND", IDC_HAND},
+ {"MOVE", IDC_SIZEALL},
+ {"RESIZE_N", IDC_SIZENS},
+ {"RESIZE_S", IDC_SIZENS},
+ {"RESIZE_NS", IDC_SIZENS},
+ {"RESIZE_W", IDC_SIZEWE},
+ {"RESIZE_E", IDC_SIZEWE},
+ {"RESIZE_WE", IDC_SIZEWE},
+ {"RESIZE_NE", IDC_SIZENESW},
+ {"RESIZE_SE", IDC_SIZENWSE},
+ {"RESIZE_NW", IDC_SIZENWSE},
+ {"RESIZE_SW", IDC_SIZENESW},
+ {"TEXT", IDC_IBEAM},
+ {"HELP", IDC_HELP},
+ {"IUP", IDC_HELP},
+ {"NO", IDC_NO},
+ {"UPARROW", IDC_UPARROW},
+ {"APPSTARTING", IDC_APPSTARTING}
+ };
+
+ HCURSOR cur;
+ char str[50];
+ int i, count = sizeof(table)/sizeof(table[0]);
+
+ /* check the cursor cache first (per control)*/
+ sprintf(str, "_IUPWIN_CURSOR_%s", name);
+ cur = (HCURSOR)iupAttribGet(ih, str);
+ if (cur)
+ return cur;
+
+ /* check the pre-defined IUP names first */
+ for (i = 0; i < count; i++)
+ {
+ if (iupStrEqualNoCase(name, table[i].iupname))
+ {
+ if (table[i].sysname)
+ cur = LoadCursor(NULL, table[i].sysname);
+ else
+ cur = NULL;
+
+ break;
+ }
+ }
+
+ if (i == count)
+ {
+ /* check other system cursors */
+ /* cursor PEN is handled here */
+ if (iupStrEqualNoCase(name, "PEN"))
+ name = "CURSOR_PEN";
+
+ /* check for an name defined cursor */
+ cur = iupImageGetCursor(name);
+ }
+
+ iupAttribSetStr(ih, str, (char*)cur);
+ return cur;
+}
+
+int iupdrvBaseSetCursorAttrib(Ihandle* ih, const char* value)
+{
+ /* Cursor can be NULL in Windows. */
+ HCURSOR hCur = winGetCursor(ih, value);
+ iupAttribSetStr(ih, "_IUPWIN_HCURSOR", (char*)hCur); /* To be used in WM_SETCURSOR */
+ /* refresh the cursor */
+ SendMessage(ih->handle, WM_SETCURSOR, (WPARAM)ih->handle, MAKELPARAM(1,WM_MOUSEMOVE));
+ return 1;
+}
+
+void iupdrvBaseRegisterCommonAttrib(Iclass* ic)
+{
+ iupClassRegisterAttribute(ic, "HFONT", iupwinGetHFontAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+}
+
+int iupwinButtonDown(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp)
+{
+ char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT;
+ int ret, doubleclick = 0;
+ int b = 0;
+
+ IFniiiis cb = (IFniiiis) IupGetCallback(ih, "BUTTON_CB");
+ if (!cb)
+ return 0;
+
+ if (msg==WM_XBUTTONDBLCLK ||
+ msg==WM_LBUTTONDBLCLK ||
+ msg==WM_MBUTTONDBLCLK ||
+ msg==WM_RBUTTONDBLCLK)
+ doubleclick = 1;
+
+ iupwinButtonKeySetStatus(LOWORD(wp), status, doubleclick);
+
+ if (msg==WM_LBUTTONDOWN || msg==WM_LBUTTONDBLCLK)
+ b = IUP_BUTTON1;
+ else if (msg==WM_MBUTTONDOWN || msg==WM_MBUTTONDBLCLK)
+ b = IUP_BUTTON2;
+ else if (msg==WM_RBUTTONDOWN || msg==WM_RBUTTONDBLCLK)
+ b = IUP_BUTTON3;
+ else if (msg==WM_XBUTTONDOWN || msg==WM_XBUTTONDBLCLK)
+ {
+ if (HIWORD(wp) == XBUTTON1)
+ b = IUP_BUTTON4;
+ else
+ b = IUP_BUTTON5;
+ }
+
+ ret = cb(ih, b, 1, (int)(short)LOWORD(lp), (int)(short)HIWORD(lp), status);
+ if (ret == IUP_CLOSE)
+ IupExitLoop();
+ else if (ret == IUP_IGNORE)
+ return -1;
+
+ return 1;
+}
+
+int iupwinButtonUp(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp)
+{
+ char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT;
+ int ret, b=0;
+ IFniiiis cb = (IFniiiis) IupGetCallback(ih, "BUTTON_CB");
+ if (!cb)
+ return 0;
+
+ iupwinButtonKeySetStatus(LOWORD(wp), status, 0);
+
+ /* also updates the button status, since wp could not have the flag */
+ if (msg==WM_LBUTTONUP)
+ {
+ b = IUP_BUTTON1;
+ iupKEYSETBUTTON1(status);
+ }
+ else if (msg==WM_MBUTTONUP)
+ {
+ b = IUP_BUTTON2;
+ iupKEYSETBUTTON2(status);
+ }
+ else if (msg==WM_RBUTTONUP)
+ {
+ b = IUP_BUTTON3;
+ iupKEYSETBUTTON3(status);
+ }
+ else if (msg==WM_XBUTTONUP)
+ {
+ if (HIWORD(wp) == XBUTTON1)
+ {
+ b = IUP_BUTTON4;
+ iupKEYSETBUTTON4(status);
+ }
+ else
+ {
+ b = IUP_BUTTON5;
+ iupKEYSETBUTTON5(status);
+ }
+ }
+
+ ret = cb(ih, b, 0, (int)(short)LOWORD(lp), (int)(short)HIWORD(lp), status);
+ if (ret == IUP_CLOSE)
+ IupExitLoop();
+ else if (ret == IUP_IGNORE)
+ return -1;
+
+ return 1;
+}
+
+int iupwinMouseMove(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp)
+{
+ IFniis cb = (IFniis)IupGetCallback(ih, "MOTION_CB");
+ if (cb)
+ {
+ char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT;
+ iupwinButtonKeySetStatus(LOWORD(wp), status, 0);
+ cb(ih, (int)(short)LOWORD(lp), (int)(short)HIWORD(lp), status);
+ return 1;
+ }
+ (void)msg;
+ return 0;
+}
+
+int iupwinCreateWindowEx(Ihandle* ih, LPCSTR lpClassName, DWORD dwExStyle, DWORD dwStyle)
+{
+ ih->serial = iupDialogGetChildId(ih);
+
+ ih->handle = CreateWindowEx(dwExStyle, /* extended window style */
+ lpClassName, /* window class */
+ NULL, /* title */
+ dwStyle, /* window style */
+ 0, /* x-position */
+ 0, /* y-position */
+ 10, /* default width to avoid 0 */
+ 10, /* default height to avoid 0 */
+ iupChildTreeGetNativeParentHandle(ih), /* window parent */
+ (HMENU)ih->serial, /* child identifier */
+ iupwin_hinstance, /* instance of app. */
+ NULL);
+
+ if (!ih->handle)
+ return 0;
+
+ /* associate HWND with Ihandle*, all Win32 controls must call this. */
+ iupwinHandleSet(ih);
+
+ /* replace the WinProc to handle base callbacks */
+ iupwinChangeProc(ih, iupwinBaseWinProc);
+
+ return 1;
+}
+
+char* iupwinGetClipboardText(Ihandle* ih)
+{
+ HANDLE Handle;
+ char* str;
+
+ if (!IsClipboardFormatAvailable(CF_TEXT))
+ return NULL;
+
+ if (!OpenClipboard(ih->handle))
+ return NULL;
+
+ Handle = GetClipboardData(CF_TEXT);
+ if (!Handle)
+ {
+ CloseClipboard();
+ return NULL;
+ }
+
+ str = (char*)GlobalLock(Handle);
+ str = iupStrDup(str);
+
+ GlobalUnlock(Handle);
+
+ CloseClipboard();
+
+ return str;
+}
diff --git a/iup/src/win/iupwin_dialog.c b/iup/src/win/iupwin_dialog.c
new file mode 100755
index 0000000..39fdc0c
--- /dev/null
+++ b/iup/src/win/iupwin_dialog.c
@@ -0,0 +1,1439 @@
+/** \file
+ * \brief IupDialog class
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_layout.h"
+#include "iup_dlglist.h"
+#include "iup_attrib.h"
+#include "iup_drv.h"
+#include "iup_drvinfo.h"
+#include "iup_drvfont.h"
+#include "iup_focus.h"
+#include "iup_str.h"
+#define _IUPDLG_PRIVATE
+#include "iup_dialog.h"
+#include "iup_image.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+#include "iupwin_brush.h"
+#include "iupwin_info.h"
+
+
+#define IWIN_TRAY_NOTIFICATION 102
+
+static int WM_HELPMSG;
+
+static int winDialogSetBgColorAttrib(Ihandle* ih, const char* value);
+static int winDialogSetTrayAttrib(Ihandle *ih, const char *value);
+
+/****************************************************************
+ Utilities
+****************************************************************/
+
+int iupdrvDialogIsVisible(Ihandle* ih)
+{
+ return iupdrvIsVisible(ih);
+}
+
+void iupdrvDialogUpdateSize(Ihandle* ih)
+{
+ RECT rect;
+ GetWindowRect(ih->handle, &rect);
+ ih->currentwidth = rect.right-rect.left;
+ ih->currentheight = rect.bottom-rect.top;
+}
+
+void iupdrvDialogGetSize(InativeHandle* handle, int *w, int *h)
+{
+ RECT rect;
+ GetWindowRect(handle, &rect);
+ if (w) *w = rect.right-rect.left;
+ if (h) *h = rect.bottom-rect.top;
+}
+
+void iupdrvDialogSetVisible(Ihandle* ih, int visible)
+{
+ ShowWindow(ih->handle, visible? ih->data->cmd_show: SW_HIDE);
+}
+
+void iupdrvDialogGetPosition(InativeHandle* handle, int *x, int *y)
+{
+ RECT rect;
+ GetWindowRect(handle, &rect);
+ if (x) *x = rect.left;
+ if (y) *y = rect.top;
+}
+
+void iupdrvDialogSetPosition(Ihandle *ih, int x, int y)
+{
+ /* Only moves the window and places it at the top of the Z order. */
+ SetWindowPos(ih->handle, HWND_TOP, x, y, 0, 0, SWP_NOSIZE);
+}
+
+void iupdrvDialogGetDecoration(Ihandle* ih, int *border, int *caption, int *menu)
+{
+ if (ih->data->menu)
+ *menu = iupdrvMenuGetMenuBarSize(ih->data->menu);
+ else
+ *menu = 0;
+
+ if (ih->handle)
+ {
+ iupdrvGetWindowDecor(ih->handle, border, caption);
+
+ if (*menu)
+ *caption -= *menu;
+ }
+ else
+ {
+ int has_titlebar = iupAttribGetBoolean(ih, "MAXBOX") ||
+ iupAttribGetBoolean(ih, "MINBOX") ||
+ iupAttribGetBoolean(ih, "MENUBOX") ||
+ IupGetAttribute(ih, "TITLE"); /* must use IupGetAttribute to check from the native implementation */
+
+ *caption = 0;
+ if (has_titlebar)
+ {
+ if (iupAttribGetBoolean(ih, "TOOLBOX") && iupAttribGet(ih, "PARENTDIALOG"))
+ *caption = GetSystemMetrics(SM_CYSMCAPTION); /* tool window */
+ else
+ *caption = GetSystemMetrics(SM_CYCAPTION); /* normal window */
+ }
+
+ *border = 0;
+ if (iupAttribGetBoolean(ih, "RESIZE"))
+ {
+ *border = GetSystemMetrics(SM_CXFRAME); /* Thickness of the sizing border around the perimeter of a window */
+ } /* that can be resized, in pixels. */
+ else if (has_titlebar)
+ {
+ *border = GetSystemMetrics(SM_CXFIXEDFRAME); /* Thickness of the frame around the perimeter of a window */
+ } /* that has a caption but is not sizable, in pixels. */
+ else if (iupAttribGetBoolean(ih, "BORDER"))
+ {
+ *border = GetSystemMetrics(SM_CXBORDER);
+ }
+ }
+}
+
+int iupdrvDialogSetPlacement(Ihandle* ih)
+{
+ char* placement;
+
+ ih->data->cmd_show = SW_SHOWNORMAL;
+ ih->data->show_state = IUP_SHOW;
+
+ if (iupAttribGetBoolean(ih, "FULLSCREEN"))
+ return 1;
+
+ placement = iupAttribGet(ih, "PLACEMENT");
+ if (!placement)
+ {
+ if (IsIconic(ih->handle) || IsZoomed(ih->handle))
+ ih->data->show_state = IUP_RESTORE;
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(placement, "MAXIMIZED"))
+ {
+ ih->data->cmd_show = SW_SHOWMAXIMIZED;
+ ih->data->show_state = IUP_MAXIMIZE;
+ }
+ else if (iupStrEqualNoCase(placement, "MINIMIZED"))
+ {
+ ih->data->cmd_show = SW_SHOWMINIMIZED;
+ ih->data->show_state = IUP_MINIMIZE;
+ }
+ else if (iupStrEqualNoCase(placement, "FULL"))
+ {
+ int width, height, x, y;
+ int caption, border, menu;
+ iupdrvDialogGetDecoration(ih, &border, &caption, &menu);
+
+ /* the dialog will cover the task bar */
+ iupdrvGetFullSize(&width, &height);
+
+ /* position the decoration and menu outside the screen */
+ x = -(border);
+ y = -(border+caption+menu);
+
+ width += 2*border;
+ height += 2*border + caption + menu;
+
+ /* set the new size and position */
+ /* WM_SIZE will update the layout */
+ SetWindowPos(ih->handle, HWND_TOP, x, y, width, height, 0);
+
+ if (IsIconic(ih->handle) || IsZoomed(ih->handle))
+ ih->data->show_state = IUP_RESTORE;
+ }
+
+ iupAttribSetStr(ih, "PLACEMENT", NULL); /* reset to NORMAL */
+
+ return 1;
+}
+
+static int winDialogMDICloseChildren(Ihandle* ih)
+{
+ Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE");
+ if (iupObjectCheck(client))
+ {
+ HWND hWndChild = (HWND)SendMessage(client->handle, WM_MDIGETACTIVE, 0, 0);
+
+ /* As long as the MDI client has a child, close it */
+ while (hWndChild)
+ {
+ Ihandle* child = iupwinHandleGet(hWndChild);
+ if (iupObjectCheck(child) && iupAttribGetBoolean(child, "MDICHILD"))
+ {
+ Icallback cb = IupGetCallback(child, "CLOSE_CB");
+ if (cb)
+ {
+ int ret = cb(child);
+ if (ret == IUP_IGNORE)
+ return 0;
+ if (ret == IUP_CLOSE)
+ IupExitLoop();
+ }
+
+ IupDestroy(child);
+ }
+
+ hWndChild = (HWND)SendMessage(client->handle, WM_MDIGETACTIVE, 0, 0);
+ }
+ }
+ return 1;
+}
+
+
+/****************************************************************************
+ WindowProc
+****************************************************************************/
+
+
+static Ihandle* winMinMaxHandle = NULL;
+
+static int winDialogCheckMinMaxInfo(Ihandle* ih, MINMAXINFO* minmax)
+{
+ int min_w = 1, min_h = 1; /* MINSIZE default value */
+ int max_w = 65535, max_h = 65535; /* MAXSIZE default value */
+
+ iupStrToIntInt(iupAttribGet(ih, "MINSIZE"), &min_w, &min_h, 'x');
+ iupStrToIntInt(iupAttribGet(ih, "MAXSIZE"), &max_w, &max_h, 'x');
+
+ minmax->ptMinTrackSize.x = min_w;
+ minmax->ptMinTrackSize.y = min_h;
+ minmax->ptMaxTrackSize.x = max_w;
+ minmax->ptMaxTrackSize.y = max_h;
+
+ if (winMinMaxHandle == ih)
+ winMinMaxHandle = NULL;
+
+ return 1;
+}
+
+static void winDialogResize(Ihandle* ih, int width, int height)
+{
+ IFnii cb;
+
+ iupdrvDialogUpdateSize(ih);
+
+ cb = (IFnii)IupGetCallback(ih, "RESIZE_CB");
+ if (!cb || cb(ih, width, height)!=IUP_IGNORE) /* width and height here are for the client area */
+ {
+ ih->data->ignore_resize = 1;
+ IupRefresh(ih);
+ ih->data->ignore_resize = 0;
+ }
+}
+
+static int winDialogBaseProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ if (iupwinBaseContainerProc(ih, msg, wp, lp, result))
+ return 1;
+
+ iupwinMenuDialogProc(ih, msg, wp, lp);
+
+ switch (msg)
+ {
+ case WM_GETMINMAXINFO:
+ {
+ if (winDialogCheckMinMaxInfo(ih, (MINMAXINFO*)lp))
+ {
+ *result = 0;
+ return 1;
+ }
+ break;
+ }
+ case WM_MOVE:
+ {
+ IFnii cb = (IFnii)IupGetCallback(ih, "MOVE_CB");
+ RECT rect;
+ GetWindowRect(ih->handle, &rect); /* ignore LPARAM because they are the clientpos and not X/Y */
+ if (cb) cb(ih, rect.left, rect.top);
+ break;
+ }
+ case WM_SIZE:
+ {
+ if (ih->data->ignore_resize)
+ break;
+
+ switch(wp)
+ {
+ case SIZE_MINIMIZED:
+ {
+ if (ih->data->show_state != IUP_MINIMIZE)
+ {
+ IFni show_cb = (IFni)IupGetCallback(ih, "SHOW_CB");
+ if (show_cb && show_cb(ih, IUP_MINIMIZE) == IUP_CLOSE)
+ IupExitLoop();
+ ih->data->show_state = IUP_MINIMIZE;
+ }
+ break;
+ }
+ case SIZE_MAXIMIZED:
+ {
+ if (ih->data->show_state != IUP_MAXIMIZE)
+ {
+ IFni show_cb = (IFni)IupGetCallback(ih, "SHOW_CB");
+ if (show_cb && show_cb(ih, IUP_MAXIMIZE) == IUP_CLOSE)
+ IupExitLoop();
+ ih->data->show_state = IUP_MAXIMIZE;
+ }
+
+ winDialogResize(ih, LOWORD(lp), HIWORD(lp));
+ break;
+ }
+ case SIZE_RESTORED:
+ {
+ if (ih->data->show_state == IUP_MAXIMIZE || ih->data->show_state == IUP_MINIMIZE)
+ {
+ IFni show_cb = (IFni)IupGetCallback(ih, "SHOW_CB");
+ if (show_cb && show_cb(ih, IUP_RESTORE) == IUP_CLOSE)
+ IupExitLoop();
+ ih->data->show_state = IUP_RESTORE;
+ }
+
+ winDialogResize(ih, LOWORD(lp), HIWORD(lp));
+ break;
+ }
+ }
+
+ break;
+ }
+ case WM_USER+IWIN_TRAY_NOTIFICATION:
+ {
+ int dclick = 0;
+ int button = 0;
+ int pressed = 0;
+
+ switch (lp)
+ {
+ case WM_LBUTTONDOWN:
+ pressed = 1;
+ button = 1;
+ break;
+ case WM_MBUTTONDOWN:
+ pressed = 1;
+ button = 2;
+ break;
+ case WM_RBUTTONDOWN:
+ pressed = 1;
+ button = 3;
+ break;
+ case WM_LBUTTONDBLCLK:
+ dclick = 1;
+ button = 1;
+ break;
+ case WM_MBUTTONDBLCLK:
+ dclick = 1;
+ button = 2;
+ break;
+ case WM_RBUTTONDBLCLK:
+ dclick = 1;
+ button = 3;
+ break;
+ case WM_LBUTTONUP:
+ button = 1;
+ break;
+ case WM_MBUTTONUP:
+ button = 2;
+ break;
+ case WM_RBUTTONUP:
+ button = 3;
+ break;
+ }
+
+ if (button != 0)
+ {
+ IFniii cb = (IFniii)IupGetCallback(ih, "TRAYCLICK_CB");
+ if (cb && cb(ih, button, pressed, dclick) == IUP_CLOSE)
+ IupExitLoop();
+ }
+
+ break;
+ }
+ case WM_CLOSE:
+ {
+ Icallback cb = IupGetCallback(ih, "CLOSE_CB");
+ if (cb)
+ {
+ int ret = cb(ih);
+ if (ret == IUP_IGNORE)
+ {
+ *result = 0;
+ return 1;
+ }
+ if (ret == IUP_CLOSE)
+ IupExitLoop();
+ }
+
+ /* child mdi is automatically destroyed */
+ if (iupAttribGetBoolean(ih, "MDICHILD"))
+ IupDestroy(ih);
+ else
+ {
+ if (!winDialogMDICloseChildren(ih))
+ {
+ *result = 0;
+ return 1;
+ }
+
+ IupHide(ih); /* IUP default processing */
+ }
+
+ *result = 0;
+ return 1;
+ }
+ case WM_SETCURSOR:
+ {
+ if (ih->handle == (HWND)wp && LOWORD(lp)==HTCLIENT)
+ {
+ HCURSOR hCur = (HCURSOR)iupAttribGet(ih, "_IUPWIN_HCURSOR");
+ if (hCur)
+ {
+ SetCursor(hCur);
+ *result = 1;
+ return 1;
+ }
+ else if (iupAttribGet(ih, "CURSOR"))
+ {
+ SetCursor(NULL);
+ *result = 1;
+ return 1;
+ }
+ }
+ break;
+ }
+ case WM_ERASEBKGND:
+ {
+ HBITMAP hBitmap = (HBITMAP)iupAttribGet(ih, "_IUPWIN_BACKGROUND_BITMAP");
+ if (hBitmap)
+ {
+ RECT rect;
+ HDC hdc = (HDC)wp;
+
+ HBRUSH hBrush = CreatePatternBrush(hBitmap);
+ GetClientRect(ih->handle, &rect);
+ FillRect(hdc, &rect, hBrush);
+ DeleteObject(hBrush);
+
+ /* return non zero value */
+ *result = 1;
+ return 1;
+ }
+ else
+ {
+ unsigned char r, g, b;
+ char* color = iupAttribGet(ih, "_IUPWIN_BACKGROUND_COLOR");
+ if (iupStrToRGB(color, &r, &g, &b))
+ {
+ RECT rect;
+ HDC hdc = (HDC)wp;
+
+ SetDCBrushColor(hdc, RGB(r,g,b));
+ GetClientRect(ih->handle, &rect);
+ FillRect(hdc, &rect, (HBRUSH)GetStockObject(DC_BRUSH));
+
+ /* return non zero value */
+ *result = 1;
+ return 1;
+ }
+ }
+ break;
+ }
+ case WM_DESTROY:
+ {
+ /* Since WM_CLOSE changed the Windows default processing */
+ /* WM_DESTROY is NOT received by IupDialogs */
+ /* Except when they are children of other IupDialogs and the parent is destroyed. */
+ /* So we have to destroy the child dialog. */
+ /* The application is responsable for destroying the children before this happen. */
+ IupDestroy(ih);
+ break;
+ }
+ }
+
+ if (msg == (UINT)WM_HELPMSG)
+ {
+ Ihandle* child = NULL;
+ DWORD* struct_ptr = (DWORD*)lp;
+ if (*struct_ptr == sizeof(CHOOSECOLOR))
+ {
+ CHOOSECOLOR* choosecolor = (CHOOSECOLOR*)lp;
+ child = (Ihandle*)choosecolor->lCustData;
+ }
+ if (*struct_ptr == sizeof(CHOOSEFONT))
+ {
+ CHOOSEFONT* choosefont = (CHOOSEFONT*)lp;
+ child = (Ihandle*)choosefont->lCustData;
+ }
+
+ if (child)
+ {
+ Icallback cb = IupGetCallback(child, "HELP_CB");
+ if (cb && cb(child) == IUP_CLOSE)
+ EndDialog((HWND)iupAttribGet(child, "HWND"), IDCANCEL);
+ }
+ }
+
+ return 0;
+}
+
+static LRESULT CALLBACK winDialogProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
+{
+ LRESULT result;
+ Ihandle *ih = iupwinHandleGet(hwnd);
+ if (!ih)
+ {
+ /* the first time WM_GETMINMAXINFO is called, Ihandle is not associated yet */
+ if (msg == WM_GETMINMAXINFO && winMinMaxHandle)
+ {
+ if (winDialogCheckMinMaxInfo(winMinMaxHandle, (MINMAXINFO*)lp))
+ return 0;
+ }
+
+ return DefWindowProc(hwnd, msg, wp, lp);
+ }
+
+ if (winDialogBaseProc(ih, msg, wp, lp, &result))
+ return result;
+
+ return DefWindowProc(hwnd, msg, wp, lp);
+}
+
+static LRESULT CALLBACK winDialogMDIChildProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
+{
+ LRESULT result;
+ Ihandle *ih = iupwinHandleGet(hwnd);
+ if (!ih)
+ {
+ /* the first time WM_GETMINMAXINFO is called, Ihandle is not associated yet */
+ if (msg == WM_GETMINMAXINFO && winMinMaxHandle)
+ {
+ if (winDialogCheckMinMaxInfo(winMinMaxHandle, (MINMAXINFO*)lp))
+ return 0;
+ }
+
+ return DefMDIChildProc(hwnd, msg, wp, lp);
+ }
+
+ switch (msg)
+ {
+ case WM_MDIACTIVATE:
+ {
+ HWND hNewActive = (HWND)lp;
+ if (hNewActive == ih->handle)
+ {
+ Icallback cb = (Icallback)IupGetCallback(ih, "MDIACTIVATE_CB");
+ if (cb) cb(ih);
+ }
+ break;
+ }
+ }
+
+ if (winDialogBaseProc(ih, msg, wp, lp, &result))
+ return result;
+
+ return DefMDIChildProc(hwnd, msg, wp, lp);
+}
+
+static Ihandle* winDialogGetMdiChildId(Ihandle* ih, int mdi_child_id)
+{
+ int id, max_child_id, real_id = -1;
+ char name[50];
+ Ihandle* child;
+
+ max_child_id = iupAttribGetInt(ih, "_IUPWIN_MAX_MDI_ID");
+
+ for (id = 0; id < max_child_id; id++)
+ {
+ sprintf(name, "_IUPWIN_MDI_ID_[%d]", id);
+ child = (Ihandle*)iupAttribGet(ih, name);
+ if (iupObjectCheck(child))
+ {
+ real_id++;
+ if (real_id == mdi_child_id)
+ return child;
+ }
+ }
+
+ return NULL;
+}
+
+static LRESULT CALLBACK winDialogMDIFrameProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
+{
+ LRESULT result;
+ HWND hWndClient = NULL;
+ Ihandle *ih = iupwinHandleGet(hwnd);
+ if (!ih)
+ {
+ /* the first time WM_GETMINMAXINFO is called, Ihandle is not associated yet */
+ if (msg == WM_GETMINMAXINFO && winMinMaxHandle)
+ {
+ if (winDialogCheckMinMaxInfo(winMinMaxHandle, (MINMAXINFO*)lp))
+ return 0;
+ }
+
+ return DefFrameProc(hwnd, hWndClient, msg, wp, lp);
+ }
+
+ {
+ Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE");
+ if (client) hWndClient = client->handle;
+ }
+
+ if (winDialogBaseProc(ih, msg, wp, lp, &result))
+ return result;
+
+ switch (msg)
+ {
+ case WM_MENUCOMMAND:
+ {
+ int menuId = GetMenuItemID((HMENU)lp, (int)wp);
+ if (menuId >= IUP_MDICHILD_START && hWndClient)
+ {
+ Ihandle* child = winDialogGetMdiChildId(ih, menuId-IUP_MDICHILD_START);
+ if (child)
+ SendMessage(hWndClient, WM_MDIACTIVATE, (WPARAM)child->handle, 0);
+ break;
+ }
+ }
+ }
+
+
+ return DefFrameProc(hwnd, hWndClient, msg, wp, lp);
+}
+
+static void winDialogRegisterClass(int mdi)
+{
+ char* name;
+ WNDCLASS wndclass;
+ WNDPROC winproc;
+ ZeroMemory(&wndclass, sizeof(WNDCLASS));
+
+ if (mdi == 2)
+ {
+ name = "IupDialogMDIChild";
+ winproc = (WNDPROC)winDialogMDIChildProc;
+ }
+ else if (mdi == 1)
+ {
+ name = "IupDialogMDIFrame";
+ winproc = (WNDPROC)winDialogMDIFrameProc;
+ }
+ else
+ {
+ if (mdi == -1)
+ name = "IupDialogControl";
+ else
+ name = "IupDialog";
+ winproc = (WNDPROC)winDialogProc;
+ }
+
+ wndclass.hInstance = iupwin_hinstance;
+ wndclass.lpszClassName = name;
+ wndclass.lpfnWndProc = (WNDPROC)winproc;
+ wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
+
+ /* To use a standard system color, must increase the background-color value by one */
+ if (mdi == 1)
+ wndclass.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE+1);
+ else
+ wndclass.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
+
+ if (mdi == 0)
+ wndclass.style |= CS_SAVEBITS;
+
+ if (mdi == -1)
+ wndclass.style |= CS_HREDRAW | CS_VREDRAW;
+
+ RegisterClass(&wndclass);
+}
+
+
+/****************************************************************
+ dialog class functions
+****************************************************************/
+
+
+static int winDialogMapMethod(Ihandle* ih)
+{
+ InativeHandle* native_parent;
+ DWORD dwStyle = WS_CLIPSIBLINGS,
+ dwExStyle = 0;
+ int has_titlebar = 0,
+ has_border = 0;
+ char* classname = "IupDialog";
+
+ char* title = iupAttribGet(ih, "TITLE");
+ if (title)
+ has_titlebar = 1;
+
+ if (iupAttribGetBoolean(ih, "DIALOGFRAME"))
+ {
+ iupAttribSetStr(ih, "RESIZE", "NO");
+ iupAttribSetStr(ih, "MINBOX", "NO");
+ }
+
+ if (iupAttribGetBoolean(ih, "RESIZE"))
+ dwStyle |= WS_THICKFRAME;
+ else
+ iupAttribSetStr(ih, "MAXBOX", "NO"); /* Must also remove this to RESIZE=NO work */
+
+ if (iupAttribGetBoolean(ih, "MAXBOX"))
+ {
+ dwStyle |= WS_MAXIMIZEBOX;
+ has_titlebar = 1;
+ }
+
+ if (iupAttribGetBoolean(ih, "MINBOX"))
+ {
+ dwStyle |= WS_MINIMIZEBOX;
+ has_titlebar = 1;
+ }
+
+ if (iupAttribGetBoolean(ih, "MENUBOX"))
+ {
+ dwStyle |= WS_SYSMENU;
+ has_titlebar = 1;
+ }
+
+ if (iupAttribGetBoolean(ih, "BORDER") || has_titlebar)
+ has_border = 1;
+
+ if (iupAttribGetBoolean(ih, "MDICHILD"))
+ {
+ static int mdi_child_id = 0;
+ Ihandle *client;
+ char name[50];
+
+ /* must have a parent dialog (the mdi frame) */
+ Ihandle* parent = IupGetAttributeHandle(ih, "PARENTDIALOG");
+ if (!parent || !parent->handle)
+ return IUP_ERROR;
+
+ /* set when the mdi client is mapped */
+ client = (Ihandle*)iupAttribGet(parent, "MDICLIENT_HANDLE");
+ if (!client)
+ return IUP_ERROR;
+
+ /* store the mdi client handle in each mdi child also */
+ iupAttribSetStr(ih, "MDICLIENT_HANDLE", (char*)client);
+
+ sprintf(name, "_IUPWIN_MDI_ID_[%d]", mdi_child_id);
+ iupAttribSetStr(parent, name, (char*)ih);
+ mdi_child_id++;
+ iupAttribSetInt(parent, "_IUPWIN_MAX_MDI_ID", mdi_child_id);
+
+ classname = "IupDialogMDIChild";
+
+ /* The actual parent is the mdi client */
+ native_parent = client->handle;
+
+ dwStyle |= WS_CHILD;
+ if (has_titlebar)
+ dwStyle |= WS_CAPTION;
+ else if (has_border)
+ dwStyle |= WS_BORDER;
+
+ if (!IupGetName(ih))
+ iupAttribSetHandleName(ih);
+ }
+ else
+ {
+ native_parent = iupDialogGetNativeParent(ih);
+
+ if (native_parent)
+ {
+ dwStyle |= WS_POPUP;
+
+ if (has_titlebar)
+ dwStyle |= WS_CAPTION;
+ else if (has_border)
+ dwStyle |= WS_BORDER;
+ }
+ else
+ {
+ if (has_titlebar)
+ {
+ dwStyle |= WS_OVERLAPPED;
+ }
+ else
+ {
+ if (has_border)
+ dwStyle |= WS_POPUP | WS_BORDER;
+ else
+ dwStyle |= WS_POPUP;
+
+ dwExStyle |= WS_EX_NOACTIVATE; /* this will hide it from the taskbar */
+ }
+ }
+
+ if (iupAttribGet(ih, "MDIFRAME"))
+ classname = "IupDialogMDIFrame";
+ }
+
+ if (iupAttribGetBoolean(ih, "TOOLBOX") && native_parent)
+ dwExStyle |= WS_EX_TOOLWINDOW | WS_EX_WINDOWEDGE;
+
+ if (iupAttribGetBoolean(ih, "DIALOGFRAME") && native_parent)
+ dwExStyle |= WS_EX_DLGMODALFRAME; /* this will hide the MENUBOX but not the close button */
+
+ if (iupAttribGetBoolean(ih, "COMPOSITED"))
+ dwExStyle |= WS_EX_COMPOSITED;
+ else
+ dwStyle |= WS_CLIPCHILDREN;
+
+ if (iupAttribGetBoolean(ih, "HELPBUTTON"))
+ dwExStyle |= WS_EX_CONTEXTHELP;
+
+ if (iupAttribGetBoolean(ih, "CONTROL") && native_parent)
+ {
+ /* TODO: this were used by LuaCom to create embeded controls,
+ don't know if it is still working */
+ dwStyle = WS_CHILD | WS_TABSTOP | WS_CLIPCHILDREN;
+ classname = "IupDialogControl";
+ }
+
+ /* CreateWindowEx will send WM_GETMINMAXINFO before Ihandle is associated with HWND */
+ if (iupAttribGet(ih, "MINSIZE") || iupAttribGet(ih, "MAXSIZE"))
+ winMinMaxHandle = ih;
+
+ /* size will be updated in IupRefresh -> winDialogLayoutUpdate */
+ /* position will be updated in iupDialogShowXY */
+
+ if (iupAttribGetBoolean(ih, "MDICHILD"))
+ ih->handle = CreateMDIWindow(classname,
+ title, /* title */
+ dwStyle, /* style */
+ 0, /* x-position */
+ 0, /* y-position */
+ 100, /* horizontal size - set this to avoid size calculation problems */
+ 100, /* vertical size */
+ native_parent, /* owner window */
+ iupwin_hinstance, /* instance of app. */
+ 0); /* no creation parameters */
+ else
+ ih->handle = CreateWindowEx(dwExStyle, /* extended styles */
+ classname, /* class */
+ title, /* title */
+ dwStyle, /* style */
+ 0, /* x-position */
+ 0, /* y-position */
+ 100, /* horizontal size - set this to avoid size calculation problems */
+ 100, /* vertical size */
+ native_parent, /* owner window */
+ (HMENU)0, /* Menu or child-window identifier */
+ iupwin_hinstance, /* instance of app. */
+ NULL); /* no creation parameters */
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ /* associate HWND with Ihandle*, all Win32 controls must call this. */
+ iupwinHandleSet(ih);
+
+ if (iupStrEqual(classname, "IupDialogMDIChild")) /* hides the mdi child */
+ ShowWindow(ih->handle, SW_HIDE);
+
+ /* configure for DRAG&DROP */
+ if (IupGetCallback(ih, "DROPFILES_CB"))
+ iupAttribSetStr(ih, "DRAGDROP", "YES");
+
+ /* Reset attributes handled during creation that */
+ /* also can be changed later, and can be consulted from the native system. */
+ iupAttribSetStr(ih, "TITLE", NULL);
+ iupAttribSetStr(ih, "BORDER", NULL);
+
+ /* Ignore VISIBLE before mapping */
+ iupAttribSetStr(ih, "VISIBLE", NULL);
+
+ /* Set the default CmdShow for ShowWindow */
+ ih->data->cmd_show = SW_SHOWNORMAL;
+
+ return IUP_NOERROR;
+}
+
+static void winDialogUnMapMethod(Ihandle* ih)
+{
+ if (ih->data->menu)
+ {
+ ih->data->menu->handle = NULL; /* the dialog will destroy the native menu */
+ IupDestroy(ih->data->menu);
+ }
+
+ if (iupAttribGet(ih, "_IUPDLG_HASTRAY"))
+ winDialogSetTrayAttrib(ih, NULL);
+
+ /* remove the association before destroying */
+ iupwinHandleRemove(ih);
+
+ /* Destroys the window, so we can destroy the class */
+ if (iupAttribGetBoolean(ih, "MDICHILD"))
+ {
+ /* for MDICHILDs must send WM_MDIDESTROY, instead of calling DestroyWindow */
+ Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE");
+ SendMessage(client->handle, WM_MDIDESTROY, (WPARAM)ih->handle, 0);
+ }
+ else
+ DestroyWindow(ih->handle); /* this will destroy the Windows children also. */
+ /* but IupDestroy already destroyed the IUP children */
+ /* so it is safe to call DestroyWindow */
+}
+
+static void winDialogLayoutUpdateMethod(Ihandle *ih)
+{
+ if (ih->data->ignore_resize)
+ return;
+
+ ih->data->ignore_resize = 1;
+
+ /* for dialogs the position is not updated here */
+ SetWindowPos(ih->handle, 0, 0, 0, ih->currentwidth, ih->currentheight,
+ SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSENDCHANGING);
+
+ ih->data->ignore_resize = 0;
+}
+
+static void winDialogReleaseMethod(Iclass* ic)
+{
+ (void)ic;
+ if (iupwinClassExist("IupDialog"))
+ {
+ UnregisterClass("IupDialog", iupwin_hinstance);
+ UnregisterClass("IupDialogControl", iupwin_hinstance);
+ UnregisterClass("IupDialogMDIChild", iupwin_hinstance);
+ UnregisterClass("IupDialogMDIFrame", iupwin_hinstance);
+ }
+}
+
+
+
+/****************************************************************************
+ Attributes
+****************************************************************************/
+
+
+static int winDialogSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ if (iupStrToRGB(value, &r, &g, &b))
+ {
+ iupAttribStoreStr(ih, "_IUPWIN_BACKGROUND_COLOR", value);
+ iupAttribSetStr(ih, "_IUPWIN_BACKGROUND_BITMAP", NULL);
+ RedrawWindow(ih->handle, NULL, NULL, RDW_ERASE|RDW_ERASENOW); /* force a WM_ERASEBKGND now */
+ return 1;
+ }
+ return 0;
+}
+
+static int winDialogSetBackgroundAttrib(Ihandle* ih, const char* value)
+{
+ if (winDialogSetBgColorAttrib(ih, value))
+ return 1;
+ else
+ {
+ HBITMAP hBitmap = iupImageGetImage(value, ih, 0);
+ if (hBitmap)
+ {
+ iupAttribSetStr(ih, "_IUPWIN_BACKGROUND_COLOR", NULL);
+ iupAttribSetStr(ih, "_IUPWIN_BACKGROUND_BITMAP", (char*)hBitmap);
+ RedrawWindow(ih->handle, NULL, NULL, RDW_ERASE|RDW_ERASENOW); /* force a WM_ERASEBKGND now */
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+static HWND iupwin_mdifirst = NULL;
+static HWND iupwin_mdinext = NULL;
+
+static char* winDialogGetMdiActiveAttrib(Ihandle *ih)
+{
+ Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE");
+ if (client)
+ {
+ HWND hchild = (HWND)SendMessage(client->handle, WM_MDIGETACTIVE, 0, 0);
+ Ihandle* child = iupwinHandleGet(hchild);
+ if (child)
+ {
+ iupwin_mdinext = NULL;
+ iupwin_mdifirst = hchild;
+ return IupGetName(child);
+ }
+ }
+
+ iupwin_mdifirst = NULL;
+ iupwin_mdinext = NULL;
+ return NULL;
+}
+
+static char* winDialogGetMdiNextAttrib(Ihandle *ih)
+{
+ Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE");
+ if (client)
+ {
+ Ihandle* child;
+ HWND hchild = iupwin_mdinext? iupwin_mdinext: iupwin_mdifirst;
+
+ /* Skip the icon title windows */
+ while (hchild && GetWindow (hchild, GW_OWNER))
+ hchild = GetWindow(hchild, GW_HWNDNEXT);
+
+ if (!hchild || hchild == iupwin_mdifirst)
+ {
+ iupwin_mdinext = NULL;
+ return NULL;
+ }
+
+ child = iupwinHandleGet(hchild);
+ if (child)
+ {
+ iupwin_mdinext = hchild;
+ return IupGetName(child);
+ }
+ }
+
+ iupwin_mdinext = NULL;
+ return NULL;
+}
+
+/* define this here, so we do not need to define _WIN32_WINNT=0x0500 */
+#ifndef WS_EX_LAYERED
+#define WS_EX_LAYERED 0x00080000
+#endif
+
+#ifndef LWA_ALPHA
+#define LWA_ALPHA 0x00000002
+#endif
+
+typedef BOOL (WINAPI*winSetLayeredWindowAttributes)(
+ HWND hwnd,
+ COLORREF crKey,
+ BYTE bAlpha,
+ DWORD dwFlags);
+
+static int winDialogSetOpacityAttrib(Ihandle *ih, const char *value)
+{
+ DWORD dwExStyle = GetWindowLong(ih->handle, GWL_EXSTYLE);
+ if (!value)
+ {
+ if (dwExStyle & WS_EX_LAYERED)
+ {
+ dwExStyle &= ~WS_EX_LAYERED; /* remove the style */
+ SetWindowLong(ih->handle, GWL_EXSTYLE, dwExStyle);
+ RedrawWindow(ih->handle, NULL, NULL, RDW_ERASE|RDW_INVALIDATE|RDW_FRAME|RDW_ALLCHILDREN); /* invalidate everything and all children */
+ }
+ return 0;
+ }
+
+ if (!(dwExStyle & WS_EX_LAYERED))
+ {
+ dwExStyle |= WS_EX_LAYERED; /* add the style */
+ SetWindowLong(ih->handle, GWL_EXSTYLE, dwExStyle);
+ }
+
+ {
+ static winSetLayeredWindowAttributes mySetLayeredWindowAttributes = NULL;
+
+ int opacity;
+ if (!iupStrToInt(value, &opacity))
+ return 0;
+
+ if (!mySetLayeredWindowAttributes)
+ {
+ HMODULE hinstDll = LoadLibrary("user32.dll");
+ if (hinstDll)
+ mySetLayeredWindowAttributes = (winSetLayeredWindowAttributes)GetProcAddress(hinstDll, "SetLayeredWindowAttributes");
+ }
+
+ if (mySetLayeredWindowAttributes)
+ mySetLayeredWindowAttributes(ih->handle, 0, (BYTE)opacity, LWA_ALPHA);
+ }
+
+ RedrawWindow(ih->handle, NULL, NULL, RDW_ERASE|RDW_INVALIDATE|RDW_FRAME|RDW_ALLCHILDREN); /* invalidate everything and all children */
+ return 1;
+}
+
+static int winDialogSetMdiArrangeAttrib(Ihandle *ih, const char *value)
+{
+ Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE");
+ if (client)
+ {
+ UINT msg = 0;
+ WPARAM wp = 0;
+
+ if (iupStrEqualNoCase(value, "TILEHORIZONTAL"))
+ {
+ msg = WM_MDITILE;
+ wp = MDITILE_HORIZONTAL;
+ }
+ else if (iupStrEqualNoCase(value, "TILEVERTICAL"))
+ {
+ msg = WM_MDITILE;
+ wp = MDITILE_VERTICAL;
+ }
+ else if (iupStrEqualNoCase(value, "CASCADE"))
+ msg = WM_MDICASCADE;
+ else if (iupStrEqualNoCase(value, "ICON"))
+ msg = WM_MDIICONARRANGE;
+
+ if (msg)
+ SendMessage(client->handle, msg, wp, 0);
+ }
+ return 0;
+}
+
+static int winDialogSetMdiActivateAttrib(Ihandle *ih, const char *value)
+{
+ Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE");
+ if (client)
+ {
+ Ihandle* child = IupGetHandle(value);
+ if (child)
+ SendMessage(client->handle, WM_MDIACTIVATE, (WPARAM)child->handle, 0);
+ else
+ {
+ HWND hchild = (HWND)SendMessage(client->handle, WM_MDIGETACTIVE, 0, 0);
+ if (iupStrEqualNoCase(value, "NEXT"))
+ SendMessage(client->handle, WM_MDINEXT, (WPARAM)hchild, TRUE);
+ else if (iupStrEqualNoCase(value, "PREVIOUS"))
+ SendMessage(client->handle, WM_MDINEXT, (WPARAM)hchild, FALSE);
+ }
+ }
+ return 0;
+}
+
+static int winDialogSetMdiCloseAllAttrib(Ihandle *ih, const char *value)
+{
+ (void)value;
+ winDialogMDICloseChildren(ih);
+ return 0;
+}
+
+static void winDialogTrayMessage(HWND hWnd, DWORD dwMessage, HICON hIcon, PSTR pszTip)
+{
+ NOTIFYICONDATA tnd;
+ memset(&tnd, 0, sizeof(NOTIFYICONDATA));
+
+ tnd.cbSize = sizeof(NOTIFYICONDATA);
+ tnd.hWnd = hWnd;
+ tnd.uID = 1000;
+
+ if (dwMessage == NIM_ADD)
+ {
+ tnd.uFlags = NIF_MESSAGE;
+ tnd.uCallbackMessage = WM_USER+IWIN_TRAY_NOTIFICATION;
+ }
+ else if (dwMessage == NIM_MODIFY)
+ {
+ if (hIcon)
+ {
+ tnd.uFlags |= NIF_ICON;
+ tnd.hIcon = hIcon;
+ }
+
+ if (pszTip)
+ {
+ tnd.uFlags |= NIF_TIP;
+ lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip));
+ }
+ }
+
+ Shell_NotifyIcon(dwMessage, &tnd);
+}
+
+static int winDialogCheckTray(Ihandle *ih)
+{
+ if (iupAttribGet(ih, "_IUPDLG_HASTRAY"))
+ return 1;
+
+ if (iupAttribGetBoolean(ih, "TRAY"))
+ {
+ winDialogTrayMessage(ih->handle, NIM_ADD, NULL, NULL);
+ iupAttribSetStr(ih, "_IUPDLG_HASTRAY", "YES");
+ return 1;
+ }
+
+ return 0;
+}
+
+static int winDialogSetTrayAttrib(Ihandle *ih, const char *value)
+{
+ int tray = iupStrBoolean(value);
+ if (iupAttribGet(ih, "_IUPDLG_HASTRAY"))
+ {
+ if (!tray)
+ {
+ winDialogTrayMessage(ih->handle, NIM_DELETE, NULL, NULL);
+ iupAttribSetStr(ih, "_IUPDLG_HASTRAY", NULL);
+ }
+ }
+ else
+ {
+ if (tray)
+ {
+ winDialogTrayMessage(ih->handle, NIM_ADD, NULL, NULL);
+ iupAttribSetStr(ih, "_IUPDLG_HASTRAY", "YES");
+ }
+ }
+ return 1;
+}
+
+static int winDialogSetTrayTipAttrib(Ihandle *ih, const char *value)
+{
+ if (winDialogCheckTray(ih))
+ winDialogTrayMessage(ih->handle, NIM_MODIFY, NULL, (PSTR)value);
+ return 1;
+}
+
+static int winDialogSetTrayImageAttrib(Ihandle *ih, const char *value)
+{
+ if (winDialogCheckTray(ih))
+ {
+ HICON hIcon = (HICON)iupImageGetIcon(value);
+ if (hIcon)
+ winDialogTrayMessage(ih->handle, NIM_MODIFY, hIcon, NULL);
+ }
+ return 1;
+}
+
+static int winDialogSetBringFrontAttrib(Ihandle *ih, const char *value)
+{
+ if (iupStrBoolean(value))
+ SetForegroundWindow(ih->handle);
+ return 0;
+}
+
+static int winDialogSetTopMostAttrib(Ihandle *ih, const char *value)
+{
+ if (iupStrBoolean(value))
+ SetWindowPos(ih->handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
+ else
+ SetWindowPos(ih->handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
+ return 1;
+}
+
+static int winDialogSetIconAttrib(Ihandle* ih, const char *value)
+{
+ if (!value)
+ SendMessage(ih->handle, WM_SETICON, (WPARAM)ICON_BIG, (LPARAM)NULL);
+ else
+ {
+ HICON icon = iupImageGetIcon(value);
+ if (icon)
+ SendMessage(ih->handle, WM_SETICON, (WPARAM) ICON_BIG, (LPARAM)icon);
+ }
+
+ if (IsIconic(ih->handle))
+ RedrawWindow(ih->handle, NULL, NULL, RDW_INVALIDATE|RDW_ERASE|RDW_UPDATENOW); /* redraw the icon */
+ else
+ RedrawWindow(ih->handle, NULL, NULL, RDW_FRAME|RDW_UPDATENOW); /* only the frame needs to be redrawn */
+
+ return 1;
+}
+
+static int winDialogSetFullScreenAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ {
+ if (!iupAttribGet(ih, "_IUPWIN_FS_STYLE"))
+ {
+ int width, height;
+ LONG off_style, new_style;
+
+ BOOL visible = ShowWindow (ih->handle, SW_HIDE);
+
+ /* remove the decorations */
+ off_style = WS_BORDER | WS_THICKFRAME | WS_CAPTION |
+ WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU;
+ new_style = GetWindowLong(ih->handle, GWL_STYLE);
+ iupAttribSetStr(ih, "_IUPWIN_FS_STYLE", (char*)new_style);
+ new_style &= (~off_style);
+ SetWindowLong(ih->handle, GWL_STYLE, new_style);
+
+ /* save the previous decoration attributes */
+ iupAttribStoreStr(ih, "_IUPWIN_FS_MAXBOX", iupAttribGet(ih, "MAXBOX"));
+ iupAttribStoreStr(ih, "_IUPWIN_FS_MINBOX", iupAttribGet(ih, "MINBOX"));
+ iupAttribStoreStr(ih, "_IUPWIN_FS_MENUBOX",iupAttribGet(ih, "MENUBOX"));
+ iupAttribStoreStr(ih, "_IUPWIN_FS_RESIZE", iupAttribGet(ih, "RESIZE"));
+ iupAttribStoreStr(ih, "_IUPWIN_FS_BORDER", iupAttribGet(ih, "BORDER"));
+ iupAttribStoreStr(ih, "_IUPWIN_FS_TITLE", IupGetAttribute(ih, "TITLE")); /* must use IupGetAttribute to check from the native implementation */
+
+ /* save the previous position and size */
+ iupAttribStoreStr(ih, "_IUPWIN_FS_X", IupGetAttribute(ih, "X")); /* must use IupGetAttribute to check from the native implementation */
+ iupAttribStoreStr(ih, "_IUPWIN_FS_Y", IupGetAttribute(ih, "Y"));
+ iupAttribStoreStr(ih, "_IUPWIN_FS_SIZE", IupGetAttribute(ih, "RASTERSIZE"));
+
+ /* remove the decorations attributes */
+ iupAttribSetStr(ih, "MAXBOX", "NO");
+ iupAttribSetStr(ih, "MINBOX", "NO");
+ iupAttribSetStr(ih, "MENUBOX", "NO");
+ IupSetAttribute(ih, "TITLE", NULL);
+ iupAttribSetStr(ih, "RESIZE", "NO");
+ iupAttribSetStr(ih, "BORDER", "NO");
+
+ /* full screen size */
+ iupdrvGetFullSize(&width, &height);
+
+ SetWindowPos(ih->handle, HWND_TOP, 0, 0, width, height, SWP_FRAMECHANGED);
+
+ /* layout will be updated in WM_SIZE */
+ if (visible)
+ ShowWindow(ih->handle, SW_SHOW);
+ }
+ }
+ else
+ {
+ LONG style = (LONG)iupAttribGet(ih, "_IUPWIN_FS_STYLE");
+ if (style)
+ {
+ BOOL visible = ShowWindow(ih->handle, SW_HIDE);
+
+ /* restore the decorations attributes */
+ iupAttribStoreStr(ih, "MAXBOX", iupAttribGet(ih, "_IUPWIN_FS_MAXBOX"));
+ iupAttribStoreStr(ih, "MINBOX", iupAttribGet(ih, "_IUPWIN_FS_MINBOX"));
+ iupAttribStoreStr(ih, "MENUBOX",iupAttribGet(ih, "_IUPWIN_FS_MENUBOX"));
+ IupSetAttribute(ih, "TITLE", iupAttribGet(ih, "_IUPWIN_FS_TITLE")); /* TITLE is not stored in the HashTable */
+ iupAttribStoreStr(ih, "RESIZE", iupAttribGet(ih, "_IUPWIN_FS_RESIZE"));
+ iupAttribStoreStr(ih, "BORDER", iupAttribGet(ih, "_IUPWIN_FS_BORDER"));
+
+ /* restore the decorations */
+ SetWindowLong(ih->handle, GWL_STYLE, style);
+
+ /* restore position and size */
+ SetWindowPos(ih->handle, HWND_TOP,
+ iupAttribGetInt(ih, "_IUPWIN_FS_X"),
+ iupAttribGetInt(ih, "_IUPWIN_FS_Y"),
+ IupGetInt(ih, "_IUPWIN_FS_SIZE"),
+ IupGetInt2(ih, "_IUPWIN_FS_SIZE"), 0);
+
+ /* layout will be updated in WM_SIZE */
+ if (visible)
+ ShowWindow(ih->handle, SW_SHOW);
+
+ /* remove auxiliar attributes */
+ iupAttribSetStr(ih, "_IUPWIN_FS_MAXBOX", NULL);
+ iupAttribSetStr(ih, "_IUPWIN_FS_MINBOX", NULL);
+ iupAttribSetStr(ih, "_IUPWIN_FS_MENUBOX",NULL);
+ iupAttribSetStr(ih, "_IUPWIN_FS_TITLE", NULL);
+ iupAttribSetStr(ih, "_IUPWIN_FS_RESIZE", NULL);
+ iupAttribSetStr(ih, "_IUPWIN_FS_BORDER", NULL);
+
+ iupAttribSetStr(ih, "_IUPWIN_FS_X", NULL);
+ iupAttribSetStr(ih, "_IUPWIN_FS_Y", NULL);
+ iupAttribSetStr(ih, "_IUPWIN_FS_SIZE", NULL);
+
+ iupAttribSetStr(ih, "_IUPWIN_FS_STYLE", NULL);
+ }
+ }
+ return 1;
+}
+
+
+void iupdrvDialogInitClass(Iclass* ic)
+{
+ if (!iupwinClassExist("IupDialog"))
+ {
+ winDialogRegisterClass(0);
+ winDialogRegisterClass(1);
+ winDialogRegisterClass(2);
+ winDialogRegisterClass(-1);
+
+ WM_HELPMSG = RegisterWindowMessage(HELPMSGSTRING);
+ }
+
+ /* Driver Dependent Class functions */
+ ic->Map = winDialogMapMethod;
+ ic->UnMap = winDialogUnMapMethod;
+ ic->LayoutUpdate = winDialogLayoutUpdateMethod;
+ ic->Release = winDialogReleaseMethod;
+
+ /* Callback Windows Only*/
+ iupClassRegisterCallback(ic, "MDIACTIVATE_CB", "");
+
+ /* Callback Windows and GTK Only */
+ iupClassRegisterCallback(ic, "TRAYCLICK_CB", "iii");
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, winDialogSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "TITLE", iupdrvBaseGetTitleAttrib, iupdrvBaseSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* Base Container */
+ iupClassRegisterAttribute(ic, "CLIENTSIZE", iupdrvBaseGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT);
+
+ /* IupDialog only */
+ iupClassRegisterAttribute(ic, "BACKGROUND", NULL, winDialogSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ICON", NULL, winDialogSetIconAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FULLSCREEN", NULL, winDialogSetFullScreenAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SAVEUNDER", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MINSIZE", NULL, NULL, IUPAF_SAMEASSYSTEM, "1x1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MAXSIZE", NULL, NULL, IUPAF_SAMEASSYSTEM, "65535x65535", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* IupDialog Windows Only */
+ iupClassRegisterAttribute(ic, "HWND", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MDIARRANGE", NULL, winDialogSetMdiArrangeAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MDIACTIVATE", NULL, winDialogSetMdiActivateAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MDICLOSEALL", NULL, winDialogSetMdiCloseAllAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MDIACTIVE", winDialogGetMdiActiveAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MDINEXT", winDialogGetMdiNextAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "OPACITY", NULL, winDialogSetOpacityAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "LAYERALPHA", NULL, winDialogSetOpacityAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "BRINGFRONT", NULL, winDialogSetBringFrontAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "COMPOSITED", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED);
+
+ iupClassRegisterAttribute(ic, "CONTROL", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "HELPBUTTON", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TOOLBOX", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MDIFRAME", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MDICLIENT", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MDIMENU", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MDICHILD", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+
+ /* IupDialog Windows and GTK Only */
+ iupClassRegisterAttribute(ic, "TOPMOST", NULL, winDialogSetTopMostAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupwinSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TRAY", NULL, winDialogSetTrayAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TRAYIMAGE", NULL, winDialogSetTrayImageAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TRAYTIP", NULL, winDialogSetTrayTipAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/win/iupwin_draw.c b/iup/src/win/iupwin_draw.c
new file mode 100755
index 0000000..4a810e6
--- /dev/null
+++ b/iup/src/win/iupwin_draw.c
@@ -0,0 +1,328 @@
+/** \file
+ * \brief Draw Functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501
+#include <windows.h>
+#include <uxtheme.h>
+#include <tmschema.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+
+#include "iup.h"
+
+#include "iup_attrib.h"
+#include "iup_class.h"
+#include "iup_str.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_info.h"
+#include "iupwin_draw.h"
+
+
+#ifndef TABP_AEROWIZARDBODY
+#define TABP_AEROWIZARDBODY 11 /* manually added definition */
+#endif
+
+#ifndef TMT_FILLCOLORHINT
+#define TMT_FILLCOLORHINT 3821
+#endif
+#ifndef TMT_TEXTCOLOR
+#define TMT_TEXTCOLOR 3823
+#endif
+
+
+typedef HTHEME (STDAPICALLTYPE *_winThemeOpenData)(HWND hwnd, LPCWSTR pszClassList);
+typedef HRESULT (STDAPICALLTYPE *_winThemeCloseData)(HTHEME hTheme);
+typedef HRESULT (STDAPICALLTYPE *_winThemeDrawBackground)(HTHEME hTheme, HDC hDC, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect);
+typedef HRESULT (STDAPICALLTYPE *_winThemeGetColor)(HTHEME hTheme, int iPartId, int iStateId, int iPropId, COLORREF *pColor);
+
+static _winThemeOpenData winThemeOpenData = NULL;
+static _winThemeCloseData winThemeCloseData = NULL;
+static _winThemeDrawBackground winThemeDrawBackground = NULL;
+static _winThemeGetColor winThemeGetColor = NULL;
+
+typedef BOOL (CALLBACK* _winAlphaBlendFunc)( HDC hdcDest,
+ int xoriginDest, int yoriginDest,
+ int wDest, int hDest, HDC hdcSrc,
+ int xoriginSrc, int yoriginSrc,
+ int wSrc, int hSrc,
+ BLENDFUNCTION ftn);
+static _winAlphaBlendFunc winAlphaBlend = NULL;
+
+static int winDrawThemeEnabled(void)
+{
+ return winThemeOpenData? 1: 0;
+}
+
+void iupwinDrawText(HDC hDC, const char* text, int x, int y, int width, int height, HFONT hFont, COLORREF fgcolor, int style)
+{
+ COLORREF oldcolor;
+ RECT rect;
+ HFONT hOldFont = SelectObject(hDC, hFont);
+
+ rect.left = x;
+ rect.top = y;
+ rect.right = x+width;
+ rect.bottom = y+height;
+
+ SetTextAlign(hDC, TA_TOP|TA_LEFT);
+ SetBkMode(hDC, TRANSPARENT);
+ oldcolor = SetTextColor(hDC, fgcolor);
+
+ DrawText(hDC, text, -1, &rect, style|DT_NOCLIP);
+
+ SelectObject(hDC, hOldFont);
+ SetTextColor(hDC, oldcolor);
+ SetBkMode(hDC, OPAQUE);
+}
+
+void iupwinDrawBitmap(HDC hDC, HBITMAP hBitmap, HBITMAP hMask, int x, int y, int width, int height, int bpp)
+{
+ HDC hMemDC = CreateCompatibleDC(hDC);
+ SelectObject(hMemDC, hBitmap);
+
+ if (bpp == 32 && winAlphaBlend)
+ {
+ BLENDFUNCTION blendfunc;
+ blendfunc.BlendOp = AC_SRC_OVER;
+ blendfunc.BlendFlags = 0;
+ blendfunc.SourceConstantAlpha = 0xFF;
+ blendfunc.AlphaFormat = AC_SRC_ALPHA;
+
+ winAlphaBlend(hDC, x, y, width, height,
+ hMemDC, 0, 0, width, height,
+ blendfunc);
+ }
+ else if (bpp == 8 && hMask)
+ MaskBlt(hDC, x, y, width, height,
+ hMemDC, 0, 0,
+ hMask, 0, 0, MAKEROP4(SRCCOPY, 0xAA0000));
+ else
+ BitBlt(hDC, x, y, width, height,
+ hMemDC, 0, 0,
+ SRCCOPY);
+
+
+ DeleteDC(hMemDC);
+}
+
+void iupwinDrawInit(void)
+{
+ if (!winAlphaBlend)
+ {
+ HINSTANCE lib = LoadLibrary("Msimg32");
+ if (lib)
+ winAlphaBlend = (_winAlphaBlendFunc)GetProcAddress(lib, "AlphaBlend");
+ }
+
+ if (!winThemeOpenData && iupwin_comctl32ver6)
+ {
+ HMODULE hinstDll = LoadLibrary("uxtheme.dll");
+ if (hinstDll)
+ {
+ winThemeOpenData = (_winThemeOpenData)GetProcAddress(hinstDll, "OpenThemeData");
+ winThemeCloseData = (_winThemeCloseData)GetProcAddress(hinstDll, "CloseThemeData");
+ winThemeDrawBackground = (_winThemeDrawBackground)GetProcAddress(hinstDll, "DrawThemeBackground");
+ winThemeGetColor = (_winThemeGetColor)GetProcAddress(hinstDll, "GetThemeColor");
+ }
+ }
+}
+
+static int winDrawGetThemeStateId(int itemState)
+{
+ if (itemState & ODS_DISABLED)
+ return PBS_DISABLED;
+ else if (itemState & ODS_SELECTED)
+ return PBS_PRESSED;
+ else if (itemState & ODS_HOTLIGHT)
+ return PBS_HOT;
+ else if (itemState & ODS_DEFAULT)
+ return PBS_DEFAULTED;
+ else
+ return PBS_NORMAL;
+}
+
+static int winDrawThemeButtonBorder(HWND hWnd, HDC hDC, RECT *rect, UINT itemState)
+{
+ int iStateId;
+ HTHEME hTheme;
+
+ if (!winDrawThemeEnabled())
+ return 0;
+
+ hTheme = winThemeOpenData(hWnd, L"BUTTON");
+ if (!hTheme)
+ return 0;
+
+ iStateId = winDrawGetThemeStateId(itemState);
+
+ winThemeDrawBackground(hTheme, hDC, BP_PUSHBUTTON, iStateId, rect, NULL);
+
+ winThemeCloseData(hTheme);
+ return 1;
+}
+
+void iupwinDrawThemeFrameBorder(HWND hWnd, HDC hDC, RECT *rect, UINT itemState)
+{
+ int iStateId = GBS_NORMAL;
+ HTHEME hTheme;
+
+ if (!winDrawThemeEnabled())
+ return;
+
+ hTheme = winThemeOpenData(hWnd, L"BUTTON");
+ if (!hTheme)
+ return;
+
+ if (itemState & ODS_DISABLED)
+ iStateId = GBS_DISABLED;
+
+ winThemeDrawBackground(hTheme, hDC, BP_GROUPBOX, iStateId, rect, NULL);
+
+ winThemeCloseData(hTheme);
+}
+
+int iupwinDrawGetThemeTabsBgColor(HWND hWnd, COLORREF *color)
+{
+ HTHEME hTheme;
+ HRESULT ret;
+
+ if (!winDrawThemeEnabled())
+ return 0;
+
+ hTheme = winThemeOpenData(hWnd, L"TAB");
+ if (!hTheme)
+ return 0;
+
+ if (iupwinIsVista())
+ ret = winThemeGetColor(hTheme, TABP_AEROWIZARDBODY, TIS_NORMAL, TMT_FILLCOLORHINT, color);
+ else
+ ret = winThemeGetColor(hTheme, TABP_BODY, TIS_NORMAL, TMT_FILLCOLORHINT, color);
+
+ winThemeCloseData(hTheme);
+ return (ret == S_OK)? 1: 0;
+}
+
+int iupwinDrawGetThemeButtonBgColor(HWND hWnd, COLORREF *color)
+{
+ HTHEME hTheme;
+ HRESULT ret;
+
+ if (!winDrawThemeEnabled())
+ return 0;
+
+ hTheme = winThemeOpenData(hWnd, L"BUTTON");
+ if (!hTheme)
+ return 0;
+
+ ret = winThemeGetColor(hTheme, BP_PUSHBUTTON, PBS_NORMAL, TMT_FILLCOLORHINT, color);
+
+ winThemeCloseData(hTheme);
+ return (ret == S_OK)? 1: 0;
+}
+
+int iupwinDrawGetThemeFrameFgColor(HWND hWnd, COLORREF *color)
+{
+ HTHEME hTheme;
+ HRESULT ret;
+
+ if (!winDrawThemeEnabled())
+ return 0;
+
+ hTheme = winThemeOpenData(hWnd, L"BUTTON");
+ if (!hTheme)
+ return 0;
+
+ ret = winThemeGetColor(hTheme, BP_GROUPBOX, GBS_NORMAL, TMT_TEXTCOLOR, color);
+
+ winThemeCloseData(hTheme);
+ return (ret == S_OK)? 1: 0;
+}
+
+static int winDrawGetStateId(int itemState)
+{
+ if (itemState & ODS_DISABLED)
+ return DFCS_INACTIVE;
+ else if (itemState & ODS_SELECTED)
+ return DFCS_PUSHED;
+ else if (itemState & ODS_HOTLIGHT)
+ return DFCS_HOT;
+ else
+ return 0;
+}
+
+void iupwinDrawButtonBorder(HWND hWnd, HDC hDC, RECT *rect, UINT itemState)
+{
+ if (!winDrawThemeButtonBorder(hWnd, hDC, rect, itemState))
+ {
+ DrawFrameControl(hDC, rect, DFC_BUTTON, DFCS_BUTTONPUSH | winDrawGetStateId(itemState));
+ if (itemState & ODS_DEFAULT) /* if a button has the focus, must draw the default button frame */
+ FrameRect(hDC, rect, (HBRUSH)GetStockObject(BLACK_BRUSH));
+ }
+}
+
+void iupdrvDrawFocusRect(Ihandle* ih, void* gc, int x, int y, int w, int h)
+{
+ HDC hDC = (HDC)gc;
+ RECT rect;
+ (void)ih;
+
+ rect.left = x;
+ rect.top = y;
+ rect.right = x+w;
+ rect.bottom = y+h;
+
+ DrawFocusRect(hDC, &rect);
+}
+
+void iupwinDrawRemoveTheme(HWND hwnd)
+{
+ typedef HRESULT (STDAPICALLTYPE *winSetWindowTheme)(HWND hwnd, LPCWSTR pszSubAppName, LPCWSTR pszSubIdList);
+ static winSetWindowTheme mySetWindowTheme = NULL;
+ if (!mySetWindowTheme)
+ {
+ HMODULE hinstDll = LoadLibrary("uxtheme.dll");
+ if (hinstDll)
+ mySetWindowTheme = (winSetWindowTheme)GetProcAddress(hinstDll, "SetWindowTheme");
+ }
+
+ if (mySetWindowTheme)
+ mySetWindowTheme(hwnd, L"", L"");
+}
+
+void iupwinDrawParentBackground(Ihandle* ih, HDC hDC, RECT* rect)
+{
+ unsigned char r=0, g=0, b=0;
+ char* color = iupBaseNativeParentGetBgColorAttrib(ih);
+ iupStrToRGB(color, &r, &g, &b);
+ SetDCBrushColor(hDC, RGB(r,g,b));
+ FillRect(hDC, rect, (HBRUSH)GetStockObject(DC_BRUSH));
+}
+
+HDC iupwinDrawCreateBitmapDC(iupwinBitmapDC *bmpDC, HDC hDC, int w, int h)
+{
+ bmpDC->w = w;
+ bmpDC->h = h;
+ bmpDC->hDC = hDC;
+
+ bmpDC->hBitmap = CreateCompatibleBitmap(bmpDC->hDC, w, h);
+ bmpDC->hBitmapDC = CreateCompatibleDC(bmpDC->hDC);
+ bmpDC->hOldBitmap = SelectObject(bmpDC->hBitmapDC, bmpDC->hBitmap);
+ return bmpDC->hBitmapDC;
+}
+
+void iupwinDrawDestroyBitmapDC(iupwinBitmapDC *bmpDC)
+{
+ BitBlt(bmpDC->hDC, 0, 0, bmpDC->w, bmpDC->h, bmpDC->hBitmapDC, 0, 0, SRCCOPY);
+ SelectObject(bmpDC->hBitmapDC, bmpDC->hOldBitmap);
+ DeleteObject(bmpDC->hBitmap);
+ DeleteDC(bmpDC->hBitmapDC);
+}
+
diff --git a/iup/src/win/iupwin_draw.h b/iup/src/win/iupwin_draw.h
new file mode 100755
index 0000000..c9a57e6
--- /dev/null
+++ b/iup/src/win/iupwin_draw.h
@@ -0,0 +1,47 @@
+/** \file
+ * \brief Draw Functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPWIN_DRAW_H
+#define __IUPWIN_DRAW_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void iupwinDrawInit(void);
+
+void iupwinDrawBitmap(HDC hDC, HBITMAP hBitmap, HBITMAP hMask, int x, int y, int width, int height, int bpp);
+void iupwinDrawText(HDC hDC, const char* text, int x, int y, int width, int height, HFONT hFont, COLORREF fgcolor, int style);
+
+void iupwinDrawParentBackground(Ihandle* ih, HDC hDC, RECT* rect);
+void iupwinDrawButtonBorder(HWND hWnd, HDC hDC, RECT *rect, UINT itemState);
+
+void iupwinDrawThemeFrameBorder(HWND hWnd, HDC hDC, RECT *rect, UINT itemState);
+int iupwinDrawGetThemeTabsBgColor(HWND hWnd, COLORREF *color);
+int iupwinDrawGetThemeButtonBgColor(HWND hWnd, COLORREF *color);
+int iupwinDrawGetThemeFrameFgColor(HWND hWnd, COLORREF *color);
+void iupwinDrawRemoveTheme(HWND hWnd);
+
+typedef struct _iupwinBitmapDC
+{
+ HBITMAP hBitmap, hOldBitmap;
+ HDC hBitmapDC, hDC;
+ int w, h;
+} iupwinBitmapDC;
+
+HDC iupwinDrawCreateBitmapDC(iupwinBitmapDC *bmpDC, HDC hDC, int w, int h);
+void iupwinDrawDestroyBitmapDC(iupwinBitmapDC *bmpDC);
+
+#ifndef ODS_HOTLIGHT /* Only defined if WINVER >= 0x0500 */
+#define ODS_HOTLIGHT 0x0040
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/win/iupwin_drv.h b/iup/src/win/iupwin_drv.h
new file mode 100755
index 0000000..3372c1a
--- /dev/null
+++ b/iup/src/win/iupwin_drv.h
@@ -0,0 +1,113 @@
+/** \file
+ * \brief Windows Driver
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPWIN_DRV_H
+#define __IUPWIN_DRV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef WS_EX_COMPOSITED
+#define WS_EX_COMPOSITED 0x02000000L /* it is defined only when _WIN32_WINNT >= 0x0501 */
+#endif
+
+
+/* global variables */
+/* declared where they are initialized */
+extern HINSTANCE iupwin_hinstance; /* winopen.c */
+extern HINSTANCE iupwin_dll_hinstance; /* winmain.c */
+extern int iupwin_comctl32ver6; /* winopen.c */
+
+void iupwinShowLastError(void);
+
+/* focus */
+void iupwinWmSetFocus(Ihandle *ih);
+
+/* key */
+int iupwinKeyEvent(Ihandle* ih, int wincode, int press);
+void iupwinButtonKeySetStatus(WORD keys, char* status, int doubleclick);
+void iupwinKeyEncode(int key, unsigned int *keyval, unsigned int *state);
+
+/* tips */
+void iupwinTipsGetDispInfo(LPARAM lp);
+
+/* font */
+char* iupwinGetHFontAttrib(Ihandle *ih);
+HFONT iupwinGetHFont(const char* value);
+char* iupwinFindHFont(HFONT hFont);
+
+/* menu */
+void iupwinMenuDialogProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp);
+
+/* common */
+
+/* Definition of a callback used to return the background brush of controls called "_IUPWIN_CTLCOLOR_CB". */
+typedef int (*IFctlColor)(Ihandle* ih, HDC hdc, LRESULT *result);
+
+/* Definition of a callback used to draw custom controls called "_IUPWIN_DRAWITEM_CB".
+ drawitem is a pointer to a DRAWITEMSTRUCT struct. */
+typedef void (*IFdrawItem)(Ihandle* ih, void* drawitem);
+
+/* Definition of a callback used to notify custom controls called "_IUPWIN_NOTIFY_CB".
+ msg_info is a pointer to a NMHDR struct. */
+typedef int (*IFnotify)(Ihandle* ih, void* msg_info, HRESULT *result);
+
+/* Definition of callback used for custom WinProc. Can return 0 or 1.
+ 0 = do default processing.
+ 1 = ABORT default processing and the result value should be returned.
+*/
+typedef int (*IwinProc)(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result);
+
+/* Base WinProc used by all native elements. Configure base message handling
+ and custom IwinProc using "_IUPWIN_CTRLPROC_CB" callback. */
+LRESULT CALLBACK iupwinBaseWinProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp);
+
+/* Base IwinProc callback used by native controls. */
+int iupwinBaseProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result);
+
+/* Base IwinProc callback used by native containers.
+ Handle messages that are sent to the parent Window. */
+int iupwinBaseContainerProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result);
+
+/* Creates the Window with native parent and child ID, associate HWND with Ihandle*,
+ and replace the WinProc by iupwinBaseWinProc */
+int iupwinCreateWindowEx(Ihandle* ih, LPCSTR lpClassName, DWORD dwExStyle, DWORD dwStyle);
+
+int iupwinClassExist(const char* name);
+int iupwinGetColorRef(Ihandle *ih, char *name, COLORREF *color);
+int iupwinGetParentBgColor(Ihandle* ih, COLORREF* cr);
+void iupwinDropFiles(HDROP hDrop, Ihandle *ih);
+Ihandle* iupwinMenuGetItemHandle(HMENU hmenu, int menuId);
+Ihandle* iupwinMenuGetHandle(HMENU hMenu);
+int iupwinSetDragDropAttrib(Ihandle* ih, const char* value);
+void iupwinChangeProc(Ihandle *ih, WNDPROC new_proc);
+void iupwinMergeStyle(Ihandle* ih, DWORD old_mask, DWORD value);
+void iupwinSetStyle(Ihandle* ih, DWORD value, int set);
+WCHAR* iupwinStrChar2Wide(const char* str);
+int iupwinButtonUp(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp);
+int iupwinButtonDown(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp);
+int iupwinMouseMove(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp);
+char* iupwinGetClipboardText(Ihandle* ih);
+
+int iupwinGetScreenRes(void);
+/* 1 point = 1/72 inch */
+/* pixel = (point/72)*(pixel/inch) */
+#define IUPWIN_PT2PIXEL(_pt, _res) MulDiv(_pt, _res, 72) /* (((_pt)*(_res))/72) */
+#define IUPWIN_PIXEL2PT(_pixel, _res) MulDiv(_pixel, 72, _res) /* (((_pixel)*72)/(_res)) */
+
+
+/* child window identifier of the first MDI child window created,
+ should not conflict with any other command identifiers. */
+#define IUP_MDICHILD_START 100000000
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/win/iupwin_filedlg.c b/iup/src/win/iupwin_filedlg.c
new file mode 100755
index 0000000..da66b4b
--- /dev/null
+++ b/iup/src/win/iupwin_filedlg.c
@@ -0,0 +1,580 @@
+/** \file
+ * \brief IupFileDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+#include <commdlg.h>
+#include <shlobj.h>
+
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_dialog.h"
+#include "iup_drvinfo.h"
+
+#include "iupwin_drv.h"
+
+
+#ifndef OFN_FORCESHOWHIDDEN
+#define OFN_FORCESHOWHIDDEN 0x10000000 /* Show All files including System and hidden files */
+#endif
+
+#define MAX_FILENAME_SIZE 65000
+#define IUP_PREVIEWCANVAS 3000
+
+enum {IUP_DIALOGOPEN, IUP_DIALOGSAVE, IUP_DIALOGDIR};
+
+
+static void winFileDlgStrReplacePathSlash(char* name)
+{
+ /* check for "/" */
+ int i, len = strlen(name);
+ for (i = 0; i < len; i++)
+ {
+ if (name[i] == '/')
+ name[i] = '\\';
+ }
+}
+
+static INT CALLBACK winFileDlgBrowseCallback(HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
+{
+ (void)lParam;
+ if (uMsg == BFFM_INITIALIZED)
+ {
+ char* value;
+ Ihandle* ih = (Ihandle*)lpData;
+ ih->handle = hWnd;
+ iupDialogUpdatePosition(ih);
+ ih->handle = NULL; /* reset handle */
+ value = iupStrDup(iupAttribGet(ih, "DIRECTORY"));
+ if (value)
+ {
+ winFileDlgStrReplacePathSlash(value);
+ SendMessage(hWnd, BFFM_SETSELECTION, TRUE, (LPARAM)value);
+ free(value);
+ }
+ }
+ else if (uMsg == BFFM_SELCHANGED)
+ {
+ char* buffer = iupStrGetMemory(MAX_FILENAME_SIZE);
+ ITEMIDLIST* selecteditem = (ITEMIDLIST*)lParam;
+ buffer[0] = 0;
+ SHGetPathFromIDList(selecteditem, buffer);
+ if (buffer[0] == 0)
+ SendMessage(hWnd, BFFM_ENABLEOK, 0, (LPARAM)FALSE);
+ else
+ SendMessage(hWnd, BFFM_ENABLEOK, 0, (LPARAM)TRUE);
+ }
+ return 0;
+}
+
+static void winFileDlgGetFolder(Ihandle *ih)
+{
+ InativeHandle* parent = iupDialogGetNativeParent(ih);
+ BROWSEINFO browseinfo;
+ char buffer[MAX_PATH];
+ ITEMIDLIST *selecteditem;
+
+ if (!parent)
+ parent = GetActiveWindow();
+
+ ZeroMemory(&browseinfo, sizeof(BROWSEINFO));
+ browseinfo.lpszTitle = iupAttribGet(ih, "TITLE");
+ browseinfo.pszDisplayName = buffer;
+ browseinfo.lpfn = winFileDlgBrowseCallback;
+ browseinfo.lParam = (LPARAM)ih;
+ browseinfo.ulFlags = BIF_NEWDIALOGSTYLE;
+ browseinfo.hwndOwner = parent;
+
+ selecteditem = SHBrowseForFolder(&browseinfo);
+ if (!selecteditem)
+ {
+ iupAttribSetStr(ih, "VALUE", NULL);
+ iupAttribSetStr(ih, "STATUS", "-1");
+ }
+ else
+ {
+ SHGetPathFromIDList(selecteditem, buffer);
+ iupAttribStoreStr(ih, "VALUE", buffer);
+ iupAttribSetStr(ih, "STATUS", "0");
+ }
+
+ iupAttribSetStr(ih, "FILEEXIST", NULL);
+ iupAttribSetStr(ih, "FILTERUSED", NULL);
+}
+
+/************************************************************************************************/
+
+static UINT_PTR CALLBACK winFileDlgSimpleHook(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
+{
+ (void)wParam;
+ switch(uiMsg)
+ {
+ case WM_INITDIALOG:
+ {
+ OPENFILENAME* openfilename = (OPENFILENAME*)lParam;
+ Ihandle* ih = (Ihandle*)openfilename->lCustData;
+ ih->handle = GetParent(hWnd);
+ iupDialogUpdatePosition(ih);
+ ih->handle = NULL; /* reset handle */
+ SetWindowLongPtr(hWnd, DWLP_USER, (LONG_PTR)ih);
+ break;
+ }
+ case WM_DESTROY:
+ {
+ Ihandle* ih = (Ihandle*)GetWindowLongPtr(hWnd, DWLP_USER);
+ IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ if (cb) cb(ih, NULL, "FINISH");
+ break;
+ }
+ case WM_NOTIFY:
+ {
+ LPOFNOTIFY pofn = (LPOFNOTIFY)lParam;
+ Ihandle* ih = (Ihandle*)pofn->lpOFN->lCustData;
+ switch (pofn->hdr.code)
+ {
+ case CDN_INITDONE:
+ {
+ IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ if (cb) cb(ih, NULL, "INIT");
+ break;
+ }
+ case CDN_FILEOK:
+ case CDN_SELCHANGE:
+ {
+ IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ if (cb)
+ {
+ char* filename = iupStrGetMemory(MAX_FILENAME_SIZE);
+ if (CommDlg_OpenSave_GetFilePath(GetParent(hWnd), filename, MAX_FILENAME_SIZE) <= MAX_FILENAME_SIZE)
+ {
+ int ret;
+ char* file_msg;
+
+ if (!iupdrvIsFile(filename))
+ break;
+
+ if (pofn->hdr.code == CDN_FILEOK)
+ file_msg = "OK";
+ else
+ file_msg = "SELECT";
+
+ ret = cb(ih, filename, file_msg);
+ if (pofn->hdr.code == CDN_FILEOK && ret == IUP_IGNORE)
+ {
+ SetWindowLongPtr(hWnd, DWLP_MSGRESULT, 1L);
+ return 1; /* will refuse the file */
+ }
+ }
+ }
+ break;
+ }
+ case CDN_HELP:
+ {
+ Icallback cb = (Icallback) IupGetCallback(ih, "HELP_CB");
+ if (cb && cb(ih) == IUP_CLOSE)
+ EndDialog(GetParent(hWnd), IDCANCEL);
+ break;
+ }
+ }
+ break;
+ }
+ }
+ return 0;
+}
+
+static void winFileDlgSetPreviewCanvasPos(HWND hWnd, HWND hWndPreview)
+{
+ int height, width, ypos, xpos;
+ RECT rect, dlgrect;
+ HWND hWndFileList = GetDlgItem(GetParent(hWnd), 0x0471);
+ HWND hWndFileCombo = GetDlgItem(GetParent(hWnd), 0x047C);
+
+ /* GetWindowRect return screen coordinates, must convert to parent's client coordinates */
+ GetWindowRect(hWnd, &dlgrect);
+
+ GetWindowRect(hWndPreview, &rect);
+ ypos = rect.top - dlgrect.top; /* keep the same vertical position, at first time this is 0 */
+ height = rect.bottom-rect.top; /* keep the same height */
+
+ GetWindowRect(hWndFileList, &rect);
+ xpos = rect.left - dlgrect.left; /* horizontally align with file list at left */
+
+ GetWindowRect(hWndFileCombo, &rect);
+ width = (rect.right - dlgrect.left) - xpos; /* set size to align with file combo at right */
+
+ /* also position the child window that contains the template, must have room for the preview canvas */
+ if (ypos) /* first time does nothing */
+ SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, (rect.right - dlgrect.left), (dlgrect.bottom - dlgrect.top), SWP_NOMOVE|SWP_NOZORDER);
+
+ SetWindowPos(hWndPreview, HWND_TOP, xpos, ypos, width, height, SWP_NOZORDER);
+}
+
+static void winFileDlgUpdatePreviewGLCanvas(Ihandle* ih)
+{
+ Ihandle* glcanvas = IupGetAttributeHandle(ih, "PREVIEWGLCANVAS");
+ if (glcanvas)
+ {
+ iupAttribSetStr(glcanvas, "HWND", iupAttribGet(ih, "HWND"));
+ glcanvas->iclass->Map(glcanvas);
+ }
+}
+
+static UINT_PTR CALLBACK winFileDlgPreviewHook(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
+{
+ /* hWnd here is a handle to the child window that contains the template,
+ NOT the file dialog. Only the preview canvas is a child of this window. */
+
+ switch(uiMsg)
+ {
+ case WM_INITDIALOG:
+ {
+ OPENFILENAME* openfilename = (OPENFILENAME*)lParam;
+ Ihandle* ih = (Ihandle*)openfilename->lCustData;
+ HWND hWndPreview = GetDlgItem(hWnd, IUP_PREVIEWCANVAS);
+
+ ih->handle = GetParent(hWnd);
+ iupDialogUpdatePosition(ih);
+ ih->handle = NULL; /* reset handle */
+
+ if (hWndPreview)
+ {
+ RECT rect;
+
+ winFileDlgSetPreviewCanvasPos(hWnd, hWndPreview);
+
+ GetClientRect(hWndPreview, &rect);
+ iupAttribSetInt(ih, "PREVIEWWIDTH", rect.right - rect.left);
+ iupAttribSetInt(ih, "PREVIEWHEIGHT", rect.bottom - rect.top);
+ }
+ SetWindowLongPtr(hWnd, DWLP_USER, (LONG_PTR)ih);
+ iupAttribSetStr(ih, "WID", (char*)hWndPreview);
+ iupAttribSetStr(ih, "HWND", (char*)hWndPreview);
+ winFileDlgUpdatePreviewGLCanvas(ih);
+ break;
+ }
+ case WM_DRAWITEM:
+ {
+ if (wParam == IUP_PREVIEWCANVAS)
+ {
+ LPDRAWITEMSTRUCT lpDrawItem = (LPDRAWITEMSTRUCT)lParam;
+ Ihandle* ih = (Ihandle*)GetWindowLongPtr(hWnd, DWLP_USER);
+ IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ char* filename = iupStrGetMemory(MAX_FILENAME_SIZE);
+ iupAttribSetStr(ih, "PREVIEWDC", (char*)lpDrawItem->hDC);
+ if (CommDlg_OpenSave_GetFilePath(GetParent(hWnd), filename, MAX_FILENAME_SIZE) <= MAX_FILENAME_SIZE)
+ {
+ if (iupdrvIsFile(filename))
+ cb(ih, filename, "PAINT");
+ else
+ cb(ih, NULL, "PAINT");
+ }
+ else
+ cb(ih, NULL, "PAINT");
+ iupAttribSetStr(ih, "PREVIEWDC", NULL);
+ }
+ break;
+ }
+ case WM_SIZE:
+ {
+ HWND hWndPreview = GetDlgItem(hWnd, IUP_PREVIEWCANVAS);
+ if (hWndPreview)
+ {
+ Ihandle* ih = (Ihandle*)GetWindowLongPtr(hWnd, DWLP_USER);
+ RECT rect;
+
+ winFileDlgSetPreviewCanvasPos(hWnd, hWndPreview);
+
+ GetClientRect(hWndPreview, &rect);
+ iupAttribSetInt(ih, "PREVIEWWIDTH", rect.right-rect.left);
+
+ RedrawWindow(hWndPreview, NULL, NULL, RDW_INVALIDATE|RDW_UPDATENOW);
+ }
+ break;
+ }
+ case WM_DESTROY:
+ {
+ Ihandle* ih = (Ihandle*)GetWindowLongPtr(hWnd, DWLP_USER);
+ IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ cb(ih, NULL, "FINISH");
+ break;
+ }
+ case WM_NOTIFY:
+ {
+ LPOFNOTIFY pofn = (LPOFNOTIFY)lParam;
+ Ihandle* ih = (Ihandle*)pofn->lpOFN->lCustData;
+ IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB");
+ switch (pofn->hdr.code)
+ {
+ case CDN_INITDONE:
+ {
+ HWND hWndPreview = GetDlgItem(hWnd, IUP_PREVIEWCANVAS);
+ cb(ih, NULL, "INIT");
+ if (hWndPreview) RedrawWindow(hWndPreview, NULL, NULL, RDW_INVALIDATE|RDW_UPDATENOW);
+ break;
+ }
+ case CDN_FILEOK:
+ case CDN_SELCHANGE:
+ {
+ HWND hWndPreview = GetDlgItem(hWnd, IUP_PREVIEWCANVAS);
+ char* filename = iupStrGetMemory(MAX_FILENAME_SIZE);
+ if (CommDlg_OpenSave_GetFilePath(GetParent(hWnd), filename, MAX_FILENAME_SIZE) <= MAX_FILENAME_SIZE)
+ {
+ int ret;
+ char* file_msg;
+
+ if (!iupdrvIsFile(filename))
+ break;
+
+ if (pofn->hdr.code == CDN_FILEOK)
+ file_msg = "OK";
+ else
+ file_msg = "SELECT";
+
+ ret = cb(ih, filename, file_msg);
+ if (pofn->hdr.code == CDN_FILEOK && ret == IUP_IGNORE)
+ {
+ SetWindowLongPtr(hWnd, DWLP_MSGRESULT, 1L);
+ return 1; /* will refuse the file */
+ }
+ }
+ if (pofn->hdr.code == CDN_SELCHANGE && hWndPreview)
+ RedrawWindow(hWndPreview, NULL, NULL, RDW_INVALIDATE|RDW_UPDATENOW);
+ break;
+ }
+ case CDN_HELP:
+ {
+ Icallback cb = (Icallback) IupGetCallback(ih, "HELP_CB");
+ if (cb && cb(ih) == IUP_CLOSE)
+ EndDialog(GetParent(hWnd), IDCANCEL);
+ break;
+ }
+ }
+ break;
+ }
+ }
+ return 0;
+}
+
+static char* winFileDlgStrReplaceSeparator(const char* name)
+{
+ int i=0;
+ char* buffer = (char*)malloc(strlen(name)+2);
+
+ /* replace symbols "|" by terminator "\0" */
+
+ while (*name)
+ {
+ buffer[i] = *name;
+
+ if (buffer[i] == '|')
+ buffer[i] = 0;
+
+ i++;
+ name++;
+ }
+
+ buffer[i] = 0;
+ buffer[i+1] = 0; /* additional 0 at the end */
+ return buffer;
+}
+
+static int winFileDlgPopup(Ihandle *ih, int x, int y)
+{
+ InativeHandle* parent = iupDialogGetNativeParent(ih);
+ OPENFILENAME openfilename;
+ int result, dialogtype;
+ char *value;
+
+ iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */
+ iupAttribSetInt(ih, "_IUPDLG_Y", y);
+
+ value = iupAttribGetStr(ih, "DIALOGTYPE");
+ if (iupStrEqualNoCase(value, "SAVE"))
+ dialogtype = IUP_DIALOGSAVE;
+ else if (iupStrEqualNoCase(value, "DIR"))
+ dialogtype = IUP_DIALOGDIR;
+ else
+ dialogtype = IUP_DIALOGOPEN;
+
+ if (dialogtype == IUP_DIALOGDIR)
+ {
+ winFileDlgGetFolder(ih);
+ return IUP_NOERROR;
+ }
+
+ if (!parent)
+ parent = GetActiveWindow();
+
+ ZeroMemory(&openfilename, sizeof(OPENFILENAME));
+ openfilename.lStructSize = sizeof(OPENFILENAME);
+ openfilename.hwndOwner = parent;
+
+ value = iupAttribGet(ih, "EXTFILTER");
+ if (value)
+ {
+ int index;
+ openfilename.lpstrFilter = winFileDlgStrReplaceSeparator(value);
+
+ value = iupAttribGet(ih, "FILTERUSED");
+ if (iupStrToInt(value, &index))
+ openfilename.nFilterIndex = index;
+ else
+ openfilename.nFilterIndex = 1;
+ }
+ else
+ {
+ value = iupAttribGet(ih, "FILTER");
+ if (value)
+ {
+ int sz1, sz2;
+ char* info = iupAttribGet(ih, "FILTERINFO");
+ if (!info)
+ info = value;
+
+ /* concat FILTERINFO+FILTER */
+ sz1 = strlen(info)+1;
+ sz2 = strlen(value)+1;
+ openfilename.lpstrFilter = (char*)malloc(sz1+sz2+1);
+
+ memcpy((char*)openfilename.lpstrFilter, info, sz1);
+ memcpy((char*)openfilename.lpstrFilter+sz1, value, sz2);
+ ((char*)openfilename.lpstrFilter)[sz1+sz2] = 0; /* additional 0 at the end */
+ openfilename.nFilterIndex = 1;
+ }
+ }
+
+ openfilename.lpstrFile = (char*)malloc(MAX_FILENAME_SIZE+1);
+ value = iupAttribGet(ih, "FILE");
+ if (value)
+ {
+ strncpy(openfilename.lpstrFile, value, MAX_FILENAME_SIZE);
+ winFileDlgStrReplacePathSlash(openfilename.lpstrFile);
+ }
+ else
+ openfilename.lpstrFile[0] = 0;
+
+ openfilename.nMaxFile = MAX_FILENAME_SIZE;
+
+ openfilename.lpstrInitialDir = iupStrDup(iupAttribGet(ih, "DIRECTORY"));
+ if (openfilename.lpstrInitialDir)
+ winFileDlgStrReplacePathSlash((char*)openfilename.lpstrInitialDir);
+
+ openfilename.lpstrTitle = iupAttribGet(ih, "TITLE");
+ openfilename.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY;
+
+ if (!iupAttribGetBoolean(ih, "NOOVERWRITEPROMPT"))
+ openfilename.Flags |= OFN_OVERWRITEPROMPT;
+
+ if (iupAttribGetBoolean(ih, "SHOWHIDDEN"))
+ openfilename.Flags |= OFN_FORCESHOWHIDDEN;
+
+ value = iupAttribGet(ih, "ALLOWNEW");
+ if (!value)
+ {
+ if (dialogtype == IUP_DIALOGSAVE)
+ value = "YES";
+ else
+ value = "NO";
+ }
+ if (iupStrBoolean(value))
+ openfilename.Flags |= OFN_CREATEPROMPT;
+ else
+ openfilename.Flags |= OFN_FILEMUSTEXIST;
+
+ if (iupAttribGetBoolean(ih, "NOCHANGEDIR"))
+ openfilename.Flags |= OFN_NOCHANGEDIR;
+
+ if (iupAttribGetBoolean(ih, "MULTIPLEFILES"))
+ openfilename.Flags |= OFN_ALLOWMULTISELECT;
+
+ openfilename.lpfnHook = winFileDlgSimpleHook;
+ openfilename.Flags |= OFN_ENABLEHOOK | OFN_EXPLORER | OFN_ENABLESIZING;
+ openfilename.lCustData = (LPARAM)ih;
+
+ if (iupAttribGetBoolean(ih, "SHOWPREVIEW") && IupGetCallback(ih, "FILE_CB"))
+ {
+ openfilename.Flags |= OFN_ENABLETEMPLATE;
+ openfilename.hInstance = iupwin_dll_hinstance? iupwin_dll_hinstance: iupwin_hinstance;
+ openfilename.lpTemplateName = "iupPreviewDlg";
+ openfilename.lpfnHook = winFileDlgPreviewHook;
+ }
+
+ if (IupGetCallback(ih, "HELP_CB"))
+ openfilename.Flags |= OFN_SHOWHELP;
+
+ if (dialogtype == IUP_DIALOGOPEN)
+ result = GetOpenFileName(&openfilename);
+ else
+ result = GetSaveFileName(&openfilename);
+
+ if (result)
+ {
+ if (iupAttribGetBoolean(ih, "MULTIPLEFILES"))
+ {
+ int i = 0;
+
+ /* If there is more than one file, replace terminator by the separator */
+ if (openfilename.lpstrFile && openfilename.lpstrFile[openfilename.nFileOffset-1] == 0 && openfilename.nFileOffset>0)
+ {
+ while (openfilename.lpstrFile[i] != 0 || openfilename.lpstrFile[i+1] != 0)
+ {
+ if (openfilename.lpstrFile[i]==0)
+ openfilename.lpstrFile[i] = '|';
+ i++;
+ }
+ openfilename.lpstrFile[i] = '|';
+ }
+
+ iupAttribSetStr(ih, "STATUS", "0");
+ iupAttribSetStr(ih, "FILEEXIST", NULL);
+ }
+ else
+ {
+ if (iupdrvIsFile(openfilename.lpstrFile)) /* check if file exists */
+ {
+ iupAttribSetStr(ih, "FILEEXIST", "YES");
+ iupAttribSetStr(ih, "STATUS", "0");
+ }
+ else
+ {
+ iupAttribSetStr(ih, "FILEEXIST", "NO");
+ iupAttribSetStr(ih, "STATUS", "1");
+ }
+ }
+
+ iupAttribStoreStr(ih, "VALUE", openfilename.lpstrFile);
+ iupAttribSetInt(ih, "FILTERUSED", (int)openfilename.nFilterIndex);
+ }
+ else
+ {
+ iupAttribSetStr(ih, "FILTERUSED", NULL);
+ iupAttribSetStr(ih, "VALUE", NULL);
+ iupAttribSetStr(ih, "FILEEXIST", NULL);
+ iupAttribSetStr(ih, "STATUS", "-1");
+ }
+
+ if (openfilename.lpstrFilter) free((char*)openfilename.lpstrFilter);
+ if (openfilename.lpstrInitialDir) free((char*)openfilename.lpstrInitialDir);
+ if (openfilename.lpstrFile) free(openfilename.lpstrFile);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvFileDlgInitClass(Iclass* ic)
+{
+ ic->DlgPopup = winFileDlgPopup;
+
+ /* IupFileDialog Windows and GTK Only */
+ iupClassRegisterAttribute(ic, "EXTFILTER", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FILTERINFO", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FILTERUSED", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MULTIPLEFILES", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/win/iupwin_focus.c b/iup/src/win/iupwin_focus.c
new file mode 100755
index 0000000..63da02d
--- /dev/null
+++ b/iup/src/win/iupwin_focus.c
@@ -0,0 +1,62 @@
+/** \file
+ * \brief Windows Focus
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <windows.h>
+
+#include "iup.h"
+#include "iup_object.h"
+#include "iup_focus.h"
+#include "iup_assert.h"
+#include "iup_drv.h"
+#include "iup_attrib.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+
+/* not defined for gcc */
+#ifndef WM_CHANGEUISTATE
+#define WM_CHANGEUISTATE 0x0127
+#endif
+#ifndef UIS_CLEAR
+#define UIS_CLEAR 2
+#endif
+#ifndef UISF_HIDEFOCUS
+#define UISF_HIDEFOCUS 0x1
+#endif
+
+/* Since Windows XP, the focus feedback only appears after the user press a key.
+ Except for the IupText where the feedback is the caret.
+ Before that if you click in a control the focus feedback will be hidden.
+
+ We manually send WM_CHANGEUISTATE because we do not use IsDialogMessage anymore,
+ and the focus feedback was not shown even after the used press a key.
+
+ TODO: I would like a form to always show the feedback, but could not understand how WM_CHANGEUISTATE works.
+ Neither SystemParametersInfo(SPI_SETKEYBOARDCUES, TRUE) or SystemParametersInfo(SPI_SETKEYBOARDPREF, TRUE) worked.
+*/
+void iupdrvSetFocus(Ihandle *ih)
+{
+ SetFocus(ih->handle);
+ SendMessage(ih->handle, WM_CHANGEUISTATE, UIS_CLEAR|UISF_HIDEFOCUS, 0);
+}
+
+void iupwinWmSetFocus(Ihandle *ih)
+{
+ Ihandle* dialog = IupGetDialog(ih);
+ if (ih != dialog)
+ iupAttribSetStr(dialog, "_IUPWIN_LASTFOCUS", (char*)ih); /* used by IupMenu */
+ else
+ {
+ /* if a control inside that dialog had the focus, then reset to it when the dialog gets the focus */
+ Ihandle* lastfocus = (Ihandle*)iupAttribGet(dialog, "_IUPWIN_LASTFOCUS");
+ if (lastfocus) IupSetFocus(lastfocus);
+ }
+
+ iupCallGetFocusCb(ih);
+}
diff --git a/iup/src/win/iupwin_font.c b/iup/src/win/iupwin_font.c
new file mode 100755
index 0000000..659e2d9
--- /dev/null
+++ b/iup/src/win/iupwin_font.c
@@ -0,0 +1,342 @@
+/** \file
+ * \brief Windows Font mapping
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <windows.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+#include "iup_array.h"
+#include "iup_attrib.h"
+#include "iup_object.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_assert.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_info.h"
+
+
+typedef struct IwinFont_
+{
+ char standardfont[200];
+ HFONT hFont;
+ int charwidth, charheight;
+} IwinFont;
+
+static Iarray* win_fonts = NULL;
+
+static IwinFont* winFindFont(const char *standardfont)
+{
+ HFONT hFont;
+ int height_pixels;
+ char typeface[50] = "";
+ int height = 8;
+ int is_bold = 0,
+ is_italic = 0,
+ is_underline = 0,
+ is_strikeout = 0;
+ int res = iupwinGetScreenRes();
+ int i, count = iupArrayCount(win_fonts);
+ const char* mapped_name;
+
+ /* Check if the standardfont already exists in cache */
+ IwinFont* fonts = (IwinFont*)iupArrayGetData(win_fonts);
+ for (i = 0; i < count; i++)
+ {
+ if (iupStrEqualNoCase(standardfont, fonts[i].standardfont))
+ return &fonts[i];
+ }
+
+ /* parse the old format first */
+ if (!iupFontParseWin(standardfont, typeface, &height, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParsePango(standardfont, typeface, &height, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ return NULL;
+ }
+
+ mapped_name = iupFontGetWinName(typeface);
+ if (mapped_name)
+ strcpy(typeface, mapped_name);
+
+ /* get in pixels */
+ if (height < 0)
+ height_pixels = height; /* already in pixels */
+ else
+ height_pixels = -IUPWIN_PT2PIXEL(height, res);
+
+ if (height_pixels == 0)
+ return NULL;
+
+ hFont = CreateFont(height_pixels,
+ 0,0,0,
+ (is_bold) ? FW_BOLD : FW_NORMAL,
+ is_italic,
+ is_underline,
+ is_strikeout,
+ DEFAULT_CHARSET,OUT_TT_PRECIS,
+ CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
+ FF_DONTCARE|DEFAULT_PITCH,
+ typeface);
+ if (!hFont)
+ return NULL;
+
+ /* create room in the array */
+ fonts = (IwinFont*)iupArrayInc(win_fonts);
+
+ strcpy(fonts[i].standardfont, standardfont);
+ fonts[i].hFont = hFont;
+
+ {
+ TEXTMETRIC tm;
+ HDC hdc = GetDC(NULL);
+ HFONT oldfont = SelectObject(hdc, hFont);
+
+ GetTextMetrics(hdc, &tm);
+
+ SelectObject(hdc, oldfont);
+ ReleaseDC(NULL, hdc);
+
+ fonts[i].charwidth = tm.tmAveCharWidth;
+ fonts[i].charheight = tm.tmHeight;
+ }
+
+ return &fonts[i];
+}
+
+static void winFontFromLogFont(LOGFONT* logfont, char * font)
+{
+ int is_bold = (logfont->lfWeight == FW_NORMAL)? 0: 1;
+ int is_italic = logfont->lfItalic;
+ int is_underline = logfont->lfUnderline;
+ int is_strikeout = logfont->lfStrikeOut;
+ int height_pixels = logfont->lfHeight; /* negative value */
+ int res = iupwinGetScreenRes();
+ int height = IUPWIN_PIXEL2PT(-height_pixels, res); /* return in points */
+
+ sprintf(font, "%s, %s%s%s%s %d", logfont->lfFaceName,
+ is_bold?"Bold ":"",
+ is_italic?"Italic ":"",
+ is_underline?"Underline ":"",
+ is_strikeout?"Strikeout ":"",
+ height);
+}
+
+char* iupdrvGetSystemFont(void)
+{
+ static char systemfont[200] = "";
+ NONCLIENTMETRICS ncm;
+ ncm.cbSize = sizeof(NONCLIENTMETRICS);
+ if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, FALSE))
+ winFontFromLogFont(&ncm.lfMessageFont, systemfont);
+ else
+ strcpy(systemfont, "Tahoma, 10");
+ return systemfont;
+}
+
+char* iupwinFindHFont(HFONT hFont)
+{
+ int i, count = iupArrayCount(win_fonts);
+
+ /* Check if the standardfont already exists in cache */
+ IwinFont* fonts = (IwinFont*)iupArrayGetData(win_fonts);
+ for (i = 0; i < count; i++)
+ {
+ if (hFont == fonts[i].hFont)
+ return fonts[i].standardfont;
+ }
+
+ return NULL;
+}
+
+HFONT iupwinGetHFont(const char* value)
+{
+ IwinFont* winfont = winFindFont(value);
+ if (!winfont)
+ return NULL;
+ else
+ return winfont->hFont;
+}
+
+static IwinFont* winFontCreateNativeFont(Ihandle *ih, const char* value)
+{
+ IwinFont* winfont = winFindFont(value);
+ if (!winfont)
+ {
+ iupERROR1("Failed to create Font: %s", value);
+ return NULL;
+ }
+
+ iupAttribSetStr(ih, "_IUP_WINFONT", (char*)winfont);
+ return winfont;
+}
+
+static IwinFont* winFontGet(Ihandle *ih)
+{
+ IwinFont* winfont = (IwinFont*)iupAttribGet(ih, "_IUP_WINFONT");
+ if (!winfont)
+ winfont = winFontCreateNativeFont(ih, iupGetFontAttrib(ih));
+ return winfont;
+}
+
+char* iupwinGetHFontAttrib(Ihandle *ih)
+{
+ IwinFont* winfont = winFontGet(ih);
+ if (!winfont)
+ return NULL;
+ else
+ return (char*)winfont->hFont;
+}
+
+int iupdrvSetStandardFontAttrib(Ihandle* ih, const char* value)
+{
+ IwinFont* winfont = winFontCreateNativeFont(ih, value);
+ if (!winfont)
+ return 1;
+
+ /* If FONT is changed, must update the SIZE attribute */
+ iupBaseUpdateSizeFromFont(ih);
+
+ /* FONT attribute must be able to be set before mapping,
+ so the font is enable for size calculation. */
+ if (ih->handle && (ih->iclass->nativetype != IUP_TYPEVOID))
+ SendMessage(ih->handle, WM_SETFONT, (WPARAM)winfont->hFont, MAKELPARAM(TRUE,0));
+
+ return 1;
+}
+
+static HDC winFontGetDC(Ihandle* ih)
+{
+ if (ih->iclass->nativetype == IUP_TYPEVOID)
+ return GetDC(NULL);
+ else
+ return GetDC(ih->handle); /* handle can be NULL here */
+}
+
+static void winFontReleaseDC(Ihandle* ih, HDC hdc)
+{
+ if (ih->iclass->nativetype == IUP_TYPEVOID)
+ ReleaseDC(NULL, hdc);
+ else
+ ReleaseDC(ih->handle, hdc); /* handle can be NULL here */
+}
+
+void iupdrvFontGetMultiLineStringSize(Ihandle* ih, const char* str, int *w, int *h)
+{
+ int num_lin, max_w;
+
+ IwinFont* winfont = winFontGet(ih);
+ if (!winfont)
+ {
+ if (w) *w = 0;
+ if (h) *h = 0;
+ return;
+ }
+
+ if (!str)
+ {
+ if (w) *w = 0;
+ if (h) *h = winfont->charheight * 1;
+ return;
+ }
+
+ max_w = 0;
+ num_lin = 1;
+ if (str[0])
+ {
+ SIZE size;
+ int len;
+ const char *nextstr;
+ const char *curstr = str;
+
+ HDC hdc = winFontGetDC(ih);
+ HFONT oldhfont = SelectObject(hdc, winfont->hFont);
+
+ do
+ {
+ nextstr = iupStrNextLine(curstr, &len);
+ GetTextExtentPoint32(hdc, curstr, len, &size);
+ max_w = iupMAX(max_w, size.cx);
+
+ curstr = nextstr;
+ if (*nextstr)
+ num_lin++;
+ } while(*nextstr);
+
+ SelectObject(hdc, oldhfont);
+ winFontReleaseDC(ih, hdc);
+ }
+
+ if (w) *w = max_w;
+ if (h) *h = winfont->charheight*num_lin;
+}
+
+int iupdrvFontGetStringWidth(Ihandle* ih, const char* str)
+{
+ HDC hdc;
+ HFONT oldhfont, hFont;
+ SIZE size;
+ int len;
+ char* line_end;
+
+ if (!str || str[0]==0)
+ return 0;
+
+ hFont = (HFONT)iupwinGetHFontAttrib(ih);
+ if (!hFont)
+ return 0;
+
+ hdc = winFontGetDC(ih);
+ oldhfont = SelectObject(hdc, hFont);
+
+ line_end = strchr(str, '\n');
+ if (line_end)
+ len = line_end-str;
+ else
+ len = strlen(str);
+
+ GetTextExtentPoint32(hdc, str, len, &size);
+
+ SelectObject(hdc, oldhfont);
+ winFontReleaseDC(ih, hdc);
+
+ return size.cx;
+}
+
+void iupdrvFontGetCharSize(Ihandle* ih, int *charwidth, int *charheight)
+{
+ IwinFont* winfont = winFontGet(ih);
+ if (!winfont)
+ {
+ if (charwidth) *charwidth = 0;
+ if (charheight) *charheight = 0;
+ return;
+ }
+
+ if (charwidth) *charwidth = winfont->charwidth;
+ if (charheight) *charheight = winfont->charheight;
+}
+
+void iupdrvFontInit(void)
+{
+ win_fonts = iupArrayCreate(50, sizeof(IwinFont));
+}
+
+void iupdrvFontFinish(void)
+{
+ int i, count = iupArrayCount(win_fonts);
+ IwinFont* fonts = (IwinFont*)iupArrayGetData(win_fonts);
+ for (i = 0; i < count; i++)
+ {
+ DeleteObject(fonts[i].hFont);
+ fonts[i].hFont = NULL;
+ }
+ iupArrayDestroy(win_fonts);
+}
diff --git a/iup/src/win/iupwin_fontdlg.c b/iup/src/win/iupwin_fontdlg.c
new file mode 100755
index 0000000..0602441
--- /dev/null
+++ b/iup/src/win/iupwin_fontdlg.c
@@ -0,0 +1,160 @@
+/** \file
+ * \brief IupFontDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+#include <stdio.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_dialog.h"
+#include "iup_drvfont.h"
+
+#include "iupwin_drv.h"
+
+
+#define IUP_FONTFAMILYCOMBOBOX 0x0470
+
+static UINT_PTR winFontDlgHookProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
+{
+ (void)wParam;
+ if (uiMsg == WM_INITDIALOG)
+ {
+ HWND hWndItem;
+ CHOOSEFONT* choosefont = (CHOOSEFONT*)lParam;
+ Ihandle* ih = (Ihandle*)choosefont->lCustData;
+
+ char* value = iupAttribGet(ih, "TITLE");
+ if (value)
+ SetWindowText(hWnd, value);
+
+ ih->handle = hWnd;
+ iupDialogUpdatePosition(ih);
+ ih->handle = NULL; /* reset handle */
+ iupAttribSetStr(ih, "HWND", (char*)hWnd); /* used by HELP_CB in winDialogBaseProc */
+
+ hWndItem = GetDlgItem(hWnd, IUP_FONTFAMILYCOMBOBOX);
+ SetFocus(hWndItem);
+ }
+ return 0;
+}
+
+static int winFontDlgPopup(Ihandle* ih, int x, int y)
+{
+ InativeHandle* parent = iupDialogGetNativeParent(ih);
+ unsigned char r, g, b;
+ CHOOSEFONT choosefont;
+ LOGFONT logfont;
+ char* standardfont;
+ int height_pixels;
+ char typeface[50] = "";
+ int height = 8;
+ int is_bold = 0,
+ is_italic = 0,
+ is_underline = 0,
+ is_strikeout = 0;
+ int res = iupwinGetScreenRes();
+
+ iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */
+ iupAttribSetInt(ih, "_IUPDLG_Y", y);
+
+ if (!parent)
+ parent = GetActiveWindow();
+
+ standardfont = iupAttribGet(ih, "VALUE");
+ if (!standardfont)
+ return IUP_ERROR;
+
+ /* parse the old format first */
+ if (!iupFontParseWin(standardfont, typeface, &height, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ {
+ if (!iupFontParsePango(standardfont, typeface, &height, &is_bold, &is_italic, &is_underline, &is_strikeout))
+ return IUP_ERROR;
+ }
+
+ /* get size in pixels */
+ if (height < 0)
+ height_pixels = height; /* already in pixels */
+ else
+ height_pixels = -IUPWIN_PT2PIXEL(height, res);
+
+ if (height_pixels == 0)
+ return IUP_ERROR;
+
+ ZeroMemory(&choosefont, sizeof(CHOOSEFONT));
+ choosefont.lStructSize = sizeof(CHOOSEFONT);
+
+ if (iupStrToRGB(iupAttribGet(ih, "COLOR"), &r, &g, &b))
+ choosefont.rgbColors = RGB(r, g, b);
+
+ choosefont.hwndOwner = parent;
+ choosefont.lpLogFont = &logfont;
+ choosefont.Flags = CF_SCREENFONTS | CF_EFFECTS | CF_INITTOLOGFONTSTRUCT | CF_ENABLEHOOK;
+ choosefont.lCustData = (LPARAM)ih;
+ choosefont.lpfnHook = (LPCFHOOKPROC)winFontDlgHookProc;
+
+ if (IupGetCallback(ih, "HELP_CB"))
+ choosefont.Flags |= CF_SHOWHELP;
+
+ strcpy(logfont.lfFaceName, typeface);
+ logfont.lfHeight = height_pixels;
+ logfont.lfWeight = (is_bold)? FW_BOLD: FW_NORMAL;
+ logfont.lfItalic = (BYTE)is_italic;
+ logfont.lfUnderline = (BYTE)is_underline;
+ logfont.lfStrikeOut = (BYTE)is_strikeout;
+
+ logfont.lfCharSet = DEFAULT_CHARSET;
+ logfont.lfEscapement = 0;
+ logfont.lfOrientation = 0;
+ logfont.lfWidth = 0;
+ logfont.lfOutPrecision = OUT_TT_PRECIS;
+ logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
+ logfont.lfQuality = DEFAULT_QUALITY;
+ logfont.lfPitchAndFamily = FF_DONTCARE|DEFAULT_PITCH;
+
+ if (!ChooseFont(&choosefont))
+ {
+ iupAttribSetStr(ih, "VALUE", NULL);
+ iupAttribSetStr(ih, "COLOR", NULL);
+ iupAttribSetStr(ih, "STATUS", NULL);
+ return IUP_NOERROR;
+ }
+
+ is_bold = (logfont.lfWeight == FW_NORMAL)? 0: 1;
+ is_italic = logfont.lfItalic;
+ is_underline = logfont.lfUnderline;
+ is_strikeout = logfont.lfStrikeOut;
+ height_pixels = logfont.lfHeight;
+
+ if (height < 0) /* not an error, use old value as a reference for the units */
+ height = height_pixels; /* return in pixels */
+ else
+ height = IUPWIN_PIXEL2PT(-height_pixels, res); /* return in points */
+
+ iupAttribSetStrf(ih, "VALUE", "%s, %s%s%s%s %d", logfont.lfFaceName,
+ is_bold?"Bold ":"",
+ is_italic?"Italic ":"",
+ is_underline?"Underline ":"",
+ is_strikeout?"Strikeout ":"",
+ height);
+
+ iupAttribSetStrf(ih, "COLOR", "%d %d %d", GetRValue(choosefont.rgbColors),
+ GetGValue(choosefont.rgbColors),
+ GetBValue(choosefont.rgbColors));
+ iupAttribSetStr(ih, "STATUS", "1");
+
+ return IUP_NOERROR;
+}
+
+void iupdrvFontDlgInitClass(Iclass* ic)
+{
+ ic->DlgPopup = winFontDlgPopup;
+
+ /* IupFontDialog Windows Only */
+ iupClassRegisterAttribute(ic, "COLOR", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/win/iupwin_frame.c b/iup/src/win/iupwin_frame.c
new file mode 100755
index 0000000..0949b5d
--- /dev/null
+++ b/iup/src/win/iupwin_frame.c
@@ -0,0 +1,203 @@
+/** \file
+ * \brief Frame Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+#include <commctrl.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_stdcontrols.h"
+#include "iup_frame.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+#include "iupwin_draw.h"
+#include "iupwin_info.h"
+
+
+void iupdrvFrameGetDecorOffset(Ihandle* ih, int *x, int *y)
+{
+ if (iupwin_comctl32ver6)
+ {
+ *x = 3;
+ *y = 3;
+ }
+ else
+ {
+ *x = 2;
+ *y = 2;
+ }
+
+ if (iupAttribGet(ih, "_IUPFRAME_HAS_TITLE") || iupAttribGet(ih, "TITLE"))
+ {
+ (*y) += iupFrameGetTitleHeight(ih);
+ }
+}
+
+static void winFrameDrawText(HDC hDC, const char* text, int x, int y, COLORREF fgcolor)
+{
+ COLORREF oldcolor;
+
+ SetTextAlign(hDC, TA_TOP|TA_LEFT);
+ SetBkMode(hDC, TRANSPARENT);
+ oldcolor = SetTextColor(hDC, fgcolor);
+
+ TextOut(hDC, x, y, text, strlen(text));
+
+ SetTextColor(hDC, oldcolor);
+ SetBkMode(hDC, OPAQUE);
+}
+
+static void winFrameDrawItem(Ihandle* ih, DRAWITEMSTRUCT *drawitem)
+{
+ iupwinBitmapDC bmpDC;
+ HDC hDC = iupwinDrawCreateBitmapDC(&bmpDC, drawitem->hDC, drawitem->rcItem.right-drawitem->rcItem.left,
+ drawitem->rcItem.bottom-drawitem->rcItem.top);
+
+ iupwinDrawParentBackground(ih, hDC, &drawitem->rcItem);
+
+ if (iupAttribGet(ih, "_IUPFRAME_HAS_TITLE"))
+ {
+ int x, y;
+ HFONT hOldFont, hFont = (HFONT)iupwinGetHFontAttrib(ih);
+ int txt_height = iupFrameGetTitleHeight(ih);
+ COLORREF fgcolor;
+ SIZE size;
+
+ char* title = iupdrvBaseGetTitleAttrib(ih);
+ if (!title) title = "";
+
+ x = drawitem->rcItem.left+7;
+ y = drawitem->rcItem.top;
+
+ hOldFont = SelectObject(hDC, hFont);
+ GetTextExtentPoint32(hDC, title, strlen(title), &size);
+ ExcludeClipRect(hDC, x-2, y, x+size.cx+2, y+size.cy);
+
+ drawitem->rcItem.top += txt_height/2;
+ if (iupwin_comctl32ver6)
+ iupwinDrawThemeFrameBorder(ih->handle, hDC, &drawitem->rcItem, drawitem->itemState);
+ else
+ DrawEdge(hDC, &drawitem->rcItem, EDGE_ETCHED, BF_RECT);
+
+ SelectClipRgn(hDC, NULL);
+
+ if (drawitem->itemState & ODS_DISABLED)
+ fgcolor = GetSysColor(COLOR_GRAYTEXT);
+ else
+ {
+ unsigned char r, g, b;
+ char* color = iupAttribGetInherit(ih, "FGCOLOR");
+ if (!color)
+ {
+ if (!iupwinDrawGetThemeFrameFgColor(ih->handle, &fgcolor))
+ fgcolor = 0; /* black */
+ }
+ else
+ {
+ if (iupStrToRGB(color, &r, &g, &b))
+ fgcolor = RGB(r,g,b);
+ else
+ fgcolor = 0; /* black */
+ }
+ }
+
+ winFrameDrawText(hDC, title, x, y, fgcolor);
+
+ SelectObject(hDC, hOldFont);
+ }
+ else
+ {
+ char* value = iupAttribGetStr(ih, "SUNKEN");
+ if (iupStrBoolean(value))
+ DrawEdge(hDC, &drawitem->rcItem, EDGE_SUNKEN, BF_RECT);
+ else
+ DrawEdge(hDC, &drawitem->rcItem, EDGE_ETCHED, BF_RECT);
+ }
+
+ iupwinDrawDestroyBitmapDC(&bmpDC);
+}
+
+static int winFrameProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ switch (msg)
+ {
+ case WM_GETDLGCODE:
+ {
+ *result = DLGC_STATIC; /* same return as GROUPBOX */
+ return 1;
+ }
+ case WM_NCHITTEST:
+ {
+ *result = HTTRANSPARENT; /* same return as GROUPBOX */
+ return 1;
+ }
+ case WM_ERASEBKGND:
+ {
+ /* just to ignore the internal processing */
+ *result = 1;
+ return 1;
+ }
+ }
+
+ return iupwinBaseContainerProc(ih, msg, wp, lp, result);
+}
+
+static int winFrameMapMethod(Ihandle* ih)
+{
+ char *title;
+ DWORD dwStyle = WS_CHILD|WS_CLIPSIBLINGS|
+ BS_OWNERDRAW, /* owner draw necessary because BS_GROUPBOX does not work ok */
+ dwExStyle = 0;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ title = iupAttribGet(ih, "TITLE");
+ if (title)
+ iupAttribSetStr(ih, "_IUPFRAME_HAS_TITLE", "1");
+
+ if (iupAttribGetBoolean(IupGetDialog(ih), "COMPOSITED"))
+ dwExStyle |= WS_EX_COMPOSITED;
+ else
+ dwStyle |= WS_CLIPCHILDREN;
+
+ if (!iupwinCreateWindowEx(ih, "BUTTON", dwExStyle, dwStyle))
+ return IUP_ERROR;
+
+ /* replace the WinProc to handle other messages */
+ IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winFrameProc);
+
+ /* Process WM_DRAWITEM */
+ IupSetCallback(ih, "_IUPWIN_DRAWITEM_CB", (Icallback)winFrameDrawItem);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvFrameInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = winFrameMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", iupBaseNativeParentGetBgColorAttrib, NULL, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "TITLE", iupdrvBaseGetTitleAttrib, iupdrvBaseSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/win/iupwin_globalattrib.c b/iup/src/win/iupwin_globalattrib.c
new file mode 100755
index 0000000..a176925
--- /dev/null
+++ b/iup/src/win/iupwin_globalattrib.c
@@ -0,0 +1,243 @@
+/** \file
+ * \brief Windows Driver iupdrvSetGlobal
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <windows.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvinfo.h"
+#include "iup_strmessage.h"
+
+#include "iupwin_drv.h"
+
+static int win_monitor_index = 0;
+
+/* Not defined in compilers older than VC9 */
+#ifndef MAPVK_VK_TO_VSC
+#define MAPVK_VK_TO_VSC (0)
+#endif
+
+static void winGlobalSendKey(int key, int press)
+{
+ unsigned int keyval, state;
+ INPUT input[2];
+ LPARAM extra_info;
+ WORD state_scan = 0, key_scan;
+ ZeroMemory(input, 2*sizeof(INPUT));
+
+ iupwinKeyEncode(key, &keyval, &state);
+ if (!keyval)
+ return;
+
+ extra_info = GetMessageExtraInfo();
+ if (state)
+ state_scan = (WORD)MapVirtualKey(state, MAPVK_VK_TO_VSC);
+ key_scan = (WORD)MapVirtualKey(keyval, MAPVK_VK_TO_VSC);
+
+ if (press & 0x01)
+ {
+ if (state)
+ {
+ /* modifier first */
+ input[0].type = INPUT_KEYBOARD;
+ input[0].ki.wVk = (WORD)state;
+ input[0].ki.wScan = state_scan;
+ input[0].ki.dwExtraInfo = extra_info;
+
+ /* key second */
+ input[1].type = INPUT_KEYBOARD;
+ input[1].ki.wVk = (WORD)keyval;
+ input[1].ki.wScan = key_scan;
+ input[1].ki.dwExtraInfo = extra_info;
+
+ SendInput(2, input, sizeof(INPUT));
+ }
+ else
+ {
+ input[0].type = INPUT_KEYBOARD;
+ input[0].ki.wVk = (WORD)keyval;
+ input[0].ki.wScan = key_scan;
+ input[0].ki.dwExtraInfo = extra_info;
+
+ SendInput(1, input, sizeof(INPUT));
+ }
+ }
+
+ if (press & 0x02)
+ {
+ if (state)
+ {
+ /* key first */
+ input[0].type = INPUT_KEYBOARD;
+ input[0].ki.dwFlags = KEYEVENTF_KEYUP;
+ input[0].ki.wVk = (WORD)keyval;
+ input[0].ki.wScan = key_scan;
+ input[0].ki.dwExtraInfo = extra_info;
+
+ /* modifier second */
+ input[1].type = INPUT_KEYBOARD;
+ input[1].ki.dwFlags = KEYEVENTF_KEYUP;
+ input[1].ki.wVk = (WORD)state;
+ input[1].ki.wScan = state_scan;
+ input[1].ki.dwExtraInfo = extra_info;
+
+ SendInput(2, input, sizeof(INPUT));
+ }
+ else
+ {
+ input[0].type = INPUT_KEYBOARD;
+ input[0].ki.dwFlags = KEYEVENTF_KEYUP;
+ input[0].ki.wVk = (WORD)keyval;
+ input[0].ki.wScan = key_scan;
+ input[0].ki.dwExtraInfo = extra_info;
+
+ SendInput(1, input, sizeof(INPUT));
+ }
+ }
+}
+
+static BOOL CALLBACK winMonitorInfoEnum(HMONITOR handle, HDC handle_dc, LPRECT rect, LPARAM data)
+{
+ RECT* monitors_rect = (RECT*)data;
+ monitors_rect[win_monitor_index] = *rect;
+ win_monitor_index++;
+ (void)handle_dc;
+ (void)handle;
+ return TRUE;
+}
+
+int iupdrvSetGlobal(const char *name, const char *value)
+{
+ if (iupStrEqual(name, "LANGUAGE"))
+ {
+ iupStrMessageUpdateLanguage(value);
+ return 1;
+ }
+ if (iupStrEqual(name, "CURSORPOS"))
+ {
+ int x, y;
+ if (iupStrToIntInt(value, &x, &y, 'x') == 2)
+ SetCursorPos(x, y);
+ return 0;
+ }
+ if (iupStrEqual(name, "KEYPRESS"))
+ {
+ int key;
+ if (iupStrToInt(value, &key))
+ winGlobalSendKey(key, 0x01);
+ return 0;
+ }
+ if (iupStrEqual(name, "KEYRELEASE"))
+ {
+ int key;
+ if (iupStrToInt(value, &key))
+ winGlobalSendKey(key, 0x02);
+ return 0;
+ }
+ if (iupStrEqual(name, "KEY"))
+ {
+ int key;
+ if (iupStrToInt(value, &key))
+ winGlobalSendKey(key, 0x03);
+ return 0;
+ }
+ return 1;
+}
+
+char *iupdrvGetGlobal(const char *name)
+{
+ if (iupStrEqual(name, "CURSORPOS"))
+ {
+ int x, y;
+ char* str = iupStrGetMemory(50);
+ iupdrvGetCursorPos(&x, &y);
+ sprintf(str, "%dx%d", x, y);
+ return str;
+ }
+ if (iupStrEqual(name, "SHIFTKEY"))
+ {
+ char key[5];
+ iupdrvGetKeyState(key);
+ if (key[0] == 'S')
+ return "ON";
+ return "OFF";
+ }
+ if (iupStrEqual(name, "CONTROLKEY"))
+ {
+ char key[5];
+ iupdrvGetKeyState(key);
+ if (key[1] == 'C')
+ return "ON";
+ return "OFF";
+ }
+ if (iupStrEqual(name, "MODKEYSTATE"))
+ {
+ char *str = iupStrGetMemory(5);
+ iupdrvGetKeyState(str);
+ return str;
+ }
+ if (iupStrEqual(name, "SCREENSIZE"))
+ {
+ char *str = iupStrGetMemory(50);
+ int w, h;
+ iupdrvGetScreenSize(&w, &h);
+ sprintf(str, "%dx%d", w, h);
+ return str;
+ }
+ if (iupStrEqual(name, "FULLSIZE"))
+ {
+ char *str = iupStrGetMemory(50);
+ int w, h;
+ iupdrvGetFullSize(&w, &h);
+ sprintf(str, "%dx%d", w, h);
+ return str;
+ }
+ if (iupStrEqual(name, "SCREENDEPTH"))
+ {
+ char *str = iupStrGetMemory(50);
+ int bpp = iupdrvGetScreenDepth();
+ sprintf(str, "%d", bpp);
+ return str;
+ }
+ if (iupStrEqual(name, "VIRTUALSCREEN"))
+ {
+ char *str = iupStrGetMemory(50);
+ int x = GetSystemMetrics(SM_XVIRTUALSCREEN);
+ int y = GetSystemMetrics(SM_YVIRTUALSCREEN);
+ int w = GetSystemMetrics(SM_CXVIRTUALSCREEN);
+ int h = GetSystemMetrics(SM_CYVIRTUALSCREEN);
+ sprintf(str, "%d %d %d %d", x, y, w, h);
+ return str;
+ }
+ if (iupStrEqual(name, "MONITORSINFO"))
+ {
+ int i;
+ int monitors_count = GetSystemMetrics(SM_CMONITORS);
+ RECT* monitors_rect = malloc(monitors_count*sizeof(RECT));
+ char *str = iupStrGetMemory(monitors_count*50);
+ char* pstr = str;
+
+ win_monitor_index = 0;
+ EnumDisplayMonitors(NULL, NULL, winMonitorInfoEnum, (LPARAM)monitors_rect);
+
+ for (i=0; i < monitors_count; i++)
+ pstr += sprintf(pstr, "%d %d %d %d\n", (int)monitors_rect[i].left, (int)monitors_rect[i].top, (int)(monitors_rect[i].right-monitors_rect[i].left), (int)(monitors_rect[i].bottom-monitors_rect[i].top));
+
+ free(monitors_rect);
+ return str;
+ }
+ if (iupStrEqual(name, "TRUECOLORCANVAS"))
+ {
+ if (iupdrvGetScreenDepth() > 8)
+ return "YES";
+ return "NO";
+ }
+ return NULL;
+}
diff --git a/iup/src/win/iupwin_handle.c b/iup/src/win/iupwin_handle.c
new file mode 100755
index 0000000..d5a7f77
--- /dev/null
+++ b/iup/src/win/iupwin_handle.c
@@ -0,0 +1,56 @@
+/** \file
+ * \brief HWND to ihandle table
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_table.h"
+
+#include "iupwin_handle.h"
+
+
+static Itable* winhandle_table; /* table indexed by HWND containing Ihandle* address */
+
+Ihandle* iupwinHandleGet(void* handle)
+{
+ Ihandle* ih;
+ if (!handle)
+ return NULL;
+ ih = (Ihandle*)iupTableGet(winhandle_table, (char*)handle);
+ if (ih && !iupObjectCheck(ih))
+ return NULL;
+ return ih;
+}
+
+void iupwinHandleSet(Ihandle *ih)
+{
+ iupTableSet(winhandle_table, (char*)ih->handle, ih, IUPTABLE_POINTER);
+}
+
+void iupwinHandleAdd(Ihandle *ih, InativeHandle* hWnd)
+{
+ iupTableSet(winhandle_table, (char*)hWnd, ih, IUPTABLE_POINTER);
+}
+
+void iupwinHandleRemove(Ihandle *ih)
+{
+ iupTableRemove(winhandle_table, (char*)ih->handle);
+}
+
+void iupwinHandleInit(void)
+{
+ winhandle_table = iupTableCreate(IUPTABLE_POINTERINDEXED);
+}
+
+void iupwinHandleFinish(void)
+{
+ iupTableDestroy(winhandle_table);
+ winhandle_table = NULL;
+}
diff --git a/iup/src/win/iupwin_handle.h b/iup/src/win/iupwin_handle.h
new file mode 100755
index 0000000..4a8643d
--- /dev/null
+++ b/iup/src/win/iupwin_handle.h
@@ -0,0 +1,28 @@
+/** \file
+ * \brief HWND to ihandle table
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPWIN_HANDLE_H
+#define __IUPWIN_HANDLE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Returns the IUP handle given the Windows handle. */
+
+Ihandle* iupwinHandleGet(void* handle);
+void iupwinHandleSet(Ihandle *ih);
+void iupwinHandleAdd(Ihandle *ih, InativeHandle* hWnd);
+void iupwinHandleRemove(Ihandle *ih);
+void iupwinHandleInit(void);
+void iupwinHandleFinish(void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/win/iupwin_image.c b/iup/src/win/iupwin_image.c
new file mode 100755
index 0000000..2db9800
--- /dev/null
+++ b/iup/src/win/iupwin_image.c
@@ -0,0 +1,668 @@
+/** \file
+ * \brief Image Resource.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <memory.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_image.h"
+
+#include "iupwin_drv.h"
+
+/* RGB in RGBA DIBs are pre-multiplied by alpha to AlphaBlend usage. */
+#define iupALPHAPRE(_src, _alpha) (((_src)*(_alpha))/255)
+
+static int winDibNumColors(BITMAPINFOHEADER* bmih)
+{
+ if (bmih->biBitCount > 8)
+ {
+ if (bmih->biCompression == BI_BITFIELDS)
+ return 3;
+ else
+ return 0;
+ }
+ else
+ {
+ if (bmih->biClrUsed != 0)
+ return bmih->biClrUsed;
+ else
+ return 1 << bmih->biBitCount;
+ }
+}
+
+void iupdrvImageGetRawData(void* handle, unsigned char* imgdata)
+{
+ int x, y, w, h, bpp, bmp_line_size, bits_size;
+ BYTE* bits;
+ HANDLE hHandle = (HANDLE)handle;
+ void* dib = GlobalLock(hHandle);
+ BITMAPINFOHEADER* bmih = (BITMAPINFOHEADER*)dib;
+
+ w = bmih->biWidth;
+ h = abs(bmih->biHeight);
+ bpp = iupImageNormBpp(bmih->biBitCount);
+ bmp_line_size = ((w * bmih->biBitCount + 31) / 32) * 4; /* DWORD aligned, 4 bytes boundary in a N bpp image */
+ bits_size = bmp_line_size*h;
+
+ bits = ((BYTE*)dib) + sizeof(BITMAPINFOHEADER) + winDibNumColors(bmih)*sizeof(RGBQUAD);
+
+ /* windows bitmaps are bottom up */
+ /* imgdata is bottom up */
+
+ if (bmih->biHeight < 0)
+ bits = bits + (bits_size - bmp_line_size); /* start of last line */
+
+ if (bpp == 8)
+ {
+ for (y = 0; y < h; y++)
+ {
+ for (x = 0; x < w; x++)
+ {
+ switch (bmih->biBitCount)
+ {
+ case 1:
+ *imgdata++ = (unsigned char)((bits[x / 8] >> (7 - x % 8)) & 0x01);
+ break;
+ case 4:
+ *imgdata++ = (unsigned char)((bits[x / 2] >> ((1 - x % 2) * 4)) & 0x0F);
+ break;
+ case 8:
+ *imgdata++ = bits[x];
+ break;
+ }
+ }
+
+ if (bmih->biHeight < 0)
+ bits -= bmp_line_size;
+ else
+ bits += bmp_line_size;
+ }
+ }
+ else
+ {
+ int offset, planesize;
+ unsigned short color;
+ unsigned int rmask = 0, gmask = 0, bmask = 0,
+ roff = 0, goff = 0, boff = 0; /* pixel bit mask control when reading 16 and 32 bpp images */
+ unsigned char *red, *green, *blue, *alpha;
+
+ planesize = w*h;
+ red = imgdata;
+ green = imgdata+planesize;
+ blue = imgdata+2*planesize;
+ alpha = imgdata+3*planesize;
+
+ if (bmih->biBitCount == 16)
+ offset = bmp_line_size; /* do not increment for each pixel, jump line */
+ else
+ offset = bmp_line_size - (w*bmih->biBitCount)/8; /* increment for each pixel, jump pad */
+
+ if (bmih->biCompression == BI_BITFIELDS)
+ {
+ unsigned int Mask;
+ unsigned int* palette = (unsigned int*)(((BYTE*)bmih) + sizeof(BITMAPINFOHEADER));
+
+ rmask = Mask = palette[0];
+ while (!(Mask & 0x01))
+ {Mask >>= 1; roff++;}
+
+ gmask = Mask = palette[1];
+ while (!(Mask & 0x01))
+ {Mask >>= 1; goff++;}
+
+ bmask = Mask = palette[2];
+ while (!(Mask & 0x01))
+ {Mask >>= 1; boff++;}
+ }
+ else if (bmih->biBitCount == 16)
+ {
+ bmask = 0x001F;
+ gmask = 0x03E0;
+ rmask = 0x7C00;
+ boff = 0;
+ goff = 5;
+ roff = 10;
+ }
+
+ for (y = 0; y < h; y++)
+ {
+ for (x = 0; x < w; x++)
+ {
+ if (bmih->biBitCount == 16)
+ {
+ color = ((unsigned short*)bits)[x];
+ *red++ = (unsigned char)((((rmask & color) >> roff) * 255) / (rmask >> roff));
+ *green++ = (unsigned char)((((gmask & color) >> goff) * 255) / (gmask >> goff));
+ *blue++ = (unsigned char)((((bmask & color) >> boff) * 255) / (bmask >> boff));
+ }
+ else
+ {
+ *blue++ = *bits++;
+ *green++ = *bits++;
+ *red++ = *bits++;
+
+ if (bmih->biBitCount == 32)
+ {
+ if (alpha)
+ *alpha++ = *bits++;
+ else
+ bits++;
+ }
+ }
+ }
+
+ bits += offset;
+
+ if (bmih->biHeight < 0)
+ bits -= 2*bmp_line_size;
+ }
+ }
+
+ GlobalUnlock(hHandle);
+}
+
+void* iupdrvImageCreateImageRaw(int width, int height, int bpp, iupColor* colors, int colors_count, unsigned char *imgdata)
+{
+ int y,x,bmp_line_size,channels,bits_size,header_size;
+ HANDLE hHandle;
+ BYTE* bits; /* DIB bitmap bits, created in CreateDIBSection and filled here */
+ void* dib;
+ BITMAPINFOHEADER* bmih;
+
+ bmp_line_size = ((width * bpp + 31) / 32) * 4; /* DWORD aligned, 4 bytes boundary in a N bpp image */
+ bits_size = bmp_line_size*height;
+ header_size = sizeof(BITMAPINFOHEADER) + colors_count*sizeof(RGBQUAD);
+
+ hHandle = GlobalAlloc(GMEM_MOVEABLE, header_size+bits_size);
+ if (!hHandle)
+ return NULL;
+
+ dib = GlobalLock(hHandle);
+ bits = ((BYTE*)dib) + header_size;
+
+ bmih = (BITMAPINFOHEADER*)dib;
+
+ memset(bmih, 0, sizeof(BITMAPINFOHEADER));
+ bmih->biSize = sizeof(BITMAPINFOHEADER);
+ bmih->biWidth = width;
+ bmih->biHeight = height;
+ bmih->biPlanes = 1; /* not the same as PLANES */
+ bmih->biBitCount = (WORD)bpp;
+ bmih->biCompression = BI_RGB;
+ bmih->biClrUsed = colors_count;
+
+ if (colors_count)
+ {
+ RGBQUAD* bitmap_colors = (RGBQUAD*)(((BYTE*)dib) + sizeof(BITMAPINFOHEADER));
+ int i;
+ for (i=0;i<colors_count;i++)
+ {
+ bitmap_colors[i].rgbRed = colors[i].r;
+ bitmap_colors[i].rgbGreen = colors[i].g;
+ bitmap_colors[i].rgbBlue = colors[i].b;
+ bitmap_colors[i].rgbReserved = 0;
+ }
+ }
+
+ channels = 1;
+ if (bpp == 24)
+ channels = 3;
+ else if (bpp == 32)
+ channels = 4;
+
+ /* windows bitmaps are bottom up */
+ /* imgdata is bottom up */
+
+ if (bpp != 8) /* (bpp == 32 || bpp == 24) */
+ {
+ unsigned char *r, *g, *b, *a;
+
+ int planesize = width*height;
+ r = imgdata;
+ g = imgdata+planesize;
+ b = imgdata+2*planesize;
+ a = imgdata+3*planesize;
+
+ for (y=0; y<height; y++)
+ {
+ int lineoffset = y*width;
+ for (x=0; x<width; x++)
+ {
+ int offset = channels*x;
+ /* Windows Bitmap order is BGRA */
+ BYTE *bmp_b = &bits[offset],
+ *bmp_g = bmp_b+1,
+ *bmp_r = bmp_g+1,
+ *bmp_a = bmp_r+1;
+
+ *bmp_r = r[lineoffset+x];
+ *bmp_g = g[lineoffset+x];
+ *bmp_b = b[lineoffset+x];
+
+ if (channels == 4) /* bpp==32 */
+ {
+ *bmp_a = a[lineoffset+x];
+
+ /* RGB in RGBA DIBs are pre-multiplied by alpha to AlphaBlend usage. */
+ *bmp_r = iupALPHAPRE(*bmp_r,*bmp_a);
+ *bmp_g = iupALPHAPRE(*bmp_g,*bmp_a);
+ *bmp_b = iupALPHAPRE(*bmp_b,*bmp_a);
+ }
+ }
+
+ bits += bmp_line_size;
+ }
+ }
+ else
+ {
+ for (y=0; y<height; y++)
+ {
+ int lineoffset = y*width;
+ for (x=0; x<width; x++)
+ {
+ bits[x] = imgdata[lineoffset+x];
+ }
+
+ bits += bmp_line_size;
+ }
+ }
+
+ GlobalUnlock(hHandle);
+ return hHandle;
+}
+
+int iupdrvImageGetRawInfo(void* handle, int *w, int *h, int *bpp, iupColor* colors, int *colors_count)
+{
+ HANDLE hHandle = (HANDLE)handle;
+ void* dib = GlobalLock(hHandle);
+ BITMAPINFOHEADER* bmih = (BITMAPINFOHEADER*)dib;
+
+ if (w) *w = bmih->biWidth;
+ if (h) *h = abs(bmih->biHeight);
+ if (bpp) *bpp = iupImageNormBpp(bmih->biBitCount);
+
+ if (bmih->biBitCount <= 8)
+ {
+ RGBQUAD* bitmap_colors = (RGBQUAD*)(((BYTE*)bmih) + sizeof(BITMAPINFOHEADER));
+ int i;
+
+ if (bmih->biClrUsed != 0)
+ *colors_count = bmih->biClrUsed;
+ else
+ *colors_count = 1 << bmih->biBitCount;
+
+ for (i=0;i<*colors_count;i++)
+ {
+ colors[i].r = bitmap_colors[i].rgbRed;
+ colors[i].g = bitmap_colors[i].rgbGreen;
+ colors[i].b = bitmap_colors[i].rgbBlue;
+ }
+ }
+
+ GlobalUnlock(hHandle);
+ return 1;
+}
+
+static int winImageInitDibColors(iupColor* colors, RGBQUAD* bmpcolors, int colors_count,
+ unsigned char bg_r, unsigned char bg_g, unsigned char bg_b, int make_inactive)
+{
+ int i, ret = 0;
+ for (i=0;i<colors_count;i++)
+ {
+ bmpcolors[i].rgbRed = colors[i].r;
+ bmpcolors[i].rgbGreen = colors[i].g;
+ bmpcolors[i].rgbBlue = colors[i].b;
+ bmpcolors[i].rgbReserved = colors[i].a;
+
+ if (bmpcolors[i].rgbReserved == 0) /* full transparent alpha */
+ {
+ bmpcolors[i].rgbBlue = bg_b;
+ bmpcolors[i].rgbGreen = bg_g;
+ bmpcolors[i].rgbRed = bg_r;
+ ret = 1;
+ }
+ else
+ bmpcolors[i].rgbReserved = 0; /* clear non transparent mark */
+
+ if (make_inactive)
+ iupImageColorMakeInactive(&(bmpcolors[i].rgbRed), &(bmpcolors[i].rgbGreen), &(bmpcolors[i].rgbBlue),
+ bg_r, bg_g, bg_b);
+ }
+
+ return ret;
+}
+
+static HBITMAP winImageCreateBitmap(Ihandle *ih, int width, int height, int bpp, BYTE** bits,
+ unsigned char bg_r, unsigned char bg_g, unsigned char bg_b, int make_inactive)
+{
+ HDC hDC;
+ int colors_count;
+ HBITMAP hBitmap;
+ BITMAPINFOHEADER* bmih; /* bitmap info header */
+ iupColor colors[256];
+
+ if (bpp == 32 || bpp == 24)
+ colors_count = 0;
+ else /* bpp == 8 */
+ iupImageInitColorTable(ih, colors, &colors_count);
+
+ bmih = malloc(sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*colors_count);
+ if (!bmih)
+ return NULL;
+
+ memset(bmih, 0, sizeof(BITMAPINFOHEADER));
+ bmih->biSize = sizeof(BITMAPINFOHEADER);
+ bmih->biWidth = width;
+ bmih->biHeight = height;
+ bmih->biPlanes = 1; /* not the same as PLANES */
+ bmih->biBitCount = (WORD)bpp;
+ bmih->biCompression = BI_RGB;
+ bmih->biClrUsed = colors_count;
+
+ if (colors_count)
+ {
+ /* since colors are only passed to the CreateDIBSection here, must update BGCOLOR and inactive here */
+ RGBQUAD* bitmap_colors = (RGBQUAD*)(((BYTE*)bmih) + sizeof(BITMAPINFOHEADER));
+ if (winImageInitDibColors(colors, bitmap_colors, colors_count, bg_r, bg_g, bg_b, make_inactive))
+ iupAttribSetStr(ih, "_IUP_BGCOLOR_DEPEND", "1");
+ }
+
+ hDC = GetDC(NULL);
+ hBitmap = CreateDIBSection(hDC, (BITMAPINFO*)bmih, DIB_RGB_COLORS, (void**)bits, NULL, 0x0);
+ ReleaseDC(NULL, hDC);
+ free(bmih);
+
+ return hBitmap;
+}
+
+void* iupdrvImageCreateImage(Ihandle *ih, const char* bgcolor, int make_inactive)
+{
+ unsigned char bg_r = 0, bg_g = 0, bg_b = 0;
+ int y,x,bmp_line_size,data_line_size,
+ width = ih->currentwidth,
+ height = ih->currentheight,
+ channels = iupAttribGetInt(ih, "CHANNELS"),
+ flat_alpha = iupAttribGetBoolean(ih, "FLAT_ALPHA"),
+ bpp = iupAttribGetInt(ih, "BPP");
+ unsigned char *imgdata = (unsigned char*)iupAttribGetStr(ih, "WID");
+ HBITMAP hBitmap;
+ BYTE* bits; /* DIB bitmap bits, created in CreateDIBSection and filled here */
+
+ iupStrToRGB(bgcolor, &bg_r, &bg_g, &bg_b);
+
+ hBitmap = winImageCreateBitmap(ih, width, height, bpp, &bits, bg_r, bg_g, bg_b, make_inactive);
+ if (!hBitmap)
+ return NULL;
+
+ bmp_line_size = ((width * bpp + 31) / 32) * 4; /* DWORD aligned, 4 bytes boundary in a N bpp image */
+ data_line_size = width*channels;
+
+ /* windows bitmaps are bottom up */
+ imgdata += (height-1)*data_line_size; /* iupimage is top down */
+
+ for (y=0; y<height; y++)
+ {
+ for (x=0; x<width; x++)
+ {
+ if (bpp != 8) /* (bpp == 32 || bpp == 24) */
+ {
+ int offset = channels*x;
+ /* Windows Bitmap order is BGRA */
+ BYTE *b = &bits[offset],
+ *g = b+1,
+ *r = g+1,
+ *a = r+1,
+ *dat = &imgdata[offset];
+
+ *r = *(dat);
+ *g = *(dat+1);
+ *b = *(dat+2);
+
+ if (channels == 4) /* bpp==32 */
+ {
+ if (flat_alpha)
+ {
+ *a = *(dat+3);
+ *r = iupALPHABLEND(*r, bg_r, *a);
+ *g = iupALPHABLEND(*g, bg_g, *a);
+ *b = iupALPHABLEND(*b, bg_b, *a);
+ *a = 255;
+ }
+
+ if (make_inactive)
+ iupImageColorMakeInactive(r, g, b, bg_r, bg_g, bg_b);
+
+ if (!flat_alpha)
+ {
+ *a = *(dat+3);
+
+ /* RGB in RGBA DIBs are pre-multiplied by alpha to AlphaBlend usage. */
+ *r = iupALPHAPRE(*r,*a);
+ *g = iupALPHAPRE(*g,*a);
+ *b = iupALPHAPRE(*b,*a);
+ }
+ }
+ }
+ else /* bpp == 8 */
+ {
+ bits[x] = imgdata[x];
+ }
+ }
+
+ bits += bmp_line_size;
+ imgdata -= data_line_size; /* iupimage is top down */
+ }
+
+ if (make_inactive || (channels == 4 && flat_alpha))
+ iupAttribSetStr(ih, "_IUP_BGCOLOR_DEPEND", "1");
+
+ return hBitmap;
+}
+
+static HBITMAP winImageCreateBitmask(Ihandle *ih, int invert)
+{
+ int y, x, mask_line_size,data_line_size, colors_count, set,
+ width = ih->currentwidth,
+ height = ih->currentheight,
+ channels = iupAttribGetInt(ih, "CHANNELS"),
+ bpp = iupAttribGetInt(ih, "BPP");
+ unsigned char *imgdata = (unsigned char*)iupAttribGetStr(ih, "WID");
+ HBITMAP hBitmap;
+ BYTE* bitmask, *bitmask_ptr;
+ iupColor colors[256];
+
+ if (bpp == 8)
+ iupImageInitColorTable(ih, colors, &colors_count);
+
+ mask_line_size = ((width + 15) / 16) * 2; /* WORD aligned, 2 bytes boundary in a 1 bpp image */
+ data_line_size = width*channels;
+
+ bitmask = malloc(height * mask_line_size);
+ memset(bitmask, 0, height * mask_line_size); /* opaque */
+
+ /* mask and iupimage are top down */
+
+ bitmask_ptr = bitmask;
+ for (y=0; y<height; y++)
+ {
+ for (x=0; x<width; x++)
+ {
+ set = 0;
+
+ if (bpp == 32)
+ {
+ BYTE* dat = &imgdata[channels*x];
+ if (*(dat+3) == 0) /* full transparent alpha */
+ set = 1;
+ }
+ else if (bpp == 8)
+ {
+ unsigned char index = imgdata[x];
+ if (colors[index].a == 0) /* full transparent alpha */
+ set = 1;
+ }
+
+ if (set)
+ bitmask_ptr[x/8] |= 1 << (7 - (x % 8)); /* set transparent mask bit */
+ }
+
+ bitmask_ptr += mask_line_size;
+ imgdata += data_line_size;
+ }
+
+ if (invert)
+ {
+ int k, size = height * mask_line_size;
+ for (k = 0; k < size; k++)
+ bitmask[k] = ~bitmask[k];
+ }
+
+ hBitmap = CreateBitmap(width, height, 1, 1, bitmask);
+ free(bitmask);
+ return hBitmap;
+}
+
+static HICON winImageCreateIcon(Ihandle *ih, int is_cursor)
+{
+ HBITMAP hBitmap, hBitmapMask;
+ ICONINFO iconinfo;
+ HICON icon;
+ char* color0 = NULL;
+
+ /* If cursor and no transparency defined, assume 0 if transparent.
+ We do this only in Windows and because of backward compatibility. */
+ if (is_cursor)
+ {
+ int bpp = iupAttribGetInt(ih, "BPP");
+ if (bpp == 8)
+ {
+ if (!iupStrEqual(iupAttribGet(ih, "0"), "BGCOLOR") &&
+ !iupStrEqual(iupAttribGet(ih, "1"), "BGCOLOR") &&
+ !iupStrEqual(iupAttribGet(ih, "2"), "BGCOLOR"))
+ {
+ color0 = iupStrDup(iupAttribGet(ih, "0"));
+ iupAttribSetStr(ih, "0", "BGCOLOR");
+ }
+ }
+ }
+
+ hBitmap = iupdrvImageCreateImage(ih, NULL, 0);
+ if (!hBitmap)
+ {
+ if (color0) free(color0);
+ return NULL;
+ }
+
+ /* Transparency mask */
+ hBitmapMask = winImageCreateBitmask(ih, 0);
+ if (!hBitmapMask)
+ {
+ DeleteObject(hBitmap);
+ if (color0) free(color0);
+ return NULL;
+ }
+
+ /* destination = (destination AND bitmask) XOR bitmap */
+ iconinfo.hbmMask = hBitmapMask; /* AND */
+ iconinfo.hbmColor = hBitmap; /* XOR */
+
+ if (is_cursor)
+ {
+ int x=0,y=0;
+ iupStrToIntInt(iupAttribGet(ih, "HOTSPOT"), &x, &y, ':');
+
+ iconinfo.xHotspot = x;
+ iconinfo.yHotspot = y;
+ iconinfo.fIcon = FALSE;
+ }
+ else
+ iconinfo.fIcon = TRUE;
+
+ icon = CreateIconIndirect(&iconinfo);
+
+ DeleteObject(hBitmap);
+ DeleteObject(hBitmapMask);
+
+ if (color0)
+ {
+ iupAttribStoreStr(ih, "0", color0);
+ free(color0);
+ }
+
+ return icon;
+}
+
+void* iupdrvImageCreateIcon(Ihandle *ih)
+{
+ return winImageCreateIcon(ih, 0);
+}
+
+void* iupdrvImageCreateCursor(Ihandle *ih)
+{
+ return winImageCreateIcon(ih, 1);
+}
+
+void* iupdrvImageCreateMask(Ihandle *ih)
+{
+ int invert = 1;
+ if (!ih) return NULL;
+ if (iupAttribGet(ih, "_IUPIMG_NO_INVERT")) invert = 0;
+ return (void*)winImageCreateBitmask(ih, invert);
+}
+
+void* iupdrvImageLoad(const char* name, int type)
+{
+ int iup2win[3] = {IMAGE_BITMAP, IMAGE_ICON, IMAGE_CURSOR};
+ HANDLE hImage = LoadImage(iupwin_hinstance, (LPCTSTR)name, iup2win[type], 0, 0, type==0?LR_CREATEDIBSECTION:0);
+ if (!hImage && iupwin_dll_hinstance)
+ hImage = LoadImage(iupwin_dll_hinstance, (LPCTSTR)name, iup2win[type], 0, 0, type==0?LR_CREATEDIBSECTION:0);
+ if (!hImage)
+ hImage = LoadImage(NULL, (LPCTSTR)name, iup2win[type], 0, 0, LR_LOADFROMFILE|(type==0?LR_CREATEDIBSECTION:0));
+ return hImage;
+}
+
+int iupdrvImageGetInfo(void* handle, int *w, int *h, int *bpp)
+{
+ BITMAP bm;
+ if (!GetObject((HBITMAP)handle, sizeof(BITMAP), (LPSTR)&bm))
+ {
+ if (w) *w = 0;
+ if (h) *h = 0;
+ if (bpp) *bpp = 0;
+ return 0;
+ }
+ if (w) *w = bm.bmWidth;
+ if (h) *h = abs(bm.bmHeight);
+ if (bpp) *bpp = iupImageNormBpp(bm.bmBitsPixel*bm.bmPlanes);
+ return 1;
+}
+
+void iupdrvImageDestroy(void* handle, int type)
+{
+ switch (type)
+ {
+ case IUPIMAGE_IMAGE:
+ if (GetObjectType((HBITMAP)handle)==OBJ_BITMAP)
+ DeleteObject((HBITMAP)handle);
+ else
+ GlobalFree((HANDLE)handle);
+ break;
+ case IUPIMAGE_ICON:
+ DestroyIcon((HICON)handle);
+ break;
+ case IUPIMAGE_CURSOR:
+ DestroyCursor((HCURSOR)handle);
+ break;
+ }
+}
+
diff --git a/iup/src/win/iupwin_info.c b/iup/src/win/iupwin_info.c
new file mode 100755
index 0000000..8ea7dd4
--- /dev/null
+++ b/iup/src/win/iupwin_info.c
@@ -0,0 +1,277 @@
+/** \file
+ * \brief Windows System Information
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <windows.h>
+#include <uxtheme.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+#include "iup_drv.h"
+
+#include "iupwin_info.h"
+
+
+int iupwinIsVista(void)
+{
+ OSVERSIONINFO osvi;
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+ GetVersionEx(&osvi);
+
+ if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT && osvi.dwMajorVersion >= 6)
+ return 1;
+
+ return 0;
+}
+
+int iupwinGetSystemMajorVersion(void)
+{
+ OSVERSIONINFO osvi;
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+ GetVersionEx(&osvi);
+ return osvi.dwMajorVersion;
+}
+
+char *iupwinGetSystemLanguage(void)
+{
+ LANGID id = GetSystemDefaultUILanguage();
+ char *lang = NULL;
+ switch(id)
+ {
+ case 0x0000: lang = "Language Neutral"; break;
+ case 0x007f: lang = "Locale Invariant"; break;
+ case 0x0400: lang = "User Default Language"; break;
+ case 0x0800: lang = "System Default Language"; break;
+ case 0x0436: lang = "Afrikaans"; break;
+ case 0x041c: lang = "Albanian"; break;
+ case 0x0401: lang = "Arabic (Saudi Arabia)"; break;
+ case 0x0801: lang = "Arabic (Iraq)"; break;
+ case 0x0c01: lang = "Arabic (Egypt)"; break;
+ case 0x1001: lang = "Arabic (Libya)"; break;
+ case 0x1401: lang = "Arabic (Algeria)"; break;
+ case 0x1801: lang = "Arabic (Morocco)"; break;
+ case 0x1c01: lang = "Arabic (Tunisia)"; break;
+ case 0x2001: lang = "Arabic (Oman)"; break;
+ case 0x2401: lang = "Arabic (Yemen)"; break;
+ case 0x2801: lang = "Arabic (Syria)"; break;
+ case 0x2c01: lang = "Arabic (Jordan)"; break;
+ case 0x3001: lang = "Arabic (Lebanon)"; break;
+ case 0x3401: lang = "Arabic (Kuwait)"; break;
+ case 0x3801: lang = "Arabic (U.A.E.)"; break;
+ case 0x3c01: lang = "Arabic (Bahrain)"; break;
+ case 0x4001: lang = "Arabic (Qatar)"; break;
+ case 0x042b: lang = "Armenian"; break;
+ case 0x042c: lang = "Azeri (Latin)"; break;
+ case 0x082c: lang = "Azeri (Cyrillic)"; break;
+ case 0x042d: lang = "Basque"; break;
+ case 0x0423: lang = "Belarusian"; break;
+ case 0x0402: lang = "Bulgarian"; break;
+ case 0x0455: lang = "Burmese"; break;
+ case 0x0403: lang = "Catalan"; break;
+ case 0x0404: lang = "Chinese (Taiwan)"; break;
+ case 0x0804: lang = "Chinese"; break;
+ case 0x0c04: lang = "Chinese (Hong Kong)"; break;
+ case 0x1004: lang = "Chinese (Singapore)"; break;
+ case 0x1404: lang = "Chinese (Macau)"; break;
+ case 0x041a: lang = "Croatian"; break;
+ case 0x0405: lang = "Czech"; break;
+ case 0x0406: lang = "Danish"; break;
+ case 0x0465: lang = "Divehi"; break;
+ case 0x0413: lang = "Dutch (Netherlands)"; break;
+ case 0x0813: lang = "Dutch (Belgium)"; break;
+ case 0x0409: lang = "English (United States)"; break;
+ case 0x0809: lang = "English (United Kingdom)"; break;
+ case 0x0c09: lang = "English (Australian)"; break;
+ case 0x1009: lang = "English (Canadian)"; break;
+ case 0x1409: lang = "English (New Zealand)"; break;
+ case 0x1809: lang = "English (Ireland)"; break;
+ case 0x1c09: lang = "English (South Africa)"; break;
+ case 0x2009: lang = "English (Jamaica)"; break;
+ case 0x2409: lang = "English (Caribbean)"; break;
+ case 0x2809: lang = "English (Belize)"; break;
+ case 0x2c09: lang = "English (Trinidad)"; break;
+ case 0x3009: lang = "English (Zimbabwe)"; break;
+ case 0x3409: lang = "English (Philippines)"; break;
+ case 0x0425: lang = "Estonian"; break;
+ case 0x0438: lang = "Faeroese"; break;
+ case 0x0429: lang = "Farsi"; break;
+ case 0x040b: lang = "Finnish"; break;
+ case 0x040c: lang = "French (Standard)"; break;
+ case 0x080c: lang = "French (Belgian)"; break;
+ case 0x0c0c: lang = "French (Canadian)"; break;
+ case 0x100c: lang = "French (Switzerland)"; break;
+ case 0x140c: lang = "French (Luxembourg)"; break;
+ case 0x180c: lang = "French (Monaco)"; break;
+ case 0x0456: lang = "Galician"; break;
+ case 0x0437: lang = "Georgian"; break;
+ case 0x0407: lang = "German (Standard)"; break;
+ case 0x0807: lang = "German (Switzerland)"; break;
+ case 0x0c07: lang = "German (Austria)"; break;
+ case 0x1007: lang = "German (Luxembourg)"; break;
+ case 0x1407: lang = "German (Liechtenstein)"; break;
+ case 0x0408: lang = "Greek"; break;
+ case 0x0447: lang = "Gujarati"; break;
+ case 0x040d: lang = "Hebrew"; break;
+ case 0x0439: lang = "Hindi"; break;
+ case 0x040e: lang = "Hungarian"; break;
+ case 0x040f: lang = "Icelandic"; break;
+ case 0x0421: lang = "Indonesian"; break;
+ case 0x0410: lang = "Italian (Standard)"; break;
+ case 0x0810: lang = "Italian (Switzerland)"; break;
+ case 0x0411: lang = "Japanese"; break;
+ case 0x044b: lang = "Kannada"; break;
+ case 0x0457: lang = "Konkani"; break;
+ case 0x0412: lang = "Korean"; break;
+ case 0x0812: lang = "Korean (Johab)"; break;
+ case 0x0440: lang = "Kyrgyz"; break;
+ case 0x0426: lang = "Latvian"; break;
+ case 0x0427: lang = "Lithuanian"; break;
+ case 0x0827: lang = "Lithuanian (Classic)"; break;
+ case 0x042f: lang = "Macedonian"; break;
+ case 0x043e: lang = "Malay (Malaysian)"; break;
+ case 0x083e: lang = "Malay (Brunei Darussalam)"; break;
+ case 0x044e: lang = "Marathi"; break;
+ case 0x0450: lang = "Mongolian"; break;
+ case 0x0414: lang = "Norwegian (Bokmal)"; break;
+ case 0x0814: lang = "Norwegian (Nynorsk)"; break;
+ case 0x0415: lang = "Polish"; break;
+ case 0x0416: lang = "Portuguese (Brazil)"; break;
+ case 0x0816: lang = "Portuguese (Portugal)"; break;
+ case 0x0446: lang = "Punjabi"; break;
+ case 0x0418: lang = "Romanian"; break;
+ case 0x0419: lang = "Russian"; break;
+ case 0x044f: lang = "Sanskrit"; break;
+ case 0x0c1a: lang = "Serbian (Cyrillic)"; break;
+ case 0x081a: lang = "Serbian (Latin)"; break;
+ case 0x041b: lang = "Slovak"; break;
+ case 0x0424: lang = "Slovenian"; break;
+ case 0x040a: lang = "Spanish (Spain, Traditional Sort)"; break;
+ case 0x080a: lang = "Spanish (Mexican)"; break;
+ case 0x0c0a: lang = "Spanish (Spain, International Sort)"; break;
+ case 0x100a: lang = "Spanish (Guatemala)"; break;
+ case 0x140a: lang = "Spanish (Costa Rica)"; break;
+ case 0x180a: lang = "Spanish (Panama)"; break;
+ case 0x1c0a: lang = "Spanish (Dominican Republic)"; break;
+ case 0x200a: lang = "Spanish (Venezuela)"; break;
+ case 0x240a: lang = "Spanish (Colombia)"; break;
+ case 0x280a: lang = "Spanish (Peru)"; break;
+ case 0x2c0a: lang = "Spanish (Argentina)"; break;
+ case 0x300a: lang = "Spanish (Ecuador)"; break;
+ case 0x340a: lang = "Spanish (Chile)"; break;
+ case 0x380a: lang = "Spanish (Uruguay)"; break;
+ case 0x3c0a: lang = "Spanish (Paraguay)"; break;
+ case 0x400a: lang = "Spanish (Bolivia)"; break;
+ case 0x440a: lang = "Spanish (El Salvador)"; break;
+ case 0x480a: lang = "Spanish (Honduras)"; break;
+ case 0x4c0a: lang = "Spanish (Nicaragua)"; break;
+ case 0x500a: lang = "Spanish (Puerto Rico)"; break;
+ case 0x0430: lang = "Sutu"; break;
+ case 0x0441: lang = "Swahili (Kenya)"; break;
+ case 0x041d: lang = "Swedish"; break;
+ case 0x081d: lang = "Swedish (Finland)"; break;
+ case 0x045a: lang = "Syriac"; break;
+ case 0x0449: lang = "Tamil"; break;
+ case 0x0444: lang = "Tatar (Tatarstan)"; break;
+ case 0x044a: lang = "Telugu"; break;
+ case 0x041e: lang = "Thai"; break;
+ case 0x041f: lang = "Turkish"; break;
+ case 0x0422: lang = "Ukrainian"; break;
+ case 0x0420: lang = "Urdu (Pakistan)"; break;
+ case 0x0820: lang = "Urdu (India)"; break;
+ case 0x0443: lang = "Uzbek (Latin)"; break;
+ case 0x0843: lang = "Uzbek (Cyrillic)"; break;
+ case 0x042a: lang = "Vietnamese"; break;
+ }
+ return lang;
+}
+
+#define PACKVERSION(major,minor) MAKELONG(minor,major)
+typedef struct _DLLVERSIONINFO
+{
+ DWORD cbSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ DWORD dwBuildNumber;
+ DWORD dwPlatformID;
+} DLLVERSIONINFO;
+typedef HRESULT (CALLBACK* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
+
+static DWORD winGetDllVersion(LPCTSTR lpszDllName)
+{
+ HINSTANCE hinstDll;
+ DWORD dwVersion = 0;
+
+ /* For security purposes, LoadLibrary should be provided with a
+ fully-qualified path to the DLL. The lpszDllName variable should be
+ tested to ensure that it is a fully qualified path before it is used. */
+ hinstDll = LoadLibrary(lpszDllName);
+
+ if (hinstDll)
+ {
+ DLLGETVERSIONPROC pDllGetVersion;
+ pDllGetVersion = (DLLGETVERSIONPROC)GetProcAddress(hinstDll, "DllGetVersion");
+
+ /* Because some DLLs might not implement this function, you
+ must test for it explicitly. Depending on the particular
+ DLL, the lack of a DllGetVersion function can be a useful
+ indicator of the version. */
+
+ if (pDllGetVersion)
+ {
+ DLLVERSIONINFO dvi;
+ HRESULT hr;
+
+ ZeroMemory(&dvi, sizeof(dvi));
+ dvi.cbSize = sizeof(dvi);
+
+ hr = pDllGetVersion(&dvi);
+ if (SUCCEEDED(hr))
+ dwVersion = PACKVERSION(dvi.dwMajorVersion, dvi.dwMinorVersion);
+ }
+
+ FreeLibrary(hinstDll);
+ }
+
+ return dwVersion;
+}
+
+int iupwinGetComCtl32Version(void)
+{
+ return winGetDllVersion(TEXT("comctl32.dll"));
+}
+
+void iupwinGetSysColor(char* color, int wincolor)
+{
+ COLORREF syscolor = GetSysColor(wincolor);
+ sprintf(color, "%d %d %d", (int)GetRValue(syscolor), (int)GetGValue(syscolor), (int)GetBValue(syscolor));
+}
+
+char* iupwinGetSystemFgColor(void)
+{
+ static char def_fgcolor[50];
+ iupwinGetSysColor(def_fgcolor, COLOR_WINDOWTEXT);
+ return def_fgcolor;
+}
+
+int iupwinIsAppThemed(void)
+{
+ typedef BOOL (STDAPICALLTYPE *winIsAppThemed)(void);
+ static winIsAppThemed myIsAppThemed = NULL;
+ if (!myIsAppThemed)
+ {
+ HMODULE hinstDll = LoadLibrary("uxtheme.dll");
+ if (hinstDll)
+ myIsAppThemed = (winIsAppThemed)GetProcAddress(hinstDll, "IsAppThemed");
+ }
+
+ if (myIsAppThemed)
+ return myIsAppThemed();
+ else
+ return 0;
+}
diff --git a/iup/src/win/iupwin_info.h b/iup/src/win/iupwin_info.h
new file mode 100755
index 0000000..d39bae0
--- /dev/null
+++ b/iup/src/win/iupwin_info.h
@@ -0,0 +1,29 @@
+/** \file
+ * \brief Windows System Information
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPWIN_INFO_H
+#define __IUPWIN_INFO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* system */
+int iupwinGetSystemMajorVersion(void);
+int iupwinGetComCtl32Version(void);
+char* iupwinGetSystemLanguage(void);
+int iupwinIsAppThemed(void);
+int iupwinIsVista(void);
+
+/* color */
+void iupwinGetSysColor(char* color, int wincolor);
+char* iupwinGetSystemFgColor(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/src/win/iupwin_key.c b/iup/src/win/iupwin_key.c
new file mode 100755
index 0000000..921ed94
--- /dev/null
+++ b/iup/src/win/iupwin_key.c
@@ -0,0 +1,348 @@
+/** \file
+ * \brief Windows Driver keyboard mapping
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+
+#include <windows.h>
+
+#include "iup.h"
+#include "iupkey.h"
+
+#include "iup_object.h"
+#include "iup_key.h"
+
+#include "iupwin_drv.h"
+
+
+#ifndef VK_OEM_PLUS
+#define VK_OEM_PLUS 0xBB /* '+' any country */
+#define VK_OEM_COMMA 0xBC /* ',' any country */
+#define VK_OEM_MINUS 0xBD /* '-' any country */
+#define VK_OEM_PERIOD 0xBE /* '.' any country */
+#define VK_OEM_102 0xE2 /* "<>" or "\|" on RT 102-key kbd. */
+#endif
+
+typedef struct _Iwin2iupkey
+{
+ int wincode;
+ int iupcode;
+ int s_iupcode;
+ int c_iupcode;
+ int m_iupcode;
+ int y_iupcode;
+} Iwin2iupkey;
+
+static Iwin2iupkey winkey_map[] = {
+
+{ VK_ESCAPE, K_ESC, K_sESC, K_cESC, K_mESC, K_yESC },
+{ VK_PAUSE, K_PAUSE, K_sPAUSE, K_cPAUSE, K_mPAUSE, K_yPAUSE },
+{ VK_SNAPSHOT, K_Print, K_sPrint, K_cPrint, K_mPrint, K_yPrint },
+{ VK_APPS, K_Menu, K_sMenu, K_cMenu, K_mMenu, K_yMenu },
+
+{ VK_HOME, K_HOME, K_sHOME, K_cHOME, K_mHOME, K_yHOME },
+{ VK_UP, K_UP, K_sUP, K_cUP, K_mUP, K_yUP },
+{ VK_PRIOR, K_PGUP, K_sPGUP, K_cPGUP, K_mPGUP, K_yPGUP },
+{ VK_LEFT, K_LEFT, K_sLEFT, K_cLEFT, K_mLEFT, K_yLEFT },
+{ VK_CLEAR, K_MIDDLE,K_sMIDDLE, K_cMIDDLE,K_mMIDDLE,K_yMIDDLE},
+{ VK_RIGHT, K_RIGHT, K_sRIGHT, K_cRIGHT, K_mRIGHT, K_yRIGHT },
+{ VK_END, K_END, K_sEND, K_cEND, K_mEND, K_yEND },
+{ VK_DOWN, K_DOWN, K_sDOWN, K_cDOWN, K_mDOWN, K_yDOWN },
+{ VK_NEXT, K_PGDN, K_sPGDN, K_cPGDN, K_mPGDN, K_yPGDN },
+{ VK_INSERT, K_INS, K_sINS, K_cINS, K_mINS, K_yINS },
+{ VK_DELETE, K_DEL, K_sDEL, K_cDEL, K_mDEL, K_yDEL },
+{ VK_SPACE, K_SP, K_sSP, K_cSP, K_mSP, K_ySP },
+{ VK_TAB, K_TAB, K_sTAB, K_cTAB, K_mTAB, K_yTAB },
+{ VK_RETURN, K_CR, K_sCR, K_cCR, K_mCR, K_yCR },
+{ VK_BACK, K_BS, K_sBS, K_cBS, K_mBS, K_yBS },
+
+/* VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39) */
+{ '1', K_1, K_exclam, K_c1, K_m1, K_y1 },
+{ '2', K_2, K_at, K_c2, K_m2, K_y2 },
+{ '3', K_3, K_numbersign, K_c3, K_m3, K_y3 },
+{ '4', K_4, K_dollar, K_c4, K_m4, K_y4 },
+{ '5', K_5, K_percent, K_c5, K_m5, K_y5 },
+{ '6', K_6, K_circum, K_c6, K_m6, K_y6 },
+{ '7', K_7, K_ampersand, K_c7, K_m7, K_y7 },
+{ '8', K_8, K_asterisk, K_c8, K_m8, K_y8 },
+{ '9', K_9, K_parentleft, K_c9, K_m9, K_y9 },
+{ '0', K_0, K_parentright, K_c0, K_m0, K_y0 },
+
+/* VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) */
+{ 'A', K_a, K_A, K_cA, K_mA, K_yA},
+{ 'B', K_b, K_B, K_cB, K_mB, K_yB},
+{ 'C', K_c, K_C, K_cC, K_mC, K_yC},
+{ 'D', K_d, K_D, K_cD, K_mD, K_yD},
+{ 'E', K_e, K_E, K_cE, K_mE, K_yE},
+{ 'F', K_f, K_F, K_cF, K_mF, K_yF},
+{ 'G', K_g, K_G, K_cG, K_mG, K_yG},
+{ 'H', K_h, K_H, K_cH, K_mH, K_yH},
+{ 'I', K_i, K_I, K_cI, K_mI, K_yI},
+{ 'J', K_j, K_J, K_cJ, K_mJ, K_yJ},
+{ 'K', K_k, K_K, K_cK, K_mK, K_yK},
+{ 'L', K_l, K_L, K_cL, K_mL, K_yL},
+{ 'M', K_m, K_M, K_cM, K_mM, K_yM},
+{ 'N', K_n, K_N, K_cN, K_mN, K_yN},
+{ 'O', K_o, K_O, K_cO, K_mO, K_yO},
+{ 'P', K_p, K_P, K_cP, K_mP, K_yP},
+{ 'Q', K_q, K_Q, K_cQ, K_mQ, K_yQ},
+{ 'R', K_r, K_R, K_cR, K_mR, K_yR},
+{ 'S', K_s, K_S, K_cS, K_mS, K_yS},
+{ 'T', K_t, K_T, K_cT, K_mT, K_yT},
+{ 'U', K_u, K_U, K_cU, K_mU, K_yU},
+{ 'V', K_v, K_V, K_cV, K_mV, K_yV},
+{ 'W', K_w, K_W, K_cW, K_mW, K_yW},
+{ 'X', K_x, K_X, K_cX, K_mX, K_yX},
+{ 'Y', K_y, K_Y, K_cY, K_mY, K_yY},
+{ 'Z', K_z, K_Z, K_cZ, K_mZ, K_yZ},
+
+{ VK_F1, K_F1, K_sF1, K_cF1, K_mF1, K_yF1 },
+{ VK_F2, K_F2, K_sF2, K_cF2, K_mF2, K_yF2 },
+{ VK_F3, K_F3, K_sF3, K_cF3, K_mF3, K_yF3 },
+{ VK_F4, K_F4, K_sF4, K_cF4, K_mF4, K_yF4 },
+{ VK_F5, K_F5, K_sF5, K_cF5, K_mF5, K_yF5 },
+{ VK_F6, K_F6, K_sF6, K_cF6, K_mF6, K_yF6 },
+{ VK_F7, K_F7, K_sF7, K_cF7, K_mF7, K_yF7 },
+{ VK_F8, K_F8, K_sF8, K_cF8, K_mF8, K_yF8 },
+{ VK_F9, K_F9, K_sF9, K_cF9, K_mF9, K_yF9 },
+{ VK_F10, K_F10, K_sF10, K_cF10, K_mF10, K_yF10 },
+{ VK_F11, K_F11, K_sF11, K_cF11, K_mF11, K_yF11 },
+{ VK_F12, K_F12, K_sF12, K_cF12, K_mF12, K_yF12 },
+
+{ VK_OEM_1, K_semicolon, K_colon, K_cSemicolon, K_mSemicolon, K_ySemicolon },
+{ VK_OEM_PLUS, K_equal, K_plus, K_cEqual, K_mEqual, K_yEqual },
+{ VK_OEM_COMMA, K_comma, K_less, K_cComma, K_mComma, K_yComma },
+{ VK_OEM_MINUS, K_minus, K_underscore, K_cMinus, K_mMinus, K_yMinus },
+{ VK_OEM_PERIOD, K_period, K_greater, K_cPeriod, K_mPeriod, K_yPeriod },
+{ VK_OEM_2, K_slash, K_question, K_cSlash, K_mSlash, K_ySlash },
+{ VK_OEM_3, K_grave, K_tilde, 0, 0, 0 },
+{ VK_OEM_4, K_bracketleft, K_braceleft, K_cBracketleft, K_mBracketleft, K_yBracketleft },
+{ VK_OEM_5, K_backslash, K_bar, K_cBackslash, K_mBackslash, K_yBackslash },
+{ VK_OEM_6, K_bracketright, K_braceright, K_cBracketright,K_mBracketright,K_yBracketright },
+{ VK_OEM_7, K_apostrophe, K_quotedbl, 0, 0, 0 },
+{ VK_OEM_102, K_backslash, K_bar, K_cBackslash, K_mBackslash, K_yBackslash },
+
+{ VK_NUMPAD0, K_0, K_0, K_c0, K_m0, K_y0 },
+{ VK_NUMPAD1, K_1, K_1, K_c1, K_m1, K_y1 },
+{ VK_NUMPAD2, K_2, K_2, K_c2, K_m2, K_y2 },
+{ VK_NUMPAD3, K_3, K_3, K_c3, K_m3, K_y3 },
+{ VK_NUMPAD4, K_4, K_4, K_c4, K_m4, K_y4 },
+{ VK_NUMPAD5, K_5, K_5, K_c5, K_m5, K_y5 },
+{ VK_NUMPAD6, K_6, K_6, K_c6, K_m6, K_y6 },
+{ VK_NUMPAD7, K_7, K_7, K_c7, K_m7, K_y7 },
+{ VK_NUMPAD8, K_8, K_8, K_c8, K_m8, K_y8 },
+{ VK_NUMPAD9, K_9, K_9, K_c9, K_m9, K_y9 },
+{ VK_MULTIPLY, K_asterisk, K_sAsterisk, K_cAsterisk, K_mAsterisk, K_yAsterisk },
+{ VK_ADD, K_plus, K_sPlus, K_cPlus, K_mPlus, K_yPlus },
+{ VK_SUBTRACT, K_minus, K_sMinus, K_cMinus, K_mMinus, K_yMinus },
+{ VK_DECIMAL, K_period, K_sPeriod, K_cPeriod, K_mPeriod, K_yPeriod },
+{ VK_DIVIDE, K_slash, K_sSlash, K_cSlash, K_mSlash, K_ySlash },
+{ VK_SEPARATOR, K_comma, K_sComma, K_cComma, K_mComma, K_yComma }
+};
+
+static Iwin2iupkey keytable_abnt[] = {
+{ '1', K_1, K_exclam, K_c1, K_m1, K_y1 },
+{ '2', K_2, K_at, K_c2, K_m2, K_y2 },
+{ '3', K_3, K_numbersign, K_c3, K_m3, K_y3 },
+{ '4', K_4, K_dollar, K_c4, K_m4, K_y4 },
+{ '5', K_5, K_percent, K_c5, K_m5, K_y5 },
+{ '6', K_6, K_circum, K_c6, K_m6, K_y6 },
+
+{ VK_OEM_1, K_ccedilla, K_Ccedilla, K_cCcedilla, K_mCcedilla, K_yCcedilla },
+{ VK_OEM_2, K_semicolon, K_colon, K_cSemicolon, K_mSemicolon, K_ySemicolon },
+{ VK_OEM_3, K_apostrophe, K_quotedbl, 0, 0, 0 },
+{ VK_OEM_4, K_acute, K_grave, 0, 0, 0 },
+{ VK_OEM_5, K_bracketright, K_braceright, K_cBracketleft, K_mBracketleft, K_yBracketleft },
+{ VK_OEM_6, K_bracketleft, K_braceleft, K_cBracketright, K_mBracketright, K_yBracketright },
+{ VK_OEM_7, K_tilde, K_circum, 0, 0, 0 },
+{ VK_OEM_102, K_backslash, K_bar, K_cBackslash, K_mBackslash, K_yBackslash },
+{ VK_OEM_PLUS, K_equal, K_plus, K_cEqual, K_mEqual, K_yEqual },
+{ 0xC1, K_slash, K_question, K_cSlash, K_mSlash, K_ySlash },
+{ 0xC2, K_period, K_sPeriod, K_cPeriod, K_mPeriod, K_yPeriod },
+{ VK_SEPARATOR,K_period, K_sPeriod, K_cPeriod, K_mPeriod, K_yPeriod },
+{ VK_DECIMAL, K_comma, K_sComma, K_cComma, K_mComma, K_yComma }
+};
+
+
+void iupwinKeyEncode(int key, unsigned int *keyval, unsigned int *state)
+{
+ int i, iupcode = key & 0xFF; /* 0-255 interval */
+ int count = sizeof(winkey_map)/sizeof(winkey_map[0]);
+ for (i = 0; i < count; i++)
+ {
+ Iwin2iupkey* key_map = &(winkey_map[i]);
+ if (key_map->iupcode == iupcode)
+ {
+ *keyval = key_map->wincode;
+ *state = 0;
+
+ if (iupcode != key)
+ {
+ if (key_map->c_iupcode == key)
+ *state = VK_CONTROL;
+ else if (key_map->m_iupcode == key)
+ *state = VK_MENU;
+ else if (key_map->y_iupcode == key)
+ *state = VK_LWIN;
+ else if (key_map->s_iupcode == key)
+ *state = VK_SHIFT;
+ }
+ return;
+ }
+ else if (key_map->s_iupcode == key) /* There are Shift keys bellow 256 */
+ {
+ *keyval = key_map->wincode;
+ *state = VK_SHIFT;
+ return;
+ }
+ }
+}
+
+static int winKeyMap2Iup(Iwin2iupkey* table, int i)
+{
+ int code = 0;
+ if (GetKeyState(VK_CONTROL) & 0x8000)
+ code = table[i].c_iupcode;
+ else if (GetKeyState(VK_MENU) & 0x8000)
+ code = table[i].m_iupcode;
+ else if ((GetKeyState(VK_LWIN) & 0x8000) || (GetKeyState(VK_RWIN) & 0x8000))
+ code = table[i].y_iupcode;
+ else if (GetKeyState(VK_CAPITAL) & 0x01) /* if it's on */
+ {
+ if ((GetKeyState(VK_SHIFT) & 0x8000) || !iupKeyCanCaps(table[i].iupcode))
+ return table[i].iupcode;
+ else
+ code = table[i].s_iupcode;
+ }
+ else if (GetKeyState(VK_SHIFT) & 0x8000)
+ code = table[i].s_iupcode;
+ else
+ return table[i].iupcode;
+
+ if (!code)
+ code = table[i].iupcode;
+
+ return code;
+}
+
+static int winKeyDecode(int wincode)
+{
+ HKL k;
+ int i, count;
+
+ k = GetKeyboardLayout(0);
+ if ((int)HIWORD(k) == 0x0416) /* ABNT */
+ {
+ int abnt_count = sizeof(keytable_abnt)/sizeof(keytable_abnt[0]);
+ for (i = 0; i < abnt_count; i++)
+ {
+ if (keytable_abnt[i].wincode == wincode)
+ return winKeyMap2Iup(keytable_abnt, i);
+ }
+ }
+
+ count = sizeof(winkey_map)/sizeof(winkey_map[0]);
+ for (i = 0; i < count; i++)
+ {
+ if (winkey_map[i].wincode == wincode)
+ return winKeyMap2Iup(winkey_map, i);
+ }
+
+ return 0;
+}
+
+int iupwinKeyEvent(Ihandle* ih, int wincode, int press)
+{
+ int result, code;
+
+ if (!ih->iclass->is_interactive)
+ return 1;
+
+ code = winKeyDecode(wincode);
+ if (code == 0)
+ return 1;
+
+ if (press)
+ {
+ result = iupKeyCallKeyCb(ih, code);
+ if (result == IUP_CLOSE)
+ {
+ IupExitLoop();
+ return 1;
+ }
+ else if (result == IUP_IGNORE)
+ return 0;
+
+ /* in the previous callback the dialog could be destroyed */
+ if (iupObjectCheck(ih))
+ {
+ /* this is called only for canvas */
+ if (ih->iclass->nativetype == IUP_TYPECANVAS)
+ {
+ result = iupKeyCallKeyPressCb(ih, code, 1);
+ if (result == IUP_CLOSE)
+ {
+ IupExitLoop();
+ return 1;
+ }
+ else if (result == IUP_IGNORE)
+ return 0;
+ }
+ }
+
+ if (!iupKeyProcessNavigation(ih, code, (GetKeyState(VK_SHIFT) & 0x8000)))
+ return 0;
+ }
+ else
+ {
+ /* this is called only for canvas */
+ if (ih->iclass->nativetype == IUP_TYPECANVAS)
+ {
+ result = iupKeyCallKeyPressCb(ih, code, 0);
+ if (result == IUP_CLOSE)
+ {
+ IupExitLoop();
+ return 1;
+ }
+ else if (result == IUP_IGNORE)
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+void iupwinButtonKeySetStatus(WORD keys, char* status, int doubleclick)
+{
+ if (keys & MK_SHIFT)
+ iupKEYSETSHIFT(status);
+
+ if (keys & MK_CONTROL)
+ iupKEYSETCONTROL(status);
+
+ if (keys & MK_LBUTTON)
+ iupKEYSETBUTTON1(status);
+
+ if (keys & MK_MBUTTON)
+ iupKEYSETBUTTON2(status);
+
+ if (keys & MK_RBUTTON)
+ iupKEYSETBUTTON3(status);
+
+ if (doubleclick)
+ iupKEYSETDOUBLE(status);
+
+ if (GetKeyState(VK_MENU) & 0x8000)
+ iupKEYSETALT(status);
+
+ if ((GetKeyState(VK_LWIN) & 0x8000) || (GetKeyState(VK_RWIN) & 0x8000))
+ iupKEYSETSYS(status);
+
+ if (keys & MK_XBUTTON1)
+ iupKEYSETBUTTON4(status);
+
+ if (keys & MK_XBUTTON2)
+ iupKEYSETBUTTON5(status);
+}
diff --git a/iup/src/win/iupwin_label.c b/iup/src/win/iupwin_label.c
new file mode 100755
index 0000000..d5a1f53
--- /dev/null
+++ b/iup/src/win/iupwin_label.c
@@ -0,0 +1,339 @@
+/** \file
+ * \brief Label Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_label.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_image.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+#include "iupwin_draw.h"
+
+
+static void winLabelDrawImage(Ihandle* ih, HDC hDC, int rect_width, int rect_height)
+{
+ int xpad = ih->data->horiz_padding,
+ ypad = ih->data->vert_padding;
+ int x, y, width, height, bpp;
+ HBITMAP hBitmap, hMask = NULL;
+ char *name;
+ int make_inactive = 0;
+
+ if (iupdrvIsActive(ih))
+ name = iupAttribGet(ih, "IMAGE");
+ else
+ {
+ name = iupAttribGet(ih, "IMINACTIVE");
+ if (!name)
+ {
+ name = iupAttribGet(ih, "IMAGE");
+ make_inactive = 1;
+ }
+ }
+
+ hBitmap = iupImageGetImage(name, ih, make_inactive);
+ if (!hBitmap)
+ return;
+
+ /* must use this info, since image can be a driver image loaded from resources */
+ iupdrvImageGetInfo(hBitmap, &width, &height, &bpp);
+
+ if (ih->data->horiz_alignment == IUP_ALIGN_ARIGHT)
+ x = rect_width - (width + 2*xpad);
+ else if (ih->data->horiz_alignment == IUP_ALIGN_ACENTER)
+ x = (rect_width - (width + 2*xpad))/2;
+ else /* ALEFT */
+ x = 0;
+
+ if (ih->data->vert_alignment == IUP_ALIGN_ABOTTOM)
+ y = rect_height - (height + 2*ypad);
+ else if (ih->data->vert_alignment == IUP_ALIGN_ATOP)
+ y = 0;
+ else /* ACENTER */
+ y = (rect_height - (height + 2*ypad))/2;
+
+ x += xpad;
+ y += ypad;
+
+ if (bpp == 8)
+ hMask = iupdrvImageCreateMask(IupGetHandle(name));
+
+ iupwinDrawBitmap(hDC, hBitmap, hMask, x, y, width, height, bpp);
+
+ if (hMask)
+ DeleteObject(hMask);
+}
+
+static void winLabelDrawText(Ihandle* ih, HDC hDC, int rect_width, int rect_height)
+{
+ int xpad = ih->data->horiz_padding,
+ ypad = ih->data->vert_padding;
+ int x, y, width, height, style;
+ HFONT hFont = (HFONT)iupwinGetHFontAttrib(ih);
+ COLORREF fgcolor;
+
+ char* title = iupdrvBaseGetTitleAttrib(ih);
+ char* str = iupStrProcessMnemonic(title, NULL, 0); /* remove & */
+ iupdrvFontGetMultiLineStringSize(ih, str, &width, &height);
+ if (str && str!=title) free(str);
+
+ if (ih->data->horiz_alignment == IUP_ALIGN_ARIGHT)
+ style = DT_RIGHT;
+ else if (ih->data->horiz_alignment == IUP_ALIGN_ACENTER)
+ style = DT_CENTER;
+ else /* ALEFT */
+ style = DT_LEFT;
+
+ if (ih->data->vert_alignment == IUP_ALIGN_ABOTTOM)
+ y = rect_height - (height + 2*ypad);
+ else if (ih->data->vert_alignment == IUP_ALIGN_ATOP)
+ y = 0;
+ else /* ACENTER */
+ y = (rect_height - (height + 2*ypad))/2;
+
+ /* let DrawText do the horizontal alignment */
+ x = xpad;
+ width = rect_width - 2*xpad;
+ y += ypad;
+
+ if (iupdrvIsActive(ih))
+ fgcolor = ih->data->fgcolor;
+ else
+ fgcolor = GetSysColor(COLOR_GRAYTEXT);
+
+ /* WORDWRAP and ELLIPSIS */
+ style |= ih->data->text_style;
+
+ iupwinDrawText(hDC, title, x, y, width, height, hFont, fgcolor, style);
+}
+
+static void winLabelDrawItem(Ihandle* ih, DRAWITEMSTRUCT *drawitem)
+{
+ HDC hDC;
+ iupwinBitmapDC bmpDC;
+ int width, height;
+
+ if (!(drawitem->itemAction & ODA_DRAWENTIRE))
+ return;
+
+ width = drawitem->rcItem.right - drawitem->rcItem.left;
+ height = drawitem->rcItem.bottom - drawitem->rcItem.top;
+
+ hDC = iupwinDrawCreateBitmapDC(&bmpDC, drawitem->hDC, width, height);
+
+ iupwinDrawParentBackground(ih, hDC, &drawitem->rcItem);
+
+ if (ih->data->type == IUP_LABEL_IMAGE)
+ winLabelDrawImage(ih, hDC, width, height);
+ else
+ winLabelDrawText(ih, hDC, width, height);
+
+ iupwinDrawDestroyBitmapDC(&bmpDC);
+}
+
+/************************************************************************************************/
+
+static int winLabelSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT)
+ {
+ char value1[30] = "", value2[30] = "";
+
+ iupStrToStrStr(value, value1, value2, ':');
+
+ if (iupStrEqualNoCase(value1, "ARIGHT"))
+ ih->data->horiz_alignment = IUP_ALIGN_ARIGHT;
+ else if (iupStrEqualNoCase(value1, "ACENTER"))
+ ih->data->horiz_alignment = IUP_ALIGN_ACENTER;
+ else /* "ALEFT" */
+ ih->data->horiz_alignment = IUP_ALIGN_ALEFT;
+
+ if (iupStrEqualNoCase(value2, "ABOTTOM"))
+ ih->data->vert_alignment = IUP_ALIGN_ABOTTOM;
+ else if (iupStrEqualNoCase(value2, "ACENTER"))
+ ih->data->vert_alignment = IUP_ALIGN_ACENTER;
+ else /* "ATOP" */
+ ih->data->vert_alignment = IUP_ALIGN_ATOP;
+
+ iupdrvDisplayRedraw(ih);
+ }
+ return 0;
+}
+
+static char* winLabelGetAlignmentAttrib(Ihandle *ih)
+{
+ if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT)
+ {
+ char* horiz_align2str[3] = {"ALEFT", "ACENTER", "ARIGHT"};
+ char* vert_align2str[3] = {"ATOP", "ACENTER", "ABOTTOM"};
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%s:%s", horiz_align2str[ih->data->horiz_alignment], vert_align2str[ih->data->vert_alignment]);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+static int winLabelSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+
+ if (ih->handle && ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT)
+ iupdrvDisplayRedraw(ih);
+
+ return 0;
+}
+
+static int winLabelSetWordWrapAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_LABEL_TEXT)
+ {
+ if (iupStrBoolean(value))
+ ih->data->text_style |= DT_WORDBREAK;
+ else
+ ih->data->text_style &= ~DT_WORDBREAK;
+
+ iupdrvDisplayRedraw(ih);
+ }
+
+ return 1;
+}
+
+static int winLabelSetEllipsisAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_LABEL_TEXT)
+ {
+ if (iupStrBoolean(value))
+ ih->data->text_style |= DT_END_ELLIPSIS;
+ else
+ ih->data->text_style &= ~DT_END_ELLIPSIS;
+
+ iupdrvDisplayRedraw(ih);
+ }
+
+ return 1;
+}
+
+static int winLabelSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT)
+ {
+ unsigned char r, g, b;
+ if (iupStrToRGB(value, &r, &g, &b))
+ {
+ ih->data->fgcolor = RGB(r,g,b);
+ iupdrvDisplayRedraw(ih);
+ }
+ }
+ return 1;
+}
+
+static int winLabelProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ switch (msg)
+ {
+ case WM_NCCALCSIZE:
+ {
+ if (wp == TRUE)
+ {
+ *result = WVR_HREDRAW|WVR_VREDRAW;
+ return 1;
+ }
+ }
+ }
+
+ return iupwinBaseProc(ih, msg, wp, lp, result);
+}
+
+static int winLabelMapMethod(Ihandle* ih)
+{
+ char* value;
+ DWORD dwStyle = WS_CHILD |
+ SS_NOTIFY; /* SS_NOTIFY is necessary because of the base messages */
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ value = iupAttribGet(ih, "SEPARATOR");
+ if (value)
+ {
+ if (iupStrEqualNoCase(value, "HORIZONTAL"))
+ {
+ ih->data->type = IUP_LABEL_SEP_HORIZ;
+ dwStyle |= SS_ETCHEDHORZ;
+ }
+ else /* "VERTICAL" */
+ {
+ ih->data->type = IUP_LABEL_SEP_VERT;
+ dwStyle |= SS_ETCHEDVERT;
+ }
+ }
+ else
+ {
+ /* The lack for good alignment support in STATIC control forces IUP to draw its own label,
+ but uses the Windows functions to draw text and images in native format. */
+ dwStyle |= SS_OWNERDRAW;
+
+ value = iupAttribGet(ih, "IMAGE");
+ if (value)
+ ih->data->type = IUP_LABEL_IMAGE;
+ else
+ ih->data->type = IUP_LABEL_TEXT;
+ }
+
+ if (!iupwinCreateWindowEx(ih, "STATIC", 0, dwStyle))
+ return IUP_ERROR;
+
+ if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT)
+ {
+ /* replace the WinProc to handle other messages */
+ IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winLabelProc);
+
+ IupSetCallback(ih, "_IUPWIN_DRAWITEM_CB", (Icallback)winLabelDrawItem);
+ }
+
+ return IUP_NOERROR;
+}
+
+void iupdrvLabelInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = winLabelMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ /* the most important use of this is to provide the correct background for images */
+ iupClassRegisterAttribute(ic, "BGCOLOR", iupBaseNativeParentGetBgColorAttrib, NULL, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, winLabelSetFgColorAttrib, "DLGFGCOLOR", NULL, IUPAF_NOT_MAPPED); /* force new default value */
+ iupClassRegisterAttribute(ic, "TITLE", iupdrvBaseGetTitleAttrib, iupdrvBaseSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupLabel only */
+ iupClassRegisterAttribute(ic, "ALIGNMENT", winLabelGetAlignmentAttrib, winLabelSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "ALEFT:ACENTER", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "PADDING", iupLabelGetPaddingAttrib, winLabelSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+
+ /* IupLabel Windows and GTK only */
+ iupClassRegisterAttribute(ic, "WORDWRAP", NULL, winLabelSetWordWrapAttrib, NULL, NULL, IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "ELLIPSIS", NULL, winLabelSetEllipsisAttrib, NULL, NULL, IUPAF_DEFAULT);
+}
diff --git a/iup/src/win/iupwin_list.c b/iup/src/win/iupwin_list.c
new file mode 100755
index 0000000..8fdadb6
--- /dev/null
+++ b/iup/src/win/iupwin_list.c
@@ -0,0 +1,1460 @@
+/** \file
+ * \brief List Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+#include <commctrl.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_mask.h"
+#include "iup_focus.h"
+#include "iup_list.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+#include "iupwin_draw.h"
+
+
+#ifndef EM_SETCUEBANNER /* defined only if _WIN32_WINNT >= 0x501 */
+#define ECM_FIRST 0x1500 /* Edit control messages */
+#define EM_SETCUEBANNER (ECM_FIRST + 1)
+#endif
+
+#define WM_CARET WM_APP+1 /* Custom IUP message */
+
+#define WIN_GETCOUNT(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_GETCOUNT: LB_GETCOUNT)
+#define WIN_GETTEXTLEN(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_GETLBTEXTLEN: LB_GETTEXTLEN)
+#define WIN_GETTEXT(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_GETLBTEXT: LB_GETTEXT)
+#define WIN_ADDSTRING(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_ADDSTRING: LB_ADDSTRING)
+#define WIN_DELETESTRING(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_DELETESTRING: LB_DELETESTRING)
+#define WIN_INSERTSTRING(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_INSERTSTRING: LB_INSERTSTRING)
+#define WIN_RESETCONTENT(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_RESETCONTENT: LB_RESETCONTENT)
+#define WIN_SETCURSEL(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_SETCURSEL: LB_SETCURSEL)
+#define WIN_GETCURSEL(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_GETCURSEL: LB_GETCURSEL)
+#define WIN_SETHORIZONTALEXTENT(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_SETHORIZONTALEXTENT: LB_SETHORIZONTALEXTENT)
+#define WIN_SETITEMDATA(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_SETITEMDATA: LB_SETITEMDATA)
+#define WIN_GETITEMDATA(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_GETITEMDATA: LB_GETITEMDATA)
+#define WIN_SETTOPINDEX(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_SETTOPINDEX: LB_SETTOPINDEX)
+#define WIN_SETITEMHEIGHT(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_SETITEMHEIGHT: LB_SETITEMHEIGHT)
+
+
+void iupdrvListAddItemSpace(Ihandle* ih, int *h)
+{
+ (void)ih;
+ (void)h;
+}
+
+void iupdrvListAddBorders(Ihandle* ih, int *x, int *y)
+{
+ int border_size = 2*4;
+ (*x) += border_size;
+ (*y) += border_size;
+
+ if (ih->data->is_dropdown)
+ {
+ (*x) += 3; /* extra space for the dropdown button */
+
+ if (ih->data->has_editbox)
+ {
+ /* extra border for the editbox */
+ int internal_border_size = 2*6;
+ (*x) += internal_border_size;
+ (*y) += internal_border_size;
+ }
+ }
+ else
+ {
+ if (ih->data->has_editbox)
+ (*y) += 2*3; /* internal border between editbox and list */
+ }
+}
+
+int iupdrvListGetCount(Ihandle* ih)
+{
+ return SendMessage(ih->handle, WIN_GETCOUNT(ih), 0, 0);
+}
+
+static int winListConvertXYToPos(Ihandle* ih, int x, int y)
+{
+ int pos;
+
+ if (ih->data->has_editbox)
+ {
+ HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+
+ pos = SendMessage(cbedit, EM_CHARFROMPOS, 0, MAKELPARAM(x, y));
+ pos = LOWORD(pos);
+ }
+
+ if (ih->data->has_editbox)
+ {
+ HWND cblist = (HWND)iupAttribGet(ih, "_IUPWIN_LISTBOX");
+ pos = SendMessage(cblist, LB_ITEMFROMPOINT, 0, MAKELPARAM(x, y))+1; /* IUP Starts at 1 */
+ pos = LOWORD(pos);
+ }
+ else
+ {
+ pos = SendMessage(ih->handle, LB_ITEMFROMPOINT, 0, MAKELPARAM(x, y))+1;
+ pos = LOWORD(pos);
+ }
+
+ return pos;
+}
+
+static int winListGetMaxWidth(Ihandle* ih)
+{
+ int i, item_w, max_w = 0,
+ count = SendMessage(ih->handle, WIN_GETCOUNT(ih), 0, 0);
+
+ for (i=0; i<count; i++)
+ {
+ item_w = SendMessage(ih->handle, WIN_GETITEMDATA(ih), i, 0);
+ if (item_w > max_w)
+ max_w = item_w;
+ }
+
+ return max_w;
+}
+
+static void winListUpdateScrollWidth(Ihandle* ih)
+{
+ if (ih->data->is_dropdown && iupAttribGetBoolean(ih, "DROPEXPAND"))
+ {
+ int w = 3+winListGetMaxWidth(ih)+iupdrvGetScrollbarSize()+3;
+ SendMessage(ih->handle, CB_SETDROPPEDWIDTH, w, 0);
+ }
+ else
+ SendMessage(ih->handle, WIN_SETHORIZONTALEXTENT(ih), winListGetMaxWidth(ih), 0);
+}
+
+void iupdrvListAppendItem(Ihandle* ih, const char* value)
+{
+ int pos = SendMessage(ih->handle, WIN_ADDSTRING(ih), 0, (LPARAM)value);
+ SendMessage(ih->handle, WIN_SETITEMDATA(ih), pos, (LPARAM)iupdrvFontGetStringWidth(ih, value));
+ winListUpdateScrollWidth(ih);
+}
+
+void iupdrvListInsertItem(Ihandle* ih, int pos, const char* value)
+{
+ SendMessage(ih->handle, WIN_INSERTSTRING(ih), pos, (LPARAM)value);
+ SendMessage(ih->handle, WIN_SETITEMDATA(ih), pos, (LPARAM)iupdrvFontGetStringWidth(ih, value));
+ winListUpdateScrollWidth(ih);
+}
+
+void iupdrvListRemoveItem(Ihandle* ih, int pos)
+{
+ if (ih->data->is_dropdown && !ih->data->has_editbox)
+ {
+ /* must check if removing the current item */
+ int curpos = SendMessage(ih->handle, WIN_GETCURSEL(ih), 0, 0);
+ if (pos == curpos)
+ {
+ if (curpos > 0) curpos--;
+ else curpos++;
+
+ SendMessage(ih->handle, WIN_SETCURSEL(ih), curpos, 0);
+ }
+ }
+
+ SendMessage(ih->handle, WIN_DELETESTRING(ih), pos, 0L);
+ winListUpdateScrollWidth(ih);
+}
+
+void iupdrvListRemoveAllItems(Ihandle* ih)
+{
+ SendMessage(ih->handle, WIN_RESETCONTENT(ih), 0, 0L);
+ if (ih->data->is_dropdown && iupAttribGetBoolean(ih, "DROPEXPAND"))
+ SendMessage(ih->handle, CB_SETDROPPEDWIDTH, 0, 0);
+ else
+ SendMessage(ih->handle, WIN_SETHORIZONTALEXTENT(ih), 0, 0);
+}
+
+static int winListGetCaretPos(HWND cbedit)
+{
+ int pos = 0;
+ POINT point;
+
+ if (GetFocus() != cbedit || !GetCaretPos(&point))
+ {
+ /* if does not have the focus, or could not get caret position,
+ then use the selection start position */
+ SendMessage(cbedit, EM_GETSEL, (WPARAM)&pos, 0);
+ }
+ else
+ {
+ pos = SendMessage(cbedit, EM_CHARFROMPOS, 0, MAKELPARAM(point.x, point.y));
+ pos = LOWORD(pos);
+ }
+
+ return pos;
+}
+
+
+/*********************************************************************************/
+
+
+static void winListUpdateItemWidth(Ihandle* ih)
+{
+ int i, count = SendMessage(ih->handle, WIN_GETCOUNT(ih), 0, 0);
+ for (i=0; i<count; i++)
+ {
+ int len = SendMessage(ih->handle, WIN_GETTEXTLEN(ih), (WPARAM)i, 0);
+ char* str = iupStrGetMemory(len+1);
+ SendMessage(ih->handle, WIN_GETTEXT(ih), (WPARAM)i, (LPARAM)str);
+ SendMessage(ih->handle, WIN_SETITEMDATA(ih), i, (LPARAM)iupdrvFontGetStringWidth(ih, str));
+ }
+}
+
+static int winListSetStandardFontAttrib(Ihandle* ih, const char* value)
+{
+ iupdrvSetStandardFontAttrib(ih, value);
+ winListUpdateItemWidth(ih);
+ winListUpdateScrollWidth(ih);
+ return 1;
+}
+
+static char* winListGetIdValueAttrib(Ihandle* ih, const char* name_id)
+{
+ int pos = iupListGetPos(ih, name_id);
+ if (pos != -1)
+ {
+ int len = SendMessage(ih->handle, WIN_GETTEXTLEN(ih), (WPARAM)pos, 0);
+ char* str = iupStrGetMemory(len+1);
+ SendMessage(ih->handle, WIN_GETTEXT(ih), (WPARAM)pos, (LPARAM)str);
+ return str;
+ }
+ return NULL;
+}
+
+static char* winListGetValueAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ int nc = GetWindowTextLength(ih->handle);
+ if (nc)
+ {
+ char* str = iupStrGetMemory(nc+1);
+ GetWindowText(ih->handle, str, nc+1);
+ return str;
+ }
+ }
+ else
+ {
+ if (ih->data->is_dropdown || !ih->data->is_multiple)
+ {
+ int pos = SendMessage(ih->handle, WIN_GETCURSEL(ih), 0, 0);
+ char* str = iupStrGetMemory(50);
+ sprintf(str, "%d", pos+1); /* IUP starts at 1 */
+ return str;
+ }
+ else
+ {
+ int i, count = SendMessage(ih->handle, LB_GETCOUNT, 0, 0);
+ int* pos = malloc(sizeof(int)*count);
+ int sel_count = SendMessage(ih->handle, LB_GETSELITEMS, count, (LPARAM)pos);
+ char* str = iupStrGetMemory(count+1);
+ memset(str, '-', count);
+ str[count]=0;
+ for (i=0; i<sel_count; i++)
+ str[pos[i]] = '+';
+ str[count]=0;
+ return str;
+ }
+ }
+
+ return NULL;
+}
+
+static int winListSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->has_editbox)
+ {
+ if (!value) value = "";
+ SetWindowText(ih->handle, value);
+ }
+ else
+ {
+ if (ih->data->is_dropdown || !ih->data->is_multiple)
+ {
+ int pos;
+ if (iupStrToInt(value, &pos)==1)
+ {
+ SendMessage(ih->handle, WIN_SETCURSEL(ih), pos-1, 0); /* IUP starts at 1 */
+ iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos);
+ }
+ else
+ {
+ SendMessage(ih->handle, WIN_SETCURSEL(ih), (WPARAM)-1, 0); /* no selection */
+ iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL);
+ }
+ }
+ else
+ {
+ /* User has changed a multiple selection on a simple list. */
+ int i, len, count;
+
+ /* Clear all selections */
+ SendMessage(ih->handle, LB_SETSEL, FALSE, -1);
+
+ if (!value)
+ {
+ iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL);
+ return 0;
+ }
+
+ count = SendMessage(ih->handle, LB_GETCOUNT, 0, 0L);
+ len = strlen(value);
+ if (len < count)
+ count = len;
+
+ /* update selection list */
+ for (i = 0; i<count; i++)
+ {
+ if (value[i]=='+')
+ SendMessage(ih->handle, LB_SETSEL, TRUE, i);
+ }
+
+ iupAttribStoreStr(ih, "_IUPLIST_OLDVALUE", value);
+ }
+ }
+
+ return 0;
+}
+
+static int winListSetShowDropdownAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->is_dropdown)
+ SendMessage(ih->handle, CB_SHOWDROPDOWN, iupStrBoolean(value), 0);
+ return 0;
+}
+
+static int winListSetTopItemAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->is_dropdown)
+ {
+ int pos = 1;
+ if (iupStrToInt(value, &pos))
+ SendMessage(ih->handle, WIN_SETTOPINDEX(ih), pos-1, 0); /* IUP starts at 1 */
+ }
+ return 0;
+}
+
+static int winListSetSpacingAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->is_dropdown)
+ return 0;
+
+ if (!iupStrToInt(value, &ih->data->spacing))
+ ih->data->spacing = 0;
+
+ if (ih->handle)
+ {
+ int height;
+ iupdrvFontGetCharSize(ih, NULL, &height);
+ height += 2*ih->data->spacing;
+ SendMessage(ih->handle, WIN_SETITEMHEIGHT(ih), 0, height);
+ return 0;
+ }
+ else
+ return 1; /* store until not mapped, when mapped will be set again */
+}
+
+static int winListSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->has_editbox)
+ return 0;
+
+ iupStrToIntInt(value, &(ih->data->horiz_padding), &(ih->data->vert_padding), 'x');
+ ih->data->vert_padding = 0;
+ if (ih->handle)
+ {
+ HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_SETMARGINS, EC_LEFTMARGIN|EC_RIGHTMARGIN, MAKELPARAM(ih->data->horiz_padding, ih->data->horiz_padding));
+ return 0;
+ }
+ else
+ return 1; /* store until not mapped, when mapped will be set again */
+}
+
+static int winListSetFilterAttrib(Ihandle *ih, const char *value)
+{
+ int style = 0;
+
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (iupStrEqualNoCase(value, "LOWERCASE"))
+ style = ES_LOWERCASE;
+ else if (iupStrEqualNoCase(value, "NUMBER"))
+ style = ES_NUMBER;
+ else if (iupStrEqualNoCase(value, "UPPERCASE"))
+ style = ES_UPPERCASE;
+
+ if (style)
+ {
+ HWND old_handle = ih->handle;
+ ih->handle = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ iupwinMergeStyle(ih, ES_LOWERCASE|ES_NUMBER|ES_UPPERCASE, style);
+ ih->handle = old_handle;
+ }
+
+ return 1;
+}
+
+static int winListSetCueBannerAttrib(Ihandle *ih, const char *value)
+{
+ if (ih->data->has_editbox && iupwin_comctl32ver6)
+ {
+ WCHAR* wstr = iupwinStrChar2Wide(value);
+ HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_SETCUEBANNER, (WPARAM)FALSE, (LPARAM)wstr);
+ free(wstr);
+ return 1;
+ }
+ return 0;
+}
+
+static int winListSetClipboardAttrib(Ihandle *ih, const char *value)
+{
+ UINT msg = 0;
+
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (iupStrEqualNoCase(value, "COPY"))
+ msg = WM_COPY;
+ else if (iupStrEqualNoCase(value, "CUT"))
+ msg = WM_CUT;
+ else if (iupStrEqualNoCase(value, "PASTE"))
+ msg = WM_PASTE;
+ else if (iupStrEqualNoCase(value, "CLEAR"))
+ msg = WM_CLEAR;
+ else if (iupStrEqualNoCase(value, "UNDO"))
+ msg = WM_UNDO;
+
+ if (msg)
+ {
+ HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, msg, 0, 0);
+ }
+
+ return 0;
+}
+
+static int winListSetSelectedTextAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (value)
+ {
+ int start = 0, end = 0;
+ HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_GETSEL, (WPARAM)&start, (LPARAM)&end);
+ if (start == end)
+ return 0;
+ SendMessage(cbedit, EM_REPLACESEL, (WPARAM)TRUE, (LPARAM)value);
+ }
+ return 0;
+}
+
+static char* winListGetSelectedTextAttrib(Ihandle* ih)
+{
+ int nc;
+ HWND cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ nc = GetWindowTextLength(cbedit);
+ if (nc)
+ {
+ int start = 0, end = 0;
+ char* str;
+
+ SendMessage(cbedit, EM_GETSEL, (WPARAM)&start, (LPARAM)&end);
+ if (start == end)
+ return NULL;
+
+ str = iupStrGetMemory(nc+1);
+ GetWindowText(cbedit, str, nc+1);
+ str[end] = 0; /* returns only the selected text */
+ str += start;
+
+ return str;
+ }
+ else
+ return NULL;
+}
+
+static int winListSetNCAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!iupStrToInt(value, &ih->data->nc))
+ ih->data->nc = 0;
+
+ if (ih->handle)
+ {
+ HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_LIMITTEXT, ih->data->nc, 0L);
+ }
+ return 0;
+}
+
+static int winListSetSelectionAttrib(Ihandle* ih, const char* value)
+{
+ HWND cbedit;
+ int start=1, end=1;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value || iupStrEqualNoCase(value, "NONE"))
+ {
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_SETSEL, (WPARAM)-1, (LPARAM)0);
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(value, "ALL"))
+ {
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_SETSEL, (WPARAM)0, (LPARAM)-1);
+ return 0;
+ }
+
+ if (iupStrToIntInt(value, &start, &end, ':')!=2)
+ return 0;
+
+ if(start<1 || end<1)
+ return 0;
+
+ start--; /* IUP starts at 1 */
+ end--;
+
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_SETSEL, (WPARAM)start, (LPARAM)end);
+
+ return 0;
+}
+
+static char* winListGetSelectionAttrib(Ihandle* ih)
+{
+ int start = 0, end = 0;
+ char* str;
+ HWND cbedit;
+ if (!ih->data->has_editbox)
+ return NULL;
+
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_GETSEL, (WPARAM)&start, (LPARAM)&end);
+ if (start == end)
+ return NULL;
+
+ str = iupStrGetMemory(100);
+
+ start++; /* IUP starts at 1 */
+ end++;
+ sprintf(str, "%d:%d", start, end);
+
+ return str;
+}
+
+static int winListSetSelectionPosAttrib(Ihandle* ih, const char* value)
+{
+ int start=0, end=0;
+ HWND cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value || iupStrEqualNoCase(value, "NONE"))
+ {
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_SETSEL, (WPARAM)-1, (LPARAM)0);
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(value, "ALL"))
+ {
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_SETSEL, (WPARAM)0, (LPARAM)-1);
+ return 0;
+ }
+
+ if (iupStrToIntInt(value, &start, &end, ':')!=2)
+ return 0;
+
+ if(start<0 || end<0)
+ return 0;
+
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_SETSEL, (WPARAM)start, (LPARAM)end);
+
+ return 0;
+}
+
+static char* winListGetSelectionPosAttrib(Ihandle* ih)
+{
+ int start = 0, end = 0;
+ char* str;
+ HWND cbedit;
+ if (!ih->data->has_editbox)
+ return NULL;
+
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_GETSEL, (WPARAM)&start, (LPARAM)&end);
+ if (start == end)
+ return NULL;
+
+ str = iupStrGetMemory(100);
+ sprintf(str, "%d:%d", start, end);
+ return str;
+}
+
+static int winListSetInsertAttrib(Ihandle* ih, const char* value)
+{
+ if (value && ih->data->has_editbox)
+ {
+ HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_REPLACESEL, (WPARAM)TRUE, (LPARAM)value);
+ }
+ return 0;
+}
+
+static int winListSetAppendAttrib(Ihandle* ih, const char* value)
+{
+ int len;
+ HWND cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value) value = "";
+
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ len = GetWindowTextLength(cbedit)+1;
+ SendMessage(cbedit, EM_SETSEL, (WPARAM)len, (LPARAM)len);
+ SendMessage(cbedit, EM_REPLACESEL, (WPARAM)TRUE, (LPARAM)value);
+
+ return 0;
+}
+
+static int winListSetReadOnlyAttrib(Ihandle* ih, const char* value)
+{
+ HWND cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_SETREADONLY, (WPARAM)iupStrBoolean(value), 0);
+ return 0;
+}
+
+static char* winListGetReadOnlyAttrib(Ihandle* ih)
+{
+ DWORD style;
+ HWND cbedit;
+ if (!ih->data->has_editbox)
+ return NULL;
+
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ style = GetWindowLong(cbedit, GWL_STYLE);
+ if (style & ES_READONLY)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int winListSetCaretAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 1;
+ HWND cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 1) pos = 1;
+ pos--; /* IUP starts at 1 */
+
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_SETSEL, (WPARAM)pos, (LPARAM)pos);
+ SendMessage(cbedit, EM_SCROLLCARET, 0L, 0L);
+
+ return 0;
+}
+
+static char* winListGetCaretAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ char* str = iupStrGetMemory(100);
+ HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ sprintf(str, "%d", winListGetCaretPos(cbedit)+1);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+static int winListSetCaretPosAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 0;
+ HWND cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos); /* be permissive in SetCaret, do not abort if invalid */
+ if (pos < 0) pos = 0;
+
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_SETSEL, (WPARAM)pos, (LPARAM)pos);
+ SendMessage(cbedit, EM_SCROLLCARET, 0L, 0L);
+
+ return 0;
+}
+
+static char* winListGetCaretPosAttrib(Ihandle* ih)
+{
+ if (ih->data->has_editbox)
+ {
+ char* str = iupStrGetMemory(100);
+ HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ sprintf(str, "%d", winListGetCaretPos(cbedit));
+ return str;
+ }
+ else
+ return NULL;
+}
+
+static int winListSetScrollToAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 1;
+ HWND cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 1) pos = 1;
+
+ pos--; /* return to Windows referece */
+
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_LINESCROLL, (WPARAM)pos, (LPARAM)0);
+
+ return 0;
+}
+
+static int winListSetScrollToPosAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 0;
+ HWND cbedit;
+ if (!ih->data->has_editbox)
+ return 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 0) pos = 0;
+
+ cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ SendMessage(cbedit, EM_LINESCROLL, (WPARAM)pos, (LPARAM)0);
+
+ return 0;
+}
+
+
+/*********************************************************************************/
+
+
+static int winListCtlColor(Ihandle* ih, HDC hdc, LRESULT *result)
+{
+ COLORREF cr;
+
+ if (iupwinGetColorRef(ih, "FGCOLOR", &cr))
+ SetTextColor(hdc, cr);
+
+ if (iupwinGetColorRef(ih, "BGCOLOR", &cr))
+ {
+ SetBkColor(hdc, cr);
+ SetDCBrushColor(hdc, cr);
+ *result = (LRESULT)GetStockObject(DC_BRUSH);
+ return 1;
+ }
+ return 0;
+}
+
+static int winListWmCommand(Ihandle* ih, WPARAM wp, LPARAM lp)
+{
+ (void)lp;
+
+ if (ih->data->is_dropdown || ih->data->has_editbox)
+ {
+ switch (HIWORD(wp))
+ {
+ case CBN_EDITCHANGE:
+ {
+ iupBaseCallValueChangedCb(ih);
+ break;
+ }
+ case CBN_SETFOCUS:
+ iupwinWmSetFocus(ih);
+ break;
+ case CBN_KILLFOCUS:
+ iupCallKillFocusCb(ih);
+ break;
+ case CBN_CLOSEUP:
+ case CBN_DROPDOWN:
+ {
+ IFni cb = (IFni)IupGetCallback(ih, "DROPDOWN_CB");
+ if (cb)
+ cb(ih, HIWORD(wp)==CBN_DROPDOWN? 1: 0);
+ break;
+ }
+ case CBN_DBLCLK:
+ {
+ IFnis cb = (IFnis) IupGetCallback(ih, "DBLCLICK_CB");
+ if (cb)
+ {
+ int pos = SendMessage(ih->handle, CB_GETCURSEL, 0, 0);
+ pos++; /* IUP starts at 1 */
+ iupListSingleCallDblClickCallback(ih, cb, pos);
+ }
+ break;
+ }
+ case CBN_SELCHANGE:
+ {
+ IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION");
+ if (cb)
+ {
+ int pos = SendMessage(ih->handle, CB_GETCURSEL, 0, 0);
+ pos++; /* IUP starts at 1 */
+ iupListSingleCallActionCallback(ih, cb, pos);
+ }
+
+ iupBaseCallValueChangedCb(ih);
+ break;
+ }
+ }
+ }
+ else
+ {
+ switch (HIWORD(wp))
+ {
+ case LBN_DBLCLK:
+ {
+ IFnis cb = (IFnis) IupGetCallback(ih, "DBLCLICK_CB");
+ if (cb)
+ {
+ int pos = SendMessage(ih->handle, LB_GETCURSEL, 0, 0);
+ pos++; /* IUP starts at 1 */
+ iupListSingleCallDblClickCallback(ih, cb, pos);
+ }
+ break;
+ }
+ case LBN_SELCHANGE:
+ {
+ if (!ih->data->is_multiple)
+ {
+ IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION");
+ if (cb)
+ {
+ int pos = SendMessage(ih->handle, LB_GETCURSEL, 0, 0);
+ pos++; /* IUP starts at 1 */
+ iupListSingleCallActionCallback(ih, cb, pos);
+ }
+ }
+ else
+ {
+ IFns multi_cb = (IFns)IupGetCallback(ih, "MULTISELECT_CB");
+ IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION");
+ if (multi_cb || cb)
+ {
+ int sel_count = SendMessage(ih->handle, LB_GETSELCOUNT, 0, 0);
+ int* pos = malloc(sizeof(int)*sel_count);
+ SendMessage(ih->handle, LB_GETSELITEMS, sel_count, (LPARAM)pos);
+ iupListMultipleCallActionCallback(ih, cb, multi_cb, pos, sel_count);
+ free(pos);
+ }
+ }
+
+ iupBaseCallValueChangedCb(ih);
+ break;
+ }
+ }
+ }
+
+ return 0; /* not used */
+}
+
+static void winListCallCaretCb(Ihandle* ih, HWND cbedit)
+{
+ int pos;
+
+ IFniii cb = (IFniii)IupGetCallback(ih, "CARET_CB");
+ if (!cb) return;
+
+ pos = winListGetCaretPos(cbedit);
+
+ if (pos != ih->data->last_caret_pos)
+ {
+ ih->data->last_caret_pos = pos;
+ cb(ih, 1, pos+1, pos);
+ }
+}
+
+static int winListCallEditCb(Ihandle* ih, HWND cbedit, const char* insert_value, int key, int dir)
+{
+ int start, end, ret = 1;
+ char *value, *new_value;
+
+ IFnis cb = (IFnis)IupGetCallback(ih, "EDIT_CB");
+ if (!cb && !ih->data->mask)
+ return 1;
+
+ SendMessage(cbedit, EM_GETSEL, (WPARAM)&start, (LPARAM)&end);
+
+ value = winListGetValueAttrib(ih);
+
+ if (!value)
+ new_value = iupStrDup(insert_value);
+ else if (insert_value)
+ new_value = iupStrInsert(value, insert_value, start, end);
+ else
+ {
+ new_value = value;
+ iupStrRemove(value, start, end, dir);
+ }
+
+ if (!new_value)
+ return 0; /* abort */
+
+ if (ih->data->nc && (int)strlen(new_value) > ih->data->nc)
+ {
+ if (new_value != value) free(new_value);
+ return 0; /* abort */
+ }
+
+ if (ih->data->mask && iupMaskCheck(ih->data->mask, new_value)==0)
+ {
+ if (new_value != value) free(new_value);
+ return 0; /* abort */
+ }
+
+ if (cb)
+ {
+ int cb_ret = cb(ih, key, (char*)new_value);
+ if (cb_ret==IUP_IGNORE)
+ ret = 0; /* abort processing */
+ else if (cb_ret==IUP_CLOSE)
+ {
+ IupExitLoop();
+ ret = 0; /* abort processing */
+ }
+ else if (cb_ret!=0 && key!=0 &&
+ cb_ret != IUP_DEFAULT && cb_ret != IUP_CONTINUE)
+ {
+ WNDPROC oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_EDITOLDPROC_CB");
+ CallWindowProc(oldProc, cbedit, WM_CHAR, cb_ret, 0); /* replace key */
+ ret = 0; /* abort processing */
+ }
+ }
+
+ if (new_value != value) free(new_value);
+ return ret;
+}
+
+static int winListEditProc(Ihandle* ih, HWND cbedit, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ int ret = 0;
+
+ if (msg==WM_KEYDOWN) /* process K_ANY before text callbacks */
+ {
+ ret = iupwinBaseProc(ih, msg, wp, lp, result);
+ if (ret) return 1;
+ }
+
+ switch (msg)
+ {
+ case WM_CHAR:
+ {
+ if ((char)wp == '\b')
+ {
+ if (!winListCallEditCb(ih, cbedit, NULL, 0, -1))
+ ret = 1;
+ }
+ else if ((char)wp == '\n' || (char)wp == '\r')
+ {
+ ret = 1;
+ }
+ else if (!(GetKeyState(VK_CONTROL) & 0x8000 ||
+ GetKeyState(VK_MENU) & 0x8000 ||
+ GetKeyState(VK_LWIN) & 0x8000 ||
+ GetKeyState(VK_RWIN) & 0x8000))
+ {
+ char insert_value[2];
+ insert_value[0] = (char)wp;
+ insert_value[1] = 0;
+
+ if (!winListCallEditCb(ih, cbedit, insert_value, wp, 1))
+ ret = 1;
+ }
+
+ PostMessage(cbedit, WM_CARET, 0, 0L);
+
+ if (wp==VK_TAB) /* the keys have the same definitions as the chars */
+ ret = 1; /* abort default processing to avoid beep */
+
+ break;
+ }
+ case WM_KEYDOWN:
+ {
+ if (wp == VK_DELETE) /* Del does not generates a WM_CHAR */
+ {
+ if (!winListCallEditCb(ih, cbedit, NULL, 0, 1))
+ ret = 1;
+ }
+ else if (wp == 'A' && GetKeyState(VK_CONTROL) & 0x8000) /* Ctrl+A = Select All */
+ {
+ SendMessage(cbedit, EM_SETSEL, (WPARAM)0, (LPARAM)-1);
+ }
+
+ PostMessage(cbedit, WM_CARET, 0, 0L);
+ break;
+ }
+ case WM_CLEAR:
+ {
+ if (!winListCallEditCb(ih, cbedit, NULL, 0, 1))
+ ret = 1;
+
+ PostMessage(cbedit, WM_CARET, 0, 0L);
+ break;
+ }
+ case WM_CUT:
+ {
+ if (!winListCallEditCb(ih, cbedit, NULL, 0, 1))
+ ret = 1;
+
+ PostMessage(cbedit, WM_CARET, 0, 0L);
+ break;
+ }
+ case WM_PASTE:
+ {
+ if (IupGetCallback(ih, "EDIT_CB") || ih->data->mask) /* test before to avoid alocate clipboard text memory */
+ {
+ char* insert_value = iupwinGetClipboardText(ih);
+ if (insert_value)
+ {
+ if (!winListCallEditCb(ih, cbedit, insert_value, 0, 1))
+ ret = 1;
+ free(insert_value);
+ }
+ }
+
+ PostMessage(cbedit, WM_CARET, 0, 0L);
+ break;
+ }
+ case WM_UNDO:
+ {
+ IFnis cb = (IFnis)IupGetCallback(ih, "EDIT_CB");
+ if (cb)
+ {
+ char* value;
+ WNDPROC oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_EDITOLDPROC_CB");
+ CallWindowProc(oldProc, cbedit, WM_UNDO, 0, 0);
+
+ value = winListGetValueAttrib(ih);
+ cb(ih, 0, (char*)value);
+
+ ret = 1;
+ }
+
+ PostMessage(cbedit, WM_CARET, 0, 0L);
+ break;
+ }
+ case WM_KEYUP:
+ case WM_LBUTTONDBLCLK:
+ case WM_MBUTTONDBLCLK:
+ case WM_RBUTTONDBLCLK:
+ case WM_LBUTTONDOWN:
+ case WM_MBUTTONDOWN:
+ case WM_RBUTTONDOWN:
+ case WM_MBUTTONUP:
+ case WM_RBUTTONUP:
+ case WM_LBUTTONUP:
+ PostMessage(cbedit, WM_CARET, 0, 0L);
+ break;
+ case WM_CARET:
+ winListCallCaretCb(ih, cbedit);
+ break;
+ }
+
+ if (ret) /* if abort processing, then the result is 0 */
+ {
+ *result = 0;
+ return 1;
+ }
+ else
+ {
+ if (msg==WM_KEYDOWN)
+ return 0;
+ else
+ return iupwinBaseProc(ih, msg, wp, lp, result);
+ }
+}
+
+static LRESULT CALLBACK winListEditWinProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
+{
+ int ret = 0;
+ LRESULT result = 0;
+ WNDPROC oldProc;
+ Ihandle *ih;
+
+ ih = iupwinHandleGet(hwnd);
+ if (!ih)
+ return DefWindowProc(hwnd, msg, wp, lp); /* should never happen */
+
+ /* retrieve the control previous procedure for subclassing */
+ oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_EDITOLDPROC_CB");
+
+ ret = winListEditProc(ih, hwnd, msg, wp, lp, &result);
+
+ if (ret)
+ return result;
+ else
+ return CallWindowProc(oldProc, hwnd, msg, wp, lp);
+}
+
+static int winListComboListProc(Ihandle* ih, HWND cblist, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ (void)cblist;
+
+ switch (msg)
+ {
+ case WM_LBUTTONDBLCLK:
+ case WM_MBUTTONDBLCLK:
+ case WM_RBUTTONDBLCLK:
+ case WM_LBUTTONDOWN:
+ case WM_MBUTTONDOWN:
+ case WM_RBUTTONDOWN:
+ if (iupwinButtonDown(ih, msg, wp, lp)==-1)
+ {
+ *result = 0;
+ return 1;
+ }
+ break;
+ case WM_MBUTTONUP:
+ case WM_RBUTTONUP:
+ case WM_LBUTTONUP:
+ if (iupwinButtonUp(ih, msg, wp, lp)==-1)
+ {
+ *result = 0;
+ return 1;
+ }
+ break;
+ case WM_MOUSEMOVE:
+ iupwinMouseMove(ih, msg, wp, lp);
+ iupwinBaseProc(ih, msg, wp, lp, result); /* to process ENTER/LEAVE */
+ break;
+ case WM_MOUSELEAVE:
+ iupwinBaseProc(ih, msg, wp, lp, result); /* to process ENTER/LEAVE */
+ break;
+ }
+
+ return 0;
+}
+
+static LRESULT CALLBACK winListComboListWinProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
+{
+ int ret = 0;
+ LRESULT result = 0;
+ WNDPROC oldProc;
+ Ihandle *ih;
+
+ ih = iupwinHandleGet(hwnd);
+ if (!ih)
+ return DefWindowProc(hwnd, msg, wp, lp); /* should never happen */
+
+ /* retrieve the control previous procedure for subclassing */
+ oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_LISTOLDPROC_CB");
+
+ ret = winListComboListProc(ih, hwnd, msg, wp, lp, &result);
+
+ if (ret)
+ return result;
+ else
+ return CallWindowProc(oldProc, hwnd, msg, wp, lp);
+}
+
+static int winListProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ if (!ih->data->is_dropdown && !ih->data->has_editbox)
+ {
+ switch (msg)
+ {
+ case WM_LBUTTONDBLCLK:
+ case WM_MBUTTONDBLCLK:
+ case WM_RBUTTONDBLCLK:
+ case WM_LBUTTONDOWN:
+ case WM_MBUTTONDOWN:
+ case WM_RBUTTONDOWN:
+ if (iupwinButtonDown(ih, msg, wp, lp)==-1)
+ {
+ *result = 0;
+ return 1;
+ }
+ break;
+ case WM_MBUTTONUP:
+ case WM_RBUTTONUP:
+ case WM_LBUTTONUP:
+ if (iupwinButtonUp(ih, msg, wp, lp)==-1)
+ {
+ *result = 0;
+ return 1;
+ }
+ break;
+ case WM_MOUSEMOVE:
+ iupwinMouseMove(ih, msg, wp, lp);
+ break;
+ }
+ }
+
+ switch (msg)
+ {
+ case WM_CHAR:
+ if (GetKeyState(VK_CONTROL) & 0x8000)
+ {
+ /* avoid item search when Ctrl is pressed */
+ *result = 0;
+ return 1;
+ }
+ case WM_SETFOCUS:
+ case WM_KILLFOCUS:
+ case WM_MOUSELEAVE:
+ case WM_MOUSEMOVE:
+ if (ih->data->has_editbox)
+ return 0; /* do not call base procedure to avoid duplicate messages */
+ break;
+ }
+
+ return iupwinBaseProc(ih, msg, wp, lp, result);
+}
+
+
+/*********************************************************************************/
+
+
+static void winListLayoutUpdateMethod(Ihandle *ih)
+{
+ if (ih->data->is_dropdown)
+ {
+ /* Must add the dropdown area, or it will not be visible */
+ RECT rect;
+ int charheight, calc_h, win_h, win_w, voptions;
+
+ voptions = iupAttribGetInt(ih, "VISIBLE_ITEMS");
+ if (voptions <= 0)
+ voptions = 1;
+
+ iupdrvFontGetCharSize(ih, NULL, &charheight);
+ calc_h = ih->currentheight + voptions*charheight;
+
+ SendMessage(ih->handle, CB_GETDROPPEDCONTROLRECT, 0, (LPARAM)&rect);
+ win_h = rect.bottom-rect.top;
+ win_w = rect.right-rect.left;
+
+ if (ih->currentwidth != win_w || calc_h != win_h)
+ SetWindowPos(ih->handle, HWND_TOP, ih->x, ih->y, ih->currentwidth, calc_h,
+ SWP_NOACTIVATE|SWP_NOZORDER|SWP_NOOWNERZORDER);
+ else
+ SetWindowPos(ih->handle, HWND_TOP, ih->x, ih->y, 0, 0,
+ SWP_NOSIZE|SWP_NOACTIVATE|SWP_NOZORDER|SWP_NOOWNERZORDER);
+ }
+ else
+ iupdrvBaseLayoutUpdateMethod(ih);
+}
+
+static int winListMapMethod(Ihandle* ih)
+{
+ char* class_name;
+ DWORD dwStyle = WS_CHILD,
+ dwExStyle = WS_EX_CLIENTEDGE;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ if (ih->data->is_dropdown || ih->data->has_editbox)
+ {
+ class_name = "COMBOBOX";
+
+ dwStyle |= CBS_NOINTEGRALHEIGHT;
+
+ if (ih->data->is_dropdown)
+ dwStyle |= WS_VSCROLL|WS_HSCROLL;
+ else if (ih->data->sb)
+ {
+ dwStyle |= WS_VSCROLL|WS_HSCROLL;
+
+ if (!iupAttribGetBoolean(ih, "AUTOHIDE"))
+ dwStyle |= CBS_DISABLENOSCROLL;
+ }
+
+ if (ih->data->has_editbox)
+ {
+ dwStyle |= CBS_AUTOHSCROLL;
+
+ if (ih->data->is_dropdown)
+ dwStyle |= CBS_DROPDOWN; /* hidden-list+edit */
+ else
+ dwStyle |= CBS_SIMPLE; /* visible-list+edit */
+ }
+ else
+ dwStyle |= CBS_DROPDOWNLIST; /* hidden-list */
+
+ if (iupAttribGetBoolean(ih, "SORT"))
+ dwStyle |= CBS_SORT;
+ }
+ else
+ {
+ class_name = "LISTBOX";
+
+ dwStyle |= LBS_NOINTEGRALHEIGHT|LBS_NOTIFY;
+
+ if (ih->data->is_multiple)
+ dwStyle |= LBS_EXTENDEDSEL;
+
+ if (ih->data->sb)
+ {
+ dwStyle |= WS_VSCROLL|WS_HSCROLL;
+
+ if (!iupAttribGetBoolean(ih, "AUTOHIDE"))
+ dwStyle |= LBS_DISABLENOSCROLL;
+ }
+
+ if (iupAttribGetBoolean(ih, "SORT"))
+ dwStyle |= LBS_SORT;
+ }
+
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ dwStyle |= WS_TABSTOP;
+
+ if (!iupwinCreateWindowEx(ih, class_name, dwExStyle, dwStyle))
+ return IUP_ERROR;
+
+ /* Custom Procedure */
+ IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winListProc);
+
+ /* Process background color */
+ IupSetCallback(ih, "_IUPWIN_CTLCOLOR_CB", (Icallback)winListCtlColor);
+
+ /* Process WM_COMMAND */
+ IupSetCallback(ih, "_IUPWIN_COMMAND_CB", (Icallback)winListWmCommand);
+
+ if (ih->data->is_dropdown || ih->data->has_editbox)
+ {
+ COMBOBOXINFO boxinfo;
+
+ ZeroMemory(&boxinfo, sizeof(COMBOBOXINFO));
+ boxinfo.cbSize = sizeof(COMBOBOXINFO);
+
+ GetComboBoxInfo(ih->handle, &boxinfo);
+
+ iupwinHandleAdd(ih, boxinfo.hwndList);
+ iupAttribSetStr(ih, "_IUPWIN_LISTBOX", (char*)boxinfo.hwndList);
+
+ /* subclass the list box. */
+ IupSetCallback(ih, "_IUPWIN_LISTOLDPROC_CB", (Icallback)GetWindowLongPtr(boxinfo.hwndList, GWLP_WNDPROC));
+ SetWindowLongPtr(boxinfo.hwndList, GWLP_WNDPROC, (LONG_PTR)winListComboListWinProc);
+
+ if (ih->data->has_editbox)
+ {
+ iupwinHandleAdd(ih, boxinfo.hwndItem);
+ iupAttribSetStr(ih, "_IUPWIN_EDITBOX", (char*)boxinfo.hwndItem);
+
+ /* subclass the edit box. */
+ IupSetCallback(ih, "_IUPWIN_EDITOLDPROC_CB", (Icallback)GetWindowLongPtr(boxinfo.hwndItem, GWLP_WNDPROC));
+ SetWindowLongPtr(boxinfo.hwndItem, GWLP_WNDPROC, (LONG_PTR)winListEditWinProc);
+
+ /* set defaults */
+ SendMessage(ih->handle, CB_LIMITTEXT, 0, 0L);
+ }
+ }
+
+ /* configure for DRAG&DROP */
+ if (IupGetCallback(ih, "DROPFILES_CB"))
+ iupAttribSetStr(ih, "DRAGDROP", "YES");
+
+ IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)winListConvertXYToPos);
+
+ iupListSetInitialItems(ih);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvListInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = winListMapMethod;
+ ic->LayoutUpdate = winListLayoutUpdateMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, winListSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED);
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_NOT_MAPPED);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_NOT_MAPPED);
+
+ /* IupList only */
+ iupClassRegisterAttributeId(ic, "IDVALUE", winListGetIdValueAttrib, iupListSetIdValueAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUE", winListGetValueAttrib, winListSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOWDROPDOWN", NULL, winListSetShowDropdownAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TOPITEM", NULL, winListSetTopItemAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VISIBLE_ITEMS", NULL, NULL, IUPAF_SAMEASSYSTEM, "5", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "DROPEXPAND", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupwinSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPACING", iupListGetSpacingAttrib, winListSetSpacingAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+
+ iupClassRegisterAttribute(ic, "PADDING", iupListGetPaddingAttrib, winListSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "SELECTEDTEXT", winListGetSelectedTextAttrib, winListSetSelectedTextAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTION", winListGetSelectionAttrib, winListSetSelectionAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTIONPOS", winListGetSelectionPosAttrib, winListSetSelectionPosAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CARET", winListGetCaretAttrib, winListSetCaretAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CARETPOS", winListGetCaretPosAttrib, winListSetCaretPosAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "INSERT", NULL, winListSetInsertAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "APPEND", NULL, winListSetAppendAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "READONLY", winListGetReadOnlyAttrib, winListSetReadOnlyAttrib, NULL, NULL, IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "NC", iupListGetNCAttrib, winListSetNCAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "CLIPBOARD", NULL, winListSetClipboardAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SCROLLTO", NULL, winListSetScrollToAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SCROLLTOPOS", NULL, winListSetScrollToPosAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "CUEBANNER", NULL, winListSetCueBannerAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FILTER", NULL, winListSetFilterAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/win/iupwin_loop.c b/iup/src/win/iupwin_loop.c
new file mode 100755
index 0000000..7c5dbe7
--- /dev/null
+++ b/iup/src/win/iupwin_loop.c
@@ -0,0 +1,135 @@
+/** \file
+ * \brief Windows Message Loop
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <windows.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+
+
+static IFidle win_idle_cb = NULL;
+static int win_main_loop = 0;
+
+
+void iupdrvSetIdleFunction(Icallback f)
+{
+ win_idle_cb = (IFidle)f;
+}
+
+void IupExitLoop(void)
+{
+ PostQuitMessage(0);
+}
+
+static int winLoopProcessMessage(MSG* msg)
+{
+ if (msg->message == WM_QUIT) /* IUP_CLOSE returned in a callback or IupHide in a popup dialog or all dialogs closed */
+ return IUP_CLOSE;
+ else
+ {
+ TranslateMessage(msg);
+ DispatchMessage(msg);
+ return IUP_DEFAULT;
+ }
+}
+
+int IupMainLoopLevel(void)
+{
+ return win_main_loop;
+}
+
+int IupMainLoop(void)
+{
+ MSG msg;
+ int ret;
+
+ win_main_loop++;
+
+ do
+ {
+ if (win_idle_cb)
+ {
+ ret = 1;
+ if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ if (winLoopProcessMessage(&msg) == IUP_CLOSE)
+ {
+ win_main_loop--;
+ return IUP_CLOSE;
+ }
+ }
+ else
+ {
+ int ret = win_idle_cb();
+ if (ret == IUP_CLOSE)
+ {
+ win_idle_cb = NULL;
+ win_main_loop--;
+ return IUP_CLOSE;
+ }
+ if (ret == IUP_IGNORE)
+ win_idle_cb = NULL;
+ }
+ }
+ else
+ {
+ ret = GetMessage(&msg, NULL, 0, 0);
+ if (ret == -1) /* error */
+ {
+ win_main_loop--;
+ return IUP_ERROR;
+ }
+ if (ret == 0 || /* WM_QUIT */
+ winLoopProcessMessage(&msg) == IUP_CLOSE) /* ret != 0 */
+ {
+ win_main_loop--;
+ return IUP_NOERROR;
+ }
+ }
+ } while (ret);
+
+ win_main_loop--;
+ return IUP_NOERROR;
+}
+
+int IupLoopStep(void)
+{
+ MSG msg;
+ if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
+ return winLoopProcessMessage(&msg);
+
+ return IUP_DEFAULT;
+}
+
+void IupFlush(void)
+{
+ int post_quit = 0;
+ MSG msg;
+
+ while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ if (winLoopProcessMessage(&msg) == IUP_CLOSE)
+ {
+ post_quit = 1;
+ break;
+ }
+ }
+
+ /* re post the quit message if still inside MainLoop */
+ if (post_quit && win_main_loop>0)
+ PostQuitMessage(0);
+}
diff --git a/iup/src/win/iupwin_menu.c b/iup/src/win/iupwin_menu.c
new file mode 100755
index 0000000..74a8b52
--- /dev/null
+++ b/iup/src/win/iupwin_menu.c
@@ -0,0 +1,667 @@
+/** \file
+ * \brief Menu Resources
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <memory.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_dialog.h"
+#include "iup_str.h"
+#include "iup_image.h"
+#include "iup_dlglist.h"
+#include "iup_focus.h"
+#include "iup_menu.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+#include "iupwin_brush.h"
+
+
+Ihandle* iupwinMenuGetHandle(HMENU hMenu)
+{
+ MENUINFO menuinfo;
+ menuinfo.cbSize = sizeof(MENUINFO);
+ menuinfo.fMask = MIM_MENUDATA;
+ if (GetMenuInfo(hMenu, &menuinfo))
+ return (Ihandle*)menuinfo.dwMenuData;
+ else
+ return NULL;
+}
+
+Ihandle* iupwinMenuGetItemHandle(HMENU hMenu, int menuId)
+{
+ MENUITEMINFO menuiteminfo;
+ menuiteminfo.cbSize = sizeof(MENUITEMINFO);
+ menuiteminfo.fMask = MIIM_DATA;
+
+ if (GetMenuItemInfo(hMenu, menuId, FALSE, &menuiteminfo))
+ return (Ihandle*)menuiteminfo.dwItemData;
+ else
+ return NULL;
+}
+
+int iupdrvMenuGetMenuBarSize(Ihandle* ih)
+{
+ (void)ih;
+ return GetSystemMetrics(SM_CYMENU);
+}
+
+static void winMenuUpdateBar(Ihandle* ih)
+{
+ if (iupMenuIsMenuBar(ih) && ih->parent->handle)
+ DrawMenuBar(ih->parent->handle);
+ else if (ih->parent)
+ {
+ ih = ih->parent; /* check also for children of a menu bar */
+ if (iupMenuIsMenuBar(ih) && ih->parent->handle)
+ DrawMenuBar(ih->parent->handle);
+ }
+}
+
+static void winMenuGetLastPos(Ihandle* ih, int *last_pos, int *pos)
+{
+ Ihandle* child;
+ *last_pos=0;
+ *pos=0;
+ for (child=ih->parent->firstchild; child; child=child->brother)
+ {
+ if (child == ih)
+ *pos = *last_pos;
+ (*last_pos)++;
+ }
+}
+
+static void winItemCheckToggle(Ihandle* ih)
+{
+ if (iupAttribGetBoolean(ih->parent, "RADIO"))
+ {
+ int last_pos, pos;
+ winMenuGetLastPos(ih, &last_pos, &pos);
+ CheckMenuRadioItem((HMENU)ih->handle, 0, last_pos, pos, MF_BYPOSITION);
+
+ winMenuUpdateBar(ih);
+ }
+ else if (iupAttribGetBoolean(ih, "AUTOTOGGLE"))
+ {
+ if (GetMenuState((HMENU)ih->handle, (UINT)ih->serial, MF_BYCOMMAND) & MF_CHECKED)
+ CheckMenuItem((HMENU)ih->handle, (UINT)ih->serial, MF_UNCHECKED|MF_BYCOMMAND);
+ else
+ CheckMenuItem((HMENU)ih->handle, (UINT)ih->serial, MF_CHECKED|MF_BYCOMMAND);
+
+ winMenuUpdateBar(ih);
+ }
+}
+
+typedef struct _IchildId
+{
+ int id, menuid;
+ Ihandle* child;
+} IchildId;
+
+void iupwinMenuDialogProc(Ihandle* ih_dialog, UINT msg, WPARAM wp, LPARAM lp)
+{
+ /* called only from winDialogBaseProc */
+
+ switch (msg)
+ {
+ case WM_INITMENUPOPUP:
+ {
+ HMENU hMenu = (HMENU)wp;
+ Ihandle *ih = iupwinMenuGetHandle(hMenu);
+ if (ih)
+ {
+ Icallback cb = (Icallback)IupGetCallback(ih, "OPEN_CB");
+ if (!cb && ih->parent) cb = (Icallback)IupGetCallback(ih->parent, "OPEN_CB"); /* check also in the Submenu */
+ if (cb) cb(ih);
+ }
+ break;
+ }
+ case WM_UNINITMENUPOPUP:
+ {
+ HMENU hMenu = (HMENU)wp;
+ Ihandle *ih = iupwinMenuGetHandle(hMenu);
+ if (ih)
+ {
+ Icallback cb = (Icallback)IupGetCallback(ih, "MENUCLOSE_CB");
+ if (!cb && ih->parent) cb = (Icallback)IupGetCallback(ih->parent, "MENUCLOSE_CB"); /* check also in the Submenu */
+ if (cb) cb(ih);
+ }
+ break;
+ }
+ case WM_MENUSELECT:
+ {
+ HMENU hMenu = (HMENU)lp;
+ Ihandle *ih;
+
+ if (!lp)
+ break;
+
+ if ((HIWORD(wp) & MF_POPUP) || (HIWORD(wp) & MF_SYSMENU)) /* drop-down ih or submenu. */
+ {
+ UINT menuindex = LOWORD(wp);
+ HMENU hsubmenu = GetSubMenu(hMenu, menuindex);
+ ih = iupwinMenuGetHandle(hsubmenu); /* returns the handle of a IupMenu */
+ if (ih) ih = ih->parent; /* gets the submenu */
+ }
+ else /* ih item */
+ {
+ UINT menuID = LOWORD(wp);
+ ih = iupwinMenuGetItemHandle(hMenu, menuID);
+ }
+
+ if (ih)
+ {
+ Icallback cb = IupGetCallback(ih, "HIGHLIGHT_CB");
+ if (cb) cb(ih);
+ }
+ break;
+ }
+ case WM_MENUCOMMAND:
+ {
+ int menuId = GetMenuItemID((HMENU)lp, (int)wp);
+ Icallback cb;
+ Ihandle* ih;
+
+ if (menuId >= IUP_MDICHILD_START)
+ break;
+
+ ih = iupwinMenuGetItemHandle((HMENU)lp, menuId);
+ if (!ih)
+ break;
+
+ winItemCheckToggle(ih);
+
+ cb = IupGetCallback(ih, "ACTION");
+ if (cb && cb(ih) == IUP_CLOSE)
+ IupExitLoop();
+
+ break;
+ }
+ case WM_ENTERMENULOOP:
+ {
+ /* Simulate WM_KILLFOCUS when the menu interaction is started */
+ Ihandle* lastfocus = (Ihandle*)iupAttribGet(ih_dialog, "_IUPWIN_LASTFOCUS");
+ if (lastfocus) iupCallKillFocusCb(lastfocus);
+ break;
+ }
+ case WM_EXITMENULOOP:
+ {
+ /* Simulate WM_GETFOCUS when the menu interaction is stopped */
+ Ihandle* lastfocus = (Ihandle*)iupAttribGet(ih_dialog, "_IUPWIN_LASTFOCUS");
+ if (lastfocus) iupCallGetFocusCb(lastfocus);
+ break;
+ }
+ }
+}
+
+int iupdrvMenuPopup(Ihandle* ih, int x, int y)
+{
+ HWND hWndActive = GetActiveWindow();
+ int tray_menu = 0;
+ int menuId;
+
+ if (!hWndActive)
+ {
+ /* search for a valid handle */
+ Ihandle* dlg = iupDlgListFirst();
+ do
+ {
+ if (dlg->handle)
+ {
+ hWndActive = dlg->handle; /* found a valid handle */
+
+ /* if not a "TRAY" dialog, keep searching, because TRAY is a special case */
+ if (iupAttribGetBoolean(dlg, "TRAY"))
+ break;
+ }
+ dlg = iupDlgListNext();
+ } while (dlg);
+ }
+
+ /* Necessary to avoid tray dialogs to lock popup menus (they get sticky after the 1st time) */
+ if (hWndActive)
+ {
+ Ihandle* dlg = iupwinHandleGet(hWndActive);
+ if (dlg && iupAttribGetBoolean(dlg, "TRAY"))
+ {
+ /* To display a context menu for a notification icon,
+ the current window must be the foreground window. */
+ SetForegroundWindow(hWndActive);
+ tray_menu = 1;
+ }
+ }
+
+ /* stop processing here. messages will not go to the message loop */
+ menuId = TrackPopupMenu((HMENU)ih->handle, TPM_LEFTALIGN|TPM_RIGHTBUTTON|TPM_RETURNCMD, x, y, 0, hWndActive, NULL);
+
+ if (tray_menu)
+ {
+ /* You must force a task switch to the application that
+ called TrackPopupMenu at some time in the near future.
+ This is done by posting a benign message to the window. */
+ PostMessage(hWndActive, WM_NULL, 0, 0);
+ }
+
+ if (menuId)
+ {
+ Icallback cb;
+ Ihandle* ih_item = iupwinMenuGetItemHandle((HMENU)ih->handle, menuId);
+ if (!ih_item) return IUP_NOERROR;
+
+ winItemCheckToggle(ih_item);
+
+ cb = IupGetCallback(ih_item, "ACTION");
+ if (cb && cb(ih_item) == IUP_CLOSE)
+ IupExitLoop();
+ }
+
+ return IUP_NOERROR;
+}
+
+
+/*******************************************************************************************/
+
+
+static int winMenuSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ /* must use IupGetAttribute to use inheritance */
+ if (iupStrToRGB(value, &r, &g, &b))
+ {
+ MENUINFO menuinfo;
+ menuinfo.cbSize = sizeof(MENUINFO);
+ menuinfo.fMask = MIM_BACKGROUND;
+ menuinfo.hbrBack = iupwinBrushGet(RGB(r,g,b));
+ SetMenuInfo((HMENU)ih->handle, &menuinfo);
+ winMenuUpdateBar(ih);
+ }
+ return 1;
+}
+
+static void winMenuChildUnMapMethod(Ihandle* ih)
+{
+ RemoveMenu((HMENU)ih->handle, (UINT)ih->serial, MF_BYCOMMAND);
+}
+
+static int winMenuAddParentSubmenu(Ihandle* ih)
+{
+ int pos;
+ MENUITEMINFO menuiteminfo;
+
+ pos = IupGetChildPos(ih->parent, ih);
+ ih->serial = iupMenuGetChildId(ih);
+
+ menuiteminfo.cbSize = sizeof(MENUITEMINFO);
+ menuiteminfo.fMask = MIIM_ID|MIIM_DATA|MIIM_SUBMENU|MIIM_STRING;
+ menuiteminfo.dwTypeData = ""; /* must set or it will be not possible to update */
+ menuiteminfo.cch = 0;
+ menuiteminfo.wID = (UINT)ih->serial;
+ menuiteminfo.dwItemData = (ULONG_PTR)ih;
+ menuiteminfo.hSubMenu = (HMENU)ih->firstchild->handle;
+
+ if (!InsertMenuItem((HMENU)ih->parent->handle, pos, TRUE, &menuiteminfo))
+ return IUP_ERROR;
+
+ ih->handle = ih->parent->handle; /* gets the HMENU of the parent */
+
+ /* must update attributes since submenu is actually created after it is mapped */
+ iupAttribUpdate(ih);
+ iupAttribUpdateFromParent(ih);
+
+ winMenuUpdateBar(ih);
+
+ return IUP_NOERROR;
+}
+
+static int winMenuMapMethod(Ihandle* ih)
+{
+ MENUINFO menuinfo;
+
+ if (iupMenuIsMenuBar(ih))
+ {
+ /* top level menu used for MENU attribute in IupDialog (a menu bar) */
+
+ ih->handle = (InativeHandle*)CreateMenu();
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ SetMenu(ih->parent->handle, (HMENU)ih->handle);
+ }
+ else
+ {
+ if (ih->parent)
+ {
+ /* parent is a submenu */
+
+ ih->handle = (InativeHandle*)CreatePopupMenu();
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ if (winMenuAddParentSubmenu(ih->parent) == IUP_ERROR)
+ {
+ DestroyMenu((HMENU)ih->handle);
+ return IUP_ERROR;
+ }
+ }
+ else
+ {
+ /* top level menu used for IupPopup */
+
+ ih->handle = (InativeHandle*)CreatePopupMenu();
+ if (!ih->handle)
+ return IUP_ERROR;
+
+ iupAttribSetStr(ih, "_IUPWIN_POPUP_MENU", "1");
+ }
+ }
+
+ menuinfo.cbSize = sizeof(MENUINFO);
+ menuinfo.fMask = MIM_MENUDATA;
+ menuinfo.dwMenuData = (ULONG_PTR)ih;
+
+ if (!iupAttribGetInherit(ih, "_IUPWIN_POPUP_MENU")) /* check in the top level menu using inheritance */
+ {
+ menuinfo.fMask |= MIM_STYLE;
+ menuinfo.dwStyle = MNS_NOTIFYBYPOS;
+ }
+
+ SetMenuInfo((HMENU)ih->handle, &menuinfo);
+
+ winMenuUpdateBar(ih);
+
+ return IUP_NOERROR;
+}
+
+static void winMenuUnMapMethod(Ihandle* ih)
+{
+ if (iupMenuIsMenuBar(ih))
+ SetMenu(ih->parent->handle, NULL);
+
+ DestroyMenu((HMENU)ih->handle); /* DestroyMenu is recursive */
+}
+
+void iupdrvMenuInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = winMenuMapMethod;
+ ic->UnMap = winMenuUnMapMethod;
+
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, winMenuSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "MENUBGCOLOR", IUPAF_DEFAULT);
+}
+
+
+/*******************************************************************************************/
+
+
+static int winItemSetImageAttrib(Ihandle* ih, const char* value)
+{
+ HBITMAP hBitmapUnchecked, hBitmapChecked;
+ char* impress;
+
+ if (ih->handle == (InativeHandle*)-1) /* check if submenu is actually created */
+ return 1;
+
+ hBitmapUnchecked = iupImageGetImage(value, ih, 0);
+
+ impress = iupAttribGet(ih, "IMPRESS");
+ if (impress)
+ hBitmapChecked = iupImageGetImage(impress, ih, 0);
+ else
+ hBitmapChecked = hBitmapUnchecked;
+
+ SetMenuItemBitmaps((HMENU)ih->handle, (UINT)ih->serial, MF_BYCOMMAND, hBitmapUnchecked, hBitmapChecked);
+
+ winMenuUpdateBar(ih);
+
+ return 1;
+}
+
+static int winItemSetImpressAttrib(Ihandle* ih, const char* value)
+{
+ HBITMAP hBitmapUnchecked, hBitmapChecked;
+
+ char *image = iupAttribGet(ih, "IMPRESS");
+ hBitmapUnchecked = iupImageGetImage(image, ih, 0);
+
+ if (value)
+ hBitmapChecked = iupImageGetImage(value, ih, 0);
+ else
+ hBitmapChecked = hBitmapUnchecked;
+
+ SetMenuItemBitmaps((HMENU)ih->handle, (UINT)ih->serial, MF_BYCOMMAND, hBitmapUnchecked, hBitmapChecked);
+
+ winMenuUpdateBar(ih);
+
+ return 1;
+}
+
+static int winItemSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ char *str;
+ MENUITEMINFO menuiteminfo;
+
+ if (ih->handle == (InativeHandle*)-1) /* check if submenu is actually created */
+ return 1;
+
+ if (!value)
+ {
+ str = " ";
+ value = str;
+ }
+ else
+ str = iupMenuProcessTitle(ih, value);
+
+ menuiteminfo.cbSize = sizeof(MENUITEMINFO);
+ menuiteminfo.fMask = MIIM_TYPE;
+ menuiteminfo.fType = MFT_STRING;
+ menuiteminfo.dwTypeData = str;
+ menuiteminfo.cch = strlen(str);
+
+ SetMenuItemInfo((HMENU)ih->handle, (UINT)ih->serial, FALSE, &menuiteminfo);
+
+ if (str != value) free(str);
+
+ winMenuUpdateBar(ih);
+
+ return 1;
+}
+
+static int winItemSetTitleImageAttrib(Ihandle* ih, const char* value)
+{
+ HBITMAP hBitmap;
+ MENUITEMINFO menuiteminfo;
+
+ if (ih->handle == (InativeHandle*)-1) /* check if submenu is actually created */
+ return 1;
+
+ hBitmap = iupImageGetImage(value, ih, 0);
+
+ menuiteminfo.cbSize = sizeof(MENUITEMINFO);
+ menuiteminfo.fMask = MIIM_BITMAP;
+ menuiteminfo.hbmpItem = hBitmap;
+
+ SetMenuItemInfo((HMENU)ih->handle, (UINT)ih->serial, FALSE, &menuiteminfo);
+
+ winMenuUpdateBar(ih);
+
+ return 1;
+}
+
+static int winItemSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->handle == (InativeHandle*)-1) /* check if submenu is actually created */
+ return 1;
+
+ if (iupStrBoolean(value))
+ EnableMenuItem((HMENU)ih->handle, (UINT)ih->serial, MF_ENABLED|MF_BYCOMMAND);
+ else
+ EnableMenuItem((HMENU)ih->handle, (UINT)ih->serial, MF_GRAYED|MF_BYCOMMAND);
+
+ winMenuUpdateBar(ih);
+
+ return 0;
+}
+
+static char* winItemGetActiveAttrib(Ihandle* ih)
+{
+ if (ih->handle == (InativeHandle*)-1) /* check if submenu is actually created */
+ return NULL;
+
+ if (GetMenuState((HMENU)ih->handle, (UINT)ih->serial, MF_BYCOMMAND) & MF_GRAYED)
+ return "NO";
+ else
+ return "YES";
+}
+
+static int winItemSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (iupAttribGetBoolean(ih->parent, "RADIO"))
+ {
+ int last_pos, pos;
+ winMenuGetLastPos(ih, &last_pos, &pos);
+ CheckMenuRadioItem((HMENU)ih->handle, 0, last_pos, pos, MF_BYPOSITION);
+ }
+ else
+ {
+ if (iupStrBoolean(value))
+ CheckMenuItem((HMENU)ih->handle, (UINT)ih->serial, MF_CHECKED|MF_BYCOMMAND);
+ else
+ CheckMenuItem((HMENU)ih->handle, (UINT)ih->serial, MF_UNCHECKED|MF_BYCOMMAND);
+ }
+
+ winMenuUpdateBar(ih);
+
+ return 0;
+}
+
+static char* winItemGetValueAttrib(Ihandle* ih)
+{
+ if (GetMenuState((HMENU)ih->handle, (UINT)ih->serial, MF_BYCOMMAND) & MF_CHECKED)
+ return "ON";
+ else
+ return "OFF";
+}
+
+static int winItemMapMethod(Ihandle* ih)
+{
+ int pos;
+ MENUITEMINFO menuiteminfo;
+
+ if (!ih->parent || !IsMenu((HMENU)ih->parent->handle))
+ return IUP_ERROR;
+
+ pos = IupGetChildPos(ih->parent, ih);
+ ih->serial = iupMenuGetChildId(ih);
+
+ menuiteminfo.cbSize = sizeof(MENUITEMINFO);
+ menuiteminfo.fMask = MIIM_ID|MIIM_DATA|MIIM_STRING;
+ menuiteminfo.dwTypeData = ""; /* must set or it will be not possible to update */
+ menuiteminfo.cch = 0;
+ menuiteminfo.wID = (UINT)ih->serial;
+ menuiteminfo.dwItemData = (ULONG_PTR)ih;
+
+ if (!InsertMenuItem((HMENU)ih->parent->handle, pos, TRUE, &menuiteminfo))
+ return IUP_ERROR;
+
+ ih->handle = ih->parent->handle; /* gets the HMENU of the parent */
+ winMenuUpdateBar(ih);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvItemInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = winItemMapMethod;
+ ic->UnMap = winMenuChildUnMapMethod;
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "ACTIVE", winItemGetActiveAttrib, winItemSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "MENUBGCOLOR", IUPAF_DEFAULT); /* used by IupImage */
+
+ /* IupItem only */
+ iupClassRegisterAttribute(ic, "VALUE", winItemGetValueAttrib, winItemSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TITLE", NULL, winItemSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TITLEIMAGE", NULL, winItemSetTitleImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, winItemSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMPRESS", NULL, winItemSetImpressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* Used by iupdrvImageCreateImage */
+ /* necessary because it uses an old HBITMAP solution */
+ iupClassRegisterAttribute(ic, "FLAT_ALPHA", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+}
+
+
+/*******************************************************************************************/
+
+
+static int winSubmenuMapMethod(Ihandle* ih)
+{
+ if (!ih->parent || !IsMenu((HMENU)ih->parent->handle))
+ return IUP_ERROR;
+
+ return iupBaseTypeVoidMapMethod(ih);
+}
+
+void iupdrvSubmenuInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = winSubmenuMapMethod;
+
+ /* IupSubmenu only */
+ iupClassRegisterAttribute(ic, "ACTIVE", winItemGetActiveAttrib, winItemSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "TITLE", NULL, winItemSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, winItemSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "MENUBGCOLOR", IUPAF_DEFAULT); /* used by IupImage */
+
+ /* Used by iupdrvImageCreateImage */
+ /* necessary because it uses an old HBITMAP solution */
+ iupClassRegisterAttribute(ic, "FLAT_ALPHA", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+}
+
+
+/*******************************************************************************************/
+
+
+static int winSeparatorMapMethod(Ihandle* ih)
+{
+ int pos;
+ MENUITEMINFO menuiteminfo;
+
+ if (!ih->parent || !IsMenu((HMENU)ih->parent->handle))
+ return IUP_ERROR;
+
+ pos = IupGetChildPos(ih->parent, ih);
+ ih->serial = iupMenuGetChildId(ih);
+
+ menuiteminfo.cbSize = sizeof(MENUITEMINFO);
+ menuiteminfo.fMask = MIIM_FTYPE|MIIM_ID|MIIM_DATA;
+ menuiteminfo.fType = MFT_SEPARATOR;
+ menuiteminfo.wID = (UINT)ih->serial;
+ menuiteminfo.dwItemData = (ULONG_PTR)ih;
+
+ if (!InsertMenuItem((HMENU)ih->parent->handle, pos, TRUE, &menuiteminfo))
+ return IUP_ERROR;
+
+ ih->handle = ih->parent->handle; /* gets the HMENU of the parent */
+ winMenuUpdateBar(ih);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvSeparatorInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = winSeparatorMapMethod;
+ ic->UnMap = winMenuChildUnMapMethod;
+}
diff --git a/iup/src/win/iupwin_messagedlg.c b/iup/src/win/iupwin_messagedlg.c
new file mode 100755
index 0000000..63159aa
--- /dev/null
+++ b/iup/src/win/iupwin_messagedlg.c
@@ -0,0 +1,105 @@
+/** \file
+ * \brief Windows IupMessageDlg pre-defined dialog
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_dialog.h"
+
+
+static void winMessageDlgHelpCallback(HELPINFO* HelpInfo)
+{
+ Ihandle* ih = (Ihandle*)HelpInfo->dwContextId;
+ Icallback cb = (Icallback)IupGetCallback(ih, "HELP_CB");
+ if (cb && cb(ih) == IUP_CLOSE)
+ {
+ if (iupStrEqualNoCase(iupAttribGetStr(ih, "BUTTONS"), "OK")) /* only one button */
+ EndDialog((HWND)HelpInfo->hItemHandle, IDOK);
+ else
+ EndDialog((HWND)HelpInfo->hItemHandle, IDCANCEL);
+ }
+}
+
+static int winMessageDlgPopup(Ihandle* ih, int x, int y)
+{
+ InativeHandle* parent = iupDialogGetNativeParent(ih);
+ MSGBOXPARAMS MsgBoxParams;
+ int result, num_but = 2;
+ DWORD dwStyle = MB_TASKMODAL;
+ char *icon, *buttons;
+ (void)x;
+ (void)y;
+
+ if (!parent)
+ parent = GetActiveWindow();
+
+ icon = iupAttribGetStr(ih, "DIALOGTYPE");
+ if (iupStrEqualNoCase(icon, "ERROR"))
+ dwStyle |= MB_ICONERROR;
+ else if (iupStrEqualNoCase(icon, "WARNING"))
+ dwStyle |= MB_ICONWARNING;
+ else if (iupStrEqualNoCase(icon, "INFORMATION"))
+ dwStyle |= MB_ICONINFORMATION;
+ else if (iupStrEqualNoCase(icon, "QUESTION"))
+ dwStyle |= MB_ICONQUESTION;
+
+ buttons = iupAttribGetStr(ih, "BUTTONS");
+ if (iupStrEqualNoCase(buttons, "OKCANCEL"))
+ dwStyle |= MB_OKCANCEL;
+ else if (iupStrEqualNoCase(buttons, "YESNO"))
+ dwStyle |= MB_YESNO;
+ else
+ {
+ dwStyle |= MB_OK;
+ num_but = 1;
+ }
+
+ if (IupGetCallback(ih, "HELP_CB"))
+ dwStyle |= MB_HELP;
+
+ if (num_but == 2 && iupAttribGetInt(ih, "BUTTONDEFAULT") == 2)
+ dwStyle |= MB_DEFBUTTON2;
+ else
+ dwStyle |= MB_DEFBUTTON1;
+
+ MsgBoxParams.cbSize = sizeof(MSGBOXPARAMS);
+ MsgBoxParams.hwndOwner = parent;
+ MsgBoxParams.hInstance = NULL;
+ MsgBoxParams.lpszText = iupAttribGet(ih, "VALUE");
+ MsgBoxParams.lpszCaption = iupAttribGet(ih, "TITLE");
+ MsgBoxParams.dwStyle = dwStyle;
+ MsgBoxParams.lpszIcon = NULL;
+ MsgBoxParams.dwContextHelpId = (DWORD_PTR)ih;
+ MsgBoxParams.lpfnMsgBoxCallback = (MSGBOXCALLBACK)winMessageDlgHelpCallback;
+ MsgBoxParams.dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT);
+
+ result = MessageBoxIndirect(&MsgBoxParams);
+ if (result == 0)
+ {
+ iupAttribSetStr(ih, "BUTTONRESPONSE", NULL);
+ return IUP_ERROR;
+ }
+
+ if (result == IDNO || result == IDCANCEL)
+ iupAttribSetStr(ih, "BUTTONRESPONSE", "2");
+ else
+ iupAttribSetStr(ih, "BUTTONRESPONSE", "1");
+
+ return IUP_NOERROR;
+}
+
+void iupdrvMessageDlgInitClass(Iclass* ic)
+{
+ ic->DlgPopup = winMessageDlgPopup;
+}
+
+/*
+In Windows it will always sound a beep. The beep is different for each dialog type.
+*/
diff --git a/iup/src/win/iupwin_open.c b/iup/src/win/iupwin_open.c
new file mode 100755
index 0000000..7357cde
--- /dev/null
+++ b/iup/src/win/iupwin_open.c
@@ -0,0 +1,124 @@
+/** \file
+ * \brief Windows Driver Core
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <windows.h>
+#include <commctrl.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_globalattrib.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_info.h"
+#include "iupwin_handle.h"
+#include "iupwin_brush.h"
+#include "iupwin_draw.h"
+
+
+HINSTANCE iupwin_hinstance = 0;
+int iupwin_comctl32ver6 = 0;
+
+void* iupdrvGetDisplay(void)
+{
+ return NULL;
+}
+
+void iupwinShowLastError(void)
+{
+ int error = GetLastError();
+ if (error)
+ {
+ LPVOID lpMsgBuf;
+ FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL, error, 0, (LPTSTR)&lpMsgBuf, 0, NULL);
+ MessageBox(NULL, (LPCTSTR)lpMsgBuf, "GetLastError:", MB_OK|MB_ICONERROR);
+ LocalFree(lpMsgBuf);
+ }
+}
+
+static void winSetGlobalColor(int index, const char* name)
+{
+ COLORREF color = GetSysColor(index);
+ iupGlobalSetDefaultColorAttrib(name, (int)GetRValue(color),
+ (int)GetGValue(color),
+ (int)GetBValue(color));
+}
+
+int iupdrvOpen(int *argc, char ***argv)
+{
+ (void)argc; /* unused in the Windows driver */
+ (void)argv;
+
+ if (iupwinGetSystemMajorVersion() < 5) /* older than Windows 2000 */
+ return IUP_ERROR;
+
+ IupSetGlobal("DRIVER", "Win32");
+
+ {
+#ifdef __MINGW32__
+ /* MingW fails to create windows if using a console and HINSTANCE is not from the console */
+ HWND win = GetConsoleWindow();
+ if (win)
+ iupwin_hinstance = (HINSTANCE)GetWindowLongPtr(win, GWLP_HINSTANCE);
+ else
+#endif
+ iupwin_hinstance = GetModuleHandle(NULL);
+ IupSetGlobal("HINSTANCE", (char*)iupwin_hinstance);
+ }
+
+ CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
+
+ {
+ INITCOMMONCONTROLSEX InitCtrls;
+ InitCtrls.dwSize = sizeof(INITCOMMONCONTROLSEX);
+ InitCtrls.dwICC = ICC_WIN95_CLASSES; /* trackbar, tooltips, updown, tab, progress */
+ InitCommonControlsEx(&InitCtrls);
+ }
+
+ iupwin_comctl32ver6 = (iupwinGetComCtl32Version() >= 0x060000)? 1: 0;
+ if (iupwin_comctl32ver6 && !iupwinIsAppThemed()) /* When the user seleted the Windows Classic theme */
+ iupwin_comctl32ver6 = 0;
+
+ IupSetGlobal("SYSTEMLANGUAGE", iupwinGetSystemLanguage());
+
+ /* default colors */
+ winSetGlobalColor(COLOR_BTNFACE, "DLGBGCOLOR");
+ winSetGlobalColor(COLOR_BTNTEXT, "DLGFGCOLOR");
+ winSetGlobalColor(COLOR_WINDOW, "TXTBGCOLOR");
+ winSetGlobalColor(COLOR_WINDOWTEXT, "TXTFGCOLOR");
+ winSetGlobalColor(COLOR_MENU, "MENUBGCOLOR");
+ winSetGlobalColor(COLOR_MENUTEXT, "MENUFGCOLOR");
+
+ iupwinHandleInit();
+ iupwinBrushInit();
+ iupwinDrawInit();
+
+#ifdef __WATCOMC__
+ {
+ /* this is used to force Watcom to link the winmain.c module. */
+ void iupwinMainDummy(void);
+ iupwinMainDummy();
+ }
+#endif
+
+ return IUP_NOERROR;
+}
+
+void iupdrvClose(void)
+{
+ iupwinHandleFinish();
+ iupwinBrushFinish();
+
+ CoUninitialize();
+}
diff --git a/iup/src/win/iupwin_progressbar.c b/iup/src/win/iupwin_progressbar.c
new file mode 100755
index 0000000..9038d79
--- /dev/null
+++ b/iup/src/win/iupwin_progressbar.c
@@ -0,0 +1,164 @@
+/** \file
+ * \brief Progress bar Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+#include <commctrl.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_progressbar.h"
+#include "iup_drv.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+
+
+#ifndef PBS_MARQUEE /* it is defined only when _WIN32_WINNT >= 0x0501 */
+#define PBS_MARQUEE 0x08
+#define PBM_SETMARQUEE (WM_USER+10)
+#endif
+
+#define IUP_PB_MAX 32000
+
+
+static int winProgressBarSetMarqueeAttrib(Ihandle* ih, const char* value)
+{
+ /* MARQUEE only works when using XP Styles */
+ if (!iupwin_comctl32ver6)
+ return 0;
+
+ if (iupStrBoolean(value))
+ SendMessage(ih->handle, PBM_SETMARQUEE, TRUE, 100);
+ else
+ SendMessage(ih->handle, PBM_SETMARQUEE, FALSE, 0);
+
+ return 1;
+}
+
+static int winProgressBarSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ ih->data->value = 0;
+ else
+ ih->data->value = atof(value);
+
+ iProgressBarCropValue(ih);
+
+ /* Shows when the marquee style is not set */
+ if (!ih->data->marquee)
+ {
+ double factor = (ih->data->value - ih->data->vmin) / (ih->data->vmax - ih->data->vmin);
+ int val = (int)(IUP_PB_MAX * factor);
+ SendMessage(ih->handle, PBM_SETPOS, (WPARAM)val, 0);
+ }
+
+ return 0;
+}
+
+static int winProgressBarSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+
+ /* Only works when using Classic style */
+ if (iupwin_comctl32ver6)
+ return 0;
+
+ if (iupStrToRGB(value, &r, &g, &b))
+ {
+ COLORREF color = RGB(r,g,b);
+ SendMessage(ih->handle, PBM_SETBKCOLOR, 0, (LPARAM)color);
+ }
+ else
+ SendMessage(ih->handle, PBM_SETBKCOLOR, 0, (LPARAM)CLR_DEFAULT);
+ return 1;
+}
+
+static int winProgressBarSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+
+ /* Only works when using Classic style */
+ if (iupwin_comctl32ver6)
+ return 0;
+
+ if (iupStrToRGB(value, &r, &g, &b))
+ {
+ COLORREF color = RGB(r,g,b);
+ SendMessage(ih->handle, PBM_SETBARCOLOR, 0, (LPARAM)color);
+ }
+ else
+ SendMessage(ih->handle, PBM_SETBARCOLOR, 0, (LPARAM)CLR_DEFAULT);
+ return 1;
+}
+
+static int winProgressBarMapMethod(Ihandle* ih)
+{
+ DWORD dwStyle = WS_CHILD;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ if (iupStrEqualNoCase(iupAttribGetStr(ih, "ORIENTATION"), "VERTICAL"))
+ {
+ dwStyle |= PBS_VERTICAL;
+
+ if (ih->currentheight < ih->currentwidth)
+ {
+ int tmp = ih->currentheight;
+ ih->currentheight = ih->currentwidth;
+ ih->currentwidth = tmp;
+ }
+ }
+
+ if (!iupwin_comctl32ver6 && !iupAttribGetBoolean(ih, "DASHED"))
+ dwStyle |= PBS_SMOOTH;
+
+ if (iupwin_comctl32ver6 && iupAttribGetBoolean(ih, "MARQUEE"))
+ {
+ dwStyle |= PBS_MARQUEE;
+ ih->data->marquee = 1;
+ }
+
+ if (!iupwinCreateWindowEx(ih, PROGRESS_CLASS, 0, dwStyle))
+ return IUP_ERROR;
+
+ /* configure the native range */
+ SendMessage(ih->handle, PBM_SETRANGE, 0, MAKELPARAM(0, IUP_PB_MAX));
+
+ return IUP_NOERROR;
+}
+
+void iupdrvProgressBarInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = winProgressBarMapMethod;
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, winProgressBarSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ /* Only works when using Classic style */
+ if (iupwin_comctl32ver6)
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, winProgressBarSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT);
+ else
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED);
+
+ /* IupProgressBar only */
+ iupClassRegisterAttribute(ic, "VALUE", iProgressBarGetValueAttrib, winProgressBarSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ORIENTATION", NULL, NULL, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MARQUEE", NULL, winProgressBarSetMarqueeAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DASHED", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/win/iupwin_tabs.c b/iup/src/win/iupwin_tabs.c
new file mode 100755
index 0000000..682f451
--- /dev/null
+++ b/iup/src/win/iupwin_tabs.c
@@ -0,0 +1,680 @@
+/** \file
+* \brief Tabs Control
+*
+* See Copyright Notice in "iup.h"
+*/
+
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501
+#include <windows.h>
+#include <commctrl.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_stdcontrols.h"
+#include "iup_tabs.h"
+#include "iup_image.h"
+#include "iup_array.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+#include "iupwin_draw.h"
+#include "iupwin_info.h"
+
+
+int iupdrvTabsExtraDecor(Ihandle* ih)
+{
+ (void)ih;
+ return 0;
+}
+
+int iupdrvTabsGetLineCountAttrib(Ihandle* ih)
+{
+ return (int)SendMessage(ih->handle, TCM_GETROWCOUNT, 0, 0);
+}
+
+static HWND winTabsGetPageWindow(Ihandle* ih, int pos)
+{
+ TCITEM tie;
+ tie.mask = TCIF_PARAM;
+ SendMessage(ih->handle, TCM_GETITEM, pos, (LPARAM)&tie);
+ return (HWND)tie.lParam;
+}
+
+void iupdrvTabsSetCurrentTab(Ihandle* ih, int pos)
+{
+ int prev_pos = SendMessage(ih->handle, TCM_GETCURSEL, 0, 0);
+ HWND tab_page = winTabsGetPageWindow(ih, prev_pos);
+ ShowWindow(tab_page, SW_HIDE);
+
+ SendMessage(ih->handle, TCM_SETCURSEL, pos, 0);
+
+ tab_page = winTabsGetPageWindow(ih, pos);
+ ShowWindow(tab_page, SW_SHOW);
+}
+
+int iupdrvTabsGetCurrentTab(Ihandle* ih)
+{
+ return (int)SendMessage(ih->handle, TCM_GETCURSEL, 0, 0);
+}
+
+static int winTabsGetImageIndex(Ihandle* ih, const char* name)
+{
+ HIMAGELIST image_list;
+ int count, i, bpp, ret;
+ Iarray* bmp_array;
+ HBITMAP *bmp_array_data, hMask=NULL;
+ HBITMAP bmp = iupImageGetImage(name, ih, 0);
+ if (!bmp)
+ return -1;
+
+ /* the array is used to avoi adding the same bitmap twice */
+ bmp_array = (Iarray*)iupAttribGet(ih, "_IUPWIN_BMPARRAY");
+ if (!bmp_array)
+ {
+ /* create the array if does not exist */
+ bmp_array = iupArrayCreate(50, sizeof(HBITMAP));
+ iupAttribSetStr(ih, "_IUPWIN_BMPARRAY", (char*)bmp_array);
+ }
+
+ bmp_array_data = iupArrayGetData(bmp_array);
+
+ image_list = (HIMAGELIST)SendMessage(ih->handle, TCM_GETIMAGELIST, 0, 0);
+ if (!image_list)
+ {
+ int width, height;
+ UINT flags = ILC_COLOR32|ILC_MASK;
+
+ /* must use this info, since image can be a driver image loaded from resources */
+ iupdrvImageGetInfo(bmp, &width, &height, &bpp);
+
+ /* create the image list if does not exist */
+ image_list = ImageList_Create(width, height, flags, 0, 50);
+ SendMessage(ih->handle, TCM_SETIMAGELIST, 0, (LPARAM)image_list);
+ }
+ else
+ iupdrvImageGetInfo(bmp, NULL, NULL, &bpp);
+
+ /* check if that bitmap is already added to the list,
+ but we can not compare with the actual bitmap at the list since it is a copy */
+ count = ImageList_GetImageCount(image_list);
+ for (i=0; i<count; i++)
+ {
+ if (bmp_array_data[i] == bmp)
+ return i;
+ }
+
+ if (bpp == 8)
+ {
+ Ihandle* image = IupGetHandle(name);
+ if (image)
+ {
+ iupAttribSetStr(image, "_IUPIMG_NO_INVERT", "1");
+ hMask = iupdrvImageCreateMask(image);
+ iupAttribSetStr(image, "_IUPIMG_NO_INVERT", NULL);
+ }
+ }
+
+ bmp_array_data = iupArrayInc(bmp_array);
+ bmp_array_data[i] = bmp;
+ ret = ImageList_Add(image_list, bmp, hMask); /* the bmp is duplicated at the list */
+ DeleteObject(hMask);
+ return ret;
+}
+
+static int winTabsGetPageWindowPos(Ihandle* ih, HWND tab_page)
+{
+ TCITEM tie;
+ int pos, num_tabs;
+
+ num_tabs = (int)SendMessage(ih->handle, TCM_GETITEMCOUNT, 0, 0);
+ tie.mask = TCIF_PARAM;
+
+ for (pos=0; pos<num_tabs; pos++)
+ {
+ SendMessage(ih->handle, TCM_GETITEM, pos, (LPARAM)&tie);
+ if (tab_page == (HWND)tie.lParam)
+ return pos;
+ }
+
+ return -1;
+}
+
+static void winTabsPlacePageWindows(Ihandle* ih, int w, int h)
+{
+ TCITEM tie;
+ int pos, num_tabs;
+ RECT rect;
+
+ num_tabs = (int)SendMessage(ih->handle, TCM_GETITEMCOUNT, 0, 0);
+ tie.mask = TCIF_PARAM;
+
+ /* Calculate the display rectangle, assuming the
+ tab control is the size of the client area. */
+ SetRect(&rect, 0, 0, w, h);
+ SendMessage(ih->handle, TCM_ADJUSTRECT, FALSE, (LPARAM)&rect);
+
+ for (pos=0; pos<num_tabs; pos++)
+ {
+ SendMessage(ih->handle, TCM_GETITEM, pos, (LPARAM)&tie);
+
+ SetWindowPos((HWND)tie.lParam, NULL,
+ rect.left, rect.top,
+ rect.right - rect.left, rect.bottom - rect.top,
+ SWP_NOACTIVATE|SWP_NOZORDER);
+ }
+}
+
+static int winTabsUsingXPStyles(Ihandle* ih)
+{
+ return iupwin_comctl32ver6 && ih->data->type == ITABS_TOP;
+}
+
+static void winTabsDrawPageBackground(Ihandle* ih, HDC hDC, RECT* rect)
+{
+ unsigned char r=0, g=0, b=0;
+ char* color = iupAttribGetInheritNativeParent(ih, "BGCOLOR");
+ if (!color) color = iupAttribGetInheritNativeParent(ih, "BACKGROUND");
+ if (!color) color = iupAttribGet(ih, "BACKGROUND");
+ if (!color) color = IupGetGlobal("DLGBGCOLOR");
+ iupStrToRGB(color, &r, &g, &b);
+ SetDCBrushColor(hDC, RGB(r,g,b));
+ FillRect(hDC, rect, (HBRUSH)GetStockObject(DC_BRUSH));
+}
+
+static LRESULT CALLBACK winTabsPageWinProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
+{
+ switch (msg)
+ {
+ case WM_ERASEBKGND:
+ {
+ RECT rect;
+ HDC hDC = (HDC)wp;
+ Ihandle* ih = iupwinHandleGet(hWnd);
+ GetClientRect(ih->handle, &rect);
+ winTabsDrawPageBackground(ih, hDC, &rect);
+
+ /* return non zero value */
+ return 1;
+ }
+ case WM_COMMAND:
+ case WM_CTLCOLORSCROLLBAR:
+ case WM_CTLCOLORBTN:
+ case WM_CTLCOLOREDIT:
+ case WM_CTLCOLORLISTBOX:
+ case WM_CTLCOLORSTATIC:
+ case WM_DRAWITEM:
+ case WM_HSCROLL:
+ case WM_NOTIFY:
+ case WM_VSCROLL:
+ /* Forward the container messages to its parent. */
+ return SendMessage(GetParent(hWnd), msg, wp, lp);
+ }
+
+ return DefWindowProc(hWnd, msg, wp, lp);
+}
+
+static HWND winTabCreatePageWindow(Ihandle* ih)
+{
+ HWND hWnd;
+ DWORD dwStyle = WS_CHILD|WS_CLIPSIBLINGS,
+ dwExStyle = 0;
+
+ if (iupAttribGetBoolean(IupGetDialog(ih), "COMPOSITED"))
+ dwExStyle |= WS_EX_COMPOSITED;
+ else
+ dwStyle |= WS_CLIPCHILDREN;
+
+ hWnd = CreateWindowEx(dwExStyle, "IupTabsPage", NULL, dwStyle,
+ 0, 0, CW_USEDEFAULT, CW_USEDEFAULT,
+ ih->handle, NULL, iupwin_hinstance, NULL);
+
+ iupwinHandleAdd(ih, hWnd);
+
+ return hWnd;
+}
+
+/* ------------------------------------------------------------------------- */
+/* winTabs - Sets and Gets accessors */
+/* ------------------------------------------------------------------------- */
+
+static int winTabsSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+
+ if (ih->handle)
+ SendMessage(ih->handle, TCM_SETPADDING, 0, MAKELPARAM(ih->data->horiz_padding, ih->data->vert_padding));
+
+ return 0;
+}
+
+static int winTabsSetMultilineAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->handle) /* allow to set only before mapping */
+ return 0;
+
+ if (iupStrBoolean(value))
+ ih->data->is_multiline = 1;
+ else
+ {
+ if (ih->data->type == ITABS_BOTTOM || ih->data->type == ITABS_TOP)
+ ih->data->is_multiline = 0;
+ else
+ ih->data->is_multiline = 1; /* always true if left/right */
+ }
+
+ return 0;
+}
+
+static char* winTabsGetMultilineAttrib(Ihandle* ih)
+{
+ if (ih->data->is_multiline)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int winTabsSetTabTypeAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->handle) /* allow to set only before mapping */
+ return 0;
+
+ if(iupStrEqualNoCase(value, "BOTTOM"))
+ {
+ ih->data->is_multiline = 0;
+ ih->data->type = ITABS_BOTTOM;
+ ih->data->orientation = ITABS_HORIZONTAL;
+ }
+ else if(iupStrEqualNoCase(value, "LEFT"))
+ {
+ ih->data->type = ITABS_LEFT;
+ ih->data->orientation = ITABS_VERTICAL;
+ ih->data->is_multiline = 1; /* VERTICAL works only with MULTILINE */
+ }
+ else if(iupStrEqualNoCase(value, "RIGHT"))
+ {
+ ih->data->is_multiline = 1; /* VERTICAL works only with MULTILINE */
+ ih->data->type = ITABS_RIGHT;
+ ih->data->orientation = ITABS_VERTICAL;
+ }
+ else /* "TOP" */
+ {
+ ih->data->is_multiline = 0;
+ ih->data->type = ITABS_TOP;
+ ih->data->orientation = ITABS_HORIZONTAL;
+ }
+
+ return 0;
+}
+
+static int winTabsSetTabTitleAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int pos;
+ if (value && iupStrToInt(name_id, &pos)==1)
+ {
+ TCITEM tie;
+
+ tie.mask = TCIF_TEXT;
+ tie.pszText = (char*)value;
+ tie.cchTextMax = strlen(value);
+
+ SendMessage(ih->handle, TCM_SETITEM, pos, (LPARAM)&tie);
+ }
+ return 1;
+}
+
+static int winTabsSetTabImageAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int pos;
+ if (value && iupStrToInt(name_id, &pos)==1)
+ {
+ TCITEM tie;
+
+ tie.mask = TCIF_IMAGE;
+ tie.iImage = winTabsGetImageIndex(ih, value);
+
+ SendMessage(ih->handle, TCM_SETITEM, pos, (LPARAM)&tie);
+ }
+ return 1;
+}
+
+static char* winTabsGetBgColorAttrib(Ihandle* ih)
+{
+ /* the most important use of this is to provide
+ the correct background for images */
+ if (iupwin_comctl32ver6)
+ {
+ COLORREF cr;
+ if (iupwinDrawGetThemeTabsBgColor(ih->handle, &cr))
+ {
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%d %d %d", (int)GetRValue(cr), (int)GetGValue(cr), (int)GetBValue(cr));
+ return str;
+ }
+ }
+
+ return IupGetGlobal("DLGBGCOLOR");
+}
+
+
+/* ------------------------------------------------------------------------- */
+/* winTabs - Calls the user callback to change of tab */
+/* ------------------------------------------------------------------------- */
+
+static int winTabsCtlColor(Ihandle* ih, HDC hdc, LRESULT *result)
+{
+ /* works only when NOT winTabsUsingXPStyles */
+ unsigned char r, g, b;
+ char* color = iupBaseNativeParentGetBgColorAttrib(ih);
+ if (iupStrToRGB(color, &r, &g, &b))
+ {
+ SetDCBrushColor(hdc, RGB(r,g,b));
+ *result = (LRESULT)GetStockObject(DC_BRUSH);
+ return 1;
+ }
+ return 0;
+}
+
+static int winTabsWmNotify(Ihandle* ih, NMHDR* msg_info, int *result)
+{
+ (void)result;
+
+ if (msg_info->code == TCN_SELCHANGING)
+ {
+ IFnnn cb = (IFnnn)IupGetCallback(ih, "TABCHANGE_CB");
+ int prev_pos = SendMessage(ih->handle, TCM_GETCURSEL, 0, 0);
+ iupAttribSetInt(ih, "_IUPTABS_PREV_CHILD_POS", prev_pos);
+
+ if (cb)
+ {
+ Ihandle* prev_child = IupGetChild(ih, prev_pos);
+ iupAttribSetStr(ih, "_IUPTABS_PREV_CHILD", (char*)prev_child);
+ }
+ }
+
+ if (msg_info->code == TCN_SELCHANGE)
+ {
+ IFnnn cb = (IFnnn)IupGetCallback(ih, "TABCHANGE_CB");
+ int pos = SendMessage(ih->handle, TCM_GETCURSEL, 0, 0);
+ int prev_pos = iupAttribGetInt(ih, "_IUPTABS_PREV_CHILD_POS");
+ HWND tab_page = winTabsGetPageWindow(ih, pos);
+ ShowWindow(tab_page, SW_SHOW);
+ tab_page = winTabsGetPageWindow(ih, prev_pos);
+ ShowWindow(tab_page, SW_HIDE);
+
+ if (cb)
+ {
+ Ihandle* child = IupGetChild(ih, pos);
+ Ihandle* prev_child = (Ihandle*)iupAttribGet(ih, "_IUPTABS_PREV_CHILD");
+ iupAttribSetStr(ih, "_IUPTABS_PREV_CHILD", NULL);
+
+ cb(ih, child, prev_child);
+ }
+ }
+
+ return 0; /* result not used */
+}
+
+static int winTabsProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ switch(msg)
+ {
+ case WM_SIZE:
+ {
+ WNDPROC oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_OLDPROC_CB");
+ CallWindowProc(oldProc, ih->handle, msg, wp, lp);
+
+ winTabsPlacePageWindows(ih, LOWORD(lp), HIWORD(lp));
+
+ *result = 0;
+ return 1;
+ }
+ }
+
+ return iupwinBaseContainerProc(ih, msg, wp, lp, result);
+}
+
+/* ------------------------------------------------------------------------- */
+/* winTabs - Methods and Init Class */
+/* ------------------------------------------------------------------------- */
+
+static void winTabsChildAddedMethod(Ihandle* ih, Ihandle* child)
+{
+ if (IupGetName(child) == NULL)
+ iupAttribSetHandleName(child);
+
+ if (ih->handle)
+ {
+ TCITEM tie;
+ HWND tab_page;
+ char *tabtitle, *tabimage;
+ int pos, old_rowcount;
+ RECT rect;
+
+ pos = IupGetChildPos(ih, child);
+
+ tab_page = winTabCreatePageWindow(ih);
+
+ if (pos == 0)
+ ShowWindow(tab_page, SW_SHOW);
+
+ tabtitle = iupAttribGet(child, "TABTITLE");
+ if (!tabtitle) tabtitle = iupTabsAttribGetStrId(ih, "TABTITLE", pos);
+ tabimage = iupAttribGet(child, "TABIMAGE");
+ if (!tabimage) tabimage = iupTabsAttribGetStrId(ih, "TABIMAGE", pos);
+ if (!tabtitle && !tabimage)
+ tabtitle = " ";
+
+ old_rowcount = (int)SendMessage(ih->handle, TCM_GETROWCOUNT, 0, 0);
+
+ tie.mask = TCIF_PARAM;
+
+ if (tabtitle)
+ {
+ tie.mask |= TCIF_TEXT;
+ tie.pszText = tabtitle;
+ tie.cchTextMax = strlen(tabtitle);
+ }
+
+ if (tabimage)
+ {
+ tie.mask |= TCIF_IMAGE;
+ tie.iImage = winTabsGetImageIndex(ih, tabimage);
+ }
+
+ /* create tabs and label them */
+ tie.lParam = (LPARAM)tab_page;
+ SendMessage(ih->handle, TCM_INSERTITEM, pos, (LPARAM)&tie);
+
+ /* Calculate the display rectangle, assuming the
+ tab control is the size of the client area. */
+ GetClientRect(ih->handle, &rect);
+ SendMessage(ih->handle, TCM_ADJUSTRECT, FALSE, (LPARAM)&rect);
+
+ SetWindowPos(tab_page, NULL,
+ rect.left, rect.top,
+ rect.right - rect.left, rect.bottom - rect.top,
+ SWP_NOACTIVATE|SWP_NOZORDER);
+
+ iupAttribSetStr(child, "_IUPTAB_CONTAINER", (char*)tab_page);
+
+ if (ih->data->is_multiline)
+ {
+ if (ih->data->type == ITABS_LEFT || ih->data->type == ITABS_RIGHT)
+ {
+ int rowcount = (int)SendMessage(ih->handle, TCM_GETROWCOUNT, 0, 0);
+ if (rowcount != old_rowcount)
+ {
+ GetClientRect(ih->handle, &rect);
+ winTabsPlacePageWindows(ih, rect.right - rect.left, rect.bottom - rect.top);
+ }
+ }
+
+ iupdrvDisplayRedraw(ih);
+ }
+ }
+}
+
+static void winTabsChildRemovedMethod(Ihandle* ih, Ihandle* child)
+{
+ if (ih->handle)
+ {
+ HWND tab_page = (HWND)iupAttribGet(child, "_IUPTAB_CONTAINER");
+ if (tab_page)
+ {
+ int pos = winTabsGetPageWindowPos(ih, tab_page);
+ SendMessage(ih->handle, TCM_DELETEITEM, pos, 0);
+ DestroyWindow(tab_page);
+
+ if (pos==0) pos++;
+ iupdrvTabsSetCurrentTab(ih, pos-1);
+
+ iupAttribSetStr(child, "_IUPTAB_CONTAINER", NULL);
+ }
+ }
+}
+
+static int winTabsMapMethod(Ihandle* ih)
+{
+ DWORD dwStyle = WS_CHILD | WS_CLIPSIBLINGS | TCS_HOTTRACK | WS_TABSTOP,
+ dwExStyle = 0;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ if (ih->data->type == ITABS_BOTTOM)
+ dwStyle |= TCS_BOTTOM;
+ else if (ih->data->type == ITABS_RIGHT)
+ dwStyle |= TCS_VERTICAL|TCS_RIGHT;
+ else if (ih->data->type == ITABS_LEFT)
+ dwStyle |= TCS_VERTICAL;
+
+ if (ih->data->is_multiline)
+ dwStyle |= TCS_MULTILINE;
+
+ if (iupAttribGetBoolean(IupGetDialog(ih), "COMPOSITED"))
+ {
+ dwExStyle |= WS_EX_COMPOSITED;
+
+ if (!ih->data->is_multiline && iupwinIsVista())
+ {
+ /* workaround for composite bug in Vista */
+ ih->data->is_multiline = 1;
+ dwStyle |= TCS_MULTILINE;
+ }
+ }
+ else
+ dwStyle |= WS_CLIPCHILDREN;
+
+ if (!iupwinCreateWindowEx(ih, WC_TABCONTROL, dwExStyle, dwStyle))
+ return IUP_ERROR;
+
+ /* replace the WinProc to handle other messages */
+ IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winTabsProc);
+
+ /* Process WM_NOTIFY */
+ IupSetCallback(ih, "_IUPWIN_NOTIFY_CB", (Icallback)winTabsWmNotify);
+
+ /* Process background color */
+ IupSetCallback(ih, "_IUPWIN_CTLCOLOR_CB", (Icallback)winTabsCtlColor);
+
+ if (iupwin_comctl32ver6 && ih->data->type != ITABS_TOP)
+ {
+ /* XP Styles support only TABTYPE=TOP */
+ iupwinDrawRemoveTheme(ih->handle);
+ }
+
+ /* Change children background */
+ if (winTabsUsingXPStyles(ih))
+ {
+ char* color = iupAttribGetInheritNativeParent(ih, "BGCOLOR");
+ if (!color)
+ color = iupAttribGetInheritNativeParent(ih, "BACKGROUND");
+ if (!color)
+ {
+ COLORREF cr;
+ if (iupwinDrawGetThemeTabsBgColor(ih->handle, &cr))
+ iupAttribSetStrf(ih, "BACKGROUND", "%d %d %d", (int)GetRValue(cr), (int)GetGValue(cr), (int)GetBValue(cr));
+ }
+ }
+
+ /* Create pages and tabs */
+ if (ih->firstchild)
+ {
+ Ihandle* child;
+ for (child = ih->firstchild; child; child = child->brother)
+ winTabsChildAddedMethod(ih, child);
+ }
+
+ return IUP_NOERROR;
+}
+
+static void winTabsUnMapMethod(Ihandle* ih)
+{
+ Iarray* bmp_array;
+
+ HIMAGELIST image_list = (HIMAGELIST)SendMessage(ih->handle, TCM_GETIMAGELIST, 0, 0);
+ if (image_list)
+ ImageList_Destroy(image_list);
+
+ bmp_array = (Iarray*)iupAttribGet(ih, "_IUPWIN_BMPARRAY");
+ if (bmp_array)
+ iupArrayDestroy(bmp_array);
+
+ iupdrvBaseUnMapMethod(ih);
+}
+
+static void winTabsRegisterClass(void)
+{
+ WNDCLASS wndclass;
+ ZeroMemory(&wndclass, sizeof(WNDCLASS));
+
+ wndclass.hInstance = iupwin_hinstance;
+ wndclass.lpszClassName = "IupTabsPage";
+ wndclass.lpfnWndProc = (WNDPROC)winTabsPageWinProc;
+ wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
+ wndclass.style = CS_PARENTDC;
+ wndclass.hbrBackground = NULL; /* remove the background to optimize redraw */
+
+ RegisterClass(&wndclass);
+}
+
+void iupdrvTabsInitClass(Iclass* ic)
+{
+ if (!iupwinClassExist("IupTabsPage"))
+ winTabsRegisterClass();
+
+ /* Driver Dependent Class functions */
+ ic->Map = winTabsMapMethod;
+ ic->UnMap = winTabsUnMapMethod;
+ ic->ChildAdded = winTabsChildAddedMethod;
+ ic->ChildRemoved = winTabsChildRemovedMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", winTabsGetBgColorAttrib, NULL, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_NOT_MAPPED);
+
+ /* IupTabs only */
+ iupClassRegisterAttribute(ic, "TABTYPE", iupTabsGetTabTypeAttrib, winTabsSetTabTypeAttrib, IUPAF_SAMEASSYSTEM, "TOP", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TABORIENTATION", iupTabsGetTabOrientationAttrib, NULL, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); /* can not be set, depends on TABTYPE in Windows */
+ iupClassRegisterAttribute(ic, "MULTILINE", winTabsGetMultilineAttrib, winTabsSetMultilineAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "TABTITLE", NULL, winTabsSetTabTitleAttrib, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "TABIMAGE", NULL, winTabsSetTabImageAttrib, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "PADDING", iupTabsGetPaddingAttrib, winTabsSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+}
diff --git a/iup/src/win/iupwin_text.c b/iup/src/win/iupwin_text.c
new file mode 100755
index 0000000..dfe489a
--- /dev/null
+++ b/iup/src/win/iupwin_text.c
@@ -0,0 +1,1993 @@
+/** \file
+ * \brief Text Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+#include <commctrl.h>
+#include <richedit.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_mask.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_array.h"
+#include "iup_text.h"
+#include "iup_key.h"
+#include "iup_dialog.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+
+/* Cygwin and MingW Win32api does not define these */
+
+#ifndef PFN_ARABIC
+#define PFN_ARABIC 2
+#define PFN_LCLETTER 3
+#define PFN_UCLETTER 4
+#define PFN_LCROMAN 5
+#define PFN_UCROMAN 6
+#endif
+
+#ifndef PFNS_PAREN
+#define PFNS_PAREN 0x000
+#define PFNS_PARENS 0x100
+#define PFNS_PERIOD 0x200
+#define PFNS_PLAIN 0x300
+#define PFNS_NONUMBER 0x400
+#endif
+
+#ifndef CFM_BACKCOLOR
+#define CFM_BACKCOLOR 0x04000000
+#define CFM_UNDERLINETYPE 0x00800000
+#define CFM_WEIGHT 0x00400000
+#define CFM_DISABLED 0x2000
+#define CFE_DISABLED CFM_DISABLED
+#endif
+
+#ifndef CFU_UNDERLINEDOTTED
+#define CFU_UNDERLINEDOTTED 4
+#define CFU_UNDERLINEDOUBLE 3
+#define CFU_UNDERLINE 1
+#define CFU_UNDERLINENONE 0
+#endif
+
+#ifndef SES_UPPERCASE
+#define SES_UPPERCASE 512
+#define SES_LOWERCASE 1024
+#endif
+/* End Cygwin/MingW */
+
+#ifndef EM_SETCUEBANNER /* defined only if _WIN32_WINNT >= 0x501 */
+#define ECM_FIRST 0x1500 /* Edit control messages */
+#define EM_SETCUEBANNER (ECM_FIRST + 1)
+#endif
+
+#define WM_CARET WM_APP+1 /* Custom IUP message */
+
+
+void iupdrvTextAddSpin(int *w, int h)
+{
+ *w += h;
+}
+
+void iupdrvTextAddBorders(int *w, int *h)
+{
+ int border_size = 2*3;
+ (*w) += border_size;
+ (*h) += border_size;
+}
+
+static void winTextParseParagraphFormat(Ihandle* formattag, PARAFORMAT2 *paraformat, int convert2twips)
+{
+ int val;
+ char* format;
+
+ ZeroMemory(paraformat, sizeof(PARAFORMAT2));
+ paraformat->cbSize = sizeof(PARAFORMAT2);
+
+ format = iupAttribGet(formattag, "NUMBERING");
+ if (format)
+ {
+ paraformat->dwMask |= PFM_NUMBERING;
+
+ if (iupStrEqualNoCase(format, "BULLET"))
+ paraformat->wNumbering = PFN_BULLET;
+ else if (iupStrEqualNoCase(format, "ARABIC"))
+ paraformat->wNumbering = PFN_ARABIC;
+ else if (iupStrEqualNoCase(format, "LCLETTER"))
+ paraformat->wNumbering = PFN_LCLETTER;
+ else if (iupStrEqualNoCase(format, "UCLETTER"))
+ paraformat->wNumbering = PFN_UCLETTER;
+ else if (iupStrEqualNoCase(format, "LCROMAN"))
+ paraformat->wNumbering = PFN_LCROMAN;
+ else if (iupStrEqualNoCase(format, "UCROMAN"))
+ paraformat->wNumbering = PFN_UCROMAN;
+ else
+ paraformat->wNumbering = 0; /* "NONE" */
+
+ format = iupAttribGet(formattag, "NUMBERINGSTYLE");
+ if (format)
+ {
+ paraformat->dwMask |= PFM_NUMBERINGSTYLE;
+
+ if (iupStrEqualNoCase(format, "RIGHTPARENTESES"))
+ paraformat->wNumberingStyle = PFNS_PAREN;
+ else if (iupStrEqualNoCase(format, "PARENTESES"))
+ paraformat->wNumberingStyle = PFNS_PARENS;
+ else if (iupStrEqualNoCase(format, "PERIOD"))
+ paraformat->wNumberingStyle = PFNS_PERIOD;
+ else if (iupStrEqualNoCase(format, "NONUMBER"))
+ paraformat->wNumberingStyle = PFNS_NONUMBER;
+ else
+ paraformat->wNumberingStyle = PFNS_PLAIN; /* "NONE" */
+ }
+
+ format = iupAttribGet(formattag, "NUMBERINGTAB");
+ if (format && iupStrToInt(format, &val))
+ {
+ paraformat->dwMask |= PFM_NUMBERINGTAB;
+ paraformat->wNumberingTab = (WORD)(val*convert2twips);
+ }
+ }
+
+ format = iupAttribGet(formattag, "INDENT");
+ if (format && iupStrToInt(format, &val))
+ {
+ paraformat->dwMask |= PFM_STARTINDENT|PFM_RIGHTINDENT|PFM_OFFSET;
+ paraformat->dxStartIndent = val*convert2twips;
+
+ format = iupAttribGet(formattag, "INDENTRIGHT");
+ if (format && iupStrToInt(format, &val))
+ paraformat->dxRightIndent = val*convert2twips;
+ else
+ paraformat->dxRightIndent = paraformat->dxStartIndent;
+
+ format = iupAttribGet(formattag, "INDENTOFFSET");
+ if (format && iupStrToInt(format, &val))
+ paraformat->dxOffset = val*convert2twips;
+ else
+ paraformat->dxOffset = 0;
+ }
+
+ format = iupAttribGet(formattag, "ALIGNMENT");
+ if (format)
+ {
+ paraformat->dwMask |= PFM_ALIGNMENT;
+
+ if (iupStrEqualNoCase(format, "JUSTIFY"))
+ paraformat->wAlignment = PFA_JUSTIFY;
+ else if (iupStrEqualNoCase(format, "RIGHT"))
+ paraformat->wAlignment = PFA_RIGHT;
+ else if (iupStrEqualNoCase(format, "CENTER"))
+ paraformat->wAlignment = PFA_CENTER;
+ else
+ paraformat->wAlignment = PFA_LEFT; /* "LEFT" */
+ }
+
+ format = iupAttribGet(formattag, "TABSARRAY");
+ if (format)
+ {
+ int pos, align, i = 0;
+ LONG tab;
+ char* str;
+
+ paraformat->dwMask |= PFM_TABSTOPS;
+
+ while (format)
+ {
+ str = iupStrCopyUntil((char**)&format, ' ');
+ if (!str) break;
+ pos = atoi(str)*convert2twips;
+ free(str);
+
+ str = iupStrCopyUntil((char**)&format, ' ');
+ if (!str) break;
+
+ if (iupStrEqualNoCase(str, "DECIMAL"))
+ align = 3;
+ else if (iupStrEqualNoCase(str, "RIGHT"))
+ align = 2;
+ else if (iupStrEqualNoCase(str, "CENTER"))
+ align = 1;
+ else /* "LEFT" */
+ align = 0;
+ free(str);
+
+ tab = (pos&0xFFF)|(align<<24);
+ paraformat->rgxTabs[i] = tab;
+ i++;
+ if (i == 32) break;
+ }
+ paraformat->cTabCount = (SHORT)i;
+ }
+
+ format = iupAttribGet(formattag, "SPACEBEFORE");
+ if (format && iupStrToInt(format, &val))
+ {
+ paraformat->dwMask |= PFM_SPACEBEFORE;
+ paraformat->dySpaceBefore = val*convert2twips;
+ }
+
+ format = iupAttribGet(formattag, "SPACEAFTER");
+ if (format && iupStrToInt(format, &val))
+ {
+ paraformat->dwMask |= PFM_SPACEAFTER;
+ paraformat->dySpaceAfter = val*convert2twips;
+ }
+
+ format = iupAttribGet(formattag, "LINESPACING");
+ if (format)
+ {
+ paraformat->dwMask |= PFM_LINESPACING;
+
+ if (iupStrEqualNoCase(format, "SINGLE"))
+ paraformat->bLineSpacingRule = 0;
+ else if (iupStrEqualNoCase(format, "ONEHALF"))
+ paraformat->bLineSpacingRule = 1;
+ else if (iupStrEqualNoCase(format, "DOUBLE"))
+ paraformat->bLineSpacingRule = 2;
+ else if (iupStrToInt(format, &val))
+ {
+ paraformat->bLineSpacingRule = 3;
+ paraformat->dyLineSpacing = val*convert2twips;
+ }
+ }
+}
+
+static void winTextParseCharacterFormat(Ihandle* formattag, CHARFORMAT2 *charformat, int pixel2twips)
+{
+ int val;
+ char* format;
+
+ ZeroMemory(charformat, sizeof(CHARFORMAT2));
+ charformat->cbSize = sizeof(CHARFORMAT2);
+
+ format = iupAttribGet(formattag, "DISABLED");
+ if (format)
+ {
+ charformat->dwMask |= CFM_DISABLED;
+ if (iupStrBoolean(format))
+ charformat->dwEffects |= CFE_DISABLED;
+ }
+
+ format = iupAttribGet(formattag, "RISE");
+ if (format)
+ {
+ if (iupStrEqualNoCase(format, "SUPERSCRIPT"))
+ {
+ charformat->dwMask |= CFM_SUPERSCRIPT;
+ charformat->dwEffects |= CFE_SUPERSCRIPT;
+ }
+ else if (iupStrEqualNoCase(format, "SUBSCRIPT"))
+ {
+ charformat->dwMask |= CFM_SUBSCRIPT;
+ charformat->dwEffects |= CFE_SUBSCRIPT;
+ }
+ else if (iupStrToInt(format, &val))
+ {
+ charformat->dwMask |= CFM_OFFSET;
+ charformat->yOffset = val;
+ }
+ }
+
+ format = iupAttribGet(formattag, "ITALIC");
+ if (format)
+ {
+ charformat->dwMask |= CFM_ITALIC;
+ if (iupStrBoolean(format))
+ charformat->dwEffects |= CFE_ITALIC;
+ }
+
+ format = iupAttribGet(formattag, "STRIKEOUT");
+ if (format)
+ {
+ charformat->dwMask |= CFM_STRIKEOUT;
+ if (iupStrBoolean(format))
+ charformat->dwEffects |= CFE_STRIKEOUT;
+ }
+
+ format = iupAttribGet(formattag, "PROTECTED");
+ if (format)
+ {
+ charformat->dwMask |= CFM_PROTECTED;
+ if (iupStrBoolean(format))
+ charformat->dwEffects |= CFE_PROTECTED;
+ }
+
+ format = iupAttribGet(formattag, "FONTSIZE");
+ if (format && iupStrToInt(format, &val))
+ {
+ /* (1/1440 of an inch, or 1/20 of a printer's point) */
+ charformat->dwMask |= CFM_SIZE;
+ if (val < 0) /* in pixels */
+ charformat->yHeight = (-val)*pixel2twips;
+ else
+ charformat->yHeight = val*20;
+ }
+
+ format = iupAttribGet(formattag, "FONTSCALE");
+ if (format && charformat->yHeight != 0)
+ {
+ float fval = 0;
+ if (iupStrEqualNoCase(format, "XX-SMALL"))
+ fval = 0.5787037037037f;
+ else if (iupStrEqualNoCase(format, "X-SMALL"))
+ fval = 0.6444444444444f;
+ else if (iupStrEqualNoCase(format, "SMALL"))
+ fval = 0.8333333333333f;
+ else if (iupStrEqualNoCase(format, "MEDIUM"))
+ fval = 1.0f;
+ else if (iupStrEqualNoCase(format, "LARGE"))
+ fval = 1.2f;
+ else if (iupStrEqualNoCase(format, "X-LARGE"))
+ fval = 1.4399999999999f;
+ else if (iupStrEqualNoCase(format, "XX-LARGE"))
+ fval = 1.728f;
+ else
+ iupStrToFloat(format, &fval);
+
+ if (fval > 0)
+ {
+ fval = ((float)charformat->yHeight)*fval;
+ charformat->yHeight = iupROUND(fval);
+ }
+ }
+
+ format = iupAttribGet(formattag, "FONTFACE");
+ if (format)
+ {
+ charformat->dwMask |= CFM_FACE;
+ strcpy(charformat->szFaceName, format);
+ }
+
+ format = iupAttribGet(formattag, "FGCOLOR");
+ if (format)
+ {
+ unsigned char r, g, b;
+ if (iupStrToRGB(format, &r, &g, &b))
+ {
+ charformat->dwMask |= CFM_COLOR;
+ charformat->crTextColor = RGB(r, g, b);
+ }
+ }
+
+ format = iupAttribGet(formattag, "BGCOLOR");
+ if (format)
+ {
+ unsigned char r, g, b;
+ if (iupStrToRGB(format, &r, &g, &b))
+ {
+ charformat->dwMask |= CFM_BACKCOLOR;
+ charformat->crBackColor = RGB(r, g, b);
+ }
+ }
+
+ format = iupAttribGet(formattag, "UNDERLINE");
+ if (format)
+ {
+ charformat->dwMask |= CFM_UNDERLINETYPE;
+
+ if (iupStrEqualNoCase(format, "SINGLE"))
+ charformat->bUnderlineType = CFU_UNDERLINE;
+ else if (iupStrEqualNoCase(format, "DOUBLE"))
+ charformat->bUnderlineType = CFU_UNDERLINEDOUBLE;
+ else if (iupStrEqualNoCase(format, "DOTTED"))
+ charformat->bUnderlineType = CFU_UNDERLINEDOTTED;
+ else /* "NONE" */
+ charformat->bUnderlineType = CFU_UNDERLINENONE;
+
+ if (charformat->bUnderlineType != CFU_UNDERLINENONE)
+ {
+ charformat->dwMask |= CFM_UNDERLINE;
+ charformat->dwEffects |= CFE_UNDERLINE;
+ }
+ }
+
+ format = iupAttribGet(formattag, "WEIGHT");
+ if (format)
+ {
+ charformat->dwMask |= CFM_WEIGHT;
+
+ if (iupStrEqualNoCase(format, "EXTRALIGHT"))
+ charformat->wWeight = FW_EXTRALIGHT;
+ else if (iupStrEqualNoCase(format, "LIGHT"))
+ charformat->wWeight = FW_LIGHT;
+ else if (iupStrEqualNoCase(format, "SEMIBOLD"))
+ charformat->wWeight = FW_SEMIBOLD;
+ else if (iupStrEqualNoCase(format, "BOLD"))
+ charformat->wWeight = FW_BOLD;
+ else if (iupStrEqualNoCase(format, "EXTRABOLD"))
+ charformat->wWeight = FW_EXTRABOLD;
+ else if (iupStrEqualNoCase(format, "HEAVY"))
+ charformat->wWeight = FW_HEAVY;
+ else /* "NORMAL" */
+ charformat->wWeight = FW_NORMAL;
+
+ if (charformat->wWeight != FW_NORMAL)
+ {
+ charformat->dwMask |= CFM_BOLD;
+ charformat->dwEffects |= CFE_BOLD;
+ }
+ }
+}
+
+static int winTextSetLinColToPosition(Ihandle *ih, int lin, int col)
+{
+ int linmax, colmax, lineindex;
+
+ lin--; /* IUP starts at 1 */
+ col--;
+
+ linmax = SendMessage(ih->handle, EM_GETLINECOUNT, 0, 0L);
+ if (lin > linmax)
+ lin = linmax;
+
+ lineindex = SendMessage(ih->handle, EM_LINEINDEX, (WPARAM)lin, 0L);
+
+ colmax = SendMessage(ih->handle, EM_LINELENGTH, (WPARAM)lineindex, 0L);
+ if (col > colmax)
+ col = colmax; /* after the last character */
+
+ return lineindex + col;
+}
+
+static void winTextGetLinColFromPosition(Ihandle* ih, int pos, int* lin, int* col)
+{
+ /* here "pos" must contains the extra chars if the case */
+ int lineindex;
+
+ if (ih->data->has_formatting)
+ *lin = SendMessage(ih->handle, EM_EXLINEFROMCHAR, (WPARAM)0, (LPARAM)pos);
+ else
+ *lin = SendMessage(ih->handle, EM_LINEFROMCHAR, (WPARAM)pos, (LPARAM)0L);
+
+ lineindex = SendMessage(ih->handle, EM_LINEINDEX, (WPARAM)(*lin), (LPARAM)0L);
+ *col = pos - lineindex; /* lineindex is at the first character of the line */
+
+ (*lin)++; /* IUP starts at 1 */
+ (*col)++;
+}
+
+static int winTextRemoveExtraChars(Ihandle* ih, int pos)
+{
+ /* called only if not single line and not formatting */
+ int lin = SendMessage(ih->handle, EM_LINEFROMCHAR, (WPARAM)pos, (LPARAM)0L);
+ pos -= lin; /* remove \r characters from count */
+ return pos;
+}
+
+static int winTextAddExtraChars(Ihandle* ih, int pos)
+{
+ /* called only if not single line and not formatting */
+ int lin, clin;
+
+ clin = SendMessage(ih->handle, EM_LINEFROMCHAR, (WPARAM)pos, (LPARAM)0L);
+
+ /* pos is smaller than the actual pos (missing the \r count),
+ so we must calculate the line until the returned value is the same as the expected. */
+ do
+ {
+ lin = clin;
+ clin = SendMessage(ih->handle, EM_LINEFROMCHAR, (WPARAM)(pos+lin+1), (LPARAM)0L); /* add one because we can be at the last character */
+ } while (clin != lin); /* and it will not change to the next line by 1 */
+
+ pos += lin; /* add \r characters from count */
+ return pos;
+}
+
+static int winTextGetCaretPos(Ihandle* ih)
+{
+ int pos = 0;
+ POINT point;
+
+ if (GetFocus() != ih->handle || !GetCaretPos(&point))
+ {
+ /* if does not have the focus, or could not get caret position,
+ then use the selection start position */
+ SendMessage(ih->handle, EM_GETSEL, (WPARAM)&pos, 0);
+ }
+ else
+ {
+ if (ih->data->has_formatting)
+ pos = SendMessage(ih->handle, EM_CHARFROMPOS, 0, (LPARAM)&point);
+ else
+ {
+ LRESULT ret;
+
+ /* Workaround for weird behavior because of the return value in GetCaretPos */
+ if (ih->data->is_multiline && point.y < 5)
+ point.y += 5;
+
+ ret = SendMessage(ih->handle, EM_CHARFROMPOS, 0, MAKELPARAM(point.x, point.y));
+ pos = LOWORD(ret);
+ }
+ }
+
+ return pos;
+}
+
+static int winTextGetCaret(Ihandle* ih, int *lin, int *col)
+{
+ int pos = winTextGetCaretPos(ih);
+
+ if (ih->data->is_multiline)
+ {
+ winTextGetLinColFromPosition(ih, pos, lin, col);
+
+ if (!ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */
+ pos = winTextRemoveExtraChars(ih, pos);
+ }
+ else
+ {
+ *col = pos;
+ (*col)++; /* IUP starts at 1 */
+ *lin = 1;
+ }
+
+ return pos;
+}
+
+static void winTextGetSelection(Ihandle* ih, int *start, int *end)
+{
+ *start = 0;
+ *end = 0;
+
+ SendMessage(ih->handle, EM_GETSEL, (WPARAM)start, (LPARAM)end);
+
+ if (ih->data->is_multiline && !ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */
+ {
+ (*start) = winTextRemoveExtraChars(ih, *start);
+ (*end) = winTextRemoveExtraChars(ih, *end);
+ }
+}
+
+void iupdrvTextConvertLinColToPos(Ihandle* ih, int lin, int col, int *pos)
+{
+ *pos = winTextSetLinColToPosition(ih, lin, col);
+
+ if (!ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */
+ *pos = winTextRemoveExtraChars(ih, *pos);
+}
+
+void iupdrvTextConvertPosToLinCol(Ihandle* ih, int pos, int *lin, int *col)
+{
+ if (!ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */
+ pos = winTextAddExtraChars(ih, pos);
+
+ winTextGetLinColFromPosition(ih, pos, lin, col);
+}
+
+static int winTextConvertXYToPos(Ihandle* ih, int x, int y)
+{
+ int pos;
+
+ if (ih->data->has_formatting)
+ {
+ POINT point;
+ point.x = x;
+ point.y = y;
+ pos = (int)SendMessage(ih->handle, EM_CHARFROMPOS, 0, (LPARAM)&point);
+ }
+ else
+ {
+ LRESULT ret = SendMessage(ih->handle, EM_CHARFROMPOS, 0, MAKELPARAM(x, y));
+ pos = LOWORD(ret);
+ }
+
+ if (ih->data->is_multiline)
+ {
+ if (!ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */
+ pos = winTextRemoveExtraChars(ih, pos);
+ }
+
+ return pos;
+}
+
+
+/***********************************************************************************************/
+
+
+static int winTextSetValueAttrib(Ihandle* ih, const char* value)
+{
+ char* str;
+ if (!value) value = "";
+ str = (char*)value;
+ if (ih->data->is_multiline)
+ {
+ if (ih->data->has_formatting)
+ str = iupStrToMac(str);
+ else
+ str = iupStrToDos(str);
+ }
+ iupAttribSetStr(ih, "IUPWIN_IGNORECHANGE", "1");
+ SetWindowText(ih->handle, str);
+ iupAttribSetStr(ih, "IUPWIN_IGNORECHANGE", NULL);
+ if (str != value) free(str);
+ return 0;
+}
+
+static char* winTextGetValueAttrib(Ihandle* ih)
+{
+ int nc = GetWindowTextLength(ih->handle);
+ if (nc)
+ {
+ char* str = iupStrGetMemory(nc+1);
+ GetWindowText(ih->handle, str, nc+1); /* notice that this function always returns in DOS format */
+ if (ih->data->is_multiline)
+ iupStrToUnix(str);
+ return str;
+ }
+ else
+ return "";
+}
+
+static int winTextSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &(ih->data->horiz_padding), &(ih->data->vert_padding), 'x');
+ ih->data->vert_padding = 0;
+ if (ih->handle)
+ SendMessage(ih->handle, EM_SETMARGINS, EC_LEFTMARGIN|EC_RIGHTMARGIN, MAKELPARAM(ih->data->horiz_padding, ih->data->horiz_padding));
+ return 0;
+}
+
+static int winTextSetSelectedTextAttrib(Ihandle* ih, const char* value)
+{
+ if (value)
+ {
+ int start = 0, end = 0;
+ char* str;
+
+ SendMessage(ih->handle, EM_GETSEL, (WPARAM)&start, (LPARAM)&end);
+ if (start == end)
+ return 0;
+
+ str = (char*)value;
+ if (ih->data->is_multiline)
+ {
+ if (ih->data->has_formatting)
+ str = iupStrToMac(str);
+ else
+ str = iupStrToDos(str);
+ }
+ SendMessage(ih->handle, EM_REPLACESEL, (WPARAM)TRUE, (LPARAM)str);
+ if (str != value) free(str);
+ }
+ return 0;
+}
+
+static char* winTextGetSelectedTextAttrib(Ihandle* ih)
+{
+ int nc = GetWindowTextLength(ih->handle);
+ if (nc)
+ {
+ int start = 0, end = 0;
+ char* str;
+
+ SendMessage(ih->handle, EM_GETSEL, (WPARAM)&start, (LPARAM)&end);
+ if (start == end)
+ return NULL;
+
+ if (ih->data->has_formatting)
+ {
+ str = iupStrGetMemory(end-start+1);
+ SendMessage(ih->handle, EM_GETSELTEXT, 0, (LPARAM)str);
+ }
+ else
+ {
+ str = iupStrGetMemory(nc+1);
+ GetWindowText(ih->handle, str, nc+1); /* notice that this function always returns in DOS format */
+ /* returns only the selected text */
+ str[end] = 0;
+ str += start;
+ }
+
+ if (ih->data->is_multiline)
+ iupStrToUnix(str);
+ return str;
+ }
+ else
+ return NULL;
+}
+
+static int winTextSetNCAttrib(Ihandle* ih, const char* value)
+{
+ if (!iupStrToInt(value, &ih->data->nc))
+ ih->data->nc = 0;
+
+ if (ih->handle)
+ {
+ if (ih->data->has_formatting)
+ SendMessage(ih->handle, EM_EXLIMITTEXT, 0, ih->data->nc); /* so it can be larger than 64k */
+ else
+ SendMessage(ih->handle, EM_LIMITTEXT, ih->data->nc, 0L);
+ }
+ return 0;
+}
+
+static int winTextSetSelectionAttrib(Ihandle* ih, const char* value)
+{
+ int start=1, end=1;
+
+ if (!value || iupStrEqualNoCase(value, "NONE"))
+ {
+ SendMessage(ih->handle, EM_SETSEL, (WPARAM)-1, (LPARAM)0);
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(value, "ALL"))
+ {
+ SendMessage(ih->handle, EM_SETSEL, (WPARAM)0, (LPARAM)-1);
+ return 0;
+ }
+
+ if (ih->data->is_multiline)
+ {
+ int lin_start=1, col_start=1, lin_end=1, col_end=1;
+
+ if (sscanf(value, "%d,%d:%d,%d", &lin_start, &col_start, &lin_end, &col_end)!=4) return 0;
+ if (lin_start<1 || col_start<1 || lin_end<1 || col_end<1) return 0;
+
+ start = winTextSetLinColToPosition(ih, lin_start, col_start);
+ end = winTextSetLinColToPosition(ih, lin_end, col_end);
+ }
+ else
+ {
+ if (iupStrToIntInt(value, &start, &end, ':')!=2)
+ return 0;
+
+ if(start<1 || end<1)
+ return 0;
+
+ start--; /* IUP starts at 1 */
+ end--;
+ }
+
+ SendMessage(ih->handle, EM_SETSEL, (WPARAM)start, (LPARAM)end);
+
+ return 0;
+}
+
+static char* winTextGetSelectionAttrib(Ihandle* ih)
+{
+ int start = 0, end = 0;
+ char* str;
+
+ SendMessage(ih->handle, EM_GETSEL, (WPARAM)&start, (LPARAM)&end);
+ if (start == end)
+ return NULL;
+
+ str = iupStrGetMemory(100);
+
+ if (ih->data->is_multiline)
+ {
+ int start_col, start_lin, end_col, end_lin;
+ winTextGetLinColFromPosition(ih, start, &start_lin, &start_col);
+ winTextGetLinColFromPosition(ih, end, &end_lin, &end_col);
+ sprintf(str,"%d,%d:%d,%d", start_lin, start_col, end_lin, end_col);
+ }
+ else
+ {
+ start++; /* IUP starts at 1 */
+ end++;
+ sprintf(str, "%d:%d", start, end);
+ }
+
+ return str;
+}
+
+static int winTextSetSelectionPosAttrib(Ihandle* ih, const char* value)
+{
+ int start=0, end=0;
+
+ if (!value || iupStrEqualNoCase(value, "NONE"))
+ {
+ SendMessage(ih->handle, EM_SETSEL, (WPARAM)-1, (LPARAM)0);
+ return 0;
+ }
+
+ if (iupStrEqualNoCase(value, "ALL"))
+ {
+ SendMessage(ih->handle, EM_SETSEL, (WPARAM)0, (LPARAM)-1);
+ return 0;
+ }
+
+ if (iupStrToIntInt(value, &start, &end, ':')!=2)
+ return 0;
+
+ if(start<0 || end<0)
+ return 0;
+
+ if (ih->data->is_multiline && !ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */
+ {
+ start = winTextAddExtraChars(ih, start);
+ end = winTextAddExtraChars(ih, end);
+ }
+
+ SendMessage(ih->handle, EM_SETSEL, (WPARAM)start, (LPARAM)end);
+
+ return 0;
+}
+
+static char* winTextGetSelectionPosAttrib(Ihandle* ih)
+{
+ int start = 0, end = 0;
+ char* str;
+
+ SendMessage(ih->handle, EM_GETSEL, (WPARAM)&start, (LPARAM)&end);
+ if (start == end)
+ return NULL;
+
+ if (ih->data->is_multiline && !ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */
+ {
+ start = winTextRemoveExtraChars(ih, start);
+ end = winTextRemoveExtraChars(ih, end);
+ }
+
+ str = iupStrGetMemory(100);
+
+ sprintf(str, "%d:%d", start, end);
+
+ return str;
+}
+
+static int winTextSetInsertAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ if (value)
+ {
+ char* str = (char*)value;
+ if (ih->data->is_multiline)
+ {
+ if (ih->data->has_formatting)
+ str = iupStrToMac(str);
+ else
+ str = iupStrToDos(str);
+ }
+
+ SendMessage(ih->handle, EM_REPLACESEL, (WPARAM)TRUE, (LPARAM)str);
+
+ if (str != value) free(str);
+ }
+ return 0;
+}
+
+static int winTextSetAppendAttrib(Ihandle* ih, const char* value)
+{
+ int len;
+ char* str;
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ if (!value) value = "";
+ str = (char*)value;
+ if (ih->data->is_multiline)
+ {
+ if (ih->data->has_formatting)
+ str = iupStrToMac(str);
+ else
+ str = iupStrToDos(str);
+ }
+
+ len = GetWindowTextLength(ih->handle)+1;
+ SendMessage(ih->handle, EM_SETSEL, (WPARAM)len, (LPARAM)len);
+ if (ih->data->is_multiline && ih->data->append_newline)
+ {
+ if (ih->data->has_formatting)
+ SendMessage(ih->handle, EM_REPLACESEL, (WPARAM)FALSE, (LPARAM)"\r");
+ else
+ SendMessage(ih->handle, EM_REPLACESEL, (WPARAM)FALSE, (LPARAM)"\r\n");
+ }
+ SendMessage(ih->handle, EM_REPLACESEL, (WPARAM)TRUE, (LPARAM)str);
+
+ if (str != value) free(str);
+ return 0;
+}
+
+static int winTextSetReadOnlyAttrib(Ihandle* ih, const char* value)
+{
+ SendMessage(ih->handle, EM_SETREADONLY, (WPARAM)iupStrBoolean(value), 0);
+ return 0;
+}
+
+static char* winTextGetReadOnlyAttrib(Ihandle* ih)
+{
+ DWORD style = GetWindowLong(ih->handle, GWL_STYLE);
+ if (style & ES_READONLY)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int winTextSetTabSizeAttrib(Ihandle* ih, const char* value)
+{
+ int tabsize;
+ if (!ih->data->is_multiline)
+ return 0;
+
+ iupStrToInt(value, &tabsize);
+ tabsize *= 4;
+ SendMessage(ih->handle, EM_SETTABSTOPS, (WPARAM)1L, (LPARAM)&tabsize);
+ iupdrvDisplayRedraw(ih);
+ return 1;
+}
+
+static int winTextSetCaretAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 1;
+
+ if (!value)
+ return 0;
+
+ if (ih->data->is_multiline)
+ {
+ int lin = 1, col = 1;
+ iupStrToIntInt(value, &lin, &col, ','); /* be permissive in SetCaret, do not abort if invalid */
+ if (lin < 1) lin = 1;
+ if (col < 1) col = 1;
+
+ pos = winTextSetLinColToPosition(ih, lin, col);
+ }
+ else
+ {
+ sscanf(value,"%i",&pos);
+ if (pos < 1) pos = 1;
+ pos--; /* IUP starts at 1 */
+ }
+
+ SendMessage(ih->handle, EM_SETSEL, (WPARAM)pos, (LPARAM)pos);
+ SendMessage(ih->handle, EM_SCROLLCARET, 0L, 0L);
+
+ return 0;
+}
+
+static char* winTextGetCaretAttrib(Ihandle* ih)
+{
+ int col, lin;
+ char* str;
+
+ str = iupStrGetMemory(100);
+
+ winTextGetCaret(ih, &lin, &col);
+
+ if (ih->data->is_multiline)
+ sprintf(str, "%d,%d", lin, col);
+ else
+ sprintf(str, "%d", col);
+
+ return str;
+}
+
+static int winTextSetCaretPosAttrib(Ihandle* ih, const char* value)
+{
+ int pos = 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos); /* be permissive in SetCaret, do not abort if invalid */
+ if (pos < 0) pos = 0;
+
+ if (ih->data->is_multiline && !ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */
+ pos = winTextAddExtraChars(ih, pos);
+
+ SendMessage(ih->handle, EM_SETSEL, (WPARAM)pos, (LPARAM)pos);
+ SendMessage(ih->handle, EM_SCROLLCARET, 0L, 0L);
+
+ return 0;
+}
+
+static char* winTextGetCaretPosAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(100);
+ int pos = winTextGetCaretPos(ih);
+ if (ih->data->is_multiline && !ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */
+ pos = winTextRemoveExtraChars(ih, pos);
+ sprintf(str, "%d", pos);
+ return str;
+}
+
+static int winTextSetScrollToAttrib(Ihandle* ih, const char* value)
+{
+ int lin = 1, col = 1;
+
+ if (!value)
+ return 0;
+
+ if (ih->data->is_multiline)
+ {
+ iupStrToIntInt(value, &lin, &col, ',');
+ if (lin < 1) lin = 1;
+ if (col < 1) col = 1;
+ }
+ else
+ {
+ sscanf(value,"%i",&col);
+ if (col < 1) col = 1;
+ }
+
+ lin--; /* return to Windows referece */
+ col--;
+
+ if (ih->data->has_formatting)
+ SendMessage(ih->handle, EM_LINESCROLL, (WPARAM)0, (LPARAM)lin);
+ else
+ SendMessage(ih->handle, EM_LINESCROLL, (WPARAM)col, (LPARAM)lin);
+
+ return 0;
+}
+
+static int winTextSetScrollToPosAttrib(Ihandle* ih, const char* value)
+{
+ int lin, col, pos = 0;
+
+ if (!value)
+ return 0;
+
+ sscanf(value,"%i",&pos);
+ if (pos < 0) pos = 0;
+
+ if (ih->data->is_multiline && !ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */
+ pos = winTextAddExtraChars(ih, pos);
+
+ winTextGetLinColFromPosition(ih, pos, &lin, &col);
+ lin--; /* return to Windows referece */
+ col--;
+
+ if (ih->data->has_formatting)
+ SendMessage(ih->handle, EM_LINESCROLL, (WPARAM)0, (LPARAM)lin);
+ else
+ SendMessage(ih->handle, EM_LINESCROLL, (WPARAM)col, (LPARAM)lin);
+
+ return 0;
+}
+
+static int winTextSetFilterAttrib(Ihandle *ih, const char *value)
+{
+ int style = 0;
+
+ if (iupStrEqualNoCase(value, "LOWERCASE"))
+ {
+ if (ih->data->has_formatting)
+ {
+ SendMessage(ih->handle, EM_SETEDITSTYLE, SES_LOWERCASE, SES_LOWERCASE);
+ return 1;
+ }
+ style = ES_LOWERCASE;
+ }
+ else if (iupStrEqualNoCase(value, "NUMBER"))
+ style = ES_NUMBER;
+ else if (iupStrEqualNoCase(value, "UPPERCASE"))
+ {
+ if (ih->data->has_formatting)
+ {
+ SendMessage(ih->handle, EM_SETEDITSTYLE, SES_UPPERCASE, SES_UPPERCASE);
+ return 1;
+ }
+ style = ES_UPPERCASE;
+ }
+
+ if (style)
+ iupwinMergeStyle(ih, ES_LOWERCASE|ES_NUMBER|ES_UPPERCASE, style);
+
+ return 1;
+}
+
+static int winTextSetClipboardAttrib(Ihandle *ih, const char *value)
+{
+ UINT msg = 0;
+
+ if (iupStrEqualNoCase(value, "COPY"))
+ msg = WM_COPY;
+ else if (iupStrEqualNoCase(value, "CUT"))
+ msg = WM_CUT;
+ else if (iupStrEqualNoCase(value, "PASTE"))
+ msg = WM_PASTE;
+ else if (iupStrEqualNoCase(value, "CLEAR"))
+ msg = WM_CLEAR;
+ else if (iupStrEqualNoCase(value, "UNDO"))
+ msg = WM_UNDO;
+ else if (ih->data->has_formatting && iupStrEqualNoCase(value, "REDO"))
+ msg = EM_REDO;
+
+ if (msg)
+ SendMessage(ih->handle, msg, 0, 0);
+
+ return 0;
+}
+
+static int winTextSetBgColorAttrib(Ihandle *ih, const char *value)
+{
+ if (ih->data->has_formatting)
+ {
+ unsigned char r, g, b;
+ if (iupStrToRGB(value, &r, &g, &b))
+ {
+ COLORREF color;
+ color = RGB(r,g,b);
+ SendMessage(ih->handle, EM_SETBKGNDCOLOR, 0, (LPARAM)color);
+ }
+ }
+ return 1;
+}
+
+static int winTextSetCueBannerAttrib(Ihandle *ih, const char *value)
+{
+ if (!ih->data->is_multiline && iupwin_comctl32ver6)
+ {
+ WCHAR* wstr = iupwinStrChar2Wide(value);
+ SendMessage(ih->handle, EM_SETCUEBANNER, (WPARAM)FALSE, (LPARAM)wstr);
+ free(wstr);
+ return 1;
+ }
+ return 0;
+}
+
+static int winTextSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ int new_style;
+
+ if (iupStrEqualNoCase(value, "ARIGHT"))
+ new_style = ES_RIGHT;
+ else if (iupStrEqualNoCase(value, "ACENTER"))
+ new_style = ES_CENTER;
+ else /* "ALEFT" */
+ new_style = ES_LEFT;
+
+ iupwinMergeStyle(ih, ES_LEFT|ES_CENTER|ES_RIGHT, new_style);
+
+ return 1;
+}
+
+static int winTextSetStandardFontAttrib(Ihandle* ih, const char* value)
+{
+ /* ignore the first call that is done in IupMap,
+ it is already done before calling iupTextUpdateFormatTags. */
+ if (ih->data->has_formatting && iupAttribGet(ih, "_IUPWIN_IGNORE_FONT"))
+ {
+ iupAttribSetStr(ih, "_IUPWIN_IGNORE_FONT", NULL);
+ return 0;
+ }
+ return iupdrvSetStandardFontAttrib(ih, value);
+}
+
+void iupdrvTextAddFormatTag(Ihandle* ih, Ihandle* formattag)
+{
+ int convert2twips, pixel2twips;
+ char *selection, *units;
+ PARAFORMAT2 paraformat;
+ CHARFORMAT2 charformat;
+
+ /* one twip is 1/1440 inch */
+ /* twip = (pixel*1440)/(pixel/inch) */
+ pixel2twips = 1440/iupwinGetScreenRes();
+
+ /* default is PIXELS */
+ convert2twips = pixel2twips;
+ units = iupAttribGet(formattag, "UNITS");
+ if (units)
+ {
+ int val;
+ if (iupStrEqualNoCase(units, "TWIPS"))
+ convert2twips = 1;
+ else if (iupStrToInt(units, &val))
+ convert2twips = val;
+ }
+
+ selection = iupAttribGet(formattag, "SELECTION");
+ if (selection)
+ {
+ /* In Windows, the format message use the current selection */
+ winTextSetSelectionAttrib(ih, selection);
+ iupAttribSetStr(ih, "SELECTION", NULL);
+ }
+ else
+ {
+ char* selectionpos = iupAttribGet(formattag, "SELECTIONPOS");
+ if (selectionpos)
+ {
+ /* In Windows, the format message use the current selection */
+ winTextSetSelectionPosAttrib(ih, selectionpos);
+ iupAttribSetStr(ih, "SELECTIONPOS", NULL);
+ }
+ }
+
+ if (iupAttribGet(formattag, "FONTSCALE") && !iupAttribGet(formattag, "FONTSIZE"))
+ iupAttribSetStr(formattag, "FONTSIZE", iupGetFontSizeAttrib(ih));
+
+ winTextParseParagraphFormat(formattag, &paraformat, convert2twips);
+ if (paraformat.dwMask != 0)
+ SendMessage(ih->handle, EM_SETPARAFORMAT, 0, (LPARAM)&paraformat);
+
+ winTextParseCharacterFormat(formattag, &charformat, pixel2twips);
+ if (charformat.dwMask != 0)
+ SendMessage(ih->handle, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&charformat);
+
+ /* reset the selection, if changed here */
+ if (selection)
+ winTextSetSelectionAttrib(ih, NULL);
+}
+
+static int winTextSetRemoveFormattingAttrib(Ihandle* ih, const char* value)
+{
+ PARAFORMAT2 paraformat;
+ CHARFORMAT2 charformat;
+ COLORREF colorref;
+ int val;
+
+ if (!ih->data->has_formatting)
+ return 0;
+
+ ZeroMemory(&paraformat, sizeof(PARAFORMAT2));
+ paraformat.cbSize = sizeof(PARAFORMAT2);
+ paraformat.dwMask = PFM_NUMBERING|PFM_STARTINDENT|PFM_RIGHTINDENT|PFM_OFFSET|
+ PFM_ALIGNMENT|PFM_SPACEBEFORE|PFM_SPACEAFTER|PFM_LINESPACING;
+ paraformat.wAlignment = PFA_LEFT;
+
+ ZeroMemory(&charformat, sizeof(CHARFORMAT2));
+ charformat.cbSize = sizeof(CHARFORMAT2);
+ charformat.dwMask = CFM_DISABLED|CFM_OFFSET|CFM_ITALIC|CFM_STRIKEOUT|CFM_PROTECTED|
+ CFM_UNDERLINETYPE|CFM_UNDERLINE|CFM_WEIGHT|CFM_FACE;
+ charformat.wWeight = FW_NORMAL;
+ strcpy(charformat.szFaceName, iupGetFontFaceAttrib(ih));
+
+ if (iupwinGetColorRef(ih, "FGCOLOR", &colorref))
+ {
+ charformat.dwMask |= CFM_COLOR;
+ charformat.crTextColor = colorref;
+ }
+
+ if (iupwinGetColorRef(ih, "BGCOLOR", &colorref))
+ {
+ charformat.dwMask |= CFM_BACKCOLOR;
+ charformat.crBackColor = colorref;
+ }
+
+ if (iupStrToInt(iupGetFontSizeAttrib(ih), &val))
+ {
+ /* (1/1440 of an inch, or 1/20 of a printer's point) */
+ charformat.dwMask |= CFM_SIZE;
+ if (val < 0) /* in pixels */
+ {
+ int pixel2twips = 1440/iupwinGetScreenRes();
+ charformat.yHeight = (-val)*pixel2twips;
+ }
+ else
+ charformat.yHeight = val*20;
+ }
+
+ SendMessage(ih->handle, EM_SETPARAFORMAT, 0, (LPARAM)&paraformat);
+ SendMessage(ih->handle, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&charformat);
+
+ (void)value;
+ return 0;
+}
+
+static int winTextSetOverwriteAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->has_formatting)
+ return 0;
+
+ if (iupAttribGetBoolean(ih, "OVERWRITE"))
+ {
+ if (!iupStrBoolean(value))
+ SendMessage(ih->handle, WM_KEYDOWN, VK_INSERT, 0); /* toggle from ON to OFF */
+ }
+ else
+ {
+ if (iupStrBoolean(value))
+ SendMessage(ih->handle, WM_KEYDOWN, VK_INSERT, 0); /* toggle from OFF to ON */
+ }
+ return 1;
+}
+
+
+static int winTextSetVisibleAttrib(Ihandle* ih, const char* value)
+{
+ HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN");
+ if (hSpin)
+ ShowWindow(hSpin, iupStrBoolean(value)? SW_SHOWNORMAL: SW_HIDE);
+
+ return iupBaseSetVisibleAttrib(ih, value);
+}
+
+static void winTextCropSpinValue(HWND hSpin, int min, int max)
+{
+ /* refresh if internally cropped, but text still shows an invalid value */
+ int pos = SendMessage(hSpin, UDM_GETPOS32, 0, 0);
+ if (pos <= min)
+ SendMessage(hSpin, UDM_SETPOS32, 0, min);
+ if (pos >= max)
+ SendMessage(hSpin, UDM_SETPOS32, 0, max);
+}
+
+static int winTextSetSpinMinAttrib(Ihandle* ih, const char* value)
+{
+ HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN");
+ if (hSpin)
+ {
+ int min;
+ if (iupStrToInt(value, &min))
+ {
+ int max = iupAttribGetInt(ih, "SPINMAX");
+ SendMessage(hSpin, UDM_SETRANGE32, min, max);
+
+ winTextCropSpinValue(hSpin, min, max);
+ }
+ }
+ return 1;
+}
+
+static int winTextSetSpinMaxAttrib(Ihandle* ih, const char* value)
+{
+ HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN");
+ if (hSpin)
+ {
+ int max;
+ if (iupStrToInt(value, &max))
+ {
+ int min = iupAttribGetInt(ih, "SPINMIN");
+ SendMessage(hSpin, UDM_SETRANGE32, min, max);
+
+ winTextCropSpinValue(hSpin, min, max);
+ }
+ }
+ return 1;
+}
+
+static int winTextSetSpinIncAttrib(Ihandle* ih, const char* value)
+{
+ HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN");
+ if (hSpin)
+ {
+ int inc;
+ if (iupStrToInt(value, &inc))
+ {
+ UDACCEL paAccels[3];
+ paAccels[0].nInc = inc;
+ paAccels[0].nSec = 0;
+ paAccels[1].nInc = inc*5;
+ paAccels[1].nSec = 2;
+ paAccels[2].nInc = inc*20;
+ paAccels[2].nSec = 5;
+ SendMessage(hSpin, UDM_SETACCEL, 3, (LPARAM)paAccels);
+ }
+ }
+ return 1;
+}
+
+static int winTextSetSpinValueAttrib(Ihandle* ih, const char* value)
+{
+ HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN");
+ if (hSpin)
+ {
+ int pos;
+ if (iupStrToInt(value, &pos))
+ SendMessage(hSpin, UDM_SETPOS32, 0, pos);
+ }
+ return 1;
+}
+
+static char* winTextGetSpinValueAttrib(Ihandle* ih)
+{
+ HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN");
+ if (hSpin)
+ {
+ int pos = SendMessage(hSpin, UDM_GETPOS32, 0, 0);
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%d", pos);
+ return str;
+ }
+ return NULL;
+}
+
+
+/****************************************************************************************/
+
+
+static int winTextCtlColor(Ihandle* ih, HDC hdc, LRESULT *result)
+{
+ COLORREF cr;
+
+ if (iupwinGetColorRef(ih, "FGCOLOR", &cr))
+ SetTextColor(hdc, cr);
+
+ if (iupwinGetColorRef(ih, "BGCOLOR", &cr))
+ {
+ SetBkColor(hdc, cr);
+ SetDCBrushColor(hdc, cr);
+ *result = (LRESULT)GetStockObject(DC_BRUSH);
+ return 1;
+ }
+ return 0;
+}
+
+static void winTextCallCaretCb(Ihandle* ih)
+{
+ int col, lin, pos;
+
+ IFniii cb = (IFniii)IupGetCallback(ih, "CARET_CB");
+ if (!cb) return;
+
+ pos = winTextGetCaret(ih, &lin, &col);
+
+ if (pos != ih->data->last_caret_pos)
+ {
+ ih->data->last_caret_pos = pos;
+
+ cb(ih, lin, col, pos);
+ }
+}
+
+static int winTextCallActionCb(Ihandle* ih, const char* insert_value, int key, int dir)
+{
+ int start, end, ret = 1;
+ char *value, *new_value;
+
+ IFnis cb = (IFnis)IupGetCallback(ih, "ACTION");
+ if (!cb && !ih->data->mask)
+ return 1;
+
+ winTextGetSelection(ih, &start, &end);
+
+ value = winTextGetValueAttrib(ih);
+
+ if (value[0]==0)
+ new_value = iupStrDup(insert_value);
+ else if (insert_value)
+ new_value = iupStrInsert(value, insert_value, start, end);
+ else
+ {
+ new_value = value;
+ iupStrRemove(value, start, end, dir);
+ }
+
+ if (!new_value)
+ return 0; /* abort */
+
+ if (ih->data->nc && (int)strlen(new_value) > ih->data->nc)
+ {
+ if (new_value != value) free(new_value);
+ return 0; /* abort */
+ }
+
+ if (ih->data->mask && iupMaskCheck(ih->data->mask, new_value)==0)
+ {
+ if (new_value != value) free(new_value);
+ return 0; /* abort */
+ }
+
+ if (cb)
+ {
+ int cb_ret = cb(ih, key, (char*)new_value);
+ if (cb_ret==IUP_IGNORE)
+ ret = 0; /* abort processing */
+ else if (cb_ret==IUP_CLOSE)
+ {
+ IupExitLoop();
+ ret = 0; /* abort processing */
+ }
+ else if (cb_ret!=0 && key!=0 &&
+ cb_ret != IUP_DEFAULT && cb_ret != IUP_CONTINUE)
+ {
+ WNDPROC oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_OLDPROC_CB");
+ CallWindowProc(oldProc, ih->handle, WM_CHAR, cb_ret, 0); /* replace key */
+ ret = 0; /* abort processing */
+ }
+ }
+
+ if (new_value != value) free(new_value);
+ return ret;
+}
+
+static int winTextSpinWmNotify(Ihandle* ih, NMHDR* msg_info, int *result)
+{
+ if (msg_info->code == UDN_DELTAPOS)
+ {
+ NMUPDOWN *updown = (NMUPDOWN*)msg_info;
+ HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN");
+ int pos = updown->iPos+updown->iDelta;
+ int min, max;
+ SendMessage(hSpin, UDM_GETRANGE32, (WPARAM)&min, (LPARAM)&max);
+ if (pos>=min && pos<=max)
+ {
+ IFni cb = (IFni) IupGetCallback(ih, "SPIN_CB");
+ if (cb)
+ {
+ int ret = cb(ih, pos);
+ if (ret == IUP_IGNORE)
+ {
+ *result = 1;
+ return 1;
+ }
+ }
+ }
+ }
+
+ (void)result;
+ return 0; /* result not used */
+}
+
+static int winTextProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ int ret = 0;
+
+ if (msg==WM_KEYDOWN) /* process K_ANY before text callbacks */
+ {
+ ret = iupwinBaseProc(ih, msg, wp, lp, result);
+ if (ret)
+ {
+ *result = 0;
+ return 1;
+ }
+ }
+
+ switch (msg)
+ {
+ case WM_CHAR:
+ {
+ if ((char)wp == '\b')
+ {
+ if (!winTextCallActionCb(ih, NULL, 0, -1))
+ ret = 1;
+ }
+ else if ((char)wp == '\n' || (char)wp == '\r')
+ {
+ if (!ih->data->has_formatting && !(GetKeyState(VK_CONTROL) & 0x8000)) /* when formatting is processed in WM_KEYDOWN */
+ {
+ char insert_value[2];
+ insert_value[0] = '\n';
+ insert_value[1] = 0;
+
+ if (!winTextCallActionCb(ih, insert_value, wp, 1))
+ ret = 1;
+ }
+ }
+ else if (!(GetKeyState(VK_CONTROL) & 0x8000 ||
+ GetKeyState(VK_MENU) & 0x8000 ||
+ GetKeyState(VK_LWIN) & 0x8000 ||
+ GetKeyState(VK_RWIN) & 0x8000))
+ {
+ char insert_value[2];
+ insert_value[0] = (char)wp;
+ insert_value[1] = 0;
+
+ if (!winTextCallActionCb(ih, insert_value, wp, 1))
+ ret = 1;
+ }
+
+ PostMessage(ih->handle, WM_CARET, 0, 0L);
+
+ if (!ih->data->is_multiline &&
+ (wp==VK_RETURN || wp==VK_ESCAPE || wp==VK_TAB)) /* the keys have the same definitions as the chars */
+ ret = 1; /* abort default processing to avoid beep */
+
+ if (ih->data->is_multiline &&
+ (wp=='\n' && (GetKeyState(VK_CONTROL) & 0x8000)))
+ ret = 1; /* abort default processing to avoid inserting a new line */
+
+ break;
+ }
+ case WM_KEYDOWN:
+ {
+ if (wp == VK_DELETE) /* Del does not generates a WM_CHAR */
+ {
+ if (!winTextCallActionCb(ih, NULL, 0, 1))
+ ret = 1;
+ }
+ else if (wp == VK_INSERT && ih->data->has_formatting)
+ {
+ if (iupAttribGetBoolean(ih, "OVERWRITE"))
+ iupAttribSetStr(ih, "OVERWRITE", "OFF"); /* toggle from ON to OFF */
+ else
+ iupAttribSetStr(ih, "OVERWRITE", "ON"); /* toggle from OFF to ON */
+ }
+ else if (wp == 'A' && GetKeyState(VK_CONTROL) & 0x8000) /* Ctrl+A = Select All */
+ {
+ SendMessage(ih->handle, EM_SETSEL, (WPARAM)0, (LPARAM)-1);
+ }
+ else if (wp == VK_RETURN && ih->data->has_formatting && !(GetKeyState(VK_CONTROL) & 0x8000))
+ {
+ char insert_value[2];
+ insert_value[0] = '\n';
+ insert_value[1] = 0;
+
+ if (!winTextCallActionCb(ih, insert_value, '\n', 1))
+ ret = 1;
+ }
+
+ PostMessage(ih->handle, WM_CARET, 0, 0L);
+
+ if (ret) /* if abort processing, then the result is 0 */
+ {
+ *result = 0;
+ return 1;
+ }
+ else
+ return 0; /* already processed at the begining of this function */
+ }
+ case WM_KEYUP:
+ {
+ PostMessage(ih->handle, WM_CARET, 0, 0L);
+ break;
+ }
+ case WM_CLEAR:
+ {
+ if (!winTextCallActionCb(ih, NULL, 0, 1))
+ ret = 1;
+
+ PostMessage(ih->handle, WM_CARET, 0, 0L);
+ break;
+ }
+ case WM_CUT:
+ {
+ if (!winTextCallActionCb(ih, NULL, 0, 1))
+ ret = 1;
+
+ PostMessage(ih->handle, WM_CARET, 0, 0L);
+ break;
+ }
+ case WM_PASTE:
+ {
+ if (IupGetCallback(ih,"ACTION") || ih->data->mask) /* test before to avoid alocate clipboard text memory */
+ {
+ char* insert_value = iupwinGetClipboardText(ih);
+ if (insert_value)
+ {
+ if (!winTextCallActionCb(ih, insert_value, 0, 1))
+ ret = 1;
+ free(insert_value);
+ }
+ }
+
+ PostMessage(ih->handle, WM_CARET, 0, 0L);
+ break;
+ }
+ case WM_UNDO:
+ {
+ IFnis cb = (IFnis)IupGetCallback(ih, "ACTION");
+ if (cb)
+ {
+ char* value;
+ WNDPROC oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_OLDPROC_CB");
+ CallWindowProc(oldProc, ih->handle, WM_UNDO, 0, 0);
+
+ value = winTextGetValueAttrib(ih);
+ cb(ih, 0, (char*)value);
+
+ ret = 1;
+ }
+
+ PostMessage(ih->handle, WM_CARET, 0, 0L);
+ break;
+ }
+ case WM_LBUTTONDBLCLK:
+ case WM_MBUTTONDBLCLK:
+ case WM_RBUTTONDBLCLK:
+ case WM_LBUTTONDOWN:
+ case WM_MBUTTONDOWN:
+ case WM_RBUTTONDOWN:
+ {
+ if (iupwinButtonDown(ih, msg, wp, lp)==-1)
+ {
+ *result = 0;
+ return 1;
+ }
+ PostMessage(ih->handle, WM_CARET, 0, 0L);
+ break;
+ }
+ case WM_MBUTTONUP:
+ case WM_RBUTTONUP:
+ case WM_LBUTTONUP:
+ {
+ if (iupwinButtonUp(ih, msg, wp, lp)==-1)
+ {
+ *result = 0;
+ return 1;
+ }
+ PostMessage(ih->handle, WM_CARET, 0, 0L);
+ break;
+ }
+ case WM_CARET:
+ {
+ winTextCallCaretCb(ih);
+ break;
+ }
+ case WM_MOUSEMOVE:
+ {
+ iupwinMouseMove(ih, msg, wp, lp);
+ break;
+ }
+ case WM_VSCROLL:
+ case WM_HSCROLL:
+ {
+ if (ih->data->has_formatting)
+ {
+ /* fix weird behavior when dialog has COMPOSITE=YES,
+ scrollbars are not updated when dragging */
+ if (LOWORD(wp) == SB_THUMBTRACK)
+ SendMessage(ih->handle, EM_SHOWSCROLLBAR, msg==WM_VSCROLL? SB_VERT: SB_HORZ, TRUE);
+ }
+ break;
+ }
+ }
+
+ if (ret) /* if abort processing, then the result is 0 */
+ {
+ *result = 0;
+ return 1;
+ }
+ else
+ return iupwinBaseProc(ih, msg, wp, lp, result);
+}
+
+static void winTextCreateSpin(Ihandle* ih)
+{
+ HWND hSpin;
+ DWORD dwStyle = WS_CHILD|UDS_ARROWKEYS|UDS_HOTTRACK|UDS_NOTHOUSANDS;
+ int serial = iupDialogGetChildId(ih);
+
+ if (iupStrEqualNoCase(iupAttribGetStr(ih, "SPINALIGN"), "LEFT"))
+ dwStyle |= UDS_ALIGNLEFT;
+ else
+ dwStyle |= UDS_ALIGNRIGHT;
+
+ if (iupAttribGetBoolean(ih, "SPINWRAP"))
+ dwStyle |= UDS_WRAP;
+
+ if (iupAttribGetBoolean(ih, "SPINAUTO"))
+ dwStyle |= UDS_SETBUDDYINT;
+
+ hSpin = CreateWindowEx(0, /* extended window style */
+ UPDOWN_CLASS, /* window class */
+ NULL, /* title */
+ dwStyle, /* window style */
+ 0, /* x-position */
+ 0, /* y-position */
+ 10, /* default width to avoid 0 */
+ 10, /* default height to avoid 0 */
+ GetParent(ih->handle), /* window parent */
+ (HMENU)serial, /* child identifier */
+ iupwin_hinstance, /* instance of app. */
+ NULL);
+
+ if (!hSpin)
+ return;
+
+ iupwinHandleAdd(ih, hSpin);
+
+ /* Process WM_NOTIFY */
+ IupSetCallback(ih, "_IUPWIN_NOTIFY_CB", (Icallback)winTextSpinWmNotify);
+
+ SendMessage(hSpin, UDM_SETBUDDY, (WPARAM)ih->handle, 0);
+ iupAttribSetStr(ih, "_IUPWIN_SPIN", (char*)hSpin);
+
+ /* default values */
+ SendMessage(hSpin, UDM_SETRANGE32, 0, 100);
+ SendMessage(hSpin, UDM_SETPOS32, 0, 0);
+}
+
+static int winTextWmCommand(Ihandle* ih, WPARAM wp, LPARAM lp)
+{
+ int cmd = HIWORD(wp);
+ switch (cmd)
+ {
+ case EN_CHANGE:
+ {
+ if (iupAttribGetStr(ih, "IUPWIN_IGNORECHANGE"))
+ return 0;
+
+ iupBaseCallValueChangedCb(ih);
+ break;
+ }
+ }
+
+ (void)lp;
+ return 0; /* not used */
+}
+
+static void winTextLayoutUpdateMethod(Ihandle* ih)
+{
+ HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN");
+ if (hSpin)
+ {
+ if (iupStrEqualNoCase(iupAttribGetStr(ih, "SPINALIGN"), "LEFT"))
+ {
+ SetWindowPos(ih->handle, NULL, ih->x+ih->currentheight-1, ih->y, ih->currentwidth-ih->currentheight, ih->currentheight,
+ SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOOWNERZORDER);
+
+ SetWindowPos(hSpin, NULL, ih->x, ih->y, ih->currentheight, ih->currentheight,
+ SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOOWNERZORDER);
+ }
+ else
+ {
+ SetWindowPos(ih->handle, NULL, ih->x, ih->y, ih->currentwidth-ih->currentheight, ih->currentheight,
+ SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOOWNERZORDER);
+
+ SetWindowPos(hSpin, NULL, ih->x+ih->currentwidth-ih->currentheight-1, ih->y, ih->currentheight, ih->currentheight,
+ SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOOWNERZORDER);
+ }
+ }
+ else
+ iupdrvBaseLayoutUpdateMethod(ih);
+}
+
+static int winTextMapMethod(Ihandle* ih)
+{
+ DWORD dwStyle = WS_CHILD,
+ dwExStyle = 0;
+ char* winclass = "EDIT", *value;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ dwStyle |= WS_TABSTOP;
+
+ if (ih->data->has_formatting)
+ {
+ /* enable richedit 3.0 */
+ static HMODULE richedit = NULL;
+ if (!richedit)
+ richedit = LoadLibrary("Riched20.dll");
+ if (!richedit)
+ return IUP_ERROR;
+
+ winclass = RICHEDIT_CLASS;
+ }
+
+ if (ih->data->is_multiline)
+ {
+ dwStyle |= ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN;
+
+ if (iupAttribGetBoolean(ih, "WORDWRAP"))
+ {
+ ih->data->sb &= ~IUP_SB_HORIZ; /* must remove the horizontal scroolbar */
+ /* and do not specify ES_AUTOHSCROLL, the control automatically wraps words */
+ }
+ else
+ dwStyle |= ES_AUTOHSCROLL;
+
+ if (ih->data->sb & IUP_SB_HORIZ)
+ dwStyle |= WS_HSCROLL;
+ if (ih->data->sb & IUP_SB_VERT)
+ dwStyle |= WS_VSCROLL;
+
+ if (ih->data->has_formatting && ih->data->sb != IUP_SB_NONE)
+ {
+ if (!iupAttribGetBoolean(ih, "AUTOHIDE"))
+ dwStyle |= ES_DISABLENOSCROLL;
+ }
+ }
+ else
+ {
+ dwStyle |= ES_AUTOHSCROLL|ES_NOHIDESEL;
+
+ if (iupAttribGetBoolean(ih, "PASSWORD"))
+ dwStyle |= ES_PASSWORD;
+ }
+
+ value = iupAttribGet(ih, "ALIGNMENT");
+ if (value)
+ {
+ if (iupStrEqualNoCase(value, "ARIGHT"))
+ dwStyle |= ES_RIGHT;
+ else if (iupStrEqualNoCase(value, "ACENTER"))
+ dwStyle |= ES_CENTER;
+ else /* default "ALEFT" */
+ dwStyle |= ES_LEFT;
+ }
+
+ if (iupAttribGetBoolean(ih, "BORDER"))
+ dwExStyle |= WS_EX_CLIENTEDGE;
+
+ if (!iupwinCreateWindowEx(ih, winclass, dwExStyle, dwStyle))
+ return IUP_ERROR;
+
+ /* Process ACTION_CB and CARET_CB */
+ IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winTextProc);
+
+ /* Process background color */
+ IupSetCallback(ih, "_IUPWIN_CTLCOLOR_CB", (Icallback)winTextCtlColor);
+
+ /* Process WM_COMMAND */
+ IupSetCallback(ih, "_IUPWIN_COMMAND_CB", (Icallback)winTextWmCommand);
+
+ /* set defaults */
+ SendMessage(ih->handle, EM_LIMITTEXT, 0, 0L);
+ {
+ int tabsize = 8*4;
+ SendMessage(ih->handle, EM_SETTABSTOPS, (WPARAM)1L, (LPARAM)&tabsize);
+ }
+
+ if (!ih->data->is_multiline && iupAttribGetBoolean(ih, "SPIN"))
+ winTextCreateSpin(ih);
+
+ /* configure for DRAG&DROP */
+ if (IupGetCallback(ih, "DROPFILES_CB"))
+ iupAttribSetStr(ih, "DRAGDROP", "YES");
+
+ if (ih->data->has_formatting)
+ {
+ SendMessage(ih->handle, EM_SETTEXTMODE, (WPARAM)(TM_RICHTEXT|TM_MULTILEVELUNDO|TM_SINGLECODEPAGE), 0);
+ SendMessage(ih->handle, EM_SETEVENTMASK, 0, ENM_CHANGE);
+ }
+
+ if (ih->data->formattags)
+ {
+ /* must update FONT before updating the format during map */
+ iupUpdateStandardFontAttrib(ih);
+ iupAttribSetStr(ih, "_IUPWIN_IGNORE_FONT", "1");
+
+ iupTextUpdateFormatTags(ih);
+ }
+
+ IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)winTextConvertXYToPos);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvTextInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = winTextMapMethod;
+ ic->LayoutUpdate = winTextLayoutUpdateMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, winTextSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED);
+
+ /* Overwrite Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, winTextSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "VISIBLE", iupBaseGetVisibleAttrib, winTextSetVisibleAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_NOT_MAPPED); /* usually black */
+
+ /* IupText only */
+ iupClassRegisterAttribute(ic, "PADDING", iupTextGetPaddingAttrib, winTextSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "VALUE", winTextGetValueAttrib, winTextSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTEDTEXT", winTextGetSelectedTextAttrib, winTextSetSelectedTextAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTION", winTextGetSelectionAttrib, winTextSetSelectionAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTIONPOS", winTextGetSelectionPosAttrib, winTextSetSelectionPosAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CARET", winTextGetCaretAttrib, winTextSetCaretAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CARETPOS", winTextGetCaretPosAttrib, winTextSetCaretPosAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "INSERT", NULL, winTextSetInsertAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "APPEND", NULL, winTextSetAppendAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "READONLY", winTextGetReadOnlyAttrib, winTextSetReadOnlyAttrib, NULL, NULL, IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "NC", iupTextGetNCAttrib, winTextSetNCAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "CLIPBOARD", NULL, winTextSetClipboardAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SCROLLTO", NULL, winTextSetScrollToAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SCROLLTOPOS", NULL, winTextSetScrollToPosAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPINMIN", NULL, winTextSetSpinMinAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPINMAX", NULL, winTextSetSpinMaxAttrib, IUPAF_SAMEASSYSTEM, "100", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPININC", NULL, winTextSetSpinIncAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPINVALUE", winTextGetSpinValueAttrib, winTextSetSpinValueAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NO_INHERIT);
+
+ /* IupText Windows and GTK only */
+ iupClassRegisterAttribute(ic, "ADDFORMATTAG", NULL, iupTextSetAddFormatTagAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ADDFORMATTAG_HANDLE", NULL, iupTextSetAddFormatTagHandleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, winTextSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "ALEFT", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupwinSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FORMATTING", iupTextGetFormattingAttrib, iupTextSetFormattingAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "OVERWRITE", NULL, winTextSetOverwriteAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "REMOVEFORMATTING", NULL, winTextSetRemoveFormattingAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TABSIZE", NULL, winTextSetTabSizeAttrib, IUPAF_SAMEASSYSTEM, "8", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "PASSWORD", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+
+ /* IupText Windows only */
+ iupClassRegisterAttribute(ic, "CUEBANNER", NULL, winTextSetCueBannerAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FILTER", NULL, winTextSetFilterAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/win/iupwin_timer.c b/iup/src/win/iupwin_timer.c
new file mode 100755
index 0000000..f2bb9c5
--- /dev/null
+++ b/iup/src/win/iupwin_timer.c
@@ -0,0 +1,88 @@
+/** \file
+ * \brief Timer for the Windows Driver.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_assert.h"
+#include "iup_timer.h"
+
+
+static Itable* wintimer_id_table = NULL; /* table indexed by ID containing Ihandle* address */
+
+static void CALLBACK winTimerProc(HWND hwnd, UINT msg, UINT_PTR wid, DWORD time)
+{
+ Icallback cb;
+ Ihandle *ih;
+
+ (void)time;
+ (void)msg;
+ (void)hwnd;
+
+ ih = (Ihandle*)iupTableGet(wintimer_id_table, (char*)wid);
+
+ if (!iupObjectCheck(ih)) /* control could be destroyed before timer callback */
+ return;
+
+ cb = IupGetCallback(ih, "ACTION_CB");
+ if(cb)
+ {
+ if (cb(ih) == IUP_CLOSE)
+ IupExitLoop();
+ }
+}
+
+void iupdrvTimerRun(Ihandle *ih)
+{
+ unsigned int time_ms;
+
+ if (ih->serial > 0) /* timer already started */
+ return;
+
+ time_ms = iupAttribGetInt(ih, "TIME");
+ if (time_ms > 0)
+ {
+ ih->serial = SetTimer(NULL, 0, time_ms, (TIMERPROC)winTimerProc);
+ iupTableSet(wintimer_id_table, (const char*)ih->serial, ih, IUPTABLE_POINTER);
+ }
+}
+
+void iupdrvTimerStop(Ihandle* ih)
+{
+ if (ih->serial > 0)
+ {
+ KillTimer(NULL, ih->serial);
+ iupTableRemove(wintimer_id_table, (const char*)ih->serial);
+ ih->serial = -1;
+ }
+}
+
+static void winTimerRelease(Iclass* ic)
+{
+ (void)ic;
+
+ if (wintimer_id_table)
+ {
+ iupTableDestroy(wintimer_id_table);
+ wintimer_id_table = NULL;
+ }
+}
+
+void iupdrvTimerInitClass(Iclass* ic)
+{
+ ic->Release = winTimerRelease;
+
+ if (!wintimer_id_table)
+ wintimer_id_table = iupTableCreate(IUPTABLE_POINTERINDEXED);
+}
diff --git a/iup/src/win/iupwin_tips.c b/iup/src/win/iupwin_tips.c
new file mode 100755
index 0000000..f717ace
--- /dev/null
+++ b/iup/src/win/iupwin_tips.c
@@ -0,0 +1,191 @@
+/** \file
+ * \brief Windows Driver TIPS management
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+
+#include <windows.h>
+#include <commctrl.h>
+
+#include "iup.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+
+
+#ifndef TTM_POPUP /* it is defined only when _WIN32_WINNT >= 0x0501 */
+#define TTM_POPUP (WM_USER + 34)
+#endif
+
+static HWND winTipsCreate(HWND hParent)
+{
+ RECT rect = {1,1,1,1};
+ HWND tips_hwnd = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, (LPSTR) NULL, TTS_ALWAYSTIP,
+ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
+ hParent, (HMENU)NULL, iupwin_hinstance, NULL);
+ SendMessage(tips_hwnd, TTM_SETMAXTIPWIDTH, 0, (LPARAM)(INT)3000);
+ SendMessage(tips_hwnd, TTM_SETMARGIN, (WPARAM)0, (LPARAM)&rect);
+ return tips_hwnd;
+}
+
+static int winTipsSendMessage(Ihandle* ih, HWND tips_hwnd, UINT msg)
+{
+ TOOLINFO ti;
+ ZeroMemory(&ti, sizeof(TOOLINFO));
+ ti.cbSize = sizeof(TOOLINFO);
+ ti.uFlags = TTF_SUBCLASS;
+ ti.hinst = iupwin_hinstance;
+ ti.uId = 0;
+ ti.hwnd = ih->handle;
+ ti.lpszText = LPSTR_TEXTCALLBACK;
+ ti.rect.right = 3000;
+ ti.rect.bottom = 3000;
+
+ return SendMessage(tips_hwnd, msg, 0, (LPARAM)&ti);
+}
+
+int iupdrvBaseSetTipAttrib(Ihandle* ih, const char* value)
+{
+ HWND tips_hwnd = (HWND)iupAttribGet(ih, "_IUPWIN_TIPSWIN");
+ if (!tips_hwnd)
+ {
+ tips_hwnd = winTipsCreate(ih->handle);
+ iupAttribSetStr(ih, "_IUPWIN_TIPSWIN", (char*)tips_hwnd);
+ iupwinHandleAdd(ih, tips_hwnd);
+ }
+
+ if (value)
+ winTipsSendMessage(ih, tips_hwnd, TTM_ADDTOOL);
+ else
+ winTipsSendMessage(ih, tips_hwnd, TTM_DELTOOL);
+
+ return 1;
+}
+
+int iupdrvBaseSetTipVisibleAttrib(Ihandle* ih, const char* value)
+{
+ HWND tips_hwnd = (HWND)iupAttribGet(ih, "_IUPWIN_TIPSWIN");
+ if (!tips_hwnd)
+ return 0;
+
+ /* must use IupGetAttribute to use inheritance */
+ if (!IupGetAttribute(ih, "TIP"))
+ return 0;
+
+ if (iupStrBoolean(value))
+ SendMessage(tips_hwnd, TTM_POPUP, 0, 0); /* XP Only */
+ else
+ SendMessage(tips_hwnd, TTM_POP, 0, 0);
+
+ return 0;
+}
+
+void iupwinTipsGetDispInfo(LPARAM lp)
+{
+ COLORREF color, tip_color;
+ NMTTDISPINFO* tips_info;
+ Ihandle* ih;
+ HWND tips_hwnd;
+ char* value;
+
+ if (!lp) return;
+
+ tips_info = (NMTTDISPINFO*)lp;
+ ih = iupwinHandleGet(tips_info->hdr.hwndFrom); /* hwndFrom is the tooltip window */
+ if (!ih) return;
+
+ tips_hwnd = (HWND)iupAttribGet(ih, "_IUPWIN_TIPSWIN");
+ if (tips_hwnd != tips_info->hdr.hwndFrom) return;
+
+ tips_info->hinst = NULL;
+ tips_info->lpszText = IupGetAttribute(ih, "TIP"); /* must use IupGetAttribute to use inheritance */
+
+ {
+ HFONT hfont;
+ value = iupAttribGetStr(ih, "TIPFONT");
+ if (value)
+ {
+ if (iupStrEqualNoCase(value, "SYSTEM"))
+ hfont = NULL;
+ else
+ hfont = iupwinGetHFont(value);
+ }
+ else
+ hfont = (HFONT)iupwinGetHFontAttrib(ih);
+
+ if (hfont)
+ {
+ HFONT tip_hfont = (HFONT)SendMessage(tips_hwnd, WM_GETFONT, 0, 0);
+ if (tip_hfont != hfont)
+ SendMessage(tips_hwnd, WM_SETFONT, (WPARAM)hfont, MAKELPARAM(TRUE,0));
+ }
+ }
+
+ iupwinGetColorRef(ih, "TIPBGCOLOR", &color);
+ tip_color = (COLORREF)SendMessage(tips_hwnd, TTM_GETTIPBKCOLOR, 0, 0);
+ if (color != tip_color)
+ SendMessage(tips_hwnd, TTM_SETTIPBKCOLOR, (WPARAM)color, 0);
+
+ iupwinGetColorRef(ih, "TIPFGCOLOR", &color);
+ tip_color = (COLORREF)SendMessage(tips_hwnd, TTM_GETTIPTEXTCOLOR, 0, 0);
+ if (color != tip_color)
+ SendMessage(tips_hwnd, TTM_SETTIPTEXTCOLOR, (WPARAM)color, 0);
+
+ {
+ int ballon = IupGetInt(ih, "TIPBALLON"); /* must use IupGetInt to use inheritance */
+ DWORD style = GetWindowLong(tips_hwnd, GWL_STYLE);
+ int tip_ballon = style & TTS_BALLOON? 1: 0;
+ if (tip_ballon != ballon)
+ {
+ if (ballon)
+ style |= TTS_BALLOON;
+ else
+ style &= ~TTS_BALLOON;
+ SetWindowLong(tips_hwnd, GWL_STYLE, style);
+ }
+
+ if (ballon)
+ {
+ char* ballon_title = IupGetAttribute(ih, "TIPBALLONTITLE"); /* must use IupGetAttribute to use inheritance */
+ int ballon_icon = IupGetInt(ih, "TIPBALLONTITLEICON"); /* must use IupGetInt to use inheritance */
+ SendMessage(tips_hwnd, TTM_SETTITLEA, ballon_icon, (LPARAM)ballon_title);
+ }
+ else
+ SendMessage(tips_hwnd, TTM_SETTITLEA, 0, 0);
+ }
+
+ {
+ int delay = IupGetInt(ih, "TIPDELAY"); /* must use IupGetInt to use inheritance */
+ int tip_delay = SendMessage(tips_hwnd, TTM_GETDELAYTIME, TTDT_AUTOPOP, 0);
+ if (delay != tip_delay)
+ SendMessage(tips_hwnd, TTM_SETDELAYTIME, TTDT_AUTOPOP, (LPARAM)MAKELONG(delay, 0));
+ }
+
+ {
+ TOOLINFO ti;
+
+ ZeroMemory(&ti, sizeof(TOOLINFO));
+ ti.cbSize = sizeof(TOOLINFO);
+ ti.uId = 0;
+ ti.hwnd = ih->handle;
+
+ value = iupAttribGet(ih, "TIPRECT");
+ if (value)
+ {
+ int x1, x2, y1, y2;
+ sscanf(value, "%d %d %d %d", &x1, &y1, &x2, &y2);
+ ti.rect.left = x1; ti.rect.right = x2;
+ ti.rect.top = y1; ti.rect.bottom = y2;
+ }
+ else
+ GetClientRect(ih->handle, &ti.rect);
+
+ SendMessage(tips_hwnd, TTM_NEWTOOLRECT, 0, (LPARAM)&ti);
+ }
+}
diff --git a/iup/src/win/iupwin_toggle.c b/iup/src/win/iupwin_toggle.c
new file mode 100755
index 0000000..fcaa438
--- /dev/null
+++ b/iup/src/win/iupwin_toggle.c
@@ -0,0 +1,693 @@
+/** \file
+ * \brief Toggle Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+#include <commctrl.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_toggle.h"
+#include "iup_drv.h"
+#include "iup_image.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+#include "iupwin_draw.h"
+
+
+#ifndef CDIS_SHOWKEYBOARDCUES
+#define CDIS_SHOWKEYBOARDCUES 0x0200 /* it is defined only when _WIN32_WINNT >= 0x0501 */
+#endif
+
+
+void iupdrvToggleAddCheckBox(int *x, int *y)
+{
+ (*x) += 16+6;
+ if ((*y) < 16) (*y) = 16; /* minimum height */
+}
+
+static int winToggleIsActive(Ihandle* ih)
+{
+ return iupAttribGetInt(ih, "_IUPWIN_ACTIVE");
+}
+
+static void winToggleSetBitmap(Ihandle* ih, const char* name, int make_inactive)
+{
+ if (name)
+ {
+ HBITMAP bitmap = iupImageGetImage(name, ih, make_inactive);
+ SendMessage(ih->handle, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)bitmap);
+ }
+ else
+ SendMessage(ih->handle, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)NULL); /* if not defined */
+}
+
+static void winToggleUpdateImage(Ihandle* ih, int active, int check)
+{
+ /* called only when (ih->data->type == IUP_TOGGLE_IMAGE && !iupwin_comctl32ver6) */
+ char* name;
+
+ if (!active)
+ {
+ name = iupAttribGet(ih, "IMINACTIVE");
+ if (name)
+ winToggleSetBitmap(ih, name, 0);
+ else
+ {
+ /* if not defined then automaticaly create one based on IMAGE */
+ name = iupAttribGet(ih, "IMAGE");
+ winToggleSetBitmap(ih, name, 1); /* make_inactive */
+ }
+ }
+ else
+ {
+ /* must restore the normal image */
+ if (check)
+ {
+ name = iupAttribGet(ih, "IMPRESS");
+ if (name)
+ winToggleSetBitmap(ih, name, 0);
+ else
+ {
+ /* if not defined then automaticaly create one based on IMAGE */
+ name = iupAttribGet(ih, "IMAGE");
+ winToggleSetBitmap(ih, name, 0);
+ }
+ }
+ else
+ {
+ name = iupAttribGet(ih, "IMAGE");
+ if (name)
+ winToggleSetBitmap(ih, name, 0);
+ }
+ }
+}
+
+static void winToggleGetAlignment(Ihandle* ih, int *horiz_alignment, int *vert_alignment)
+{
+ char value1[30]="", value2[30]="";
+
+ iupStrToStrStr(iupAttribGetStr(ih, "ALIGNMENT"), value1, value2, ':');
+
+ if (iupStrEqualNoCase(value1, "ARIGHT"))
+ *horiz_alignment = IUP_ALIGN_ARIGHT;
+ else if (iupStrEqualNoCase(value1, "ALEFT"))
+ *horiz_alignment = IUP_ALIGN_ALEFT;
+ else /* "ACENTER" */
+ *horiz_alignment = IUP_ALIGN_ACENTER;
+
+ if (iupStrEqualNoCase(value2, "ABOTTOM"))
+ *vert_alignment = IUP_ALIGN_ABOTTOM;
+ else if (iupStrEqualNoCase(value2, "ATOP"))
+ *vert_alignment = IUP_ALIGN_ATOP;
+ else /* "ACENTER" */
+ *vert_alignment = IUP_ALIGN_ACENTER;
+}
+
+static void winToggleDrawImage(Ihandle* ih, HDC hDC, int rect_width, int rect_height, int border, UINT itemState)
+{
+ int xpad = ih->data->horiz_padding + border,
+ ypad = ih->data->vert_padding + border;
+ int horiz_alignment, vert_alignment;
+ int x, y, width, height, bpp, shift = 1;
+ HBITMAP hBitmap, hMask = NULL;
+ char *name;
+ int make_inactive = 0;
+
+ if (itemState & ODS_DISABLED)
+ {
+ name = iupAttribGet(ih, "IMINACTIVE");
+ if (!name)
+ {
+ name = iupAttribGet(ih, "IMAGE");
+ make_inactive = 1;
+ }
+ }
+ else
+ {
+ name = iupAttribGet(ih, "IMPRESS");
+ if (itemState & ODS_SELECTED && name)
+ shift = 0;
+ else
+ name = iupAttribGet(ih, "IMAGE");
+ }
+
+ hBitmap = iupImageGetImage(name, ih, make_inactive);
+ if (!hBitmap)
+ return;
+
+ /* must use this info, since image can be a driver image loaded from resources */
+ iupdrvImageGetInfo(hBitmap, &width, &height, &bpp);
+
+ winToggleGetAlignment(ih, &horiz_alignment, &vert_alignment);
+ if (horiz_alignment == IUP_ALIGN_ARIGHT)
+ x = rect_width - (width + 2*xpad);
+ else if (horiz_alignment == IUP_ALIGN_ACENTER)
+ x = (rect_width - (width + 2*xpad))/2;
+ else /* ALEFT */
+ x = 0;
+
+ if (vert_alignment == IUP_ALIGN_ABOTTOM)
+ y = rect_height - (height + 2*ypad);
+ else if (vert_alignment == IUP_ALIGN_ATOP)
+ y = 0;
+ else /* ACENTER */
+ y = (rect_height - (height + 2*ypad))/2;
+
+ x += xpad;
+ y += ypad;
+
+ if (itemState & ODS_SELECTED && !iupwin_comctl32ver6 && shift)
+ {
+ x++;
+ y++;
+ }
+
+ if (bpp == 8)
+ hMask = iupdrvImageCreateMask(IupGetHandle(name));
+
+ iupwinDrawBitmap(hDC, hBitmap, hMask, x, y, width, height, bpp);
+
+ if (hMask)
+ DeleteObject(hMask);
+}
+
+static void winToggleDrawItem(Ihandle* ih, DRAWITEMSTRUCT *drawitem)
+{
+ int width, height, border = 4, check;
+ HDC hDC;
+ iupwinBitmapDC bmpDC;
+
+ width = drawitem->rcItem.right - drawitem->rcItem.left;
+ height = drawitem->rcItem.bottom - drawitem->rcItem.top;
+
+ hDC = iupwinDrawCreateBitmapDC(&bmpDC, drawitem->hDC, width, height);
+
+ iupwinDrawParentBackground(ih, hDC, &drawitem->rcItem);
+
+ check = SendMessage(ih->handle, BM_GETCHECK, 0, 0L);
+ if (check)
+ drawitem->itemState |= ODS_SELECTED;
+ else
+ drawitem->itemState |= ODS_DEFAULT; /* use default mark for NOT checked */
+
+ iupwinDrawButtonBorder(ih->handle, hDC, &drawitem->rcItem, drawitem->itemState);
+
+ winToggleDrawImage(ih, hDC, width, height, border, drawitem->itemState);
+
+ if (drawitem->itemState & ODS_FOCUS)
+ {
+ border--;
+ iupdrvDrawFocusRect(ih, hDC, border, border, width-2*border, height-2*border);
+ }
+
+ iupwinDrawDestroyBitmapDC(&bmpDC);
+}
+
+
+/***********************************************************************************************/
+
+
+static int winToggleSetImageAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ if (value != iupAttribGet(ih, "IMAGE"))
+ iupAttribSetStr(ih, "IMAGE", (char*)value);
+
+ if (iupwin_comctl32ver6)
+ iupdrvDisplayRedraw(ih);
+ else
+ {
+ int check = SendMessage(ih->handle, BM_GETCHECK, 0L, 0L);
+ winToggleUpdateImage(ih, winToggleIsActive(ih), check);
+ }
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int winToggleSetImInactiveAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ if (value != iupAttribGet(ih, "IMINACTIVE"))
+ iupAttribSetStr(ih, "IMINACTIVE", (char*)value);
+
+ if (iupwin_comctl32ver6)
+ iupdrvDisplayRedraw(ih);
+ else
+ {
+ int check = SendMessage(ih->handle, BM_GETCHECK, 0L, 0L);
+ winToggleUpdateImage(ih, winToggleIsActive(ih), check);
+ }
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int winToggleSetImPressAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ if (value != iupAttribGet(ih, "IMPRESS"))
+ iupAttribSetStr(ih, "IMPRESS", (char*)value);
+
+ if (iupwin_comctl32ver6)
+ iupdrvDisplayRedraw(ih);
+ else
+ {
+ int check = SendMessage(ih->handle, BM_GETCHECK, 0L, 0L);
+ winToggleUpdateImage(ih, winToggleIsActive(ih), check);
+ }
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static int winToggleSetValueAttrib(Ihandle* ih, const char* value)
+{
+ Ihandle *radio;
+ int check;
+
+ if (iupStrEqualNoCase(value,"NOTDEF"))
+ check = BST_INDETERMINATE;
+ else if (iupStrBoolean(value))
+ check = BST_CHECKED;
+ else
+ check = BST_UNCHECKED;
+
+ /* This is necessary because Windows does not handle the radio state
+ when a toggle is programatically changed. */
+ radio = iupRadioFindToggleParent(ih);
+ if (radio)
+ {
+ int oldcheck = (int)SendMessage(ih->handle, BM_GETCHECK, 0, 0L);
+
+ Ihandle* last_tg = (Ihandle*)iupAttribGet(radio, "_IUPWIN_LASTTOGGLE");
+ if (check)
+ {
+ if (iupObjectCheck(last_tg) && last_tg != ih)
+ SendMessage(last_tg->handle, BM_SETCHECK, BST_UNCHECKED, 0L);
+ iupAttribSetStr(radio, "_IUPWIN_LASTTOGGLE", (char*)ih);
+ }
+
+ if (last_tg != ih && oldcheck != check)
+ SendMessage(ih->handle, BM_SETCHECK, check, 0L);
+ }
+ else
+ SendMessage(ih->handle, BM_SETCHECK, check, 0L);
+
+ if (ih->data->type == IUP_TOGGLE_IMAGE && !iupwin_comctl32ver6)
+ winToggleUpdateImage(ih, winToggleIsActive(ih), check);
+
+ return 0;
+}
+
+static char* winToggleGetValueAttrib(Ihandle* ih)
+{
+ int check = (int)SendMessage(ih->handle, BM_GETCHECK, 0, 0L);
+ if (check == BST_INDETERMINATE)
+ return "NOTDEF";
+ else if (check == BST_CHECKED)
+ return "ON";
+ else
+ return "OFF";
+}
+
+static int winToggleSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ /* update the inactive image if necessary */
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ if (iupwin_comctl32ver6)
+ {
+ iupBaseSetActiveAttrib(ih, value);
+ iupdrvDisplayRedraw(ih);
+ return 0;
+ }
+ else
+ {
+ int active = iupStrBoolean(value);
+ int check = SendMessage(ih->handle, BM_GETCHECK, 0, 0L);
+ if (active)
+ iupAttribSetStr(ih, "_IUPWIN_ACTIVE", "YES");
+ else
+ iupAttribSetStr(ih, "_IUPWIN_ACTIVE", "NO");
+ winToggleUpdateImage(ih, active, check);
+ return 0;
+ }
+ }
+
+ return iupBaseSetActiveAttrib(ih, value);
+}
+
+static char* winToggleGetActiveAttrib(Ihandle* ih)
+{
+ if (ih->data->type == IUP_TOGGLE_IMAGE && !iupwin_comctl32ver6)
+ return iupAttribGet(ih, "_IUPWIN_ACTIVE");
+ else
+ return iupBaseGetActiveAttrib(ih);
+}
+
+static int winToggleSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->type == IUP_TOGGLE_TEXT)
+ {
+ if (!value)
+ value = "";
+ SetWindowText(ih->handle, value);
+ }
+ return 0;
+}
+
+static int winToggleSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+
+ if (ih->handle && iupwin_comctl32ver6 && ih->data->type == IUP_TOGGLE_IMAGE)
+ iupdrvDisplayRedraw(ih);
+
+ return 0;
+}
+
+static int winToggleSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ (void)value;
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ /* update internal image cache for controls that have the IMAGE attribute */
+ iupAttribSetStr(ih, "BGCOLOR", value);
+ iupImageUpdateParent(ih);
+ iupdrvDisplayRedraw(ih);
+ }
+ return 1;
+}
+
+static char* winToggleGetBgColorAttrib(Ihandle* ih)
+{
+ /* the most important use of this is to provide
+ the correct background for images */
+ if (iupwin_comctl32ver6 && ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ COLORREF cr;
+ if (iupwinDrawGetThemeButtonBgColor(ih->handle, &cr))
+ {
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%d %d %d", (int)GetRValue(cr), (int)GetGValue(cr), (int)GetBValue(cr));
+ return str;
+ }
+ }
+
+ if (ih->data->type == IUP_TOGGLE_TEXT)
+ return iupBaseNativeParentGetBgColorAttrib(ih);
+ else
+ return IupGetGlobal("DLGBGCOLOR");
+}
+
+
+/****************************************************************************************/
+
+
+static int winToggleCtlColor(Ihandle* ih, HDC hdc, LRESULT *result)
+{
+ COLORREF cr;
+
+ SetBkMode(hdc, TRANSPARENT);
+
+ if (iupwinGetColorRef(ih, "FGCOLOR", &cr))
+ SetTextColor(hdc, cr);
+
+ if (iupwinGetParentBgColor(ih, &cr))
+ {
+ SetDCBrushColor(hdc, cr);
+ *result = (LRESULT)GetStockObject(DC_BRUSH);
+ return 1;
+ }
+ return 0;
+}
+
+static int winToggleWmNotify(Ihandle* ih, NMHDR* msg_info, int *result)
+{
+ if (msg_info->code == NM_CUSTOMDRAW)
+ {
+ /* called only when iupwin_comctl32ver6 AND (ih->data->type==IUP_TOGGLE_IMAGE) */
+ NMCUSTOMDRAW *customdraw = (NMCUSTOMDRAW*)msg_info;
+
+ if (customdraw->dwDrawStage==CDDS_PREERASE)
+ {
+ DRAWITEMSTRUCT drawitem;
+ drawitem.itemState = 0;
+
+ if (customdraw->uItemState & CDIS_DISABLED)
+ drawitem.itemState |= ODS_DISABLED;
+ else if (customdraw->uItemState & CDIS_SELECTED)
+ drawitem.itemState |= ODS_SELECTED;
+ else if (customdraw->uItemState & CDIS_HOT)
+ drawitem.itemState |= ODS_HOTLIGHT;
+ else if (customdraw->uItemState & CDIS_DEFAULT)
+ drawitem.itemState |= ODS_DEFAULT;
+
+ if (customdraw->uItemState & CDIS_FOCUS && (customdraw->uItemState & CDIS_SHOWKEYBOARDCUES))
+ drawitem.itemState |= ODS_FOCUS;
+
+ drawitem.hDC = customdraw->hdc;
+ drawitem.rcItem = customdraw->rc;
+
+ winToggleDrawItem(ih, (void*)&drawitem); /* Simulate a WM_DRAWITEM */
+
+ *result = CDRF_SKIPDEFAULT;
+ return 1;
+ }
+ }
+
+ return 0; /* result not used */
+}
+
+static int winToggleProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ (void)lp;
+ (void)wp;
+
+ switch (msg)
+ {
+ case WM_MOUSEACTIVATE:
+ if (!winToggleIsActive(ih))
+ {
+ *result = MA_NOACTIVATEANDEAT;
+ return 1;
+ }
+ break;
+ case WM_LBUTTONDOWN:
+ case WM_LBUTTONUP:
+ case WM_ACTIVATE:
+ case WM_SETFOCUS:
+ if (!winToggleIsActive(ih))
+ {
+ *result = 0;
+ return 1;
+ }
+ break;
+ }
+
+ if (msg == WM_LBUTTONDOWN)
+ winToggleUpdateImage(ih, 1, 1);
+ else if (msg == WM_LBUTTONUP)
+ winToggleUpdateImage(ih, 1, 0);
+
+ return iupwinBaseProc(ih, msg, wp, lp, result);
+}
+
+static int winToggleWmCommand(Ihandle* ih, WPARAM wp, LPARAM lp)
+{
+ (void)lp;
+
+ switch (HIWORD(wp))
+ {
+ case BN_DOUBLECLICKED:
+ case BN_CLICKED:
+ {
+ Ihandle *radio;
+ IFni cb;
+ int check = SendMessage(ih->handle, BM_GETCHECK, 0, 0L);
+
+ if (ih->data->type == IUP_TOGGLE_IMAGE && !iupwin_comctl32ver6)
+ {
+ int active = winToggleIsActive(ih);
+ winToggleUpdateImage(ih, active, check);
+ if (!active)
+ return 0;
+ }
+
+ radio = iupRadioFindToggleParent(ih);
+ if (radio)
+ {
+ /* This is necessary because Windows does not send a message
+ when a toggle is unchecked in a Radio.
+ Also if the toggle is already checked in a radio,
+ a click will call the callback again. */
+
+ Ihandle* last_tg = (Ihandle*)iupAttribGet(radio, "_IUPWIN_LASTTOGGLE");
+ if (iupObjectCheck(last_tg) && last_tg != ih)
+ {
+ /* uncheck last toggle */
+ SendMessage(last_tg->handle, BM_SETCHECK, BST_UNCHECKED, 0L);
+
+ cb = (IFni) IupGetCallback(last_tg, "ACTION");
+ if (cb && cb(last_tg, 0) == IUP_CLOSE)
+ IupExitLoop();
+
+ iupBaseCallValueChangedCb(last_tg);
+ }
+ iupAttribSetStr(radio, "_IUPWIN_LASTTOGGLE", (char*)ih);
+
+ if (last_tg != ih)
+ {
+ /* check new toggle */
+ SendMessage(ih->handle, BM_SETCHECK, BST_CHECKED, 0L);
+
+ cb = (IFni)IupGetCallback(ih, "ACTION");
+ if (cb && cb (ih, 1) == IUP_CLOSE)
+ IupExitLoop();
+
+ iupBaseCallValueChangedCb(ih);
+ }
+ }
+ else
+ {
+ if (check == BST_INDETERMINATE)
+ check = -1;
+
+ cb = (IFni)IupGetCallback(ih, "ACTION");
+ if (cb && cb (ih, check) == IUP_CLOSE)
+ IupExitLoop();
+
+ iupBaseCallValueChangedCb(ih);
+ }
+ }
+ }
+
+
+ return 0; /* not used */
+}
+
+static int winToggleMapMethod(Ihandle* ih)
+{
+ Ihandle* radio = iupRadioFindToggleParent(ih);
+ char* value;
+ DWORD dwStyle = WS_CHILD |
+ BS_NOTIFY; /* necessary because of the base messages */
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ if (radio)
+ ih->data->radio = 1;
+
+ value = iupAttribGet(ih, "IMAGE");
+ if (value)
+ {
+ ih->data->type = IUP_TOGGLE_IMAGE;
+ dwStyle |= BS_BITMAP|BS_PUSHLIKE;
+ }
+ else
+ {
+ ih->data->type = IUP_TOGGLE_TEXT;
+ dwStyle |= BS_TEXT|BS_MULTILINE;
+
+ if (iupAttribGetBoolean(ih, "RIGHTBUTTON"))
+ dwStyle |= BS_RIGHTBUTTON;
+ }
+
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ dwStyle |= WS_TABSTOP;
+
+ if (radio)
+ {
+ dwStyle |= BS_RADIOBUTTON;
+
+ if (!iupAttribGet(radio, "_IUPWIN_LASTTOGGLE"))
+ {
+ /* this is the first toggle in the radio, and the last toggle with VALUE=ON */
+ iupAttribSetStr(ih, "VALUE","ON");
+ }
+ }
+ else
+ {
+ if (ih->data->type == IUP_TOGGLE_TEXT && iupAttribGetBoolean(ih, "3STATE"))
+ dwStyle |= BS_AUTO3STATE;
+ else
+ dwStyle |= BS_AUTOCHECKBOX;
+ }
+
+ if (!iupwinCreateWindowEx(ih, "BUTTON", 0, dwStyle))
+ return IUP_ERROR;
+
+ /* Process WM_COMMAND */
+ IupSetCallback(ih, "_IUPWIN_COMMAND_CB", (Icallback)winToggleWmCommand);
+
+ /* Process background color */
+ IupSetCallback(ih, "_IUPWIN_CTLCOLOR_CB", (Icallback)winToggleCtlColor);
+
+ if (ih->data->type == IUP_TOGGLE_IMAGE)
+ {
+ if (iupwin_comctl32ver6)
+ IupSetCallback(ih, "_IUPWIN_NOTIFY_CB", (Icallback)winToggleWmNotify); /* Process WM_NOTIFY */
+ else
+ {
+ IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winToggleProc);
+ iupAttribSetStr(ih, "_IUPWIN_ACTIVE", "YES");
+ }
+ }
+
+ return IUP_NOERROR;
+}
+
+void iupdrvToggleInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = winToggleMapMethod;
+
+ /* Driver Dependent Attribute functions */
+
+ /* Overwrite Visual */
+ iupClassRegisterAttribute(ic, "ACTIVE", winToggleGetActiveAttrib, winToggleSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", winToggleGetBgColorAttrib, winToggleSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT);
+
+ /* Special */
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, "DLGFGCOLOR", NULL, IUPAF_NOT_MAPPED); /* force the new default value */
+ iupClassRegisterAttribute(ic, "TITLE", iupdrvBaseGetTitleAttrib, winToggleSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupToggle only */
+ iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, NULL, IUPAF_SAMEASSYSTEM, "ACENTER:ACENTER", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGE", NULL, winToggleSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, winToggleSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMPRESS", NULL, winToggleSetImPressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUE", winToggleGetValueAttrib, winToggleSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "PADDING", iupToggleGetPaddingAttrib, winToggleSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+
+ /* IupToggle Windows only */
+ iupClassRegisterAttribute(ic, "RIGHTBUTTON", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT);
+
+ /* necessary because it uses an old HBITMAP solution when NOT using styles */
+ if (!iupwin_comctl32ver6) /* Used by iupdrvImageCreateImage */
+ iupClassRegisterAttribute(ic, "FLAT_ALPHA", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/win/iupwin_tree.c b/iup/src/win/iupwin_tree.c
new file mode 100755
index 0000000..e6877dc
--- /dev/null
+++ b/iup/src/win/iupwin_tree.c
@@ -0,0 +1,2542 @@
+/** \file
+ * \brief Tree Control
+ *
+ * See Copyright Notice in iup.h
+ */
+
+#undef NOTREEVIEW
+#include <windows.h>
+#include <commctrl.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_stdcontrols.h"
+#include "iup_tree.h"
+#include "iup_image.h"
+#include "iup_array.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+#include "iupwin_draw.h"
+#include "iupwin_info.h"
+
+typedef struct _winTreeItemData
+{
+ COLORREF color;
+ unsigned char kind;
+ void* userdata;
+ HFONT hFont;
+ short image;
+ short image_expanded;
+} winTreeItemData;
+
+#ifndef TVN_ITEMCHANGING /* Vista Only */
+typedef struct tagNMTVITEMCHANGE {
+ NMHDR hdr;
+ UINT uChanged;
+ HTREEITEM hItem;
+ UINT uStateNew;
+ UINT uStateOld;
+ LPARAM lParam;
+} NMTVITEMCHANGE;
+#define TVN_ITEMCHANGINGA (TVN_FIRST-16)
+#define TVN_ITEMCHANGINGW (TVN_FIRST-17)
+#endif
+
+static void winTreeSetFocusNode(Ihandle* ih, HTREEITEM hItem);
+typedef int (*winTreeNodeFunc)(Ihandle* ih, HTREEITEM hItem, void* userdata);
+
+static int winTreeForEach(Ihandle* ih, HTREEITEM hItem, winTreeNodeFunc func, void* userdata)
+{
+ HTREEITEM hItemChild;
+
+ if (!hItem)
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0);
+
+ while(hItem != NULL)
+ {
+ if (!func(ih, hItem, userdata))
+ return 0;
+
+ hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
+ if (hItemChild)
+ {
+ /* Recursively traverse child items */
+ if (!winTreeForEach(ih, hItemChild, func, userdata))
+ return 0;
+ }
+
+ /* Go to next sibling item */
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem);
+ }
+
+ return 1;
+}
+
+/*****************************************************************************/
+/* FINDING ITEMS */
+/*****************************************************************************/
+static HTREEITEM winTreeFindNodeID(Ihandle* ih, HTREEITEM hItem, HTREEITEM hNode)
+{
+ TVITEM item;
+ winTreeItemData* itemData;
+
+ while(hItem != NULL)
+ {
+ /* ID control to traverse items */
+ ih->data->id_control++;
+
+ /* StateID founded! */
+ if(hItem == hNode)
+ return hItem;
+
+ /* Get hItem attributes */
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE|TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ /* Check whether we have child items */
+ if (itemData->kind == ITREE_BRANCH)
+ {
+ /* Recursively traverse child items */
+ HTREEITEM hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
+ hItemChild = winTreeFindNodeID(ih, hItemChild, hNode);
+
+ /* StateID founded! */
+ if(hItemChild)
+ return hItemChild;
+ }
+ /* Go to next sibling item */
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem);
+ }
+
+ return NULL;
+}
+
+static int winTreeGetNodeId(Ihandle* ih, HTREEITEM hItem)
+{
+ HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0);
+ ih->data->id_control = -1;
+ if (winTreeFindNodeID(ih, hItemRoot, hItem))
+ return ih->data->id_control;
+ else
+ return -1;
+}
+
+static HTREEITEM winTreeFindUserDataID(Ihandle* ih, HTREEITEM hItem, void* userdata)
+{
+ TVITEM item;
+ winTreeItemData* itemData;
+
+ while(hItem != NULL)
+ {
+ /* ID control to traverse items */
+ ih->data->id_control++;
+
+ /* Get hItem attributes */
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE|TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ /* userdata founded! */
+ if(itemData->userdata == userdata)
+ return hItem;
+
+ /* Check whether we have child items */
+ if (itemData->kind == ITREE_BRANCH)
+ {
+ /* Recursively traverse child items */
+ HTREEITEM hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
+ hItemChild = winTreeFindUserDataID(ih, hItemChild, userdata);
+
+ /* userdata founded! */
+ if (hItemChild)
+ return hItemChild;
+ }
+
+ /* Go to next sibling item */
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem);
+ }
+
+ return NULL;
+}
+
+static int winTreeGetUserDataId(Ihandle* ih, void* userdata)
+{
+ HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0);
+ ih->data->id_control = -1;
+ if (winTreeFindUserDataID(ih, hItemRoot, userdata))
+ return ih->data->id_control;
+ else
+ return -1;
+}
+
+static HTREEITEM winTreeFindNodeFromID(Ihandle* ih, HTREEITEM hItem)
+{
+ TVITEM item;
+ winTreeItemData* itemData;
+
+ while(hItem != NULL)
+ {
+ /* ID control to traverse items */
+ ih->data->id_control--;
+
+ /* StateID founded! */
+ if(ih->data->id_control < 0)
+ return hItem;
+
+ /* Get hItem attributes */
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE|TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ /* Check whether we have child items */
+ if (itemData->kind == ITREE_BRANCH)
+ {
+ /* Recursively traverse child items */
+ HTREEITEM hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
+ hItemChild = winTreeFindNodeFromID(ih, hItemChild);
+
+ /* StateID founded! */
+ if(ih->data->id_control < 0)
+ return hItemChild;
+ }
+
+ /* Go to next sibling item */
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem);
+ }
+
+ return hItem;
+}
+
+static HTREEITEM winTreeFindNodeFromString(Ihandle* ih, const char* name_id)
+{
+ if (name_id[0])
+ {
+ HTREEITEM hRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0);
+ iupStrToInt(name_id, &ih->data->id_control);
+ return winTreeFindNodeFromID(ih, hRoot);
+ }
+ else
+ return (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CARET, 0);
+}
+
+/* Recursively, find a new brother for the item
+ that will have its depth changed. Returns the new brother. */
+static HTREEITEM winTreeFindNewBrother(Ihandle* ih, HTREEITEM hBrotherItem)
+{
+ TVITEM item;
+ winTreeItemData* itemData;
+
+ while(hBrotherItem != NULL)
+ {
+ if(ih->data->id_control < 0)
+ return hBrotherItem;
+
+ item.hItem = hBrotherItem;
+ item.mask = TVIF_HANDLE|TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ if (itemData->kind == ITREE_BRANCH)
+ {
+ HTREEITEM hItemChild;
+
+ ih->data->id_control--;
+ hItemChild = winTreeFindNewBrother(ih, (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hBrotherItem));
+
+ if(ih->data->id_control < 0)
+ return hItemChild;
+ }
+
+ hBrotherItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hBrotherItem);
+ }
+
+ return hBrotherItem;
+}
+
+static HTREEITEM winTreeFindNodePointed(Ihandle* ih)
+{
+ TVHITTESTINFO info;
+ DWORD pos = GetMessagePos();
+ info.pt.x = LOWORD(pos);
+ info.pt.y = HIWORD(pos);
+
+ ScreenToClient(ih->handle, &info.pt);
+
+ return (HTREEITEM)SendMessage(ih->handle, TVM_HITTEST, 0, (LPARAM)(LPTVHITTESTINFO)&info);
+}
+
+int iupwinGetColor(const char* value, COLORREF *color)
+{
+ unsigned char r, g, b;
+ if (iupStrToRGB(value, &r, &g, &b))
+ {
+ *color = RGB(r,g,b);
+ return 1;
+ }
+ return 0;
+}
+
+/*****************************************************************************/
+/* ADDING ITEMS */
+/*****************************************************************************/
+void iupdrvTreeAddNode(Ihandle* ih, const char* name_id, int kind, const char* title, int add)
+{
+ TVITEM item, tviPrevItem;
+ TVINSERTSTRUCT tvins;
+ HTREEITEM hPrevItem = winTreeFindNodeFromString(ih, name_id);
+ int kindPrev;
+ winTreeItemData* itemData;
+
+ if (!hPrevItem)
+ return;
+
+ itemData = calloc(1, sizeof(winTreeItemData));
+ itemData->image = -1;
+ itemData->image_expanded = -1;
+ itemData->kind = (unsigned char)kind;
+
+ item.mask = TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
+ item.pszText = (char*)title;
+ item.lParam = (LPARAM)itemData;
+
+ iupwinGetColor(iupAttribGetStr(ih, "FGCOLOR"), &itemData->color);
+
+ if (kind == ITREE_BRANCH)
+ {
+ item.iSelectedImage = item.iImage = (int)ih->data->def_image_collapsed;
+
+ if (ih->data->add_expanded)
+ {
+ item.mask |= TVIF_STATE;
+ item.state = item.stateMask = TVIS_EXPANDED;
+ item.iSelectedImage = item.iImage = (int)ih->data->def_image_expanded;
+ }
+ }
+ else
+ item.iSelectedImage = item.iImage = (int)ih->data->def_image_leaf;
+
+ /* Save the heading level in the node's application-defined data area */
+ tvins.item = item;
+
+ /* get the KIND attribute of node selected */
+ tviPrevItem.hItem = hPrevItem;
+ tviPrevItem.mask = TVIF_PARAM|TVIF_CHILDREN;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&tviPrevItem);
+ kindPrev = ((winTreeItemData*)tviPrevItem.lParam)->kind;
+
+ /* Define the parent and the position to the new node inside
+ the list, using the KIND attribute of node selected */
+ if (kindPrev == ITREE_BRANCH && add)
+ {
+ tvins.hParent = hPrevItem;
+ tvins.hInsertAfter = TVI_FIRST; /* insert the new node after item selected, as first child */
+ }
+ else
+ {
+ tvins.hParent = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hPrevItem);
+ tvins.hInsertAfter = hPrevItem; /* insert the new node after item selected */
+ }
+
+ /* Add the node to the tree-view control */
+ SendMessage(ih->handle, TVM_INSERTITEM, 0, (LPARAM)(LPTVINSERTSTRUCT)&tvins);
+
+ if (kindPrev == ITREE_BRANCH && tviPrevItem.cChildren==0)
+ {
+ /* this is the first child, redraw to update the '+'/'-' buttons */
+ iupdrvDisplayRedraw(ih);
+ }
+}
+
+static void winTreeAddRootNode(Ihandle* ih)
+{
+ TVITEM item;
+ TVINSERTSTRUCT tvins;
+ HTREEITEM hNewItem;
+ winTreeItemData* itemData;
+
+ itemData = calloc(1, sizeof(winTreeItemData));
+ itemData->image = -1;
+ itemData->image_expanded = -1;
+ itemData->kind = ITREE_BRANCH;
+
+ item.mask = TVIF_PARAM | TVIF_STATE | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ item.state = item.stateMask = TVIS_EXPANDED;
+ item.iSelectedImage = item.iImage = (int)ih->data->def_image_expanded;
+ item.lParam = (LPARAM)itemData;
+
+ iupwinGetColor(iupAttribGetStr(ih, "FGCOLOR"), &itemData->color);
+
+ /* Save the heading level in the node's application-defined data area */
+ tvins.item = item;
+ tvins.hInsertAfter = TVI_FIRST;
+ tvins.hParent = TVI_ROOT;
+
+ /* Add the node to the tree-view control */
+ hNewItem = (HTREEITEM)SendMessage(ih->handle, TVM_INSERTITEM, 0, (LPARAM)(LPTVINSERTSTRUCT)&tvins);
+
+ /* MarkStart node */
+ iupAttribSetStr(ih, "_IUPTREE_MARKSTART_NODE", (char*)hNewItem);
+
+ /* Set the default VALUE */
+ winTreeSetFocusNode(ih, hNewItem);
+}
+
+static int winTreeIsItemExpanded(Ihandle* ih, HTREEITEM hItem)
+{
+ TVITEM item;
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_STATE;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ return (item.state & TVIS_EXPANDED) != 0;
+}
+
+static void winTreeExpandItem(Ihandle* ih, HTREEITEM hItem, int expand)
+{
+ if (expand == -1)
+ expand = !winTreeIsItemExpanded(ih, hItem); /* toggle */
+
+ if (expand)
+ SendMessage(ih->handle, TVM_EXPAND, TVE_EXPAND, (LPARAM)hItem);
+ else
+ SendMessage(ih->handle, TVM_EXPAND, TVE_COLLAPSE, (LPARAM)hItem);
+}
+
+/*****************************************************************************/
+/* EXPANDING AND STORING ITEMS */
+/*****************************************************************************/
+static void winTreeExpandTree(Ihandle* ih, HTREEITEM hItem, int expand)
+{
+ HTREEITEM hItemChild;
+ while(hItem != NULL)
+ {
+ hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
+
+ /* Check whether we have child items */
+ if (hItemChild)
+ {
+ winTreeExpandItem(ih, hItem, expand);
+
+ /* Recursively traverse child items */
+ winTreeExpandTree(ih, hItemChild, expand);
+ }
+
+ /* Go to next sibling item */
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem);
+ }
+}
+
+/*****************************************************************************/
+/* SELECTING ITEMS */
+/*****************************************************************************/
+
+static int winTreeIsItemSelected(Ihandle* ih, HTREEITEM hItem)
+{
+ return ((SendMessage(ih->handle, TVM_GETITEMSTATE, (WPARAM)hItem, TVIS_SELECTED)) & TVIS_SELECTED)!=0;
+}
+
+static void winTreeSelectItem(Ihandle* ih, HTREEITEM hItem, int select)
+{
+ TV_ITEM item;
+ item.mask = TVIF_STATE | TVIF_HANDLE;
+ item.stateMask = TVIS_SELECTED;
+ item.hItem = hItem;
+
+ if (select == -1)
+ select = !winTreeIsItemSelected(ih, hItem);
+
+ item.state = select ? TVIS_SELECTED : 0;
+
+ SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)&item);
+}
+
+static HTREEITEM winTreeGetFocusNode(Ihandle* ih)
+{
+ return (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CARET, 0);
+}
+
+/* ------------Comment from wxWidgets--------------------
+ Helper function which tricks the standard control into changing the focused
+ item without changing anything else. */
+static void winTreeSetFocusNode(Ihandle* ih, HTREEITEM hItem)
+{
+ HTREEITEM hItemFocus = winTreeGetFocusNode(ih);
+ if (hItem != hItemFocus)
+ {
+ /* remember the selection state of the item */
+ int wasSelected = winTreeIsItemSelected(ih, hItem);
+ int wasFocusSelected = 0;
+
+ if (iupwinIsVista())
+ iupAttribSetStr(ih, "_IUPTREE_ALLOW_CHANGE", (char*)hItem); /* Vista Only */
+ else
+ wasFocusSelected = hItemFocus && winTreeIsItemSelected(ih, hItemFocus);
+
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", "1");
+
+ if (wasFocusSelected)
+ {
+ /* prevent the tree from unselecting the old focus which it would do by default */
+ SendMessage(ih->handle, TVM_SELECTITEM, TVGN_CARET, (LPARAM)NULL); /* remove the focus */
+ winTreeSelectItem(ih, hItemFocus, 1); /* select again */
+ }
+
+ SendMessage(ih->handle, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hItem); /* set focus, selection, and unselect the previous focus */
+
+ if (!wasSelected)
+ winTreeSelectItem(ih, hItem, 0); /* need to clear the selection if was not selected */
+
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", NULL);
+ iupAttribSetStr(ih, "_IUPTREE_ALLOW_CHANGE", NULL);
+ }
+}
+
+typedef struct _winTreeRange{
+ HTREEITEM hItem1, hItem2;
+ char inside, clear;
+}winTreeRange;
+
+static int winTreeSelectRangeFunc(Ihandle* ih, HTREEITEM hItem, winTreeRange* range)
+{
+ int end_range = 0;
+
+ if (range->inside == 0) /* detect the range start */
+ {
+ if (range->hItem1 == hItem) range->inside=1;
+ else if (range->hItem2 == hItem) range->inside=1;
+ }
+ else if (range->inside == 1) /* detect the range end */
+ {
+ if (range->hItem1 == hItem) end_range=1;
+ else if (range->hItem2 == hItem) end_range=1;
+ }
+
+ if (range->inside == 1) /* if inside, select */
+ winTreeSelectItem(ih, hItem, 1);
+ else if (range->clear) /* if outside and clear, unselect */
+ winTreeSelectItem(ih, hItem, 0);
+
+ if (end_range || (range->inside && range->hItem1==range->hItem2))
+ range->inside=-1; /* update after selecting the node */
+
+ return 1;
+}
+
+static void winTreeSelectRange(Ihandle* ih, HTREEITEM hItemFrom, HTREEITEM hItemTo, int clear)
+{
+ winTreeRange range;
+ range.hItem1 = hItemFrom;
+ range.hItem2 = hItemTo;
+ range.inside = 0;
+ range.clear = (char)clear;
+ winTreeForEach(ih, NULL, (winTreeNodeFunc)winTreeSelectRangeFunc, &range);
+}
+
+static void winTreeSelectAll(Ihandle* ih)
+{
+ HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0);
+ winTreeSelectRange(ih, hItemRoot, NULL, 0);
+}
+
+static void winTreeClearSelection(Ihandle* ih, HTREEITEM hItemExcept)
+{
+ winTreeSelectRange(ih, hItemExcept, hItemExcept, 1);
+}
+
+static int winTreeInvertSelectFunc(Ihandle* ih, HTREEITEM hItem, void* userdata)
+{
+ winTreeSelectItem(ih, hItem, -1);
+ (void)userdata;
+ return 1;
+}
+
+typedef struct _winTreeSelArray{
+ Iarray* markedArray;
+ char is_handle;
+ int id_control;
+}winTreeSelArray;
+
+static int winTreeSelectedArrayFunc(Ihandle* ih, HTREEITEM hItem, winTreeSelArray* selarray)
+{
+ selarray->id_control++;
+
+ if (winTreeIsItemSelected(ih, hItem))
+ {
+ if (selarray->is_handle)
+ {
+ HTREEITEM* hItemArrayData = (HTREEITEM*)iupArrayInc(selarray->markedArray);
+ int i = iupArrayCount(selarray->markedArray);
+ hItemArrayData[i-1] = hItem;
+ }
+ else
+ {
+ int* intArrayData = (int*)iupArrayInc(selarray->markedArray);
+ int i = iupArrayCount(selarray->markedArray);
+ intArrayData[i-1] = selarray->id_control;
+ }
+ }
+
+ return 1;
+}
+
+static Iarray* winTreeGetSelectedArray(Ihandle* ih)
+{
+ Iarray* markedArray = iupArrayCreate(1, sizeof(HTREEITEM));
+ winTreeSelArray selarray;
+ selarray.markedArray = markedArray;
+ selarray.id_control = -1;
+ selarray.is_handle = 1;
+
+ winTreeForEach(ih, NULL, (winTreeNodeFunc)winTreeSelectedArrayFunc, &selarray);
+
+ return markedArray;
+}
+
+static Iarray* winTreeGetSelectedArrayId(Ihandle* ih)
+{
+ Iarray* markedArray = iupArrayCreate(1, sizeof(int));
+ winTreeSelArray selarray;
+ selarray.markedArray = markedArray;
+ selarray.id_control = -1;
+ selarray.is_handle = 0;
+
+ winTreeForEach(ih, NULL, (winTreeNodeFunc)winTreeSelectedArrayFunc, &selarray);
+
+ return markedArray;
+}
+
+
+/*****************************************************************************/
+/* COPYING ITEMS (Branches and its children) */
+/*****************************************************************************/
+/* Insert the copied item in a new location. Returns the new item. */
+static HTREEITEM winTreeCopyItem(Ihandle* ih, HTREEITEM hItem, HTREEITEM hParent, HTREEITEM hPosition, int full_copy)
+{
+ TVITEM item;
+ TVINSERTSTRUCT tvins;
+ char* title = iupStrGetMemory(255);
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT | TVIF_STATE | TVIF_PARAM;
+ item.pszText = title;
+ item.cchTextMax = 255;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+
+ if (full_copy) /* during a full copy the userdata reference is not copied */
+ {
+ /* create a new one */
+ winTreeItemData* itemDataNew = malloc(sizeof(winTreeItemData));
+ memcpy(itemDataNew, (void*)item.lParam, sizeof(winTreeItemData));
+ itemDataNew->userdata = NULL;
+ item.lParam = (LPARAM)itemDataNew;
+ }
+
+ /* Copy everything including user data reference */
+ tvins.item = item;
+ tvins.hInsertAfter = hPosition;
+ tvins.hParent = hParent;
+
+ /* Add the node to the tree-view control */
+ return (HTREEITEM)SendMessage(ih->handle, TVM_INSERTITEM, 0, (LPARAM)(LPTVINSERTSTRUCT)&tvins);
+}
+
+static void winTreeCopyChildren(Ihandle* ih, HTREEITEM hItemSrc, HTREEITEM hItemDst, int full_copy)
+{
+ HTREEITEM hChildSrc = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItemSrc);
+ HTREEITEM hNewItem = TVI_FIRST;
+ while (hChildSrc != NULL)
+ {
+ hNewItem = winTreeCopyItem(ih, hChildSrc, hItemDst, hNewItem, full_copy); /* Use the same order they where enumerated */
+
+ /* Recursively transfer all the items */
+ winTreeCopyChildren(ih, hChildSrc, hNewItem, full_copy);
+
+ /* Go to next sibling item */
+ hChildSrc = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hChildSrc);
+ }
+}
+
+/* Copies all items in a branch to a new location. Returns the new branch node. */
+static HTREEITEM winTreeCopyNode(Ihandle* ih, HTREEITEM hItemSrc, HTREEITEM hItemDst, int full_copy)
+{
+ HTREEITEM hNewItem, hParent;
+ TVITEM item;
+ winTreeItemData* itemDataDst;
+
+ /* Get DST node attributes */
+ item.hItem = hItemDst;
+ item.mask = TVIF_HANDLE | TVIF_PARAM | TVIF_STATE;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemDataDst = (winTreeItemData*)item.lParam;
+
+ if (itemDataDst->kind == ITREE_BRANCH && (item.state & TVIS_EXPANDED))
+ {
+ /* copy as first child of expanded branch */
+ hParent = hItemDst;
+ hItemDst = TVI_FIRST;
+ }
+ else
+ {
+ /* copy as next brother of item or collapsed branch */
+ hParent = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItemDst);
+ }
+
+ hNewItem = winTreeCopyItem(ih, hItemSrc, hParent, hItemDst, full_copy);
+
+ winTreeCopyChildren(ih, hItemSrc, hNewItem, full_copy);
+
+ return hNewItem;
+}
+
+/*****************************************************************************/
+/* MANIPULATING IMAGES */
+/*****************************************************************************/
+static void winTreeUpdateImages(Ihandle* ih, HTREEITEM hItem, int mode)
+{
+ HTREEITEM hItemChild;
+ TVITEM item;
+ winTreeItemData* itemData;
+
+ /* called when one of the default images is changed */
+
+ while(hItem != NULL)
+ {
+ /* Get node attributes */
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_STATE;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ if (itemData->kind == ITREE_BRANCH)
+ {
+ if (item.state & TVIS_EXPANDED)
+ {
+ if (mode == ITREE_UPDATEIMAGE_EXPANDED)
+ {
+ item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ item.iSelectedImage = item.iImage = (itemData->image_expanded!=-1)? itemData->image_expanded: (int)ih->data->def_image_expanded;
+ SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ }
+ }
+ else
+ {
+ if (mode == ITREE_UPDATEIMAGE_COLLAPSED)
+ {
+ item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ item.iSelectedImage = item.iImage = (itemData->image!=-1)? itemData->image: (int)ih->data->def_image_collapsed;
+ SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ }
+ }
+
+ /* Recursively traverse child items */
+ hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
+ winTreeUpdateImages(ih, hItemChild, mode);
+ }
+ else
+ {
+ if (mode == ITREE_UPDATEIMAGE_LEAF)
+ {
+ item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ item.iSelectedImage = item.iImage = (itemData->image!=-1)? itemData->image: (int)ih->data->def_image_leaf;
+ SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ }
+ }
+
+ /* Go to next sibling node */
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem);
+ }
+}
+
+static int winTreeGetImageIndex(Ihandle* ih, const char* name)
+{
+ HIMAGELIST image_list;
+ int count, i;
+ Iarray* bmpArray;
+ HBITMAP *bmpArrayData;
+ HBITMAP bmp = iupImageGetImage(name, ih, 0);
+ if (!bmp)
+ return -1;
+
+ /* the array is used to avoi adding the same bitmap twice */
+ bmpArray = (Iarray*)iupAttribGet(ih, "_IUPWIN_BMPARRAY");
+ if (!bmpArray)
+ {
+ /* create the array if does not exist */
+ bmpArray = iupArrayCreate(50, sizeof(HBITMAP));
+ iupAttribSetStr(ih, "_IUPWIN_BMPARRAY", (char*)bmpArray);
+ }
+
+ bmpArrayData = iupArrayGetData(bmpArray);
+
+ image_list = (HIMAGELIST)SendMessage(ih->handle, TVM_GETIMAGELIST, TVSIL_NORMAL, 0);
+ if (!image_list)
+ {
+ int width, height;
+
+ /* must use this info, since image can be a driver image loaded from resources */
+ iupdrvImageGetInfo(bmp, &width, &height, NULL);
+
+ /* create the image list if does not exist */
+ image_list = ImageList_Create(width, height, ILC_COLOR32, 0, 50);
+ SendMessage(ih->handle, TVM_SETIMAGELIST, 0, (LPARAM)image_list);
+ }
+
+ /* check if that bitmap is already added to the list,
+ but we can not compare with the actual bitmap at the list since it is a copy */
+ count = ImageList_GetImageCount(image_list);
+ for (i = 0; i < count; i++)
+ {
+ if (bmpArrayData[i] == bmp)
+ return i;
+ }
+
+ bmpArrayData = iupArrayInc(bmpArray);
+ bmpArrayData[i] = bmp;
+ return ImageList_Add(image_list, bmp, NULL); /* the bmp is duplicated at the list */
+}
+
+
+/*****************************************************************************/
+/* CALLBACKS */
+/*****************************************************************************/
+
+static int winTreeCallBranchLeafCb(Ihandle* ih, HTREEITEM hItem)
+{
+ TVITEM item;
+ winTreeItemData* itemData;
+
+ /* Get Children: branch or leaf */
+ item.mask = TVIF_HANDLE|TVIF_PARAM|TVIF_STATE;
+ item.hItem = hItem;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ if (itemData->kind == ITREE_BRANCH)
+ {
+ if (item.state & TVIS_EXPANDED)
+ {
+ IFni cbBranchClose = (IFni)IupGetCallback(ih, "BRANCHCLOSE_CB");
+ if (cbBranchClose)
+ return cbBranchClose(ih, winTreeGetNodeId(ih, hItem));
+ }
+ else
+ {
+ IFni cbBranchOpen = (IFni)IupGetCallback(ih, "BRANCHOPEN_CB");
+ if (cbBranchOpen)
+ return cbBranchOpen(ih, winTreeGetNodeId(ih, hItem));
+ }
+ }
+ else
+ {
+ IFni cbExecuteLeaf = (IFni)IupGetCallback(ih, "EXECUTELEAF_CB");
+ if (cbExecuteLeaf)
+ return cbExecuteLeaf(ih, winTreeGetNodeId(ih, hItem));
+ }
+
+ return IUP_DEFAULT;
+}
+
+static void winTreeCallMultiSelectionCb(Ihandle* ih)
+{
+ IFnIi cbMulti = (IFnIi)IupGetCallback(ih, "MULTISELECTION_CB");
+ if(cbMulti)
+ {
+ Iarray* markedArray = winTreeGetSelectedArrayId(ih);
+ int* id_hitem = (int*)iupArrayGetData(markedArray);
+
+ cbMulti(ih, id_hitem, iupArrayCount(markedArray));
+
+ iupArrayDestroy(markedArray);
+ }
+ else
+ {
+ IFnii cbSelec = (IFnii)IupGetCallback(ih, "SELECTION_CB");
+ if (cbSelec)
+ {
+ Iarray* markedArray = winTreeGetSelectedArrayId(ih);
+ int* id_hitem = (int*)iupArrayGetData(markedArray);
+ int i, count = iupArrayCount(markedArray);
+
+ for (i=0; i<count; i++)
+ cbSelec(ih, id_hitem[i], 1);
+
+ iupArrayDestroy(markedArray);
+ }
+ }
+}
+
+static void winTreeCallSelectionCb(Ihandle* ih, int status, HTREEITEM hItem)
+{
+ IFnii cbSelec = (IFnii)IupGetCallback(ih, "SELECTION_CB");
+ if (cbSelec)
+ {
+ if (ih->data->mark_mode == ITREE_MARK_MULTIPLE && IupGetCallback(ih,"MULTISELECTION_CB"))
+ {
+ if ((GetKeyState(VK_SHIFT) & 0x8000))
+ return;
+ }
+
+ if (iupAttribGet(ih, "_IUPTREE_IGNORE_SELECTION_CB"))
+ return;
+
+ cbSelec(ih, winTreeGetNodeId(ih, hItem), status);
+ }
+}
+
+static int winTreeCallDragDropCb(Ihandle* ih, HTREEITEM hItemDrag, HTREEITEM hItemDrop, int *is_ctrl)
+{
+ IFniiii cbDragDrop = (IFniiii)IupGetCallback(ih, "DRAGDROP_CB");
+ int is_shift = 0;
+ if ((GetKeyState(VK_SHIFT) & 0x8000))
+ is_shift = 1;
+ if ((GetKeyState(VK_CONTROL) & 0x8000))
+ *is_ctrl = 1;
+ else
+ *is_ctrl = 0;
+
+ if (cbDragDrop)
+ {
+ int drag_id = winTreeGetNodeId(ih, hItemDrag);
+ int drop_id = winTreeGetNodeId(ih, hItemDrop);
+ return cbDragDrop(ih, drag_id, drop_id, is_shift, *is_ctrl);
+ }
+
+ return IUP_CONTINUE; /* allow to move by default if callback not defined */
+}
+
+
+/*****************************************************************************/
+/* GET AND SET ATTRIBUTES */
+/*****************************************************************************/
+
+
+static int winTreeSetImageBranchExpandedAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->def_image_expanded = (void*)winTreeGetImageIndex(ih, value);
+
+ /* Update all images, starting at root node */
+ winTreeUpdateImages(ih, (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0), ITREE_UPDATEIMAGE_EXPANDED);
+
+ return 1;
+}
+
+static int winTreeSetImageBranchCollapsedAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->def_image_collapsed = (void*)winTreeGetImageIndex(ih, value);
+
+ /* Update all images, starting at root node */
+ winTreeUpdateImages(ih, (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0), ITREE_UPDATEIMAGE_COLLAPSED);
+
+ return 1;
+}
+
+static int winTreeSetImageLeafAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->def_image_leaf = (void*)winTreeGetImageIndex(ih, value);
+
+ /* Update all images, starting at root node */
+ winTreeUpdateImages(ih, (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0), ITREE_UPDATEIMAGE_LEAF);
+
+ return 1;
+}
+
+static int winTreeSetImageExpandedAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ TVITEM item;
+ winTreeItemData* itemData;
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return 0;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_STATE;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+ itemData->image_expanded = (short)winTreeGetImageIndex(ih, value);
+
+ if (itemData->kind == ITREE_BRANCH && item.state & TVIS_EXPANDED)
+ {
+ if (itemData->image_expanded == -1)
+ item.iSelectedImage = item.iImage = (int)ih->data->def_image_expanded;
+ else
+ item.iSelectedImage = item.iImage = itemData->image_expanded;
+ item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(const LPTVITEM)&item);
+ }
+
+ return 1;
+}
+
+static int winTreeSetImageAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ TVITEM item;
+ winTreeItemData* itemData;
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return 0;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_STATE;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+ itemData->image = (short)winTreeGetImageIndex(ih, value);
+
+ if (itemData->kind == ITREE_BRANCH)
+ {
+ if (!(item.state & TVIS_EXPANDED))
+ {
+ if (itemData->image == -1)
+ item.iSelectedImage = item.iImage = (int)ih->data->def_image_collapsed;
+ else
+ item.iSelectedImage = item.iImage = itemData->image;
+
+ item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(const LPTVITEM)&item);
+ }
+ }
+ else
+ {
+ if (itemData->image == -1)
+ item.iSelectedImage = item.iImage = (int)ih->data->def_image_leaf;
+ else
+ item.iSelectedImage = item.iImage = itemData->image;
+
+ item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(const LPTVITEM)&item);
+ }
+
+ return 1;
+}
+
+static int winTreeSetTopItemAttrib(Ihandle* ih, const char* value)
+{
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, value);
+ if (hItem)
+ SendMessage(ih->handle, TVM_ENSUREVISIBLE, 0, (LPARAM)hItem);
+ return 0;
+}
+
+static int winTreeSetSpacingAttrib(Ihandle* ih, const char* value)
+{
+ if (!iupStrToInt(value, &ih->data->spacing))
+ ih->data->spacing = 1;
+
+ if(ih->data->spacing < 1)
+ ih->data->spacing = 1;
+
+ if (ih->handle)
+ {
+ int old_spacing = iupAttribGetInt(ih, "_IUPWIN_OLDSPACING");
+ int height = SendMessage(ih->handle, TVM_GETITEMHEIGHT, 0, 0);
+ height -= 2*old_spacing;
+ height += 2*ih->data->spacing;
+ SendMessage(ih->handle, TVM_SETITEMHEIGHT, height, 0);
+ iupAttribSetInt(ih, "_IUPWIN_OLDSPACING", ih->data->spacing);
+ return 0;
+ }
+ else
+ return 1; /* store until not mapped, when mapped will be set again */
+}
+
+static int winTreeSetExpandAllAttrib(Ihandle* ih, const char* value)
+{
+ HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0);
+ HTREEITEM hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItemRoot); /* skip the root node that is always expanded */
+ int expand = iupStrBoolean(value);
+ winTreeExpandTree(ih, hItem, expand);
+ return 0;
+}
+
+static int winTreeSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ if (iupStrToRGB(value, &r, &g, &b))
+ {
+ COLORREF cr = RGB(r,g,b);
+ SendMessage(ih->handle, TVM_SETBKCOLOR, 0, (LPARAM)cr);
+
+ /* update internal image cache */
+ iupTreeUpdateImages(ih);
+ }
+ return 0;
+}
+
+static char* winTreeGetBgColorAttrib(Ihandle* ih)
+{
+ COLORREF cr = (COLORREF)SendMessage(ih->handle, TVM_GETBKCOLOR, 0, 0);
+ if (cr == (COLORREF)-1)
+ return IupGetGlobal("TXTBGCOLOR");
+ else
+ {
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%d %d %d", (int)GetRValue(cr), (int)GetGValue(cr), (int)GetBValue(cr));
+ return str;
+ }
+}
+
+static void winTreeSetRenameCaretPos(HWND hEdit, const char* value)
+{
+ int pos = 1;
+
+ if (iupStrToInt(value, &pos))
+ {
+ if (pos < 1) pos = 1;
+ pos--; /* IUP starts at 1 */
+
+ SendMessage(hEdit, EM_SETSEL, (WPARAM)pos, (LPARAM)pos);
+ }
+}
+
+static void winTreeSetRenameSelectionPos(HWND hEdit, const char* value)
+{
+ int start = 1, end = 1;
+
+ if (iupStrToIntInt(value, &start, &end, ':') != 2)
+ return;
+
+ if(start < 1 || end < 1)
+ return;
+
+ start--; /* IUP starts at 1 */
+ end--;
+
+ SendMessage(hEdit, EM_SETSEL, (WPARAM)start, (LPARAM)end);
+}
+
+static char* winTreeGetTitle(Ihandle* ih, HTREEITEM hItem)
+{
+ TVITEM item;
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_TEXT;
+ item.pszText = iupStrGetMemory(255);
+ item.cchTextMax = 255;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ return item.pszText;
+}
+
+static char* winTreeGetTitleAttrib(Ihandle* ih, const char* name_id)
+{
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return NULL;
+ return winTreeGetTitle(ih, hItem);
+}
+
+static int winTreeSetTitleAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ TVITEM item;
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return 0;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_TEXT;
+ item.pszText = (char*)value;
+ SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(const LPTVITEM)&item);
+ return 0;
+}
+
+static char* winTreeGetFindUserDataAttrib(Ihandle* ih, const char* name_id)
+{
+ int id;
+ char* str = (char*)(name_id+1); /* skip ':' */
+ void* userdata = NULL;
+ if (sscanf(str, "%p", &userdata)!=1)
+ return NULL;
+ id = winTreeGetUserDataId(ih, userdata);
+ if (id == -1)
+ return NULL;
+ str = iupStrGetMemory(16);
+ sprintf(str, "%d", id);
+ return str;
+}
+
+static char* winTreeGetUserDataAttrib(Ihandle* ih, const char* name_id)
+{
+ TVITEM item;
+ winTreeItemData* itemData;
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return NULL;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ return itemData->userdata;
+}
+
+static int winTreeSetUserDataAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ TVITEM item;
+ winTreeItemData* itemData;
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return 0;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ itemData->userdata = (void*)value;
+
+ return 0;
+}
+
+static char* winTreeGetTitleFontAttrib(Ihandle* ih, const char* name_id)
+{
+ TVITEM item;
+ winTreeItemData* itemData;
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return NULL;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ return iupwinFindHFont(itemData->hFont);
+}
+
+static int winTreeSetTitleFontAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ TVITEM item;
+ winTreeItemData* itemData;
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return 0;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ if (value)
+ itemData->hFont = iupwinGetHFont(value);
+ else
+ itemData->hFont = NULL;
+
+ iupdrvDisplayUpdate(ih);
+
+ return 0;
+}
+
+static char* winTreeGetIndentationAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(255);
+ int indent = (int)SendMessage(ih->handle, TVM_GETINDENT, 0, 0);
+ sprintf(str, "%d", indent);
+ return str;
+}
+
+static int winTreeSetIndentationAttrib(Ihandle* ih, const char* value)
+{
+ int indent;
+ if (iupStrToInt(value, &indent))
+ SendMessage(ih->handle, TVM_SETINDENT, (WPARAM)indent, 0);
+ return 0;
+}
+
+static char* winTreeGetStateAttrib(Ihandle* ih, const char* name_id)
+{
+ TVITEM item;
+ winTreeItemData* itemData;
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return NULL;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE|TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ if (itemData->kind == ITREE_BRANCH)
+ {
+ if (winTreeIsItemExpanded(ih, hItem))
+ return "EXPANDED";
+ else
+ return "COLLAPSED";
+ }
+
+ return NULL;
+}
+
+static int winTreeSetStateAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return 0;
+
+ winTreeExpandItem(ih, hItem, iupStrEqualNoCase(value, "EXPANDED"));
+ return 0;
+}
+
+static char* winTreeGetDepthAttrib(Ihandle* ih, const char* name_id)
+{
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0);
+ int depth = 0;
+ char* str;
+
+ if (!hItem)
+ return NULL;
+
+ while((hItemRoot != hItem) && (hItem != NULL))
+ {
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItem);
+ depth++;
+ }
+
+ str = iupStrGetMemory(10);
+ sprintf(str, "%d", depth);
+ return str;
+}
+
+static int winTreeSetMoveNodeAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ HTREEITEM hItemDst, hParent, hItemSrc;
+
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ hItemSrc = winTreeFindNodeFromString(ih, name_id);
+ if (!hItemSrc)
+ return 0;
+ hItemDst = winTreeFindNodeFromString(ih, value);
+ if (!hItemDst)
+ return 0;
+
+ /* If Drag item is an ancestor of Drop item then return */
+ hParent = hItemDst;
+ while(hParent)
+ {
+ hParent = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hParent);
+ if (hParent == hItemSrc)
+ return 0;
+ }
+
+ /* Copying the node and its children to the new position */
+ winTreeCopyNode(ih, hItemSrc, hItemDst, 0); /* not a full copy, preserve user data */
+
+ /* do not delete the user data, we copy the references in CopyNode */
+ SendMessage(ih->handle, TVM_DELETEITEM, 0, (LPARAM)hItemSrc);
+
+ return 0;
+}
+
+static int winTreeSetCopyNodeAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ HTREEITEM hItemDst, hParent, hItemSrc;
+
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ hItemSrc = winTreeFindNodeFromString(ih, name_id);
+ if (!hItemSrc)
+ return 0;
+ hItemDst = winTreeFindNodeFromString(ih, value);
+ if (!hItemDst)
+ return 0;
+
+ /* If Drag item is an ancestor of Drop item then return */
+ hParent = hItemDst;
+ while(hParent)
+ {
+ hParent = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hParent);
+ if (hParent == hItemSrc)
+ return 0;
+ }
+
+ /* Copying the node and its children to the new position */
+ winTreeCopyNode(ih, hItemSrc, hItemDst, 1);
+
+ return 0;
+}
+
+static char* winTreeGetColorAttrib(Ihandle* ih, const char* name_id)
+{
+ unsigned char r, g, b;
+ char* str;
+ TVITEM item;
+ winTreeItemData* itemData;
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return NULL;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ r = GetRValue(itemData->color);
+ g = GetGValue(itemData->color);
+ b = GetBValue(itemData->color);
+
+ str = iupStrGetMemory(12);
+ sprintf(str, "%d %d %d", r, g, b);
+ return str;
+}
+
+static int winTreeSetColorAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ unsigned char r, g, b;
+ TVITEM item;
+ winTreeItemData* itemData;
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return 0;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ if (iupStrToRGB(value, &r, &g, &b))
+ {
+ itemData->color = RGB(r,g,b);
+ iupdrvDisplayUpdate(ih);
+ }
+
+ return 0;
+}
+
+static int winTreeSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+
+ if (iupStrToRGB(value, &r, &g, &b))
+ {
+ COLORREF color = RGB(r,g,b);
+ SendMessage(ih->handle, TVM_SETTEXTCOLOR, 0, (LPARAM)color);
+ }
+ else
+ SendMessage(ih->handle, TVM_SETTEXTCOLOR, 0, (LPARAM)CLR_DEFAULT);
+
+ return 0;
+}
+
+static char* winTreeGetChildCountAttrib(Ihandle* ih, const char* name_id)
+{
+ int count;
+ char* str;
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return NULL;
+
+ count = 0;
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
+ while(hItem != NULL)
+ {
+ count++;
+
+ /* Go to next sibling item */
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem);
+ }
+
+ str = iupStrGetMemory(10);
+ sprintf(str, "%d", count);
+ return str;
+}
+
+static char* winTreeGetCountAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(10);
+ sprintf(str, "%d", (int)SendMessage(ih->handle, TVM_GETCOUNT, 0, 0));
+ return str;
+}
+
+static char* winTreeGetKindAttrib(Ihandle* ih, const char* name_id)
+{
+ TVITEM item;
+ winTreeItemData* itemData;
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return NULL;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE|TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ if(itemData->kind == ITREE_BRANCH)
+ return "BRANCH";
+ else
+ return "LEAF";
+}
+
+static char* winTreeGetParentAttrib(Ihandle* ih, const char* name_id)
+{
+ char* str;
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return NULL;
+
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItem);
+ if (!hItem)
+ return NULL;
+
+ str = iupStrGetMemory(10);
+ sprintf(str, "%d", winTreeGetNodeId(ih, hItem));
+ return str;
+}
+
+static void winTreeDelNodeData(Ihandle* ih, HTREEITEM hItem)
+{
+ TVITEM item;
+ HTREEITEM hChildItem;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE|TVIF_PARAM;
+ if (SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item))
+ {
+ winTreeItemData* itemData = (winTreeItemData*)item.lParam;
+ if (itemData)
+ {
+ IFnis cb = (IFnis)IupGetCallback(ih, "NODEREMOVED_CB");
+ if (cb) cb(ih, winTreeGetNodeId(ih, hItem), (char*)itemData->userdata);
+ free(itemData);
+ item.lParam = (LPARAM)NULL;
+ SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ }
+ }
+
+ hChildItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
+ while (hChildItem)
+ {
+ winTreeDelNodeData(ih, hChildItem);
+ hChildItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hChildItem);
+ }
+}
+
+static int winTreeSetDelNodeAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+ if(iupStrEqualNoCase(value, "SELECTED")) /* selected here means the specified one */
+ {
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0);
+
+ /* the root node can't be deleted */
+ if(!hItem || hItem == hItemRoot)
+ return 0;
+
+ /* deleting the specified node (and it's children) */
+ winTreeDelNodeData(ih, hItem);
+ SendMessage(ih->handle, TVM_DELETEITEM, 0, (LPARAM)hItem);
+
+ return 0;
+ }
+ else if(iupStrEqualNoCase(value, "CHILDREN")) /* children of the specified one */
+ {
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ HTREEITEM hChildItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
+
+ if(!hItem)
+ return 0;
+
+ /* deleting the selected node's children */
+ while (hChildItem)
+ {
+ winTreeDelNodeData(ih, hChildItem);
+ SendMessage(ih->handle, TVM_DELETEITEM, 0, (LPARAM)hChildItem);
+ hChildItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
+ }
+
+ return 0;
+ }
+ else if(iupStrEqualNoCase(value, "MARKED"))
+ {
+ int i, count;
+ Iarray* markedArray;
+ HTREEITEM* hItemArrayData;
+ HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0);
+
+ /* Delete the array of marked nodes */
+ markedArray = winTreeGetSelectedArray(ih);
+ hItemArrayData = (HTREEITEM*)iupArrayGetData(markedArray);
+ count = iupArrayCount(markedArray);
+
+ for(i = 0; i < count; i++)
+ {
+ if (hItemArrayData[i] != hItemRoot) /* the root node can't be deleted */
+ {
+ winTreeDelNodeData(ih, hItemArrayData[i]);
+ SendMessage(ih->handle, TVM_DELETEITEM, 0, (LPARAM)hItemArrayData[i]);
+ }
+ }
+
+ iupArrayDestroy(markedArray);
+
+ return 0;
+ }
+
+ return 0;
+}
+
+static int winTreeSetRenameAttrib(Ihandle* ih, const char* value)
+{
+ HTREEITEM hItemFocus = winTreeGetFocusNode(ih);
+ if (ih->data->show_rename)
+ {
+ IFni cbShowRename = (IFni)IupGetCallback(ih, "SHOWRENAME_CB");
+ if (cbShowRename)
+ cbShowRename(ih, winTreeGetNodeId(ih, hItemFocus));
+
+ SetFocus(ih->handle); /* the tree must have focus to activate the edit */
+ SendMessage(ih->handle, TVM_EDITLABEL, 0, (LPARAM)hItemFocus);
+ }
+ else
+ {
+ IFnis cbRenameNode = (IFnis)IupGetCallback(ih, "RENAMENODE_CB");
+ if (cbRenameNode)
+ cbRenameNode(ih, winTreeGetNodeId(ih, hItemFocus), winTreeGetTitle(ih, hItemFocus));
+ }
+
+ (void)value;
+ return 0;
+}
+
+static char* winTreeGetMarkedAttrib(Ihandle* ih, const char* name_id)
+{
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return NULL;
+
+ if (winTreeIsItemSelected(ih, hItem))
+ return "YES";
+ else
+ return "NO";
+}
+
+static int winTreeSetMarkedAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return 0;
+
+ winTreeSelectItem(ih, hItem, iupStrBoolean(value));
+ return 0;
+}
+
+static int winTreeSetMarkStartAttrib(Ihandle* ih, const char* name_id)
+{
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id);
+ if (!hItem)
+ return 0;
+
+ iupAttribSetStr(ih, "_IUPTREE_MARKSTART_NODE", (char*)hItem);
+
+ return 1;
+}
+
+static char* winTreeGetValueAttrib(Ihandle* ih)
+{
+ char* str;
+ HTREEITEM hItemFocus = winTreeGetFocusNode(ih);
+ if (!hItemFocus)
+ return "0"; /* default VALUE is root */
+
+ str = iupStrGetMemory(16);
+ sprintf(str, "%d", winTreeGetNodeId(ih, hItemFocus));
+ return str;
+}
+
+static int winTreeSetMarkAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->mark_mode==ITREE_MARK_SINGLE)
+ return 0;
+
+ if(iupStrEqualNoCase(value, "BLOCK"))
+ {
+ HTREEITEM hItemFocus = winTreeGetFocusNode(ih);
+ winTreeSelectRange(ih, (HTREEITEM)iupAttribGet(ih, "_IUPTREE_MARKSTART_NODE"), hItemFocus, 0);
+ }
+ else if(iupStrEqualNoCase(value, "CLEARALL"))
+ winTreeClearSelection(ih, NULL);
+ else if(iupStrEqualNoCase(value, "MARKALL"))
+ winTreeSelectAll(ih);
+ else if(iupStrEqualNoCase(value, "INVERTALL")) /* INVERTALL *MUST* appear before INVERT, or else INVERTALL will never be called. */
+ winTreeForEach(ih, NULL, (winTreeNodeFunc)winTreeInvertSelectFunc, NULL);
+ else if(iupStrEqualPartial(value, "INVERT")) /* iupStrEqualPartial allows the use of "INVERTid" form */
+ {
+ HTREEITEM hItem = winTreeFindNodeFromString(ih, &value[strlen("INVERT")]);
+ if (!hItem)
+ return 0;
+
+ winTreeSelectItem(ih, hItem, -1); /* toggle */
+ }
+ else
+ {
+ HTREEITEM hItem1, hItem2;
+
+ char str1[50], str2[50];
+ if (iupStrToStrStr(value, str1, str2, '-')!=2)
+ return 0;
+
+ hItem1 = winTreeFindNodeFromString(ih, str1);
+ if (!hItem1)
+ return 0;
+ hItem2 = winTreeFindNodeFromString(ih, str2);
+ if (!hItem2)
+ return 0;
+
+ winTreeSelectRange(ih, hItem1, hItem2, 0);
+ }
+
+ return 1;
+}
+
+static int winTreeSetValueAttrib(Ihandle* ih, const char* value)
+{
+ HTREEITEM hItem = NULL;
+ HTREEITEM hItemFocus;
+
+ if (winTreeSetMarkAttrib(ih, value))
+ return 0;
+
+ hItemFocus = winTreeGetFocusNode(ih);
+
+ if(iupStrEqualNoCase(value, "ROOT"))
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0);
+ else if(iupStrEqualNoCase(value, "LAST"))
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_LASTVISIBLE, 0);
+ else if(iupStrEqualNoCase(value, "PGUP"))
+ {
+ int i;
+ HTREEITEM hItemPrev = hItemFocus;
+ HTREEITEM hItemNext = hItemFocus;
+ for(i = 0; i < 10; i++)
+ {
+ hItemNext = hItemPrev;
+ hItemPrev = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItemPrev);
+ if(hItemPrev == NULL)
+ {
+ hItemPrev = hItemNext;
+ break;
+ }
+ }
+
+ hItem = hItemPrev;
+ }
+ else if(iupStrEqualNoCase(value, "PGDN"))
+ {
+ int i;
+ HTREEITEM hItemPrev = hItemFocus;
+ HTREEITEM hItemNext = hItemFocus;
+
+ for(i = 0; i < 10; i++)
+ {
+ hItemPrev = hItemNext;
+ hItemNext = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItemNext);
+ if(hItemNext == NULL)
+ {
+ hItemNext = hItemPrev;
+ break;
+ }
+ }
+
+ hItem = hItemNext;
+ }
+ else if(iupStrEqualNoCase(value, "NEXT"))
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItemFocus);
+ else if(iupStrEqualNoCase(value, "PREVIOUS"))
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItemFocus);
+ else
+ hItem = winTreeFindNodeFromString(ih, value);
+
+ if (hItem)
+ {
+ if (ih->data->mark_mode==ITREE_MARK_SINGLE)
+ {
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", "1");
+ winTreeSelectItem(ih, hItem, 1);
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", NULL);
+ }
+ winTreeSetFocusNode(ih, hItem);
+ }
+
+ return 0;
+}
+
+void iupdrvTreeUpdateMarkMode(Ihandle *ih)
+{
+ /* does nothing, must handle single and multiple selection manually in Windows */
+ (void)ih;
+}
+
+/*********************************************************************************************************/
+
+
+static int winTreeEditProc(Ihandle* ih, HWND cbedit, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ switch (msg)
+ {
+ case WM_GETDLGCODE:
+ {
+ MSG* pMsg = (MSG*)lp;
+
+ if (pMsg && (pMsg->message == WM_KEYDOWN || pMsg->message == WM_SYSKEYDOWN))
+ {
+ if (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN)
+ {
+ /* these keys are not processed if the return code is not this */
+ *result = DLGC_WANTALLKEYS;
+ return 1;
+ }
+ }
+ }
+ }
+
+ (void)wp;
+ (void)cbedit;
+ (void)ih;
+ return 0;
+}
+
+static LRESULT CALLBACK winTreeEditWinProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
+{
+ int ret = 0;
+ LRESULT result = 0;
+ WNDPROC oldProc;
+ Ihandle *ih;
+
+ ih = iupwinHandleGet(hwnd);
+ if (!ih)
+ return DefWindowProc(hwnd, msg, wp, lp); /* should never happen */
+
+ /* retrieve the control previous procedure for subclassing */
+ oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_EDITOLDPROC_CB");
+
+ ret = winTreeEditProc(ih, hwnd, msg, wp, lp, &result);
+
+ if (ret)
+ return result;
+ else
+ return CallWindowProc(oldProc, hwnd, msg, wp, lp);
+}
+
+static void winTreeDrag(Ihandle* ih, int x, int y)
+{
+ HTREEITEM hItemDrop;
+
+ HIMAGELIST dragImageList = (HIMAGELIST)iupAttribGet(ih, "_IUPTREE_DRAGIMAGELIST");
+ if (dragImageList)
+ {
+ POINT pnt;
+ pnt.x = x;
+ pnt.y = y;
+ GetCursorPos(&pnt);
+ ClientToScreen(GetDesktopWindow(), &pnt) ;
+ ImageList_DragMove(pnt.x, pnt.y);
+ }
+
+ if ((hItemDrop = winTreeFindNodePointed(ih)) != NULL)
+ {
+ if(dragImageList)
+ ImageList_DragShowNolock(FALSE);
+
+ SendMessage(ih->handle, TVM_SELECTITEM, TVGN_DROPHILITE, (LPARAM)hItemDrop);
+
+ /* store the drop item to be executed */
+ iupAttribSetStr(ih, "_IUPTREE_DROPITEM", (char*)hItemDrop);
+
+ if(dragImageList)
+ ImageList_DragShowNolock(TRUE);
+ }
+}
+
+static void winTreeDrop(Ihandle* ih)
+{
+ HTREEITEM hItemDrag = (HTREEITEM)iupAttribGet(ih, "_IUPTREE_DRAGITEM");
+ HTREEITEM hItemDrop = (HTREEITEM)iupAttribGet(ih, "_IUPTREE_DROPITEM");
+ HIMAGELIST dragImageList = (HIMAGELIST)iupAttribGet(ih, "_IUPTREE_DRAGIMAGELIST");
+ HTREEITEM hParent;
+ int is_ctrl;
+
+ if (dragImageList)
+ {
+ ImageList_DragLeave(ih->handle);
+ ImageList_EndDrag();
+ ImageList_Destroy(dragImageList);
+ iupAttribSetStr(ih, "_IUPTREE_DRAGIMAGELIST", NULL);
+ }
+
+ ReleaseCapture();
+ ShowCursor(TRUE);
+
+ /* Remove drop target highlighting */
+ SendMessage(ih->handle, TVM_SELECTITEM, TVGN_DROPHILITE, (LPARAM)NULL);
+
+ iupAttribSetStr(ih, "_IUPTREE_DRAGITEM", NULL);
+ iupAttribSetStr(ih, "_IUPTREE_DROPITEM", NULL);
+
+ if (!hItemDrop || hItemDrag == hItemDrop)
+ return;
+
+ /* If Drag item is an ancestor of Drop item then return */
+ hParent = hItemDrop;
+ while(hParent)
+ {
+ hParent = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hParent);
+ if (hParent == hItemDrag)
+ return;
+ }
+
+ if (winTreeCallDragDropCb(ih, hItemDrag, hItemDrop, &is_ctrl) == IUP_CONTINUE)
+ {
+ /* Copy the dragged item to the new position. */
+ HTREEITEM hItemNew = winTreeCopyNode(ih, hItemDrag, hItemDrop, is_ctrl);
+
+ if (!is_ctrl)
+ {
+ /* do not delete the user data, we copy the references in CopyNode */
+ SendMessage(ih->handle, TVM_DELETEITEM, 0, (LPARAM)hItemDrag);
+ }
+
+ SendMessage(ih->handle, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hItemNew); /* set focus and selection */
+ }
+}
+
+static void winTreeExtendSelect(Ihandle* ih, int x, int y)
+{
+ HTREEITEM hItemFirstSel;
+ TVHITTESTINFO info;
+ HTREEITEM hItem;
+ info.pt.x = x;
+ info.pt.y = y;
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_HITTEST, 0, (LPARAM)&info);
+
+ if (!(info.flags & TVHT_ONITEM) || !hItem)
+ return;
+
+ hItemFirstSel = (HTREEITEM)iupAttribGet(ih, "_IUPTREE_FIRSTSELITEM");
+ if (hItemFirstSel)
+ {
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", "1");
+ winTreeSelectRange(ih, hItemFirstSel, hItem, 1);
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", NULL);
+
+ iupAttribSetStr(ih, "_IUPTREE_LASTSELITEM", (char*)hItem);
+ winTreeSetFocusNode(ih, hItem);
+ }
+}
+
+static int winTreeMouseMultiSelect(Ihandle* ih, int x, int y)
+{
+ TVHITTESTINFO info;
+ HTREEITEM hItem;
+ info.pt.x = x;
+ info.pt.y = y;
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_HITTEST, 0, (LPARAM)&info);
+
+ if (!(info.flags & TVHT_ONITEM) || !hItem)
+ return 0;
+
+ if (GetKeyState(VK_CONTROL) & 0x8000) /* Control key is down */
+ {
+ /* Toggle selection state */
+ winTreeSelectItem(ih, hItem, -1);
+ iupAttribSetStr(ih, "_IUPTREE_FIRSTSELITEM", (char*)hItem);
+
+ winTreeCallSelectionCb(ih, winTreeIsItemSelected(ih, hItem), hItem);
+ winTreeSetFocusNode(ih, hItem);
+
+ return 1;
+ }
+ else if (GetKeyState(VK_SHIFT) & 0x8000) /* Shift key is down */
+ {
+ HTREEITEM hItemFirstSel = (HTREEITEM)iupAttribGet(ih, "_IUPTREE_FIRSTSELITEM");
+ if (hItemFirstSel)
+ {
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", "1");
+ winTreeSelectRange(ih, hItemFirstSel, hItem, 1);
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", NULL);
+
+ winTreeCallMultiSelectionCb(ih);
+ winTreeSetFocusNode(ih, hItem);
+ return 1;
+ }
+ }
+
+ /* simple click */
+ winTreeClearSelection(ih, hItem);
+ iupAttribSetStr(ih, "_IUPTREE_FIRSTSELITEM", (char*)hItem);
+ iupAttribSetStr(ih, "_IUPTREE_EXTENDSELECT", "1");
+
+ return 0;
+}
+
+static int winTreeProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ switch (msg)
+ {
+ case WM_CTLCOLOREDIT:
+ {
+ HWND hEdit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX");
+ if (hEdit)
+ {
+ winTreeItemData* itemData = (winTreeItemData*)iupAttribGet(ih, "_IUPWIN_EDIT_DATA");
+ HDC hDC = (HDC)wp;
+ COLORREF cr;
+
+ SetTextColor(hDC, itemData->color);
+
+ cr = (COLORREF)SendMessage(ih->handle, TVM_GETBKCOLOR, 0, 0);
+ SetBkColor(hDC, cr);
+ SetDCBrushColor(hDC, cr);
+ *result = (LRESULT)GetStockObject(DC_BRUSH);
+ return 1;
+ }
+
+ break;
+ }
+ case WM_SETFOCUS:
+ case WM_KILLFOCUS:
+ {
+ /* ------------Comment from wxWidgets--------------------
+ the tree control greys out the selected item when it loses focus and
+ paints it as selected again when it regains it, but it won't do it
+ for the other items itself - help it */
+ if (ih->data->mark_mode == ITREE_MARK_MULTIPLE)
+ {
+ HTREEITEM hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_FIRSTVISIBLE, 0);
+ RECT rect;
+
+ while(hItemChild != NULL)
+ {
+ *(HTREEITEM*)&rect = hItemChild;
+ if (SendMessage(ih->handle, TVM_GETITEMRECT, TRUE, (LPARAM)&rect))
+ InvalidateRect(ih->handle, &rect, FALSE);
+
+ /* Go to next visible item */
+ hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItemChild);
+ }
+ }
+ break;
+ }
+ case WM_KEYDOWN:
+ case WM_SYSKEYDOWN:
+ {
+ if (iupwinBaseProc(ih, msg, wp, lp, result)==1)
+ return 1;
+
+ if (wp == VK_RETURN)
+ {
+ HTREEITEM hItemFocus = winTreeGetFocusNode(ih);
+ if (winTreeCallBranchLeafCb(ih, hItemFocus) != IUP_IGNORE)
+ winTreeExpandItem(ih, hItemFocus, -1);
+
+ *result = 0;
+ return 1;
+ }
+ else if (wp == VK_F2)
+ {
+ winTreeSetRenameAttrib(ih, NULL);
+ *result = 0;
+ return 1;
+ }
+ else if (wp == VK_SPACE)
+ {
+ if (GetKeyState(VK_CONTROL) & 0x8000)
+ {
+ HTREEITEM hItemFocus = winTreeGetFocusNode(ih);
+ /* Toggle selection state */
+ winTreeSelectItem(ih, hItemFocus, -1);
+ }
+ }
+ else if (wp == VK_UP || wp == VK_DOWN)
+ {
+ HTREEITEM hItemFocus = winTreeGetFocusNode(ih);
+ if (wp == VK_UP)
+ hItemFocus = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItemFocus);
+ else
+ hItemFocus = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItemFocus);
+ if (!hItemFocus)
+ return 0;
+
+ if (GetKeyState(VK_CONTROL) & 0x8000)
+ {
+ /* Only move focus */
+ winTreeSetFocusNode(ih, hItemFocus);
+
+ *result = 0;
+ return 1;
+ }
+ else if (GetKeyState(VK_SHIFT) & 0x8000)
+ {
+ HTREEITEM hItemFirstSel = (HTREEITEM)iupAttribGet(ih, "_IUPTREE_FIRSTSELITEM");
+ if (hItemFirstSel)
+ {
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", "1");
+ winTreeSelectRange(ih, hItemFirstSel, hItemFocus, 1);
+ iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", NULL);
+
+ winTreeCallMultiSelectionCb(ih);
+ winTreeSetFocusNode(ih, hItemFocus);
+
+ *result = 0;
+ return 1;
+ }
+ }
+
+ if (ih->data->mark_mode==ITREE_MARK_MULTIPLE)
+ {
+ iupAttribSetStr(ih, "_IUPTREE_FIRSTSELITEM", (char*)hItemFocus);
+ winTreeClearSelection(ih, NULL);
+ /* normal processing will select the focus item */
+ }
+ }
+
+ return 0;
+ }
+ case WM_LBUTTONDOWN:
+ if (iupwinButtonDown(ih, msg, wp, lp)==-1)
+ {
+ *result = 0;
+ return 1;
+ }
+
+ if (ih->data->mark_mode==ITREE_MARK_MULTIPLE)
+ {
+ /* must set focus on left button down or the tree won't show its focus */
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ SetFocus(ih->handle);
+
+ if (winTreeMouseMultiSelect(ih, (int)(short)LOWORD(lp), (int)(short)HIWORD(lp)))
+ {
+ *result = 0; /* abort the normal processing if we process multiple selection */
+ return 1;
+ }
+ }
+ break;
+ case WM_MBUTTONDOWN:
+ case WM_RBUTTONDOWN:
+ case WM_LBUTTONDBLCLK:
+ case WM_MBUTTONDBLCLK:
+ case WM_RBUTTONDBLCLK:
+ if (iupwinButtonDown(ih, msg, wp, lp)==-1)
+ {
+ *result = 0;
+ return 1;
+ }
+ break;
+ case WM_MOUSEMOVE:
+ if (ih->data->show_dragdrop && (HTREEITEM)iupAttribGet(ih, "_IUPTREE_DRAGITEM") != NULL)
+ winTreeDrag(ih, (int)(short)LOWORD(lp), (int)(short)HIWORD(lp));
+ else if (iupAttribGet(ih, "_IUPTREE_EXTENDSELECT"))
+ winTreeExtendSelect(ih, (int)(short)LOWORD(lp), (int)(short)HIWORD(lp));
+
+ iupwinMouseMove(ih, msg, wp, lp);
+ break;
+ case WM_LBUTTONUP:
+ case WM_MBUTTONUP:
+ case WM_RBUTTONUP:
+ if (iupwinButtonUp(ih, msg, wp, lp)==-1)
+ {
+ *result = 0;
+ return 1;
+ }
+
+ if (iupAttribGet(ih, "_IUPTREE_EXTENDSELECT"))
+ {
+ iupAttribSetStr(ih, "_IUPTREE_EXTENDSELECT", NULL);
+ if (iupAttribGet(ih, "_IUPTREE_LASTSELITEM"))
+ {
+ winTreeCallMultiSelectionCb(ih);
+ iupAttribSetStr(ih, "_IUPTREE_LASTSELITEM", NULL);
+ }
+ }
+
+ if (ih->data->show_dragdrop && (HTREEITEM)iupAttribGet(ih, "_IUPTREE_DRAGITEM") != NULL)
+ winTreeDrop(ih);
+
+ break;
+ case WM_CHAR:
+ {
+ if (wp==VK_TAB) /* the keys have the same definitions as the chars */
+ {
+ *result = 0;
+ return 1; /* abort default processing to avoid beep */
+ }
+ break;
+ }
+ }
+
+ return iupwinBaseProc(ih, msg, wp, lp, result);
+}
+
+static COLORREF winTreeInvertColor(COLORREF color)
+{
+ return RGB(~GetRValue(color), ~GetGValue(color), ~GetBValue(color));
+}
+
+static int winTreeWmNotify(Ihandle* ih, NMHDR* msg_info, int *result)
+{
+ if (msg_info->code == TVN_ITEMCHANGINGA || msg_info->code == TVN_ITEMCHANGINGW) /* Vista Only */
+ {
+ if (ih->data->mark_mode==ITREE_MARK_MULTIPLE)
+ {
+ NMTVITEMCHANGE* info = (NMTVITEMCHANGE*)msg_info;
+ HTREEITEM hItem = (HTREEITEM)iupAttribGet(ih, "_IUPTREE_ALLOW_CHANGE");
+ if (hItem && hItem != info->hItem) /* Workaround for Vista SetFocus */
+ {
+ *result = TRUE; /* prevent the change */
+ return 1;
+ }
+ }
+ }
+ else if (msg_info->code == TVN_SELCHANGED)
+ {
+ NMTREEVIEW* info = (NMTREEVIEW*)msg_info;
+ winTreeCallSelectionCb(ih, 0, info->itemOld.hItem); /* node unselected */
+ winTreeCallSelectionCb(ih, 1, info->itemNew.hItem); /* node selected */
+ }
+ else if(msg_info->code == TVN_BEGINLABELEDIT)
+ {
+ char* value;
+ HWND hEdit;
+ NMTVDISPINFO* info = (NMTVDISPINFO*)msg_info;
+
+ if (iupAttribGet(ih, "_IUPTREE_EXTENDSELECT"))
+ {
+ *result = TRUE; /* prevent the change */
+ return 1;
+ }
+
+ hEdit = (HWND)SendMessage(ih->handle, TVM_GETEDITCONTROL, 0, 0);
+
+ /* save the edit box. */
+ iupwinHandleAdd(ih, hEdit);
+ iupAttribSetStr(ih, "_IUPWIN_EDITBOX", (char*)hEdit);
+
+ /* subclass the edit box. */
+ IupSetCallback(ih, "_IUPWIN_EDITOLDPROC_CB", (Icallback)GetWindowLongPtr(hEdit, GWLP_WNDPROC));
+ SetWindowLongPtr(hEdit, GWLP_WNDPROC, (LONG_PTR)winTreeEditWinProc);
+
+ value = iupAttribGetStr(ih, "RENAMECARET");
+ if (value)
+ winTreeSetRenameCaretPos(hEdit, value);
+
+ value = iupAttribGetStr(ih, "RENAMESELECTION");
+ if (value)
+ winTreeSetRenameSelectionPos(hEdit, value);
+
+ {
+ winTreeItemData* itemData;
+ TVITEM item;
+ item.hItem = info->item.hItem;
+ item.mask = TVIF_HANDLE | TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+ iupAttribSetStr(ih, "_IUPWIN_EDIT_DATA", (char*)itemData);
+
+ if (itemData->hFont)
+ SendMessage(hEdit, WM_SETFONT, (WPARAM)itemData->hFont, MAKELPARAM(TRUE,0));
+ }
+ }
+ else if(msg_info->code == TVN_ENDLABELEDIT)
+ {
+ NMTVDISPINFO* info = (NMTVDISPINFO*)msg_info;
+
+ iupAttribSetStr(ih, "_IUPWIN_EDITBOX", NULL);
+
+ if (info->item.pszText)
+ {
+ IFnis cbRename = (IFnis)IupGetCallback(ih, "RENAME_CB");
+ if (cbRename)
+ {
+ if (cbRename(ih, winTreeGetNodeId(ih, info->item.hItem), info->item.pszText) == IUP_IGNORE)
+ {
+ *result = FALSE;
+ return 1;
+ }
+ }
+
+ *result = TRUE;
+ return 1;
+ }
+ }
+ else if(msg_info->code == TVN_BEGINDRAG)
+ {
+ if (ih->data->show_dragdrop)
+ {
+ NMTREEVIEW* pNMTreeView = (NMTREEVIEW*)msg_info;
+ HTREEITEM hItemDrag = pNMTreeView->itemNew.hItem;
+ HIMAGELIST dragImageList;
+
+ /* store the drag-and-drop item */
+ iupAttribSetStr(ih, "_IUPTREE_DRAGITEM", (char*)hItemDrag);
+
+ /* get the image list for dragging */
+ dragImageList = (HIMAGELIST)SendMessage(ih->handle, TVM_CREATEDRAGIMAGE, 0, (LPARAM)hItemDrag);
+ if (dragImageList)
+ {
+ POINT pt = pNMTreeView->ptDrag;
+ ImageList_BeginDrag(dragImageList, 0, 0, 0);
+
+ ClientToScreen(ih->handle, &pt);
+ ImageList_DragEnter(NULL, pt.x, pt.y);
+
+ iupAttribSetStr(ih, "_IUPTREE_DRAGIMAGELIST", (char*)dragImageList);
+ }
+
+ ShowCursor(FALSE);
+ SetCapture(ih->handle); /* drag only inside the tree */
+ }
+ }
+ else if(msg_info->code == NM_DBLCLK)
+ {
+ HTREEITEM hItemFocus = winTreeGetFocusNode(ih);
+ TVITEM item;
+ winTreeItemData* itemData;
+
+ /* Get Children: branch or leaf */
+ item.mask = TVIF_HANDLE|TVIF_PARAM;
+ item.hItem = hItemFocus;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ if (itemData->kind == ITREE_LEAF)
+ {
+ IFni cbExecuteLeaf = (IFni)IupGetCallback(ih, "EXECUTELEAF_CB");
+ if(cbExecuteLeaf)
+ cbExecuteLeaf(ih, winTreeGetNodeId(ih, hItemFocus));
+ }
+ }
+ else if(msg_info->code == TVN_ITEMEXPANDING)
+ {
+ /* mouse click by user: click on the "+" sign or double click on the selected node */
+ NMTREEVIEW* tree_info = (NMTREEVIEW*)msg_info;
+ HTREEITEM hItem = tree_info->itemNew.hItem;
+
+ if (winTreeCallBranchLeafCb(ih, hItem) != IUP_IGNORE)
+ {
+ TVITEM item;
+ winTreeItemData* itemData = (winTreeItemData*)tree_info->itemNew.lParam;
+
+ if (tree_info->action == TVE_EXPAND)
+ item.iSelectedImage = item.iImage = (itemData->image_expanded!=-1)? itemData->image_expanded: (int)ih->data->def_image_expanded;
+ else
+ item.iSelectedImage = item.iImage = (itemData->image!=-1)? itemData->image: (int)ih->data->def_image_collapsed;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ }
+ else
+ {
+ *result = TRUE; /* prevent the change */
+ return 1;
+ }
+ }
+ else if(msg_info->code == NM_RCLICK)
+ {
+ HTREEITEM hItem = winTreeFindNodePointed(ih);
+ IFni cbRightClick = (IFni)IupGetCallback(ih, "RIGHTCLICK_CB");
+ if (cbRightClick)
+ cbRightClick(ih, winTreeGetNodeId(ih, hItem));
+ }
+ else if (msg_info->code == NM_CUSTOMDRAW)
+ {
+ NMTVCUSTOMDRAW *customdraw = (NMTVCUSTOMDRAW*)msg_info;
+
+ if (customdraw->nmcd.dwDrawStage == CDDS_PREPAINT)
+ {
+ *result = CDRF_NOTIFYPOSTPAINT|CDRF_NOTIFYITEMDRAW;
+ return 1;
+ }
+
+ if (customdraw->nmcd.dwDrawStage == CDDS_ITEMPREPAINT)
+ {
+ TVITEM item;
+ winTreeItemData* itemData;
+ HTREEITEM hItem = (HTREEITEM)customdraw->nmcd.dwItemSpec;
+
+ item.hItem = hItem;
+ item.mask = TVIF_HANDLE | TVIF_PARAM;
+ SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item);
+ itemData = (winTreeItemData*)item.lParam;
+
+ if (winTreeIsItemSelected(ih, hItem))
+ customdraw->clrText = winTreeInvertColor(itemData->color);
+ else
+ customdraw->clrText = itemData->color;
+
+ *result = CDRF_NOTIFYSUBITEMDRAW|CDRF_NOTIFYPOSTPAINT;
+
+ if (itemData->hFont)
+ {
+ SelectObject(customdraw->nmcd.hdc, itemData->hFont);
+ *result |= CDRF_NEWFONT;
+ }
+
+ return 1;
+ }
+ }
+
+ return 0; /* allow the default processsing */
+}
+
+static int winTreeConvertXYToPos(Ihandle* ih, int x, int y)
+{
+ TVHITTESTINFO info;
+ HTREEITEM hItem;
+ info.pt.x = x;
+ info.pt.y = y;
+ hItem = (HTREEITEM)SendMessage(ih->handle, TVM_HITTEST, 0, (LPARAM)&info);
+ if (hItem)
+ return winTreeGetNodeId(ih, hItem);
+ return -1;
+}
+
+
+/*******************************************************************************************/
+
+static void winTreeUnMapMethod(Ihandle* ih)
+{
+ Iarray* bmp_array;
+ HIMAGELIST image_list;
+
+ HTREEITEM itemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0);
+ winTreeDelNodeData(ih, itemRoot);
+
+ image_list = (HIMAGELIST)SendMessage(ih->handle, TVM_GETIMAGELIST, TVSIL_NORMAL, 0);
+ if (image_list)
+ ImageList_Destroy(image_list);
+
+ bmp_array = (Iarray*)iupAttribGet(ih, "_IUPWIN_BMPARRAY");
+ if (bmp_array)
+ iupArrayDestroy(bmp_array);
+
+ iupdrvBaseUnMapMethod(ih);
+}
+
+static int winTreeMapMethod(Ihandle* ih)
+{
+ DWORD dwStyle = WS_CHILD | WS_BORDER | TVS_SHOWSELALWAYS;
+
+ /* can be set only on the Tree View creation */
+
+ if (!ih->data->show_dragdrop)
+ dwStyle |= TVS_DISABLEDRAGDROP;
+
+ if (ih->data->show_rename)
+ dwStyle |= TVS_EDITLABELS;
+
+ if (!iupAttribGetBoolean(ih, "HIDELINES"))
+ dwStyle |= TVS_HASLINES;
+
+ if (!iupAttribGetBoolean(ih, "HIDEBUTTONS"))
+ dwStyle |= TVS_HASBUTTONS;
+
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ dwStyle |= WS_TABSTOP;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ if (!iupwinCreateWindowEx(ih, WC_TREEVIEW, 0, dwStyle))
+ return IUP_ERROR;
+
+ IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winTreeProc);
+ IupSetCallback(ih, "_IUPWIN_NOTIFY_CB", (Icallback)winTreeWmNotify);
+
+ /* Force background update before setting the images */
+ {
+ char* value = iupAttribGet(ih, "BGCOLOR");
+ if (value)
+ {
+ winTreeSetBgColorAttrib(ih, value);
+ iupAttribSetStr(ih, "BGCOLOR", NULL);
+ }
+ else if (iupwinGetSystemMajorVersion()<6) /* force background in XP because of the editbox background */
+ winTreeSetBgColorAttrib(ih, IupGetGlobal("TXTBGCOLOR"));
+ }
+
+ /* Initialize the default images */
+ ih->data->def_image_leaf = (void*)winTreeGetImageIndex(ih, "IMGLEAF");
+ ih->data->def_image_collapsed = (void*)winTreeGetImageIndex(ih, "IMGCOLLAPSED");
+ ih->data->def_image_expanded = (void*)winTreeGetImageIndex(ih, "IMGEXPANDED");
+
+ /* Add the Root Node */
+ winTreeAddRootNode(ih);
+
+ /* configure for DRAG&DROP of files */
+ if (IupGetCallback(ih, "DROPFILES_CB"))
+ iupAttribSetStr(ih, "DRAGDROP", "YES");
+
+ IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)winTreeConvertXYToPos);
+
+ return IUP_NOERROR;
+}
+
+void iupdrvTreeInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = winTreeMapMethod;
+ ic->UnMap = winTreeUnMapMethod;
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", winTreeGetBgColorAttrib, winTreeSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, winTreeSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT);
+
+ /* IupTree Attributes - GENERAL */
+ iupClassRegisterAttribute(ic, "EXPANDALL", NULL, winTreeSetExpandAllAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "INDENTATION", winTreeGetIndentationAttrib, winTreeSetIndentationAttrib, NULL, NULL, IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "COUNT", winTreeGetCountAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupwinSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SPACING", iupTreeGetSpacingAttrib, winTreeSetSpacingAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "TOPITEM", NULL, winTreeSetTopItemAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+
+ /* IupTree Attributes - IMAGES */
+ iupClassRegisterAttributeId(ic, "IMAGE", NULL, winTreeSetImageAttrib, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "IMAGEEXPANDED", NULL, winTreeSetImageExpandedAttrib, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "IMAGELEAF", NULL, winTreeSetImageLeafAttrib, IUPAF_SAMEASSYSTEM, "IMGLEAF", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGEBRANCHCOLLAPSED", NULL, winTreeSetImageBranchCollapsedAttrib, IUPAF_SAMEASSYSTEM, "IMGCOLLAPSED", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGEBRANCHEXPANDED", NULL, winTreeSetImageBranchExpandedAttrib, IUPAF_SAMEASSYSTEM, "IMGEXPANDED", IUPAF_NO_INHERIT);
+
+ /* IupTree Attributes - NODES */
+ iupClassRegisterAttributeId(ic, "STATE", winTreeGetStateAttrib, winTreeSetStateAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "DEPTH", winTreeGetDepthAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "KIND", winTreeGetKindAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "PARENT", winTreeGetParentAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "NAME", winTreeGetTitleAttrib, winTreeSetTitleAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "TITLE", winTreeGetTitleAttrib, winTreeSetTitleAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "CHILDCOUNT", winTreeGetChildCountAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "USERDATA", winTreeGetUserDataAttrib, winTreeSetUserDataAttrib, IUPAF_NO_STRING|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "COLOR", winTreeGetColorAttrib, winTreeSetColorAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "TITLEFONT", winTreeGetTitleFontAttrib, winTreeSetTitleFontAttrib, IUPAF_NO_INHERIT);
+
+ /* IupTree Attributes - MARKS */
+ iupClassRegisterAttributeId(ic, "MARKED", winTreeGetMarkedAttrib, winTreeSetMarkedAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute (ic, "MARK", NULL, winTreeSetMarkAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute (ic, "STARTING", NULL, winTreeSetMarkStartAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute (ic, "MARKSTART", NULL, winTreeSetMarkStartAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute (ic, "VALUE", winTreeGetValueAttrib, winTreeSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+
+ /* IupTree Attributes - ACTION */
+ iupClassRegisterAttributeId(ic, "DELNODE", NULL, winTreeSetDelNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "RENAME", NULL, winTreeSetRenameAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "MOVENODE", NULL, winTreeSetMoveNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "COPYNODE", NULL, winTreeSetCopyNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "FINDUSERDATA", winTreeGetFindUserDataAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+}
diff --git a/iup/src/win/iupwin_val.c b/iup/src/win/iupwin_val.c
new file mode 100755
index 0000000..706c612
--- /dev/null
+++ b/iup/src/win/iupwin_val.c
@@ -0,0 +1,315 @@
+/** \file
+ * \brief Valuator Control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+#include <commctrl.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <memory.h>
+#include <stdarg.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_val.h"
+#include "iup_drv.h"
+
+#include "iupwin_drv.h"
+#include "iupwin_handle.h"
+#include "iupwin_draw.h"
+
+
+#ifndef SHRT_MAX
+#define SHRT_MAX 32767
+#endif
+
+void iupdrvValGetMinSize(Ihandle* ih, int *w, int *h)
+{
+ int ticks_size = 0;
+ if (iupAttribGetInt(ih, "SHOWTICKS"))
+ {
+ char* tickspos = iupAttribGetStr(ih, "TICKSPOS");
+ if(iupStrEqualNoCase(tickspos, "BOTH"))
+ ticks_size = 2*8;
+ else
+ ticks_size = 8;
+ }
+
+ if (ih->data->type == IVAL_HORIZONTAL)
+ {
+ *w = 35;
+ *h = 30+ticks_size;
+ }
+ else
+ {
+ *w = 30+ticks_size;
+ *h = 35;
+ }
+}
+
+static int winValSetStepAttrib(Ihandle* ih, const char* value)
+{
+ int linesize;
+ ih->data->step = atof(value);
+ linesize = (int)(ih->data->step*SHRT_MAX);
+ SendMessage(ih->handle, TBM_SETLINESIZE, 0, linesize);
+ return 0; /* do not store value in hash table */
+}
+
+static int winValSetPageStepAttrib(Ihandle* ih, const char* value)
+{
+ int pagesize;
+ ih->data->pagestep = atof(value);
+ pagesize = (int)(ih->data->pagestep*SHRT_MAX);
+ SendMessage(ih->handle, TBM_SETPAGESIZE, 0, pagesize);
+ return 0; /* do not store value in hash table */
+}
+
+static int winValSetShowTicksAttrib(Ihandle* ih, const char* value)
+{
+ int tick_freq, show_ticks;
+
+ if (!ih->data->show_ticks) /* can only set if already not zero */
+ return 0;
+
+ show_ticks = atoi(value);
+ if (show_ticks<2) show_ticks=2;
+ ih->data->show_ticks = show_ticks;
+
+ /* Defines the interval frequency for tick marks */
+ tick_freq = SHRT_MAX/(show_ticks-1);
+ SendMessage(ih->handle, TBM_SETTICFREQ, tick_freq, 0);
+ return 0;
+}
+
+static int winValSetValueAttrib(Ihandle* ih, const char* value)
+{
+ int ival;
+
+ ih->data->val = atof(value);
+ iupValCropValue(ih);
+
+ ival = (int)(((ih->data->val-ih->data->vmin)/(ih->data->vmax - ih->data->vmin))*SHRT_MAX);
+ if (ih->data->inverted)
+ ival = SHRT_MAX-ival;
+
+ SendMessage(ih->handle, TBM_SETPOS, TRUE, ival);
+ return 0; /* do not store value in hash table */
+}
+
+
+/*********************************************************************************************/
+
+
+static int winValCtlColor(Ihandle* ih, HDC hdc, LRESULT *result)
+{
+ COLORREF cr;
+ if (iupwinGetParentBgColor(ih, &cr))
+ {
+ SetDCBrushColor(hdc, cr);
+ *result = (LRESULT)GetStockObject(DC_BRUSH);
+ return 1;
+ }
+ return 0;
+}
+
+static int winValCustomScroll(Ihandle* ih, int msg)
+{
+ double old_val = ih->data->val;
+ int ival;
+ IFn cb;
+
+ ival = (int)SendMessage(ih->handle, TBM_GETPOS, 0, 0);
+ if (ih->data->inverted)
+ ival = SHRT_MAX-ival;
+
+ ih->data->val = (((double)ival/(double)SHRT_MAX)*(ih->data->vmax - ih->data->vmin)) + ih->data->vmin;
+ iupValCropValue(ih);
+
+ cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB");
+ if (cb)
+ {
+ if (ih->data->val == old_val)
+ return 0;
+
+ cb(ih);
+ }
+ else
+ {
+ IFnd cb_old = NULL;
+ switch (msg)
+ {
+ case TB_BOTTOM:
+ case TB_TOP:
+ case TB_LINEDOWN:
+ case TB_LINEUP:
+ case TB_PAGEDOWN:
+ case TB_PAGEUP:
+ {
+ cb_old = (IFnd) IupGetCallback(ih, "BUTTON_PRESS_CB");
+ break;
+ }
+ case TB_THUMBPOSITION:
+ {
+ cb_old = (IFnd) IupGetCallback(ih, "BUTTON_RELEASE_CB");
+ break;
+ }
+ case TB_THUMBTRACK:
+ {
+ cb_old = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB");
+ break;
+ }
+ }
+ if (cb_old)
+ cb_old(ih, ih->data->val);
+ }
+
+ return 0; /* not used */
+}
+
+static void winValIncPageValue(Ihandle *ih, int dir)
+{
+ int pagesize, ival;
+ pagesize = (int)(ih->data->pagestep*SHRT_MAX);
+
+ ival = (int)SendMessage(ih->handle, TBM_GETPOS, 0, 0);
+ ival += dir*pagesize;
+ if (ival < 0) ival = 0;
+ if (ival > SHRT_MAX) ival = SHRT_MAX;
+ SendMessage(ih->handle, TBM_SETPOS, TRUE, ival);
+
+ winValCustomScroll(ih, 0);
+}
+
+static int winValProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result)
+{
+ (void)lp;
+
+ switch (msg)
+ {
+ case WM_ERASEBKGND:
+ {
+ RECT rect;
+ HDC hDC = (HDC)wp;
+ GetClientRect(ih->handle, &rect);
+ iupwinDrawParentBackground(ih, hDC, &rect);
+ /* return non zero value */
+ *result = 1;
+ return 1;
+ }
+ case WM_KEYDOWN:
+ case WM_SYSKEYDOWN:
+ {
+ if (iupwinBaseProc(ih, msg, wp, lp, result)==1)
+ return 1;
+
+ if (GetKeyState(VK_CONTROL) & 0x8000) /* handle Ctrl+Arrows */
+ {
+ if (wp == VK_UP || wp == VK_LEFT)
+ {
+ winValIncPageValue(ih, -1);
+ *result = 0;
+ return 1;
+ }
+ if (wp == VK_RIGHT || wp == VK_DOWN)
+ {
+ winValIncPageValue(ih, 1);
+ *result = 0;
+ return 1;
+ }
+ }
+ return 0;
+ }
+ }
+
+ return iupwinBaseProc(ih, msg, wp, lp, result);
+}
+
+
+/*********************************************************************************************/
+
+
+static int winValMapMethod(Ihandle* ih)
+{
+ DWORD dwStyle = WS_CHILD | TBS_AUTOTICKS;
+ int show_ticks;
+
+ if (!ih->parent)
+ return IUP_ERROR;
+
+ /* Track bar Orientation */
+ if (ih->data->type == IVAL_HORIZONTAL)
+ dwStyle |= TBS_HORZ;
+ else
+ dwStyle |= TBS_VERT;
+
+ if (iupAttribGetBoolean(ih, "CANFOCUS"))
+ dwStyle |= WS_TABSTOP;
+
+ /* Track bar Ticks */
+ show_ticks = iupAttribGetInt(ih, "SHOWTICKS");
+ if (!show_ticks)
+ {
+ dwStyle |= TBS_NOTICKS; /* No show_ticks */
+ }
+ else
+ {
+ char* tickspos;
+
+ if (show_ticks<2) show_ticks=2;
+ ih->data->show_ticks = show_ticks; /* non zero value, can be changed later, but not to zero */
+
+ /* Defines the position of tick marks */
+ tickspos = iupAttribGetStr(ih, "TICKSPOS");
+ if(iupStrEqualNoCase(tickspos, "BOTH"))
+ dwStyle |= TBS_BOTH;
+ else if(iupStrEqualNoCase(tickspos, "REVERSE"))
+ dwStyle |= TBS_BOTTOM; /* same as TBS_RIGHT */
+ else /* NORMAL */
+ dwStyle |= TBS_TOP; /* same as TBS_LEFT */
+ }
+
+ if (!iupwinCreateWindowEx(ih, TRACKBAR_CLASS, 0, dwStyle))
+ return IUP_ERROR;
+
+ /* Process Keyboard */
+ IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winValProc);
+
+ /* Process Val Scroll commands */
+ IupSetCallback(ih, "_IUPWIN_CUSTOMSCROLL_CB", (Icallback)winValCustomScroll);
+
+ /* Process background color */
+ IupSetCallback(ih, "_IUPWIN_CTLCOLOR_CB", (Icallback)winValCtlColor);
+
+ /* configure the native range */
+ SendMessage(ih->handle, TBM_SETRANGEMIN, FALSE, 0);
+ SendMessage(ih->handle, TBM_SETRANGEMAX, FALSE, SHRT_MAX);
+
+ if (ih->data->inverted)
+ SendMessage(ih->handle, TBM_SETPOS, FALSE, SHRT_MAX); /* default initial position is at MIN */
+
+ return IUP_NOERROR;
+}
+
+void iupdrvValInitClass(Iclass* ic)
+{
+ /* Driver Dependent Class functions */
+ ic->Map = winValMapMethod;
+
+ /* IupVal only */
+ iupClassRegisterAttribute(ic, "VALUE", iupValGetValueAttrib, winValSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOWTICKS", iupValGetShowTicksAttrib, winValSetShowTicksAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "PAGESTEP", iupValGetPageStepAttrib, winValSetPageStepAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "STEP", iupValGetStepAttrib, winValSetStepAttrib, "0.01", NULL, IUPAF_NO_INHERIT); /* force new default value */
+
+ iupClassRegisterAttribute(ic, "TICKSPOS", NULL, NULL, "NORMAL", NULL, IUPAF_NOT_MAPPED);
+}
diff --git a/iup/src/win/iupwindows_help.c b/iup/src/win/iupwindows_help.c
new file mode 100755
index 0000000..f3a06b6
--- /dev/null
+++ b/iup/src/win/iupwindows_help.c
@@ -0,0 +1,32 @@
+/** \file
+ * \brief Windows Driver IupHelp
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <windows.h>
+#include <shellapi.h>
+
+#include "iup.h"
+
+int IupHelp(const char* url)
+{
+ int err = (int)ShellExecute(GetDesktopWindow(), "open", url, NULL, NULL, SW_SHOWNORMAL);
+ if (err <= 32)
+ {
+ switch (err)
+ {
+ case ERROR_FILE_NOT_FOUND:
+ case ERROR_PATH_NOT_FOUND:
+ return -2; /* File not found */
+ break;
+ default:
+ return -1; /* Generic error */
+ break;
+ }
+ }
+ return 1;
+}
diff --git a/iup/src/win/iupwindows_info.c b/iup/src/win/iupwindows_info.c
new file mode 100755
index 0000000..982c980
--- /dev/null
+++ b/iup/src/win/iupwindows_info.c
@@ -0,0 +1,212 @@
+/** \file
+ * \brief Windows System Information
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/* This module should depend only on IUP core headers
+ and Windows system headers. */
+
+#include <windows.h>
+
+#include "iup_str.h"
+#include "iup_drvinfo.h"
+
+
+int iupdrvMakeDirectory(const char* name)
+{
+ if (CreateDirectory(name, NULL))
+ return 1;
+ else
+ return 0;
+}
+
+int iupdrvIsFile(const char* name)
+{
+ DWORD attrib = GetFileAttributes(name);
+ if (attrib == INVALID_FILE_ATTRIBUTES)
+ return 0;
+ if (attrib & FILE_ATTRIBUTE_DIRECTORY)
+ return 0;
+ return 1;
+}
+
+int iupdrvIsDirectory(const char* name)
+{
+ DWORD attrib = GetFileAttributes(name);
+ if (attrib == INVALID_FILE_ATTRIBUTES)
+ return 0;
+ if (attrib & FILE_ATTRIBUTE_DIRECTORY)
+ return 1;
+ return 0;
+}
+
+char* iupdrvGetCurrentDirectory(void)
+{
+ char* cur_dir;
+ int len = GetCurrentDirectory(0, NULL);
+ if (len == 0) return NULL;
+
+ cur_dir = malloc(len+2);
+ GetCurrentDirectory(len+1, cur_dir);
+ cur_dir[len] = '\\';
+ cur_dir[len+1] = 0;
+ return cur_dir;
+}
+
+int iupdrvSetCurrentDirectory(const char* dir)
+{
+ return SetCurrentDirectory(dir);
+}
+
+int iupdrvGetWindowDecor(void* wnd, int *border, int *caption)
+{
+ WINDOWINFO wi;
+ wi.cbSize = sizeof(WINDOWINFO);
+ GetWindowInfo((HWND)wnd, &wi);
+
+ *border = wi.cxWindowBorders;
+
+ if (wi.rcClient.bottom == wi.rcClient.top)
+ *caption = wi.rcClient.bottom - wi.cyWindowBorders;
+ else
+ {
+ /* caption = window height - top border - client height */
+ *caption = (wi.rcWindow.bottom-wi.rcWindow.top) - 2*wi.cyWindowBorders - (wi.rcClient.bottom-wi.rcClient.top);
+ }
+
+ return 1;
+}
+
+void iupdrvGetScreenSize(int *width, int *height)
+{
+ RECT area;
+ SystemParametersInfo(SPI_GETWORKAREA, 0, &area, 0);
+ *width = (int)(area.right - area.left);
+ *height = (int)(area.bottom - area.top);
+}
+
+void iupdrvGetFullSize(int *width, int *height)
+{
+ RECT rect;
+ GetWindowRect(GetDesktopWindow(), &rect);
+ *width = rect.right - rect.left;
+ *height = rect.bottom - rect.top;
+}
+
+int iupdrvGetScreenDepth(void)
+{
+ int bpp;
+ HDC hDCDisplay = GetDC(NULL);
+ bpp = GetDeviceCaps(hDCDisplay, BITSPIXEL);
+ ReleaseDC(NULL, hDCDisplay);
+ return bpp;
+}
+
+void iupdrvGetCursorPos(int *x, int *y)
+{
+ POINT CursorPoint;
+ GetCursorPos(&CursorPoint);
+ *x = (int)CursorPoint.x;
+ *y = (int)CursorPoint.y;
+}
+
+void iupdrvGetKeyState(char* key)
+{
+ if (GetAsyncKeyState(VK_SHIFT) & 0x8000)
+ key[0] = 'S';
+ else
+ key[0] = ' ';
+ if (GetAsyncKeyState(VK_CONTROL) & 0x8000)
+ key[1] = 'C';
+ else
+ key[1] = ' ';
+ if (GetAsyncKeyState(VK_MENU) & 0x8000)
+ key[2] = 'A';
+ else
+ key[2] = ' ';
+ if ((GetAsyncKeyState(VK_LWIN) & 0x8000) || (GetAsyncKeyState(VK_RWIN) & 0x8000))
+ key[3] = 'Y';
+ else
+ key[3] = ' ';
+
+ key[4] = 0;
+}
+
+char *iupdrvGetSystemName(void)
+{
+ OSVERSIONINFO osvi;
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+ GetVersionEx(&osvi);
+
+ if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT)
+ {
+ if (osvi.dwMajorVersion <= 4)
+ return "WinNT";
+
+ if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0)
+ return "Win2K";
+
+ if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion > 0)
+ return "WinXP";
+
+ if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0)
+ return "Vista";
+
+ if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion > 0)
+ return "Win7";
+ }
+
+ return "Windows";
+}
+
+char *iupdrvGetSystemVersion(void)
+{
+ char *str = iupStrGetMemory(256);
+ OSVERSIONINFOEX osvi;
+ SYSTEM_INFO si;
+
+ ZeroMemory(&si, sizeof(SYSTEM_INFO));
+ GetSystemInfo(&si);
+
+ ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+ GetVersionEx((OSVERSIONINFO*)&osvi);
+
+ sprintf(str, "%d.%d.%d", (int)osvi.dwMajorVersion, (int)osvi.dwMinorVersion, (int)osvi.dwBuildNumber);
+
+ /* Display service pack (if any). */
+ if (osvi.szCSDVersion && osvi.szCSDVersion[0]!=0)
+ {
+ strcat(str, " ");
+ strcat(str, osvi.szCSDVersion);
+ }
+
+ if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64)
+ strcat(str, " (IA64)");
+ else if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
+ strcat(str, " (x64)");
+ else
+ strcat(str, " (x86)");
+
+ return str;
+}
+
+char *iupdrvGetComputerName(void)
+{
+ DWORD size = MAX_COMPUTERNAME_LENGTH + 1;
+ char* str = iupStrGetMemory(size);
+ GetComputerName((LPTSTR)str, &size);
+ return str;
+}
+
+char *iupdrvGetUserName(void)
+{
+ DWORD size = 256;
+ char* str = iupStrGetMemory(size);
+ GetUserName((LPTSTR)str, &size);
+ return (char*)str;
+}
diff --git a/iup/src/win/iupwindows_main.c b/iup/src/win/iupwindows_main.c
new file mode 100755
index 0000000..ea7e2ae
--- /dev/null
+++ b/iup/src/win/iupwindows_main.c
@@ -0,0 +1,66 @@
+/** \file
+ * \brief Windows Driver WinMain
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+
+#include <stdlib.h> /* declaration of __argc and __argv */
+
+#include "iup.h"
+
+
+#ifdef __WATCOMC__ /* force Watcom to link this module, called from IupOpen */
+void iupwinMainDummy(void)
+{
+ return;
+}
+#else
+extern int main(int, char **);
+#endif
+
+/* save this handle in DllMain only, use to load resources from the DLL. */
+HINSTANCE iupwin_dll_hinstance = 0;
+
+#ifdef IUP_DLL
+BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+{
+ (void)fdwReason;
+ (void)lpvReserved;
+
+ iupwin_dll_hinstance = hinstDLL;
+
+ return TRUE;
+}
+#else
+/* this module is always linked in the makefile,
+ But it must not define WinMain if building the DLL */
+int PASCAL WinMain (HINSTANCE hinst, HINSTANCE hprev, LPSTR cmdline, int ncmdshow)
+{
+ (void)hinst; /* NOT used */
+ (void)hprev;
+ (void)cmdline;
+ (void)ncmdshow;
+
+ /* WinMain is NOT called for Console applications */
+
+#ifdef __WATCOMC__
+ {
+ extern int _argc;
+ extern char** _argv;
+ return IupMain(_argc, _argv);
+ }
+#else
+ {
+ /* this seems to work for all the compilers we tested, except Watcom compilers */
+ /* These are declared in <stdlib.h>, except for Cygwin. */
+#ifdef __GNUC__
+ extern int __argc;
+ extern char** __argv;
+#endif
+ return main(__argc, __argv);
+ }
+#endif
+}
+#endif
diff --git a/iup/srccd/Makefile b/iup/srccd/Makefile
new file mode 100755
index 0000000..43a3f09
--- /dev/null
+++ b/iup/srccd/Makefile
@@ -0,0 +1,6 @@
+
+.PHONY: do_all iupcd
+do_all: iupcd
+
+iupcd:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak
diff --git a/iup/srccd/config.mak b/iup/srccd/config.mak
new file mode 100755
index 0000000..3e5a9fe
--- /dev/null
+++ b/iup/srccd/config.mak
@@ -0,0 +1,14 @@
+PROJNAME = iup
+LIBNAME = iupcd
+OPT = YES
+
+DEFINES = CD_NO_OLD_INTERFACE
+SRC = iup_cd.c
+DEF_FILE = iupcd.def
+
+USE_CD=YES
+# Can not use USE_IUP because Tecmake will include "iupcd" in linker
+
+INCLUDES = ../include
+LIBS = iup
+LDIR = ../lib/$(TEC_UNAME)
diff --git a/iup/srccd/iup_cd.c b/iup/srccd/iup_cd.c
new file mode 100755
index 0000000..5998775
--- /dev/null
+++ b/iup/srccd/iup_cd.c
@@ -0,0 +1,70 @@
+/** \file
+ * \brief IUP Driver
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "iup.h"
+
+#include <cd.h>
+#include <cd_private.h>
+#include <cdiup.h>
+#include <cdnative.h>
+
+
+static void (*cdcreatecanvasNATIVE)(cdCanvas* canvas, void* data) = NULL;
+
+static void cdcreatecanvasIUP(cdCanvas* canvas, Ihandle *ih_canvas)
+{
+#ifndef WIN32
+ char str[50] = "";
+#endif
+ char* data;
+
+ if (IupGetInt(ih_canvas, "CD_GDK"))
+ data = IupGetAttribute(ih_canvas, "DRAWABLE"); /* new IUP 3 attribute, works for GTK only */
+ else
+ {
+#ifdef WIN32
+ data = IupGetAttribute(ih_canvas, "HWND"); /* new IUP 3 attribute, works for Windows and GTK */
+ if (!data)
+ data = IupGetAttribute(ih_canvas, "WID"); /* OLD IUP 2 attribute */
+ if (!data)
+ return;
+#else
+ void *dpy = IupGetAttribute(ih_canvas, "XDISPLAY"); /* works for Motif and GTK */
+ unsigned long wnd = (unsigned long)IupGetAttribute(ih_canvas, "XWINDOW");
+ if (!wnd || !dpy)
+ return;
+ data = str;
+#ifdef SunOS_OLD
+ sprintf(str, "%d %lu", (int)dpy, wnd);
+#else
+ sprintf(str, "%p %lu", dpy, wnd);
+#endif
+#endif
+ }
+
+ /* Inicializa driver NativeWindow */
+ cdcreatecanvasNATIVE(canvas, data);
+
+ IupSetAttribute(ih_canvas, "_CD_CANVAS", (char*)canvas);
+}
+
+static cdContext cdIupContext;
+
+cdContext* cdContextIup(void)
+{
+ /* call cdContextNativeWindow every time, because of ContextPlus */
+ cdContext* ctx = cdContextNativeWindow();
+
+ cdcreatecanvasNATIVE = ctx->cxCreateCanvas;
+
+ cdIupContext = *ctx;
+ cdIupContext.cxCreateCanvas = cdcreatecanvasIUP;
+
+ return &cdIupContext;
+}
diff --git a/iup/srccd/iupcd.def b/iup/srccd/iupcd.def
new file mode 100755
index 0000000..67a21f9
--- /dev/null
+++ b/iup/srccd/iupcd.def
@@ -0,0 +1,2 @@
+EXPORTS
+ cdContextIup
diff --git a/iup/srccd/iupcd.dep b/iup/srccd/iupcd.dep
new file mode 100644
index 0000000..4612393
--- /dev/null
+++ b/iup/srccd/iupcd.dep
@@ -0,0 +1,3 @@
+$(OBJDIR)/iup_cd.o: iup_cd.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../../cd/include/cd.h ../../cd/include/cd_private.h \
+ ../../cd/include/cdiup.h ../../cd/include/cdnative.h
diff --git a/iup/srccd/make_uname b/iup/srccd/make_uname
new file mode 100755
index 0000000..cc4b881
--- /dev/null
+++ b/iup/srccd/make_uname
@@ -0,0 +1,3 @@
+#This builds all the libraries of the folder for 1 uname
+
+tecmake $1 $2 $3 $4 $5 $6 $7
diff --git a/iup/srccd/make_uname.bat b/iup/srccd/make_uname.bat
new file mode 100755
index 0000000..f0a0722
--- /dev/null
+++ b/iup/srccd/make_uname.bat
@@ -0,0 +1,4 @@
+@echo off
+REM This builds all the libraries of the folder for 1 uname
+
+call tecmake %1 %2 %3 %4 %5 %6
diff --git a/iup/srcconsole/Makefile b/iup/srcconsole/Makefile
new file mode 100755
index 0000000..876ca8d
--- /dev/null
+++ b/iup/srcconsole/Makefile
@@ -0,0 +1,12 @@
+
+.PHONY: do_all iuplua5 iuplua5gtk iuplua3
+do_all: iuplua5
+
+iuplua5:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak
+
+iuplua5gtk:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak USE_GTK=Yes
+
+iuplua3:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iuplua3
diff --git a/iup/srcconsole/config.mak b/iup/srcconsole/config.mak
new file mode 100755
index 0000000..612a3ab
--- /dev/null
+++ b/iup/srcconsole/config.mak
@@ -0,0 +1,138 @@
+PROJNAME = iup
+APPNAME = iuplua51
+APPTYPE = console
+
+LOHDIR = loh
+SRCLUA = console5.lua
+SRC = iup_lua51.c
+
+
+# Disable strip
+STRIP =
+# Optimize
+OPT = YES
+
+# IM and IupPPlot uses C++
+LINKER = $(CPPC)
+
+USE_MOTIF = Yes
+
+ifdef USE_GTK
+ APPNAME = iuplua51gtk
+endif
+
+ifdef USE_MOTIF
+ APPNAME = iuplua51mot
+endif
+
+DBG = Yes
+
+ifdef DBG
+ # Statically link everything only when debugging
+ IUP := ..
+ USE_IUPLUA = Yes
+ USE_IUP3 = Yes
+ USE_STATIC = Yes
+ USE_LUA51 = Yes
+
+ DEFINES = USE_STATIC
+
+ USE_CDLUA = Yes
+ USE_IUPCONTROLS = Yes
+ ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ LIBS += iuplua_pplot$(LIBLUASUFX) iup_pplot
+ else
+ IUPLIB = $(IUP)/lib/$(TEC_UNAME)
+ SLIB += $(IUPLIB)/libiuplua_pplot$(LIBLUASUFX).a $(IUPLIB)/libiup_pplot.a
+ endif
+
+ ifndef IUPLUA_NO_IM
+ ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ LIBS += cdluaim$(LIBLUASUFX)
+ else
+ CDLIB = $(CD)/lib/$(TEC_UNAME)
+ SLIB += $(CDLIB)/libcdluaim$(LIBLUASUFX).a
+ endif
+ endif
+ ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ USE_GDIPLUS=Yes
+ else
+ # USE_XRENDER=Yes
+ endif
+
+ USE_IMLUA = Yes
+
+ ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ LIBS += imlua_process$(LIBLUASUFX) iupluaim$(LIBLUASUFX) im_process iupim
+ else
+ IUPLIB = $(IUP)/lib/$(TEC_UNAME)
+ IMLIB = $(IM)/lib/$(TEC_UNAME)
+ SLIB += $(IMLIB)/libimlua_process$(LIBLUASUFX).a $(IUPLIB)/libiupluaim$(LIBLUASUFX).a $(IMLIB)/libim_process.a $(IUPLIB)/libiupim.a
+ endif
+
+
+ IUPLUA_IMGLIB = Yes
+ ifdef IUPLUA_IMGLIB
+ DEFINES += IUPLUA_IMGLIB
+ ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ LIBS += iupluaimglib$(LIBLUASUFX) iupimglib
+ else
+ IUPLIB = $(IUP)/lib/$(TEC_UNAME)
+ SLIB += $(IUPLIB)/libiupluaimglib$(LIBLUASUFX).a $(IUPLIB)/libiupimglib.a
+ endif
+ endif
+else
+ ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ # Dinamically link in Windows, when not debugging
+ # Must call "tecmake dll8"
+ USE_LUA51 = Yes
+ USE_DLL = Yes
+ GEN_MANIFEST = No
+ else
+ # In UNIX Lua is always statically linked, late binding is used.
+ USE_STATIC = Yes
+ USE_LUA51 = Yes
+ endif
+endif
+
+
+ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ SLIB += setargv.obj
+ SRC += iuplua5.rc
+endif
+
+ifneq ($(findstring cygw, $(TEC_UNAME)), )
+ LDFLAGS = -s
+ LIBS += readline history
+endif
+
+ifneq ($(findstring Linux, $(TEC_UNAME)), )
+ LIBS += dl
+ #To allow late binding
+ LFLAGS = -Wl,-E
+ LIBS += readline history curses ncurses
+endif
+
+ifneq ($(findstring BSD, $(TEC_UNAME)), )
+ #To allow late binding
+ LFLAGS = -Wl,-E
+ LIBS += readline history curses ncurses
+endif
+
+ifneq ($(findstring SunOS, $(TEC_UNAME)), )
+ LIBS += dl
+endif
+
+ifneq ($(findstring AIX, $(TEC_UNAME)), )
+ FLAGS += -mminimal-toc
+ OPTFLAGS = -mminimal-toc -ansi -pedantic
+ LFLAGS = -Xlinker "-bbigtoc"
+endif
+
+ifeq ($(TEC_UNAME), vc8)
+ ifdef DBG
+ #debug info not working for vc8 linker
+ define DBG
+ endef
+ endif
+endif
diff --git a/iup/srcconsole/console3.lua b/iup/srcconsole/console3.lua
new file mode 100755
index 0000000..2e35abd
--- /dev/null
+++ b/iup/srcconsole/console3.lua
@@ -0,0 +1,181 @@
+-- Utilities
+
+-- Dummy require
+function require()
+end
+
+function printvars()
+ local n,v = nextvar(nil)
+ print("--printvars Start--")
+ while n ~= nil do
+ print(tostring(n).."="..tostring(v))
+ n,v = nextvar(n)
+ end
+ print("--printvars End--")
+end
+
+function printtable(t)
+ local n,v = next(t, nil)
+ print("--printtable Start--")
+ while n ~= nil do
+ print(tostring(n).."="..tostring(v))
+ n,v = next(t, n)
+ end
+ print("--printtable End--")
+end
+
+function print_version_info()
+ print(_VERSION .. " " .. iup._LUA_COPYRIGHT)
+ if (im) then print(im._VERSION .. " " .. im._COPYRIGHT) end
+ if (cd and cd._VERSION) then print(cd._VERSION .. " " .. cd._COPYRIGHT) end
+ print(iup._VERSION .. " " .. iup._COPYRIGHT)
+ print("")
+ print("IUP Info")
+ print(" System: " .. iup.GetGlobal("SYSTEM"))
+ print(" System Version: " .. iup.GetGlobal("SYSTEMVERSION"))
+ local mot = iup.GetGlobal("MOTIFVERSION")
+ if (mot) then print(" Motif Version: ", mot) end
+ print(" Screen Size: " .. iup.GetGlobal("SCREENSIZE"))
+ print(" Screen Depth: " .. iup.GetGlobal("SCREENDEPTH"))
+ if (iup.GL_VENDOR) then print(" OpenGL Vendor: " .. iup.GL_VENDOR) end
+ if (iup.GL_RENDERER) then print(" OpenGL Renderer: " .. iup.GL_RENDERER) end
+ if (iup.GL_VERSION) then print(" OpenGL Version: " .. iup.GL_VERSION) end
+end
+
+-- IUPLUA Full Application
+
+lastfile = nil -- Last file open
+
+mulCommands = iupmultiline{expand=IUP_YES, size="200x120", font="COURIER_NORMAL_10"}
+poslabel = iuplabel{title="0:0", size="50x"}
+filelabel = iuplabel{title="", size="50x", expand="HORIZONTAL"}
+
+mulCommands.caretcb = function(self, lin, col)
+ poslabel.title = lin..":"..col
+end
+
+butExecute = iupbutton{size="50x15", title = "Execute", action="dostring(mulCommands.value)"}
+butClearCommands = iupbutton{size="50x15", title = "Clear", action = "mulCommands.value = '' filelabel.title = '' lastfile = nil"}
+butLoadFile = iupbutton{size="50x15", title = "Load..."}
+butSaveasFile = iupbutton{size="50x15", title = "Save As..."}
+butSaveFile = iupbutton{size="50x15", title = "Save"}
+
+function butSaveFile:action()
+ if (lastfile == nil) then
+ butSaveasFile:action()
+ else
+ novoarq = openfile (lastfile, "w+")
+ if (novoarq ~= nil) then
+ write (novoarq,mulCommands.value)
+ closefile (novoarq)
+ else
+ error ("Cannot Save file "..filename)
+ end
+ end
+end
+
+function butSaveasFile:action()
+ local filedlg = iupfiledlg{dialogtype = "SAVE", title = "Save File", filter = "*.wlua", filterinfo = "Lua files",allownew=yes}
+ IupPopup(filedlg,IUP_LEFT, IUP_LEFT)
+ local status = filedlg.status
+ lastfile = filedlg.value
+ filelabel.title = lastfile
+ IupDestroy(filedlg)
+ if status ~= "-1" then
+ if (lastfile == nil) then
+ error ("Cannot Save file "..lastfile)
+ end
+ local novoarq = openfile (lastfile, "w+")
+ if (novoarq ~= nil) then
+ write (novoarq,mulCommands.value)
+ closefile (novoarq)
+ else
+ error ("Cannot Save file")
+ end
+ end
+end
+
+function butLoadFile:action()
+ local filedlg = iupfiledlg{dialogtype="OPEN", title="Load File", filter="*.wlua", filterinfo="Lua Files", allownew="NO"}
+ filedlg:popup(IUP_CENTER, IUP_CENTER)
+ local status = filedlg.status
+ local newfile = filedlg.value
+ IupDestroy(filedlg)
+ if (status == "-1") or (status == "1") then
+ if (status == "1") then
+ error ("Cannot load file "..newfile)
+ end
+ else
+ local fp = openfile (newfile, "r")
+ if (fp == nil) then
+ error ("Cannot load file "..newfile)
+ else
+ mulCommands.value = read (fp,"*a")
+ closefile (fp)
+ lastfile = newfile
+ filelabel.title = lastfile
+ end
+ end
+end
+
+vbxConsole = iupvbox
+{
+ iupframe{iuphbox{iupvbox{butLoadFile, butSaveFile, butSaveasFile, butClearCommands, butExecute; margin="0x0", gap="10"}, iupvbox{filelabel, mulCommands, poslabel; alignment="ARIGHT"}; alignment="ATOP"}; title="Commands"}
+ ;alignment="ACENTER", margin="5x5", gap="5"
+}
+
+-- Main Menu Definition.
+
+mnuMain = iupmenu
+{
+ iupsubmenu
+ {
+ iupmenu
+ {
+ iupitem{title="Exit", action="return IUP_CLOSE"}
+ }; title="File"
+ },
+ iupsubmenu{iupmenu
+ {
+ iup.item{title="Print Version Info...", action=print_version_info},
+ iupitem{title="About...", action="dlgAbout:popup(IUP_CENTER, IUP_CENTER)"}
+ };title="Help"}
+}
+
+-- Main Dialog Definition.
+
+dlgMain = iupdialog{vbxConsole; title="Complete IupLua3 Interpreter", menu=mnuMain, close_cb = "return IUP_CLOSE"}
+
+-- About Dialog Definition.
+
+dlgAbout = iupdialog
+{
+ iupvbox
+ {
+ iuplabel{title="Complete IupLua3 Interpreter"},
+ iupfill{size="5"},
+ iupfill{size="5"},
+ iupframe
+ {
+ iupvbox
+ {
+ iuplabel{title="Tecgraf/PUC-Rio"},
+ iuplabel{title="Mark/Ovνdio/Scuri"},
+ iuplabel{title="iup@tecgraf.puc-rio.br"}
+ }
+ },
+ iupfill{size="5"},
+ iupbutton{title="OK", action="return IUP_CLOSE", size="50X20"}
+ ;margin="10x10", alignment="ACENTER"
+ }
+ ;maxbox=IUP_NO, minbox=IUP_NO, resize=IUP_NO, title="About"
+}
+
+-- Displays the Main Dialog
+
+dlgMain:show()
+
+IupMainLoop()
+
+IupDestroy(dlgMain)
+IupDestroy(dlgAbout)
diff --git a/iup/srcconsole/console5.lua b/iup/srcconsole/console5.lua
new file mode 100755
index 0000000..20f74b2
--- /dev/null
+++ b/iup/srcconsole/console5.lua
@@ -0,0 +1,204 @@
+require"iuplua"
+
+iup.console = {}
+
+-- Utilities
+
+function iup.console.printtable(t)
+ local n,v = next(t, nil)
+ print("--printtable Start--")
+ while n do
+ print(tostring(n).."="..tostring(v))
+ n,v = next(t, n)
+ end
+ print("--printtable End--")
+end
+
+function iup.console.print_version_info()
+ if (im) then print("IM " .. im._VERSION .. " " .. im._COPYRIGHT) end
+
+ if (cd) then print("CD " .. cd._VERSION .. " " .. cd._COPYRIGHT) end
+
+ print("IUP " .. iup._VERSION .. " " .. iup._COPYRIGHT)
+ print("")
+ print("IUP Info")
+ print(" System: " .. iup.GetGlobal("SYSTEM"))
+ print(" System Version: " .. iup.GetGlobal("SYSTEMVERSION"))
+
+ local mot = iup.GetGlobal("MOTIFVERSION")
+ if (mot) then print(" Motif Version: ", mot) end
+
+ print(" Screen Size: " .. iup.GetGlobal("SCREENSIZE"))
+ print(" Screen Depth: " .. iup.GetGlobal("SCREENDEPTH"))
+
+ if (iup.GL_VENDOR) then print(" OpenGL Vendor: " .. iup.GL_VENDOR) end
+ if (iup.GL_RENDERER) then print(" OpenGL Renderer: " .. iup.GL_RENDERER) end
+ if (iup.GL_VERSION) then print(" OpenGL Version: " .. iup.GL_VERSION) end
+end
+
+-- Console Dialog
+
+iup.console.lastfilename = nil -- Last file open
+iup.console.mlCode = iup.multiline{expand="YES", size="200x120", font="COURIER_NORMAL_10"}
+iup.console.lblPosition = iup.label{title="0:0", size="50x"}
+iup.console.lblFileName = iup.label{title="", size="50x", expand="HORIZONTAL"}
+
+function iup.console.mlCode:caret_cb(lin, col)
+ iup.console.lblPosition.title = lin..":"..col
+end
+
+iup.console.butExecute = iup.button{size="50x15", title="Execute",
+ action="iup.dostring(iup.console.mlCode.value)"}
+iup.console.butClearCommands = iup.button{size="50x15", title="Clear",
+ action="iup.console.mlCode.value='' iup.console.lblFileName.title = '' iup.console.lastfilename = nil"}
+iup.console.butLoadFile = iup.button{size="50x15", title="Load..."}
+iup.console.butSaveasFile = iup.button{size="50x15", title="Save As..."}
+iup.console.butSaveFile = iup.button{size="50x15", title="Save"}
+
+function iup.console.butSaveFile:action()
+ if (iup.console.lastfilename == nil) then
+ iup.console.butSaveasFile:action()
+ else
+ newfile = io.open(iup.console.lastfilename, "w+")
+ if (newfile) then
+ newfile:write(iup.console.mlCode.value)
+ newfile:close()
+ else
+ error ("Cannot Save file "..filename)
+ end
+ end
+end
+
+function iup.console.butSaveasFile:action()
+ local fd = iup.filedlg{dialogtype="SAVE", title="Save File",
+ filter="*.*", filterinfo="All files",allownew=yes}
+ fd:popup(iup.LEFT, iup.LEFT)
+ local status = fd.status
+ iup.console.lastfilename = fd.value
+ iup.console.lblFileName.title = iup.console.lastfilename
+ fd:destroy()
+ if status ~= "-1" then
+ if (iup.console.lastfilename == nil) then
+ error ("Cannot Save file "..filename)
+ end
+ local newfile=io.open(iup.console.lastfilename, "w+")
+ if (newfile) then
+ newfile:write(iup.console.mlCode.value)
+ newfile:close(newfile)
+ else
+ error ("Cannot Save file")
+ end
+ end
+end
+
+function iup.console.LoadFile(filename)
+ local newfile = io.open (filename, "r")
+ if (newfile == nil) then
+ error ("Cannot load file "..filename)
+ else
+ iup.console.mlCode.value=newfile:read("*a")
+ newfile:close (newfile)
+ iup.console.lastfilename = filename
+ iup.console.lblFileName.title = iup.console.lastfilename
+ end
+end
+
+function iup.console.butLoadFile:action()
+ local fd=iup.filedlg{dialogtype="OPEN", title="Load File",
+ filter="*.*", filterinfo="All Files", allownew="NO"}
+ fd:popup(iup.CENTER, iup.CENTER)
+ local status = fd.status
+ local filename = fd.value
+ fd:destroy()
+
+ if (status == "-1") or (status == "1") then
+ if (status == "1") then
+ error ("Cannot load file "..filename)
+ end
+ else
+ iup.console.LoadFile(filename)
+ end
+end
+
+iup.console.vbxConsole = iup.vbox
+{
+ iup.frame{iup.hbox{iup.vbox{iup.console.butLoadFile,
+ iup.console.butSaveFile,
+ iup.console.butSaveasFile,
+ iup.console.butClearCommands,
+ iup.console.butExecute;
+ margin="0x0", gap="10"},
+ iup.vbox{iup.console.lblFileName,
+ iup.console.mlCode,
+ iup.console.lblPosition;
+ alignment = "ARIGHT"};
+ alignment="ATOP"}; title="Commands"}
+ ;alignment="ACENTER", margin="5x5", gap="5"
+}
+
+-- Main Menu Definition.
+
+iup.console.mnuMain = iup.menu
+{
+ iup.submenu
+ {
+ iup.menu
+ {
+ iup.item{title="Exit", action="return iup.CLOSE"}
+ }; title="File"
+ },
+ iup.submenu{iup.menu
+ {
+ iup.item{title="Print Version Info...", action=iup.console.print_version_info},
+ iup.item{title="About...", action="iup.console.dlgAbout:popup(iup.CENTER, iup.CENTER)"}
+ };title="Help"}
+}
+
+-- Main Dialog Definition.
+
+iup.console.dlgMain = iup.dialog{iup.console.vbxConsole;
+ title="IupLua Console",
+ menu=iup.console.mnuMain,
+ dragdrop = "YES",
+ defaultenter=iup.console.butExecute,
+ close_cb = "return iup.CLOSE"}
+
+function iup.console.dlgMain:dropfiles_cb(filename, num, x, y)
+ if (num == 0) then
+ iup.console.LoadFile(filename)
+ end
+end
+
+-- About Dialog Definition.
+
+iup.console.dlgAbout = iup.dialog
+{
+ iup.vbox
+ {
+ iup.label{title="IupLua Console"},
+ iup.fill{size="5"},
+ iup.fill{size="5"},
+ iup.frame
+ {
+ iup.vbox
+ {
+ iup.label{title="Tecgraf/PUC-Rio"},
+ iup.label{title="iup@tecgraf.puc-rio.br"}
+ }
+ },
+ iup.fill{size="5"},
+ iup.button{title="OK", action="return iup.CLOSE", size="50X20"}
+ ;margin="10x10", alignment="ACENTER"
+ }
+ ;maxbox="NO", minbox="NO", resize="NO", title="About"
+}
+
+-- Displays the Main Dialog
+
+iup.console.dlgMain:show()
+iup.SetFocus(iup.console.mlCode)
+
+iup.MainLoop()
+
+iup.console.dlgMain:destroy()
+iup.console.dlgAbout:destroy()
diff --git a/iup/srcconsole/copy_all_so b/iup/srcconsole/copy_all_so
new file mode 100755
index 0000000..52f1fea
--- /dev/null
+++ b/iup/srcconsole/copy_all_so
@@ -0,0 +1,11 @@
+#!/bin/tcsh
+
+foreach plat ( Linux24 Linux24g3 Linux24g3_64 Linux26 Linux26_64 Linux26g4 Linux26g4_64 Linux26_ia64 SunOS57 SunOS510 SunOS510x86 AIX43 IRIX65 IRIX6465 )
+ echo $plat
+ cp -f ../lib/$plat/*.so ../bin/$plat
+ cp -f ../../cd/lib/$plat/*.so ../bin/$plat
+ cp -f ../../im/lib/$plat/*.so ../bin/$plat
+ cp -f ../../luagl/lib/$plat/*.so ../bin/$plat
+ cp -f ../../lfs/lib/$plat/*.so ../bin/$plat
+ rm -f ../bin/$plat/*3.so
+end
diff --git a/iup/srcconsole/copy_dll.bat b/iup/srcconsole/copy_dll.bat
new file mode 100755
index 0000000..5830805
--- /dev/null
+++ b/iup/srcconsole/copy_dll.bat
@@ -0,0 +1,10 @@
+@echo off
+copy /y ..\lib\dll8\*.dll ..\bin\Win32
+copy /y ..\..\cd\lib\dll8\*.dll ..\bin\Win32
+copy /y ..\..\im\lib\dll8\*.dll ..\bin\Win32
+copy /y ..\..\lua5.1\lib\dll8\*.dll ..\bin\Win32
+copy /y ..\..\luagl\lib\dll8\*.dll ..\bin\Win32
+copy /y ..\..\lfs\lib\dll8\*.dll ..\bin\Win32
+mkdir ..\bin\Win32\Microsoft.VC80.CRT
+copy /y ..\..\lua5.1\bin\Win32\Microsoft.VC80.CRT ..\bin\Win32\Microsoft.VC80.CRT\
+del ..\bin\Win32\*3.dll
diff --git a/iup/srcconsole/copy_dll_64.bat b/iup/srcconsole/copy_dll_64.bat
new file mode 100755
index 0000000..159117f
--- /dev/null
+++ b/iup/srcconsole/copy_dll_64.bat
@@ -0,0 +1,10 @@
+@echo off
+copy /y ..\lib\dll8_64\*.dll ..\bin\Win64
+copy /y ..\..\cd\lib\dll8_64\*.dll ..\bin\Win64
+copy /y ..\..\im\lib\dll8_64\*.dll ..\bin\Win64
+copy /y ..\..\lua5.1\lib\dll8_64\*.dll ..\bin\Win64
+copy /y ..\..\luagl\lib\dll8_64\*.dll ..\bin\Win64
+copy /y ..\..\lfs\lib\dll8_64\*.dll ..\bin\Win64
+mkdir ..\bin\Win64\Microsoft.VC80.CRT
+copy /y ..\..\lua5.1\bin\Win64\Microsoft.VC80.CRT ..\bin\Win64\Microsoft.VC80.CRT\
+del ..\bin\Win64\*3.dll
diff --git a/iup/srcconsole/copy_so b/iup/srcconsole/copy_so
new file mode 100755
index 0000000..2535766
--- /dev/null
+++ b/iup/srcconsole/copy_so
@@ -0,0 +1,4 @@
+cp -f ../lib/${TEC_UNAME}/*.so ../bin/$TEC_UNAME
+cp -f ../../cd/lib/${TEC_UNAME}/*.so ../bin/$TEC_UNAME
+cp -f ../../im/lib/${TEC_UNAME}/*.so ../bin/$TEC_UNAME
+rm -f ../bin/${TEC_UNAME}/*3.so
diff --git a/iup/srcconsole/iup_lua3.c b/iup/srcconsole/iup_lua3.c
new file mode 100755
index 0000000..aef041b
--- /dev/null
+++ b/iup/srcconsole/iup_lua3.c
@@ -0,0 +1,128 @@
+/** \file
+ * \brief Creates a Lua executable linked to all standard IUP libraries
+ * If user does not provide arguments environment variable
+ * "console3.lua" will be searched. And if fails
+ * internal Lua code will be executed to provide a basic interface
+ * for the user.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "lua.h"
+#include "lualib.h"
+#include "luadebug.h"
+
+#include "iup.h"
+#include "iupkey.h"
+#include "iuplua.h"
+
+#ifndef IUPLUA_NO_GL
+#include "iupgl.h"
+#include "iupluagl.h"
+#endif
+
+#ifndef IUPLUA_NO_CD
+#include "iupcontrols.h"
+#include "iupluacontrols.h"
+#include "iup_pplot.h"
+#include "iuplua_pplot.h"
+#include <cd.h>
+#include <cdlua.h>
+#include <cdluaiup.h>
+#endif
+
+#ifndef IUPLUA_NO_IM
+#include "iupluaim.h"
+#include <imlua.h>
+#endif
+
+int main ( int argc, char **argv )
+{
+ IupOpen(&argc, &argv);
+#ifndef IUPLUA_NO_GL
+ IupGLCanvasOpen();
+#endif
+#ifndef IUPLUA_NO_CD
+ IupControlsOpen();
+ IupPPlotOpen();
+#endif
+
+ lua_open();
+
+ lua_setdebug(1);
+
+ lua_iolibopen( );
+ lua_strlibopen( );
+ lua_mathlibopen( );
+
+ iuplua_open( );
+ iupkey_open( );
+#ifndef IUPLUA_NO_GL
+ iupgllua_open();
+#endif
+#ifndef IUPLUA_NO_CD
+ iupcontrolslua_open();
+ iup_pplotlua_open();
+ cdlua_open();
+ cdluaiup_open();
+#endif
+#ifndef IUPLUA_NO_IM
+ iupimlua_open();
+ imlua_open();
+#endif
+
+ if (argc <= 1)
+ {
+ if(!iuplua_dofile("console3.lua"))
+ {
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/console3_be64.loh"
+#else
+#include "loh/console3_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/console3_le64w.loh"
+#else
+#include "loh/console3_le64.loh"
+#endif
+#else
+#include "loh/console3.loh"
+#endif
+#endif
+ }
+ }
+ else
+ {
+ int ok = 1,
+ i = 1;
+
+ /* Running all .lua given as arguments */
+ while(ok & (i < argc))
+ {
+ ok = iuplua_dofile(argv[i]);
+ i++;
+ }
+
+ if(!ok)
+ {
+ return EXIT_FAILURE;
+ }
+ }
+
+#ifndef IUPLUA_NO_CD
+ cdlua_close();
+ IupControlsClose();
+#endif
+ IupClose();
+
+ lua_close();
+
+ return EXIT_SUCCESS;
+}
diff --git a/iup/srcconsole/iup_lua51.c b/iup/srcconsole/iup_lua51.c
new file mode 100755
index 0000000..ed73ac0
--- /dev/null
+++ b/iup/srcconsole/iup_lua51.c
@@ -0,0 +1,493 @@
+/*
+** Lua stand-alone interpreter
+** See Copyright Notice in lua.h
+*/
+
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define lua_c
+
+#include "lua.h"
+
+#include "lauxlib.h"
+#include "lualib.h"
+
+
+
+/******************* IUP *********************/
+#ifdef USE_STATIC
+#include "iup.h"
+#include "iuplua.h"
+
+#ifndef IUPLUA_NO_GL
+#include "iupgl.h"
+#include "iupluagl.h"
+/* #include "luagl.h" */
+#endif
+
+#ifndef IUPLUA_NO_CD
+#include "iupcontrols.h"
+#include "iupluacontrols.h"
+#include "iup_pplot.h"
+#include "iuplua_pplot.h"
+#include <cd.h>
+#include <cdgdiplus.h>
+#include <cdlua.h>
+#include <cdluaiup.h>
+#endif
+
+#ifndef IUPLUA_NO_IM
+#include "iupluaim.h"
+#include <im.h>
+#include <im_image.h>
+#include <imlua.h>
+#endif
+
+#ifndef IUPLUA_NO_IM
+#ifndef IUPLUA_NO_CD
+#include <cdluaim.h>
+#endif
+#endif
+#endif
+/******************* IUP *********************/
+
+
+static lua_State *globalL = NULL;
+
+static const char *progname = LUA_PROGNAME;
+
+
+
+static void lstop (lua_State *L, lua_Debug *ar) {
+ (void)ar; /* unused arg. */
+ lua_sethook(L, NULL, 0, 0);
+ luaL_error(L, "interrupted!");
+}
+
+
+static void laction (int i) {
+ signal(i, SIG_DFL); /* if another SIGINT happens before lstop,
+ terminate process (default action) */
+ lua_sethook(globalL, lstop, LUA_MASKCALL | LUA_MASKRET | LUA_MASKCOUNT, 1);
+}
+
+
+static void print_usage (void) {
+ fprintf(stderr,
+ "usage: %s [options] [script [args]].\n"
+ "Available options are:\n"
+ " -e stat execute string " LUA_QL("stat") "\n"
+ " -l name require library " LUA_QL("name") "\n"
+ " -i enter interactive mode after executing " LUA_QL("script") "\n"
+ " -v show version information\n"
+ " -- stop handling options\n"
+ " - execute stdin and stop handling options\n"
+ ,
+ progname);
+ fflush(stderr);
+}
+
+
+static void l_message (const char *pname, const char *msg) {
+ if (pname) fprintf(stderr, "%s: ", pname);
+ fprintf(stderr, "%s\n", msg);
+ fflush(stderr);
+}
+
+
+static int report (lua_State *L, int status) {
+ if (status && !lua_isnil(L, -1)) {
+ const char *msg = lua_tostring(L, -1);
+ if (msg == NULL) msg = "(error object is not a string)";
+ l_message(progname, msg);
+ lua_pop(L, 1);
+ }
+ return status;
+}
+
+
+static int traceback (lua_State *L) {
+ if (!lua_isstring(L, 1)) /* 'message' not a string? */
+ return 1; /* keep it intact */
+ lua_getfield(L, LUA_GLOBALSINDEX, "debug");
+ if (!lua_istable(L, -1)) {
+ lua_pop(L, 1);
+ return 1;
+ }
+ lua_getfield(L, -1, "traceback");
+ if (!lua_isfunction(L, -1)) {
+ lua_pop(L, 2);
+ return 1;
+ }
+ lua_pushvalue(L, 1); /* pass error message */
+ lua_pushinteger(L, 2); /* skip this function and traceback */
+ lua_call(L, 2, 1); /* call debug.traceback */
+ return 1;
+}
+
+
+static int docall (lua_State *L, int narg, int clear) {
+ int status;
+ int base = lua_gettop(L) - narg; /* function index */
+ lua_pushcfunction(L, traceback); /* push traceback function */
+ lua_insert(L, base); /* put it under chunk and args */
+ signal(SIGINT, laction);
+ status = lua_pcall(L, narg, (clear ? 0 : LUA_MULTRET), base);
+ signal(SIGINT, SIG_DFL);
+ lua_remove(L, base); /* remove traceback function */
+ /* force a complete garbage collection in case of errors */
+ if (status != 0) lua_gc(L, LUA_GCCOLLECT, 0);
+ return status;
+}
+
+
+static void print_version (void) {
+ l_message(NULL, LUA_RELEASE " " LUA_COPYRIGHT);
+}
+
+
+static int getargs (lua_State *L, char **argv, int n) {
+ int narg;
+ int i;
+ int argc = 0;
+ while (argv[argc]) argc++; /* count total number of arguments */
+ narg = argc - (n + 1); /* number of arguments to the script */
+ luaL_checkstack(L, narg + 3, "too many arguments to script");
+ for (i=n+1; i < argc; i++)
+ lua_pushstring(L, argv[i]);
+ lua_createtable(L, narg, n + 1);
+ for (i=0; i < argc; i++) {
+ lua_pushstring(L, argv[i]);
+ lua_rawseti(L, -2, i - n);
+ }
+ return narg;
+}
+
+
+static int dofile (lua_State *L, const char *name) {
+ int status = luaL_loadfile(L, name) || docall(L, 0, 1);
+ return report(L, status);
+}
+
+
+static int dostring (lua_State *L, const char *s, const char *name) {
+ int status = luaL_loadbuffer(L, s, strlen(s), name) || docall(L, 0, 1);
+ return report(L, status);
+}
+
+
+static int dolibrary (lua_State *L, const char *name) {
+ lua_getglobal(L, "require");
+ lua_pushstring(L, name);
+ return report(L, docall(L, 1, 1));
+}
+
+
+static const char *get_prompt (lua_State *L, int firstline) {
+ const char *p;
+ lua_getfield(L, LUA_GLOBALSINDEX, firstline ? "_PROMPT" : "_PROMPT2");
+ p = lua_tostring(L, -1);
+ if (p == NULL) p = (firstline ? LUA_PROMPT : LUA_PROMPT2);
+ lua_pop(L, 1); /* remove global */
+ return p;
+}
+
+
+static int incomplete (lua_State *L, int status) {
+ if (status == LUA_ERRSYNTAX) {
+ size_t lmsg;
+ const char *msg = lua_tolstring(L, -1, &lmsg);
+ const char *tp = msg + lmsg - (sizeof(LUA_QL("<eof>")) - 1);
+ if (strstr(msg, LUA_QL("<eof>")) == tp) {
+ lua_pop(L, 1);
+ return 1;
+ }
+ }
+ return 0; /* else... */
+}
+
+
+static int pushline (lua_State *L, int firstline) {
+ char buffer[LUA_MAXINPUT];
+ char *b = buffer;
+ size_t l;
+ const char *prmt = get_prompt(L, firstline);
+ if (lua_readline(L, b, prmt) == 0)
+ return 0; /* no input */
+ l = strlen(b);
+ if (l > 0 && b[l-1] == '\n') /* line ends with newline? */
+ b[l-1] = '\0'; /* remove it */
+ if (firstline && b[0] == '=') /* first line starts with `=' ? */
+ lua_pushfstring(L, "return %s", b+1); /* change it to `return' */
+ else
+ lua_pushstring(L, b);
+ lua_freeline(L, b);
+ return 1;
+}
+
+
+static int loadline (lua_State *L) {
+ int status;
+ lua_settop(L, 0);
+ if (!pushline(L, 1))
+ return -1; /* no input */
+ for (;;) { /* repeat until gets a complete line */
+ status = luaL_loadbuffer(L, lua_tostring(L, 1), lua_strlen(L, 1), "=stdin");
+ if (!incomplete(L, status)) break; /* cannot try to add lines? */
+ if (!pushline(L, 0)) /* no more input? */
+ return -1;
+ lua_pushliteral(L, "\n"); /* add a new line... */
+ lua_insert(L, -2); /* ...between the two lines */
+ lua_concat(L, 3); /* join them */
+ }
+ lua_saveline(L, 1);
+ lua_remove(L, 1); /* remove line */
+ return status;
+}
+
+
+static void dotty (lua_State *L) {
+ int status;
+ const char *oldprogname = progname;
+ progname = NULL;
+ while ((status = loadline(L)) != -1) {
+ if (status == 0) status = docall(L, 0, 0);
+ report(L, status);
+ if (status == 0 && lua_gettop(L) > 0) { /* any result to print? */
+ lua_getglobal(L, "print");
+ lua_insert(L, 1);
+ if (lua_pcall(L, lua_gettop(L)-1, 0, 0) != 0)
+ l_message(progname, lua_pushfstring(L,
+ "error calling " LUA_QL("print") " (%s)",
+ lua_tostring(L, -1)));
+ }
+ }
+ lua_settop(L, 0); /* clear stack */
+ fputs("\n", stdout);
+ fflush(stdout);
+ progname = oldprogname;
+}
+
+static int handle_script (lua_State *L, char **argv, int n) {
+ int status;
+ const char *fname;
+ int narg = getargs(L, argv, n); /* collect arguments */
+ lua_setglobal(L, "arg");
+ fname = argv[n];
+ if (strcmp(fname, "-") == 0 && strcmp(argv[n-1], "--") != 0)
+ fname = NULL; /* stdin */
+ status = luaL_loadfile(L, fname);
+ lua_insert(L, -(narg+1));
+ if (status == 0)
+ status = docall(L, narg, 0);
+ else
+ lua_pop(L, narg);
+ return report(L, status);
+}
+
+
+/* check that argument has no extra characters at the end */
+#define notail(x) {if ((x)[2] != '\0') return -1;}
+
+
+static int collectargs (char **argv, int *pi, int *pv, int *pe) {
+ int i;
+ for (i = 1; argv[i] != NULL; i++) {
+ if (argv[i][0] != '-') /* not an option? */
+ return i;
+ switch (argv[i][1]) { /* option */
+ case '-':
+ notail(argv[i]);
+ return (argv[i+1] != NULL ? i+1 : 0);
+ case '\0':
+ return i;
+ case 'i':
+ notail(argv[i]);
+ *pi = 1; /* go through */
+ case 'v':
+ notail(argv[i]);
+ *pv = 1;
+ break;
+ case 'e':
+ *pe = 1; /* go through */
+ case 'l':
+ if (argv[i][2] == '\0') {
+ i++;
+ if (argv[i] == NULL) return -1;
+ }
+ break;
+ default: return -1; /* invalid option */
+ }
+ }
+ return 0;
+}
+
+
+static int runargs (lua_State *L, char **argv, int n) {
+ int i;
+ for (i = 1; i < n; i++) {
+ if (argv[i] == NULL) continue;
+ lua_assert(argv[i][0] == '-');
+ switch (argv[i][1]) { /* option */
+ case 'e': {
+ const char *chunk = argv[i] + 2;
+ if (*chunk == '\0') chunk = argv[++i];
+ lua_assert(chunk != NULL);
+ if (dostring(L, chunk, "=(command line)") != 0)
+ return 1;
+ break;
+ }
+ case 'l': {
+ const char *filename = argv[i] + 2;
+ if (*filename == '\0') filename = argv[++i];
+ lua_assert(filename != NULL);
+ if (dolibrary(L, filename))
+ return 1; /* stop if file fails */
+ break;
+ }
+ default: break;
+ }
+ }
+ return 0;
+}
+
+static int handle_luainit (lua_State *L) {
+ const char *init = getenv(LUA_INIT);
+ if (init == NULL) return 0; /* status OK */
+ else if (init[0] == '@')
+ return dofile(L, init+1);
+ else
+ return dostring(L, init, "=" LUA_INIT);
+}
+
+
+struct Smain {
+ int argc;
+ char **argv;
+ int status;
+};
+
+
+/******************* IUP *********************/
+#ifdef USE_STATIC
+#ifdef IUPLUA_IMGLIB
+int luaopen_iupluaimglib(lua_State* L);
+#endif
+#endif
+
+static void iuplua_openlibs (lua_State *L) {
+ lua_pushliteral(L, LUA_COPYRIGHT);
+ lua_setglobal(L, "_COPYRIGHT"); /* set global _COPYRIGHT */
+
+#ifdef USE_STATIC
+ /* iuplua initialization */
+ iuplua_open(L);
+ iupkey_open(L);
+#ifdef IUPLUA_IMGLIB
+ luaopen_iupluaimglib(L);
+#endif
+
+#ifndef IUPLUA_NO_CD
+ iupcontrolslua_open(L);
+ iup_pplotlua_open(L);
+ cdlua_open(L);
+ cdluaiup_open(L);
+#endif
+#ifndef IUPLUA_NO_IM
+ iupimlua_open(L);
+ imlua_open(L);
+ imlua_open_process(L);
+#endif
+#ifndef IUPLUA_NO_IM
+#ifndef IUPLUA_NO_CD
+ cdluaim_open(L);
+#endif
+#endif
+#endif
+}
+
+static void iuplua_input (lua_State *L) {
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/console5_be64.loh"
+#else
+#include "loh/console5_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/console5_le64w.loh"
+#else
+#include "loh/console5_le64.loh"
+#endif
+#else
+#include "loh/console5.loh"
+#endif
+#endif
+}
+/******************* IUP *********************/
+
+
+static int pmain (lua_State *L) {
+ struct Smain *s = (struct Smain *)lua_touserdata(L, 1);
+ char **argv = s->argv;
+ int script;
+ int has_i = 0, has_v = 0, has_e = 0;
+ globalL = L;
+ if (argv[0] && argv[0][0]) progname = argv[0];
+ lua_gc(L, LUA_GCSTOP, 0); /* stop collector during initialization */
+ luaL_openlibs(L); /* open libraries */
+ lua_gc(L, LUA_GCRESTART, 0);
+/******************* IUP *********************/
+ iuplua_openlibs(L);
+/******************* IUP *********************/
+
+ s->status = handle_luainit(L);
+ if (s->status != 0) return 0;
+ script = collectargs(argv, &has_i, &has_v, &has_e);
+ if (script < 0) { /* invalid args? */
+ print_usage();
+ s->status = 1;
+ return 0;
+ }
+ if (has_v) print_version();
+ s->status = runargs(L, argv, (script > 0) ? script : s->argc);
+ if (s->status != 0) return 0;
+ if (script)
+ s->status = handle_script(L, argv, script);
+ if (s->status != 0) return 0;
+ if (has_i)
+ dotty(L);
+ else if (script == 0 && !has_e && !has_v) {
+ if (lua_stdin_is_tty()) {
+ print_version();
+/******************* IUP *********************/
+/* dotty(L); */
+ iuplua_input(L);
+/******************* IUP *********************/
+ }
+ else dofile(L, NULL); /* executes stdin as a file */
+ }
+ return 0;
+}
+
+
+int main (int argc, char **argv) {
+ int status;
+ struct Smain s;
+ lua_State *L = lua_open(); /* create state */
+ if (L == NULL) {
+ l_message(argv[0], "cannot create state: not enough memory");
+ return EXIT_FAILURE;
+ }
+ s.argc = argc;
+ s.argv = argv;
+ status = lua_cpcall(L, &pmain, &s);
+ report(L, status);
+ lua_close(L);
+ return (status || s.status) ? EXIT_FAILURE : EXIT_SUCCESS;
+}
diff --git a/iup/srcconsole/iuplua3.bat b/iup/srcconsole/iuplua3.bat
new file mode 100644
index 0000000..e58a12b
--- /dev/null
+++ b/iup/srcconsole/iuplua3.bat
@@ -0,0 +1,3 @@
+@echo off
+REM Script generated automatically by tecmake v3.20
+..\bin\Win64\iuplua3.exe %*
diff --git a/iup/srcconsole/iuplua3.mak b/iup/srcconsole/iuplua3.mak
new file mode 100755
index 0000000..e892496
--- /dev/null
+++ b/iup/srcconsole/iuplua3.mak
@@ -0,0 +1,90 @@
+PROJNAME = iup
+APPNAME = iuplua3
+APPTYPE = console
+OPT = YES
+
+IUP := ..
+
+# IM is a C++ library with a C API
+LINKER = $(CPPC)
+
+SRC = iup_lua3.c
+SRCLUA = console3.lua
+LOHDIR = loh
+
+USE_LUA = Yes
+USE_IUPLUA = Yes
+USE_IUP3 = Yes
+
+USE_STATIC = Yes
+
+ifdef BUILD_64
+ ifneq ($(findstring SunOS, $(TEC_UNAME)), )
+ LINKER = cc
+ IUPLUA_NO_IM = Yes
+ endif
+ ifneq ($(findstring AIX, $(TEC_UNAME)), )
+ LINKER = cc
+ IUPLUA_NO_IM = Yes
+ endif
+endif
+
+ifeq "$(TEC_UNAME)" "SunOS510x86"
+ IUPLUA_NO_GL = Yes
+endif
+
+#IUPLUA_NO_GL = Yes
+ifndef IUPLUA_NO_GL
+ USE_OPENGL = Yes
+else
+ DEFINES = IUPLUA_NO_GL
+endif
+
+#IUPLUA_NO_CD = Yes
+ifndef IUPLUA_NO_CD
+ USE_CD = Yes
+ USE_CDLUA = Yes
+ USE_IUPCONTROLS = Yes
+ ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ LIBS += iup_pplot iuplua_pplot3
+ else
+ IUPLIB = $(IUP)/lib/$(TEC_UNAME)
+ SLIB += $(IUPLIB)/libiuplua_pplot3.a $(IUPLIB)/libiup_pplot.a
+ endif
+else
+ DEFINES += IUPLUA_NO_CD
+endif
+
+#IUPLUA_NO_IM = Yes
+ifndef IUPLUA_NO_IM
+ USE_IM = Yes
+ USE_IMLUA = Yes
+
+ ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ LIBS += iupim iupluaim3
+ else
+ IUPLIB = $(IUP)/lib/$(TEC_UNAME)
+ SLIB += $(IUPLIB)/libiupluaim3.a $(IUPLIB)/libiupim.a
+ endif
+else
+ DEFINES += IUPLUA_NO_IM
+endif
+
+ifneq ($(findstring AIX, $(TEC_UNAME)), )
+ FLAGS += -mminimal-toc
+ OPTFLAGS = -mminimal-toc -ansi -pedantic
+ LFLAGS = -Xlinker "-bbigtoc"
+endif
+
+ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ SRC += iuplua3.rc
+endif
+
+ifeq ($(TEC_UNAME), vc8)
+ ifdef DBG
+ #debug info not working for vc8 linker
+ define DBG
+ endef
+ endif
+endif
+
diff --git a/iup/srcconsole/iuplua3.rc b/iup/srcconsole/iuplua3.rc
new file mode 100755
index 0000000..e741199
--- /dev/null
+++ b/iup/srcconsole/iuplua3.rc
@@ -0,0 +1,45 @@
+0 ICON "lua.ico"
+TECGRAF_ICON ICON "..\\etc\\tecgraf.ico"
+
+1 VERSIONINFO
+ FILEVERSION 3,0,0,0
+ PRODUCTVERSION 3,0,0,0
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "www.tecgraf.puc-rio.br/iup\0"
+ VALUE "CompanyName", "Tecgraf/PUC-Rio\0"
+ VALUE "FileDescription", "Lua Windows Standalone Interpreter with IUP\0"
+ VALUE "FileVersion", "3.0.0\0"
+ VALUE "LegalCopyright", "Copyright © 1994-2009 Tecgraf, PUC-Rio.\0"
+ VALUE "OriginalFilename", "iuplua51.exe\0"
+ VALUE "ProductName", "IUP for Windows\0"
+ VALUE "ProductVersion", "3.0.0\0"
+ END
+ END
+END
+
+CURSOR_PEN CURSOR "..\\etc\\pen.cur"
+
+/* To avoid the inclusion of <winuser.h> */
+#define WS_CHILD 0x40000000L
+#define WS_VISIBLE 0x10000000L
+#define WS_CLIPSIBLINGS 0x04000000L
+#define DS_3DLOOK 0x0004L
+#define DS_CONTROL 0x0400L
+#define SS_OWNERDRAW 0x0000000DL
+#define WS_EX_STATICEDGE 0x00020000L
+
+#define IUP_PREVIEWCANVAS 3000
+
+iupPreviewDlg DIALOG DISCARDABLE 0, 0, 195, 95
+STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "", IUP_PREVIEWCANVAS, "STATIC", SS_OWNERDRAW, 70, 0, 120, 90, WS_EX_STATICEDGE
+END
+
+/* The following line enable Windows XP Visual Styles */
+1 24 "..\\etc\\iup.manifest"
diff --git a/iup/srcconsole/iuplua5.rc b/iup/srcconsole/iuplua5.rc
new file mode 100755
index 0000000..bc02e07
--- /dev/null
+++ b/iup/srcconsole/iuplua5.rc
@@ -0,0 +1,59 @@
+0 ICON "lua.ico"
+TECGRAF_ICON ICON "..\\etc\\tecgraf.ico"
+
+1 VERSIONINFO
+ FILEVERSION 3,0,0,0
+ PRODUCTVERSION 3,0,0,0
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "www.tecgraf.puc-rio.br/iup\0"
+ VALUE "CompanyName", "Tecgraf/PUC-Rio\0"
+ VALUE "FileDescription", "Lua Windows Standalone Interpreter with IUP\0"
+ VALUE "FileVersion", "3.0.0\0"
+ VALUE "LegalCopyright", "Copyright © 1994-2009 Tecgraf, PUC-Rio.\0"
+ VALUE "OriginalFilename", "iuplua51.exe\0"
+ VALUE "ProductName", "IUP for Windows\0"
+ VALUE "ProductVersion", "3.0.0\0"
+ END
+ END
+END
+
+CURSOR_PEN CURSOR "..\\etc\\pen.cur"
+
+/* To avoid the inclusion of <winuser.h> */
+#define WS_CHILD 0x40000000L
+#define WS_VISIBLE 0x10000000L
+#define WS_CLIPSIBLINGS 0x04000000L
+#define DS_3DLOOK 0x0004L
+#define DS_CONTROL 0x0400L
+#define SS_OWNERDRAW 0x0000000DL
+#define WS_EX_STATICEDGE 0x00020000L
+
+#define IUP_PREVIEWCANVAS 3000
+
+iupPreviewDlg DIALOG DISCARDABLE 0, 0, 195, 95
+STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "", IUP_PREVIEWCANVAS, "STATIC", SS_OWNERDRAW, 70, 0, 120, 90, WS_EX_STATICEDGE
+END
+
+/* The following line enable Windows XP Visual Styles */
+#ifdef MSVC8
+#ifdef TEC_64
+1 24 "wlua_dll8_x64.manifest"
+#else
+1 24 "wlua_dll8_x86.manifest"
+#endif
+#elif MSVC9
+#ifdef TEC_64
+1 24 "wlua_dll9_x64.manifest"
+#else
+1 24 "wlua_dll9_x86.manifest"
+#endif
+#else
+1 24 "..\\etc\\iup.manifest"
+#endif
diff --git a/iup/srcconsole/iuplua51 b/iup/srcconsole/iuplua51
new file mode 100755
index 0000000..a4f9a27
--- /dev/null
+++ b/iup/srcconsole/iuplua51
@@ -0,0 +1,6 @@
+#!/bin/csh
+# Script generated automatically by tecmake v3.19
+# Remove the comment bellow to set the LD_LIBRARY_PATH if needed.
+#setenv LD_LIBRARY_PATH /lib/${TEC_UNAME}:/lib/${TEC_UNAME}:$LD_LIBRARY_PATH
+if ( -r app.env ) source app.env
+exec ../bin/$TEC_UNAME/iuplua51 $*
diff --git a/iup/srcconsole/iuplua51.bat b/iup/srcconsole/iuplua51.bat
new file mode 100644
index 0000000..85331fe
--- /dev/null
+++ b/iup/srcconsole/iuplua51.bat
@@ -0,0 +1,3 @@
+@echo off
+REM Script generated automatically by tecmake v3.20
+..\bin\Win64\iuplua51.exe %*
diff --git a/iup/srcconsole/iuplua51.dep b/iup/srcconsole/iuplua51.dep
new file mode 100644
index 0000000..994ed5e
--- /dev/null
+++ b/iup/srcconsole/iuplua51.dep
@@ -0,0 +1,4 @@
+$(OBJDIR)/iup_lua51.o: iup_lua51.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../../lua5.1/include/lualib.h \
+ loh/console5_le64.loh
diff --git a/iup/srcconsole/iuplua51mot b/iup/srcconsole/iuplua51mot
new file mode 100755
index 0000000..3b9a955
--- /dev/null
+++ b/iup/srcconsole/iuplua51mot
@@ -0,0 +1,6 @@
+#!/bin/csh
+# Script generated automatically by tecmake v3.19
+# Remove the comment bellow to set the LD_LIBRARY_PATH if needed.
+#setenv LD_LIBRARY_PATH /lib/${TEC_UNAME}:/lib/${TEC_UNAME}:$LD_LIBRARY_PATH
+if ( -r app.env ) source app.env
+exec ../bin/$TEC_UNAME/iuplua51mot $*
diff --git a/iup/srcconsole/iuplua51mot.dep b/iup/srcconsole/iuplua51mot.dep
new file mode 100644
index 0000000..b174381
--- /dev/null
+++ b/iup/srcconsole/iuplua51mot.dep
@@ -0,0 +1,12 @@
+$(OBJDIR)/iup_lua51.o: iup_lua51.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../../lua5.1/include/lualib.h \
+ ../include/iup.h ../include/iupkey.h ../include/iupdef.h \
+ ../include/iuplua.h ../include/iupgl.h ../include/iupluagl.h \
+ ../include/iupcontrols.h ../include/iupluacontrols.h \
+ ../include/iup_pplot.h ../include/iuplua_pplot.h ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../../cd/include/cdgdiplus.h \
+ ../../cd/include/cdlua.h ../../cd/include/cdluaiup.h \
+ ../include/iupluaim.h ../../im/include/im.h ../../im/include/old_im.h \
+ ../../im/include/im_image.h ../../im/include/imlua.h \
+ ../../cd/include/cdluaim.h loh/console5_le64.loh
diff --git a/iup/srcconsole/loh/console3.loh b/iup/srcconsole/loh/console3.loh
new file mode 100755
index 0000000..5cfd348
--- /dev/null
+++ b/iup/srcconsole/loh/console3.loh
@@ -0,0 +1,254 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/console3.lo");
+*/
+/* ../obj/iuplua3/console3.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64, 99,111,110,115,111,
+108,101, 51, 46,108,117, 97, 0, 0, 0, 2,170, 17, 0, 11, 1, 25, 0, 11, 3,
+ 25, 2, 11, 5, 25, 4, 11, 7, 25, 6, 4, 0, 25, 8, 15, 10, 22, 3, 11, 11,
+ 15, 12, 11, 13, 11, 14, 11, 15, 11, 16, 30, 2, 2, 1, 1, 25, 9, 15, 18, 22,
+ 2, 11, 19, 11, 20, 11, 13, 11, 21, 30, 1, 2, 1, 1, 25, 17, 15, 18, 22, 3,
+ 11, 19, 11, 23, 11, 13, 11, 21, 11, 11, 11, 24, 30, 2, 2, 1, 1, 25, 22, 15,
+ 9, 11, 25, 11, 26, 26, 15, 28, 22, 3, 11, 13, 11, 29, 11, 30, 11, 31, 11, 32,
+ 11, 33, 30, 2, 2, 1, 1, 25, 27, 15, 28, 22, 3, 11, 13, 11, 29, 11, 30, 11,
+ 35, 11, 32, 11, 36, 30, 2, 2, 1, 1, 25, 34, 15, 28, 22, 2, 11, 13, 11, 29,
+ 11, 30, 11, 38, 30, 1, 2, 1, 1, 25, 37, 15, 28, 22, 2, 11, 13, 11, 29, 11,
+ 30, 11, 40, 30, 1, 2, 1, 1, 25, 39, 15, 28, 22, 2, 11, 13, 11, 29, 11, 30,
+ 11, 42, 30, 1, 2, 1, 1, 25, 41, 15, 41, 11, 32, 11, 43, 26, 15, 44, 11, 45,
+ 11, 46, 26, 15, 37, 11, 45, 11, 47, 26, 15, 49, 22, 4, 15, 50, 22, 2, 15, 51,
+ 22, 3, 15, 49, 22, 7, 15, 37, 15, 41, 15, 44, 15, 34, 15, 27, 29, 0, 5, 11,
+ 52, 11, 53, 11, 54, 11, 55, 30, 1, 2, 1, 1, 15, 49, 22, 4, 15, 56, 15, 57,
+ 15, 58, 29, 0, 3, 11, 59, 11, 60, 30, 0, 2, 1, 1, 29, 0, 2, 11, 59, 11,
+ 61, 30, 0, 2, 1, 1, 29, 0, 1, 11, 62, 11, 63, 30, 0, 2, 1, 1, 29, 0,
+ 1, 11, 59, 11, 64, 11, 52, 11, 65, 11, 54, 11, 66, 30, 2, 2, 1, 1, 25, 48,
+ 15, 68, 22, 2, 15, 69, 22, 2, 15, 68, 22, 1, 15, 70, 22, 2, 11, 62, 11, 71,
+ 11, 45, 11, 72, 30, 1, 2, 1, 1, 29, 0, 1, 2, 1, 1, 29, 0, 1, 11, 62,
+ 11, 73, 30, 0, 2, 1, 1, 15, 69, 22, 2, 15, 68, 22, 2, 15, 74, 18, 75, 22,
+ 2, 11, 62, 11, 76, 11, 45, 15, 6, 30, 1, 2, 1, 1, 15, 70, 22, 2, 11, 62,
+ 11, 77, 11, 45, 11, 78, 30, 1, 2, 1, 1, 29, 0, 2, 2, 1, 1, 29, 0, 1,
+ 11, 62, 11, 79, 30, 0, 2, 1, 1, 29, 0, 2, 2, 1, 1, 25, 67, 15, 81, 22,
+ 4, 15, 48, 29, 0, 1, 11, 62, 11, 82, 11, 83, 15, 67, 11, 84, 11, 72, 30, 2,
+ 2, 1, 1, 25, 80, 15, 81, 22, 5, 15, 49, 22, 8, 15, 18, 22, 1, 11, 62, 11,
+ 82, 30, 0, 2, 1, 1, 15, 86, 22, 1, 11, 13, 11, 66, 30, 0, 2, 1, 1, 15,
+ 86, 22, 1, 11, 13, 11, 66, 30, 0, 2, 1, 1, 15, 50, 22, 1, 15, 49, 22, 3,
+ 15, 18, 22, 1, 11, 62, 11, 87, 30, 0, 2, 1, 1, 15, 18, 22, 1, 11, 62, 11,
+ 88, 30, 0, 2, 1, 1, 15, 18, 22, 1, 11, 62, 11, 89, 30, 0, 2, 1, 1, 29,
+ 0, 3, 2, 1, 1, 29, 0, 1, 2, 1, 1, 15, 86, 22, 1, 11, 13, 11, 66, 30,
+ 0, 2, 1, 1, 15, 28, 22, 3, 11, 62, 11, 90, 11, 45, 11, 72, 11, 13, 11, 91,
+ 30, 2, 2, 1, 1, 29, 0, 6, 11, 52, 11, 92, 11, 59, 11, 64, 30, 1, 2, 1,
+ 1, 29, 0, 1, 11, 93, 15, 94, 11, 95, 15, 94, 11, 96, 15, 94, 11, 62, 11, 97,
+ 30, 3, 2, 1, 1, 25, 85, 15, 80, 20, 98, 2, 0, 1, 15, 99, 2, 0, 0, 15,
+100, 15, 80, 2, 0, 1, 15,100, 15, 85, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,101, 2, 0, 0, 0, 8,114,101,113,117,105,114,101, 0, 4, 0, 0, 0, 4,
+ 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10,112,114,
+105,110,116,118, 97,114,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64, 99,111,
+110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 6, 0, 15, 2, 4,
+ 0, 2, 2, 1, 15, 3, 11, 4, 2, 0, 1, 50, 34, 15, 3, 15, 5, 13, 0, 2,
+ 1, 1, 11, 6, 42, 15, 5, 13, 1, 2, 1, 1, 42, 2, 0, 1, 15, 2, 13, 0,
+ 2, 2, 1, 23, 1, 23, 0, 13, 0, 4, 0, 31, 54, 41, 15, 3, 11, 7, 2, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 2,110, 0, 2, 0, 0,
+ 0, 2,118, 0, 2, 0, 0, 0, 8,110,101,120,116,118, 97,114, 0, 2, 0, 0,
+ 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 20, 45, 45,112,114,105,110,116,
+118, 97,114,115, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111,
+115,116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 18, 45,
+ 45,112,114,105,110,116,118, 97,114,115, 32, 69,110,100, 45, 45, 0, 2, 0, 0,
+ 0, 11,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 0, 0, 0, 17, 0, 0,
+ 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 71,
+ 7, 1, 15, 3, 13, 0, 4, 0, 2, 2, 2, 15, 4, 11, 5, 2, 0, 1, 50, 36,
+ 15, 4, 15, 6, 13, 1, 2, 1, 1, 11, 7, 42, 15, 6, 13, 2, 2, 1, 1, 42,
+ 2, 0, 1, 15, 3, 13, 0, 13, 1, 2, 2, 2, 23, 2, 23, 1, 13, 1, 4, 0,
+ 31, 54, 43, 15, 4, 11, 8, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2,
+ 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 2,118, 0,
+ 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,112,114,105,110,116,
+ 0, 2, 0, 0, 0, 21, 45, 45,112,114,105,110,116,116, 97, 98,108,101, 32, 83,
+116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103,
+ 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 19, 45, 45,112,114,105,110,116,
+116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0, 2, 0, 0, 0, 19,112,114,105,
+110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111, 0, 4, 0, 0, 0,
+ 27, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0,
+ 0, 0,241, 5, 0, 15, 0, 15, 1, 11, 2, 42, 15, 3, 18, 4, 42, 2, 0, 1,
+ 15, 5, 52, 17, 15, 0, 15, 5, 18, 1, 11, 2, 42, 15, 5, 18, 6, 42, 2, 0,
+ 1, 15, 7, 48, 4, 15, 7, 18, 1, 52, 17, 15, 0, 15, 7, 18, 1, 11, 2, 42,
+ 15, 7, 18, 6, 42, 2, 0, 1, 15, 0, 15, 3, 18, 1, 11, 2, 42, 15, 3, 18,
+ 6, 42, 2, 0, 1, 15, 0, 11, 8, 2, 0, 1, 15, 0, 11, 9, 2, 0, 1, 15,
+ 0, 11, 10, 15, 3, 18, 11, 11, 12, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, 13,
+ 15, 3, 18, 11, 11, 14, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 11, 11, 16, 2,
+ 1, 1, 13, 0, 52, 9, 15, 0, 11, 17, 13, 0, 2, 0, 2, 15, 0, 11, 18, 15,
+ 3, 18, 11, 11, 19, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, 20, 15, 3, 18, 11,
+ 11, 21, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 22, 52, 12, 15, 0, 11, 23, 15,
+ 3, 18, 22, 42, 2, 0, 1, 15, 3, 18, 24, 52, 12, 15, 0, 11, 25, 15, 3, 18,
+ 24, 42, 2, 0, 1, 15, 3, 18, 26, 52, 12, 15, 0, 11, 27, 15, 3, 18, 26, 42,
+ 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 28, 2, 0, 0, 0, 6,112,114,105,
+110,116, 0, 2, 0, 0, 0, 9, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0,
+ 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 15, 95, 76,
+ 85, 65, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 3,105,109,
+ 0, 2, 0, 0, 0, 11, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, 0,
+ 0, 3, 99,100, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 9, 73, 85, 80, 32,
+ 73,110,102,111, 0, 2, 0, 0, 0, 11, 32, 32, 83,121,115,116,101,109, 58, 32,
+ 0, 2, 0, 0, 0, 10, 71,101,116, 71,108,111, 98, 97,108, 0, 2, 0, 0, 0,
+ 7, 83, 89, 83, 84, 69, 77, 0, 2, 0, 0, 0, 19, 32, 32, 83,121,115,116,101,
+109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0, 0, 14, 83, 89, 83,
+ 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, 4,109,111,116, 0,
+ 2, 0, 0, 0, 13, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0,
+ 0, 0, 18, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32,
+ 0, 2, 0, 0, 0, 16, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122,101, 58,
+ 32, 0, 2, 0, 0, 0, 11, 83, 67, 82, 69, 69, 78, 83, 73, 90, 69, 0, 2, 0,
+ 0, 0, 17, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112,116,104, 58, 32, 0,
+ 2, 0, 0, 0, 12, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 2, 0, 0,
+ 0, 10, 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 2, 0, 0, 0, 18, 32, 32, 79,
+112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 2, 0, 0, 0, 12,
+ 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 2, 0, 0, 0, 20, 32, 32, 79,
+112,101,110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58, 32, 0, 2, 0, 0,
+ 0, 11, 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, 19, 32, 32,
+ 79,112,101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0,
+ 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 12,109,117,108, 67,
+111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108,116,
+105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2, 0,
+ 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 5,115,105,122,101,
+ 0, 2, 0, 0, 0, 8, 50, 48, 48,120, 49, 50, 48, 0, 2, 0, 0, 0, 5,102,
+111,110,116, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82,
+ 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 9,112,111,115,108, 97, 98,101,108,
+ 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,
+116,105,116,108,101, 0, 2, 0, 0, 0, 4, 48, 58, 48, 0, 2, 0, 0, 0, 4,
+ 53, 48,120, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2,
+ 0, 0, 0, 1, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76,
+ 0, 2, 0, 0, 0, 8, 99, 97,114,101,116, 99, 98, 0, 4, 0, 0, 0, 53, 0,
+ 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,
+ 16, 7, 3, 15, 3, 11, 4, 13, 1, 11, 5, 42, 13, 2, 42, 26, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 4,
+108,105,110, 0, 2, 0, 0, 0, 4, 99,111,108, 0, 2, 0, 0, 0, 9,112,111,
+115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0,
+ 0, 0, 2, 58, 0, 2, 0, 0, 0, 11, 98,117,116, 69,120,101, 99,117,116,101,
+ 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0,
+ 6, 53, 48,120, 49, 53, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0,
+ 0, 0, 8, 69,120,101, 99,117,116,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,
+111,110, 0, 2, 0, 0, 0, 28,100,111,115,116,114,105,110,103, 40,109,117,108,
+ 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 41, 0, 2, 0, 0, 0,
+ 17, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97,110,100,115, 0, 2, 0,
+ 0, 0, 6, 67,108,101, 97,114, 0, 2, 0, 0, 0, 61,109,117,108, 67,111,109,
+109, 97,110,100,115, 46,118, 97,108,117,101, 32, 61, 32, 39, 39, 32, 32,102,105,
+108,101,108, 97, 98,101,108, 46,116,105,116,108,101, 32, 61, 32, 39, 39, 32, 32,
+108, 97,115,116,102,105,108,101, 32, 61, 32,110,105,108, 0, 2, 0, 0, 0, 12,
+ 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 2, 0, 0, 0, 8, 76,111, 97,
+100, 46, 46, 46, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115, 70,
+105,108,101, 0, 2, 0, 0, 0, 11, 83, 97,118,101, 32, 65,115, 46, 46, 46, 0,
+ 2, 0, 0, 0, 12, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 2, 0, 0,
+ 0, 5, 83, 97,118,101, 0, 4, 0, 0, 0, 63, 0, 0, 0, 14, 64, 99,111,110,
+115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 4, 1, 15, 0, 4, 0,
+ 32, 52, 9, 15, 1, 20, 2, 2, 0, 1, 50, 48, 15, 4, 15, 0, 11, 5, 2, 1,
+ 2, 25, 3, 15, 3, 4, 0, 31, 52, 20, 15, 6, 15, 3, 15, 7, 18, 8, 2, 0,
+ 2, 15, 9, 15, 3, 2, 0, 1, 50, 10, 15, 10, 11, 11, 15, 12, 42, 2, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 9,108, 97,115,116,102,105,
+108,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115, 70,105,108,
+101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,110,
+111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101,
+ 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0,
+ 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0,
+ 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,102,105,
+108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67,
+ 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 2, 0, 0,
+ 0, 9,102,105,108,101,110, 97,109,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83,
+ 97,118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,
+110, 0, 4, 0, 0, 0, 77, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51,
+ 46,108,117, 97, 0, 0, 0, 0,136, 13, 1, 15, 1, 22, 5, 11, 2, 11, 3, 11,
+ 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 15, 11, 30, 4, 2, 1, 1,
+ 15, 12, 13, 1, 15, 13, 15, 13, 2, 0, 3, 13, 1, 18, 14, 13, 1, 18, 16, 25,
+ 15, 15, 17, 11, 4, 15, 15, 26, 15, 18, 13, 1, 2, 0, 1, 13, 2, 11, 19, 31,
+ 52, 62, 15, 15, 4, 0, 32, 52, 10, 15, 20, 11, 21, 15, 15, 42, 2, 0, 1, 15,
+ 23, 15, 15, 11, 24, 2, 1, 2, 13, 3, 4, 0, 31, 52, 20, 15, 25, 13, 3, 15,
+ 26, 18, 16, 2, 0, 2, 15, 27, 13, 3, 2, 0, 1, 50, 7, 15, 20, 11, 28, 2,
+ 0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 2, 0, 0, 0, 8,102,105,
+108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101,100,108,
+103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,112,101, 0, 2, 0,
+ 0, 0, 5, 83, 65, 86, 69, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2,
+ 0, 0, 0, 10, 83, 97,118,101, 32, 70,105,108,101, 0, 2, 0, 0, 0, 7,102,
+105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, 97, 0, 2, 0, 0,
+ 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, 0, 0, 10, 76,117,
+ 97, 32,102,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,108,111,119,110,101,
+119, 0, 2, 0, 0, 0, 4,121,101,115, 0, 2, 0, 0, 0, 9, 73,117,112, 80,
+111,112,117,112, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 76, 69, 70, 84, 0, 2,
+ 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, 9,108, 97,115,116,
+102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0,
+ 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11, 73,117,112, 68,
+101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49, 0, 2, 0, 0, 0, 6,
+101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97,
+118,101, 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 8,110,111,118,111, 97,114,
+113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101, 0, 2, 0, 0, 0,
+ 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, 2, 0, 0, 0, 12,
+109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 10, 99,108,111,
+115,101,102,105,108,101, 0, 2, 0, 0, 0, 17, 67, 97,110,110,111,116, 32, 83,
+ 97,118,101, 32,102,105,108,101, 0, 4, 0, 0, 0, 98, 0, 0, 0, 14, 64, 99,
+111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,153, 13, 1, 15, 1,
+ 22, 5, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10,
+ 11, 11, 30, 4, 2, 1, 1, 13, 1, 20, 12, 15, 13, 15, 13, 2, 0, 3, 13, 1,
+ 18, 14, 13, 1, 18, 16, 15, 17, 13, 1, 2, 0, 1, 13, 2, 11, 18, 32, 46, 5,
+ 13, 2, 11, 19, 32, 52, 19, 13, 2, 11, 19, 32, 52, 10, 15, 20, 11, 21, 13, 3,
+ 42, 2, 0, 1, 50, 62, 15, 23, 13, 3, 11, 24, 2, 1, 2, 13, 4, 4, 0, 32,
+ 52, 12, 15, 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 32, 15, 25, 11, 16, 15, 26,
+ 13, 4, 11, 27, 2, 1, 2, 26, 15, 28, 13, 4, 2, 0, 1, 13, 3, 25, 29, 15,
+ 30, 11, 4, 15, 29, 26, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 31, 2, 0, 0,
+ 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,
+108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,112,
+101, 0, 2, 0, 0, 0, 5, 79, 80, 69, 78, 0, 2, 0, 0, 0, 6,116,105,116,
+108,101, 0, 2, 0, 0, 0, 10, 76,111, 97,100, 32, 70,105,108,101, 0, 2, 0,
+ 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, 97,
+ 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, 0,
+ 0, 10, 76,117, 97, 32, 70,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,108,
+111,119,110,101,119, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 6,112,
+111,112,117,112, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82,
+ 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, 8,110,101,
+119,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0,
+ 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49,
+ 0, 2, 0, 0, 0, 2, 49, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2,
+ 0, 0, 0, 18, 67, 97,110,110,111,116, 32,108,111, 97,100, 32,102,105,108,101,
+ 32, 0, 2, 0, 0, 0, 3,102,112, 0, 2, 0, 0, 0, 9,111,112,101,110,102,
+105,108,101, 0, 2, 0, 0, 0, 2,114, 0, 2, 0, 0, 0, 12,109,117,108, 67,
+111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 5,114,101, 97,100, 0, 2, 0,
+ 0, 0, 3, 42, 97, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,102,105,108,101,
+ 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 10,
+102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11,118, 98,120, 67,111,
+110,115,111,108,101, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0, 2,
+ 0, 0, 0, 9,105,117,112,102,114, 97,109,101, 0, 2, 0, 0, 0, 8,105,117,
+112,104, 98,111,120, 0, 2, 0, 0, 0, 7,109, 97,114,103,105,110, 0, 2, 0,
+ 0, 0, 4, 48,120, 48, 0, 2, 0, 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0,
+ 3, 49, 48, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2,
+ 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0,
+ 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 10, 97,108,105,103,110,
+109,101,110,116, 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0,
+ 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0,
+ 0, 0, 9, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 8, 65, 67, 69,
+ 78, 84, 69, 82, 0, 2, 0, 0, 0, 4, 53,120, 53, 0, 2, 0, 0, 0, 2, 53,
+ 0, 2, 0, 0, 0, 8,109,110,117, 77, 97,105,110, 0, 2, 0, 0, 0, 8,105,
+117,112,109,101,110,117, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101,
+110,117, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 2, 0, 0, 0,
+ 5, 69,120,105,116, 0, 2, 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85,
+ 80, 95, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 5, 70,105,108,101, 0, 2, 0,
+ 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2, 0, 0,
+ 0, 22, 80,114,105,110,116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111,
+ 46, 46, 46, 0, 2, 0, 0, 0, 9, 65, 98,111,117,116, 46, 46, 46, 0, 2, 0,
+ 0, 0, 39,100,108,103, 65, 98,111,117,116, 58,112,111,112,117,112, 40, 73, 85,
+ 80, 95, 67, 69, 78, 84, 69, 82, 44, 32, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82,
+ 41, 0, 2, 0, 0, 0, 5, 72,101,108,112, 0, 2, 0, 0, 0, 8,100,108,103,
+ 77, 97,105,110, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0,
+ 2, 0, 0, 0, 29, 67,111,109,112,108,101,116,101, 32, 73,117,112, 76,117, 97,
+ 51, 32, 73,110,116,101,114,112,114,101,116,101,114, 0, 2, 0, 0, 0, 5,109,
+101,110,117, 0, 2, 0, 0, 0, 9, 99,108,111,115,101, 95, 99, 98, 0, 2, 0,
+ 0, 0, 9,100,108,103, 65, 98,111,117,116, 0, 2, 0, 0, 0, 8,105,117,112,
+102,105,108,108, 0, 2, 0, 0, 0, 16, 84,101, 99,103,114, 97,102, 47, 80, 85,
+ 67, 45, 82,105,111, 0, 2, 0, 0, 0, 18, 77, 97,114,107, 47, 79,118,237,100,
+105,111, 47, 83, 99,117,114,105, 0, 2, 0, 0, 0, 23,105,117,112, 64,116,101,
+ 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,114, 0, 2, 0, 0,
+ 0, 3, 79, 75, 0, 2, 0, 0, 0, 6, 53, 48, 88, 50, 48, 0, 2, 0, 0, 0,
+ 6, 49, 48,120, 49, 48, 0, 2, 0, 0, 0, 7,109, 97,120, 98,111,120, 0, 2,
+ 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0, 2, 0, 0, 0, 7,109,105,110, 98,
+111,120, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 6,
+ 65, 98,111,117,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 2, 0, 0, 0,
+ 12, 73,117,112, 77, 97,105,110, 76,111,111,112, 0, 2, 0, 0, 0, 11, 73,117,
+112, 68,101,115,116,114,111,121, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/console3.lo");
+}
diff --git a/iup/srcconsole/loh/console3_be32.loh b/iup/srcconsole/loh/console3_be32.loh
new file mode 100755
index 0000000..8cae3eb
--- /dev/null
+++ b/iup/srcconsole/loh/console3_be32.loh
@@ -0,0 +1,254 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/console3_be32.lo");
+*/
+/* ../obj/iuplua3/console3_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64, 99,111,110,115,111,
+108,101, 51, 46,108,117, 97, 0, 0, 0, 2,170, 17, 0, 11, 1, 25, 0, 11, 3,
+ 25, 2, 11, 5, 25, 4, 11, 7, 25, 6, 4, 0, 25, 8, 15, 10, 22, 3, 11, 11,
+ 15, 12, 11, 13, 11, 14, 11, 15, 11, 16, 30, 2, 2, 1, 1, 25, 9, 15, 18, 22,
+ 2, 11, 19, 11, 20, 11, 13, 11, 21, 30, 1, 2, 1, 1, 25, 17, 15, 18, 22, 3,
+ 11, 19, 11, 23, 11, 13, 11, 21, 11, 11, 11, 24, 30, 2, 2, 1, 1, 25, 22, 15,
+ 9, 11, 25, 11, 26, 26, 15, 28, 22, 3, 11, 13, 11, 29, 11, 30, 11, 31, 11, 32,
+ 11, 33, 30, 2, 2, 1, 1, 25, 27, 15, 28, 22, 3, 11, 13, 11, 29, 11, 30, 11,
+ 35, 11, 32, 11, 36, 30, 2, 2, 1, 1, 25, 34, 15, 28, 22, 2, 11, 13, 11, 29,
+ 11, 30, 11, 38, 30, 1, 2, 1, 1, 25, 37, 15, 28, 22, 2, 11, 13, 11, 29, 11,
+ 30, 11, 40, 30, 1, 2, 1, 1, 25, 39, 15, 28, 22, 2, 11, 13, 11, 29, 11, 30,
+ 11, 42, 30, 1, 2, 1, 1, 25, 41, 15, 41, 11, 32, 11, 43, 26, 15, 44, 11, 45,
+ 11, 46, 26, 15, 37, 11, 45, 11, 47, 26, 15, 49, 22, 4, 15, 50, 22, 2, 15, 51,
+ 22, 3, 15, 49, 22, 7, 15, 37, 15, 41, 15, 44, 15, 34, 15, 27, 29, 0, 5, 11,
+ 52, 11, 53, 11, 54, 11, 55, 30, 1, 2, 1, 1, 15, 49, 22, 4, 15, 56, 15, 57,
+ 15, 58, 29, 0, 3, 11, 59, 11, 60, 30, 0, 2, 1, 1, 29, 0, 2, 11, 59, 11,
+ 61, 30, 0, 2, 1, 1, 29, 0, 1, 11, 62, 11, 63, 30, 0, 2, 1, 1, 29, 0,
+ 1, 11, 59, 11, 64, 11, 52, 11, 65, 11, 54, 11, 66, 30, 2, 2, 1, 1, 25, 48,
+ 15, 68, 22, 2, 15, 69, 22, 2, 15, 68, 22, 1, 15, 70, 22, 2, 11, 62, 11, 71,
+ 11, 45, 11, 72, 30, 1, 2, 1, 1, 29, 0, 1, 2, 1, 1, 29, 0, 1, 11, 62,
+ 11, 73, 30, 0, 2, 1, 1, 15, 69, 22, 2, 15, 68, 22, 2, 15, 74, 18, 75, 22,
+ 2, 11, 62, 11, 76, 11, 45, 15, 6, 30, 1, 2, 1, 1, 15, 70, 22, 2, 11, 62,
+ 11, 77, 11, 45, 11, 78, 30, 1, 2, 1, 1, 29, 0, 2, 2, 1, 1, 29, 0, 1,
+ 11, 62, 11, 79, 30, 0, 2, 1, 1, 29, 0, 2, 2, 1, 1, 25, 67, 15, 81, 22,
+ 4, 15, 48, 29, 0, 1, 11, 62, 11, 82, 11, 83, 15, 67, 11, 84, 11, 72, 30, 2,
+ 2, 1, 1, 25, 80, 15, 81, 22, 5, 15, 49, 22, 8, 15, 18, 22, 1, 11, 62, 11,
+ 82, 30, 0, 2, 1, 1, 15, 86, 22, 1, 11, 13, 11, 66, 30, 0, 2, 1, 1, 15,
+ 86, 22, 1, 11, 13, 11, 66, 30, 0, 2, 1, 1, 15, 50, 22, 1, 15, 49, 22, 3,
+ 15, 18, 22, 1, 11, 62, 11, 87, 30, 0, 2, 1, 1, 15, 18, 22, 1, 11, 62, 11,
+ 88, 30, 0, 2, 1, 1, 15, 18, 22, 1, 11, 62, 11, 89, 30, 0, 2, 1, 1, 29,
+ 0, 3, 2, 1, 1, 29, 0, 1, 2, 1, 1, 15, 86, 22, 1, 11, 13, 11, 66, 30,
+ 0, 2, 1, 1, 15, 28, 22, 3, 11, 62, 11, 90, 11, 45, 11, 72, 11, 13, 11, 91,
+ 30, 2, 2, 1, 1, 29, 0, 6, 11, 52, 11, 92, 11, 59, 11, 64, 30, 1, 2, 1,
+ 1, 29, 0, 1, 11, 93, 15, 94, 11, 95, 15, 94, 11, 96, 15, 94, 11, 62, 11, 97,
+ 30, 3, 2, 1, 1, 25, 85, 15, 80, 20, 98, 2, 0, 1, 15, 99, 2, 0, 0, 15,
+100, 15, 80, 2, 0, 1, 15,100, 15, 85, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,101, 2, 0, 0, 0, 8,114,101,113,117,105,114,101, 0, 4, 0, 0, 0, 4,
+ 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10,112,114,
+105,110,116,118, 97,114,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64, 99,111,
+110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 6, 0, 15, 2, 4,
+ 0, 2, 2, 1, 15, 3, 11, 4, 2, 0, 1, 50, 34, 15, 3, 15, 5, 13, 0, 2,
+ 1, 1, 11, 6, 42, 15, 5, 13, 1, 2, 1, 1, 42, 2, 0, 1, 15, 2, 13, 0,
+ 2, 2, 1, 23, 1, 23, 0, 13, 0, 4, 0, 31, 54, 41, 15, 3, 11, 7, 2, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 2,110, 0, 2, 0, 0,
+ 0, 2,118, 0, 2, 0, 0, 0, 8,110,101,120,116,118, 97,114, 0, 2, 0, 0,
+ 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 20, 45, 45,112,114,105,110,116,
+118, 97,114,115, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111,
+115,116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 18, 45,
+ 45,112,114,105,110,116,118, 97,114,115, 32, 69,110,100, 45, 45, 0, 2, 0, 0,
+ 0, 11,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 0, 0, 0, 17, 0, 0,
+ 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 71,
+ 7, 1, 15, 3, 13, 0, 4, 0, 2, 2, 2, 15, 4, 11, 5, 2, 0, 1, 50, 36,
+ 15, 4, 15, 6, 13, 1, 2, 1, 1, 11, 7, 42, 15, 6, 13, 2, 2, 1, 1, 42,
+ 2, 0, 1, 15, 3, 13, 0, 13, 1, 2, 2, 2, 23, 2, 23, 1, 13, 1, 4, 0,
+ 31, 54, 43, 15, 4, 11, 8, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2,
+ 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 2,118, 0,
+ 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,112,114,105,110,116,
+ 0, 2, 0, 0, 0, 21, 45, 45,112,114,105,110,116,116, 97, 98,108,101, 32, 83,
+116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103,
+ 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 19, 45, 45,112,114,105,110,116,
+116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0, 2, 0, 0, 0, 19,112,114,105,
+110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111, 0, 4, 0, 0, 0,
+ 27, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0,
+ 0, 0,241, 5, 0, 15, 0, 15, 1, 11, 2, 42, 15, 3, 18, 4, 42, 2, 0, 1,
+ 15, 5, 52, 17, 15, 0, 15, 5, 18, 1, 11, 2, 42, 15, 5, 18, 6, 42, 2, 0,
+ 1, 15, 7, 48, 4, 15, 7, 18, 1, 52, 17, 15, 0, 15, 7, 18, 1, 11, 2, 42,
+ 15, 7, 18, 6, 42, 2, 0, 1, 15, 0, 15, 3, 18, 1, 11, 2, 42, 15, 3, 18,
+ 6, 42, 2, 0, 1, 15, 0, 11, 8, 2, 0, 1, 15, 0, 11, 9, 2, 0, 1, 15,
+ 0, 11, 10, 15, 3, 18, 11, 11, 12, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, 13,
+ 15, 3, 18, 11, 11, 14, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 11, 11, 16, 2,
+ 1, 1, 13, 0, 52, 9, 15, 0, 11, 17, 13, 0, 2, 0, 2, 15, 0, 11, 18, 15,
+ 3, 18, 11, 11, 19, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, 20, 15, 3, 18, 11,
+ 11, 21, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 22, 52, 12, 15, 0, 11, 23, 15,
+ 3, 18, 22, 42, 2, 0, 1, 15, 3, 18, 24, 52, 12, 15, 0, 11, 25, 15, 3, 18,
+ 24, 42, 2, 0, 1, 15, 3, 18, 26, 52, 12, 15, 0, 11, 27, 15, 3, 18, 26, 42,
+ 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 28, 2, 0, 0, 0, 6,112,114,105,
+110,116, 0, 2, 0, 0, 0, 9, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0,
+ 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 15, 95, 76,
+ 85, 65, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 3,105,109,
+ 0, 2, 0, 0, 0, 11, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, 0,
+ 0, 3, 99,100, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 9, 73, 85, 80, 32,
+ 73,110,102,111, 0, 2, 0, 0, 0, 11, 32, 32, 83,121,115,116,101,109, 58, 32,
+ 0, 2, 0, 0, 0, 10, 71,101,116, 71,108,111, 98, 97,108, 0, 2, 0, 0, 0,
+ 7, 83, 89, 83, 84, 69, 77, 0, 2, 0, 0, 0, 19, 32, 32, 83,121,115,116,101,
+109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0, 0, 14, 83, 89, 83,
+ 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, 4,109,111,116, 0,
+ 2, 0, 0, 0, 13, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0,
+ 0, 0, 18, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32,
+ 0, 2, 0, 0, 0, 16, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122,101, 58,
+ 32, 0, 2, 0, 0, 0, 11, 83, 67, 82, 69, 69, 78, 83, 73, 90, 69, 0, 2, 0,
+ 0, 0, 17, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112,116,104, 58, 32, 0,
+ 2, 0, 0, 0, 12, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 2, 0, 0,
+ 0, 10, 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 2, 0, 0, 0, 18, 32, 32, 79,
+112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 2, 0, 0, 0, 12,
+ 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 2, 0, 0, 0, 20, 32, 32, 79,
+112,101,110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58, 32, 0, 2, 0, 0,
+ 0, 11, 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, 19, 32, 32,
+ 79,112,101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0,
+ 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 12,109,117,108, 67,
+111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108,116,
+105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2, 0,
+ 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 5,115,105,122,101,
+ 0, 2, 0, 0, 0, 8, 50, 48, 48,120, 49, 50, 48, 0, 2, 0, 0, 0, 5,102,
+111,110,116, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82,
+ 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 9,112,111,115,108, 97, 98,101,108,
+ 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,
+116,105,116,108,101, 0, 2, 0, 0, 0, 4, 48, 58, 48, 0, 2, 0, 0, 0, 4,
+ 53, 48,120, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2,
+ 0, 0, 0, 1, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76,
+ 0, 2, 0, 0, 0, 8, 99, 97,114,101,116, 99, 98, 0, 4, 0, 0, 0, 53, 0,
+ 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,
+ 16, 7, 3, 15, 3, 11, 4, 13, 1, 11, 5, 42, 13, 2, 42, 26, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 4,
+108,105,110, 0, 2, 0, 0, 0, 4, 99,111,108, 0, 2, 0, 0, 0, 9,112,111,
+115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0,
+ 0, 0, 2, 58, 0, 2, 0, 0, 0, 11, 98,117,116, 69,120,101, 99,117,116,101,
+ 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0,
+ 6, 53, 48,120, 49, 53, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0,
+ 0, 0, 8, 69,120,101, 99,117,116,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,
+111,110, 0, 2, 0, 0, 0, 28,100,111,115,116,114,105,110,103, 40,109,117,108,
+ 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 41, 0, 2, 0, 0, 0,
+ 17, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97,110,100,115, 0, 2, 0,
+ 0, 0, 6, 67,108,101, 97,114, 0, 2, 0, 0, 0, 61,109,117,108, 67,111,109,
+109, 97,110,100,115, 46,118, 97,108,117,101, 32, 61, 32, 39, 39, 32, 32,102,105,
+108,101,108, 97, 98,101,108, 46,116,105,116,108,101, 32, 61, 32, 39, 39, 32, 32,
+108, 97,115,116,102,105,108,101, 32, 61, 32,110,105,108, 0, 2, 0, 0, 0, 12,
+ 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 2, 0, 0, 0, 8, 76,111, 97,
+100, 46, 46, 46, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115, 70,
+105,108,101, 0, 2, 0, 0, 0, 11, 83, 97,118,101, 32, 65,115, 46, 46, 46, 0,
+ 2, 0, 0, 0, 12, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 2, 0, 0,
+ 0, 5, 83, 97,118,101, 0, 4, 0, 0, 0, 63, 0, 0, 0, 14, 64, 99,111,110,
+115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 4, 1, 15, 0, 4, 0,
+ 32, 52, 9, 15, 1, 20, 2, 2, 0, 1, 50, 48, 15, 4, 15, 0, 11, 5, 2, 1,
+ 2, 25, 3, 15, 3, 4, 0, 31, 52, 20, 15, 6, 15, 3, 15, 7, 18, 8, 2, 0,
+ 2, 15, 9, 15, 3, 2, 0, 1, 50, 10, 15, 10, 11, 11, 15, 12, 42, 2, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 9,108, 97,115,116,102,105,
+108,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115, 70,105,108,
+101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,110,
+111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101,
+ 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0,
+ 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0,
+ 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,102,105,
+108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67,
+ 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 2, 0, 0,
+ 0, 9,102,105,108,101,110, 97,109,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83,
+ 97,118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,
+110, 0, 4, 0, 0, 0, 77, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51,
+ 46,108,117, 97, 0, 0, 0, 0,136, 13, 1, 15, 1, 22, 5, 11, 2, 11, 3, 11,
+ 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 15, 11, 30, 4, 2, 1, 1,
+ 15, 12, 13, 1, 15, 13, 15, 13, 2, 0, 3, 13, 1, 18, 14, 13, 1, 18, 16, 25,
+ 15, 15, 17, 11, 4, 15, 15, 26, 15, 18, 13, 1, 2, 0, 1, 13, 2, 11, 19, 31,
+ 52, 62, 15, 15, 4, 0, 32, 52, 10, 15, 20, 11, 21, 15, 15, 42, 2, 0, 1, 15,
+ 23, 15, 15, 11, 24, 2, 1, 2, 13, 3, 4, 0, 31, 52, 20, 15, 25, 13, 3, 15,
+ 26, 18, 16, 2, 0, 2, 15, 27, 13, 3, 2, 0, 1, 50, 7, 15, 20, 11, 28, 2,
+ 0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 2, 0, 0, 0, 8,102,105,
+108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101,100,108,
+103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,112,101, 0, 2, 0,
+ 0, 0, 5, 83, 65, 86, 69, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2,
+ 0, 0, 0, 10, 83, 97,118,101, 32, 70,105,108,101, 0, 2, 0, 0, 0, 7,102,
+105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, 97, 0, 2, 0, 0,
+ 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, 0, 0, 10, 76,117,
+ 97, 32,102,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,108,111,119,110,101,
+119, 0, 2, 0, 0, 0, 4,121,101,115, 0, 2, 0, 0, 0, 9, 73,117,112, 80,
+111,112,117,112, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 76, 69, 70, 84, 0, 2,
+ 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, 9,108, 97,115,116,
+102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0,
+ 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11, 73,117,112, 68,
+101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49, 0, 2, 0, 0, 0, 6,
+101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97,
+118,101, 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 8,110,111,118,111, 97,114,
+113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101, 0, 2, 0, 0, 0,
+ 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, 2, 0, 0, 0, 12,
+109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 10, 99,108,111,
+115,101,102,105,108,101, 0, 2, 0, 0, 0, 17, 67, 97,110,110,111,116, 32, 83,
+ 97,118,101, 32,102,105,108,101, 0, 4, 0, 0, 0, 98, 0, 0, 0, 14, 64, 99,
+111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,153, 13, 1, 15, 1,
+ 22, 5, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10,
+ 11, 11, 30, 4, 2, 1, 1, 13, 1, 20, 12, 15, 13, 15, 13, 2, 0, 3, 13, 1,
+ 18, 14, 13, 1, 18, 16, 15, 17, 13, 1, 2, 0, 1, 13, 2, 11, 18, 32, 46, 5,
+ 13, 2, 11, 19, 32, 52, 19, 13, 2, 11, 19, 32, 52, 10, 15, 20, 11, 21, 13, 3,
+ 42, 2, 0, 1, 50, 62, 15, 23, 13, 3, 11, 24, 2, 1, 2, 13, 4, 4, 0, 32,
+ 52, 12, 15, 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 32, 15, 25, 11, 16, 15, 26,
+ 13, 4, 11, 27, 2, 1, 2, 26, 15, 28, 13, 4, 2, 0, 1, 13, 3, 25, 29, 15,
+ 30, 11, 4, 15, 29, 26, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 31, 2, 0, 0,
+ 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,
+108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,112,
+101, 0, 2, 0, 0, 0, 5, 79, 80, 69, 78, 0, 2, 0, 0, 0, 6,116,105,116,
+108,101, 0, 2, 0, 0, 0, 10, 76,111, 97,100, 32, 70,105,108,101, 0, 2, 0,
+ 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, 97,
+ 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, 0,
+ 0, 10, 76,117, 97, 32, 70,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,108,
+111,119,110,101,119, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 6,112,
+111,112,117,112, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82,
+ 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, 8,110,101,
+119,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0,
+ 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49,
+ 0, 2, 0, 0, 0, 2, 49, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2,
+ 0, 0, 0, 18, 67, 97,110,110,111,116, 32,108,111, 97,100, 32,102,105,108,101,
+ 32, 0, 2, 0, 0, 0, 3,102,112, 0, 2, 0, 0, 0, 9,111,112,101,110,102,
+105,108,101, 0, 2, 0, 0, 0, 2,114, 0, 2, 0, 0, 0, 12,109,117,108, 67,
+111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 5,114,101, 97,100, 0, 2, 0,
+ 0, 0, 3, 42, 97, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,102,105,108,101,
+ 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 10,
+102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11,118, 98,120, 67,111,
+110,115,111,108,101, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0, 2,
+ 0, 0, 0, 9,105,117,112,102,114, 97,109,101, 0, 2, 0, 0, 0, 8,105,117,
+112,104, 98,111,120, 0, 2, 0, 0, 0, 7,109, 97,114,103,105,110, 0, 2, 0,
+ 0, 0, 4, 48,120, 48, 0, 2, 0, 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0,
+ 3, 49, 48, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2,
+ 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0,
+ 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 10, 97,108,105,103,110,
+109,101,110,116, 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0,
+ 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0,
+ 0, 0, 9, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 8, 65, 67, 69,
+ 78, 84, 69, 82, 0, 2, 0, 0, 0, 4, 53,120, 53, 0, 2, 0, 0, 0, 2, 53,
+ 0, 2, 0, 0, 0, 8,109,110,117, 77, 97,105,110, 0, 2, 0, 0, 0, 8,105,
+117,112,109,101,110,117, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101,
+110,117, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 2, 0, 0, 0,
+ 5, 69,120,105,116, 0, 2, 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85,
+ 80, 95, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 5, 70,105,108,101, 0, 2, 0,
+ 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2, 0, 0,
+ 0, 22, 80,114,105,110,116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111,
+ 46, 46, 46, 0, 2, 0, 0, 0, 9, 65, 98,111,117,116, 46, 46, 46, 0, 2, 0,
+ 0, 0, 39,100,108,103, 65, 98,111,117,116, 58,112,111,112,117,112, 40, 73, 85,
+ 80, 95, 67, 69, 78, 84, 69, 82, 44, 32, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82,
+ 41, 0, 2, 0, 0, 0, 5, 72,101,108,112, 0, 2, 0, 0, 0, 8,100,108,103,
+ 77, 97,105,110, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0,
+ 2, 0, 0, 0, 29, 67,111,109,112,108,101,116,101, 32, 73,117,112, 76,117, 97,
+ 51, 32, 73,110,116,101,114,112,114,101,116,101,114, 0, 2, 0, 0, 0, 5,109,
+101,110,117, 0, 2, 0, 0, 0, 9, 99,108,111,115,101, 95, 99, 98, 0, 2, 0,
+ 0, 0, 9,100,108,103, 65, 98,111,117,116, 0, 2, 0, 0, 0, 8,105,117,112,
+102,105,108,108, 0, 2, 0, 0, 0, 16, 84,101, 99,103,114, 97,102, 47, 80, 85,
+ 67, 45, 82,105,111, 0, 2, 0, 0, 0, 18, 77, 97,114,107, 47, 79,118,237,100,
+105,111, 47, 83, 99,117,114,105, 0, 2, 0, 0, 0, 23,105,117,112, 64,116,101,
+ 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,114, 0, 2, 0, 0,
+ 0, 3, 79, 75, 0, 2, 0, 0, 0, 6, 53, 48, 88, 50, 48, 0, 2, 0, 0, 0,
+ 6, 49, 48,120, 49, 48, 0, 2, 0, 0, 0, 7,109, 97,120, 98,111,120, 0, 2,
+ 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0, 2, 0, 0, 0, 7,109,105,110, 98,
+111,120, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 6,
+ 65, 98,111,117,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 2, 0, 0, 0,
+ 12, 73,117,112, 77, 97,105,110, 76,111,111,112, 0, 2, 0, 0, 0, 11, 73,117,
+112, 68,101,115,116,114,111,121, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/console3_be32.lo");
+}
diff --git a/iup/srcconsole/loh/console3_be64.loh b/iup/srcconsole/loh/console3_be64.loh
new file mode 100755
index 0000000..879d789
--- /dev/null
+++ b/iup/srcconsole/loh/console3_be64.loh
@@ -0,0 +1,254 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/console3_be64.lo");
+*/
+/* ../obj/iuplua3/console3_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64, 99,111,110,115,111,
+108,101, 51, 46,108,117, 97, 0, 0, 0, 2,170, 17, 0, 11, 1, 25, 0, 11, 3,
+ 25, 2, 11, 5, 25, 4, 11, 7, 25, 6, 4, 0, 25, 8, 15, 10, 22, 3, 11, 11,
+ 15, 12, 11, 13, 11, 14, 11, 15, 11, 16, 30, 2, 2, 1, 1, 25, 9, 15, 18, 22,
+ 2, 11, 19, 11, 20, 11, 13, 11, 21, 30, 1, 2, 1, 1, 25, 17, 15, 18, 22, 3,
+ 11, 19, 11, 23, 11, 13, 11, 21, 11, 11, 11, 24, 30, 2, 2, 1, 1, 25, 22, 15,
+ 9, 11, 25, 11, 26, 26, 15, 28, 22, 3, 11, 13, 11, 29, 11, 30, 11, 31, 11, 32,
+ 11, 33, 30, 2, 2, 1, 1, 25, 27, 15, 28, 22, 3, 11, 13, 11, 29, 11, 30, 11,
+ 35, 11, 32, 11, 36, 30, 2, 2, 1, 1, 25, 34, 15, 28, 22, 2, 11, 13, 11, 29,
+ 11, 30, 11, 38, 30, 1, 2, 1, 1, 25, 37, 15, 28, 22, 2, 11, 13, 11, 29, 11,
+ 30, 11, 40, 30, 1, 2, 1, 1, 25, 39, 15, 28, 22, 2, 11, 13, 11, 29, 11, 30,
+ 11, 42, 30, 1, 2, 1, 1, 25, 41, 15, 41, 11, 32, 11, 43, 26, 15, 44, 11, 45,
+ 11, 46, 26, 15, 37, 11, 45, 11, 47, 26, 15, 49, 22, 4, 15, 50, 22, 2, 15, 51,
+ 22, 3, 15, 49, 22, 7, 15, 37, 15, 41, 15, 44, 15, 34, 15, 27, 29, 0, 5, 11,
+ 52, 11, 53, 11, 54, 11, 55, 30, 1, 2, 1, 1, 15, 49, 22, 4, 15, 56, 15, 57,
+ 15, 58, 29, 0, 3, 11, 59, 11, 60, 30, 0, 2, 1, 1, 29, 0, 2, 11, 59, 11,
+ 61, 30, 0, 2, 1, 1, 29, 0, 1, 11, 62, 11, 63, 30, 0, 2, 1, 1, 29, 0,
+ 1, 11, 59, 11, 64, 11, 52, 11, 65, 11, 54, 11, 66, 30, 2, 2, 1, 1, 25, 48,
+ 15, 68, 22, 2, 15, 69, 22, 2, 15, 68, 22, 1, 15, 70, 22, 2, 11, 62, 11, 71,
+ 11, 45, 11, 72, 30, 1, 2, 1, 1, 29, 0, 1, 2, 1, 1, 29, 0, 1, 11, 62,
+ 11, 73, 30, 0, 2, 1, 1, 15, 69, 22, 2, 15, 68, 22, 2, 15, 74, 18, 75, 22,
+ 2, 11, 62, 11, 76, 11, 45, 15, 6, 30, 1, 2, 1, 1, 15, 70, 22, 2, 11, 62,
+ 11, 77, 11, 45, 11, 78, 30, 1, 2, 1, 1, 29, 0, 2, 2, 1, 1, 29, 0, 1,
+ 11, 62, 11, 79, 30, 0, 2, 1, 1, 29, 0, 2, 2, 1, 1, 25, 67, 15, 81, 22,
+ 4, 15, 48, 29, 0, 1, 11, 62, 11, 82, 11, 83, 15, 67, 11, 84, 11, 72, 30, 2,
+ 2, 1, 1, 25, 80, 15, 81, 22, 5, 15, 49, 22, 8, 15, 18, 22, 1, 11, 62, 11,
+ 82, 30, 0, 2, 1, 1, 15, 86, 22, 1, 11, 13, 11, 66, 30, 0, 2, 1, 1, 15,
+ 86, 22, 1, 11, 13, 11, 66, 30, 0, 2, 1, 1, 15, 50, 22, 1, 15, 49, 22, 3,
+ 15, 18, 22, 1, 11, 62, 11, 87, 30, 0, 2, 1, 1, 15, 18, 22, 1, 11, 62, 11,
+ 88, 30, 0, 2, 1, 1, 15, 18, 22, 1, 11, 62, 11, 89, 30, 0, 2, 1, 1, 29,
+ 0, 3, 2, 1, 1, 29, 0, 1, 2, 1, 1, 15, 86, 22, 1, 11, 13, 11, 66, 30,
+ 0, 2, 1, 1, 15, 28, 22, 3, 11, 62, 11, 90, 11, 45, 11, 72, 11, 13, 11, 91,
+ 30, 2, 2, 1, 1, 29, 0, 6, 11, 52, 11, 92, 11, 59, 11, 64, 30, 1, 2, 1,
+ 1, 29, 0, 1, 11, 93, 15, 94, 11, 95, 15, 94, 11, 96, 15, 94, 11, 62, 11, 97,
+ 30, 3, 2, 1, 1, 25, 85, 15, 80, 20, 98, 2, 0, 1, 15, 99, 2, 0, 0, 15,
+100, 15, 80, 2, 0, 1, 15,100, 15, 85, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0,101, 2, 0, 0, 0, 8,114,101,113,117,105,114,101, 0, 4, 0, 0, 0, 4,
+ 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10,112,114,
+105,110,116,118, 97,114,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64, 99,111,
+110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 6, 0, 15, 2, 4,
+ 0, 2, 2, 1, 15, 3, 11, 4, 2, 0, 1, 50, 34, 15, 3, 15, 5, 13, 0, 2,
+ 1, 1, 11, 6, 42, 15, 5, 13, 1, 2, 1, 1, 42, 2, 0, 1, 15, 2, 13, 0,
+ 2, 2, 1, 23, 1, 23, 0, 13, 0, 4, 0, 31, 54, 41, 15, 3, 11, 7, 2, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 2,110, 0, 2, 0, 0,
+ 0, 2,118, 0, 2, 0, 0, 0, 8,110,101,120,116,118, 97,114, 0, 2, 0, 0,
+ 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 20, 45, 45,112,114,105,110,116,
+118, 97,114,115, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111,
+115,116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 18, 45,
+ 45,112,114,105,110,116,118, 97,114,115, 32, 69,110,100, 45, 45, 0, 2, 0, 0,
+ 0, 11,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 0, 0, 0, 17, 0, 0,
+ 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 71,
+ 7, 1, 15, 3, 13, 0, 4, 0, 2, 2, 2, 15, 4, 11, 5, 2, 0, 1, 50, 36,
+ 15, 4, 15, 6, 13, 1, 2, 1, 1, 11, 7, 42, 15, 6, 13, 2, 2, 1, 1, 42,
+ 2, 0, 1, 15, 3, 13, 0, 13, 1, 2, 2, 2, 23, 2, 23, 1, 13, 1, 4, 0,
+ 31, 54, 43, 15, 4, 11, 8, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2,
+ 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 2,118, 0,
+ 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,112,114,105,110,116,
+ 0, 2, 0, 0, 0, 21, 45, 45,112,114,105,110,116,116, 97, 98,108,101, 32, 83,
+116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103,
+ 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 19, 45, 45,112,114,105,110,116,
+116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0, 2, 0, 0, 0, 19,112,114,105,
+110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111, 0, 4, 0, 0, 0,
+ 27, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0,
+ 0, 0,241, 5, 0, 15, 0, 15, 1, 11, 2, 42, 15, 3, 18, 4, 42, 2, 0, 1,
+ 15, 5, 52, 17, 15, 0, 15, 5, 18, 1, 11, 2, 42, 15, 5, 18, 6, 42, 2, 0,
+ 1, 15, 7, 48, 4, 15, 7, 18, 1, 52, 17, 15, 0, 15, 7, 18, 1, 11, 2, 42,
+ 15, 7, 18, 6, 42, 2, 0, 1, 15, 0, 15, 3, 18, 1, 11, 2, 42, 15, 3, 18,
+ 6, 42, 2, 0, 1, 15, 0, 11, 8, 2, 0, 1, 15, 0, 11, 9, 2, 0, 1, 15,
+ 0, 11, 10, 15, 3, 18, 11, 11, 12, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, 13,
+ 15, 3, 18, 11, 11, 14, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 11, 11, 16, 2,
+ 1, 1, 13, 0, 52, 9, 15, 0, 11, 17, 13, 0, 2, 0, 2, 15, 0, 11, 18, 15,
+ 3, 18, 11, 11, 19, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, 20, 15, 3, 18, 11,
+ 11, 21, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 22, 52, 12, 15, 0, 11, 23, 15,
+ 3, 18, 22, 42, 2, 0, 1, 15, 3, 18, 24, 52, 12, 15, 0, 11, 25, 15, 3, 18,
+ 24, 42, 2, 0, 1, 15, 3, 18, 26, 52, 12, 15, 0, 11, 27, 15, 3, 18, 26, 42,
+ 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 28, 2, 0, 0, 0, 6,112,114,105,
+110,116, 0, 2, 0, 0, 0, 9, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0,
+ 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 15, 95, 76,
+ 85, 65, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 3,105,109,
+ 0, 2, 0, 0, 0, 11, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, 0,
+ 0, 3, 99,100, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 9, 73, 85, 80, 32,
+ 73,110,102,111, 0, 2, 0, 0, 0, 11, 32, 32, 83,121,115,116,101,109, 58, 32,
+ 0, 2, 0, 0, 0, 10, 71,101,116, 71,108,111, 98, 97,108, 0, 2, 0, 0, 0,
+ 7, 83, 89, 83, 84, 69, 77, 0, 2, 0, 0, 0, 19, 32, 32, 83,121,115,116,101,
+109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0, 0, 14, 83, 89, 83,
+ 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, 4,109,111,116, 0,
+ 2, 0, 0, 0, 13, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0,
+ 0, 0, 18, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32,
+ 0, 2, 0, 0, 0, 16, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122,101, 58,
+ 32, 0, 2, 0, 0, 0, 11, 83, 67, 82, 69, 69, 78, 83, 73, 90, 69, 0, 2, 0,
+ 0, 0, 17, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112,116,104, 58, 32, 0,
+ 2, 0, 0, 0, 12, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 2, 0, 0,
+ 0, 10, 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 2, 0, 0, 0, 18, 32, 32, 79,
+112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 2, 0, 0, 0, 12,
+ 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 2, 0, 0, 0, 20, 32, 32, 79,
+112,101,110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58, 32, 0, 2, 0, 0,
+ 0, 11, 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, 19, 32, 32,
+ 79,112,101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0,
+ 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 12,109,117,108, 67,
+111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108,116,
+105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2, 0,
+ 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 5,115,105,122,101,
+ 0, 2, 0, 0, 0, 8, 50, 48, 48,120, 49, 50, 48, 0, 2, 0, 0, 0, 5,102,
+111,110,116, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82,
+ 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 9,112,111,115,108, 97, 98,101,108,
+ 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,
+116,105,116,108,101, 0, 2, 0, 0, 0, 4, 48, 58, 48, 0, 2, 0, 0, 0, 4,
+ 53, 48,120, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2,
+ 0, 0, 0, 1, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76,
+ 0, 2, 0, 0, 0, 8, 99, 97,114,101,116, 99, 98, 0, 4, 0, 0, 0, 53, 0,
+ 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,
+ 16, 7, 3, 15, 3, 11, 4, 13, 1, 11, 5, 42, 13, 2, 42, 26, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 4,
+108,105,110, 0, 2, 0, 0, 0, 4, 99,111,108, 0, 2, 0, 0, 0, 9,112,111,
+115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0,
+ 0, 0, 2, 58, 0, 2, 0, 0, 0, 11, 98,117,116, 69,120,101, 99,117,116,101,
+ 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0,
+ 6, 53, 48,120, 49, 53, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0,
+ 0, 0, 8, 69,120,101, 99,117,116,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,
+111,110, 0, 2, 0, 0, 0, 28,100,111,115,116,114,105,110,103, 40,109,117,108,
+ 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 41, 0, 2, 0, 0, 0,
+ 17, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97,110,100,115, 0, 2, 0,
+ 0, 0, 6, 67,108,101, 97,114, 0, 2, 0, 0, 0, 61,109,117,108, 67,111,109,
+109, 97,110,100,115, 46,118, 97,108,117,101, 32, 61, 32, 39, 39, 32, 32,102,105,
+108,101,108, 97, 98,101,108, 46,116,105,116,108,101, 32, 61, 32, 39, 39, 32, 32,
+108, 97,115,116,102,105,108,101, 32, 61, 32,110,105,108, 0, 2, 0, 0, 0, 12,
+ 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 2, 0, 0, 0, 8, 76,111, 97,
+100, 46, 46, 46, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115, 70,
+105,108,101, 0, 2, 0, 0, 0, 11, 83, 97,118,101, 32, 65,115, 46, 46, 46, 0,
+ 2, 0, 0, 0, 12, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 2, 0, 0,
+ 0, 5, 83, 97,118,101, 0, 4, 0, 0, 0, 63, 0, 0, 0, 14, 64, 99,111,110,
+115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 4, 1, 15, 0, 4, 0,
+ 32, 52, 9, 15, 1, 20, 2, 2, 0, 1, 50, 48, 15, 4, 15, 0, 11, 5, 2, 1,
+ 2, 25, 3, 15, 3, 4, 0, 31, 52, 20, 15, 6, 15, 3, 15, 7, 18, 8, 2, 0,
+ 2, 15, 9, 15, 3, 2, 0, 1, 50, 10, 15, 10, 11, 11, 15, 12, 42, 2, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 9,108, 97,115,116,102,105,
+108,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115, 70,105,108,
+101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,110,
+111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101,
+ 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0,
+ 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0,
+ 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,102,105,
+108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67,
+ 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 2, 0, 0,
+ 0, 9,102,105,108,101,110, 97,109,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83,
+ 97,118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,
+110, 0, 4, 0, 0, 0, 77, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51,
+ 46,108,117, 97, 0, 0, 0, 0,136, 13, 1, 15, 1, 22, 5, 11, 2, 11, 3, 11,
+ 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 15, 11, 30, 4, 2, 1, 1,
+ 15, 12, 13, 1, 15, 13, 15, 13, 2, 0, 3, 13, 1, 18, 14, 13, 1, 18, 16, 25,
+ 15, 15, 17, 11, 4, 15, 15, 26, 15, 18, 13, 1, 2, 0, 1, 13, 2, 11, 19, 31,
+ 52, 62, 15, 15, 4, 0, 32, 52, 10, 15, 20, 11, 21, 15, 15, 42, 2, 0, 1, 15,
+ 23, 15, 15, 11, 24, 2, 1, 2, 13, 3, 4, 0, 31, 52, 20, 15, 25, 13, 3, 15,
+ 26, 18, 16, 2, 0, 2, 15, 27, 13, 3, 2, 0, 1, 50, 7, 15, 20, 11, 28, 2,
+ 0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 2, 0, 0, 0, 8,102,105,
+108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101,100,108,
+103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,112,101, 0, 2, 0,
+ 0, 0, 5, 83, 65, 86, 69, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2,
+ 0, 0, 0, 10, 83, 97,118,101, 32, 70,105,108,101, 0, 2, 0, 0, 0, 7,102,
+105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, 97, 0, 2, 0, 0,
+ 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, 0, 0, 10, 76,117,
+ 97, 32,102,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,108,111,119,110,101,
+119, 0, 2, 0, 0, 0, 4,121,101,115, 0, 2, 0, 0, 0, 9, 73,117,112, 80,
+111,112,117,112, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 76, 69, 70, 84, 0, 2,
+ 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, 9,108, 97,115,116,
+102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0,
+ 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11, 73,117,112, 68,
+101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49, 0, 2, 0, 0, 0, 6,
+101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97,
+118,101, 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 8,110,111,118,111, 97,114,
+113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101, 0, 2, 0, 0, 0,
+ 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, 2, 0, 0, 0, 12,
+109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 10, 99,108,111,
+115,101,102,105,108,101, 0, 2, 0, 0, 0, 17, 67, 97,110,110,111,116, 32, 83,
+ 97,118,101, 32,102,105,108,101, 0, 4, 0, 0, 0, 98, 0, 0, 0, 14, 64, 99,
+111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,153, 13, 1, 15, 1,
+ 22, 5, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10,
+ 11, 11, 30, 4, 2, 1, 1, 13, 1, 20, 12, 15, 13, 15, 13, 2, 0, 3, 13, 1,
+ 18, 14, 13, 1, 18, 16, 15, 17, 13, 1, 2, 0, 1, 13, 2, 11, 18, 32, 46, 5,
+ 13, 2, 11, 19, 32, 52, 19, 13, 2, 11, 19, 32, 52, 10, 15, 20, 11, 21, 13, 3,
+ 42, 2, 0, 1, 50, 62, 15, 23, 13, 3, 11, 24, 2, 1, 2, 13, 4, 4, 0, 32,
+ 52, 12, 15, 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 32, 15, 25, 11, 16, 15, 26,
+ 13, 4, 11, 27, 2, 1, 2, 26, 15, 28, 13, 4, 2, 0, 1, 13, 3, 25, 29, 15,
+ 30, 11, 4, 15, 29, 26, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 31, 2, 0, 0,
+ 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,
+108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,112,
+101, 0, 2, 0, 0, 0, 5, 79, 80, 69, 78, 0, 2, 0, 0, 0, 6,116,105,116,
+108,101, 0, 2, 0, 0, 0, 10, 76,111, 97,100, 32, 70,105,108,101, 0, 2, 0,
+ 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, 97,
+ 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, 0,
+ 0, 10, 76,117, 97, 32, 70,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,108,
+111,119,110,101,119, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 6,112,
+111,112,117,112, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82,
+ 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, 8,110,101,
+119,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0,
+ 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49,
+ 0, 2, 0, 0, 0, 2, 49, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2,
+ 0, 0, 0, 18, 67, 97,110,110,111,116, 32,108,111, 97,100, 32,102,105,108,101,
+ 32, 0, 2, 0, 0, 0, 3,102,112, 0, 2, 0, 0, 0, 9,111,112,101,110,102,
+105,108,101, 0, 2, 0, 0, 0, 2,114, 0, 2, 0, 0, 0, 12,109,117,108, 67,
+111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 5,114,101, 97,100, 0, 2, 0,
+ 0, 0, 3, 42, 97, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,102,105,108,101,
+ 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 10,
+102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11,118, 98,120, 67,111,
+110,115,111,108,101, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0, 2,
+ 0, 0, 0, 9,105,117,112,102,114, 97,109,101, 0, 2, 0, 0, 0, 8,105,117,
+112,104, 98,111,120, 0, 2, 0, 0, 0, 7,109, 97,114,103,105,110, 0, 2, 0,
+ 0, 0, 4, 48,120, 48, 0, 2, 0, 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0,
+ 3, 49, 48, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2,
+ 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0,
+ 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 10, 97,108,105,103,110,
+109,101,110,116, 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0,
+ 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0,
+ 0, 0, 9, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 8, 65, 67, 69,
+ 78, 84, 69, 82, 0, 2, 0, 0, 0, 4, 53,120, 53, 0, 2, 0, 0, 0, 2, 53,
+ 0, 2, 0, 0, 0, 8,109,110,117, 77, 97,105,110, 0, 2, 0, 0, 0, 8,105,
+117,112,109,101,110,117, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101,
+110,117, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 2, 0, 0, 0,
+ 5, 69,120,105,116, 0, 2, 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85,
+ 80, 95, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 5, 70,105,108,101, 0, 2, 0,
+ 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2, 0, 0,
+ 0, 22, 80,114,105,110,116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111,
+ 46, 46, 46, 0, 2, 0, 0, 0, 9, 65, 98,111,117,116, 46, 46, 46, 0, 2, 0,
+ 0, 0, 39,100,108,103, 65, 98,111,117,116, 58,112,111,112,117,112, 40, 73, 85,
+ 80, 95, 67, 69, 78, 84, 69, 82, 44, 32, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82,
+ 41, 0, 2, 0, 0, 0, 5, 72,101,108,112, 0, 2, 0, 0, 0, 8,100,108,103,
+ 77, 97,105,110, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0,
+ 2, 0, 0, 0, 29, 67,111,109,112,108,101,116,101, 32, 73,117,112, 76,117, 97,
+ 51, 32, 73,110,116,101,114,112,114,101,116,101,114, 0, 2, 0, 0, 0, 5,109,
+101,110,117, 0, 2, 0, 0, 0, 9, 99,108,111,115,101, 95, 99, 98, 0, 2, 0,
+ 0, 0, 9,100,108,103, 65, 98,111,117,116, 0, 2, 0, 0, 0, 8,105,117,112,
+102,105,108,108, 0, 2, 0, 0, 0, 16, 84,101, 99,103,114, 97,102, 47, 80, 85,
+ 67, 45, 82,105,111, 0, 2, 0, 0, 0, 18, 77, 97,114,107, 47, 79,118,237,100,
+105,111, 47, 83, 99,117,114,105, 0, 2, 0, 0, 0, 23,105,117,112, 64,116,101,
+ 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,114, 0, 2, 0, 0,
+ 0, 3, 79, 75, 0, 2, 0, 0, 0, 6, 53, 48, 88, 50, 48, 0, 2, 0, 0, 0,
+ 6, 49, 48,120, 49, 48, 0, 2, 0, 0, 0, 7,109, 97,120, 98,111,120, 0, 2,
+ 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0, 2, 0, 0, 0, 7,109,105,110, 98,
+111,120, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 6,
+ 65, 98,111,117,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 2, 0, 0, 0,
+ 12, 73,117,112, 77, 97,105,110, 76,111,111,112, 0, 2, 0, 0, 0, 11, 73,117,
+112, 68,101,115,116,114,111,121, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/console3_be64.lo");
+}
diff --git a/iup/srcconsole/loh/console3_le64.loh b/iup/srcconsole/loh/console3_le64.loh
new file mode 100755
index 0000000..7d64917
--- /dev/null
+++ b/iup/srcconsole/loh/console3_le64.loh
@@ -0,0 +1,251 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/console3_le64.lo");
+*/
+/* ../obj/iuplua3/console3_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64, 99,111,110,115,111,
+108,101, 51, 46,108,117, 97, 0, 0, 0, 2,166, 17, 0, 11, 1, 25, 0, 11, 3,
+ 25, 2, 11, 5, 25, 4, 4, 0, 25, 6, 15, 8, 22, 3, 11, 9, 15, 10, 11, 11,
+ 11, 12, 11, 13, 11, 14, 30, 2, 2, 1, 1, 25, 7, 15, 16, 22, 2, 11, 17, 11,
+ 18, 11, 11, 11, 19, 30, 1, 2, 1, 1, 25, 15, 15, 16, 22, 3, 11, 17, 11, 21,
+ 11, 11, 11, 19, 11, 9, 11, 22, 30, 2, 2, 1, 1, 25, 20, 15, 7, 11, 23, 11,
+ 24, 26, 15, 26, 22, 3, 11, 11, 11, 27, 11, 28, 11, 29, 11, 30, 11, 31, 30, 2,
+ 2, 1, 1, 25, 25, 15, 26, 22, 3, 11, 11, 11, 27, 11, 28, 11, 33, 11, 30, 11,
+ 34, 30, 2, 2, 1, 1, 25, 32, 15, 26, 22, 2, 11, 11, 11, 27, 11, 28, 11, 36,
+ 30, 1, 2, 1, 1, 25, 35, 15, 26, 22, 2, 11, 11, 11, 27, 11, 28, 11, 38, 30,
+ 1, 2, 1, 1, 25, 37, 15, 26, 22, 2, 11, 11, 11, 27, 11, 28, 11, 40, 30, 1,
+ 2, 1, 1, 25, 39, 15, 39, 11, 30, 11, 41, 26, 15, 42, 11, 43, 11, 44, 26, 15,
+ 35, 11, 43, 11, 45, 26, 15, 47, 22, 4, 15, 48, 22, 2, 15, 49, 22, 3, 15, 47,
+ 22, 7, 15, 35, 15, 39, 15, 42, 15, 32, 15, 25, 29, 0, 5, 11, 50, 11, 51, 11,
+ 52, 11, 53, 30, 1, 2, 1, 1, 15, 47, 22, 4, 15, 54, 15, 55, 15, 56, 29, 0,
+ 3, 11, 57, 11, 58, 30, 0, 2, 1, 1, 29, 0, 2, 11, 57, 11, 59, 30, 0, 2,
+ 1, 1, 29, 0, 1, 11, 60, 11, 61, 30, 0, 2, 1, 1, 29, 0, 1, 11, 57, 11,
+ 62, 11, 50, 11, 63, 11, 52, 11, 64, 30, 2, 2, 1, 1, 25, 46, 15, 66, 22, 2,
+ 15, 67, 22, 2, 15, 66, 22, 1, 15, 68, 22, 2, 11, 60, 11, 69, 11, 43, 11, 70,
+ 30, 1, 2, 1, 1, 29, 0, 1, 2, 1, 1, 29, 0, 1, 11, 60, 11, 71, 30, 0,
+ 2, 1, 1, 15, 67, 22, 2, 15, 66, 22, 2, 15, 72, 18, 73, 22, 2, 11, 60, 11,
+ 74, 11, 43, 15, 4, 30, 1, 2, 1, 1, 15, 68, 22, 2, 11, 60, 11, 75, 11, 43,
+ 11, 76, 30, 1, 2, 1, 1, 29, 0, 2, 2, 1, 1, 29, 0, 1, 11, 60, 11, 77,
+ 30, 0, 2, 1, 1, 29, 0, 2, 2, 1, 1, 25, 65, 15, 79, 22, 4, 15, 46, 29,
+ 0, 1, 11, 60, 11, 80, 11, 81, 15, 65, 11, 82, 11, 70, 30, 2, 2, 1, 1, 25,
+ 78, 15, 79, 22, 5, 15, 47, 22, 8, 15, 16, 22, 1, 11, 60, 11, 80, 30, 0, 2,
+ 1, 1, 15, 84, 22, 1, 11, 11, 11, 64, 30, 0, 2, 1, 1, 15, 84, 22, 1, 11,
+ 11, 11, 64, 30, 0, 2, 1, 1, 15, 48, 22, 1, 15, 47, 22, 3, 15, 16, 22, 1,
+ 11, 60, 11, 85, 30, 0, 2, 1, 1, 15, 16, 22, 1, 11, 60, 11, 86, 30, 0, 2,
+ 1, 1, 15, 16, 22, 1, 11, 60, 11, 87, 30, 0, 2, 1, 1, 29, 0, 3, 2, 1,
+ 1, 29, 0, 1, 2, 1, 1, 15, 84, 22, 1, 11, 11, 11, 64, 30, 0, 2, 1, 1,
+ 15, 26, 22, 3, 11, 60, 11, 88, 11, 43, 11, 70, 11, 11, 11, 89, 30, 2, 2, 1,
+ 1, 29, 0, 6, 11, 50, 11, 90, 11, 57, 11, 62, 30, 1, 2, 1, 1, 29, 0, 1,
+ 11, 91, 15, 92, 11, 93, 15, 92, 11, 94, 15, 92, 11, 60, 11, 95, 30, 3, 2, 1,
+ 1, 25, 83, 15, 78, 20, 96, 2, 0, 1, 15, 97, 2, 0, 0, 15, 98, 15, 78, 2,
+ 0, 1, 15, 98, 15, 83, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 99, 2, 0,
+ 0, 0, 10,112,114,105,110,116,118, 97,114,115, 0, 4, 0, 0, 0, 3, 0, 0,
+ 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67,
+ 6, 0, 15, 2, 4, 0, 2, 2, 1, 15, 3, 11, 4, 2, 0, 1, 50, 34, 15, 3,
+ 15, 5, 13, 0, 2, 1, 1, 11, 6, 42, 15, 5, 13, 1, 2, 1, 1, 42, 2, 0,
+ 1, 15, 2, 13, 0, 2, 2, 1, 23, 1, 23, 0, 13, 0, 4, 0, 31, 54, 41, 15,
+ 3, 11, 7, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 2,
+110, 0, 2, 0, 0, 0, 2,118, 0, 2, 0, 0, 0, 8,110,101,120,116,118, 97,
+114, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 20, 45, 45,
+112,114,105,110,116,118, 97,114,115, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0,
+ 0, 0, 9,116,111,115,116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2,
+ 0, 0, 0, 18, 45, 45,112,114,105,110,116,118, 97,114,115, 32, 69,110,100, 45,
+ 45, 0, 2, 0, 0, 0, 11,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 0,
+ 0, 0, 13, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97,
+ 0, 0, 0, 0, 71, 7, 1, 15, 3, 13, 0, 4, 0, 2, 2, 2, 15, 4, 11, 5,
+ 2, 0, 1, 50, 36, 15, 4, 15, 6, 13, 1, 2, 1, 1, 11, 7, 42, 15, 6, 13,
+ 2, 2, 1, 1, 42, 2, 0, 1, 15, 3, 13, 0, 13, 1, 2, 2, 2, 23, 2, 23,
+ 1, 13, 1, 4, 0, 31, 54, 43, 15, 4, 11, 8, 2, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 9, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 2,110, 0, 2, 0,
+ 0, 0, 2,118, 0, 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,
+112,114,105,110,116, 0, 2, 0, 0, 0, 21, 45, 45,112,114,105,110,116,116, 97,
+ 98,108,101, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111,115,
+116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 19, 45, 45,
+112,114,105,110,116,116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0, 2, 0, 0,
+ 0, 19,112,114,105,110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111,
+ 0, 4, 0, 0, 0, 23, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,
+108,117, 97, 0, 0, 0, 0,241, 5, 0, 15, 0, 15, 1, 11, 2, 42, 15, 3, 18,
+ 4, 42, 2, 0, 1, 15, 5, 52, 17, 15, 0, 15, 5, 18, 1, 11, 2, 42, 15, 5,
+ 18, 6, 42, 2, 0, 1, 15, 7, 48, 4, 15, 7, 18, 1, 52, 17, 15, 0, 15, 7,
+ 18, 1, 11, 2, 42, 15, 7, 18, 6, 42, 2, 0, 1, 15, 0, 15, 3, 18, 1, 11,
+ 2, 42, 15, 3, 18, 6, 42, 2, 0, 1, 15, 0, 11, 8, 2, 0, 1, 15, 0, 11,
+ 9, 2, 0, 1, 15, 0, 11, 10, 15, 3, 18, 11, 11, 12, 2, 1, 1, 42, 2, 0,
+ 1, 15, 0, 11, 13, 15, 3, 18, 11, 11, 14, 2, 1, 1, 42, 2, 0, 1, 15, 3,
+ 18, 11, 11, 16, 2, 1, 1, 13, 0, 52, 9, 15, 0, 11, 17, 13, 0, 2, 0, 2,
+ 15, 0, 11, 18, 15, 3, 18, 11, 11, 19, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11,
+ 20, 15, 3, 18, 11, 11, 21, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 22, 52, 12,
+ 15, 0, 11, 23, 15, 3, 18, 22, 42, 2, 0, 1, 15, 3, 18, 24, 52, 12, 15, 0,
+ 11, 25, 15, 3, 18, 24, 42, 2, 0, 1, 15, 3, 18, 26, 52, 12, 15, 0, 11, 27,
+ 15, 3, 18, 26, 42, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 28, 2, 0, 0,
+ 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 9, 95, 86, 69, 82, 83, 73, 79,
+ 78, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 15, 95, 76, 85, 65, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0,
+ 0, 0, 3,105,109, 0, 2, 0, 0, 0, 11, 95, 67, 79, 80, 89, 82, 73, 71, 72,
+ 84, 0, 2, 0, 0, 0, 3, 99,100, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0,
+ 9, 73, 85, 80, 32, 73,110,102,111, 0, 2, 0, 0, 0, 11, 32, 32, 83,121,115,
+116,101,109, 58, 32, 0, 2, 0, 0, 0, 10, 71,101,116, 71,108,111, 98, 97,108,
+ 0, 2, 0, 0, 0, 7, 83, 89, 83, 84, 69, 77, 0, 2, 0, 0, 0, 19, 32, 32,
+ 83,121,115,116,101,109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0,
+ 0, 14, 83, 89, 83, 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0,
+ 4,109,111,116, 0, 2, 0, 0, 0, 13, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73,
+ 79, 78, 0, 2, 0, 0, 0, 18, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,
+105,111,110, 58, 32, 0, 2, 0, 0, 0, 16, 32, 32, 83, 99,114,101,101,110, 32,
+ 83,105,122,101, 58, 32, 0, 2, 0, 0, 0, 11, 83, 67, 82, 69, 69, 78, 83, 73,
+ 90, 69, 0, 2, 0, 0, 0, 17, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112,
+116,104, 58, 32, 0, 2, 0, 0, 0, 12, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84,
+ 72, 0, 2, 0, 0, 0, 10, 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 2, 0, 0,
+ 0, 18, 32, 32, 79,112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0,
+ 2, 0, 0, 0, 12, 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 2, 0, 0,
+ 0, 20, 32, 32, 79,112,101,110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58,
+ 32, 0, 2, 0, 0, 0, 11, 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0,
+ 0, 0, 19, 32, 32, 79,112,101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58,
+ 32, 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0,
+ 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 13,105,117,
+112,109,117,108,116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,
+110,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0,
+ 5,115,105,122,101, 0, 2, 0, 0, 0, 8, 50, 48, 48,120, 49, 50, 48, 0, 2,
+ 0, 0, 0, 5,102,111,110,116, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69,
+ 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 9,112,111,115,
+108, 97, 98,101,108, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0,
+ 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, 4, 48, 58, 48, 0,
+ 2, 0, 0, 0, 4, 53, 48,120, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97,
+ 98,101,108, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90,
+ 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 8, 99, 97,114,101,116, 99, 98, 0, 4,
+ 0, 0, 0, 49, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117,
+ 97, 0, 0, 0, 0, 16, 7, 3, 15, 3, 11, 4, 13, 1, 11, 5, 42, 13, 2, 42,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 4,108,105,110, 0, 2, 0, 0, 0, 4, 99,111,108, 0, 2, 0,
+ 0, 0, 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,116,105,116,
+108,101, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 11, 98,117,116, 69,120,
+101, 99,117,116,101, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110,
+ 0, 2, 0, 0, 0, 6, 53, 48,120, 49, 53, 0, 2, 0, 0, 0, 6,116,105,116,
+108,101, 0, 2, 0, 0, 0, 8, 69,120,101, 99,117,116,101, 0, 2, 0, 0, 0,
+ 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 28,100,111,115,116,114,105,110,
+103, 40,109,117,108, 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 41,
+ 0, 2, 0, 0, 0, 17, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97,110,
+100,115, 0, 2, 0, 0, 0, 6, 67,108,101, 97,114, 0, 2, 0, 0, 0, 61,109,
+117,108, 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 32, 61, 32, 39,
+ 39, 32, 32,102,105,108,101,108, 97, 98,101,108, 46,116,105,116,108,101, 32, 61,
+ 32, 39, 39, 32, 32,108, 97,115,116,102,105,108,101, 32, 61, 32,110,105,108, 0,
+ 2, 0, 0, 0, 12, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 2, 0, 0,
+ 0, 8, 76,111, 97,100, 46, 46, 46, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,
+118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 11, 83, 97,118,101, 32, 65,
+115, 46, 46, 46, 0, 2, 0, 0, 0, 12, 98,117,116, 83, 97,118,101, 70,105,108,
+101, 0, 2, 0, 0, 0, 5, 83, 97,118,101, 0, 4, 0, 0, 0, 59, 0, 0, 0,
+ 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 4,
+ 1, 15, 0, 4, 0, 32, 52, 9, 15, 1, 20, 2, 2, 0, 1, 50, 48, 15, 4, 15,
+ 0, 11, 5, 2, 1, 2, 25, 3, 15, 3, 4, 0, 31, 52, 20, 15, 6, 15, 3, 15,
+ 7, 18, 8, 2, 0, 2, 15, 9, 15, 3, 2, 0, 1, 50, 10, 15, 10, 11, 11, 15,
+ 12, 42, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 9,108,
+ 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101,
+ 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2,
+ 0, 0, 0, 8,110,111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101,
+110,102,105,108,101, 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119,
+114,105,116,101, 0, 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,
+115, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 10, 99,108,
+111,115,101,102,105,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2,
+ 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,101,
+ 32, 0, 2, 0, 0, 0, 9,102,105,108,101,110, 97,109,101, 0, 2, 0, 0, 0,
+ 14, 98,117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7,
+ 97, 99,116,105,111,110, 0, 4, 0, 0, 0, 73, 0, 0, 0, 14, 64, 99,111,110,
+115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,136, 13, 1, 15, 1, 22, 5,
+ 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 15, 11,
+ 30, 4, 2, 1, 1, 15, 12, 13, 1, 15, 13, 15, 13, 2, 0, 3, 13, 1, 18, 14,
+ 13, 1, 18, 16, 25, 15, 15, 17, 11, 4, 15, 15, 26, 15, 18, 13, 1, 2, 0, 1,
+ 13, 2, 11, 19, 31, 52, 62, 15, 15, 4, 0, 32, 52, 10, 15, 20, 11, 21, 15, 15,
+ 42, 2, 0, 1, 15, 23, 15, 15, 11, 24, 2, 1, 2, 13, 3, 4, 0, 31, 52, 20,
+ 15, 25, 13, 3, 15, 26, 18, 16, 2, 0, 2, 15, 27, 13, 3, 2, 0, 1, 50, 7,
+ 15, 20, 11, 28, 2, 0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 2, 0,
+ 0, 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,
+105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,
+112,101, 0, 2, 0, 0, 0, 5, 83, 65, 86, 69, 0, 2, 0, 0, 0, 6,116,105,
+116,108,101, 0, 2, 0, 0, 0, 10, 83, 97,118,101, 32, 70,105,108,101, 0, 2,
+ 0, 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117,
+ 97, 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0,
+ 0, 0, 10, 76,117, 97, 32,102,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,
+108,111,119,110,101,119, 0, 2, 0, 0, 0, 4,121,101,115, 0, 2, 0, 0, 0,
+ 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 76,
+ 69, 70, 84, 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0,
+ 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101,
+ 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0,
+ 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49, 0,
+ 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110,
+111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 8,110,
+111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101,
+ 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0,
+ 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0,
+ 0, 10, 99,108,111,115,101,102,105,108,101, 0, 2, 0, 0, 0, 17, 67, 97,110,
+110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 0, 4, 0, 0, 0, 94, 0,
+ 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,
+153, 13, 1, 15, 1, 22, 5, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11,
+ 8, 11, 9, 11, 10, 11, 11, 30, 4, 2, 1, 1, 13, 1, 20, 12, 15, 13, 15, 13,
+ 2, 0, 3, 13, 1, 18, 14, 13, 1, 18, 16, 15, 17, 13, 1, 2, 0, 1, 13, 2,
+ 11, 18, 32, 46, 5, 13, 2, 11, 19, 32, 52, 19, 13, 2, 11, 19, 32, 52, 10, 15,
+ 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 62, 15, 23, 13, 3, 11, 24, 2, 1, 2,
+ 13, 4, 4, 0, 32, 52, 12, 15, 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 32, 15,
+ 25, 11, 16, 15, 26, 13, 4, 11, 27, 2, 1, 2, 26, 15, 28, 13, 4, 2, 0, 1,
+ 13, 3, 25, 29, 15, 30, 11, 4, 15, 29, 26, 5, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 31, 2, 0, 0, 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,
+105,117,112,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108,
+111,103,116,121,112,101, 0, 2, 0, 0, 0, 5, 79, 80, 69, 78, 0, 2, 0, 0,
+ 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, 10, 76,111, 97,100, 32, 70,105,
+108,101, 0, 2, 0, 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6,
+ 42, 46,108,117, 97, 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,
+111, 0, 2, 0, 0, 0, 10, 76,117, 97, 32, 70,105,108,101,115, 0, 2, 0, 0,
+ 0, 9, 97,108,108,111,119,110,101,119, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2,
+ 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67,
+ 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0,
+ 0, 0, 8,110,101,119,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,
+101, 0, 2, 0, 0, 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0,
+ 0, 0, 3, 45, 49, 0, 2, 0, 0, 0, 2, 49, 0, 2, 0, 0, 0, 6,101,114,
+114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110,111,116, 32,108,111, 97,100,
+ 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 3,102,112, 0, 2, 0, 0, 0, 9,
+111,112,101,110,102,105,108,101, 0, 2, 0, 0, 0, 2,114, 0, 2, 0, 0, 0,
+ 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 5,114,101,
+ 97,100, 0, 2, 0, 0, 0, 3, 42, 97, 0, 2, 0, 0, 0, 10, 99,108,111,115,
+101,102,105,108,101, 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0,
+ 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11,
+118, 98,120, 67,111,110,115,111,108,101, 0, 2, 0, 0, 0, 8,105,117,112,118,
+ 98,111,120, 0, 2, 0, 0, 0, 9,105,117,112,102,114, 97,109,101, 0, 2, 0,
+ 0, 0, 8,105,117,112,104, 98,111,120, 0, 2, 0, 0, 0, 7,109, 97,114,103,
+105,110, 0, 2, 0, 0, 0, 4, 48,120, 48, 0, 2, 0, 0, 0, 4,103, 97,112,
+ 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97,
+ 98,101,108, 0, 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115,
+ 0, 2, 0, 0, 0, 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 10,
+ 97,108,105,103,110,109,101,110,116, 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72,
+ 84, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 6,116,105,116,
+108,101, 0, 2, 0, 0, 0, 9, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0,
+ 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 4, 53,120, 53, 0, 2,
+ 0, 0, 0, 2, 53, 0, 2, 0, 0, 0, 8,109,110,117, 77, 97,105,110, 0, 2,
+ 0, 0, 0, 8,105,117,112,109,101,110,117, 0, 2, 0, 0, 0, 11,105,117,112,
+115,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109,
+ 0, 2, 0, 0, 0, 5, 69,120,105,116, 0, 2, 0, 0, 0, 17,114,101,116,117,
+114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 5, 70,105,
+108,101, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,105,116,101,
+109, 0, 2, 0, 0, 0, 22, 80,114,105,110,116, 32, 86,101,114,115,105,111,110,
+ 32, 73,110,102,111, 46, 46, 46, 0, 2, 0, 0, 0, 9, 65, 98,111,117,116, 46,
+ 46, 46, 0, 2, 0, 0, 0, 39,100,108,103, 65, 98,111,117,116, 58,112,111,112,
+117,112, 40, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82, 44, 32, 73, 85, 80, 95, 67,
+ 69, 78, 84, 69, 82, 41, 0, 2, 0, 0, 0, 5, 72,101,108,112, 0, 2, 0, 0,
+ 0, 8,100,108,103, 77, 97,105,110, 0, 2, 0, 0, 0, 10,105,117,112,100,105,
+ 97,108,111,103, 0, 2, 0, 0, 0, 29, 67,111,109,112,108,101,116,101, 32, 73,
+117,112, 76,117, 97, 51, 32, 73,110,116,101,114,112,114,101,116,101,114, 0, 2,
+ 0, 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 9, 99,108,111,115,101, 95,
+ 99, 98, 0, 2, 0, 0, 0, 9,100,108,103, 65, 98,111,117,116, 0, 2, 0, 0,
+ 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0, 0, 16, 84,101, 99,103,114,
+ 97,102, 47, 80, 85, 67, 45, 82,105,111, 0, 2, 0, 0, 0, 18, 77, 97,114,107,
+ 47, 79,118,237,100,105,111, 47, 83, 99,117,114,105, 0, 2, 0, 0, 0, 23,105,
+117,112, 64,116,101, 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,
+114, 0, 2, 0, 0, 0, 3, 79, 75, 0, 2, 0, 0, 0, 6, 53, 48, 88, 50, 48,
+ 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0, 0, 0, 7,109, 97,120,
+ 98,111,120, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0, 2, 0, 0, 0,
+ 7,109,105,110, 98,111,120, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0,
+ 2, 0, 0, 0, 6, 65, 98,111,117,116, 0, 2, 0, 0, 0, 5,115,104,111,119,
+ 0, 2, 0, 0, 0, 12, 73,117,112, 77, 97,105,110, 76,111,111,112, 0, 2, 0,
+ 0, 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/console3_le64.lo");
+}
diff --git a/iup/srcconsole/loh/console3_le64w.loh b/iup/srcconsole/loh/console3_le64w.loh
new file mode 100755
index 0000000..57e9b6d
--- /dev/null
+++ b/iup/srcconsole/loh/console3_le64w.loh
@@ -0,0 +1,251 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/console3_le64w.lo");
+*/
+/* ../obj/iuplua3/console3_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64, 99,111,110,115,111,
+108,101, 51, 46,108,117, 97, 0, 0, 0, 2,166, 17, 0, 11, 1, 25, 0, 11, 3,
+ 25, 2, 11, 5, 25, 4, 4, 0, 25, 6, 15, 8, 22, 3, 11, 9, 15, 10, 11, 11,
+ 11, 12, 11, 13, 11, 14, 30, 2, 2, 1, 1, 25, 7, 15, 16, 22, 2, 11, 17, 11,
+ 18, 11, 11, 11, 19, 30, 1, 2, 1, 1, 25, 15, 15, 16, 22, 3, 11, 17, 11, 21,
+ 11, 11, 11, 19, 11, 9, 11, 22, 30, 2, 2, 1, 1, 25, 20, 15, 7, 11, 23, 11,
+ 24, 26, 15, 26, 22, 3, 11, 11, 11, 27, 11, 28, 11, 29, 11, 30, 11, 31, 30, 2,
+ 2, 1, 1, 25, 25, 15, 26, 22, 3, 11, 11, 11, 27, 11, 28, 11, 33, 11, 30, 11,
+ 34, 30, 2, 2, 1, 1, 25, 32, 15, 26, 22, 2, 11, 11, 11, 27, 11, 28, 11, 36,
+ 30, 1, 2, 1, 1, 25, 35, 15, 26, 22, 2, 11, 11, 11, 27, 11, 28, 11, 38, 30,
+ 1, 2, 1, 1, 25, 37, 15, 26, 22, 2, 11, 11, 11, 27, 11, 28, 11, 40, 30, 1,
+ 2, 1, 1, 25, 39, 15, 39, 11, 30, 11, 41, 26, 15, 42, 11, 43, 11, 44, 26, 15,
+ 35, 11, 43, 11, 45, 26, 15, 47, 22, 4, 15, 48, 22, 2, 15, 49, 22, 3, 15, 47,
+ 22, 7, 15, 35, 15, 39, 15, 42, 15, 32, 15, 25, 29, 0, 5, 11, 50, 11, 51, 11,
+ 52, 11, 53, 30, 1, 2, 1, 1, 15, 47, 22, 4, 15, 54, 15, 55, 15, 56, 29, 0,
+ 3, 11, 57, 11, 58, 30, 0, 2, 1, 1, 29, 0, 2, 11, 57, 11, 59, 30, 0, 2,
+ 1, 1, 29, 0, 1, 11, 60, 11, 61, 30, 0, 2, 1, 1, 29, 0, 1, 11, 57, 11,
+ 62, 11, 50, 11, 63, 11, 52, 11, 64, 30, 2, 2, 1, 1, 25, 46, 15, 66, 22, 2,
+ 15, 67, 22, 2, 15, 66, 22, 1, 15, 68, 22, 2, 11, 60, 11, 69, 11, 43, 11, 70,
+ 30, 1, 2, 1, 1, 29, 0, 1, 2, 1, 1, 29, 0, 1, 11, 60, 11, 71, 30, 0,
+ 2, 1, 1, 15, 67, 22, 2, 15, 66, 22, 2, 15, 72, 18, 73, 22, 2, 11, 60, 11,
+ 74, 11, 43, 15, 4, 30, 1, 2, 1, 1, 15, 68, 22, 2, 11, 60, 11, 75, 11, 43,
+ 11, 76, 30, 1, 2, 1, 1, 29, 0, 2, 2, 1, 1, 29, 0, 1, 11, 60, 11, 77,
+ 30, 0, 2, 1, 1, 29, 0, 2, 2, 1, 1, 25, 65, 15, 79, 22, 4, 15, 46, 29,
+ 0, 1, 11, 60, 11, 80, 11, 81, 15, 65, 11, 82, 11, 70, 30, 2, 2, 1, 1, 25,
+ 78, 15, 79, 22, 5, 15, 47, 22, 8, 15, 16, 22, 1, 11, 60, 11, 80, 30, 0, 2,
+ 1, 1, 15, 84, 22, 1, 11, 11, 11, 64, 30, 0, 2, 1, 1, 15, 84, 22, 1, 11,
+ 11, 11, 64, 30, 0, 2, 1, 1, 15, 48, 22, 1, 15, 47, 22, 3, 15, 16, 22, 1,
+ 11, 60, 11, 85, 30, 0, 2, 1, 1, 15, 16, 22, 1, 11, 60, 11, 86, 30, 0, 2,
+ 1, 1, 15, 16, 22, 1, 11, 60, 11, 87, 30, 0, 2, 1, 1, 29, 0, 3, 2, 1,
+ 1, 29, 0, 1, 2, 1, 1, 15, 84, 22, 1, 11, 11, 11, 64, 30, 0, 2, 1, 1,
+ 15, 26, 22, 3, 11, 60, 11, 88, 11, 43, 11, 70, 11, 11, 11, 89, 30, 2, 2, 1,
+ 1, 29, 0, 6, 11, 50, 11, 90, 11, 57, 11, 62, 30, 1, 2, 1, 1, 29, 0, 1,
+ 11, 91, 15, 92, 11, 93, 15, 92, 11, 94, 15, 92, 11, 60, 11, 95, 30, 3, 2, 1,
+ 1, 25, 83, 15, 78, 20, 96, 2, 0, 1, 15, 97, 2, 0, 0, 15, 98, 15, 78, 2,
+ 0, 1, 15, 98, 15, 83, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 99, 2, 0,
+ 0, 0, 10,112,114,105,110,116,118, 97,114,115, 0, 4, 0, 0, 0, 3, 0, 0,
+ 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67,
+ 6, 0, 15, 2, 4, 0, 2, 2, 1, 15, 3, 11, 4, 2, 0, 1, 50, 34, 15, 3,
+ 15, 5, 13, 0, 2, 1, 1, 11, 6, 42, 15, 5, 13, 1, 2, 1, 1, 42, 2, 0,
+ 1, 15, 2, 13, 0, 2, 2, 1, 23, 1, 23, 0, 13, 0, 4, 0, 31, 54, 41, 15,
+ 3, 11, 7, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 2,
+110, 0, 2, 0, 0, 0, 2,118, 0, 2, 0, 0, 0, 8,110,101,120,116,118, 97,
+114, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 20, 45, 45,
+112,114,105,110,116,118, 97,114,115, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0,
+ 0, 0, 9,116,111,115,116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2,
+ 0, 0, 0, 18, 45, 45,112,114,105,110,116,118, 97,114,115, 32, 69,110,100, 45,
+ 45, 0, 2, 0, 0, 0, 11,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 0,
+ 0, 0, 13, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97,
+ 0, 0, 0, 0, 71, 7, 1, 15, 3, 13, 0, 4, 0, 2, 2, 2, 15, 4, 11, 5,
+ 2, 0, 1, 50, 36, 15, 4, 15, 6, 13, 1, 2, 1, 1, 11, 7, 42, 15, 6, 13,
+ 2, 2, 1, 1, 42, 2, 0, 1, 15, 3, 13, 0, 13, 1, 2, 2, 2, 23, 2, 23,
+ 1, 13, 1, 4, 0, 31, 54, 43, 15, 4, 11, 8, 2, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 9, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 2,110, 0, 2, 0,
+ 0, 0, 2,118, 0, 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,
+112,114,105,110,116, 0, 2, 0, 0, 0, 21, 45, 45,112,114,105,110,116,116, 97,
+ 98,108,101, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111,115,
+116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 19, 45, 45,
+112,114,105,110,116,116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0, 2, 0, 0,
+ 0, 19,112,114,105,110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111,
+ 0, 4, 0, 0, 0, 23, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,
+108,117, 97, 0, 0, 0, 0,241, 5, 0, 15, 0, 15, 1, 11, 2, 42, 15, 3, 18,
+ 4, 42, 2, 0, 1, 15, 5, 52, 17, 15, 0, 15, 5, 18, 1, 11, 2, 42, 15, 5,
+ 18, 6, 42, 2, 0, 1, 15, 7, 48, 4, 15, 7, 18, 1, 52, 17, 15, 0, 15, 7,
+ 18, 1, 11, 2, 42, 15, 7, 18, 6, 42, 2, 0, 1, 15, 0, 15, 3, 18, 1, 11,
+ 2, 42, 15, 3, 18, 6, 42, 2, 0, 1, 15, 0, 11, 8, 2, 0, 1, 15, 0, 11,
+ 9, 2, 0, 1, 15, 0, 11, 10, 15, 3, 18, 11, 11, 12, 2, 1, 1, 42, 2, 0,
+ 1, 15, 0, 11, 13, 15, 3, 18, 11, 11, 14, 2, 1, 1, 42, 2, 0, 1, 15, 3,
+ 18, 11, 11, 16, 2, 1, 1, 13, 0, 52, 9, 15, 0, 11, 17, 13, 0, 2, 0, 2,
+ 15, 0, 11, 18, 15, 3, 18, 11, 11, 19, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11,
+ 20, 15, 3, 18, 11, 11, 21, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 22, 52, 12,
+ 15, 0, 11, 23, 15, 3, 18, 22, 42, 2, 0, 1, 15, 3, 18, 24, 52, 12, 15, 0,
+ 11, 25, 15, 3, 18, 24, 42, 2, 0, 1, 15, 3, 18, 26, 52, 12, 15, 0, 11, 27,
+ 15, 3, 18, 26, 42, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 28, 2, 0, 0,
+ 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 9, 95, 86, 69, 82, 83, 73, 79,
+ 78, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 15, 95, 76, 85, 65, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0,
+ 0, 0, 3,105,109, 0, 2, 0, 0, 0, 11, 95, 67, 79, 80, 89, 82, 73, 71, 72,
+ 84, 0, 2, 0, 0, 0, 3, 99,100, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0,
+ 9, 73, 85, 80, 32, 73,110,102,111, 0, 2, 0, 0, 0, 11, 32, 32, 83,121,115,
+116,101,109, 58, 32, 0, 2, 0, 0, 0, 10, 71,101,116, 71,108,111, 98, 97,108,
+ 0, 2, 0, 0, 0, 7, 83, 89, 83, 84, 69, 77, 0, 2, 0, 0, 0, 19, 32, 32,
+ 83,121,115,116,101,109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0,
+ 0, 14, 83, 89, 83, 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0,
+ 4,109,111,116, 0, 2, 0, 0, 0, 13, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73,
+ 79, 78, 0, 2, 0, 0, 0, 18, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,
+105,111,110, 58, 32, 0, 2, 0, 0, 0, 16, 32, 32, 83, 99,114,101,101,110, 32,
+ 83,105,122,101, 58, 32, 0, 2, 0, 0, 0, 11, 83, 67, 82, 69, 69, 78, 83, 73,
+ 90, 69, 0, 2, 0, 0, 0, 17, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112,
+116,104, 58, 32, 0, 2, 0, 0, 0, 12, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84,
+ 72, 0, 2, 0, 0, 0, 10, 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 2, 0, 0,
+ 0, 18, 32, 32, 79,112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0,
+ 2, 0, 0, 0, 12, 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 2, 0, 0,
+ 0, 20, 32, 32, 79,112,101,110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58,
+ 32, 0, 2, 0, 0, 0, 11, 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0,
+ 0, 0, 19, 32, 32, 79,112,101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58,
+ 32, 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0,
+ 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 13,105,117,
+112,109,117,108,116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,
+110,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0,
+ 5,115,105,122,101, 0, 2, 0, 0, 0, 8, 50, 48, 48,120, 49, 50, 48, 0, 2,
+ 0, 0, 0, 5,102,111,110,116, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69,
+ 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 9,112,111,115,
+108, 97, 98,101,108, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0,
+ 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, 4, 48, 58, 48, 0,
+ 2, 0, 0, 0, 4, 53, 48,120, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97,
+ 98,101,108, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90,
+ 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 8, 99, 97,114,101,116, 99, 98, 0, 4,
+ 0, 0, 0, 49, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117,
+ 97, 0, 0, 0, 0, 16, 7, 3, 15, 3, 11, 4, 13, 1, 11, 5, 42, 13, 2, 42,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 4,108,105,110, 0, 2, 0, 0, 0, 4, 99,111,108, 0, 2, 0,
+ 0, 0, 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,116,105,116,
+108,101, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 11, 98,117,116, 69,120,
+101, 99,117,116,101, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110,
+ 0, 2, 0, 0, 0, 6, 53, 48,120, 49, 53, 0, 2, 0, 0, 0, 6,116,105,116,
+108,101, 0, 2, 0, 0, 0, 8, 69,120,101, 99,117,116,101, 0, 2, 0, 0, 0,
+ 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 28,100,111,115,116,114,105,110,
+103, 40,109,117,108, 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 41,
+ 0, 2, 0, 0, 0, 17, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97,110,
+100,115, 0, 2, 0, 0, 0, 6, 67,108,101, 97,114, 0, 2, 0, 0, 0, 61,109,
+117,108, 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 32, 61, 32, 39,
+ 39, 32, 32,102,105,108,101,108, 97, 98,101,108, 46,116,105,116,108,101, 32, 61,
+ 32, 39, 39, 32, 32,108, 97,115,116,102,105,108,101, 32, 61, 32,110,105,108, 0,
+ 2, 0, 0, 0, 12, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 2, 0, 0,
+ 0, 8, 76,111, 97,100, 46, 46, 46, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,
+118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 11, 83, 97,118,101, 32, 65,
+115, 46, 46, 46, 0, 2, 0, 0, 0, 12, 98,117,116, 83, 97,118,101, 70,105,108,
+101, 0, 2, 0, 0, 0, 5, 83, 97,118,101, 0, 4, 0, 0, 0, 59, 0, 0, 0,
+ 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 4,
+ 1, 15, 0, 4, 0, 32, 52, 9, 15, 1, 20, 2, 2, 0, 1, 50, 48, 15, 4, 15,
+ 0, 11, 5, 2, 1, 2, 25, 3, 15, 3, 4, 0, 31, 52, 20, 15, 6, 15, 3, 15,
+ 7, 18, 8, 2, 0, 2, 15, 9, 15, 3, 2, 0, 1, 50, 10, 15, 10, 11, 11, 15,
+ 12, 42, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 9,108,
+ 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101,
+ 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2,
+ 0, 0, 0, 8,110,111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101,
+110,102,105,108,101, 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119,
+114,105,116,101, 0, 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,
+115, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 10, 99,108,
+111,115,101,102,105,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2,
+ 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,101,
+ 32, 0, 2, 0, 0, 0, 9,102,105,108,101,110, 97,109,101, 0, 2, 0, 0, 0,
+ 14, 98,117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7,
+ 97, 99,116,105,111,110, 0, 4, 0, 0, 0, 73, 0, 0, 0, 14, 64, 99,111,110,
+115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,136, 13, 1, 15, 1, 22, 5,
+ 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 15, 11,
+ 30, 4, 2, 1, 1, 15, 12, 13, 1, 15, 13, 15, 13, 2, 0, 3, 13, 1, 18, 14,
+ 13, 1, 18, 16, 25, 15, 15, 17, 11, 4, 15, 15, 26, 15, 18, 13, 1, 2, 0, 1,
+ 13, 2, 11, 19, 31, 52, 62, 15, 15, 4, 0, 32, 52, 10, 15, 20, 11, 21, 15, 15,
+ 42, 2, 0, 1, 15, 23, 15, 15, 11, 24, 2, 1, 2, 13, 3, 4, 0, 31, 52, 20,
+ 15, 25, 13, 3, 15, 26, 18, 16, 2, 0, 2, 15, 27, 13, 3, 2, 0, 1, 50, 7,
+ 15, 20, 11, 28, 2, 0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 2, 0,
+ 0, 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,
+105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,
+112,101, 0, 2, 0, 0, 0, 5, 83, 65, 86, 69, 0, 2, 0, 0, 0, 6,116,105,
+116,108,101, 0, 2, 0, 0, 0, 10, 83, 97,118,101, 32, 70,105,108,101, 0, 2,
+ 0, 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117,
+ 97, 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0,
+ 0, 0, 10, 76,117, 97, 32,102,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,
+108,111,119,110,101,119, 0, 2, 0, 0, 0, 4,121,101,115, 0, 2, 0, 0, 0,
+ 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 76,
+ 69, 70, 84, 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0,
+ 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101,
+ 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0,
+ 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49, 0,
+ 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110,
+111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 8,110,
+111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101,
+ 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0,
+ 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0,
+ 0, 10, 99,108,111,115,101,102,105,108,101, 0, 2, 0, 0, 0, 17, 67, 97,110,
+110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 0, 4, 0, 0, 0, 94, 0,
+ 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,
+153, 13, 1, 15, 1, 22, 5, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11,
+ 8, 11, 9, 11, 10, 11, 11, 30, 4, 2, 1, 1, 13, 1, 20, 12, 15, 13, 15, 13,
+ 2, 0, 3, 13, 1, 18, 14, 13, 1, 18, 16, 15, 17, 13, 1, 2, 0, 1, 13, 2,
+ 11, 18, 32, 46, 5, 13, 2, 11, 19, 32, 52, 19, 13, 2, 11, 19, 32, 52, 10, 15,
+ 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 62, 15, 23, 13, 3, 11, 24, 2, 1, 2,
+ 13, 4, 4, 0, 32, 52, 12, 15, 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 32, 15,
+ 25, 11, 16, 15, 26, 13, 4, 11, 27, 2, 1, 2, 26, 15, 28, 13, 4, 2, 0, 1,
+ 13, 3, 25, 29, 15, 30, 11, 4, 15, 29, 26, 5, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 31, 2, 0, 0, 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,
+105,117,112,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108,
+111,103,116,121,112,101, 0, 2, 0, 0, 0, 5, 79, 80, 69, 78, 0, 2, 0, 0,
+ 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, 10, 76,111, 97,100, 32, 70,105,
+108,101, 0, 2, 0, 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6,
+ 42, 46,108,117, 97, 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,
+111, 0, 2, 0, 0, 0, 10, 76,117, 97, 32, 70,105,108,101,115, 0, 2, 0, 0,
+ 0, 9, 97,108,108,111,119,110,101,119, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2,
+ 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67,
+ 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0,
+ 0, 0, 8,110,101,119,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,
+101, 0, 2, 0, 0, 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0,
+ 0, 0, 3, 45, 49, 0, 2, 0, 0, 0, 2, 49, 0, 2, 0, 0, 0, 6,101,114,
+114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110,111,116, 32,108,111, 97,100,
+ 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 3,102,112, 0, 2, 0, 0, 0, 9,
+111,112,101,110,102,105,108,101, 0, 2, 0, 0, 0, 2,114, 0, 2, 0, 0, 0,
+ 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 5,114,101,
+ 97,100, 0, 2, 0, 0, 0, 3, 42, 97, 0, 2, 0, 0, 0, 10, 99,108,111,115,
+101,102,105,108,101, 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0,
+ 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11,
+118, 98,120, 67,111,110,115,111,108,101, 0, 2, 0, 0, 0, 8,105,117,112,118,
+ 98,111,120, 0, 2, 0, 0, 0, 9,105,117,112,102,114, 97,109,101, 0, 2, 0,
+ 0, 0, 8,105,117,112,104, 98,111,120, 0, 2, 0, 0, 0, 7,109, 97,114,103,
+105,110, 0, 2, 0, 0, 0, 4, 48,120, 48, 0, 2, 0, 0, 0, 4,103, 97,112,
+ 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97,
+ 98,101,108, 0, 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115,
+ 0, 2, 0, 0, 0, 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 10,
+ 97,108,105,103,110,109,101,110,116, 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72,
+ 84, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 6,116,105,116,
+108,101, 0, 2, 0, 0, 0, 9, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0,
+ 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 4, 53,120, 53, 0, 2,
+ 0, 0, 0, 2, 53, 0, 2, 0, 0, 0, 8,109,110,117, 77, 97,105,110, 0, 2,
+ 0, 0, 0, 8,105,117,112,109,101,110,117, 0, 2, 0, 0, 0, 11,105,117,112,
+115,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109,
+ 0, 2, 0, 0, 0, 5, 69,120,105,116, 0, 2, 0, 0, 0, 17,114,101,116,117,
+114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 5, 70,105,
+108,101, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,105,116,101,
+109, 0, 2, 0, 0, 0, 22, 80,114,105,110,116, 32, 86,101,114,115,105,111,110,
+ 32, 73,110,102,111, 46, 46, 46, 0, 2, 0, 0, 0, 9, 65, 98,111,117,116, 46,
+ 46, 46, 0, 2, 0, 0, 0, 39,100,108,103, 65, 98,111,117,116, 58,112,111,112,
+117,112, 40, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82, 44, 32, 73, 85, 80, 95, 67,
+ 69, 78, 84, 69, 82, 41, 0, 2, 0, 0, 0, 5, 72,101,108,112, 0, 2, 0, 0,
+ 0, 8,100,108,103, 77, 97,105,110, 0, 2, 0, 0, 0, 10,105,117,112,100,105,
+ 97,108,111,103, 0, 2, 0, 0, 0, 29, 67,111,109,112,108,101,116,101, 32, 73,
+117,112, 76,117, 97, 51, 32, 73,110,116,101,114,112,114,101,116,101,114, 0, 2,
+ 0, 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 9, 99,108,111,115,101, 95,
+ 99, 98, 0, 2, 0, 0, 0, 9,100,108,103, 65, 98,111,117,116, 0, 2, 0, 0,
+ 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0, 0, 16, 84,101, 99,103,114,
+ 97,102, 47, 80, 85, 67, 45, 82,105,111, 0, 2, 0, 0, 0, 18, 77, 97,114,107,
+ 47, 79,118,237,100,105,111, 47, 83, 99,117,114,105, 0, 2, 0, 0, 0, 23,105,
+117,112, 64,116,101, 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,
+114, 0, 2, 0, 0, 0, 3, 79, 75, 0, 2, 0, 0, 0, 6, 53, 48, 88, 50, 48,
+ 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0, 0, 0, 7,109, 97,120,
+ 98,111,120, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0, 2, 0, 0, 0,
+ 7,109,105,110, 98,111,120, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0,
+ 2, 0, 0, 0, 6, 65, 98,111,117,116, 0, 2, 0, 0, 0, 5,115,104,111,119,
+ 0, 2, 0, 0, 0, 12, 73,117,112, 77, 97,105,110, 76,111,111,112, 0, 2, 0,
+ 0, 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/console3_le64w.lo");
+}
diff --git a/iup/srcconsole/loh/console5.loh b/iup/srcconsole/loh/console5.loh
new file mode 100755
index 0000000..9bec168
--- /dev/null
+++ b/iup/srcconsole/loh/console5.loh
@@ -0,0 +1,475 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/console5.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/console5.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 14, 0, 0, 0, 64, 99,111,110,
+115,111,108,101, 53, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 15, 90, 1, 0, 0, 5, 0, 0, 0, 65, 64, 0, 0, 28, 64, 0, 1, 5,128,
+ 0, 0, 74, 0, 0, 0, 9, 64,128,129, 5,128, 0, 0, 6,192, 64, 0,100, 0,
+ 0, 0, 9, 64, 0,130, 5,128, 0, 0, 6,192, 64, 0,100, 64, 0, 0, 9, 64,
+128,130, 5,128, 0, 0, 6,192, 64, 0, 9,192, 65,131, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70, 64,194, 0,138,192, 0, 0,137,192, 66,133,137, 64,
+ 67,134,137,192, 67,135, 92,128, 0, 1, 9, 64, 0,132, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,128, 0, 0,137,192, 68,137,137, 0,
+ 69,134, 92,128, 0, 1, 9, 64, 0,136, 5,128, 0, 0, 6,192, 64, 0, 69,128,
+ 0, 0, 70, 64,196, 0,138,192, 0, 0,137,128, 69,137,137, 0, 69,134,137,192,
+ 69,133, 92,128, 0, 1, 9, 64,128,138, 5,128, 0, 0, 6,192, 64, 0, 6, 0,
+ 66, 0,100,128, 0, 0, 9, 64, 0,140, 5,128, 0, 0, 6,192, 64, 0, 69,128,
+ 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0, 71,137,137,128,
+199,142, 92,128, 0, 1, 9, 64,128,140, 5,128, 0, 0, 6,192, 64, 0, 69,128,
+ 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0, 72,137,137, 64,
+200,142, 92,128, 0, 1, 9, 64,128,143, 5,128, 0, 0, 6,192, 64, 0, 69,128,
+ 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137,192, 72,137, 92,128,
+ 0, 1, 9, 64, 0,145, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128,
+198, 0,138,128, 0, 0,137,192, 70,134,137, 64, 73,137, 92,128, 0, 1, 9, 64,
+ 0,146, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128,198, 0,138,128,
+ 0, 0,137,192, 70,134,137,192, 73,137, 92,128, 0, 1, 9, 64, 0,147, 5,128,
+ 0, 0, 6,192, 64, 0, 6,128, 73, 0,100,192, 0, 0, 9, 64,128,142, 5,128,
+ 0, 0, 6,192, 64, 0, 6, 0, 73, 0,100, 0, 1, 0, 9, 64,128,142, 5,128,
+ 0, 0, 6,192, 64, 0,100, 64, 1, 0, 9, 64, 0,148, 5,128, 0, 0, 6,192,
+ 64, 0, 6,128, 72, 0,100,128, 1, 0, 9, 64,128,142, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70,128,202, 0,138,192,128, 0,197,128, 0, 0,198,192,
+202, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 1,203, 2,138, 65, 0, 1,197,129,
+ 0, 0,198,129,202, 3, 10,130,128, 2, 69,130, 0, 0, 70,194,192, 4, 70,130,
+200, 4,133,130, 0, 0,134,194, 64, 5,134,130, 73, 5,197,130, 0, 0,198,194,
+192, 5,198, 2,201, 5, 5,131, 0, 0, 6,195, 64, 6, 6,195, 71, 6, 69,131,
+ 0, 0, 70,195,192, 6, 70, 67,198, 6, 9,130,203,150, 9, 2,204,151, 34, 66,
+128, 2,220,129, 0, 1, 5,130, 0, 0, 6,130, 74, 4, 74, 66,128, 1,133,130,
+ 0, 0,134,194, 64, 5,134, 66, 69, 5,197,130, 0, 0,198,194,192, 5,198, 2,
+194, 5, 5,131, 0, 0, 6,195, 64, 6, 6, 3, 68, 6, 73,130,204,152, 98, 66,
+128, 1, 28,130, 0, 1,137,193,204,152,162, 65, 0, 1, 92,129, 0, 1, 9, 1,
+ 77,137, 34, 65,128, 0,220,128, 0, 1,137, 64,205,152,137,128,205,150,137,192,
+205,151,162, 64,128, 0, 92,128, 0, 1, 9, 64,128,148, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70, 64,206, 0,138, 0,128, 0,197,128, 0, 0,198,128,
+206, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 65,206, 2,138, 1, 0, 0,197,129,
+ 0, 0,198,193,206, 3, 10,130, 0, 0, 9, 2, 79,137, 9, 66,207,142,220, 1,
+ 0, 1,162, 65, 0, 0, 92,129, 0, 1, 9,129, 79,137, 34, 65,128, 0,220,128,
+ 0, 1, 5,129, 0, 0, 6,129, 78, 2, 74, 65,128, 0,133,129, 0, 0,134, 65,
+ 78, 3,202, 1,128, 0, 5,130, 0, 0, 6,194, 78, 4, 74,130, 0, 0, 73,194,
+ 79,137,133,130, 0, 0,134,194, 64, 5,134, 66, 65, 5, 73,130,130,142, 28,130,
+ 0, 1, 69,130, 0, 0, 70,194,206, 4,138,130, 0, 0,137, 2, 80,137,137, 66,
+208,142, 92, 2, 0, 1,226, 65, 0, 0,156,129, 0, 1, 73,129, 80,137, 98, 65,
+128, 0, 28, 1, 0, 1,162, 64, 0, 0, 92,128, 0, 1, 9, 64, 0,156, 5,128,
+ 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 0,209, 0,138, 64,129, 0,197,128,
+ 0, 0,198,192,192, 1,198, 64,202, 1,137, 64, 81,137, 5,129, 0, 0, 6,193,
+ 64, 2, 6, 1, 78, 2,137, 0,129,156,137,192, 66,163, 5,129, 0, 0, 6,193,
+ 64, 2, 6, 65, 70, 2,137, 0,129,163,137, 64, 79,164,162, 64,128, 0, 92,128,
+ 0, 1, 9, 64,128,161, 5,128, 0, 0, 6,192, 64, 0, 6,192, 80, 0,100,192,
+ 1, 0, 9, 64,128,164, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 0,
+209, 0,138, 0,129, 0,197,128, 0, 0,198,128,202, 1, 10,129, 0, 3, 69,129,
+ 0, 0, 70, 65,196, 2,138, 65, 0, 0,137, 65, 81,137, 92,129, 0, 1,133,129,
+ 0, 0,134,193, 82, 3,202, 65, 0, 0,201,193, 77,134,156,129, 0, 1,197,129,
+ 0, 0,198,193,210, 3, 10, 66, 0, 0, 9,194, 77,134,220,129, 0, 1, 5,130,
+ 0, 0, 6,194, 74, 4, 74, 2, 0, 0,133,130, 0, 0,134,130, 74, 5,202, 2,
+128, 0, 5,131, 0, 0, 6, 67, 68, 6, 74, 67, 0, 0, 73, 3, 83,137, 28,131,
+ 0, 1, 69,131, 0, 0, 70, 67,196, 6,138, 67, 0, 0,137, 67, 83,137, 92, 3,
+ 0, 1,226, 66, 0, 0,156, 2, 0, 1, 98, 66, 0, 0, 28,130, 0, 1, 69,130,
+ 0, 0, 70,194,210, 4,138, 66, 0, 0,137,194, 77,134, 92,130, 0, 1,133,130,
+ 0, 0,134,130, 70, 5,202,194, 0, 0,201,130, 83,137,201, 66,207,142,201,194,
+ 83,134,156,130, 0, 1, 9, 1,212,150, 9, 65,205,152, 34, 65, 0, 3,220,128,
+ 0, 1,137,128,212,168,137,128,212,169,137,128, 84,170,137, 64, 85,137,162, 64,
+128, 0, 92,128, 0, 1, 9, 64, 0,165, 5,128, 0, 0, 6,192, 64, 0, 6,192,
+ 80, 0, 11,128, 85, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192, 85, 0, 69,128,
+ 0, 0, 70,192,192, 0, 70, 0,194, 0, 28, 64, 0, 1, 5,128, 0, 0, 6, 0,
+ 86, 0, 28, 64,128, 0, 5,128, 0, 0, 6,192, 64, 0, 6,192, 80, 0, 11, 64,
+ 86, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192, 64, 0, 6,128, 82, 0, 11, 64,
+ 86, 0, 28, 64, 0, 1, 30, 0,128, 0, 90, 0, 0, 0, 4, 8, 0, 0, 0,114,
+101,113,117,105,114,101, 0, 4, 7, 0, 0, 0,105,117,112,108,117, 97, 0, 4,
+ 4, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, 0, 99,111,110,115,111,108,101,
+ 0, 4, 11, 0, 0, 0,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 19, 0,
+ 0, 0,112,114,105,110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111,
+ 0, 4, 13, 0, 0, 0,108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 0,
+ 4, 7, 0, 0, 0,109,108, 67,111,100,101, 0, 4, 10, 0, 0, 0,109,117,108,
+116,105,108,105,110,101, 0, 4, 7, 0, 0, 0,101,120,112, 97,110,100, 0, 4,
+ 4, 0, 0, 0, 89, 69, 83, 0, 4, 5, 0, 0, 0,115,105,122,101, 0, 4, 8,
+ 0, 0, 0, 50, 48, 48,120, 49, 50, 48, 0, 4, 5, 0, 0, 0,102,111,110,116,
+ 0, 4, 18, 0, 0, 0, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76,
+ 95, 49, 48, 0, 4, 12, 0, 0, 0,108, 98,108, 80,111,115,105,116,105,111,110,
+ 0, 4, 6, 0, 0, 0,108, 97, 98,101,108, 0, 4, 6, 0, 0, 0,116,105,116,
+108,101, 0, 4, 4, 0, 0, 0, 48, 58, 48, 0, 4, 4, 0, 0, 0, 53, 48,120,
+ 0, 4, 12, 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, 1,
+ 0, 0, 0, 0, 4, 11, 0, 0, 0, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0,
+ 4, 9, 0, 0, 0, 99, 97,114,101,116, 95, 99, 98, 0, 4, 11, 0, 0, 0, 98,
+117,116, 69,120,101, 99,117,116,101, 0, 4, 7, 0, 0, 0, 98,117,116,116,111,
+110, 0, 4, 6, 0, 0, 0, 53, 48,120, 49, 53, 0, 4, 8, 0, 0, 0, 69,120,
+101, 99,117,116,101, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 39,
+ 0, 0, 0,105,117,112, 46,100,111,115,116,114,105,110,103, 40,105,117,112, 46,
+ 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, 97,108,117,101,
+ 41, 0, 4, 17, 0, 0, 0, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97,
+110,100,115, 0, 4, 6, 0, 0, 0, 67,108,101, 97,114, 0, 4, 96, 0, 0, 0,
+105,117,112, 46, 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118,
+ 97,108,117,101, 61, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101,
+ 46,108, 98,108, 70,105,108,101, 78, 97,109,101, 46,116,105,116,108,101, 32, 61,
+ 32, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 97,115,
+116,102,105,108,101,110, 97,109,101, 32, 61, 32,110,105,108, 0, 4, 12, 0, 0,
+ 0, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 4, 8, 0, 0, 0, 76,111,
+ 97,100, 46, 46, 46, 0, 4, 14, 0, 0, 0, 98,117,116, 83, 97,118,101, 97,115,
+ 70,105,108,101, 0, 4, 11, 0, 0, 0, 83, 97,118,101, 32, 65,115, 46, 46, 46,
+ 0, 4, 12, 0, 0, 0, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 4, 5,
+ 0, 0, 0, 83, 97,118,101, 0, 4, 9, 0, 0, 0, 76,111, 97,100, 70,105,108,
+101, 0, 4, 11, 0, 0, 0,118, 98,120, 67,111,110,115,111,108,101, 0, 4, 5,
+ 0, 0, 0,118, 98,111,120, 0, 4, 6, 0, 0, 0,102,114, 97,109,101, 0, 4,
+ 5, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0,109, 97,114,103,105,110,
+ 0, 4, 4, 0, 0, 0, 48,120, 48, 0, 4, 4, 0, 0, 0,103, 97,112, 0, 4,
+ 3, 0, 0, 0, 49, 48, 0, 4, 10, 0, 0, 0, 97,108,105,103,110,109,101,110,
+116, 0, 4, 7, 0, 0, 0, 65, 82, 73, 71, 72, 84, 0, 4, 5, 0, 0, 0, 65,
+ 84, 79, 80, 0, 4, 9, 0, 0, 0, 67,111,109,109, 97,110,100,115, 0, 4, 8,
+ 0, 0, 0, 65, 67, 69, 78, 84, 69, 82, 0, 4, 4, 0, 0, 0, 53,120, 53, 0,
+ 4, 2, 0, 0, 0, 53, 0, 4, 8, 0, 0, 0,109,110,117, 77, 97,105,110, 0,
+ 4, 5, 0, 0, 0,109,101,110,117, 0, 4, 8, 0, 0, 0,115,117, 98,109,101,
+110,117, 0, 4, 5, 0, 0, 0,105,116,101,109, 0, 4, 5, 0, 0, 0, 69,120,
+105,116, 0, 4, 17, 0, 0, 0,114,101,116,117,114,110, 32,105,117,112, 46, 67,
+ 76, 79, 83, 69, 0, 4, 5, 0, 0, 0, 70,105,108,101, 0, 4, 22, 0, 0, 0,
+ 80,114,105,110,116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111, 46, 46,
+ 46, 0, 4, 9, 0, 0, 0, 65, 98,111,117,116, 46, 46, 46, 0, 4, 51, 0, 0,
+ 0,105,117,112, 46, 99,111,110,115,111,108,101, 46,100,108,103, 65, 98,111,117,
+116, 58,112,111,112,117,112, 40,105,117,112, 46, 67, 69, 78, 84, 69, 82, 44, 32,
+105,117,112, 46, 67, 69, 78, 84, 69, 82, 41, 0, 4, 5, 0, 0, 0, 72,101,108,
+112, 0, 4, 8, 0, 0, 0,100,108,103, 77, 97,105,110, 0, 4, 7, 0, 0, 0,
+100,105, 97,108,111,103, 0, 4, 15, 0, 0, 0, 73,117,112, 76,117, 97, 32, 67,
+111,110,115,111,108,101, 0, 4, 9, 0, 0, 0,100,114, 97,103,100,114,111,112,
+ 0, 4, 13, 0, 0, 0,100,101,102, 97,117,108,116,101,110,116,101,114, 0, 4,
+ 9, 0, 0, 0, 99,108,111,115,101, 95, 99, 98, 0, 4, 13, 0, 0, 0,100,114,
+111,112,102,105,108,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0,100,108,103, 65,
+ 98,111,117,116, 0, 4, 5, 0, 0, 0,102,105,108,108, 0, 4, 16, 0, 0, 0,
+ 84,101, 99,103,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 0, 4, 23, 0, 0,
+ 0,105,117,112, 64,116,101, 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111,
+ 46, 98,114, 0, 4, 3, 0, 0, 0, 79, 75, 0, 4, 6, 0, 0, 0, 53, 48, 88,
+ 50, 48, 0, 4, 6, 0, 0, 0, 49, 48,120, 49, 48, 0, 4, 7, 0, 0, 0,109,
+ 97,120, 98,111,120, 0, 4, 3, 0, 0, 0, 78, 79, 0, 4, 7, 0, 0, 0,109,
+105,110, 98,111,120, 0, 4, 7, 0, 0, 0,114,101,115,105,122,101, 0, 4, 6,
+ 0, 0, 0, 65, 98,111,117,116, 0, 4, 5, 0, 0, 0,115,104,111,119, 0, 4,
+ 9, 0, 0, 0, 83,101,116, 70,111, 99,117,115, 0, 4, 9, 0, 0, 0, 77, 97,
+105,110, 76,111,111,112, 0, 4, 8, 0, 0, 0,100,101,115,116,114,111,121, 0,
+ 8, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0, 0, 0, 1, 0, 8,
+ 30, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0,195, 0,128, 1, 92,192,128, 1,
+197, 64, 0, 0, 1,129, 0, 0,220, 64, 0, 1, 90, 0, 0, 0, 22, 0, 4,128,
+197, 64, 0, 0, 5,193, 0, 0, 64, 1,128, 0, 28,129, 0, 1, 65, 1, 1, 0,
+133,193, 0, 0,192, 1, 0, 1,156,129, 0, 1, 21,129, 1, 2,220, 64, 0, 1,
+197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,220,192,128, 1,128, 0, 0, 2,
+ 64, 0,128, 1, 22, 0,251,127,197, 64, 0, 0, 1, 65, 1, 0,220, 64, 0, 1,
+ 30, 0,128, 0, 6, 0, 0, 0, 4, 5, 0, 0, 0,110,101,120,116, 0, 4, 6,
+ 0, 0, 0,112,114,105,110,116, 0, 4, 21, 0, 0, 0, 45, 45,112,114,105,110,
+116,116, 97, 98,108,101, 32, 83,116, 97,114,116, 45, 45, 0, 4, 9, 0, 0, 0,
+116,111,115,116,114,105,110,103, 0, 4, 2, 0, 0, 0, 61, 0, 4, 19, 0, 0,
+ 0, 45, 45,112,114,105,110,116,116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0,
+ 0, 0, 0, 0, 30, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0,
+ 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0,
+ 10, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0,
+ 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0,
+ 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
+ 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,
+ 14, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0,116, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 2, 0, 0, 0,110, 0, 4, 0, 0, 0, 29, 0, 0, 0,
+ 2, 0, 0, 0,118, 0, 4, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 5,112, 0, 0, 0, 5, 0,
+ 0, 0, 26, 0, 0, 0, 22, 0, 2,128, 5, 64, 0, 0, 65,128, 0, 0,133, 0,
+ 0, 0,134,192, 64, 1,193, 0, 1, 0, 5, 1, 0, 0, 6, 65, 65, 2, 85, 0,
+129, 0, 28, 64, 0, 1, 5,128, 1, 0, 26, 0, 0, 0, 22, 0, 2,128, 5, 64,
+ 0, 0, 65,192, 1, 0,133,128, 1, 0,134,192, 64, 1,193, 0, 1, 0, 5,129,
+ 1, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65, 0,
+ 2, 0,133, 64, 2, 0,134,192, 64, 1,193, 0, 1, 0, 5, 65, 2, 0, 6, 65,
+ 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,128, 2, 0, 28, 64,
+ 0, 1, 5, 64, 0, 0, 65,192, 2, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65, 0,
+ 3, 0,133, 64, 2, 0,134, 64, 67, 1,193,128, 3, 0,156,128, 0, 1, 85,128,
+128, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 3, 0,133, 64, 2, 0,134, 64,
+ 67, 1,193, 0, 4, 0,156,128, 0, 1, 85,128,128, 0, 28, 64, 0, 1, 5, 64,
+ 2, 0, 6, 64, 67, 0, 65, 64, 4, 0, 28,128, 0, 1, 26, 0, 0, 0, 22,192,
+ 0,128, 69, 64, 0, 0,129,128, 4, 0,192, 0, 0, 0, 92, 64,128, 1, 69, 64,
+ 0, 0,129,192, 4, 0,197, 64, 2, 0,198, 64,195, 1, 1, 1, 5, 0,220,128,
+ 0, 1,149,192, 0, 1, 92, 64, 0, 1, 69, 64, 0, 0,129, 64, 5, 0,197, 64,
+ 2, 0,198, 64,195, 1, 1,129, 5, 0,220,128, 0, 1,149,192, 0, 1, 92, 64,
+ 0, 1, 69, 64, 2, 0, 70,192,197, 0, 90, 0, 0, 0, 22, 64, 1,128, 69, 64,
+ 0, 0,129, 0, 6, 0,197, 64, 2, 0,198,192,197, 1,149,192, 0, 1, 92, 64,
+ 0, 1, 69, 64, 2, 0, 70, 64,198, 0, 90, 0, 0, 0, 22, 64, 1,128, 69, 64,
+ 0, 0,129,128, 6, 0,197, 64, 2, 0,198, 64,198, 1,149,192, 0, 1, 92, 64,
+ 0, 1, 69, 64, 2, 0, 70,192,198, 0, 90, 0, 0, 0, 22, 64, 1,128, 69, 64,
+ 0, 0,129, 0, 7, 0,197, 64, 2, 0,198,192,198, 1,149,192, 0, 1, 92, 64,
+ 0, 1, 30, 0,128, 0, 29, 0, 0, 0, 4, 3, 0, 0, 0,105,109, 0, 4, 6,
+ 0, 0, 0,112,114,105,110,116, 0, 4, 4, 0, 0, 0, 73, 77, 32, 0, 4, 9,
+ 0, 0, 0, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 3, 0, 0, 0, 32, 32, 0,
+ 4, 11, 0, 0, 0, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 4, 3, 0, 0,
+ 0, 99,100, 0, 4, 4, 0, 0, 0, 67, 68, 32, 0, 4, 5, 0, 0, 0, 73, 85,
+ 80, 32, 0, 4, 4, 0, 0, 0,105,117,112, 0, 4, 1, 0, 0, 0, 0, 4, 9,
+ 0, 0, 0, 73, 85, 80, 32, 73,110,102,111, 0, 4, 11, 0, 0, 0, 32, 32, 83,
+121,115,116,101,109, 58, 32, 0, 4, 10, 0, 0, 0, 71,101,116, 71,108,111, 98,
+ 97,108, 0, 4, 7, 0, 0, 0, 83, 89, 83, 84, 69, 77, 0, 4, 19, 0, 0, 0,
+ 32, 32, 83,121,115,116,101,109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 4,
+ 14, 0, 0, 0, 83, 89, 83, 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 4, 13,
+ 0, 0, 0, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 4, 18, 0, 0,
+ 0, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32, 0, 4,
+ 16, 0, 0, 0, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122,101, 58, 32, 0,
+ 4, 11, 0, 0, 0, 83, 67, 82, 69, 69, 78, 83, 73, 90, 69, 0, 4, 17, 0, 0,
+ 0, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112,116,104, 58, 32, 0, 4, 12,
+ 0, 0, 0, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 4, 10, 0, 0, 0,
+ 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 4, 18, 0, 0, 0, 32, 32, 79,112,101,
+110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 4, 12, 0, 0, 0, 71, 76,
+ 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 4, 20, 0, 0, 0, 32, 32, 79,112,101,
+110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58, 32, 0, 4, 11, 0, 0, 0,
+ 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 19, 0, 0, 0, 32, 32, 79,112,
+101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 0, 0, 0, 0,112,
+ 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18,
+ 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18,
+ 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 22,
+ 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22,
+ 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23,
+ 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25,
+ 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25,
+ 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26,
+ 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29,
+ 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29,
+ 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31,
+ 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34,
+ 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34,
+ 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35,
+ 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35,
+ 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36,
+ 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36,
+ 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0,109,
+111,116, 0, 59, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46,
+ 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 9, 0, 0, 0,197, 0, 0, 0,198,
+ 64,192, 1,198,128,192, 1, 0, 1,128, 0, 65, 1, 1, 0,128, 1, 0, 1, 21,
+129, 1, 2,201, 0,129,129, 30, 0,128, 0, 5, 0, 0, 0, 4, 4, 0, 0, 0,
+105,117,112, 0, 4, 8, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 12, 0,
+ 0, 0,108, 98,108, 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0,116,
+105,116,108,101, 0, 4, 2, 0, 0, 0, 58, 0, 0, 0, 0, 0, 9, 0, 0, 0,
+ 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0,
+ 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 3, 0, 0, 0,
+ 5, 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0,
+ 0,108,105,110, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 99,111,108,
+ 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0,
+ 0, 70, 0, 0, 0, 0, 1, 0, 4, 39, 0, 0, 0, 69, 0, 0, 0, 70, 64,192,
+ 0, 70,128,192, 0, 23,192,192, 0, 22, 64, 1,128, 69, 0, 0, 0, 70, 64,192,
+ 0, 70, 0,193, 0, 75, 64,193, 0, 92, 64, 0, 1, 22,128, 6,128, 69,192, 1,
+ 0, 70, 0,194, 0,133, 0, 0, 0,134, 64, 64, 1,134,128, 64, 1,193, 64, 2,
+ 0, 92,128,128, 1, 71,128, 1, 0, 69,128, 1, 0, 90, 0, 0, 0, 22,128, 2,
+128, 69,128, 1, 0, 75,128,194, 0,197, 0, 0, 0,198, 64,192, 1,198,192,194,
+ 1,198, 0,195, 1, 92, 64,128, 1, 69,128, 1, 0, 75, 64,195, 0, 92, 64, 0,
+ 1, 22, 0, 1,128, 69,128, 3, 0,129,192, 3, 0,197, 0, 4, 0,149,192, 0,
+ 1, 92, 64, 0, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 4, 0, 0, 0,105,117,
+112, 0, 4, 8, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 13, 0, 0, 0,
+108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 0, 4, 14, 0, 0, 0, 98,
+117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 7, 0, 0, 0, 97, 99,
+116,105,111,110, 0, 4, 8, 0, 0, 0,110,101,119,102,105,108,101, 0, 4, 3,
+ 0, 0, 0,105,111, 0, 4, 5, 0, 0, 0,111,112,101,110, 0, 4, 3, 0, 0,
+ 0,119, 43, 0, 4, 6, 0, 0, 0,119,114,105,116,101, 0, 4, 7, 0, 0, 0,
+109,108, 67,111,100,101, 0, 4, 6, 0, 0, 0,118, 97,108,117,101, 0, 4, 6,
+ 0, 0, 0, 99,108,111,115,101, 0, 4, 6, 0, 0, 0,101,114,114,111,114, 0,
+ 4, 18, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,
+101, 32, 0, 4, 9, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 0, 0, 0,
+ 0, 39, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0,
+ 0, 59, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0,
+ 0, 60, 0, 0, 0, 60, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0,
+ 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0,
+ 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,
+ 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,
+ 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 67, 0, 0,
+ 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 70, 0, 0,
+ 0, 1, 0, 0, 0, 5, 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 38, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 0, 1,
+ 0, 7, 65, 0, 0, 0, 69, 0, 0, 0, 70, 64,192, 0,138, 64, 1, 0,137,192,
+ 64,129,137, 64, 65,130,137,192, 65,131,137, 64, 66,132,197,192, 2, 0,137,192,
+ 0,133, 92,128, 0, 1,139, 0,195, 0, 5, 1, 0, 0, 6, 65, 67, 2, 69, 1,
+ 0, 0, 70, 65,195, 2,156, 64, 0, 2,134,128,195, 0,197, 0, 0, 0,198,192,
+195, 1, 6, 65,196, 0,201, 0, 1,136,197, 0, 0, 0,198,192,195, 1,198,128,
+196, 1, 5, 1, 0, 0, 6,193, 67, 2, 6, 1, 68, 2,201, 0, 1,130,203,192,
+196, 0,220, 64, 0, 1, 87, 0, 69, 1, 22,192, 7,128,197, 0, 0, 0,198,192,
+195, 1,198, 0,196, 1, 23, 64,197, 1, 22, 0, 1,128,197,128, 5, 0, 1,193,
+ 5, 0, 69, 1, 6, 0, 21, 65, 1, 2,220, 64, 0, 1,197, 64, 6, 0,198,128,
+198, 1, 5, 1, 0, 0, 6,193, 67, 2, 6, 1, 68, 2, 65,193, 6, 0,220,128,
+128, 1,218, 0, 0, 0, 22, 64, 2,128, 11, 1,199, 1,133, 1, 0, 0,134,193,
+ 67, 3,134, 65, 71, 3,134, 65, 68, 3, 28, 65,128, 1, 11,129,199, 1,128, 1,
+128, 1, 28, 65,128, 1, 22,128, 0,128, 5,129, 5, 0, 65,193, 7, 0, 28, 65,
+ 0, 1, 30, 0,128, 0, 32, 0, 0, 0, 4, 4, 0, 0, 0,105,117,112, 0, 4,
+ 8, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0, 0, 0,100,105, 97,
+108,111,103,116,121,112,101, 0, 4, 5, 0, 0, 0, 83, 65, 86, 69, 0, 4, 6,
+ 0, 0, 0,116,105,116,108,101, 0, 4, 10, 0, 0, 0, 83, 97,118,101, 32, 70,
+105,108,101, 0, 4, 7, 0, 0, 0,102,105,108,116,101,114, 0, 4, 4, 0, 0,
+ 0, 42, 46, 42, 0, 4, 11, 0, 0, 0,102,105,108,116,101,114,105,110,102,111,
+ 0, 4, 10, 0, 0, 0, 65,108,108, 32,102,105,108,101,115, 0, 4, 9, 0, 0,
+ 0, 97,108,108,111,119,110,101,119, 0, 4, 4, 0, 0, 0,121,101,115, 0, 4,
+ 6, 0, 0, 0,112,111,112,117,112, 0, 4, 5, 0, 0, 0, 76, 69, 70, 84, 0,
+ 4, 7, 0, 0, 0,115,116, 97,116,117,115, 0, 4, 8, 0, 0, 0, 99,111,110,
+115,111,108,101, 0, 4, 13, 0, 0, 0,108, 97,115,116,102,105,108,101,110, 97,
+109,101, 0, 4, 6, 0, 0, 0,118, 97,108,117,101, 0, 4, 12, 0, 0, 0,108,
+ 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, 8, 0, 0, 0,100,101,115,116,
+114,111,121, 0, 4, 3, 0, 0, 0, 45, 49, 0, 0, 4, 6, 0, 0, 0,101,114,
+114,111,114, 0, 4, 18, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101,
+ 32,102,105,108,101, 32, 0, 4, 9, 0, 0, 0,102,105,108,101,110, 97,109,101,
+ 0, 4, 3, 0, 0, 0,105,111, 0, 4, 5, 0, 0, 0,111,112,101,110, 0, 4,
+ 3, 0, 0, 0,119, 43, 0, 4, 6, 0, 0, 0,119,114,105,116,101, 0, 4, 7,
+ 0, 0, 0,109,108, 67,111,100,101, 0, 4, 6, 0, 0, 0, 99,108,111,115,101,
+ 0, 4, 17, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,
+108,101, 0, 0, 0, 0, 0, 65, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73,
+ 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 74,
+ 0, 0, 0, 74, 0, 0, 0, 73, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75,
+ 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 77,
+ 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 78,
+ 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78,
+ 0, 0, 0, 79, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 80, 0, 0, 0, 81,
+ 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 82,
+ 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 84,
+ 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84,
+ 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86,
+ 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 87,
+ 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 89, 0, 0, 0, 89,
+ 0, 0, 0, 89, 0, 0, 0, 92, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,115,
+101,108,102, 0, 0, 0, 0, 0, 64, 0, 0, 0, 3, 0, 0, 0,102,100, 0, 10,
+ 0, 0, 0, 64, 0, 0, 0, 7, 0, 0, 0,115,116, 97,116,117,115, 0, 17, 0,
+ 0, 0, 64, 0, 0, 0, 8, 0, 0, 0,110,101,119,102,105,108,101, 0, 49, 0,
+ 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0,104, 0,
+ 0, 0, 0, 1, 0, 6, 34, 0, 0, 0, 69, 0, 0, 0, 70, 64,192, 0,128, 0,
+ 0, 0,193,128, 0, 0, 92,128,128, 1, 23,192,192, 0, 22, 64, 1,128,133, 0,
+ 1, 0,193, 64, 1, 0, 0, 1, 0, 0,213, 0,129, 1,156, 64, 0, 1, 22,192,
+ 4,128,133,128, 1, 0,134,192, 65, 1,134, 0, 66, 1,203,128,194, 0, 65,193,
+ 2, 0,220,128,128, 1,137,192,128,132,139, 0,195, 0, 0, 1,128, 0,156, 64,
+128, 1,133,128, 1, 0,134,192, 65, 1,137, 0,128,134,133,128, 1, 0,134,192,
+ 65, 1,134,128, 67, 1,197,128, 1, 0,198,192,193, 1,198, 64,195, 1,137,192,
+128,135, 30, 0,128, 0, 16, 0, 0, 0, 4, 3, 0, 0, 0,105,111, 0, 4, 5,
+ 0, 0, 0,111,112,101,110, 0, 4, 2, 0, 0, 0,114, 0, 0, 4, 6, 0, 0,
+ 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 67, 97,110,110,111,116, 32,108,
+111, 97,100, 32,102,105,108,101, 32, 0, 4, 4, 0, 0, 0,105,117,112, 0, 4,
+ 8, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 7, 0, 0, 0,109,108, 67,
+111,100,101, 0, 4, 6, 0, 0, 0,118, 97,108,117,101, 0, 4, 5, 0, 0, 0,
+114,101, 97,100, 0, 4, 3, 0, 0, 0, 42, 97, 0, 4, 6, 0, 0, 0, 99,108,
+111,115,101, 0, 4, 13, 0, 0, 0,108, 97,115,116,102,105,108,101,110, 97,109,
+101, 0, 4, 12, 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4,
+ 6, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 34, 0, 0, 0, 95, 0,
+ 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0,
+ 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0,
+ 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0,
+ 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0,100, 0,
+ 0, 0,100, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0,
+ 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0,
+ 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0, 2, 0, 0, 0, 9, 0,
+ 0, 0,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 33, 0, 0, 0, 8,
+ 0, 0, 0,110,101,119,102,105,108,101, 0, 5, 0, 0, 0, 33, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,106, 0, 0, 0,121, 0, 0, 0, 0, 1, 0, 7, 37,
+ 0, 0, 0, 69, 0, 0, 0, 70, 64,192, 0,138, 64, 1, 0,137,192, 64,129,137,
+ 64, 65,130,137,192, 65,131,137, 64, 66,132,137,192, 66,133, 92,128, 0, 1,139,
+ 0,195, 0, 5, 1, 0, 0, 6, 65, 67, 2, 69, 1, 0, 0, 70, 65,195, 2,156,
+ 64, 0, 2,134,128,195, 0,198,192,195, 0, 11, 1,196, 0, 28, 65, 0, 1, 87,
+ 64, 68, 1, 22, 64, 0,128, 23,128, 68, 1, 22,192, 1,128, 23,128, 68, 1, 22,
+128, 2,128, 5,193, 4, 0, 65, 1, 5, 0,128, 1,128, 1, 85,129,129, 2, 28,
+ 65, 0, 1, 22, 0, 1,128, 5, 1, 0, 0, 6, 65, 69, 2, 6,129, 69, 2, 64,
+ 1,128, 1, 28, 65, 0, 1, 30, 0,128, 0, 23, 0, 0, 0, 4, 4, 0, 0, 0,
+105,117,112, 0, 4, 8, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0,
+ 0, 0,100,105, 97,108,111,103,116,121,112,101, 0, 4, 5, 0, 0, 0, 79, 80,
+ 69, 78, 0, 4, 6, 0, 0, 0,116,105,116,108,101, 0, 4, 10, 0, 0, 0, 76,
+111, 97,100, 32, 70,105,108,101, 0, 4, 7, 0, 0, 0,102,105,108,116,101,114,
+ 0, 4, 4, 0, 0, 0, 42, 46, 42, 0, 4, 11, 0, 0, 0,102,105,108,116,101,
+114,105,110,102,111, 0, 4, 10, 0, 0, 0, 65,108,108, 32, 70,105,108,101,115,
+ 0, 4, 9, 0, 0, 0, 97,108,108,111,119,110,101,119, 0, 4, 3, 0, 0, 0,
+ 78, 79, 0, 4, 6, 0, 0, 0,112,111,112,117,112, 0, 4, 7, 0, 0, 0, 67,
+ 69, 78, 84, 69, 82, 0, 4, 7, 0, 0, 0,115,116, 97,116,117,115, 0, 4, 6,
+ 0, 0, 0,118, 97,108,117,101, 0, 4, 8, 0, 0, 0,100,101,115,116,114,111,
+121, 0, 4, 3, 0, 0, 0, 45, 49, 0, 4, 2, 0, 0, 0, 49, 0, 4, 6, 0,
+ 0, 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 67, 97,110,110,111,116, 32,
+108,111, 97,100, 32,102,105,108,101, 32, 0, 4, 8, 0, 0, 0, 99,111,110,115,
+111,108,101, 0, 4, 9, 0, 0, 0, 76,111, 97,100, 70,105,108,101, 0, 0, 0,
+ 0, 0, 37, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,107, 0,
+ 0, 0,107, 0, 0, 0,108, 0, 0, 0,108, 0, 0, 0,108, 0, 0, 0,107, 0,
+ 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0,
+ 0, 0,109, 0, 0, 0,110, 0, 0, 0,111, 0, 0, 0,112, 0, 0, 0,112, 0,
+ 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,115, 0,
+ 0, 0,115, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,116, 0,
+ 0, 0,116, 0, 0, 0,117, 0, 0, 0,119, 0, 0, 0,119, 0, 0, 0,119, 0,
+ 0, 0,119, 0, 0, 0,119, 0, 0, 0,121, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 36, 0, 0, 0, 3, 0, 0, 0,102,
+100, 0, 9, 0, 0, 0, 36, 0, 0, 0, 7, 0, 0, 0,115,116, 97,116,117,115,
+ 0, 16, 0, 0, 0, 36, 0, 0, 0, 9, 0, 0, 0,102,105,108,101,110, 97,109,
+101, 0, 17, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 0,
+ 0, 0,170, 0, 0, 0, 0, 5, 0, 7, 8, 0, 0, 0, 23, 0, 64, 1, 22, 0,
+ 1,128, 69, 65, 0, 0, 70,129,192, 2, 70,193,192, 2,128, 1,128, 0, 92, 65,
+ 0, 1, 30, 0,128, 0, 4, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 4, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, 0, 99,111,110,115,111,108,101,
+ 0, 4, 9, 0, 0, 0, 76,111, 97,100, 70,105,108,101, 0, 0, 0, 0, 0, 8,
+ 0, 0, 0,167, 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,168,
+ 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,170, 0, 0, 0, 5, 0, 0, 0, 5,
+ 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0,
+102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0,
+ 0,110,117,109, 0, 0, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0,120, 0, 0,
+ 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0,121, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0, 90, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,
+ 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0,
+ 0, 15, 0, 0, 0, 7, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0,
+ 0, 17, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0,
+ 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0,
+ 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0,
+ 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0,
+ 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0,
+ 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0,
+ 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0,
+ 0, 46, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0,
+ 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0,
+ 0, 51, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0,
+ 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0,
+ 0, 53, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0,
+ 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0,
+ 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0,
+ 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0,
+ 0, 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0,
+ 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0,
+ 0, 58, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 70, 0, 0, 0, 58, 0, 0,
+ 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 72, 0, 0,
+ 0, 94, 0, 0, 0, 94, 0, 0, 0,104, 0, 0, 0, 94, 0, 0, 0,106, 0, 0,
+ 0,106, 0, 0, 0,106, 0, 0, 0,121, 0, 0, 0,106, 0, 0, 0,123, 0, 0,
+ 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,125, 0, 0,
+ 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0,
+ 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0,
+ 0,125, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,127, 0, 0,
+ 0,127, 0, 0, 0,127, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0,
+ 0,129, 0, 0, 0,129, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0,130, 0, 0,
+ 0,130, 0, 0, 0,125, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0,
+ 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,132, 0, 0, 0,132, 0, 0,
+ 0,132, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,134, 0, 0,
+ 0,134, 0, 0, 0,131, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,125, 0, 0,
+ 0,135, 0, 0, 0,135, 0, 0, 0,125, 0, 0, 0,136, 0, 0, 0,136, 0, 0,
+ 0,136, 0, 0, 0,137, 0, 0, 0,124, 0, 0, 0,137, 0, 0, 0,141, 0, 0,
+ 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,143, 0, 0,
+ 0,143, 0, 0, 0,143, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0,
+ 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0,
+ 0,147, 0, 0, 0,148, 0, 0, 0,146, 0, 0, 0,148, 0, 0, 0,149, 0, 0,
+ 0,144, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0,
+ 0,150, 0, 0, 0,150, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0,
+ 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0,
+ 0,152, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0,
+ 0,153, 0, 0, 0,153, 0, 0, 0,154, 0, 0, 0,151, 0, 0, 0,154, 0, 0,
+ 0,154, 0, 0, 0,150, 0, 0, 0,155, 0, 0, 0,142, 0, 0, 0,155, 0, 0,
+ 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0,
+ 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,160, 0, 0, 0,161, 0, 0,
+ 0,161, 0, 0, 0,161, 0, 0, 0,161, 0, 0, 0,162, 0, 0, 0,163, 0, 0,
+ 0,163, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,164, 0, 0,
+ 0,159, 0, 0, 0,164, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0,166, 0, 0,
+ 0,170, 0, 0, 0,166, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,174, 0, 0,
+ 0,174, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0,176, 0, 0,
+ 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0,
+ 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0,
+ 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0,
+ 0,181, 0, 0, 0,181, 0, 0, 0,181, 0, 0, 0,183, 0, 0, 0,183, 0, 0,
+ 0,183, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0,
+ 0,185, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0,
+ 0,186, 0, 0, 0,187, 0, 0, 0,184, 0, 0, 0,188, 0, 0, 0,182, 0, 0,
+ 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0,
+ 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0,
+ 0,190, 0, 0, 0,190, 0, 0, 0,191, 0, 0, 0,191, 0, 0, 0,192, 0, 0,
+ 0,177, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0,
+ 0,194, 0, 0, 0,175, 0, 0, 0,194, 0, 0, 0,198, 0, 0, 0,198, 0, 0,
+ 0,198, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,199, 0, 0, 0,199, 0, 0,
+ 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,201, 0, 0,
+ 0,201, 0, 0, 0,201, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,203, 0, 0,
+ 0,203, 0, 0, 0,203, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0,
+ 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/console5.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srcconsole/loh/console5_be32.loh b/iup/srcconsole/loh/console5_be32.loh
new file mode 100755
index 0000000..493cae4
--- /dev/null
+++ b/iup/srcconsole/loh/console5_be32.loh
@@ -0,0 +1,475 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/console5_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/console5_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 14, 64, 99,111,110,
+115,111,108,101, 53, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 15, 0, 0, 1, 90, 0, 0, 0, 5, 0, 0, 64, 65, 1, 0, 64, 28, 0, 0,
+128, 5, 0, 0, 0, 74,129,128, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0,
+ 0,100,130, 0, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0, 64,100,130,128,
+ 64, 9, 0, 0,128, 5, 0, 64,192, 6,131, 65,192, 9, 0, 0,128, 5, 0, 64,
+192, 6, 0, 0,128, 69, 0,194, 64, 70, 0, 0,192,138,133, 66,192,137,134, 67,
+ 64,137,135, 67,192,137, 1, 0,128, 92,132, 0, 64, 9, 0, 0,128, 5, 0, 64,
+192, 6, 0, 0,128, 69, 0,196, 64, 70, 0, 0,128,138,137, 68,192,137,134, 69,
+ 0,137, 1, 0,128, 92,136, 0, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0,
+128, 69, 0,196, 64, 70, 0, 0,192,138,137, 69,128,137,134, 69, 0,137,133, 69,
+192,137, 1, 0,128, 92,138,128, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 66,
+ 0, 6, 0, 0,128,100,140, 0, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0,
+128, 69, 0,198,128, 70, 0, 0,192,138,134, 70,192,137,137, 71, 0,137,142,199,
+128,137, 1, 0,128, 92,140,128, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0,
+128, 69, 0,198,128, 70, 0, 0,192,138,134, 70,192,137,137, 72, 0,137,142,200,
+ 64,137, 1, 0,128, 92,143,128, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0,
+128, 69, 0,198,128, 70, 0, 0,128,138,134, 70,192,137,137, 72,192,137, 1, 0,
+128, 92,145, 0, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0,128, 69, 0,198,
+128, 70, 0, 0,128,138,134, 70,192,137,137, 73, 64,137, 1, 0,128, 92,146, 0,
+ 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0,128, 69, 0,198,128, 70, 0, 0,
+128,138,134, 70,192,137,137, 73,192,137, 1, 0,128, 92,147, 0, 64, 9, 0, 0,
+128, 5, 0, 64,192, 6, 0, 73,128, 6, 0, 0,192,100,142,128, 64, 9, 0, 0,
+128, 5, 0, 64,192, 6, 0, 73, 0, 6, 0, 1, 0,100,142,128, 64, 9, 0, 0,
+128, 5, 0, 64,192, 6, 0, 1, 64,100,148, 0, 64, 9, 0, 0,128, 5, 0, 64,
+192, 6, 0, 72,128, 6, 0, 1,128,100,142,128, 64, 9, 0, 0,128, 5, 0, 64,
+192, 6, 0, 0,128, 69, 0,202,128, 70, 0,128,192,138, 0, 0,128,197, 1,202,
+192,198, 0,128, 65, 10, 0, 0,129, 69, 2,203, 1, 70, 1, 0, 65,138, 0, 0,
+129,197, 3,202,129,198, 2,128,130, 10, 0, 0,130, 69, 4,192,194, 70, 4,200,
+130, 70, 0, 0,130,133, 5, 64,194,134, 5, 73,130,134, 0, 0,130,197, 5,192,
+194,198, 5,201, 2,198, 0, 0,131, 5, 6, 64,195, 6, 6, 71,195, 6, 0, 0,
+131, 69, 6,192,195, 70, 6,198, 67, 70,150,203,130, 9,151,204, 2, 9, 2,128,
+ 66, 34, 1, 0,129,220, 0, 0,130, 5, 4, 74,130, 6, 1,128, 66, 74, 0, 0,
+130,133, 5, 64,194,134, 5, 69, 66,134, 0, 0,130,197, 5,192,194,198, 5,194,
+ 2,198, 0, 0,131, 5, 6, 64,195, 6, 6, 68, 3, 6,152,204,130, 73, 1,128,
+ 66, 98, 1, 0,130, 28,152,204,193,137, 1, 0, 65,162, 1, 0,129, 92,137, 77,
+ 1, 9, 0,128, 65, 34, 1, 0,128,220,152,205, 64,137,150,205,128,137,151,205,
+192,137, 0,128, 64,162, 1, 0,128, 92,148,128, 64, 9, 0, 0,128, 5, 0, 64,
+192, 6, 0, 0,128, 69, 0,206, 64, 70, 0,128, 0,138, 0, 0,128,197, 1,206,
+128,198, 0,128, 65, 10, 0, 0,129, 69, 2,206, 65, 70, 0, 0, 1,138, 0, 0,
+129,197, 3,206,193,198, 0, 0,130, 10,137, 79, 2, 9,142,207, 66, 9, 1, 0,
+ 1,220, 0, 0, 65,162, 1, 0,129, 92,137, 79,129, 9, 0,128, 65, 34, 1, 0,
+128,220, 0, 0,129, 5, 2, 78,129, 6, 0,128, 65, 74, 0, 0,129,133, 3, 78,
+ 65,134, 0,128, 1,202, 0, 0,130, 5, 4, 78,194, 6, 0, 0,130, 74,137, 79,
+194, 73, 0, 0,130,133, 5, 64,194,134, 5, 65, 66,134,142,130,130, 73, 1, 0,
+130, 28, 0, 0,130, 69, 4,206,194, 70, 0, 0,130,138,137, 80, 2,137,142,208,
+ 66,137, 1, 0, 2, 92, 0, 0, 65,226, 1, 0,129,156,137, 80,129, 73, 0,128,
+ 65, 98, 1, 0, 1, 28, 0, 0, 64,162, 1, 0,128, 92,156, 0, 64, 9, 0, 0,
+128, 5, 0, 64,192, 6, 0, 0,128, 69, 0,209, 0, 70, 0,129, 64,138, 0, 0,
+128,197, 1,192,192,198, 1,202, 64,198,137, 81, 64,137, 0, 0,129, 5, 2, 64,
+193, 6, 2, 78, 1, 6,156,129, 0,137,163, 66,192,137, 0, 0,129, 5, 2, 64,
+193, 6, 2, 70, 65, 6,163,129, 0,137,164, 79, 64,137, 0,128, 64,162, 1, 0,
+128, 92,161,128, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 80,192, 6, 0, 1,
+192,100,164,128, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0,128, 69, 0,209,
+ 0, 70, 0,129, 0,138, 0, 0,128,197, 1,202,128,198, 3, 0,129, 10, 0, 0,
+129, 69, 2,196, 65, 70, 0, 0, 65,138,137, 81, 65,137, 1, 0,129, 92, 0, 0,
+129,133, 3, 82,193,134, 0, 0, 65,202,134, 77,193,201, 1, 0,129,156, 0, 0,
+129,197, 3,210,193,198, 0, 0, 66, 10,134, 77,194, 9, 1, 0,129,220, 0, 0,
+130, 5, 4, 74,194, 6, 0, 0, 2, 74, 0, 0,130,133, 5, 74,130,134, 0,128,
+ 2,202, 0, 0,131, 5, 6, 68, 67, 6, 0, 0, 67, 74,137, 83, 3, 73, 1, 0,
+131, 28, 0, 0,131, 69, 6,196, 67, 70, 0, 0, 67,138,137, 83, 67,137, 1, 0,
+ 3, 92, 0, 0, 66,226, 1, 0, 2,156, 0, 0, 66, 98, 1, 0,130, 28, 0, 0,
+130, 69, 4,210,194, 70, 0, 0, 66,138,134, 77,194,137, 1, 0,130, 92, 0, 0,
+130,133, 5, 70,130,134, 0, 0,194,202,137, 83,130,201,142,207, 66,201,134, 83,
+194,201, 1, 0,130,156,150,212, 1, 9,152,205, 65, 9, 3, 0, 65, 34, 1, 0,
+128,220,168,212,128,137,169,212,128,137,170, 84,128,137,137, 85, 64,137, 0,128,
+ 64,162, 1, 0,128, 92,165, 0, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 80,
+192, 6, 0, 85,128, 11, 1, 0, 64, 28, 0, 0,128, 5, 0, 85,192, 6, 0, 0,
+128, 69, 0,192,192, 70, 0,194, 0, 70, 1, 0, 64, 28, 0, 0,128, 5, 0, 86,
+ 0, 6, 0,128, 64, 28, 0, 0,128, 5, 0, 64,192, 6, 0, 80,192, 6, 0, 86,
+ 64, 11, 1, 0, 64, 28, 0, 0,128, 5, 0, 64,192, 6, 0, 82,128, 6, 0, 86,
+ 64, 11, 1, 0, 64, 28, 0,128, 0, 30, 0, 0, 0, 90, 4, 0, 0, 0, 8,114,
+101,113,117,105,114,101, 0, 4, 0, 0, 0, 7,105,117,112,108,117, 97, 0, 4,
+ 0, 0, 0, 4,105,117,112, 0, 4, 0, 0, 0, 8, 99,111,110,115,111,108,101,
+ 0, 4, 0, 0, 0, 11,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 0, 0,
+ 0, 19,112,114,105,110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111,
+ 0, 4, 0, 0, 0, 13,108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 0,
+ 4, 0, 0, 0, 7,109,108, 67,111,100,101, 0, 4, 0, 0, 0, 10,109,117,108,
+116,105,108,105,110,101, 0, 4, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 4,
+ 0, 0, 0, 4, 89, 69, 83, 0, 4, 0, 0, 0, 5,115,105,122,101, 0, 4, 0,
+ 0, 0, 8, 50, 48, 48,120, 49, 50, 48, 0, 4, 0, 0, 0, 5,102,111,110,116,
+ 0, 4, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76,
+ 95, 49, 48, 0, 4, 0, 0, 0, 12,108, 98,108, 80,111,115,105,116,105,111,110,
+ 0, 4, 0, 0, 0, 6,108, 97, 98,101,108, 0, 4, 0, 0, 0, 6,116,105,116,
+108,101, 0, 4, 0, 0, 0, 4, 48, 58, 48, 0, 4, 0, 0, 0, 4, 53, 48,120,
+ 0, 4, 0, 0, 0, 12,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, 0,
+ 0, 0, 1, 0, 4, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0,
+ 4, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99, 98, 0, 4, 0, 0, 0, 11, 98,
+117,116, 69,120,101, 99,117,116,101, 0, 4, 0, 0, 0, 7, 98,117,116,116,111,
+110, 0, 4, 0, 0, 0, 6, 53, 48,120, 49, 53, 0, 4, 0, 0, 0, 8, 69,120,
+101, 99,117,116,101, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0,
+ 0, 0, 39,105,117,112, 46,100,111,115,116,114,105,110,103, 40,105,117,112, 46,
+ 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, 97,108,117,101,
+ 41, 0, 4, 0, 0, 0, 17, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97,
+110,100,115, 0, 4, 0, 0, 0, 6, 67,108,101, 97,114, 0, 4, 0, 0, 0, 96,
+105,117,112, 46, 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118,
+ 97,108,117,101, 61, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101,
+ 46,108, 98,108, 70,105,108,101, 78, 97,109,101, 46,116,105,116,108,101, 32, 61,
+ 32, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 97,115,
+116,102,105,108,101,110, 97,109,101, 32, 61, 32,110,105,108, 0, 4, 0, 0, 0,
+ 12, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 4, 0, 0, 0, 8, 76,111,
+ 97,100, 46, 46, 46, 0, 4, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115,
+ 70,105,108,101, 0, 4, 0, 0, 0, 11, 83, 97,118,101, 32, 65,115, 46, 46, 46,
+ 0, 4, 0, 0, 0, 12, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 4, 0,
+ 0, 0, 5, 83, 97,118,101, 0, 4, 0, 0, 0, 9, 76,111, 97,100, 70,105,108,
+101, 0, 4, 0, 0, 0, 11,118, 98,120, 67,111,110,115,111,108,101, 0, 4, 0,
+ 0, 0, 5,118, 98,111,120, 0, 4, 0, 0, 0, 6,102,114, 97,109,101, 0, 4,
+ 0, 0, 0, 5,104, 98,111,120, 0, 4, 0, 0, 0, 7,109, 97,114,103,105,110,
+ 0, 4, 0, 0, 0, 4, 48,120, 48, 0, 4, 0, 0, 0, 4,103, 97,112, 0, 4,
+ 0, 0, 0, 3, 49, 48, 0, 4, 0, 0, 0, 10, 97,108,105,103,110,109,101,110,
+116, 0, 4, 0, 0, 0, 7, 65, 82, 73, 71, 72, 84, 0, 4, 0, 0, 0, 5, 65,
+ 84, 79, 80, 0, 4, 0, 0, 0, 9, 67,111,109,109, 97,110,100,115, 0, 4, 0,
+ 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 4, 0, 0, 0, 4, 53,120, 53, 0,
+ 4, 0, 0, 0, 2, 53, 0, 4, 0, 0, 0, 8,109,110,117, 77, 97,105,110, 0,
+ 4, 0, 0, 0, 5,109,101,110,117, 0, 4, 0, 0, 0, 8,115,117, 98,109,101,
+110,117, 0, 4, 0, 0, 0, 5,105,116,101,109, 0, 4, 0, 0, 0, 5, 69,120,
+105,116, 0, 4, 0, 0, 0, 17,114,101,116,117,114,110, 32,105,117,112, 46, 67,
+ 76, 79, 83, 69, 0, 4, 0, 0, 0, 5, 70,105,108,101, 0, 4, 0, 0, 0, 22,
+ 80,114,105,110,116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111, 46, 46,
+ 46, 0, 4, 0, 0, 0, 9, 65, 98,111,117,116, 46, 46, 46, 0, 4, 0, 0, 0,
+ 51,105,117,112, 46, 99,111,110,115,111,108,101, 46,100,108,103, 65, 98,111,117,
+116, 58,112,111,112,117,112, 40,105,117,112, 46, 67, 69, 78, 84, 69, 82, 44, 32,
+105,117,112, 46, 67, 69, 78, 84, 69, 82, 41, 0, 4, 0, 0, 0, 5, 72,101,108,
+112, 0, 4, 0, 0, 0, 8,100,108,103, 77, 97,105,110, 0, 4, 0, 0, 0, 7,
+100,105, 97,108,111,103, 0, 4, 0, 0, 0, 15, 73,117,112, 76,117, 97, 32, 67,
+111,110,115,111,108,101, 0, 4, 0, 0, 0, 9,100,114, 97,103,100,114,111,112,
+ 0, 4, 0, 0, 0, 13,100,101,102, 97,117,108,116,101,110,116,101,114, 0, 4,
+ 0, 0, 0, 9, 99,108,111,115,101, 95, 99, 98, 0, 4, 0, 0, 0, 13,100,114,
+111,112,102,105,108,101,115, 95, 99, 98, 0, 4, 0, 0, 0, 9,100,108,103, 65,
+ 98,111,117,116, 0, 4, 0, 0, 0, 5,102,105,108,108, 0, 4, 0, 0, 0, 16,
+ 84,101, 99,103,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 0, 4, 0, 0, 0,
+ 23,105,117,112, 64,116,101, 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111,
+ 46, 98,114, 0, 4, 0, 0, 0, 3, 79, 75, 0, 4, 0, 0, 0, 6, 53, 48, 88,
+ 50, 48, 0, 4, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 4, 0, 0, 0, 7,109,
+ 97,120, 98,111,120, 0, 4, 0, 0, 0, 3, 78, 79, 0, 4, 0, 0, 0, 7,109,
+105,110, 98,111,120, 0, 4, 0, 0, 0, 7,114,101,115,105,122,101, 0, 4, 0,
+ 0, 0, 6, 65, 98,111,117,116, 0, 4, 0, 0, 0, 5,115,104,111,119, 0, 4,
+ 0, 0, 0, 9, 83,101,116, 70,111, 99,117,115, 0, 4, 0, 0, 0, 9, 77, 97,
+105,110, 76,111,111,112, 0, 4, 0, 0, 0, 8,100,101,115,116,114,111,121, 0,
+ 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 0, 1, 0, 8,
+ 0, 0, 0, 30, 0, 0, 0, 69, 0, 0, 0,128, 1,128, 0,195, 1,128,192, 92,
+ 0, 0, 64,197, 0, 0,129, 1, 1, 0, 64,220, 0, 0, 0, 90,128, 4, 0, 22,
+ 0, 0, 64,197, 0, 0,193, 5, 0,128, 1, 64, 1, 0,129, 28, 0, 1, 1, 65,
+ 0, 0,193,133, 1, 0, 1,192, 1, 0,129,156, 2, 1,129, 21, 1, 0, 64,220,
+ 0, 0, 0,197, 0, 0, 1, 0, 0,128, 1, 64, 1,128,192,220, 2, 0, 0,128,
+ 1,128, 0, 64,127,251, 0, 22, 0, 0, 64,197, 0, 1, 65, 1, 1, 0, 64,220,
+ 0,128, 0, 30, 0, 0, 0, 6, 4, 0, 0, 0, 5,110,101,120,116, 0, 4, 0,
+ 0, 0, 6,112,114,105,110,116, 0, 4, 0, 0, 0, 21, 45, 45,112,114,105,110,
+116,116, 97, 98,108,101, 32, 83,116, 97,114,116, 45, 45, 0, 4, 0, 0, 0, 9,
+116,111,115,116,114,105,110,103, 0, 4, 0, 0, 0, 2, 61, 0, 4, 0, 0, 0,
+ 19, 45, 45,112,114,105,110,116,116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0,
+ 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8,
+ 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 10,
+ 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11,
+ 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11,
+ 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12,
+ 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 14,
+ 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, 2,116, 0, 0, 0,
+ 0, 0, 0, 0, 0, 29, 0, 0, 0, 2,110, 0, 0, 0, 0, 4, 0, 0, 0, 29,
+ 0, 0, 0, 2,118, 0, 0, 0, 0, 4, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 5, 0, 0, 0,112, 0, 0,
+ 0, 5, 0, 0, 0, 26,128, 2, 0, 22, 0, 0, 64, 5, 0, 0,128, 65, 0, 0,
+ 0,133, 1, 64,192,134, 0, 1, 0,193, 0, 0, 1, 5, 2, 65, 65, 6, 0,129,
+ 0, 85, 1, 0, 64, 28, 0, 1,128, 5, 0, 0, 0, 26,128, 2, 0, 22, 0, 0,
+ 64, 5, 0, 1,192, 65, 0, 1,128,133, 1, 64,192,134, 0, 1, 0,193, 0, 1,
+129, 5, 2, 65, 65, 6, 0,129, 0, 85, 1, 0, 64, 28, 0, 0, 64, 5, 0, 2,
+ 0, 65, 0, 2, 64,133, 1, 64,192,134, 0, 1, 0,193, 0, 2, 65, 5, 2, 65,
+ 65, 6, 0,129, 0, 85, 1, 0, 64, 28, 0, 0, 64, 5, 0, 2,128, 65, 1, 0,
+ 64, 28, 0, 0, 64, 5, 0, 2,192, 65, 1, 0, 64, 28, 0, 0, 64, 5, 0, 3,
+ 0, 65, 0, 2, 64,133, 1, 67, 64,134, 0, 3,128,193, 1, 0,128,156, 0,128,
+128, 85, 1, 0, 64, 28, 0, 0, 64, 5, 0, 3,192, 65, 0, 2, 64,133, 1, 67,
+ 64,134, 0, 4, 0,193, 1, 0,128,156, 0,128,128, 85, 1, 0, 64, 28, 0, 2,
+ 64, 5, 0, 67, 64, 6, 0, 4, 64, 65, 1, 0,128, 28, 0, 0, 0, 26,128, 0,
+192, 22, 0, 0, 64, 69, 0, 4,128,129, 0, 0, 0,192, 1,128, 64, 92, 0, 0,
+ 64, 69, 0, 4,192,129, 0, 2, 64,197, 1,195, 64,198, 0, 5, 1, 1, 1, 0,
+128,220, 1, 0,192,149, 1, 0, 64, 92, 0, 0, 64, 69, 0, 5, 64,129, 0, 2,
+ 64,197, 1,195, 64,198, 0, 5,129, 1, 1, 0,128,220, 1, 0,192,149, 1, 0,
+ 64, 92, 0, 2, 64, 69, 0,197,192, 70, 0, 0, 0, 90,128, 1, 64, 22, 0, 0,
+ 64, 69, 0, 6, 0,129, 0, 2, 64,197, 1,197,192,198, 1, 0,192,149, 1, 0,
+ 64, 92, 0, 2, 64, 69, 0,198, 64, 70, 0, 0, 0, 90,128, 1, 64, 22, 0, 0,
+ 64, 69, 0, 6,128,129, 0, 2, 64,197, 1,198, 64,198, 1, 0,192,149, 1, 0,
+ 64, 92, 0, 2, 64, 69, 0,198,192, 70, 0, 0, 0, 90,128, 1, 64, 22, 0, 0,
+ 64, 69, 0, 7, 0,129, 0, 2, 64,197, 1,198,192,198, 1, 0,192,149, 1, 0,
+ 64, 92, 0,128, 0, 30, 0, 0, 0, 29, 4, 0, 0, 0, 3,105,109, 0, 4, 0,
+ 0, 0, 6,112,114,105,110,116, 0, 4, 0, 0, 0, 4, 73, 77, 32, 0, 4, 0,
+ 0, 0, 9, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 0, 0, 0, 3, 32, 32, 0,
+ 4, 0, 0, 0, 11, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 4, 0, 0, 0,
+ 3, 99,100, 0, 4, 0, 0, 0, 4, 67, 68, 32, 0, 4, 0, 0, 0, 5, 73, 85,
+ 80, 32, 0, 4, 0, 0, 0, 4,105,117,112, 0, 4, 0, 0, 0, 1, 0, 4, 0,
+ 0, 0, 9, 73, 85, 80, 32, 73,110,102,111, 0, 4, 0, 0, 0, 11, 32, 32, 83,
+121,115,116,101,109, 58, 32, 0, 4, 0, 0, 0, 10, 71,101,116, 71,108,111, 98,
+ 97,108, 0, 4, 0, 0, 0, 7, 83, 89, 83, 84, 69, 77, 0, 4, 0, 0, 0, 19,
+ 32, 32, 83,121,115,116,101,109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 4,
+ 0, 0, 0, 14, 83, 89, 83, 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 4, 0,
+ 0, 0, 13, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 4, 0, 0, 0,
+ 18, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32, 0, 4,
+ 0, 0, 0, 16, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122,101, 58, 32, 0,
+ 4, 0, 0, 0, 11, 83, 67, 82, 69, 69, 78, 83, 73, 90, 69, 0, 4, 0, 0, 0,
+ 17, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112,116,104, 58, 32, 0, 4, 0,
+ 0, 0, 12, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 4, 0, 0, 0, 10,
+ 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 4, 0, 0, 0, 18, 32, 32, 79,112,101,
+110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 4, 0, 0, 0, 12, 71, 76,
+ 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 4, 0, 0, 0, 20, 32, 32, 79,112,101,
+110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58, 32, 0, 4, 0, 0, 0, 11,
+ 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 0, 0, 0, 19, 32, 32, 79,112,
+101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 0, 0, 0, 0, 0,
+ 0, 0,112, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0,
+ 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0,
+ 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0,
+ 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0,
+ 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0,
+ 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0,
+ 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0,
+ 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0,
+ 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0,
+ 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0,
+ 0, 0, 29, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0,
+ 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0,
+ 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0,
+ 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0,
+ 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0,
+ 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0,
+ 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0,
+ 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0,
+ 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0,
+ 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 4,109,
+111,116, 0, 0, 0, 0, 59, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 46, 0, 0, 0, 48, 0, 3, 0, 7, 0, 0, 0, 9, 0, 0, 0,197, 1,
+192, 64,198, 1,192,128,198, 0,128, 1, 0, 0, 1, 1, 65, 1, 0, 1,128, 2,
+ 1,129, 21,129,129, 0,201, 0,128, 0, 30, 0, 0, 0, 5, 4, 0, 0, 0, 4,
+105,117,112, 0, 4, 0, 0, 0, 8, 99,111,110,115,111,108,101, 0, 4, 0, 0,
+ 0, 12,108, 98,108, 80,111,115,105,116,105,111,110, 0, 4, 0, 0, 0, 6,116,
+105,116,108,101, 0, 4, 0, 0, 0, 2, 58, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47,
+ 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 3,
+ 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
+ 4,108,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 99,111,108,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 58, 0, 0, 0, 70, 0, 1, 0, 4, 0, 0, 0, 39, 0, 0, 0, 69, 0,192, 64,
+ 70, 0,192,128, 70, 0,192,192, 23,128, 1, 64, 22, 0, 0, 0, 69, 0,192, 64,
+ 70, 0,193, 0, 70, 0,193, 64, 75, 1, 0, 64, 92,128, 6,128, 22, 0, 1,192,
+ 69, 0,194, 0, 70, 0, 0, 0,133, 1, 64, 64,134, 1, 64,128,134, 0, 2, 64,
+193, 1,128,128, 92, 0, 1,128, 71, 0, 1,128, 69, 0, 0, 0, 90,128, 2,128,
+ 22, 0, 1,128, 69, 0,194,128, 75, 0, 0, 0,197, 1,192, 64,198, 1,194,192,
+198, 1,195, 0,198, 1,128, 64, 92, 0, 1,128, 69, 0,195, 64, 75, 1, 0, 64,
+ 92,128, 1, 0, 22, 0, 3,128, 69, 0, 3,192,129, 0, 4, 0,197, 1, 0,192,
+149, 1, 0, 64, 92, 0,128, 0, 30, 0, 0, 0, 17, 4, 0, 0, 0, 4,105,117,
+112, 0, 4, 0, 0, 0, 8, 99,111,110,115,111,108,101, 0, 4, 0, 0, 0, 13,
+108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 0, 4, 0, 0, 0, 14, 98,
+117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 0, 0, 0, 7, 97, 99,
+116,105,111,110, 0, 4, 0, 0, 0, 8,110,101,119,102,105,108,101, 0, 4, 0,
+ 0, 0, 3,105,111, 0, 4, 0, 0, 0, 5,111,112,101,110, 0, 4, 0, 0, 0,
+ 3,119, 43, 0, 4, 0, 0, 0, 6,119,114,105,116,101, 0, 4, 0, 0, 0, 7,
+109,108, 67,111,100,101, 0, 4, 0, 0, 0, 6,118, 97,108,117,101, 0, 4, 0,
+ 0, 0, 6, 99,108,111,115,101, 0, 4, 0, 0, 0, 6,101,114,114,111,114, 0,
+ 4, 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,
+101, 32, 0, 4, 0, 0, 0, 9,102,105,108,101,110, 97,109,101, 0, 0, 0, 0,
+ 0, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0,
+ 59, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0,
+ 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0,
+ 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0,
+ 62, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0,
+ 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0,
+ 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0,
+ 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0,
+ 70, 0, 0, 0, 1, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 0, 0, 0,
+ 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 92, 0, 1,
+ 0, 7, 0, 0, 0, 65, 0, 0, 0, 69, 0,192, 64, 70, 0, 1, 64,138,129, 64,
+192,137,130, 65, 64,137,131, 65,192,137,132, 66, 64,137, 0, 2,192,197,133, 0,
+192,137, 1, 0,128, 92, 0,195, 0,139, 0, 0, 1, 5, 2, 67, 65, 6, 0, 0,
+ 1, 69, 2,195, 65, 70, 2, 0, 64,156, 0,195,128,134, 0, 0, 0,197, 1,195,
+192,198, 0,196, 65, 6,136, 1, 0,201, 0, 0, 0,197, 1,195,192,198, 1,196,
+128,198, 0, 0, 1, 5, 2, 67,193, 6, 2, 68, 1, 6,130, 1, 0,201, 0,196,
+192,203, 1, 0, 64,220, 1, 69, 0, 87,128, 7,192, 22, 0, 0, 0,197, 1,195,
+192,198, 1,196, 0,198, 1,197, 64, 23,128, 1, 0, 22, 0, 5,128,197, 0, 5,
+193, 1, 0, 6, 1, 69, 2, 1, 65, 21, 1, 0, 64,220, 0, 6, 64,197, 1,198,
+128,198, 0, 0, 1, 5, 2, 67,193, 6, 2, 68, 1, 6, 0, 6,193, 65, 1,128,
+128,220, 0, 0, 0,218,128, 2, 64, 22, 1,199, 1, 11, 0, 0, 1,133, 3, 67,
+193,134, 3, 71, 65,134, 3, 68, 65,134, 1,128, 65, 28, 1,199,129, 11, 1,128,
+ 1,128, 1,128, 65, 28,128, 0,128, 22, 0, 5,129, 5, 0, 7,193, 65, 1, 0,
+ 65, 28, 0,128, 0, 30, 0, 0, 0, 32, 4, 0, 0, 0, 4,105,117,112, 0, 4,
+ 0, 0, 0, 8,102,105,108,101,100,108,103, 0, 4, 0, 0, 0, 11,100,105, 97,
+108,111,103,116,121,112,101, 0, 4, 0, 0, 0, 5, 83, 65, 86, 69, 0, 4, 0,
+ 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 0, 10, 83, 97,118,101, 32, 70,
+105,108,101, 0, 4, 0, 0, 0, 7,102,105,108,116,101,114, 0, 4, 0, 0, 0,
+ 4, 42, 46, 42, 0, 4, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,111,
+ 0, 4, 0, 0, 0, 10, 65,108,108, 32,102,105,108,101,115, 0, 4, 0, 0, 0,
+ 9, 97,108,108,111,119,110,101,119, 0, 4, 0, 0, 0, 4,121,101,115, 0, 4,
+ 0, 0, 0, 6,112,111,112,117,112, 0, 4, 0, 0, 0, 5, 76, 69, 70, 84, 0,
+ 4, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 4, 0, 0, 0, 8, 99,111,110,
+115,111,108,101, 0, 4, 0, 0, 0, 13,108, 97,115,116,102,105,108,101,110, 97,
+109,101, 0, 4, 0, 0, 0, 6,118, 97,108,117,101, 0, 4, 0, 0, 0, 12,108,
+ 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, 0, 0, 0, 8,100,101,115,116,
+114,111,121, 0, 4, 0, 0, 0, 3, 45, 49, 0, 0, 4, 0, 0, 0, 6,101,114,
+114,111,114, 0, 4, 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97,118,101,
+ 32,102,105,108,101, 32, 0, 4, 0, 0, 0, 9,102,105,108,101,110, 97,109,101,
+ 0, 4, 0, 0, 0, 3,105,111, 0, 4, 0, 0, 0, 5,111,112,101,110, 0, 4,
+ 0, 0, 0, 3,119, 43, 0, 4, 0, 0, 0, 6,119,114,105,116,101, 0, 4, 0,
+ 0, 0, 7,109,108, 67,111,100,101, 0, 4, 0, 0, 0, 6, 99,108,111,115,101,
+ 0, 4, 0, 0, 0, 17, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,
+108,101, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 73, 0, 0, 0, 73, 0,
+ 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0,
+ 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 73, 0, 0, 0, 75, 0, 0, 0, 75, 0,
+ 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, 0,
+ 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 78, 0,
+ 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0,
+ 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 80, 0,
+ 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0,
+ 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0,
+ 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0,
+ 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0,
+ 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0,
+ 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 89, 0,
+ 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 92, 0, 0, 0, 4, 0, 0, 0, 5,115,
+101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 3,102,100, 0, 0,
+ 0, 0, 10, 0, 0, 0, 64, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 0, 0,
+ 0, 17, 0, 0, 0, 64, 0, 0, 0, 8,110,101,119,102,105,108,101, 0, 0, 0,
+ 0, 49, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0,
+ 0,104, 0, 1, 0, 6, 0, 0, 0, 34, 0, 0, 0, 69, 0,192, 64, 70, 0, 0,
+ 0,128, 0, 0,128,193, 1,128,128, 92, 0,192,192, 23,128, 1, 64, 22, 0, 1,
+ 0,133, 0, 1, 64,193, 0, 0, 1, 0, 1,129, 0,213, 1, 0, 64,156,128, 4,
+192, 22, 0, 1,128,133, 1, 65,192,134, 1, 66, 0,134, 0,194,128,203, 0, 2,
+193, 65, 1,128,128,220,132,128,192,137, 0,195, 0,139, 0,128, 1, 0, 1,128,
+ 64,156, 0, 1,128,133, 1, 65,192,134,134,128, 0,137, 0, 1,128,133, 1, 65,
+192,134, 1, 67,128,134, 0, 1,128,197, 1,193,192,198, 1,195, 64,198,135,128,
+192,137, 0,128, 0, 30, 0, 0, 0, 16, 4, 0, 0, 0, 3,105,111, 0, 4, 0,
+ 0, 0, 5,111,112,101,110, 0, 4, 0, 0, 0, 2,114, 0, 0, 4, 0, 0, 0,
+ 6,101,114,114,111,114, 0, 4, 0, 0, 0, 18, 67, 97,110,110,111,116, 32,108,
+111, 97,100, 32,102,105,108,101, 32, 0, 4, 0, 0, 0, 4,105,117,112, 0, 4,
+ 0, 0, 0, 8, 99,111,110,115,111,108,101, 0, 4, 0, 0, 0, 7,109,108, 67,
+111,100,101, 0, 4, 0, 0, 0, 6,118, 97,108,117,101, 0, 4, 0, 0, 0, 5,
+114,101, 97,100, 0, 4, 0, 0, 0, 3, 42, 97, 0, 4, 0, 0, 0, 6, 99,108,
+111,115,101, 0, 4, 0, 0, 0, 13,108, 97,115,116,102,105,108,101,110, 97,109,
+101, 0, 4, 0, 0, 0, 12,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4,
+ 0, 0, 0, 6,116,105,116,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
+ 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0,
+ 0, 96, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0,
+ 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0,
+ 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0,
+ 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0,101, 0, 0,
+ 0,101, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0,
+ 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0, 2, 0, 0,
+ 0, 9,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,
+ 0, 0, 8,110,101,119,102,105,108,101, 0, 0, 0, 0, 5, 0, 0, 0, 33, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,106, 0, 0, 0,121, 0, 1, 0, 7, 0,
+ 0, 0, 37, 0, 0, 0, 69, 0,192, 64, 70, 0, 1, 64,138,129, 64,192,137,130,
+ 65, 64,137,131, 65,192,137,132, 66, 64,137,133, 66,192,137, 1, 0,128, 92, 0,
+195, 0,139, 0, 0, 1, 5, 2, 67, 65, 6, 0, 0, 1, 69, 2,195, 65, 70, 2,
+ 0, 64,156, 0,195,128,134, 0,195,192,198, 0,196, 1, 11, 1, 0, 65, 28, 1,
+ 68, 64, 87,128, 0, 64, 22, 1, 68,128, 23,128, 1,192, 22, 1, 68,128, 23,128,
+ 2,128, 22, 0, 4,193, 5, 0, 5, 1, 65, 1,128, 1,128, 2,129,129, 85, 1,
+ 0, 65, 28,128, 1, 0, 22, 0, 0, 1, 5, 2, 69, 65, 6, 2, 69,129, 6, 1,
+128, 1, 64, 1, 0, 65, 28, 0,128, 0, 30, 0, 0, 0, 23, 4, 0, 0, 0, 4,
+105,117,112, 0, 4, 0, 0, 0, 8,102,105,108,101,100,108,103, 0, 4, 0, 0,
+ 0, 11,100,105, 97,108,111,103,116,121,112,101, 0, 4, 0, 0, 0, 5, 79, 80,
+ 69, 78, 0, 4, 0, 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 0, 10, 76,
+111, 97,100, 32, 70,105,108,101, 0, 4, 0, 0, 0, 7,102,105,108,116,101,114,
+ 0, 4, 0, 0, 0, 4, 42, 46, 42, 0, 4, 0, 0, 0, 11,102,105,108,116,101,
+114,105,110,102,111, 0, 4, 0, 0, 0, 10, 65,108,108, 32, 70,105,108,101,115,
+ 0, 4, 0, 0, 0, 9, 97,108,108,111,119,110,101,119, 0, 4, 0, 0, 0, 3,
+ 78, 79, 0, 4, 0, 0, 0, 6,112,111,112,117,112, 0, 4, 0, 0, 0, 7, 67,
+ 69, 78, 84, 69, 82, 0, 4, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 4, 0,
+ 0, 0, 6,118, 97,108,117,101, 0, 4, 0, 0, 0, 8,100,101,115,116,114,111,
+121, 0, 4, 0, 0, 0, 3, 45, 49, 0, 4, 0, 0, 0, 2, 49, 0, 4, 0, 0,
+ 0, 6,101,114,114,111,114, 0, 4, 0, 0, 0, 18, 67, 97,110,110,111,116, 32,
+108,111, 97,100, 32,102,105,108,101, 32, 0, 4, 0, 0, 0, 8, 99,111,110,115,
+111,108,101, 0, 4, 0, 0, 0, 9, 76,111, 97,100, 70,105,108,101, 0, 0, 0,
+ 0, 0, 0, 0, 0, 37, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,107, 0, 0,
+ 0,107, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0,108, 0, 0, 0,108, 0, 0,
+ 0,107, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0,
+ 0,109, 0, 0, 0,109, 0, 0, 0,110, 0, 0, 0,111, 0, 0, 0,112, 0, 0,
+ 0,112, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0,
+ 0,115, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,116, 0, 0,
+ 0,116, 0, 0, 0,116, 0, 0, 0,117, 0, 0, 0,119, 0, 0, 0,119, 0, 0,
+ 0,119, 0, 0, 0,119, 0, 0, 0,119, 0, 0, 0,121, 0, 0, 0, 4, 0, 0,
+ 0, 5,115,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 3,102,
+100, 0, 0, 0, 0, 9, 0, 0, 0, 36, 0, 0, 0, 7,115,116, 97,116,117,115,
+ 0, 0, 0, 0, 16, 0, 0, 0, 36, 0, 0, 0, 9,102,105,108,101,110, 97,109,
+101, 0, 0, 0, 0, 17, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,166, 0, 0, 0,170, 0, 5, 0, 7, 0, 0, 0, 8, 1, 64, 0, 23,128, 1,
+ 0, 22, 0, 0, 65, 69, 2,192,129, 70, 2,192,193, 70, 0,128, 1,128, 1, 0,
+ 65, 92, 0,128, 0, 30, 0, 0, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 4,105,117,112, 0, 4, 0, 0, 0, 8, 99,111,110,115,111,108,101,
+ 0, 4, 0, 0, 0, 9, 76,111, 97,100, 70,105,108,101, 0, 0, 0, 0, 0, 0,
+ 0, 0, 8, 0, 0, 0,167, 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0,168, 0,
+ 0, 0,168, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,170, 0, 0, 0, 5, 0,
+ 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9,
+102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
+ 4,110,117,109, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 2,120, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 1, 90, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,
+ 7, 0, 0, 0, 15, 0, 0, 0, 7, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0,
+ 37, 0, 0, 0, 17, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0,
+ 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0,
+ 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0,
+ 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0,
+ 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0,
+ 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0,
+ 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0,
+ 46, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 50, 0, 0, 0,
+ 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0,
+ 50, 0, 0, 0, 51, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0,
+ 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0,
+ 52, 0, 0, 0, 53, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0,
+ 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0,
+ 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0,
+ 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0,
+ 55, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0,
+ 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0,
+ 56, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 70, 0, 0, 0,
+ 58, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0,
+ 72, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0,104, 0, 0, 0, 94, 0, 0, 0,
+106, 0, 0, 0,106, 0, 0, 0,106, 0, 0, 0,121, 0, 0, 0,106, 0, 0, 0,
+123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,
+125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,
+125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,
+125, 0, 0, 0,125, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,
+127, 0, 0, 0,127, 0, 0, 0,127, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,
+128, 0, 0, 0,129, 0, 0, 0,129, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0,
+130, 0, 0, 0,130, 0, 0, 0,125, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,
+131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,132, 0, 0, 0,
+132, 0, 0, 0,132, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,
+134, 0, 0, 0,134, 0, 0, 0,131, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,
+125, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,125, 0, 0, 0,136, 0, 0, 0,
+136, 0, 0, 0,136, 0, 0, 0,137, 0, 0, 0,124, 0, 0, 0,137, 0, 0, 0,
+141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,
+143, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,
+145, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,
+147, 0, 0, 0,147, 0, 0, 0,148, 0, 0, 0,146, 0, 0, 0,148, 0, 0, 0,
+149, 0, 0, 0,144, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,
+150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,
+152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,
+152, 0, 0, 0,152, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,
+153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,154, 0, 0, 0,151, 0, 0, 0,
+154, 0, 0, 0,154, 0, 0, 0,150, 0, 0, 0,155, 0, 0, 0,142, 0, 0, 0,
+155, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,
+159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,160, 0, 0, 0,
+161, 0, 0, 0,161, 0, 0, 0,161, 0, 0, 0,161, 0, 0, 0,162, 0, 0, 0,
+163, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,
+164, 0, 0, 0,159, 0, 0, 0,164, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0,
+166, 0, 0, 0,170, 0, 0, 0,166, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,
+174, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0,
+176, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,
+178, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,
+179, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,
+180, 0, 0, 0,181, 0, 0, 0,181, 0, 0, 0,181, 0, 0, 0,183, 0, 0, 0,
+183, 0, 0, 0,183, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,
+185, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,
+186, 0, 0, 0,186, 0, 0, 0,187, 0, 0, 0,184, 0, 0, 0,188, 0, 0, 0,
+182, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,
+189, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,
+190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,191, 0, 0, 0,191, 0, 0, 0,
+192, 0, 0, 0,177, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,
+193, 0, 0, 0,194, 0, 0, 0,175, 0, 0, 0,194, 0, 0, 0,198, 0, 0, 0,
+198, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,199, 0, 0, 0,
+199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,
+201, 0, 0, 0,201, 0, 0, 0,201, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,
+203, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,
+204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/console5_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srcconsole/loh/console5_be64.loh b/iup/srcconsole/loh/console5_be64.loh
new file mode 100755
index 0000000..4e08445
--- /dev/null
+++ b/iup/srcconsole/loh/console5_be64.loh
@@ -0,0 +1,524 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/console5_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/console5_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,110,115,111,108,101, 53, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 15, 90, 1, 0, 0, 5, 0, 0, 0, 65, 64, 0, 0, 28, 64,
+ 0, 1, 5,128, 0, 0, 74, 0, 0, 0, 9, 64,128,129, 5,128, 0, 0, 6,192,
+ 64, 0,100, 0, 0, 0, 9, 64, 0,130, 5,128, 0, 0, 6,192, 64, 0,100, 64,
+ 0, 0, 9, 64,128,130, 5,128, 0, 0, 6,192, 64, 0, 9,192, 65,131, 5,128,
+ 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,194, 0,138,192, 0, 0,137,192,
+ 66,133,137, 64, 67,134,137,192, 67,135, 92,128, 0, 1, 9, 64, 0,132, 5,128,
+ 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,128, 0, 0,137,192,
+ 68,137,137, 0, 69,134, 92,128, 0, 1, 9, 64, 0,136, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,192, 0, 0,137,128, 69,137,137, 0,
+ 69,134,137,192, 69,133, 92,128, 0, 1, 9, 64,128,138, 5,128, 0, 0, 6,192,
+ 64, 0, 6, 0, 66, 0,100,128, 0, 0, 9, 64, 0,140, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0,
+ 71,137,137,128,199,142, 92,128, 0, 1, 9, 64,128,140, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0,
+ 72,137,137, 64,200,142, 92,128, 0, 1, 9, 64,128,143, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137,192,
+ 72,137, 92,128, 0, 1, 9, 64, 0,145, 5,128, 0, 0, 6,192, 64, 0, 69,128,
+ 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137, 64, 73,137, 92,128,
+ 0, 1, 9, 64, 0,146, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128,
+198, 0,138,128, 0, 0,137,192, 70,134,137,192, 73,137, 92,128, 0, 1, 9, 64,
+ 0,147, 5,128, 0, 0, 6,192, 64, 0, 6,128, 73, 0,100,192, 0, 0, 9, 64,
+128,142, 5,128, 0, 0, 6,192, 64, 0, 6, 0, 73, 0,100, 0, 1, 0, 9, 64,
+128,142, 5,128, 0, 0, 6,192, 64, 0,100, 64, 1, 0, 9, 64, 0,148, 5,128,
+ 0, 0, 6,192, 64, 0, 6,128, 72, 0,100,128, 1, 0, 9, 64,128,142, 5,128,
+ 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128,202, 0,138,192,128, 0,197,128,
+ 0, 0,198,192,202, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 1,203, 2,138, 65,
+ 0, 1,197,129, 0, 0,198,129,202, 3, 10,130,128, 2, 69,130, 0, 0, 70,194,
+192, 4, 70,130,200, 4,133,130, 0, 0,134,194, 64, 5,134,130, 73, 5,197,130,
+ 0, 0,198,194,192, 5,198, 2,201, 5, 5,131, 0, 0, 6,195, 64, 6, 6,195,
+ 71, 6, 69,131, 0, 0, 70,195,192, 6, 70, 67,198, 6, 9,130,203,150, 9, 2,
+204,151, 34, 66,128, 2,220,129, 0, 1, 5,130, 0, 0, 6,130, 74, 4, 74, 66,
+128, 1,133,130, 0, 0,134,194, 64, 5,134, 66, 69, 5,197,130, 0, 0,198,194,
+192, 5,198, 2,194, 5, 5,131, 0, 0, 6,195, 64, 6, 6, 3, 68, 6, 73,130,
+204,152, 98, 66,128, 1, 28,130, 0, 1,137,193,204,152,162, 65, 0, 1, 92,129,
+ 0, 1, 9, 1, 77,137, 34, 65,128, 0,220,128, 0, 1,137, 64,205,152,137,128,
+205,150,137,192,205,151,162, 64,128, 0, 92,128, 0, 1, 9, 64,128,148, 5,128,
+ 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,206, 0,138, 0,128, 0,197,128,
+ 0, 0,198,128,206, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 65,206, 2,138, 1,
+ 0, 0,197,129, 0, 0,198,193,206, 3, 10,130, 0, 0, 9, 2, 79,137, 9, 66,
+207,142,220, 1, 0, 1,162, 65, 0, 0, 92,129, 0, 1, 9,129, 79,137, 34, 65,
+128, 0,220,128, 0, 1, 5,129, 0, 0, 6,129, 78, 2, 74, 65,128, 0,133,129,
+ 0, 0,134, 65, 78, 3,202, 1,128, 0, 5,130, 0, 0, 6,194, 78, 4, 74,130,
+ 0, 0, 73,194, 79,137,133,130, 0, 0,134,194, 64, 5,134, 66, 65, 5, 73,130,
+130,142, 28,130, 0, 1, 69,130, 0, 0, 70,194,206, 4,138,130, 0, 0,137, 2,
+ 80,137,137, 66,208,142, 92, 2, 0, 1,226, 65, 0, 0,156,129, 0, 1, 73,129,
+ 80,137, 98, 65,128, 0, 28, 1, 0, 1,162, 64, 0, 0, 92,128, 0, 1, 9, 64,
+ 0,156, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 0,209, 0,138, 64,
+129, 0,197,128, 0, 0,198,192,192, 1,198, 64,202, 1,137, 64, 81,137, 5,129,
+ 0, 0, 6,193, 64, 2, 6, 1, 78, 2,137, 0,129,156,137,192, 66,163, 5,129,
+ 0, 0, 6,193, 64, 2, 6, 65, 70, 2,137, 0,129,163,137, 64, 79,164,162, 64,
+128, 0, 92,128, 0, 1, 9, 64,128,161, 5,128, 0, 0, 6,192, 64, 0, 6,192,
+ 80, 0,100,192, 1, 0, 9, 64,128,164, 5,128, 0, 0, 6,192, 64, 0, 69,128,
+ 0, 0, 70, 0,209, 0,138, 0,129, 0,197,128, 0, 0,198,128,202, 1, 10,129,
+ 0, 3, 69,129, 0, 0, 70, 65,196, 2,138, 65, 0, 0,137, 65, 81,137, 92,129,
+ 0, 1,133,129, 0, 0,134,193, 82, 3,202, 65, 0, 0,201,193, 77,134,156,129,
+ 0, 1,197,129, 0, 0,198,193,210, 3, 10, 66, 0, 0, 9,194, 77,134,220,129,
+ 0, 1, 5,130, 0, 0, 6,194, 74, 4, 74, 2, 0, 0,133,130, 0, 0,134,130,
+ 74, 5,202, 2,128, 0, 5,131, 0, 0, 6, 67, 68, 6, 74, 67, 0, 0, 73, 3,
+ 83,137, 28,131, 0, 1, 69,131, 0, 0, 70, 67,196, 6,138, 67, 0, 0,137, 67,
+ 83,137, 92, 3, 0, 1,226, 66, 0, 0,156, 2, 0, 1, 98, 66, 0, 0, 28,130,
+ 0, 1, 69,130, 0, 0, 70,194,210, 4,138, 66, 0, 0,137,194, 77,134, 92,130,
+ 0, 1,133,130, 0, 0,134,130, 70, 5,202,194, 0, 0,201,130, 83,137,201, 66,
+207,142,201,194, 83,134,156,130, 0, 1, 9, 1,212,150, 9, 65,205,152, 34, 65,
+ 0, 3,220,128, 0, 1,137,128,212,168,137,128,212,169,137,128, 84,170,137, 64,
+ 85,137,162, 64,128, 0, 92,128, 0, 1, 9, 64, 0,165, 5,128, 0, 0, 6,192,
+ 64, 0, 6,192, 80, 0, 11,128, 85, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192,
+ 85, 0, 69,128, 0, 0, 70,192,192, 0, 70, 0,194, 0, 28, 64, 0, 1, 5,128,
+ 0, 0, 6, 0, 86, 0, 28, 64,128, 0, 5,128, 0, 0, 6,192, 64, 0, 6,192,
+ 80, 0, 11, 64, 86, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192, 64, 0, 6,128,
+ 82, 0, 11, 64, 86, 0, 28, 64, 0, 1, 30, 0,128, 0, 90, 0, 0, 0, 4, 8,
+ 0, 0, 0, 0, 0, 0, 0,114,101,113,117,105,114,101, 0, 4, 7, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112,108,117, 97, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101,
+ 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116,116, 97, 98,108,101,
+ 0, 4, 19, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116, 95,118,101,114,115,
+105,111,110, 95,105,110,102,111, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,
+115,116,102,105,108,101,110, 97,109,101, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,109,108, 67,111,100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,109,117,108,
+116,105,108,105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,101,120,112, 97,
+110,100, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69, 83, 0, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0,115,105,122,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 50,
+ 48, 48,120, 49, 50, 48, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,102,111,110,116,
+ 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79,
+ 82, 77, 65, 76, 95, 49, 48, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108,
+ 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,108, 97,
+ 98,101,108, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 4,
+ 4, 0, 0, 0, 0, 0, 0, 0, 48, 58, 48, 0, 4, 4, 0, 0, 0, 0, 0, 0,
+ 0, 53, 48,120, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105,108,
+101, 78, 97,109,101, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,114,101,116, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0, 98,117,116, 69,120,101, 99,117,116,101, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 98,117,116,116,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 53,
+ 48,120, 49, 53, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 69,120,101, 99,117,116,
+101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 39,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 46,100,111,115,116,114,105,110,103, 40,
+105,117,112, 46, 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118,
+ 97,108,117,101, 41, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 98,117,116, 67,108,
+101, 97,114, 67,111,109,109, 97,110,100,115, 0, 4, 6, 0, 0, 0, 0, 0, 0,
+ 0, 67,108,101, 97,114, 0, 4, 96, 0, 0, 0, 0, 0, 0, 0,105,117,112, 46,
+ 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, 97,108,117,101,
+ 61, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 98,108,
+ 70,105,108,101, 78, 97,109,101, 46,116,105,116,108,101, 32, 61, 32, 39, 39, 32,
+ 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 97,115,116,102,105,108,
+101,110, 97,109,101, 32, 61, 32,110,105,108, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 4, 8, 0, 0, 0, 0, 0,
+ 0, 0, 76,111, 97,100, 46, 46, 46, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98,
+117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0, 83, 97,118,101, 32, 65,115, 46, 46, 46, 0, 4, 12, 0, 0, 0, 0, 0,
+ 0, 0, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 4, 5, 0, 0, 0, 0,
+ 0, 0, 0, 83, 97,118,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 76,111, 97,
+100, 70,105,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,118, 98,120, 67,111,
+110,115,111,108,101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0,
+ 4, 6, 0, 0, 0, 0, 0, 0, 0,102,114, 97,109,101, 0, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,
+114,103,105,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 48,120, 48, 0, 4, 4,
+ 0, 0, 0, 0, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,
+ 49, 48, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97,108,105,103,110,109,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65, 82, 73, 71, 72, 84, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0, 65, 84, 79, 80, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 67,111,109,109, 97,110,100,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65,
+ 67, 69, 78, 84, 69, 82, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 53,120, 53, 0,
+ 4, 2, 0, 0, 0, 0, 0, 0, 0, 53, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+109,110,117, 77, 97,105,110, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,109,101,110,
+117, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 69,120,105,116, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0,114,101,116,117,
+114,110, 32,105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 70,105,108,101, 0, 4, 22, 0, 0, 0, 0, 0, 0, 0, 80,114,105,110,
+116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111, 46, 46, 46, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 65, 98,111,117,116, 46, 46, 46, 0, 4, 51, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 46, 99,111,110,115,111,108,101, 46,100,108,103,
+ 65, 98,111,117,116, 58,112,111,112,117,112, 40,105,117,112, 46, 67, 69, 78, 84,
+ 69, 82, 44, 32,105,117,112, 46, 67, 69, 78, 84, 69, 82, 41, 0, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0, 72,101,108,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,
+108,103, 77, 97,105,110, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,
+111,103, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 73,117,112, 76,117, 97, 32, 67,
+111,110,115,111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,100,114, 97,103,
+100,114,111,112, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,
+116,101,110,116,101,114, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,
+101, 95, 99, 98, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,102,105,
+108,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,100,108,103, 65,
+ 98,111,117,116, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,102,105,108,108, 0, 4,
+ 16, 0, 0, 0, 0, 0, 0, 0, 84,101, 99,103,114, 97,102, 47, 80, 85, 67, 45,
+ 82,105,111, 0, 4, 23, 0, 0, 0, 0, 0, 0, 0,105,117,112, 64,116,101, 99,
+103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,114, 0, 4, 3, 0, 0,
+ 0, 0, 0, 0, 0, 79, 75, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 53, 48, 88,
+ 50, 48, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 49, 48,120, 49, 48, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,109, 97,120, 98,111,120, 0, 4, 3, 0, 0, 0, 0,
+ 0, 0, 0, 78, 79, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109,105,110, 98,111,
+120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,115,105,122,101, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0, 65, 98,111,117,116, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0,115,104,111,119, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 70,
+111, 99,117,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 97,105,110, 76,111,
+111,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0,
+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0, 0,
+ 0, 1, 0, 8, 30, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0,195, 0,128, 1,
+ 92,192,128, 1,197, 64, 0, 0, 1,129, 0, 0,220, 64, 0, 1, 90, 0, 0, 0,
+ 22, 0, 4,128,197, 64, 0, 0, 5,193, 0, 0, 64, 1,128, 0, 28,129, 0, 1,
+ 65, 1, 1, 0,133,193, 0, 0,192, 1, 0, 1,156,129, 0, 1, 21,129, 1, 2,
+220, 64, 0, 1,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,220,192,128, 1,
+128, 0, 0, 2, 64, 0,128, 1, 22, 0,251,127,197, 64, 0, 0, 1, 65, 1, 0,
+220, 64, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,101,120,116, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116,
+ 0, 4, 21, 0, 0, 0, 0, 0, 0, 0, 45, 45,112,114,105,110,116,116, 97, 98,
+108,101, 32, 83,116, 97,114,116, 45, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+116,111,115,116,114,105,110,103, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 61, 0,
+ 4, 19, 0, 0, 0, 0, 0, 0, 0, 45, 45,112,114,105,110,116,116, 97, 98,108,
+101, 32, 69,110,100, 45, 45, 0, 0, 0, 0, 0, 30, 0, 0, 0, 8, 0, 0, 0,
+ 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0,
+ 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0,
+ 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
+ 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
+ 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0, 29, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0,110, 0, 4, 0, 0, 0, 29, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0,118, 0, 4, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 5,112, 0,
+ 0, 0, 5, 0, 0, 0, 26, 0, 0, 0, 22, 0, 2,128, 5, 64, 0, 0, 65,128,
+ 0, 0,133, 0, 0, 0,134,192, 64, 1,193, 0, 1, 0, 5, 1, 0, 0, 6, 65,
+ 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5,128, 1, 0, 26, 0, 0, 0, 22, 0,
+ 2,128, 5, 64, 0, 0, 65,192, 1, 0,133,128, 1, 0,134,192, 64, 1,193, 0,
+ 1, 0, 5,129, 1, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64,
+ 0, 0, 65, 0, 2, 0,133, 64, 2, 0,134,192, 64, 1,193, 0, 1, 0, 5, 65,
+ 2, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,128,
+ 2, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 2, 0, 28, 64, 0, 1, 5, 64,
+ 0, 0, 65, 0, 3, 0,133, 64, 2, 0,134, 64, 67, 1,193,128, 3, 0,156,128,
+ 0, 1, 85,128,128, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 3, 0,133, 64,
+ 2, 0,134, 64, 67, 1,193, 0, 4, 0,156,128, 0, 1, 85,128,128, 0, 28, 64,
+ 0, 1, 5, 64, 2, 0, 6, 64, 67, 0, 65, 64, 4, 0, 28,128, 0, 1, 26, 0,
+ 0, 0, 22,192, 0,128, 69, 64, 0, 0,129,128, 4, 0,192, 0, 0, 0, 92, 64,
+128, 1, 69, 64, 0, 0,129,192, 4, 0,197, 64, 2, 0,198, 64,195, 1, 1, 1,
+ 5, 0,220,128, 0, 1,149,192, 0, 1, 92, 64, 0, 1, 69, 64, 0, 0,129, 64,
+ 5, 0,197, 64, 2, 0,198, 64,195, 1, 1,129, 5, 0,220,128, 0, 1,149,192,
+ 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70,192,197, 0, 90, 0, 0, 0, 22, 64,
+ 1,128, 69, 64, 0, 0,129, 0, 6, 0,197, 64, 2, 0,198,192,197, 1,149,192,
+ 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70, 64,198, 0, 90, 0, 0, 0, 22, 64,
+ 1,128, 69, 64, 0, 0,129,128, 6, 0,197, 64, 2, 0,198, 64,198, 1,149,192,
+ 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70,192,198, 0, 90, 0, 0, 0, 22, 64,
+ 1,128, 69, 64, 0, 0,129, 0, 7, 0,197, 64, 2, 0,198,192,198, 1,149,192,
+ 0, 1, 92, 64, 0, 1, 30, 0,128, 0, 29, 0, 0, 0, 4, 3, 0, 0, 0, 0,
+ 0, 0, 0,105,109, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116,
+ 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 73, 77, 32, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 3, 0, 0, 0, 0, 0, 0,
+ 0, 32, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 95, 67, 79, 80, 89, 82, 73,
+ 71, 72, 84, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 99,100, 0, 4, 4, 0, 0,
+ 0, 0, 0, 0, 0, 67, 68, 32, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 73, 85,
+ 80, 32, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73, 85, 80, 32, 73,
+110,102,111, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83,121,115,116,101,
+109, 58, 32, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 71,101,116, 71,108,111, 98,
+ 97,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 89, 83, 84, 69, 77, 0, 4,
+ 19, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83,121,115,116,101,109, 32, 86,101,114,
+115,105,111,110, 58, 32, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 83, 89, 83, 84,
+ 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 77,
+ 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 4, 18, 0, 0, 0, 0, 0, 0,
+ 0, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32, 0, 4,
+ 16, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122,
+101, 58, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 83, 67, 82, 69, 69, 78, 83,
+ 73, 90, 69, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83, 99,114,101,101,
+110, 32, 68,101,112,116,104, 58, 32, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 83,
+ 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,
+ 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 32,
+ 32, 79,112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0, 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 4, 20,
+ 0, 0, 0, 0, 0, 0, 0, 32, 32, 79,112,101,110, 71, 76, 32, 82,101,110,100,
+101,114,101,114, 58, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 71, 76, 95, 86,
+ 69, 82, 83, 73, 79, 78, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0, 32, 32, 79,112,
+101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 0, 0, 0, 0,112,
+ 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18,
+ 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18,
+ 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 22,
+ 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22,
+ 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23,
+ 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25,
+ 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25,
+ 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26,
+ 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29,
+ 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29,
+ 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31,
+ 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34,
+ 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34,
+ 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35,
+ 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35,
+ 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36,
+ 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36,
+ 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0,109,111,116, 0, 59, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 9,
+ 0, 0, 0,197, 0, 0, 0,198, 64,192, 1,198,128,192, 1, 0, 1,128, 0, 65,
+ 1, 1, 0,128, 1, 0, 1, 21,129, 1, 2,201, 0,129,129, 30, 0,128, 0, 5,
+ 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0,
+ 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 12, 0, 0, 0, 0, 0,
+ 0, 0,108, 98,108, 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0, 0,
+ 0, 0, 0,116,105,116,108,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0,
+ 0, 0, 0, 0, 9, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0,
+ 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0,
+ 48, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108,102,
+ 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,108,105,110,
+ 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 99,111,108,
+ 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 58, 0, 0, 0, 70, 0, 0, 0, 0, 1, 0, 4, 39, 0, 0, 0, 69, 0, 0,
+ 0, 70, 64,192, 0, 70,128,192, 0, 23,192,192, 0, 22, 64, 1,128, 69, 0, 0,
+ 0, 70, 64,192, 0, 70, 0,193, 0, 75, 64,193, 0, 92, 64, 0, 1, 22,128, 6,
+128, 69,192, 1, 0, 70, 0,194, 0,133, 0, 0, 0,134, 64, 64, 1,134,128, 64,
+ 1,193, 64, 2, 0, 92,128,128, 1, 71,128, 1, 0, 69,128, 1, 0, 90, 0, 0,
+ 0, 22,128, 2,128, 69,128, 1, 0, 75,128,194, 0,197, 0, 0, 0,198, 64,192,
+ 1,198,192,194, 1,198, 0,195, 1, 92, 64,128, 1, 69,128, 1, 0, 75, 64,195,
+ 0, 92, 64, 0, 1, 22, 0, 1,128, 69,128, 3, 0,129,192, 3, 0,197, 0, 4,
+ 0,149,192, 0, 1, 92, 64, 0, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 4, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,
+111,110,115,111,108,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,115,116,
+102,105,108,101,110, 97,109,101, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98,
+117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0, 97, 99,116,105,111,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,110,101,
+119,102,105,108,101, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,105,111, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4, 3, 0, 0, 0, 0, 0, 0,
+ 0,119, 43, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,119,114,105,116,101, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,101, 0, 4, 6, 0, 0, 0,
+ 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108,111,115,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0,
+ 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101,
+ 32,102,105,108,101, 32, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,
+110, 97,109,101, 0, 0, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0,
+ 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0,
+ 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 62, 0, 0,
+ 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0,
+ 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,
+ 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,
+ 0, 64, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0,
+ 0, 65, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0,
+ 0, 67, 0, 0, 0, 70, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
+ 0,115,101,108,102, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 0, 1, 0, 7, 65, 0,
+ 0, 0, 69, 0, 0, 0, 70, 64,192, 0,138, 64, 1, 0,137,192, 64,129,137, 64,
+ 65,130,137,192, 65,131,137, 64, 66,132,197,192, 2, 0,137,192, 0,133, 92,128,
+ 0, 1,139, 0,195, 0, 5, 1, 0, 0, 6, 65, 67, 2, 69, 1, 0, 0, 70, 65,
+195, 2,156, 64, 0, 2,134,128,195, 0,197, 0, 0, 0,198,192,195, 1, 6, 65,
+196, 0,201, 0, 1,136,197, 0, 0, 0,198,192,195, 1,198,128,196, 1, 5, 1,
+ 0, 0, 6,193, 67, 2, 6, 1, 68, 2,201, 0, 1,130,203,192,196, 0,220, 64,
+ 0, 1, 87, 0, 69, 1, 22,192, 7,128,197, 0, 0, 0,198,192,195, 1,198, 0,
+196, 1, 23, 64,197, 1, 22, 0, 1,128,197,128, 5, 0, 1,193, 5, 0, 69, 1,
+ 6, 0, 21, 65, 1, 2,220, 64, 0, 1,197, 64, 6, 0,198,128,198, 1, 5, 1,
+ 0, 0, 6,193, 67, 2, 6, 1, 68, 2, 65,193, 6, 0,220,128,128, 1,218, 0,
+ 0, 0, 22, 64, 2,128, 11, 1,199, 1,133, 1, 0, 0,134,193, 67, 3,134, 65,
+ 71, 3,134, 65, 68, 3, 28, 65,128, 1, 11,129,199, 1,128, 1,128, 1, 28, 65,
+128, 1, 22,128, 0,128, 5,129, 5, 0, 65,193, 7, 0, 28, 65, 0, 1, 30, 0,
+128, 0, 32, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0,100,105, 97,108,111,103,116,121,112,101, 0, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0, 83, 65, 86, 69, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,
+105,116,108,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 83, 97,118,101, 32, 70,
+105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,105,108,116,101,114, 0,
+ 4, 4, 0, 0, 0, 0, 0, 0, 0, 42, 46, 42, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0,102,105,108,116,101,114,105,110,102,111, 0, 4, 10, 0, 0, 0, 0, 0,
+ 0, 0, 65,108,108, 32,102,105,108,101,115, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 97,108,108,111,119,110,101,119, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,121,
+101,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0, 76, 69, 70, 84, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,115,116, 97,116,117,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,
+115,111,108,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,115,116,102,105,
+108,101,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,
+101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97,
+109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0,
+ 4, 3, 0, 0, 0, 0, 0, 0, 0, 45, 49, 0, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,
+110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 4, 3, 0, 0, 0, 0, 0,
+ 0, 0,105,111, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4,
+ 3, 0, 0, 0, 0, 0, 0, 0,119, 43, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+119,114,105,116,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,
+101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 0, 4, 17, 0,
+ 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,
+108,101, 0, 0, 0, 0, 0, 65, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73,
+ 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 74,
+ 0, 0, 0, 74, 0, 0, 0, 73, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75,
+ 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 77,
+ 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 78,
+ 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78,
+ 0, 0, 0, 79, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 80, 0, 0, 0, 81,
+ 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 82,
+ 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 84,
+ 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84,
+ 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86,
+ 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 87,
+ 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 89, 0, 0, 0, 89,
+ 0, 0, 0, 89, 0, 0, 0, 92, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 64, 0, 0, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0,102,100, 0, 10, 0, 0, 0, 64, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0,115,116, 97,116,117,115, 0, 17, 0, 0, 0, 64, 0, 0, 0, 8, 0,
+ 0, 0, 0, 0, 0, 0,110,101,119,102,105,108,101, 0, 49, 0, 0, 0, 64, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0,104, 0,
+ 0, 0, 0, 1, 0, 6, 34, 0, 0, 0, 69, 0, 0, 0, 70, 64,192, 0,128, 0,
+ 0, 0,193,128, 0, 0, 92,128,128, 1, 23,192,192, 0, 22, 64, 1,128,133, 0,
+ 1, 0,193, 64, 1, 0, 0, 1, 0, 0,213, 0,129, 1,156, 64, 0, 1, 22,192,
+ 4,128,133,128, 1, 0,134,192, 65, 1,134, 0, 66, 1,203,128,194, 0, 65,193,
+ 2, 0,220,128,128, 1,137,192,128,132,139, 0,195, 0, 0, 1,128, 0,156, 64,
+128, 1,133,128, 1, 0,134,192, 65, 1,137, 0,128,134,133,128, 1, 0,134,192,
+ 65, 1,134,128, 67, 1,197,128, 1, 0,198,192,193, 1,198, 64,195, 1,137,192,
+128,135, 30, 0,128, 0, 16, 0, 0, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,105,
+111, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0,114, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,
+111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32,108,
+111, 97,100, 32,102,105,108,101, 32, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,101, 0, 4, 6, 0, 0,
+ 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+114,101, 97,100, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 42, 97, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 0, 4, 13, 0, 0, 0, 0, 0, 0,
+ 0,108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, 6, 0, 0, 0,
+ 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 34, 0, 0, 0, 95, 0,
+ 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0,
+ 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0,
+ 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0,
+ 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0,100, 0,
+ 0, 0,100, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0,
+ 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0,
+ 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0, 2, 0, 0, 0, 9, 0,
+ 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 33,
+ 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,110,101,119,102,105,108,101, 0, 5,
+ 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,106,
+ 0, 0, 0,121, 0, 0, 0, 0, 1, 0, 7, 37, 0, 0, 0, 69, 0, 0, 0, 70,
+ 64,192, 0,138, 64, 1, 0,137,192, 64,129,137, 64, 65,130,137,192, 65,131,137,
+ 64, 66,132,137,192, 66,133, 92,128, 0, 1,139, 0,195, 0, 5, 1, 0, 0, 6,
+ 65, 67, 2, 69, 1, 0, 0, 70, 65,195, 2,156, 64, 0, 2,134,128,195, 0,198,
+192,195, 0, 11, 1,196, 0, 28, 65, 0, 1, 87, 64, 68, 1, 22, 64, 0,128, 23,
+128, 68, 1, 22,192, 1,128, 23,128, 68, 1, 22,128, 2,128, 5,193, 4, 0, 65,
+ 1, 5, 0,128, 1,128, 1, 85,129,129, 2, 28, 65, 0, 1, 22, 0, 1,128, 5,
+ 1, 0, 0, 6, 65, 69, 2, 6,129, 69, 2, 64, 1,128, 1, 28, 65, 0, 1, 30,
+ 0,128, 0, 23, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103,116,121,112,101, 0, 4, 5, 0,
+ 0, 0, 0, 0, 0, 0, 79, 80, 69, 78, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+116,105,116,108,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 76,111, 97,100, 32,
+ 70,105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,105,108,116,101,114,
+ 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 42, 46, 42, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0,102,105,108,116,101,114,105,110,102,111, 0, 4, 10, 0, 0, 0, 0,
+ 0, 0, 0, 65,108,108, 32, 70,105,108,101,115, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 97,108,108,111,119,110,101,119, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,
+ 78, 79, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,115,116, 97,116,117,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118,
+ 97,108,117,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,
+121, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 45, 49, 0, 4, 2, 0, 0, 0, 0,
+ 0, 0, 0, 49, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0,
+ 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32,108,111, 97,100,
+ 32,102,105,108,101, 32, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,
+111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 76,111, 97,100, 70,105,108,
+101, 0, 0, 0, 0, 0, 37, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,107, 0,
+ 0, 0,107, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0,108, 0, 0, 0,108, 0,
+ 0, 0,107, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0,
+ 0, 0,109, 0, 0, 0,109, 0, 0, 0,110, 0, 0, 0,111, 0, 0, 0,112, 0,
+ 0, 0,112, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0,
+ 0, 0,115, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,116, 0,
+ 0, 0,116, 0, 0, 0,116, 0, 0, 0,117, 0, 0, 0,119, 0, 0, 0,119, 0,
+ 0, 0,119, 0, 0, 0,119, 0, 0, 0,119, 0, 0, 0,121, 0, 0, 0, 4, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 36,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,102,100, 0, 9, 0, 0, 0, 36, 0,
+ 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,117,115, 0, 16, 0, 0,
+ 0, 36, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109,
+101, 0, 17, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,166, 0, 0, 0,170, 0, 0, 0, 0, 5, 0, 7, 8, 0, 0, 0, 23, 0,
+ 64, 1, 22, 0, 1,128, 69, 65, 0, 0, 70,129,192, 2, 70,193,192, 2,128, 1,
+128, 0, 92, 65, 0, 1, 30, 0,128, 0, 4, 0, 0, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0,
+ 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 76,111, 97,100, 70,105,108,101, 0, 0, 0, 0, 0, 8, 0, 0, 0,167,
+ 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,168,
+ 0, 0, 0,168, 0, 0, 0,170, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0,
+ 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0,110,117,109, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 7, 0, 0, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+ 0, 90, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0,
+ 0, 3, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0,
+ 0, 7, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 17, 0, 0,
+ 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0,
+ 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0,
+ 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0,
+ 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0,
+ 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0,
+ 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0,
+ 0, 44, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0,
+ 0, 48, 0, 0, 0, 46, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0,
+ 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0,
+ 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0,
+ 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0,
+ 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0,
+ 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0,
+ 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0,
+ 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0,
+ 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0,
+ 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 58, 0, 0,
+ 0, 58, 0, 0, 0, 58, 0, 0, 0, 70, 0, 0, 0, 58, 0, 0, 0, 72, 0, 0,
+ 0, 72, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 72, 0, 0, 0, 94, 0, 0,
+ 0, 94, 0, 0, 0,104, 0, 0, 0, 94, 0, 0, 0,106, 0, 0, 0,106, 0, 0,
+ 0,106, 0, 0, 0,121, 0, 0, 0,106, 0, 0, 0,123, 0, 0, 0,123, 0, 0,
+ 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,125, 0, 0, 0,125, 0, 0,
+ 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0,
+ 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0,
+ 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,127, 0, 0, 0,127, 0, 0,
+ 0,127, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,129, 0, 0,
+ 0,129, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0,
+ 0,125, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0,
+ 0,131, 0, 0, 0,131, 0, 0, 0,132, 0, 0, 0,132, 0, 0, 0,132, 0, 0,
+ 0,133, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,134, 0, 0, 0,134, 0, 0,
+ 0,131, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,125, 0, 0, 0,135, 0, 0,
+ 0,135, 0, 0, 0,125, 0, 0, 0,136, 0, 0, 0,136, 0, 0, 0,136, 0, 0,
+ 0,137, 0, 0, 0,124, 0, 0, 0,137, 0, 0, 0,141, 0, 0, 0,141, 0, 0,
+ 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,143, 0, 0, 0,143, 0, 0,
+ 0,143, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,147, 0, 0,
+ 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0,
+ 0,148, 0, 0, 0,146, 0, 0, 0,148, 0, 0, 0,149, 0, 0, 0,144, 0, 0,
+ 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0,
+ 0,150, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0,
+ 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0,
+ 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0,
+ 0,153, 0, 0, 0,154, 0, 0, 0,151, 0, 0, 0,154, 0, 0, 0,154, 0, 0,
+ 0,150, 0, 0, 0,155, 0, 0, 0,142, 0, 0, 0,155, 0, 0, 0,159, 0, 0,
+ 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0,
+ 0,159, 0, 0, 0,159, 0, 0, 0,160, 0, 0, 0,161, 0, 0, 0,161, 0, 0,
+ 0,161, 0, 0, 0,161, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0,163, 0, 0,
+ 0,163, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,164, 0, 0, 0,159, 0, 0,
+ 0,164, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0,170, 0, 0,
+ 0,166, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,174, 0, 0,
+ 0,174, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0,178, 0, 0,
+ 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,179, 0, 0,
+ 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,180, 0, 0,
+ 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,181, 0, 0,
+ 0,181, 0, 0, 0,181, 0, 0, 0,183, 0, 0, 0,183, 0, 0, 0,183, 0, 0,
+ 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0,
+ 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0,
+ 0,187, 0, 0, 0,184, 0, 0, 0,188, 0, 0, 0,182, 0, 0, 0,189, 0, 0,
+ 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,190, 0, 0,
+ 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0,
+ 0,190, 0, 0, 0,191, 0, 0, 0,191, 0, 0, 0,192, 0, 0, 0,177, 0, 0,
+ 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,194, 0, 0,
+ 0,175, 0, 0, 0,194, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,198, 0, 0,
+ 0,198, 0, 0, 0,198, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0,
+ 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,201, 0, 0, 0,201, 0, 0,
+ 0,201, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,203, 0, 0,
+ 0,203, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0,
+ 0,204, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/console5_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srcconsole/loh/console5_le64.loh b/iup/srcconsole/loh/console5_le64.loh
new file mode 100755
index 0000000..083405d
--- /dev/null
+++ b/iup/srcconsole/loh/console5_le64.loh
@@ -0,0 +1,524 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/console5_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/console5_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,110,115,111,108,101, 53, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 15, 90, 1, 0, 0, 5, 0, 0, 0, 65, 64, 0, 0, 28, 64,
+ 0, 1, 5,128, 0, 0, 74, 0, 0, 0, 9, 64,128,129, 5,128, 0, 0, 6,192,
+ 64, 0,100, 0, 0, 0, 9, 64, 0,130, 5,128, 0, 0, 6,192, 64, 0,100, 64,
+ 0, 0, 9, 64,128,130, 5,128, 0, 0, 6,192, 64, 0, 9,192, 65,131, 5,128,
+ 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,194, 0,138,192, 0, 0,137,192,
+ 66,133,137, 64, 67,134,137,192, 67,135, 92,128, 0, 1, 9, 64, 0,132, 5,128,
+ 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,128, 0, 0,137,192,
+ 68,137,137, 0, 69,134, 92,128, 0, 1, 9, 64, 0,136, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,192, 0, 0,137,128, 69,137,137, 0,
+ 69,134,137,192, 69,133, 92,128, 0, 1, 9, 64,128,138, 5,128, 0, 0, 6,192,
+ 64, 0, 6, 0, 66, 0,100,128, 0, 0, 9, 64, 0,140, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0,
+ 71,137,137,128,199,142, 92,128, 0, 1, 9, 64,128,140, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0,
+ 72,137,137, 64,200,142, 92,128, 0, 1, 9, 64,128,143, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137,192,
+ 72,137, 92,128, 0, 1, 9, 64, 0,145, 5,128, 0, 0, 6,192, 64, 0, 69,128,
+ 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137, 64, 73,137, 92,128,
+ 0, 1, 9, 64, 0,146, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128,
+198, 0,138,128, 0, 0,137,192, 70,134,137,192, 73,137, 92,128, 0, 1, 9, 64,
+ 0,147, 5,128, 0, 0, 6,192, 64, 0, 6,128, 73, 0,100,192, 0, 0, 9, 64,
+128,142, 5,128, 0, 0, 6,192, 64, 0, 6, 0, 73, 0,100, 0, 1, 0, 9, 64,
+128,142, 5,128, 0, 0, 6,192, 64, 0,100, 64, 1, 0, 9, 64, 0,148, 5,128,
+ 0, 0, 6,192, 64, 0, 6,128, 72, 0,100,128, 1, 0, 9, 64,128,142, 5,128,
+ 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128,202, 0,138,192,128, 0,197,128,
+ 0, 0,198,192,202, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 1,203, 2,138, 65,
+ 0, 1,197,129, 0, 0,198,129,202, 3, 10,130,128, 2, 69,130, 0, 0, 70,194,
+192, 4, 70,130,200, 4,133,130, 0, 0,134,194, 64, 5,134,130, 73, 5,197,130,
+ 0, 0,198,194,192, 5,198, 2,201, 5, 5,131, 0, 0, 6,195, 64, 6, 6,195,
+ 71, 6, 69,131, 0, 0, 70,195,192, 6, 70, 67,198, 6, 9,130,203,150, 9, 2,
+204,151, 34, 66,128, 2,220,129, 0, 1, 5,130, 0, 0, 6,130, 74, 4, 74, 66,
+128, 1,133,130, 0, 0,134,194, 64, 5,134, 66, 69, 5,197,130, 0, 0,198,194,
+192, 5,198, 2,194, 5, 5,131, 0, 0, 6,195, 64, 6, 6, 3, 68, 6, 73,130,
+204,152, 98, 66,128, 1, 28,130, 0, 1,137,193,204,152,162, 65, 0, 1, 92,129,
+ 0, 1, 9, 1, 77,137, 34, 65,128, 0,220,128, 0, 1,137, 64,205,152,137,128,
+205,150,137,192,205,151,162, 64,128, 0, 92,128, 0, 1, 9, 64,128,148, 5,128,
+ 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,206, 0,138, 0,128, 0,197,128,
+ 0, 0,198,128,206, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 65,206, 2,138, 1,
+ 0, 0,197,129, 0, 0,198,193,206, 3, 10,130, 0, 0, 9, 2, 79,137, 9, 66,
+207,142,220, 1, 0, 1,162, 65, 0, 0, 92,129, 0, 1, 9,129, 79,137, 34, 65,
+128, 0,220,128, 0, 1, 5,129, 0, 0, 6,129, 78, 2, 74, 65,128, 0,133,129,
+ 0, 0,134, 65, 78, 3,202, 1,128, 0, 5,130, 0, 0, 6,194, 78, 4, 74,130,
+ 0, 0, 73,194, 79,137,133,130, 0, 0,134,194, 64, 5,134, 66, 65, 5, 73,130,
+130,142, 28,130, 0, 1, 69,130, 0, 0, 70,194,206, 4,138,130, 0, 0,137, 2,
+ 80,137,137, 66,208,142, 92, 2, 0, 1,226, 65, 0, 0,156,129, 0, 1, 73,129,
+ 80,137, 98, 65,128, 0, 28, 1, 0, 1,162, 64, 0, 0, 92,128, 0, 1, 9, 64,
+ 0,156, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 0,209, 0,138, 64,
+129, 0,197,128, 0, 0,198,192,192, 1,198, 64,202, 1,137, 64, 81,137, 5,129,
+ 0, 0, 6,193, 64, 2, 6, 1, 78, 2,137, 0,129,156,137,192, 66,163, 5,129,
+ 0, 0, 6,193, 64, 2, 6, 65, 70, 2,137, 0,129,163,137, 64, 79,164,162, 64,
+128, 0, 92,128, 0, 1, 9, 64,128,161, 5,128, 0, 0, 6,192, 64, 0, 6,192,
+ 80, 0,100,192, 1, 0, 9, 64,128,164, 5,128, 0, 0, 6,192, 64, 0, 69,128,
+ 0, 0, 70, 0,209, 0,138, 0,129, 0,197,128, 0, 0,198,128,202, 1, 10,129,
+ 0, 3, 69,129, 0, 0, 70, 65,196, 2,138, 65, 0, 0,137, 65, 81,137, 92,129,
+ 0, 1,133,129, 0, 0,134,193, 82, 3,202, 65, 0, 0,201,193, 77,134,156,129,
+ 0, 1,197,129, 0, 0,198,193,210, 3, 10, 66, 0, 0, 9,194, 77,134,220,129,
+ 0, 1, 5,130, 0, 0, 6,194, 74, 4, 74, 2, 0, 0,133,130, 0, 0,134,130,
+ 74, 5,202, 2,128, 0, 5,131, 0, 0, 6, 67, 68, 6, 74, 67, 0, 0, 73, 3,
+ 83,137, 28,131, 0, 1, 69,131, 0, 0, 70, 67,196, 6,138, 67, 0, 0,137, 67,
+ 83,137, 92, 3, 0, 1,226, 66, 0, 0,156, 2, 0, 1, 98, 66, 0, 0, 28,130,
+ 0, 1, 69,130, 0, 0, 70,194,210, 4,138, 66, 0, 0,137,194, 77,134, 92,130,
+ 0, 1,133,130, 0, 0,134,130, 70, 5,202,194, 0, 0,201,130, 83,137,201, 66,
+207,142,201,194, 83,134,156,130, 0, 1, 9, 1,212,150, 9, 65,205,152, 34, 65,
+ 0, 3,220,128, 0, 1,137,128,212,168,137,128,212,169,137,128, 84,170,137, 64,
+ 85,137,162, 64,128, 0, 92,128, 0, 1, 9, 64, 0,165, 5,128, 0, 0, 6,192,
+ 64, 0, 6,192, 80, 0, 11,128, 85, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192,
+ 85, 0, 69,128, 0, 0, 70,192,192, 0, 70, 0,194, 0, 28, 64, 0, 1, 5,128,
+ 0, 0, 6, 0, 86, 0, 28, 64,128, 0, 5,128, 0, 0, 6,192, 64, 0, 6,192,
+ 80, 0, 11, 64, 86, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192, 64, 0, 6,128,
+ 82, 0, 11, 64, 86, 0, 28, 64, 0, 1, 30, 0,128, 0, 90, 0, 0, 0, 4, 8,
+ 0, 0, 0, 0, 0, 0, 0,114,101,113,117,105,114,101, 0, 4, 7, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112,108,117, 97, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101,
+ 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116,116, 97, 98,108,101,
+ 0, 4, 19, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116, 95,118,101,114,115,
+105,111,110, 95,105,110,102,111, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,
+115,116,102,105,108,101,110, 97,109,101, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,109,108, 67,111,100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,109,117,108,
+116,105,108,105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,101,120,112, 97,
+110,100, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69, 83, 0, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0,115,105,122,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 50,
+ 48, 48,120, 49, 50, 48, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,102,111,110,116,
+ 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79,
+ 82, 77, 65, 76, 95, 49, 48, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108,
+ 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,108, 97,
+ 98,101,108, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 4,
+ 4, 0, 0, 0, 0, 0, 0, 0, 48, 58, 48, 0, 4, 4, 0, 0, 0, 0, 0, 0,
+ 0, 53, 48,120, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105,108,
+101, 78, 97,109,101, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,114,101,116, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0, 98,117,116, 69,120,101, 99,117,116,101, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 98,117,116,116,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 53,
+ 48,120, 49, 53, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 69,120,101, 99,117,116,
+101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 39,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 46,100,111,115,116,114,105,110,103, 40,
+105,117,112, 46, 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118,
+ 97,108,117,101, 41, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 98,117,116, 67,108,
+101, 97,114, 67,111,109,109, 97,110,100,115, 0, 4, 6, 0, 0, 0, 0, 0, 0,
+ 0, 67,108,101, 97,114, 0, 4, 96, 0, 0, 0, 0, 0, 0, 0,105,117,112, 46,
+ 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, 97,108,117,101,
+ 61, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 98,108,
+ 70,105,108,101, 78, 97,109,101, 46,116,105,116,108,101, 32, 61, 32, 39, 39, 32,
+ 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 97,115,116,102,105,108,
+101,110, 97,109,101, 32, 61, 32,110,105,108, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 4, 8, 0, 0, 0, 0, 0,
+ 0, 0, 76,111, 97,100, 46, 46, 46, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98,
+117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0, 83, 97,118,101, 32, 65,115, 46, 46, 46, 0, 4, 12, 0, 0, 0, 0, 0,
+ 0, 0, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 4, 5, 0, 0, 0, 0,
+ 0, 0, 0, 83, 97,118,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 76,111, 97,
+100, 70,105,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,118, 98,120, 67,111,
+110,115,111,108,101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0,
+ 4, 6, 0, 0, 0, 0, 0, 0, 0,102,114, 97,109,101, 0, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,
+114,103,105,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 48,120, 48, 0, 4, 4,
+ 0, 0, 0, 0, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,
+ 49, 48, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97,108,105,103,110,109,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65, 82, 73, 71, 72, 84, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0, 65, 84, 79, 80, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 67,111,109,109, 97,110,100,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65,
+ 67, 69, 78, 84, 69, 82, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 53,120, 53, 0,
+ 4, 2, 0, 0, 0, 0, 0, 0, 0, 53, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+109,110,117, 77, 97,105,110, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,109,101,110,
+117, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 69,120,105,116, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0,114,101,116,117,
+114,110, 32,105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 70,105,108,101, 0, 4, 22, 0, 0, 0, 0, 0, 0, 0, 80,114,105,110,
+116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111, 46, 46, 46, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 65, 98,111,117,116, 46, 46, 46, 0, 4, 51, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 46, 99,111,110,115,111,108,101, 46,100,108,103,
+ 65, 98,111,117,116, 58,112,111,112,117,112, 40,105,117,112, 46, 67, 69, 78, 84,
+ 69, 82, 44, 32,105,117,112, 46, 67, 69, 78, 84, 69, 82, 41, 0, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0, 72,101,108,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,
+108,103, 77, 97,105,110, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,
+111,103, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 73,117,112, 76,117, 97, 32, 67,
+111,110,115,111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,100,114, 97,103,
+100,114,111,112, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,
+116,101,110,116,101,114, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,
+101, 95, 99, 98, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,102,105,
+108,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,100,108,103, 65,
+ 98,111,117,116, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,102,105,108,108, 0, 4,
+ 16, 0, 0, 0, 0, 0, 0, 0, 84,101, 99,103,114, 97,102, 47, 80, 85, 67, 45,
+ 82,105,111, 0, 4, 23, 0, 0, 0, 0, 0, 0, 0,105,117,112, 64,116,101, 99,
+103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,114, 0, 4, 3, 0, 0,
+ 0, 0, 0, 0, 0, 79, 75, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 53, 48, 88,
+ 50, 48, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 49, 48,120, 49, 48, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,109, 97,120, 98,111,120, 0, 4, 3, 0, 0, 0, 0,
+ 0, 0, 0, 78, 79, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109,105,110, 98,111,
+120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,115,105,122,101, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0, 65, 98,111,117,116, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0,115,104,111,119, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 70,
+111, 99,117,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 97,105,110, 76,111,
+111,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0,
+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0, 0,
+ 0, 1, 0, 8, 30, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0,195, 0,128, 1,
+ 92,192,128, 1,197, 64, 0, 0, 1,129, 0, 0,220, 64, 0, 1, 90, 0, 0, 0,
+ 22, 0, 4,128,197, 64, 0, 0, 5,193, 0, 0, 64, 1,128, 0, 28,129, 0, 1,
+ 65, 1, 1, 0,133,193, 0, 0,192, 1, 0, 1,156,129, 0, 1, 21,129, 1, 2,
+220, 64, 0, 1,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,220,192,128, 1,
+128, 0, 0, 2, 64, 0,128, 1, 22, 0,251,127,197, 64, 0, 0, 1, 65, 1, 0,
+220, 64, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,101,120,116, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116,
+ 0, 4, 21, 0, 0, 0, 0, 0, 0, 0, 45, 45,112,114,105,110,116,116, 97, 98,
+108,101, 32, 83,116, 97,114,116, 45, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+116,111,115,116,114,105,110,103, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 61, 0,
+ 4, 19, 0, 0, 0, 0, 0, 0, 0, 45, 45,112,114,105,110,116,116, 97, 98,108,
+101, 32, 69,110,100, 45, 45, 0, 0, 0, 0, 0, 30, 0, 0, 0, 8, 0, 0, 0,
+ 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0,
+ 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0,
+ 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
+ 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
+ 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0, 29, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0,110, 0, 4, 0, 0, 0, 29, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0,118, 0, 4, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 5,112, 0,
+ 0, 0, 5, 0, 0, 0, 26, 0, 0, 0, 22, 0, 2,128, 5, 64, 0, 0, 65,128,
+ 0, 0,133, 0, 0, 0,134,192, 64, 1,193, 0, 1, 0, 5, 1, 0, 0, 6, 65,
+ 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5,128, 1, 0, 26, 0, 0, 0, 22, 0,
+ 2,128, 5, 64, 0, 0, 65,192, 1, 0,133,128, 1, 0,134,192, 64, 1,193, 0,
+ 1, 0, 5,129, 1, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64,
+ 0, 0, 65, 0, 2, 0,133, 64, 2, 0,134,192, 64, 1,193, 0, 1, 0, 5, 65,
+ 2, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,128,
+ 2, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 2, 0, 28, 64, 0, 1, 5, 64,
+ 0, 0, 65, 0, 3, 0,133, 64, 2, 0,134, 64, 67, 1,193,128, 3, 0,156,128,
+ 0, 1, 85,128,128, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 3, 0,133, 64,
+ 2, 0,134, 64, 67, 1,193, 0, 4, 0,156,128, 0, 1, 85,128,128, 0, 28, 64,
+ 0, 1, 5, 64, 2, 0, 6, 64, 67, 0, 65, 64, 4, 0, 28,128, 0, 1, 26, 0,
+ 0, 0, 22,192, 0,128, 69, 64, 0, 0,129,128, 4, 0,192, 0, 0, 0, 92, 64,
+128, 1, 69, 64, 0, 0,129,192, 4, 0,197, 64, 2, 0,198, 64,195, 1, 1, 1,
+ 5, 0,220,128, 0, 1,149,192, 0, 1, 92, 64, 0, 1, 69, 64, 0, 0,129, 64,
+ 5, 0,197, 64, 2, 0,198, 64,195, 1, 1,129, 5, 0,220,128, 0, 1,149,192,
+ 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70,192,197, 0, 90, 0, 0, 0, 22, 64,
+ 1,128, 69, 64, 0, 0,129, 0, 6, 0,197, 64, 2, 0,198,192,197, 1,149,192,
+ 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70, 64,198, 0, 90, 0, 0, 0, 22, 64,
+ 1,128, 69, 64, 0, 0,129,128, 6, 0,197, 64, 2, 0,198, 64,198, 1,149,192,
+ 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70,192,198, 0, 90, 0, 0, 0, 22, 64,
+ 1,128, 69, 64, 0, 0,129, 0, 7, 0,197, 64, 2, 0,198,192,198, 1,149,192,
+ 0, 1, 92, 64, 0, 1, 30, 0,128, 0, 29, 0, 0, 0, 4, 3, 0, 0, 0, 0,
+ 0, 0, 0,105,109, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116,
+ 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 73, 77, 32, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 3, 0, 0, 0, 0, 0, 0,
+ 0, 32, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 95, 67, 79, 80, 89, 82, 73,
+ 71, 72, 84, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 99,100, 0, 4, 4, 0, 0,
+ 0, 0, 0, 0, 0, 67, 68, 32, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 73, 85,
+ 80, 32, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73, 85, 80, 32, 73,
+110,102,111, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83,121,115,116,101,
+109, 58, 32, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 71,101,116, 71,108,111, 98,
+ 97,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 89, 83, 84, 69, 77, 0, 4,
+ 19, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83,121,115,116,101,109, 32, 86,101,114,
+115,105,111,110, 58, 32, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 83, 89, 83, 84,
+ 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 77,
+ 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 4, 18, 0, 0, 0, 0, 0, 0,
+ 0, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32, 0, 4,
+ 16, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122,
+101, 58, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 83, 67, 82, 69, 69, 78, 83,
+ 73, 90, 69, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83, 99,114,101,101,
+110, 32, 68,101,112,116,104, 58, 32, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 83,
+ 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,
+ 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 32,
+ 32, 79,112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0, 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 4, 20,
+ 0, 0, 0, 0, 0, 0, 0, 32, 32, 79,112,101,110, 71, 76, 32, 82,101,110,100,
+101,114,101,114, 58, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 71, 76, 95, 86,
+ 69, 82, 83, 73, 79, 78, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0, 32, 32, 79,112,
+101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 0, 0, 0, 0,112,
+ 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18,
+ 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18,
+ 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 22,
+ 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22,
+ 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23,
+ 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25,
+ 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25,
+ 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26,
+ 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29,
+ 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29,
+ 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31,
+ 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34,
+ 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34,
+ 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35,
+ 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35,
+ 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36,
+ 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36,
+ 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0,109,111,116, 0, 59, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 9,
+ 0, 0, 0,197, 0, 0, 0,198, 64,192, 1,198,128,192, 1, 0, 1,128, 0, 65,
+ 1, 1, 0,128, 1, 0, 1, 21,129, 1, 2,201, 0,129,129, 30, 0,128, 0, 5,
+ 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0,
+ 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 12, 0, 0, 0, 0, 0,
+ 0, 0,108, 98,108, 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0, 0,
+ 0, 0, 0,116,105,116,108,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0,
+ 0, 0, 0, 0, 9, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0,
+ 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0,
+ 48, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108,102,
+ 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,108,105,110,
+ 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 99,111,108,
+ 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 58, 0, 0, 0, 70, 0, 0, 0, 0, 1, 0, 4, 39, 0, 0, 0, 69, 0, 0,
+ 0, 70, 64,192, 0, 70,128,192, 0, 23,192,192, 0, 22, 64, 1,128, 69, 0, 0,
+ 0, 70, 64,192, 0, 70, 0,193, 0, 75, 64,193, 0, 92, 64, 0, 1, 22,128, 6,
+128, 69,192, 1, 0, 70, 0,194, 0,133, 0, 0, 0,134, 64, 64, 1,134,128, 64,
+ 1,193, 64, 2, 0, 92,128,128, 1, 71,128, 1, 0, 69,128, 1, 0, 90, 0, 0,
+ 0, 22,128, 2,128, 69,128, 1, 0, 75,128,194, 0,197, 0, 0, 0,198, 64,192,
+ 1,198,192,194, 1,198, 0,195, 1, 92, 64,128, 1, 69,128, 1, 0, 75, 64,195,
+ 0, 92, 64, 0, 1, 22, 0, 1,128, 69,128, 3, 0,129,192, 3, 0,197, 0, 4,
+ 0,149,192, 0, 1, 92, 64, 0, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 4, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,
+111,110,115,111,108,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,115,116,
+102,105,108,101,110, 97,109,101, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98,
+117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0, 97, 99,116,105,111,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,110,101,
+119,102,105,108,101, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,105,111, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4, 3, 0, 0, 0, 0, 0, 0,
+ 0,119, 43, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,119,114,105,116,101, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,101, 0, 4, 6, 0, 0, 0,
+ 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108,111,115,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0,
+ 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101,
+ 32,102,105,108,101, 32, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,
+110, 97,109,101, 0, 0, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0,
+ 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0,
+ 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 62, 0, 0,
+ 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0,
+ 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,
+ 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,
+ 0, 64, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0,
+ 0, 65, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0,
+ 0, 67, 0, 0, 0, 70, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
+ 0,115,101,108,102, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 0, 1, 0, 7, 65, 0,
+ 0, 0, 69, 0, 0, 0, 70, 64,192, 0,138, 64, 1, 0,137,192, 64,129,137, 64,
+ 65,130,137,192, 65,131,137, 64, 66,132,197,192, 2, 0,137,192, 0,133, 92,128,
+ 0, 1,139, 0,195, 0, 5, 1, 0, 0, 6, 65, 67, 2, 69, 1, 0, 0, 70, 65,
+195, 2,156, 64, 0, 2,134,128,195, 0,197, 0, 0, 0,198,192,195, 1, 6, 65,
+196, 0,201, 0, 1,136,197, 0, 0, 0,198,192,195, 1,198,128,196, 1, 5, 1,
+ 0, 0, 6,193, 67, 2, 6, 1, 68, 2,201, 0, 1,130,203,192,196, 0,220, 64,
+ 0, 1, 87, 0, 69, 1, 22,192, 7,128,197, 0, 0, 0,198,192,195, 1,198, 0,
+196, 1, 23, 64,197, 1, 22, 0, 1,128,197,128, 5, 0, 1,193, 5, 0, 69, 1,
+ 6, 0, 21, 65, 1, 2,220, 64, 0, 1,197, 64, 6, 0,198,128,198, 1, 5, 1,
+ 0, 0, 6,193, 67, 2, 6, 1, 68, 2, 65,193, 6, 0,220,128,128, 1,218, 0,
+ 0, 0, 22, 64, 2,128, 11, 1,199, 1,133, 1, 0, 0,134,193, 67, 3,134, 65,
+ 71, 3,134, 65, 68, 3, 28, 65,128, 1, 11,129,199, 1,128, 1,128, 1, 28, 65,
+128, 1, 22,128, 0,128, 5,129, 5, 0, 65,193, 7, 0, 28, 65, 0, 1, 30, 0,
+128, 0, 32, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0,100,105, 97,108,111,103,116,121,112,101, 0, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0, 83, 65, 86, 69, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,
+105,116,108,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 83, 97,118,101, 32, 70,
+105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,105,108,116,101,114, 0,
+ 4, 4, 0, 0, 0, 0, 0, 0, 0, 42, 46, 42, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0,102,105,108,116,101,114,105,110,102,111, 0, 4, 10, 0, 0, 0, 0, 0,
+ 0, 0, 65,108,108, 32,102,105,108,101,115, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 97,108,108,111,119,110,101,119, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,121,
+101,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0, 76, 69, 70, 84, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,115,116, 97,116,117,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,
+115,111,108,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,115,116,102,105,
+108,101,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,
+101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97,
+109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0,
+ 4, 3, 0, 0, 0, 0, 0, 0, 0, 45, 49, 0, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,
+110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 4, 3, 0, 0, 0, 0, 0,
+ 0, 0,105,111, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4,
+ 3, 0, 0, 0, 0, 0, 0, 0,119, 43, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+119,114,105,116,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,
+101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 0, 4, 17, 0,
+ 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,
+108,101, 0, 0, 0, 0, 0, 65, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73,
+ 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 74,
+ 0, 0, 0, 74, 0, 0, 0, 73, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75,
+ 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 77,
+ 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 78,
+ 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78,
+ 0, 0, 0, 79, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 80, 0, 0, 0, 81,
+ 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 82,
+ 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 84,
+ 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84,
+ 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86,
+ 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 87,
+ 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 89, 0, 0, 0, 89,
+ 0, 0, 0, 89, 0, 0, 0, 92, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 64, 0, 0, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0,102,100, 0, 10, 0, 0, 0, 64, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0,115,116, 97,116,117,115, 0, 17, 0, 0, 0, 64, 0, 0, 0, 8, 0,
+ 0, 0, 0, 0, 0, 0,110,101,119,102,105,108,101, 0, 49, 0, 0, 0, 64, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0,104, 0,
+ 0, 0, 0, 1, 0, 6, 34, 0, 0, 0, 69, 0, 0, 0, 70, 64,192, 0,128, 0,
+ 0, 0,193,128, 0, 0, 92,128,128, 1, 23,192,192, 0, 22, 64, 1,128,133, 0,
+ 1, 0,193, 64, 1, 0, 0, 1, 0, 0,213, 0,129, 1,156, 64, 0, 1, 22,192,
+ 4,128,133,128, 1, 0,134,192, 65, 1,134, 0, 66, 1,203,128,194, 0, 65,193,
+ 2, 0,220,128,128, 1,137,192,128,132,139, 0,195, 0, 0, 1,128, 0,156, 64,
+128, 1,133,128, 1, 0,134,192, 65, 1,137, 0,128,134,133,128, 1, 0,134,192,
+ 65, 1,134,128, 67, 1,197,128, 1, 0,198,192,193, 1,198, 64,195, 1,137,192,
+128,135, 30, 0,128, 0, 16, 0, 0, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,105,
+111, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0,114, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,
+111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32,108,
+111, 97,100, 32,102,105,108,101, 32, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,101, 0, 4, 6, 0, 0,
+ 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+114,101, 97,100, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 42, 97, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 0, 4, 13, 0, 0, 0, 0, 0, 0,
+ 0,108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, 6, 0, 0, 0,
+ 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 34, 0, 0, 0, 95, 0,
+ 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0,
+ 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0,
+ 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0,
+ 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0,100, 0,
+ 0, 0,100, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0,
+ 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0,
+ 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0, 2, 0, 0, 0, 9, 0,
+ 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 33,
+ 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,110,101,119,102,105,108,101, 0, 5,
+ 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,106,
+ 0, 0, 0,121, 0, 0, 0, 0, 1, 0, 7, 37, 0, 0, 0, 69, 0, 0, 0, 70,
+ 64,192, 0,138, 64, 1, 0,137,192, 64,129,137, 64, 65,130,137,192, 65,131,137,
+ 64, 66,132,137,192, 66,133, 92,128, 0, 1,139, 0,195, 0, 5, 1, 0, 0, 6,
+ 65, 67, 2, 69, 1, 0, 0, 70, 65,195, 2,156, 64, 0, 2,134,128,195, 0,198,
+192,195, 0, 11, 1,196, 0, 28, 65, 0, 1, 87, 64, 68, 1, 22, 64, 0,128, 23,
+128, 68, 1, 22,192, 1,128, 23,128, 68, 1, 22,128, 2,128, 5,193, 4, 0, 65,
+ 1, 5, 0,128, 1,128, 1, 85,129,129, 2, 28, 65, 0, 1, 22, 0, 1,128, 5,
+ 1, 0, 0, 6, 65, 69, 2, 6,129, 69, 2, 64, 1,128, 1, 28, 65, 0, 1, 30,
+ 0,128, 0, 23, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103,116,121,112,101, 0, 4, 5, 0,
+ 0, 0, 0, 0, 0, 0, 79, 80, 69, 78, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+116,105,116,108,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 76,111, 97,100, 32,
+ 70,105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,105,108,116,101,114,
+ 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 42, 46, 42, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0,102,105,108,116,101,114,105,110,102,111, 0, 4, 10, 0, 0, 0, 0,
+ 0, 0, 0, 65,108,108, 32, 70,105,108,101,115, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 97,108,108,111,119,110,101,119, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,
+ 78, 79, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,115,116, 97,116,117,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118,
+ 97,108,117,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,
+121, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 45, 49, 0, 4, 2, 0, 0, 0, 0,
+ 0, 0, 0, 49, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0,
+ 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32,108,111, 97,100,
+ 32,102,105,108,101, 32, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,
+111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 76,111, 97,100, 70,105,108,
+101, 0, 0, 0, 0, 0, 37, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,107, 0,
+ 0, 0,107, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0,108, 0, 0, 0,108, 0,
+ 0, 0,107, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0,
+ 0, 0,109, 0, 0, 0,109, 0, 0, 0,110, 0, 0, 0,111, 0, 0, 0,112, 0,
+ 0, 0,112, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0,
+ 0, 0,115, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,116, 0,
+ 0, 0,116, 0, 0, 0,116, 0, 0, 0,117, 0, 0, 0,119, 0, 0, 0,119, 0,
+ 0, 0,119, 0, 0, 0,119, 0, 0, 0,119, 0, 0, 0,121, 0, 0, 0, 4, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 36,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,102,100, 0, 9, 0, 0, 0, 36, 0,
+ 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,117,115, 0, 16, 0, 0,
+ 0, 36, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109,
+101, 0, 17, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,166, 0, 0, 0,170, 0, 0, 0, 0, 5, 0, 7, 8, 0, 0, 0, 23, 0,
+ 64, 1, 22, 0, 1,128, 69, 65, 0, 0, 70,129,192, 2, 70,193,192, 2,128, 1,
+128, 0, 92, 65, 0, 1, 30, 0,128, 0, 4, 0, 0, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0,
+ 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 76,111, 97,100, 70,105,108,101, 0, 0, 0, 0, 0, 8, 0, 0, 0,167,
+ 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,168,
+ 0, 0, 0,168, 0, 0, 0,170, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0,
+ 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0,110,117,109, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 7, 0, 0, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+ 0, 90, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0,
+ 0, 3, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0,
+ 0, 7, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 17, 0, 0,
+ 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0,
+ 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0,
+ 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0,
+ 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0,
+ 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0,
+ 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0,
+ 0, 44, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0,
+ 0, 48, 0, 0, 0, 46, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0,
+ 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0,
+ 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0,
+ 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0,
+ 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0,
+ 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0,
+ 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0,
+ 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0,
+ 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0,
+ 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 58, 0, 0,
+ 0, 58, 0, 0, 0, 58, 0, 0, 0, 70, 0, 0, 0, 58, 0, 0, 0, 72, 0, 0,
+ 0, 72, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 72, 0, 0, 0, 94, 0, 0,
+ 0, 94, 0, 0, 0,104, 0, 0, 0, 94, 0, 0, 0,106, 0, 0, 0,106, 0, 0,
+ 0,106, 0, 0, 0,121, 0, 0, 0,106, 0, 0, 0,123, 0, 0, 0,123, 0, 0,
+ 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,125, 0, 0, 0,125, 0, 0,
+ 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0,
+ 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0,
+ 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,127, 0, 0, 0,127, 0, 0,
+ 0,127, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,129, 0, 0,
+ 0,129, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0,
+ 0,125, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0,
+ 0,131, 0, 0, 0,131, 0, 0, 0,132, 0, 0, 0,132, 0, 0, 0,132, 0, 0,
+ 0,133, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,134, 0, 0, 0,134, 0, 0,
+ 0,131, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,125, 0, 0, 0,135, 0, 0,
+ 0,135, 0, 0, 0,125, 0, 0, 0,136, 0, 0, 0,136, 0, 0, 0,136, 0, 0,
+ 0,137, 0, 0, 0,124, 0, 0, 0,137, 0, 0, 0,141, 0, 0, 0,141, 0, 0,
+ 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,143, 0, 0, 0,143, 0, 0,
+ 0,143, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,147, 0, 0,
+ 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0,
+ 0,148, 0, 0, 0,146, 0, 0, 0,148, 0, 0, 0,149, 0, 0, 0,144, 0, 0,
+ 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0,
+ 0,150, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0,
+ 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0,
+ 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0,
+ 0,153, 0, 0, 0,154, 0, 0, 0,151, 0, 0, 0,154, 0, 0, 0,154, 0, 0,
+ 0,150, 0, 0, 0,155, 0, 0, 0,142, 0, 0, 0,155, 0, 0, 0,159, 0, 0,
+ 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0,
+ 0,159, 0, 0, 0,159, 0, 0, 0,160, 0, 0, 0,161, 0, 0, 0,161, 0, 0,
+ 0,161, 0, 0, 0,161, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0,163, 0, 0,
+ 0,163, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,164, 0, 0, 0,159, 0, 0,
+ 0,164, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0,170, 0, 0,
+ 0,166, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,174, 0, 0,
+ 0,174, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0,178, 0, 0,
+ 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,179, 0, 0,
+ 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,180, 0, 0,
+ 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,181, 0, 0,
+ 0,181, 0, 0, 0,181, 0, 0, 0,183, 0, 0, 0,183, 0, 0, 0,183, 0, 0,
+ 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0,
+ 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0,
+ 0,187, 0, 0, 0,184, 0, 0, 0,188, 0, 0, 0,182, 0, 0, 0,189, 0, 0,
+ 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,190, 0, 0,
+ 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0,
+ 0,190, 0, 0, 0,191, 0, 0, 0,191, 0, 0, 0,192, 0, 0, 0,177, 0, 0,
+ 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,194, 0, 0,
+ 0,175, 0, 0, 0,194, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,198, 0, 0,
+ 0,198, 0, 0, 0,198, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0,
+ 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,201, 0, 0, 0,201, 0, 0,
+ 0,201, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,203, 0, 0,
+ 0,203, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0,
+ 0,204, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/console5_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srcconsole/loh/console5_le64w.loh b/iup/srcconsole/loh/console5_le64w.loh
new file mode 100755
index 0000000..ff23f43
--- /dev/null
+++ b/iup/srcconsole/loh/console5_le64w.loh
@@ -0,0 +1,525 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/console5_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/console5_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,110,115,111,108,101, 53, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 15, 90, 1, 0, 0, 5, 0, 0, 0, 65, 64, 0, 0, 28, 64,
+ 0, 1, 5,128, 0, 0, 74, 0, 0, 0, 9, 64,128,129, 5,128, 0, 0, 6,192,
+ 64, 0,100, 0, 0, 0, 9, 64, 0,130, 5,128, 0, 0, 6,192, 64, 0,100, 64,
+ 0, 0, 9, 64,128,130, 5,128, 0, 0, 6,192, 64, 0, 9,192, 65,131, 5,128,
+ 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,194, 0,138,192, 0, 0,137,192,
+ 66,133,137, 64, 67,134,137,192, 67,135, 92,128, 0, 1, 9, 64, 0,132, 5,128,
+ 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,128, 0, 0,137,192,
+ 68,137,137, 0, 69,134, 92,128, 0, 1, 9, 64, 0,136, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,192, 0, 0,137,128, 69,137,137, 0,
+ 69,134,137,192, 69,133, 92,128, 0, 1, 9, 64,128,138, 5,128, 0, 0, 6,192,
+ 64, 0, 6, 0, 66, 0,100,128, 0, 0, 9, 64, 0,140, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0,
+ 71,137,137,128,199,142, 92,128, 0, 1, 9, 64,128,140, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0,
+ 72,137,137, 64,200,142, 92,128, 0, 1, 9, 64,128,143, 5,128, 0, 0, 6,192,
+ 64, 0, 69,128, 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137,192,
+ 72,137, 92,128, 0, 1, 9, 64, 0,145, 5,128, 0, 0, 6,192, 64, 0, 69,128,
+ 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137, 64, 73,137, 92,128,
+ 0, 1, 9, 64, 0,146, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128,
+198, 0,138,128, 0, 0,137,192, 70,134,137,192, 73,137, 92,128, 0, 1, 9, 64,
+ 0,147, 5,128, 0, 0, 6,192, 64, 0, 6,128, 73, 0,100,192, 0, 0, 9, 64,
+128,142, 5,128, 0, 0, 6,192, 64, 0, 6, 0, 73, 0,100, 0, 1, 0, 9, 64,
+128,142, 5,128, 0, 0, 6,192, 64, 0,100, 64, 1, 0, 9, 64, 0,148, 5,128,
+ 0, 0, 6,192, 64, 0, 6,128, 72, 0,100,128, 1, 0, 9, 64,128,142, 5,128,
+ 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128,202, 0,138,192,128, 0,197,128,
+ 0, 0,198,192,202, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 1,203, 2,138, 65,
+ 0, 1,197,129, 0, 0,198,129,202, 3, 10,130,128, 2, 69,130, 0, 0, 70,194,
+192, 4, 70,130,200, 4,133,130, 0, 0,134,194, 64, 5,134,130, 73, 5,197,130,
+ 0, 0,198,194,192, 5,198, 2,201, 5, 5,131, 0, 0, 6,195, 64, 6, 6,195,
+ 71, 6, 69,131, 0, 0, 70,195,192, 6, 70, 67,198, 6, 9,130,203,150, 9, 2,
+204,151, 34, 66,128, 2,220,129, 0, 1, 5,130, 0, 0, 6,130, 74, 4, 74, 66,
+128, 1,133,130, 0, 0,134,194, 64, 5,134, 66, 69, 5,197,130, 0, 0,198,194,
+192, 5,198, 2,194, 5, 5,131, 0, 0, 6,195, 64, 6, 6, 3, 68, 6, 73,130,
+204,152, 98, 66,128, 1, 28,130, 0, 1,137,193,204,152,162, 65, 0, 1, 92,129,
+ 0, 1, 9, 1, 77,137, 34, 65,128, 0,220,128, 0, 1,137, 64,205,152,137,128,
+205,150,137,192,205,151,162, 64,128, 0, 92,128, 0, 1, 9, 64,128,148, 5,128,
+ 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,206, 0,138, 0,128, 0,197,128,
+ 0, 0,198,128,206, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 65,206, 2,138, 1,
+ 0, 0,197,129, 0, 0,198,193,206, 3, 10,130, 0, 0, 9, 2, 79,137, 9, 66,
+207,142,220, 1, 0, 1,162, 65, 0, 0, 92,129, 0, 1, 9,129, 79,137, 34, 65,
+128, 0,220,128, 0, 1, 5,129, 0, 0, 6,129, 78, 2, 74, 65,128, 0,133,129,
+ 0, 0,134, 65, 78, 3,202, 1,128, 0, 5,130, 0, 0, 6,194, 78, 4, 74,130,
+ 0, 0, 73,194, 79,137,133,130, 0, 0,134,194, 64, 5,134, 66, 65, 5, 73,130,
+130,142, 28,130, 0, 1, 69,130, 0, 0, 70,194,206, 4,138,130, 0, 0,137, 2,
+ 80,137,137, 66,208,142, 92, 2, 0, 1,226, 65, 0, 0,156,129, 0, 1, 73,129,
+ 80,137, 98, 65,128, 0, 28, 1, 0, 1,162, 64, 0, 0, 92,128, 0, 1, 9, 64,
+ 0,156, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 0,209, 0,138, 64,
+129, 0,197,128, 0, 0,198,192,192, 1,198, 64,202, 1,137, 64, 81,137, 5,129,
+ 0, 0, 6,193, 64, 2, 6, 1, 78, 2,137, 0,129,156,137,192, 66,163, 5,129,
+ 0, 0, 6,193, 64, 2, 6, 65, 70, 2,137, 0,129,163,137, 64, 79,164,162, 64,
+128, 0, 92,128, 0, 1, 9, 64,128,161, 5,128, 0, 0, 6,192, 64, 0, 6,192,
+ 80, 0,100,192, 1, 0, 9, 64,128,164, 5,128, 0, 0, 6,192, 64, 0, 69,128,
+ 0, 0, 70, 0,209, 0,138, 0,129, 0,197,128, 0, 0,198,128,202, 1, 10,129,
+ 0, 3, 69,129, 0, 0, 70, 65,196, 2,138, 65, 0, 0,137, 65, 81,137, 92,129,
+ 0, 1,133,129, 0, 0,134,193, 82, 3,202, 65, 0, 0,201,193, 77,134,156,129,
+ 0, 1,197,129, 0, 0,198,193,210, 3, 10, 66, 0, 0, 9,194, 77,134,220,129,
+ 0, 1, 5,130, 0, 0, 6,194, 74, 4, 74, 2, 0, 0,133,130, 0, 0,134,130,
+ 74, 5,202, 2,128, 0, 5,131, 0, 0, 6, 67, 68, 6, 74, 67, 0, 0, 73, 3,
+ 83,137, 28,131, 0, 1, 69,131, 0, 0, 70, 67,196, 6,138, 67, 0, 0,137, 67,
+ 83,137, 92, 3, 0, 1,226, 66, 0, 0,156, 2, 0, 1, 98, 66, 0, 0, 28,130,
+ 0, 1, 69,130, 0, 0, 70,194,210, 4,138, 66, 0, 0,137,194, 77,134, 92,130,
+ 0, 1,133,130, 0, 0,134,130, 70, 5,202,194, 0, 0,201,130, 83,137,201, 66,
+207,142,201,194, 83,134,156,130, 0, 1, 9, 1,212,150, 9, 65,205,152, 34, 65,
+ 0, 3,220,128, 0, 1,137,128,212,168,137,128,212,169,137,128, 84,170,137, 64,
+ 85,137,162, 64,128, 0, 92,128, 0, 1, 9, 64, 0,165, 5,128, 0, 0, 6,192,
+ 64, 0, 6,192, 80, 0, 11,128, 85, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192,
+ 85, 0, 69,128, 0, 0, 70,192,192, 0, 70, 0,194, 0, 28, 64, 0, 1, 5,128,
+ 0, 0, 6, 0, 86, 0, 28, 64,128, 0, 5,128, 0, 0, 6,192, 64, 0, 6,192,
+ 80, 0, 11, 64, 86, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192, 64, 0, 6,128,
+ 82, 0, 11, 64, 86, 0, 28, 64, 0, 1, 30, 0,128, 0, 90, 0, 0, 0, 4, 8,
+ 0, 0, 0, 0, 0, 0, 0,114,101,113,117,105,114,101, 0, 4, 7, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112,108,117, 97, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101,
+ 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116,116, 97, 98,108,101,
+ 0, 4, 19, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116, 95,118,101,114,115,
+105,111,110, 95,105,110,102,111, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,
+115,116,102,105,108,101,110, 97,109,101, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,109,108, 67,111,100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,109,117,108,
+116,105,108,105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,101,120,112, 97,
+110,100, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69, 83, 0, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0,115,105,122,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 50,
+ 48, 48,120, 49, 50, 48, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,102,111,110,116,
+ 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79,
+ 82, 77, 65, 76, 95, 49, 48, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108,
+ 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,108, 97,
+ 98,101,108, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 4,
+ 4, 0, 0, 0, 0, 0, 0, 0, 48, 58, 48, 0, 4, 4, 0, 0, 0, 0, 0, 0,
+ 0, 53, 48,120, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105,108,
+101, 78, 97,109,101, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,114,101,116, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0, 98,117,116, 69,120,101, 99,117,116,101, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 98,117,116,116,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 53,
+ 48,120, 49, 53, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 69,120,101, 99,117,116,
+101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 39,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 46,100,111,115,116,114,105,110,103, 40,
+105,117,112, 46, 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118,
+ 97,108,117,101, 41, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 98,117,116, 67,108,
+101, 97,114, 67,111,109,109, 97,110,100,115, 0, 4, 6, 0, 0, 0, 0, 0, 0,
+ 0, 67,108,101, 97,114, 0, 4, 96, 0, 0, 0, 0, 0, 0, 0,105,117,112, 46,
+ 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, 97,108,117,101,
+ 61, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 98,108,
+ 70,105,108,101, 78, 97,109,101, 46,116,105,116,108,101, 32, 61, 32, 39, 39, 32,
+ 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 97,115,116,102,105,108,
+101,110, 97,109,101, 32, 61, 32,110,105,108, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 4, 8, 0, 0, 0, 0, 0,
+ 0, 0, 76,111, 97,100, 46, 46, 46, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98,
+117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0, 83, 97,118,101, 32, 65,115, 46, 46, 46, 0, 4, 12, 0, 0, 0, 0, 0,
+ 0, 0, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 4, 5, 0, 0, 0, 0,
+ 0, 0, 0, 83, 97,118,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 76,111, 97,
+100, 70,105,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,118, 98,120, 67,111,
+110,115,111,108,101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0,
+ 4, 6, 0, 0, 0, 0, 0, 0, 0,102,114, 97,109,101, 0, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,
+114,103,105,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 48,120, 48, 0, 4, 4,
+ 0, 0, 0, 0, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,
+ 49, 48, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97,108,105,103,110,109,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65, 82, 73, 71, 72, 84, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0, 65, 84, 79, 80, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 67,111,109,109, 97,110,100,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65,
+ 67, 69, 78, 84, 69, 82, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 53,120, 53, 0,
+ 4, 2, 0, 0, 0, 0, 0, 0, 0, 53, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+109,110,117, 77, 97,105,110, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,109,101,110,
+117, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 69,120,105,116, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0,114,101,116,117,
+114,110, 32,105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 70,105,108,101, 0, 4, 22, 0, 0, 0, 0, 0, 0, 0, 80,114,105,110,
+116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111, 46, 46, 46, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 65, 98,111,117,116, 46, 46, 46, 0, 4, 51, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 46, 99,111,110,115,111,108,101, 46,100,108,103,
+ 65, 98,111,117,116, 58,112,111,112,117,112, 40,105,117,112, 46, 67, 69, 78, 84,
+ 69, 82, 44, 32,105,117,112, 46, 67, 69, 78, 84, 69, 82, 41, 0, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0, 72,101,108,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,
+108,103, 77, 97,105,110, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,
+111,103, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 73,117,112, 76,117, 97, 32, 67,
+111,110,115,111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,100,114, 97,103,
+100,114,111,112, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,
+116,101,110,116,101,114, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,
+101, 95, 99, 98, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,102,105,
+108,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,100,108,103, 65,
+ 98,111,117,116, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,102,105,108,108, 0, 4,
+ 16, 0, 0, 0, 0, 0, 0, 0, 84,101, 99,103,114, 97,102, 47, 80, 85, 67, 45,
+ 82,105,111, 0, 4, 23, 0, 0, 0, 0, 0, 0, 0,105,117,112, 64,116,101, 99,
+103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,114, 0, 4, 3, 0, 0,
+ 0, 0, 0, 0, 0, 79, 75, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 53, 48, 88,
+ 50, 48, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 49, 48,120, 49, 48, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,109, 97,120, 98,111,120, 0, 4, 3, 0, 0, 0, 0,
+ 0, 0, 0, 78, 79, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109,105,110, 98,111,
+120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,115,105,122,101, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0, 65, 98,111,117,116, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0,115,104,111,119, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 70,
+111, 99,117,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 97,105,110, 76,111,
+111,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0,
+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0, 0,
+ 0, 1, 0, 8, 30, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0,195, 0,128, 1,
+ 92,192,128, 1,197, 64, 0, 0, 1,129, 0, 0,220, 64, 0, 1, 87,192,192, 0,
+ 22, 0, 4,128,197, 64, 0, 0, 5, 1, 1, 0, 64, 1,128, 0, 28,129, 0, 1,
+ 65, 65, 1, 0,133, 1, 1, 0,192, 1, 0, 1,156,129, 0, 1, 21,129, 1, 2,
+220, 64, 0, 1,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,220,192,128, 1,
+128, 0, 0, 2, 64, 0,128, 1, 22, 0,251,127,197, 64, 0, 0, 1,129, 1, 0,
+220, 64, 0, 1, 30, 0,128, 0, 7, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,101,120,116, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116,
+ 0, 4, 21, 0, 0, 0, 0, 0, 0, 0, 45, 45,112,114,105,110,116,116, 97, 98,
+108,101, 32, 83,116, 97,114,116, 45, 45, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0,116,111,115,116,114,105,110,103, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 61,
+ 0, 4, 19, 0, 0, 0, 0, 0, 0, 0, 45, 45,112,114,105,110,116,116, 97, 98,
+108,101, 32, 69,110,100, 45, 45, 0, 0, 0, 0, 0, 30, 0, 0, 0, 8, 0, 0,
+ 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0,
+ 0, 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0,
+ 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0,
+ 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0,
+ 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0,
+ 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0, 29, 0, 0, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 0, 0, 0, 29, 0, 0, 0, 2, 0, 0,
+ 0, 0, 0, 0, 0,118, 0, 4, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 5,112,
+ 0, 0, 0, 5, 0, 0, 0, 26, 0, 0, 0, 22, 0, 2,128, 5, 64, 0, 0, 65,
+128, 0, 0,133, 0, 0, 0,134,192, 64, 1,193, 0, 1, 0, 5, 1, 0, 0, 6,
+ 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5,128, 1, 0, 26, 0, 0, 0, 22,
+ 0, 2,128, 5, 64, 0, 0, 65,192, 1, 0,133,128, 1, 0,134,192, 64, 1,193,
+ 0, 1, 0, 5,129, 1, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5,
+ 64, 0, 0, 65, 0, 2, 0,133, 64, 2, 0,134,192, 64, 1,193, 0, 1, 0, 5,
+ 65, 2, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,
+128, 2, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 2, 0, 28, 64, 0, 1, 5,
+ 64, 0, 0, 65, 0, 3, 0,133, 64, 2, 0,134, 64, 67, 1,193,128, 3, 0,156,
+128, 0, 1, 85,128,128, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 3, 0,133,
+ 64, 2, 0,134, 64, 67, 1,193, 0, 4, 0,156,128, 0, 1, 85,128,128, 0, 28,
+ 64, 0, 1, 5, 64, 2, 0, 6, 64, 67, 0, 65, 64, 4, 0, 28,128, 0, 1, 26,
+ 0, 0, 0, 22,192, 0,128, 69, 64, 0, 0,129,128, 4, 0,192, 0, 0, 0, 92,
+ 64,128, 1, 69, 64, 0, 0,129,192, 4, 0,197, 64, 2, 0,198, 64,195, 1, 1,
+ 1, 5, 0,220,128, 0, 1,149,192, 0, 1, 92, 64, 0, 1, 69, 64, 0, 0,129,
+ 64, 5, 0,197, 64, 2, 0,198, 64,195, 1, 1,129, 5, 0,220,128, 0, 1,149,
+192, 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70,192,197, 0, 90, 0, 0, 0, 22,
+ 64, 1,128, 69, 64, 0, 0,129, 0, 6, 0,197, 64, 2, 0,198,192,197, 1,149,
+192, 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70, 64,198, 0, 90, 0, 0, 0, 22,
+ 64, 1,128, 69, 64, 0, 0,129,128, 6, 0,197, 64, 2, 0,198, 64,198, 1,149,
+192, 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70,192,198, 0, 90, 0, 0, 0, 22,
+ 64, 1,128, 69, 64, 0, 0,129, 0, 7, 0,197, 64, 2, 0,198,192,198, 1,149,
+192, 0, 1, 92, 64, 0, 1, 30, 0,128, 0, 29, 0, 0, 0, 4, 3, 0, 0, 0,
+ 0, 0, 0, 0,105,109, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,
+116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 73, 77, 32, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 3, 0, 0, 0, 0, 0,
+ 0, 0, 32, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 95, 67, 79, 80, 89, 82,
+ 73, 71, 72, 84, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 99,100, 0, 4, 4, 0,
+ 0, 0, 0, 0, 0, 0, 67, 68, 32, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 73,
+ 85, 80, 32, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73, 85, 80, 32,
+ 73,110,102,111, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83,121,115,116,
+101,109, 58, 32, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 71,101,116, 71,108,111,
+ 98, 97,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 89, 83, 84, 69, 77, 0,
+ 4, 19, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83,121,115,116,101,109, 32, 86,101,
+114,115,105,111,110, 58, 32, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 83, 89, 83,
+ 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,
+ 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 4, 18, 0, 0, 0, 0, 0,
+ 0, 0, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32, 0,
+ 4, 16, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83, 99,114,101,101,110, 32, 83,105,
+122,101, 58, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 83, 67, 82, 69, 69, 78,
+ 83, 73, 90, 69, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83, 99,114,101,
+101,110, 32, 68,101,112,116,104, 58, 32, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+ 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 4, 10, 0, 0, 0, 0, 0, 0,
+ 0, 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+ 32, 32, 79,112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0, 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 4,
+ 20, 0, 0, 0, 0, 0, 0, 0, 32, 32, 79,112,101,110, 71, 76, 32, 82,101,110,
+100,101,114,101,114, 58, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 71, 76, 95,
+ 86, 69, 82, 83, 73, 79, 78, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0, 32, 32, 79,
+112,101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 0, 0, 0, 0,
+112, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0,
+ 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0,
+ 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0,
+ 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0,
+ 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0,
+ 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0,
+ 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0,
+ 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0,
+ 26, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0,
+ 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0,
+ 29, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0,
+ 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0,
+ 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0,
+ 32, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0,
+ 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0,
+ 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0,
+ 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0,
+ 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0,
+ 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0,
+ 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0,109,111,116, 0, 59, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7,
+ 9, 0, 0, 0,197, 0, 0, 0,198, 64,192, 1,198,128,192, 1, 0, 1,128, 0,
+ 65, 1, 1, 0,128, 1, 0, 1, 21,129, 1, 2,201, 0,129,129, 30, 0,128, 0,
+ 5, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0,
+ 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0,108, 98,108, 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0,
+ 0, 0, 0, 0,116,105,116,108,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 58,
+ 0, 0, 0, 0, 0, 9, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0,
+ 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0,
+ 0, 48, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108,
+102, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,108,105,
+110, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 99,111,
+108, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 58, 0, 0, 0, 70, 0, 0, 0, 0, 1, 0, 4, 39, 0, 0, 0, 69, 0,
+ 0, 0, 70, 64,192, 0, 70,128,192, 0, 23,192,192, 0, 22, 64, 1,128, 69, 0,
+ 0, 0, 70, 64,192, 0, 70, 0,193, 0, 75, 64,193, 0, 92, 64, 0, 1, 22,128,
+ 6,128, 69,192, 1, 0, 70, 0,194, 0,133, 0, 0, 0,134, 64, 64, 1,134,128,
+ 64, 1,193, 64, 2, 0, 92,128,128, 1, 71,128, 1, 0, 69,128, 1, 0, 87,192,
+192, 0, 22,128, 2,128, 69,128, 1, 0, 75,128,194, 0,197, 0, 0, 0,198, 64,
+192, 1,198,192,194, 1,198, 0,195, 1, 92, 64,128, 1, 69,128, 1, 0, 75, 64,
+195, 0, 92, 64, 0, 1, 22, 0, 1,128, 69,128, 3, 0,129,192, 3, 0,197, 0,
+ 4, 0,149,192, 0, 1, 92, 64, 0, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 4,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+ 99,111,110,115,111,108,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,115,
+116,102,105,108,101,110, 97,109,101, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,
+ 98,117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,110,
+101,119,102,105,108,101, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,105,111, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4, 3, 0, 0, 0, 0, 0,
+ 0, 0,119, 43, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,119,114,105,116,101, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,101, 0, 4, 6, 0, 0,
+ 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+ 99,108,111,115,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114,
+ 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,
+101, 32,102,105,108,101, 32, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,
+101,110, 97,109,101, 0, 0, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 59, 0,
+ 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 60, 0,
+ 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 62, 0,
+ 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0,
+ 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0,
+ 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0,
+ 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0,
+ 0, 0, 65, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0,
+ 0, 0, 67, 0, 0, 0, 70, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 0, 1, 0, 7, 65,
+ 0, 0, 0, 69, 0, 0, 0, 70, 64,192, 0,138, 64, 1, 0,137,192, 64,129,137,
+ 64, 65,130,137,192, 65,131,137, 64, 66,132,197,192, 2, 0,137,192, 0,133, 92,
+128, 0, 1,139, 0,195, 0, 5, 1, 0, 0, 6, 65, 67, 2, 69, 1, 0, 0, 70,
+ 65,195, 2,156, 64, 0, 2,134,128,195, 0,197, 0, 0, 0,198,192,195, 1, 6,
+ 65,196, 0,201, 0, 1,136,197, 0, 0, 0,198,192,195, 1,198,128,196, 1, 5,
+ 1, 0, 0, 6,193, 67, 2, 6, 1, 68, 2,201, 0, 1,130,203,192,196, 0,220,
+ 64, 0, 1, 87, 0, 69, 1, 22,192, 7,128,197, 0, 0, 0,198,192,195, 1,198,
+ 0,196, 1, 23, 64,197, 1, 22, 0, 1,128,197,128, 5, 0, 1,193, 5, 0, 69,
+ 1, 6, 0, 21, 65, 1, 2,220, 64, 0, 1,197, 64, 6, 0,198,128,198, 1, 5,
+ 1, 0, 0, 6,193, 67, 2, 6, 1, 68, 2, 65,193, 6, 0,220,128,128, 1, 87,
+ 64,197, 1, 22, 64, 2,128, 11, 1,199, 1,133, 1, 0, 0,134,193, 67, 3,134,
+ 65, 71, 3,134, 65, 68, 3, 28, 65,128, 1, 11,129,199, 1,128, 1,128, 1, 28,
+ 65,128, 1, 22,128, 0,128, 5,129, 5, 0, 65,193, 7, 0, 28, 65, 0, 1, 30,
+ 0,128, 0, 32, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103,116,121,112,101, 0, 4, 5, 0,
+ 0, 0, 0, 0, 0, 0, 83, 65, 86, 69, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+116,105,116,108,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 83, 97,118,101, 32,
+ 70,105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,105,108,116,101,114,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 42, 46,119,108,117, 97, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,102,105,108,116,101,114,105,110,102,111, 0, 4, 10, 0,
+ 0, 0, 0, 0, 0, 0, 76,117, 97, 32,102,105,108,101,115, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 97,108,108,111,119,110,101,119, 0, 4, 4, 0, 0, 0, 0,
+ 0, 0, 0,121,101,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,
+112, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 76, 69, 70, 84, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,115,116, 97,116,117,115, 0, 4, 8, 0, 0, 0, 0, 0, 0,
+ 0, 99,111,110,115,111,108,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,
+115,116,102,105,108,101,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+118, 97,108,117,101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105,
+108,101, 78, 97,109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,
+114,111,121, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 45, 49, 0, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0,
+ 0, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 4, 3, 0,
+ 0, 0, 0, 0, 0, 0,105,111, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,111,112,
+101,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,119, 43, 0, 4, 6, 0, 0, 0,
+ 0, 0, 0, 0,119,114,105,116,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109,
+108, 67,111,100,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101,
+ 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,
+101, 32,102,105,108,101, 0, 0, 0, 0, 0, 65, 0, 0, 0, 73, 0, 0, 0, 73,
+ 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74,
+ 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 73, 0, 0, 0, 75, 0, 0, 0, 75,
+ 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76,
+ 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 78,
+ 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78,
+ 0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 80,
+ 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81,
+ 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82,
+ 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84,
+ 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86,
+ 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86,
+ 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 89,
+ 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 92, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0,102,100, 0, 10, 0, 0, 0, 64, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,117,115, 0, 17, 0, 0, 0, 64, 0,
+ 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,110,101,119,102,105,108,101, 0, 49, 0,
+ 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0,
+ 0, 0,104, 0, 0, 0, 0, 1, 0, 6, 34, 0, 0, 0, 69, 0, 0, 0, 70, 64,
+192, 0,128, 0, 0, 0,193,128, 0, 0, 92,128,128, 1, 23,192,192, 0, 22, 64,
+ 1,128,133, 0, 1, 0,193, 64, 1, 0, 0, 1, 0, 0,213, 0,129, 1,156, 64,
+ 0, 1, 22,192, 4,128,133,128, 1, 0,134,192, 65, 1,134, 0, 66, 1,203,128,
+194, 0, 65,193, 2, 0,220,128,128, 1,137,192,128,132,139, 0,195, 0, 0, 1,
+128, 0,156, 64,128, 1,133,128, 1, 0,134,192, 65, 1,137, 0,128,134,133,128,
+ 1, 0,134,192, 65, 1,134,128, 67, 1,197,128, 1, 0,198,192,193, 1,198, 64,
+195, 1,137,192,128,135, 30, 0,128, 0, 16, 0, 0, 0, 4, 3, 0, 0, 0, 0,
+ 0, 0, 0,105,111, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0,
+ 4, 2, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0,
+ 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,
+111,116, 32,108,111, 97,100, 32,102,105,108,101, 32, 0, 4, 4, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,
+111,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,101, 0,
+ 4, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0,114,101, 97,100, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 42, 97,
+ 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 0, 4, 13, 0, 0,
+ 0, 0, 0, 0, 0,108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 34, 0,
+ 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0,
+ 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0,
+ 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 99, 0,
+ 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0,
+ 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0,101, 0,
+ 0, 0,101, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0,
+ 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0, 2, 0,
+ 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 0,
+ 0, 0, 0, 33, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,110,101,119,102,105,
+108,101, 0, 5, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,106, 0, 0, 0,121, 0, 0, 0, 0, 1, 0, 7, 37, 0, 0, 0, 69,
+ 0, 0, 0, 70, 64,192, 0,138, 64, 1, 0,137,192, 64,129,137, 64, 65,130,137,
+192, 65,131,137, 64, 66,132,137,192, 66,133, 92,128, 0, 1,139, 0,195, 0, 5,
+ 1, 0, 0, 6, 65, 67, 2, 69, 1, 0, 0, 70, 65,195, 2,156, 64, 0, 2,134,
+128,195, 0,198,192,195, 0, 11, 1,196, 0, 28, 65, 0, 1, 87, 64, 68, 1, 22,
+ 64, 0,128, 23,128, 68, 1, 22,192, 1,128, 23,128, 68, 1, 22,128, 2,128, 5,
+193, 4, 0, 65, 1, 5, 0,128, 1,128, 1, 85,129,129, 2, 28, 65, 0, 1, 22,
+ 0, 1,128, 5, 1, 0, 0, 6, 65, 69, 2, 6,129, 69, 2, 64, 1,128, 1, 28,
+ 65, 0, 1, 30, 0,128, 0, 23, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103,
+ 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103,116,121,112,101,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 79, 80, 69, 78, 0, 4, 6, 0, 0, 0,
+ 0, 0, 0, 0,116,105,116,108,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 76,
+111, 97,100, 32, 70,105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,105,
+108,116,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 42, 46,119,108,117, 97,
+ 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,102,105,108,116,101,114,105,110,102,111,
+ 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 76,117, 97, 32, 70,105,108,101,115, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0, 97,108,108,111,119,110,101,119, 0, 4, 3,
+ 0, 0, 0, 0, 0, 0, 0, 78, 79, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,
+111,112,117,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,117,115, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 8, 0, 0, 0, 0, 0, 0,
+ 0,100,101,115,116,114,111,121, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 45, 49,
+ 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 49, 0, 4, 6, 0, 0, 0, 0, 0, 0,
+ 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,
+111,116, 32,108,111, 97,100, 32,102,105,108,101, 32, 0, 4, 8, 0, 0, 0, 0,
+ 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+ 76,111, 97,100, 70,105,108,101, 0, 0, 0, 0, 0, 37, 0, 0, 0,107, 0, 0,
+ 0,107, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,108, 0, 0,
+ 0,108, 0, 0, 0,108, 0, 0, 0,107, 0, 0, 0,109, 0, 0, 0,109, 0, 0,
+ 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,110, 0, 0,
+ 0,111, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,114, 0, 0, 0,114, 0, 0,
+ 0,114, 0, 0, 0,114, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,116, 0, 0,
+ 0,116, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,117, 0, 0,
+ 0,119, 0, 0, 0,119, 0, 0, 0,119, 0, 0, 0,119, 0, 0, 0,119, 0, 0,
+ 0,121, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108,
+102, 0, 0, 0, 0, 0, 36, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,102,100,
+ 0, 9, 0, 0, 0, 36, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,115,116, 97,
+116,117,115, 0, 16, 0, 0, 0, 36, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+102,105,108,101,110, 97,109,101, 0, 17, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0,170, 0, 0, 0, 0, 5, 0,
+ 7, 8, 0, 0, 0, 23, 0, 64, 1, 22, 0, 1,128, 69, 65, 0, 0, 70,129,192,
+ 2, 70,193,192, 2,128, 1,128, 0, 92, 65, 0, 1, 30, 0,128, 0, 4, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0, 76,111, 97,100, 70,105,108,101, 0, 0, 0,
+ 0, 0, 8, 0, 0, 0,167, 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0,168, 0,
+ 0, 0,168, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,170, 0, 0, 0, 5, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 7,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,110,117,109, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0,
+ 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 0, 90, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
+ 1, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,
+ 7, 0, 0, 0, 15, 0, 0, 0, 7, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0,
+ 37, 0, 0, 0, 17, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0,
+ 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0,
+ 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0,
+ 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0,
+ 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0,
+ 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0,
+ 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0,
+ 46, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 50, 0, 0, 0,
+ 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0,
+ 50, 0, 0, 0, 51, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0,
+ 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0,
+ 52, 0, 0, 0, 53, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0,
+ 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0,
+ 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0,
+ 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0,
+ 55, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0,
+ 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0,
+ 56, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 70, 0, 0, 0,
+ 58, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0,
+ 72, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0,104, 0, 0, 0, 94, 0, 0, 0,
+106, 0, 0, 0,106, 0, 0, 0,106, 0, 0, 0,121, 0, 0, 0,106, 0, 0, 0,
+123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,
+125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,
+125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,
+125, 0, 0, 0,125, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,
+127, 0, 0, 0,127, 0, 0, 0,127, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,
+128, 0, 0, 0,129, 0, 0, 0,129, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0,
+130, 0, 0, 0,130, 0, 0, 0,125, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,
+131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,132, 0, 0, 0,
+132, 0, 0, 0,132, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,
+134, 0, 0, 0,134, 0, 0, 0,131, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,
+125, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,125, 0, 0, 0,136, 0, 0, 0,
+136, 0, 0, 0,136, 0, 0, 0,137, 0, 0, 0,124, 0, 0, 0,137, 0, 0, 0,
+141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,
+143, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,
+145, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,
+147, 0, 0, 0,147, 0, 0, 0,148, 0, 0, 0,146, 0, 0, 0,148, 0, 0, 0,
+149, 0, 0, 0,144, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,
+150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,
+152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,
+152, 0, 0, 0,152, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,
+153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,154, 0, 0, 0,151, 0, 0, 0,
+154, 0, 0, 0,154, 0, 0, 0,150, 0, 0, 0,155, 0, 0, 0,142, 0, 0, 0,
+155, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,
+159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,160, 0, 0, 0,
+161, 0, 0, 0,161, 0, 0, 0,161, 0, 0, 0,161, 0, 0, 0,162, 0, 0, 0,
+163, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,
+164, 0, 0, 0,159, 0, 0, 0,164, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0,
+166, 0, 0, 0,170, 0, 0, 0,166, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,
+174, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0,
+176, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,
+178, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,
+179, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,
+180, 0, 0, 0,181, 0, 0, 0,181, 0, 0, 0,181, 0, 0, 0,183, 0, 0, 0,
+183, 0, 0, 0,183, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,
+185, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,
+186, 0, 0, 0,186, 0, 0, 0,187, 0, 0, 0,184, 0, 0, 0,188, 0, 0, 0,
+182, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,
+189, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,
+190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,191, 0, 0, 0,191, 0, 0, 0,
+192, 0, 0, 0,177, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,
+193, 0, 0, 0,194, 0, 0, 0,175, 0, 0, 0,194, 0, 0, 0,198, 0, 0, 0,
+198, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,199, 0, 0, 0,
+199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,
+201, 0, 0, 0,201, 0, 0, 0,201, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,
+203, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,
+204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/console5_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srcconsole/lua.ico b/iup/srcconsole/lua.ico
new file mode 100755
index 0000000..56dc4fe
--- /dev/null
+++ b/iup/srcconsole/lua.ico
Binary files differ
diff --git a/iup/srcconsole/make_uname b/iup/srcconsole/make_uname
new file mode 100755
index 0000000..6263490
--- /dev/null
+++ b/iup/srcconsole/make_uname
@@ -0,0 +1,6 @@
+#This builds all the libraries of the folder for 1 uname
+
+tecmake relink $1 $2 $3 $4 $5 $6 $7 $8
+#tecmake USE_GTK=Yes relink $1 $2 $3 $4 $5 $6 $7 $8
+#tecmake USE_MOTIF=Yes relink $1 $2 $3 $4 $5 $6 $7 $8
+#tecmake MF=iuplua3 relink $1 $2 $3 $4 $5 $6 $7 $8
diff --git a/iup/srcconsole/make_uname.bat b/iup/srcconsole/make_uname.bat
new file mode 100755
index 0000000..a5b1d9a
--- /dev/null
+++ b/iup/srcconsole/make_uname.bat
@@ -0,0 +1,30 @@
+@echo off
+
+if "%1"=="" goto iupexe32
+if "%1"=="vc8" goto iupexe32
+if "%1"=="vc8_64" goto iupexe64
+if "%1"=="all" goto iupexe
+goto end
+
+:iupexe32
+call tecmake dll8 relink %2 %3 %4 %5 %6 %7
+REM call tecmake dll8 USE_GTK=Yes relink %2 %3 %4 %5 %6 %7
+REM call tecmake vc8 "MF=iuplua3" relink %2 %3 %4 %5 %6 %7
+goto end
+
+:iupexe64
+call tecmake dll8_64 relink %2 %3 %4 %5 %6 %7
+REM call tecmake dll8_64 USE_GTK=Yes relink %2 %3 %4 %5 %6 %7
+REM call tecmake vc8_64 "MF=iuplua3" relink %2 %3 %4 %5 %6 %7
+goto end
+
+:iupexe
+call tecmake dll8 relink %2 %3 %4 %5 %6 %7
+REM call tecmake dll8 USE_GTK=Yes relink %2 %3 %4 %5 %6 %7
+REM call tecmake vc8 "MF=iuplua3" relink %2 %3 %4 %5 %6 %7
+call tecmake dll8_64 relink %2 %3 %4 %5 %6 %7
+REM call tecmake dll8_64 USE_GTK=Yes relink %2 %3 %4 %5 %6 %7
+REM call tecmake vc8_64 "MF=iuplua3" relink %2 %3 %4 %5 %6 %7
+goto end
+
+:end
diff --git a/iup/srcconsole/wlua_dll8_x64.manifest b/iup/srcconsole/wlua_dll8_x64.manifest
new file mode 100755
index 0000000..9525d5a
--- /dev/null
+++ b/iup/srcconsole/wlua_dll8_x64.manifest
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+ version="5.1.4.0"
+ processorArchitecture="amd64"
+ name="Lua"
+ type="win32"
+/>
+<description>Lua Console</description>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="amd64"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.VC80.CRT"
+ version="8.0.50727.762"
+ processorArchitecture="amd64"
+ publicKeyToken="1fc8b3b9a1e18e3b"
+ />
+ </dependentAssembly>
+</dependency>
+</assembly>
diff --git a/iup/srcconsole/wlua_dll8_x86.manifest b/iup/srcconsole/wlua_dll8_x86.manifest
new file mode 100755
index 0000000..70966e7
--- /dev/null
+++ b/iup/srcconsole/wlua_dll8_x86.manifest
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+ version="5.1.4.0"
+ processorArchitecture="x86"
+ name="Lua"
+ type="win32"
+/>
+<description>Lua Console</description>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="x86"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.VC80.CRT"
+ version="8.0.50727.762"
+ processorArchitecture="x86"
+ publicKeyToken="1fc8b3b9a1e18e3b"
+ />
+ </dependentAssembly>
+</dependency>
+</assembly>
diff --git a/iup/srcconsole/wlua_dll9_x64.manifest b/iup/srcconsole/wlua_dll9_x64.manifest
new file mode 100755
index 0000000..f454d48
--- /dev/null
+++ b/iup/srcconsole/wlua_dll9_x64.manifest
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+ version="5.1.4.0"
+ processorArchitecture="amd64"
+ name="Lua"
+ type="win32"
+/>
+<description>Lua Console</description>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="amd64"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.VC90.CRT"
+ version="9.0.21022.8"
+ processorArchitecture="amd64"
+ publicKeyToken="1fc8b3b9a1e18e3b"
+ />
+ </dependentAssembly>
+</dependency>
+</assembly>
diff --git a/iup/srcconsole/wlua_dll9_x86.manifest b/iup/srcconsole/wlua_dll9_x86.manifest
new file mode 100755
index 0000000..3a59548
--- /dev/null
+++ b/iup/srcconsole/wlua_dll9_x86.manifest
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+ version="5.1.4.0"
+ processorArchitecture="x86"
+ name="Lua"
+ type="win32"
+/>
+<description>Lua Console</description>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="x86"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.VC90.CRT"
+ version="9.0.21022.8"
+ processorArchitecture="x86"
+ publicKeyToken="1fc8b3b9a1e18e3b"
+ />
+ </dependentAssembly>
+</dependency>
+</assembly>
diff --git a/iup/srccontrols/Makefile b/iup/srccontrols/Makefile
new file mode 100755
index 0000000..d02bbc3
--- /dev/null
+++ b/iup/srccontrols/Makefile
@@ -0,0 +1,6 @@
+
+.PHONY: do_all iupcontrols
+do_all: iupcontrols
+
+iupcontrols:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak
diff --git a/iup/srccontrols/color/iup_colorbrowser.c b/iup/srccontrols/color/iup_colorbrowser.c
new file mode 100755
index 0000000..82b4a88
--- /dev/null
+++ b/iup/srccontrols/color/iup_colorbrowser.c
@@ -0,0 +1,849 @@
+/** \file
+* \brief ColorBrowser Control.
+*
+* See Copyright Notice in "iup.h"
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+
+#include <cd.h>
+#include <cdiup.h>
+#include <cdirgb.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_stdcontrols.h"
+#include "iup_controls.h"
+#include "iup_cdutil.h"
+
+#include "iup_colorhsi.h"
+
+
+#ifndef min
+#define min(a, b) ( (a < b) ? (a) : (b) )
+#endif
+
+#define ICB_DEG2RAD 0.01745329252f /* degrees to radians (rad = ICB_DEG2RAD * deg) */
+#define ICB_DEFAULTSIZE 181 /* default size */
+#define ICB_SPACE 4 /* size of the spacing */
+#define ICB_HUEWIDTH 18 /* width of the hue ring */
+#define ICB_MARKSIZE 6 /* size of the cursor mark */
+enum {ICB_INSIDE_NONE, ICB_INSIDE_HUE, ICB_INSIDE_SI};
+
+
+struct _IcontrolData
+{
+ iupCanvas canvas; /* from IupCanvas (must reserve it) */
+
+ /* mouse interaction state */
+ int h_down,
+ si_down;
+
+ /* cursor positioning */
+ int h_x, h_y,
+ si_x, si_y;
+
+ /* HSI-XY coordinate convertion */
+ int xc, yc, /* center */
+ R, /* maximum radius available inside the size of the control */
+ Ix, /* x coordinate where S is 0 */
+ Iy1, /* y coordinate where I is 0 */
+ Iy2, /* y coordinate where I is 1 */
+ SxMax; /* x coordinate where S is 1 and I = 0.5 */
+
+ /* visual appearance control */
+ int w, h;
+ int has_focus;
+ long bgcolor;
+
+ /* attributes */
+ float hue, /* 0<=H<=359 */
+ saturation, /* 0<=S<=1 */
+ intensity; /* 0<=I<=1 */
+ unsigned char red, green, blue; /* 0<=x<=255 */
+
+ cdCanvas *cddbuffer;
+ cdCanvas *cdcanvas;
+};
+
+
+static float iColorBrowserSXmax(Ihandle* ih, int y)
+{
+ if (y == ih->data->yc)
+ return (float)(ih->data->SxMax - ih->data->Ix);
+ else if (y < ih->data->yc)
+ {
+ float D2 = (ih->data->Iy2 - ih->data->Iy1)/2.0f;
+ return ((float)(ih->data->SxMax - ih->data->Ix)*(y-ih->data->yc + D2))/D2;
+ }
+ else
+ {
+ float D2 = (ih->data->Iy2 - ih->data->Iy1)/2.0f;
+ return -((float)(ih->data->SxMax - ih->data->Ix)*(y-ih->data->yc - D2))/D2;
+ }
+}
+
+static float iColorBrowserCalcIntensity(Ihandle* ih, int y)
+{
+ return (float)(y - ih->data->Iy1)/(float)(ih->data->Iy2 - ih->data->Iy1);
+}
+
+static float iColorBrowserCalcSaturation(Ihandle* ih, int x, float sx_max)
+{
+ if (sx_max == 0)
+ return 0;
+ else
+ return (float)(x - ih->data->Ix)/sx_max;
+}
+
+/* Rotate points of 60 degrees */
+static void iColorBrowserRotatePoints(float *x1, float *y1, float *x2, float *y2, int xc, int yc)
+{
+ float xt, yt;
+ float nxt, nyt;
+ static const float s60 = 0.8660254f;
+ static const float c60 = 0.5f;
+
+ xt = *x1 - xc;
+ yt = *y1 - yc;
+ nxt = xt * c60 - yt * s60;
+ nyt = xt * s60 + yt * c60;
+ *x1 = nxt + xc;
+ *y1 = nyt + yc;
+
+ xt = *x2 - xc;
+ yt = *y2 - yc;
+ nxt = xt * c60 - yt * s60;
+ nyt = xt * s60 + yt * c60;
+ *x2 = nxt + xc;
+ *y2 = nyt + yc;
+}
+
+static void iColorBrowserRenderImageHue(Ihandle* ih)
+{
+ int x, y, active = 1;
+ unsigned char *red, *green, *blue;
+ unsigned char bg_red, bg_green, bg_blue;
+ if (!ih->data->cddbuffer)
+ return;
+
+ cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor);
+ cdCanvasClear(ih->data->cddbuffer);
+
+ if (!iupdrvIsActive(ih))
+ active = 0;
+
+ if (ih->data->has_focus)
+ cdDrawFocusRect(ih->data->cddbuffer, 0, 0, ih->data->w-1, ih->data->h-1);
+
+ red = cdRedImage(ih->data->cddbuffer);
+ green = cdGreenImage(ih->data->cddbuffer);
+ blue = cdBlueImage(ih->data->cddbuffer);
+
+ cdDecodeColor(ih->data->bgcolor, &bg_red, &bg_green, &bg_blue);
+
+ for (y = 0; y < ih->data->h; y++)
+ {
+ float sx_max = iColorBrowserSXmax(ih, y);
+
+ for (x = 0; x < ih->data->w; x++)
+ {
+ int xl, yl;
+ float radius, diff1, diff2;
+
+ if (y > ih->data->Iy1 &&
+ y < ih->data->Iy2 &&
+ x > ih->data->Ix &&
+ x < ih->data->Ix+(int)sx_max)
+ continue;
+
+ xl = x - ih->data->xc;
+ yl = y - ih->data->yc;
+ radius = sqrtf(xl*xl + yl*yl);
+
+ diff1 = radius - (ih->data->R-ICB_SPACE-ICB_HUEWIDTH);
+ diff2 = (ih->data->R-ICB_SPACE) - radius;
+
+ if (diff1>0 && diff2>0)
+ {
+ float h, s, i;
+ int offset = y*ih->data->w + x;
+ unsigned char* r = red + offset;
+ unsigned char* g = green + offset;
+ unsigned char* b = blue + offset;
+
+ h = atan2f(yl, xl);
+ h = (float)(h * CD_RAD2DEG);
+ s = 1.0f; /* maximum saturation */
+ i = 0.5f; /* choose I where S is maximum */
+
+ iupColorHSI2RGB(h, s, i, r, g, b);
+
+ if (diff1<1 || diff2<1) /* anti-aliasing */
+ {
+ float diff = (float)(diff1<1? diff1: diff2);
+ *r = (unsigned char)((*r)*diff + bg_red*(1.0f-diff));
+ *g = (unsigned char)((*g)*diff + bg_green*(1.0f-diff));
+ *b = (unsigned char)((*b)*diff + bg_blue*(1.0f-diff));
+ }
+
+ if (!active)
+ {
+ *r = cdIupLIGTHER(*r);
+ *g = cdIupLIGTHER(*g);
+ *b = cdIupLIGTHER(*b);
+ }
+ }
+ }
+ }
+
+ if (active)
+ {
+ float x1, x2, y1, y2;
+ unsigned char shade_lr, shade_lg, shade_lb,
+ shade_dr, shade_dg, shade_db;
+ shade_dr = (unsigned char)((2 * bg_red) / 3);
+ shade_dg = (unsigned char)((2 * bg_green) / 3);
+ shade_db = (unsigned char)((2 * bg_blue) / 3);
+ shade_lr = (unsigned char)((255 + bg_red) / 2);
+ shade_lg = (unsigned char)((255 + bg_green) / 2);
+ shade_lb = (unsigned char)((255 + bg_blue) / 2);
+ cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(shade_dr, shade_dg, shade_db));
+ x1 = (float)(ih->data->xc-ih->data->R+ICB_SPACE); y1 = (float)ih->data->yc; x2 = (float)(x1+ICB_HUEWIDTH/2); y2 = (float)ih->data->yc;
+ cdCanvasLine(ih->data->cddbuffer, (int) x1, (int) y1, (int) x2, (int) y2);
+ iColorBrowserRotatePoints(&x1, &y1, &x2, &y2, ih->data->xc, ih->data->yc);
+ cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(shade_lr, shade_lg, shade_lb));
+ cdCanvasLine(ih->data->cddbuffer, (int) x1, (int) y1, (int) x2, (int) y2);
+ iColorBrowserRotatePoints(&x1, &y1, &x2, &y2, ih->data->xc, ih->data->yc);
+ cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(shade_dr, shade_dg, shade_db));
+ cdCanvasLine(ih->data->cddbuffer, (int) x1, (int) y1, (int) x2, (int) y2);
+ iColorBrowserRotatePoints(&x1, &y1, &x2, &y2, ih->data->xc, ih->data->yc);
+ cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(shade_lr, shade_lg, shade_lb));
+ cdCanvasLine(ih->data->cddbuffer, (int) x1, (int) y1, (int) x2, (int) y2);
+ iColorBrowserRotatePoints(&x1, &y1, &x2, &y2, ih->data->xc, ih->data->yc);
+ cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(shade_dr, shade_dg, shade_db));
+ cdCanvasLine(ih->data->cddbuffer, (int) x1, (int) y1, (int) x2, (int) y2);
+ iColorBrowserRotatePoints(&x1, &y1, &x2, &y2, ih->data->xc, ih->data->yc);
+ cdCanvasLine(ih->data->cddbuffer, (int) x1, (int) y1, (int) x2, (int) y2);
+ }
+}
+
+static void iColorBrowserRenderImageSI(Ihandle* ih)
+{
+ int x, y, active = 1;
+ unsigned char *red, *green, *blue;
+ unsigned char bg_red, bg_green, bg_blue;
+ float angle, cos_angle, sin_angle;
+ if (!ih->data->cddbuffer)
+ return;
+
+ if (!iupdrvIsActive(ih))
+ active = 0;
+
+ red = cdRedImage(ih->data->cddbuffer);
+ green = cdGreenImage(ih->data->cddbuffer);
+ blue = cdBlueImage(ih->data->cddbuffer);
+
+ cdDecodeColor(ih->data->bgcolor, &bg_red, &bg_green, &bg_blue);
+
+ angle = ih->data->hue * ICB_DEG2RAD;
+ cos_angle = cosf(angle);
+ sin_angle = sinf(angle);
+
+ for (y = 0; y < ih->data->h; y++)
+ {
+ float sx_max, i;
+
+ if (y < ih->data->Iy1)
+ continue;
+ else if (y > ih->data->Iy2)
+ continue;
+
+ sx_max = iColorBrowserSXmax(ih, y);
+ i = iColorBrowserCalcIntensity(ih, y);
+
+ for (x = 0; x < ih->data->w; x++)
+ {
+ if (x < ih->data->Ix)
+ continue;
+ else if (x > ih->data->Ix+(int)sx_max)
+ continue;
+
+ {
+ int offset = y*ih->data->w + x;
+ unsigned char* r = red + offset;
+ unsigned char* g = green + offset;
+ unsigned char* b = blue + offset;
+ float s, diff;
+
+ s = iColorBrowserCalcSaturation(ih, x, sx_max);
+
+ iupColorHSI2RGB(ih->data->hue, s, i, r, g, b);
+
+ diff = sx_max - (float)(x - ih->data->Ix);
+ if (diff<1.0f) /* anti-aliasing */
+ {
+ *r = (unsigned char)((*r)*diff + bg_red*(1.0f-diff));
+ *g = (unsigned char)((*g)*diff + bg_green*(1.0f-diff));
+ *b = (unsigned char)((*b)*diff + bg_blue*(1.0f-diff));
+ }
+
+ if (!active)
+ {
+ *r = cdIupLIGTHER(*r);
+ *g = cdIupLIGTHER(*g);
+ *b = cdIupLIGTHER(*b);
+ }
+ }
+ }
+ }
+}
+
+static void iColorBrowserUpdateCursorSI(Ihandle* ih)
+{
+ int x;
+ int y = (int)(ih->data->intensity*(ih->data->Iy2 - ih->data->Iy1)) + ih->data->Iy1;
+ ih->data->si_y = iupROUND(y);
+ x = (int)(ih->data->saturation*iColorBrowserSXmax(ih, ih->data->si_y)) + ih->data->Ix;
+ ih->data->si_x = iupROUND(x);
+}
+
+static void iColorBrowserSetCursorSI(Ihandle* ih, int x, int y)
+{
+ float sx_max;
+
+ if (y < ih->data->Iy1)
+ ih->data->si_y = ih->data->Iy1;
+ else if (y > ih->data->Iy2)
+ ih->data->si_y = ih->data->Iy2;
+ else
+ ih->data->si_y = y;
+
+ sx_max = iColorBrowserSXmax(ih, ih->data->si_y);
+
+ if (x < ih->data->Ix)
+ ih->data->si_x = ih->data->Ix;
+ else if (x > ih->data->Ix+sx_max)
+ ih->data->si_x = ih->data->Ix+(int)sx_max;
+ else
+ ih->data->si_x = x;
+
+ ih->data->intensity = iColorBrowserCalcIntensity(ih, ih->data->si_y);
+ ih->data->saturation = iColorBrowserCalcSaturation(ih, ih->data->si_x, sx_max);
+
+ if (ih->data->saturation == -0.0f)
+ ih->data->saturation = 0;
+ if (ih->data->intensity == -0.0f)
+ ih->data->intensity = 0;
+}
+
+static void iColorBrowserUpdateCursorHue(Ihandle* ih)
+{
+ int rc = ih->data->R-ICB_SPACE-ICB_HUEWIDTH/2;
+ float angle = ih->data->hue * ICB_DEG2RAD;
+ float cos_angle = cosf(angle);
+ float sin_angle = sinf(angle);
+ float x = rc*cos_angle + ih->data->xc;
+ float y = rc*sin_angle + ih->data->yc;
+ ih->data->h_x = iupROUND(x);
+ ih->data->h_y = iupROUND(y);
+}
+
+static void iColorBrowserSetCursorHue(Ihandle* ih, int x, int y)
+{
+ int xl = x - ih->data->xc;
+ int yl = y - ih->data->yc;
+ ih->data->hue = (float)(atan2f(yl, xl) * CD_RAD2DEG);
+ ih->data->hue = fmodf(ih->data->hue, 360.0f);
+ if (ih->data->hue < 0.0f)
+ ih->data->hue += 360.0f;
+
+ iColorBrowserUpdateCursorHue(ih);
+}
+
+static int iColorBrowserCheckInside(Ihandle* ih, int x, int y)
+{
+ int xl = x - ih->data->xc;
+ int yl = y - ih->data->yc;
+ float radius = sqrtf(xl*xl + yl*yl);
+
+ if (radius < ih->data->R-ICB_SPACE-ICB_HUEWIDTH-ICB_SPACE)
+ return ICB_INSIDE_SI;
+
+ if (radius > ih->data->R-ICB_SPACE-ICB_HUEWIDTH &&
+ radius < ih->data->R-ICB_SPACE)
+ return ICB_INSIDE_HUE;
+
+ return ICB_INSIDE_NONE;
+}
+
+static void iColorBrowserHSI2RGB(Ihandle* ih)
+{
+ iupColorHSI2RGB(ih->data->hue, ih->data->saturation, ih->data->intensity,
+ &(ih->data->red), &(ih->data->green), &(ih->data->blue));
+}
+
+static void iColorBrowserRGB2HSI(Ihandle* ih)
+{
+ iupColorRGB2HSI(ih->data->red, ih->data->green, ih->data->blue,
+ &(ih->data->hue), &(ih->data->saturation), &(ih->data->intensity));
+}
+
+static void iColorBrowserUpdateDisplay(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ return;
+
+ cdCanvasFlush(ih->data->cddbuffer); /* swap the RGB to the display canvas */
+
+ if (iupdrvIsActive(ih))
+ {
+ cdCanvasForeground(ih->data->cdcanvas, CD_GRAY);
+ cdCanvasArc(ih->data->cdcanvas, ih->data->h_x+1, ih->data->h_y, ICB_MARKSIZE, ICB_MARKSIZE, 0, 360);
+ cdCanvasArc(ih->data->cdcanvas, ih->data->si_x+1, ih->data->si_y, ICB_MARKSIZE, ICB_MARKSIZE, 0, 360);
+ cdCanvasForeground(ih->data->cdcanvas, CD_WHITE);
+ cdCanvasArc(ih->data->cdcanvas, ih->data->h_x, ih->data->h_y, ICB_MARKSIZE, ICB_MARKSIZE, 0, 360);
+ cdCanvasArc(ih->data->cdcanvas, ih->data->si_x, ih->data->si_y, ICB_MARKSIZE, ICB_MARKSIZE, 0, 360);
+ }
+ else
+ {
+ cdCanvasForeground(ih->data->cdcanvas, CD_DARK_GRAY);
+ cdCanvasSector(ih->data->cdcanvas, ih->data->h_x, ih->data->h_y, ICB_MARKSIZE+1, ICB_MARKSIZE+1, 0, 360);
+ cdCanvasSector(ih->data->cdcanvas, ih->data->si_x, ih->data->si_y, ICB_MARKSIZE+1, ICB_MARKSIZE+1, 0, 360);
+ }
+}
+
+static void iColorBrowserCallChangeCb(Ihandle* ih)
+{
+ IFnccc change_cb = (IFnccc) IupGetCallback(ih, "CHANGE_CB");
+ if (change_cb)
+ change_cb(ih, ih->data->red, ih->data->green, ih->data->blue);
+
+ iupBaseCallValueChangedCb(ih);
+}
+
+static void iColorBrowserCallDragCb(Ihandle* ih)
+{
+ IFnccc drag_cb = (IFnccc) IupGetCallback(ih, "DRAG_CB");
+ if (drag_cb)
+ drag_cb(ih, ih->data->red, ih->data->green, ih->data->blue);
+
+ iupBaseCallValueChangedCb(ih);
+}
+
+static int iColorBrowserHmouse(Ihandle* ih, int x, int y, int drag)
+{
+ iColorBrowserSetCursorHue(ih, x, y);
+ iColorBrowserHSI2RGB(ih);
+ /* must update the Si area */
+ iColorBrowserRenderImageSI(ih);
+ iColorBrowserUpdateDisplay(ih);
+
+ if (drag)
+ iColorBrowserCallDragCb(ih);
+ else
+ iColorBrowserCallChangeCb(ih);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserSImouse(Ihandle* ih, int x, int y, int drag)
+{
+ iColorBrowserSetCursorSI(ih, x, y);
+ iColorBrowserHSI2RGB(ih);
+ iColorBrowserUpdateDisplay(ih);
+
+ if (drag)
+ iColorBrowserCallDragCb(ih);
+ else
+ iColorBrowserCallChangeCb(ih);
+
+ return IUP_DEFAULT;
+}
+
+
+/******************************************************************/
+
+
+static int iColorBrowserButton_CB(Ihandle* ih, int b, int press, int x, int y)
+{
+ if (b != IUP_BUTTON1)
+ return IUP_DEFAULT;
+
+ cdCanvasUpdateYAxis(ih->data->cdcanvas, &y);
+
+ if (press)
+ {
+ int inside = iColorBrowserCheckInside(ih, x, y);
+
+ if (!ih->data->h_down && inside==ICB_INSIDE_HUE)
+ {
+ iColorBrowserHmouse(ih, x, y, 1);
+ ih->data->h_down = 1;
+ }
+
+ if (!ih->data->si_down && inside==ICB_INSIDE_SI)
+ {
+ iColorBrowserSImouse(ih, x, y, 1);
+ ih->data->si_down = 1;
+ }
+ }
+ else
+ {
+ if (ih->data->h_down)
+ {
+ iColorBrowserHmouse(ih, x, y, 0);
+ ih->data->h_down = 0;
+ }
+
+ if (ih->data->si_down)
+ {
+ iColorBrowserSImouse(ih, x, y, 0);
+ ih->data->si_down = 0;
+ }
+ }
+
+ return IUP_DEFAULT;
+}
+
+/* Callback for the mouse motion in the canvas */
+static int iColorBrowserMotion_CB(Ihandle* ih, int x, int y, char *status)
+{
+ if (!iup_isbutton1(status))
+ {
+ ih->data->h_down = 0;
+ ih->data->si_down = 0;
+ return IUP_DEFAULT;
+ }
+
+ if (ih->data->h_down)
+ {
+ cdCanvasUpdateYAxis(ih->data->cdcanvas, &y);
+ iColorBrowserHmouse(ih, x, y, 1);
+ }
+ else if (ih->data->si_down)
+ {
+ cdCanvasUpdateYAxis(ih->data->cdcanvas, &y);
+ iColorBrowserSImouse(ih, x, y, 1);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserFocus_CB(Ihandle* ih, int focus)
+{
+ ih->data->has_focus = focus;
+ iColorBrowserRenderImageHue(ih);
+ iColorBrowserRenderImageSI(ih);
+ iColorBrowserUpdateDisplay(ih);
+ return IUP_DEFAULT;
+}
+
+static void iColorBrowserUpdateSize(Ihandle* ih)
+{
+ int T, D;
+
+ /* update canvas size */
+ cdCanvasActivate(ih->data->cddbuffer);
+ cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL);
+
+ ih->data->R = min(ih->data->w, ih->data->h)/2;
+ ih->data->xc = ih->data->w/2;
+ ih->data->yc = ih->data->h/2;
+ T = ih->data->R-ICB_SPACE-ICB_HUEWIDTH-ICB_SPACE;
+ ih->data->Ix = ih->data->xc - T/2; /* cos(60)=0.5 */
+ D = (int)(2*T*0.866); /* sin(60)=0.866 */
+ ih->data->Iy1 = ih->data->yc - D/2;
+ ih->data->Iy2 = ih->data->Iy1 + D;
+ ih->data->SxMax = ih->data->xc + T;
+}
+
+static int iColorBrowserResize_CB(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ {
+ /* update canvas size */
+ cdCanvasActivate(ih->data->cdcanvas);
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFERRGB, ih->data->cdcanvas);
+ }
+
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update size */
+ iColorBrowserUpdateSize(ih);
+
+ iColorBrowserUpdateCursorHue(ih);
+ iColorBrowserUpdateCursorSI(ih);
+
+ /* update render */
+ iColorBrowserRenderImageHue(ih);
+ iColorBrowserRenderImageSI(ih);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserRedraw_CB(Ihandle* ih)
+{
+ iColorBrowserUpdateDisplay(ih);
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserWheel_CB(Ihandle* ih, float delta)
+{
+ ih->data->hue += delta;
+
+ iColorBrowserUpdateCursorHue(ih);
+ iColorBrowserHSI2RGB(ih);
+ /* must update the Si area */
+ iColorBrowserRenderImageSI(ih);
+ iColorBrowserUpdateDisplay(ih);
+ iColorBrowserCallChangeCb(ih);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserKeypress_CB(Ihandle* ih, int c, int press)
+{
+ int x, y, changing_hue = 0;
+
+ if (!press)
+ return IUP_DEFAULT;
+
+ x = ih->data->si_x;
+ y = ih->data->si_y;
+
+ switch (c)
+ {
+ case K_UP:
+ y++;
+ break;
+ case K_DOWN:
+ y--;
+ break;
+ case K_RIGHT:
+ x++;
+ break;
+ case K_LEFT:
+ x--;
+ break;
+ case K_PGUP:
+ ih->data->hue += 1.0f;
+ changing_hue = 1;
+ break;
+ case K_PGDN:
+ ih->data->hue -= 1.0f;
+ changing_hue = 1; break;
+ case K_HOME:
+ ih->data->hue = 0.0f;
+ changing_hue = 1;
+ break;
+ case K_END:
+ ih->data->hue = 180.0f;
+ changing_hue = 1;
+ break;
+ default:
+ return IUP_DEFAULT;
+ }
+
+ if (changing_hue)
+ {
+ iColorBrowserUpdateCursorHue(ih);
+ /* must update the Si area */
+ iColorBrowserRenderImageSI(ih);
+ }
+ else
+ iColorBrowserSetCursorSI(ih, x, y);
+
+ iColorBrowserHSI2RGB(ih);
+
+ iColorBrowserUpdateDisplay(ih);
+ iColorBrowserCallChangeCb(ih);
+
+ return IUP_IGNORE; /* to avoid arrow keys being processed by the system */
+}
+
+
+/*********************************************************************************/
+
+
+static char* iColorBrowserGetHSIAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(100);
+ sprintf(buffer, "%f %f %f", (double)ih->data->hue, (double)ih->data->saturation, (double)ih->data->intensity);
+ return buffer;
+}
+
+static int iColorBrowserSetHSIAttrib(Ihandle* ih, const char* value)
+{
+ float old_hue = ih->data->hue,
+ old_saturation = ih->data->saturation,
+ old_intensity = ih->data->intensity;
+
+ if (!iupStrToHSI(value, &ih->data->hue, &ih->data->saturation, &ih->data->intensity))
+ return 0;
+
+ if (ih->data->cddbuffer)
+ {
+ if (old_hue != ih->data->hue)
+ iColorBrowserUpdateCursorHue(ih);
+ if (old_saturation != ih->data->saturation || old_intensity != ih->data->intensity)
+ iColorBrowserUpdateCursorSI(ih);
+ iColorBrowserHSI2RGB(ih);
+ iColorBrowserRenderImageSI(ih);
+ iColorBrowserUpdateDisplay(ih);
+ }
+
+ return 0;
+}
+
+static char* iColorBrowserGetRGBAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(20);
+ sprintf(buffer, "%d %d %d", (int) ih->data->red, (int) ih->data->green, (int) ih->data->blue);
+ return buffer;
+}
+
+static int iColorBrowserSetRGBAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+
+ ih->data->red = r;
+ ih->data->green = g;
+ ih->data->blue = b;
+ iColorBrowserRGB2HSI(ih);
+
+ if (ih->data->cddbuffer)
+ {
+ iColorBrowserUpdateCursorHue(ih);
+ iColorBrowserUpdateCursorSI(ih);
+ iColorBrowserRenderImageSI(ih);
+ iColorBrowserUpdateDisplay(ih);
+ }
+
+ return 0;
+}
+
+static int iColorBrowserSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ value = iupControlBaseGetParentBgColor(ih);
+ ih->data->bgcolor = cdIupConvertColor(value);
+
+ if (ih->data->cddbuffer)
+ {
+ iColorBrowserRenderImageHue(ih);
+ iColorBrowserRenderImageSI(ih);
+ iColorBrowserUpdateDisplay(ih);
+ }
+ return 1;
+}
+
+static int iColorBrowserSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ iupBaseSetActiveAttrib(ih, value);
+ iColorBrowserUpdateDisplay(ih);
+ return 0; /* do not store value in hash table */
+}
+
+
+/****************************************************************************/
+
+
+static int iColorBrowserMapMethod(Ihandle* ih)
+{
+ ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih);
+ if (!ih->data->cdcanvas)
+ return IUP_ERROR;
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFERRGB, ih->data->cdcanvas);
+
+ if (ih->data->cddbuffer)
+ iColorBrowserUpdateSize(ih);
+
+ return IUP_NOERROR;
+}
+
+static void iColorBrowserUnMapMethod(Ihandle* ih)
+{
+ if (ih->data->cddbuffer)
+ cdKillCanvas(ih->data->cddbuffer);
+
+ if (ih->data->cdcanvas)
+ cdKillCanvas(ih->data->cdcanvas);
+}
+
+static int iColorBrowserCreateMethod(Ihandle* ih, void **params)
+{
+ (void)params;
+
+ /* free the data allocated by IupCanvas */
+ if (ih->data) free(ih->data);
+ ih->data = iupALLOCCTRLDATA();
+
+ /* change the IupCanvas default values */
+ IupSetfAttribute(ih, "RASTERSIZE", "%dx%d", ICB_DEFAULTSIZE, ICB_DEFAULTSIZE);
+ iupAttribSetStr(ih, "BORDER", "NO");
+ ih->expand = IUP_EXPAND_NONE;
+
+ /* IupCanvas callbacks */
+ IupSetCallback(ih, "ACTION", (Icallback)iColorBrowserRedraw_CB);
+ IupSetCallback(ih, "RESIZE_CB", (Icallback)iColorBrowserResize_CB);
+ IupSetCallback(ih, "BUTTON_CB", (Icallback)iColorBrowserButton_CB);
+ IupSetCallback(ih, "MOTION_CB", (Icallback)iColorBrowserMotion_CB);
+ IupSetCallback(ih, "FOCUS_CB", (Icallback)iColorBrowserFocus_CB);
+ IupSetCallback(ih, "KEYPRESS_CB", (Icallback)iColorBrowserKeypress_CB);
+ IupSetCallback(ih, "WHEEL_CB", (Icallback)iColorBrowserWheel_CB);
+
+ return IUP_NOERROR;
+}
+
+Iclass* iupColorBrowserGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupCanvasGetClass());
+
+ ic->name = "colorbrowser";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPECANVAS;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iColorBrowserCreateMethod;
+ ic->Map = iColorBrowserMapMethod;
+ ic->UnMap = iColorBrowserUnMapMethod;
+
+ /* IupColorBrowser Callbacks */
+ iupClassRegisterCallback(ic, "DRAG_CB", "ccc");
+ iupClassRegisterCallback(ic, "CHANGE_CB", "ccc");
+ iupClassRegisterCallback(ic, "VALUECHANGED_CB", "");
+
+ /* IupColorBrowser only */
+ iupClassRegisterAttribute(ic, "RGB", iColorBrowserGetRGBAttrib, iColorBrowserSetRGBAttrib, "255 0 0", NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); /* force new default value */
+ iupClassRegisterAttribute(ic, "HSI", iColorBrowserGetHSIAttrib, iColorBrowserSetHSIAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* Overwrite IupCanvas Attributes */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iColorBrowserSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iColorBrowserSetBgColorAttrib, NULL, "255 255 255", IUPAF_NO_INHERIT); /* overwrite canvas implementation, set a system default to force a new default */
+
+ return ic;
+}
+
+Ihandle *IupColorBrowser(void)
+{
+ return IupCreate("colorbrowser");
+}
diff --git a/iup/srccontrols/color/iup_colorbrowserdlg.c b/iup/srccontrols/color/iup_colorbrowserdlg.c
new file mode 100755
index 0000000..65e4d37
--- /dev/null
+++ b/iup/srccontrols/color/iup_colorbrowserdlg.c
@@ -0,0 +1,1120 @@
+/** \file
+ * \brief IupColorDlg pre-defined dialog control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+#include "iupcontrols.h"
+
+#include <cd.h>
+#include <cdiup.h>
+#include <cddbuf.h>
+#include <cdirgb.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_strmessage.h"
+#include "iup_drv.h"
+#include "iup_stdcontrols.h"
+#include "iup_controls.h"
+#include "iup_cdutil.h"
+#include "iup_register.h"
+#include "iup_register.h"
+#include "iup_image.h"
+#include "iup_colorhsi.h"
+#include "iup_childtree.h"
+
+
+const char* default_colortable_cells[20] =
+{
+ "0 0 0", "64 64 64", "128 128 128", "144 144 144", "0 128 128", "128 0 128", "128 128 0", "128 0 0", "0 128 0", "0 0 128",
+ "255 255 255", "240 240 240", "224 224 224", "192 192 192", "0 255 255", "255 0 255", "255 255 0", "255 0 0", "0 255 0", "0 0 255"
+};
+
+typedef struct _IcolorDlgData
+{
+ int status;
+
+ long previous_color, color;
+
+ float hue, saturation, intensity;
+ unsigned char red, green, blue, alpha;
+
+ Ihandle *red_txt, *green_txt, *blue_txt, *alpha_txt;
+ Ihandle *hue_txt, *intensity_txt, *saturation_txt;
+ Ihandle *color_browser, *color_cnv, *colorhex_txt;
+ Ihandle *colortable_cbar, *alpha_val;
+ Ihandle *help_bt;
+
+ cdCanvas* color_cdcanvas, *color_cddbuffer;
+} IcolorDlgData;
+
+
+static void iColorBrowserDlgColorCnvRepaint(IcolorDlgData* colordlg_data)
+{
+ int x, y, w, h, width, height, box_size = 10;
+
+ if (!colordlg_data->color_cddbuffer)
+ return;
+
+ cdCanvasGetSize(colordlg_data->color_cddbuffer, &width, &height, NULL, NULL);
+
+ cdCanvasBackground(colordlg_data->color_cddbuffer, CD_WHITE);
+ cdCanvasClear(colordlg_data->color_cddbuffer);
+
+ w = (width+box_size-1)/box_size;
+ h = (height+box_size-1)/box_size;
+
+ cdCanvasForeground(colordlg_data->color_cddbuffer, CD_GRAY);
+
+ for (y = 0; y < h; y++)
+ {
+ for (x = 0; x < w; x++)
+ {
+ if (((x%2) && (y%2)) || (((x+1)%2) && ((y+1)%2)))
+ {
+ int xmin, xmax, ymin, ymax;
+
+ xmin = x*box_size;
+ xmax = xmin+box_size;
+ ymin = y*box_size;
+ ymax = ymin+box_size;
+
+ cdCanvasBox(colordlg_data->color_cddbuffer, xmin, xmax, ymin, ymax);
+ }
+ }
+ }
+
+ cdCanvasForeground(colordlg_data->color_cddbuffer, colordlg_data->previous_color);
+ cdCanvasBox(colordlg_data->color_cddbuffer, 0, width/2, 0, height);
+
+ cdCanvasForeground(colordlg_data->color_cddbuffer, colordlg_data->color);
+ cdCanvasBox(colordlg_data->color_cddbuffer, width/2+1, width, 0, height);
+
+ cdCanvasFlush(colordlg_data->color_cddbuffer);
+}
+
+static void iColorBrowserDlgHSI2RGB(IcolorDlgData* colordlg_data)
+{
+ iupColorHSI2RGB(colordlg_data->hue, colordlg_data->saturation, colordlg_data->intensity,
+ &colordlg_data->red, &colordlg_data->green, &colordlg_data->blue);
+}
+
+static void iColorBrowserDlgRGB2HSI(IcolorDlgData* colordlg_data)
+{
+ iupColorRGB2HSI(colordlg_data->red, colordlg_data->green, colordlg_data->blue,
+ &(colordlg_data->hue), &(colordlg_data->saturation), &(colordlg_data->intensity));
+}
+
+static void iColorBrowserDlgHex_TXT_Update(IcolorDlgData* colordlg_data)
+{
+ IupSetfAttribute(colordlg_data->colorhex_txt, "VALUE", "#%02X%02X%02X", (int)colordlg_data->red, (int)colordlg_data->green, (int)colordlg_data->blue);
+}
+
+static int iupStrHexToRGB(const char *str, unsigned char *r, unsigned char *g, unsigned char *b)
+{
+ unsigned int ri = 0, gi = 0, bi = 0;
+ if (!str) return 0;
+ if (sscanf(str, "#%2X%2X%2X", &ri, &gi, &bi) != 3) return 0;
+ if (ri > 255 || gi > 255 || bi > 255) return 0;
+ *r = (unsigned char)ri;
+ *g = (unsigned char)gi;
+ *b = (unsigned char)bi;
+ return 1;
+}
+
+/*************************************************\
+* Updates text fields with the current HSI values *
+\*************************************************/
+static void iColorBrowserDlgHSI_TXT_Update(IcolorDlgData* colordlg_data)
+{
+ IupSetfAttribute(colordlg_data->hue_txt, "VALUE", "%d", iupROUND(colordlg_data->hue));
+ IupSetfAttribute(colordlg_data->saturation_txt, "VALUE", "%d", iupROUND(colordlg_data->saturation * 100));
+ IupSetfAttribute(colordlg_data->intensity_txt, "VALUE", "%d", iupROUND(colordlg_data->intensity * 100));
+}
+
+/*************************************************\
+* Updates text fields with the current RGB values *
+\*************************************************/
+static void iColorBrowserDlgRGB_TXT_Update(IcolorDlgData* colordlg_data)
+{
+ IupSetfAttribute(colordlg_data->red_txt, "VALUE", "%d", (int) colordlg_data->red);
+ IupSetfAttribute(colordlg_data->green_txt, "VALUE", "%d", (int) colordlg_data->green);
+ IupSetfAttribute(colordlg_data->blue_txt, "VALUE", "%d", (int) colordlg_data->blue);
+}
+
+static void iColorBrowserDlgBrowserRGB_Update(IcolorDlgData* colordlg_data)
+{
+ IupSetfAttribute(colordlg_data->color_browser, "RGB", "%d %d %d", colordlg_data->red, colordlg_data->green, colordlg_data->blue);
+}
+
+static void iColorBrowserDlgBrowserHSI_Update(IcolorDlgData* colordlg_data)
+{
+ IupSetfAttribute(colordlg_data->color_browser, "HSI", "%f %f %f", (double)colordlg_data->hue, (double)colordlg_data->saturation, (double)colordlg_data->intensity);
+}
+
+/*****************************************\
+* Sets the RGB color in the Color Canvas *
+\*****************************************/
+static void iColorBrowserDlgColor_Update(IcolorDlgData* colordlg_data)
+{
+ colordlg_data->color = cdEncodeColor(colordlg_data->red, colordlg_data->green, colordlg_data->blue);
+ colordlg_data->color = cdEncodeAlpha(colordlg_data->color, colordlg_data->alpha);
+ iColorBrowserDlgColorCnvRepaint(colordlg_data);
+}
+
+static void iColorBrowserDlgHSIChanged(IcolorDlgData* colordlg_data)
+{
+ iColorBrowserDlgHSI2RGB(colordlg_data);
+ iColorBrowserDlgBrowserHSI_Update(colordlg_data);
+ iColorBrowserDlgHex_TXT_Update(colordlg_data);
+ iColorBrowserDlgRGB_TXT_Update(colordlg_data);
+ iColorBrowserDlgColor_Update(colordlg_data);
+}
+
+static void iColorBrowserDlgRGBChanged(IcolorDlgData* colordlg_data)
+{
+ iColorBrowserDlgRGB2HSI(colordlg_data);
+ iColorBrowserDlgBrowserRGB_Update(colordlg_data);
+ iColorBrowserDlgHex_TXT_Update(colordlg_data);
+ iColorBrowserDlgHSI_TXT_Update(colordlg_data);
+ iColorBrowserDlgColor_Update(colordlg_data);
+}
+
+/***********************************************\
+* Initializes the default values to the element *
+\***********************************************/
+static void iColorBrowserDlgInit_Defaults(IcolorDlgData* colordlg_data)
+{
+ char* str = iupStrGetMemory(100);
+ Ihandle* box;
+ int i;
+
+ IupSetAttribute(colordlg_data->color_browser, "RGB", "0 0 0");
+
+ IupSetAttribute(colordlg_data->red_txt, "VALUE", "0");
+ IupSetAttribute(colordlg_data->green_txt, "VALUE", "0");
+ IupSetAttribute(colordlg_data->blue_txt, "VALUE", "0");
+
+ IupSetAttribute(colordlg_data->hue_txt, "VALUE", "0");
+ IupSetAttribute(colordlg_data->saturation_txt, "VALUE", "0");
+ IupSetAttribute(colordlg_data->intensity_txt, "VALUE", "0");
+
+ IupSetAttribute(colordlg_data->colorhex_txt, "VALUE", "#000000");
+
+ colordlg_data->alpha = 255;
+ IupSetAttribute(colordlg_data->alpha_val, "VALUE", "255");
+ IupSetAttribute(colordlg_data->alpha_txt, "VALUE", "255");
+
+ box = IupGetParent(colordlg_data->alpha_val);
+ IupSetAttribute(box, "FLOATING", "YES");
+ IupSetAttribute(box, "VISIBLE", "NO");
+
+ box = IupGetParent(colordlg_data->colortable_cbar);
+ IupSetAttribute(box, "FLOATING", "YES");
+ IupSetAttribute(box, "VISIBLE", "NO");
+
+ box = IupGetParent(colordlg_data->colorhex_txt);
+ IupSetAttribute(box, "FLOATING", "YES");
+ IupSetAttribute(box, "VISIBLE", "NO");
+
+ for(i = 0; i < 20; i++)
+ {
+ sprintf(str, "CELL%d", i);
+ IupSetAttribute(colordlg_data->colortable_cbar, str, default_colortable_cells[i]);
+ }
+}
+
+
+/**************************************************************************************************************/
+/* Internal Callbacks */
+/**************************************************************************************************************/
+
+
+static int iColorBrowserDlgButtonOK_CB(Ihandle* ih)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ colordlg_data->status = 1;
+ return IUP_CLOSE;
+}
+
+static int iColorBrowserDlgButtonCancel_CB(Ihandle* ih)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ colordlg_data->status = 0;
+ return IUP_CLOSE;
+}
+
+static int iColorBrowserDlgButtonHelp_CB(Ihandle* ih)
+{
+ Icallback cb = IupGetCallback(IupGetDialog(ih), "HELP_CB");
+ if (cb && cb(ih) == IUP_CLOSE)
+ {
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ colordlg_data->status = 0;
+ return IUP_CLOSE;
+ }
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgColorCnvRedraw_CB(Ihandle* ih)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ if (!colordlg_data->color_cddbuffer)
+ return IUP_DEFAULT;
+
+ cdCanvasActivate(colordlg_data->color_cddbuffer);
+
+ iColorBrowserDlgColorCnvRepaint(colordlg_data);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgRedAction_CB(Ihandle* ih, int c, char *value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ int vi;
+
+ if (iupStrToInt(value, &vi))
+ {
+ colordlg_data->red = (unsigned char)vi;
+ iColorBrowserDlgRGBChanged(colordlg_data);
+ }
+
+ (void)c;
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgRedSpin_CB(Ihandle* ih, int vi)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ colordlg_data->red = (unsigned char)vi;
+ iColorBrowserDlgRGBChanged(colordlg_data);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgGreenAction_CB(Ihandle* ih, int c, char *value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ int vi;
+
+ if (iupStrToInt(value, &vi))
+ {
+ colordlg_data->green = (unsigned char)vi;
+ iColorBrowserDlgRGBChanged(colordlg_data);
+ }
+
+ (void)c;
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgGreenSpin_CB(Ihandle* ih, int vi)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ colordlg_data->green = (unsigned char)vi;
+ iColorBrowserDlgRGBChanged(colordlg_data);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgBlueAction_CB(Ihandle* ih, int c, char *value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ int vi;
+
+ if (iupStrToInt(value, &vi))
+ {
+ colordlg_data->blue = (unsigned char)vi;
+ iColorBrowserDlgRGBChanged(colordlg_data);
+ }
+
+ (void)c;
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgBlueSpin_CB(Ihandle* ih, int vi)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ colordlg_data->blue = (unsigned char)vi;
+ iColorBrowserDlgRGBChanged(colordlg_data);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgHueAction_CB(Ihandle* ih, int c, char *value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ int vi;
+
+ if (iupStrToInt(value, &vi))
+ {
+ colordlg_data->hue = (float)vi;
+ iColorBrowserDlgHSIChanged(colordlg_data);
+ }
+
+ (void)c;
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgHueSpin_CB(Ihandle* ih, int vi)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ colordlg_data->hue = (float)vi;
+ iColorBrowserDlgHSIChanged(colordlg_data);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgSaturationAction_CB(Ihandle* ih, int c, char *value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ int vi;
+
+ if (iupStrToInt(value, &vi))
+ {
+ colordlg_data->saturation = (float)vi/100.0f;
+ iColorBrowserDlgHSIChanged(colordlg_data);
+ }
+
+ (void)c;
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgSaturationSpin_CB(Ihandle* ih, int vi)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ colordlg_data->saturation = (float)vi/100.0f;
+ iColorBrowserDlgHSIChanged(colordlg_data);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgIntensityAction_CB(Ihandle* ih, int c, char *value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ int vi;
+
+ if (iupStrToInt(value, &vi))
+ {
+ colordlg_data->intensity = (float)vi/100.0f;
+ iColorBrowserDlgHSIChanged(colordlg_data);
+ }
+
+ (void)c;
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgIntensitySpin_CB(Ihandle* ih, int vi)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ colordlg_data->intensity = (float)vi/100.0f;
+ iColorBrowserDlgHSIChanged(colordlg_data);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgHexAction_CB(Ihandle* ih, int c, char* value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ if (iupStrHexToRGB(value, &colordlg_data->red, &colordlg_data->green, &colordlg_data->blue))
+ {
+ iColorBrowserDlgRGB2HSI(colordlg_data);
+ iColorBrowserDlgBrowserRGB_Update(colordlg_data);
+ iColorBrowserDlgHSI_TXT_Update(colordlg_data);
+ iColorBrowserDlgRGB_TXT_Update(colordlg_data);
+ iColorBrowserDlgColor_Update(colordlg_data);
+ }
+
+ (void)c;
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgColorSelDrag_CB(Ihandle* ih, unsigned char r, unsigned char g, unsigned char b)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ colordlg_data->red = r;
+ colordlg_data->green = g;
+ colordlg_data->blue = b;
+
+ iColorBrowserDlgRGB2HSI(colordlg_data);
+ iColorBrowserDlgHex_TXT_Update(colordlg_data);
+ iColorBrowserDlgHSI_TXT_Update(colordlg_data);
+ iColorBrowserDlgRGB_TXT_Update(colordlg_data);
+
+ colordlg_data->color = cdEncodeColor(colordlg_data->red,colordlg_data->green,colordlg_data->blue);
+ colordlg_data->color = cdEncodeAlpha(colordlg_data->color, colordlg_data->alpha);
+ iColorBrowserDlgColorCnvRepaint(colordlg_data);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgAlphaVal_CB(Ihandle* ih, double val)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ colordlg_data->alpha = (unsigned char)val;
+ IupSetfAttribute(colordlg_data->alpha_txt, "VALUE", "%d", (int)colordlg_data->alpha);
+
+ colordlg_data->color = cdEncodeAlpha(colordlg_data->color, colordlg_data->alpha);
+ iColorBrowserDlgColorCnvRepaint(colordlg_data);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgAlphaAction_CB(Ihandle* ih, int c, char* value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ int vi;
+
+ if (iupStrToInt(value, &vi))
+ {
+ colordlg_data->alpha = (unsigned char)vi;
+ IupSetfAttribute(colordlg_data->alpha_val, "VALUE", "%d", (int)colordlg_data->alpha);
+
+ colordlg_data->color = cdEncodeAlpha(colordlg_data->color, colordlg_data->alpha);
+ iColorBrowserDlgColorCnvRepaint(colordlg_data);
+ }
+
+ (void)c;
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgAlphaSpin_CB(Ihandle* ih, int vi)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ colordlg_data->alpha = (unsigned char)vi;
+ IupSetfAttribute(colordlg_data->alpha_val, "VALUE", "%d", (int)colordlg_data->alpha);
+
+ colordlg_data->color = cdEncodeAlpha(colordlg_data->color, colordlg_data->alpha);
+ iColorBrowserDlgColorCnvRepaint(colordlg_data);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgColorTableSelect_CB(Ihandle* ih, int cell, int type)
+{
+ char* str = iupStrGetMemory(30);
+
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ sprintf(str, "CELL%d", cell);
+ iupStrToRGB(IupGetAttribute(ih, str), &colordlg_data->red, &colordlg_data->green, &colordlg_data->blue);
+
+ iColorBrowserDlgRGB_TXT_Update(colordlg_data);
+ iColorBrowserDlgRGBChanged(colordlg_data);
+
+ (void)type;
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgColorCnvButton_CB(Ihandle* ih, int b, int press, int x, int y)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ int width;
+ (void)y;
+
+ if (b != IUP_BUTTON1 || !press || !colordlg_data->color_cddbuffer)
+ return IUP_DEFAULT;
+
+ cdCanvasGetSize(colordlg_data->color_cddbuffer, &width, NULL, NULL, NULL);
+
+ if (x < width/2)
+ {
+ /* reset color to previous */
+ colordlg_data->red = cdRed(colordlg_data->previous_color);
+ colordlg_data->green = cdGreen(colordlg_data->previous_color);
+ colordlg_data->blue = cdBlue(colordlg_data->previous_color);
+ colordlg_data->alpha = cdAlpha(colordlg_data->previous_color);
+
+ IupSetfAttribute(colordlg_data->alpha_txt, "VALUE", "%d", (int)colordlg_data->alpha);
+ IupSetfAttribute(colordlg_data->alpha_val, "VALUE", "%d", (int)colordlg_data->alpha);
+
+ iColorBrowserDlgRGB_TXT_Update(colordlg_data);
+ iColorBrowserDlgRGBChanged(colordlg_data);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgColorCnvMap_CB(Ihandle* ih)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ /* Create Canvas */
+ colordlg_data->color_cdcanvas = cdCreateCanvas(CD_IUP, colordlg_data->color_cnv);
+
+ if (!colordlg_data->color_cdcanvas)
+ return IUP_DEFAULT;
+
+ /* this can fail if canvas size is zero */
+ colordlg_data->color_cddbuffer = cdCreateCanvas(CD_DBUFFERRGB, colordlg_data->color_cdcanvas);
+ return IUP_DEFAULT;
+}
+
+static int iColorBrowserDlgColorCnvUnMap_CB(Ihandle* ih)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ if (colordlg_data->color_cddbuffer)
+ cdKillCanvas(colordlg_data->color_cddbuffer);
+
+ if (colordlg_data->color_cdcanvas)
+ cdKillCanvas(colordlg_data->color_cdcanvas);
+
+ return IUP_DEFAULT;
+}
+
+
+/**************************************************************************************************************/
+/* Attributes */
+/**************************************************************************************************************/
+
+
+static char* iColorBrowserDlgGetStatusAttrib(Ihandle* ih)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ if (colordlg_data->status)
+ return "1";
+ else
+ return NULL;
+}
+
+static int iColorBrowserDlgSetShowHelpAttrib(Ihandle* ih, const char* value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ IupSetAttribute(colordlg_data->help_bt, "VISIBLE", iupStrBoolean(value)? "YES": "NO");
+ return 1;
+}
+
+static int iColorBrowserDlgSetShowHexAttrib(Ihandle* ih, const char* value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ /* valid only before map */
+ if (ih->handle)
+ return 1;
+
+ if (iupStrBoolean(value))
+ {
+ Ihandle* box = IupGetParent(colordlg_data->colorhex_txt);
+ IupSetAttribute(box, "FLOATING", NULL);
+ IupSetAttribute(box, "VISIBLE", "YES");
+ }
+
+ return 1;
+}
+
+static int iColorBrowserDlgSetShowColorTableAttrib(Ihandle* ih, const char* value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ /* valid only before map */
+ if (ih->handle)
+ return 1;
+
+ if (iupStrBoolean(value))
+ {
+ Ihandle* box = IupGetParent(colordlg_data->colortable_cbar);
+ IupSetAttribute(box, "FLOATING", NULL);
+ IupSetAttribute(box, "VISIBLE", "YES");
+ }
+
+ return 1;
+}
+
+static int iColorBrowserDlgSetShowAlphaAttrib(Ihandle* ih, const char* value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ /* valid only before map */
+ if (ih->handle)
+ return 1;
+
+ if (iupStrBoolean(value))
+ {
+ Ihandle* box = IupGetParent(colordlg_data->alpha_val);
+ IupSetAttribute(box, "FLOATING", NULL);
+ IupSetAttribute(box, "VISIBLE", "YES");
+ }
+
+ return 1;
+}
+
+static int iColorBrowserDlgSetAlphaAttrib(Ihandle* ih, const char* value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ int alpha;
+ if (iupStrToInt(value, &alpha))
+ {
+ colordlg_data->alpha = (unsigned char)alpha;
+ IupSetfAttribute(colordlg_data->alpha_txt, "VALUE", "%d", (int)colordlg_data->alpha);
+ IupSetfAttribute(colordlg_data->alpha_val, "VALUE", "%d", (int)colordlg_data->alpha);
+
+ colordlg_data->color = cdEncodeAlpha(colordlg_data->color, colordlg_data->alpha);
+ colordlg_data->previous_color = cdEncodeAlpha(colordlg_data->previous_color, colordlg_data->alpha);
+ iColorBrowserDlgColorCnvRepaint(colordlg_data);
+
+ if (!ih->handle) /* do it only before map */
+ IupSetAttribute(ih, "SHOWALPHA", "YES");
+ }
+
+ return 1;
+}
+
+static char* iColorBrowserDlgGetAlphaAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(100);
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ sprintf(buffer, "%d", (int)colordlg_data->alpha);
+ return buffer;
+}
+
+static int iColorBrowserDlgSetValueAttrib(Ihandle* ih, const char* value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ int ret = iupStrToRGBA(value, &colordlg_data->red, &colordlg_data->green, &colordlg_data->blue, &colordlg_data->alpha);
+ if (!ret)
+ return 0;
+
+ colordlg_data->previous_color = cdEncodeColor(colordlg_data->red, colordlg_data->green, colordlg_data->blue);
+ colordlg_data->previous_color = cdEncodeAlpha(colordlg_data->previous_color, colordlg_data->alpha);
+
+ if (ret == 4)
+ {
+ IupSetfAttribute(colordlg_data->alpha_txt, "VALUE", "%d", (int)colordlg_data->alpha);
+ IupSetfAttribute(colordlg_data->alpha_val, "VALUE", "%d", (int)colordlg_data->alpha);
+
+ if (!ih->handle) /* do it only before map */
+ IupSetAttribute(ih, "SHOWALPHA", "YES");
+ }
+
+ iColorBrowserDlgRGB_TXT_Update(colordlg_data);
+ iColorBrowserDlgRGBChanged(colordlg_data);
+
+ return 0;
+}
+
+static char* iColorBrowserDlgGetValueAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(100);
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ if (iupAttribGetBoolean(ih, "SHOWALPHA"))
+ sprintf(buffer, "%d %d %d %d", (int)colordlg_data->red, (int)colordlg_data->green, (int)colordlg_data->blue, (int)colordlg_data->alpha);
+ else
+ sprintf(buffer, "%d %d %d", (int)colordlg_data->red, (int)colordlg_data->green, (int)colordlg_data->blue);
+ return buffer;
+}
+
+static int iupStrToHSI_Int(const char *str, int *h, int *s, int *i)
+{
+ int fh, fs, fi;
+ if (!str) return 0;
+ if (sscanf(str, "%d %d %d", &fh, &fs, &fi) != 3) return 0;
+ if (fh > 359 || fs > 100 || fi > 100) return 0;
+ if (fh < 0 || fs < 0 || fi < 0) return 0;
+ *h = fh;
+ *s = fs;
+ *i = fi;
+ return 1;
+}
+
+static int iColorBrowserDlgSetValueHSIAttrib(Ihandle* ih, const char* value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ int hue, saturation, intensity;
+
+ if (!iupStrToHSI_Int(value, &hue, &saturation, &intensity))
+ return 0;
+
+ colordlg_data->hue = (float)hue;
+ colordlg_data->saturation = (float)saturation/100.0f;
+ colordlg_data->intensity = (float)intensity/100.0f;
+
+ iColorBrowserDlgHSI2RGB(colordlg_data);
+ colordlg_data->previous_color = cdEncodeColor(colordlg_data->red, colordlg_data->green, colordlg_data->blue);
+ colordlg_data->previous_color = cdEncodeAlpha(colordlg_data->previous_color, colordlg_data->alpha);
+
+ iColorBrowserDlgHSIChanged(colordlg_data);
+ return 0;
+}
+
+static char* iColorBrowserDlgGetValueHSIAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(100);
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ sprintf(buffer, "%d %d %d", (int)colordlg_data->hue, (int)(colordlg_data->saturation*100), (int)(colordlg_data->intensity*100));
+ return buffer;
+}
+
+static int iColorBrowserDlgSetValueHexAttrib(Ihandle* ih, const char* value)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ if (!iupStrHexToRGB(value, &colordlg_data->red, &colordlg_data->green, &colordlg_data->blue))
+ return 0;
+
+ colordlg_data->previous_color = cdEncodeColor(colordlg_data->red, colordlg_data->green, colordlg_data->blue);
+ colordlg_data->previous_color = cdEncodeAlpha(colordlg_data->previous_color, colordlg_data->alpha);
+
+ iColorBrowserDlgRGB2HSI(colordlg_data);
+ iColorBrowserDlgBrowserRGB_Update(colordlg_data);
+ iColorBrowserDlgHSI_TXT_Update(colordlg_data);
+ iColorBrowserDlgRGB_TXT_Update(colordlg_data);
+ iColorBrowserDlgColor_Update(colordlg_data);
+ return 0;
+}
+
+static char* iColorBrowserDlgGetValueHexAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(100);
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ sprintf(buffer, "#%02X%02X%02X", (int)colordlg_data->red, (int)colordlg_data->green, (int)colordlg_data->blue);
+ return buffer;
+}
+
+static char* iColorBrowserDlgGetColorTableAttrib(Ihandle* ih)
+{
+ int i, inc, off = 0;
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ char* color_str, attrib_str[30];
+ char* str = iupStrGetMemory(300);
+ for (i=0; i < 20; i++)
+ {
+ sprintf(attrib_str, "CELL%d", i);
+ color_str = IupGetAttribute(colordlg_data->colortable_cbar, attrib_str);
+ inc = strlen(color_str);
+ memcpy(str+off, color_str, inc);
+ memcpy(str+off+inc, ";", 1);
+ off += inc+1;
+ }
+ str[off-1] = 0; /* remove last separator */
+ return str;
+}
+
+static int iColorBrowserDlgSetColorTableAttrib(Ihandle* ih, const char* value)
+{
+ int i = 0;
+ unsigned char r, g, b;
+ char str[30];
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+
+ if (!ih->handle) /* do it only before map */
+ iColorBrowserDlgSetShowColorTableAttrib(ih, "YES");
+
+ while (value && *value && i < 20)
+ {
+ if (iupStrToRGB(value, &r, &g, &b))
+ {
+ sprintf(str, "CELL%d", i);
+ IupSetfAttribute(colordlg_data->colortable_cbar, str, "%d %d %d", (int)r, (int)g, (int)b);
+ }
+
+ value = strchr(value, ';');
+ if (value) value++;
+ i++;
+ }
+
+ return 1;
+}
+
+
+/**************************************************************************************************************/
+/* Methods */
+/**************************************************************************************************************/
+
+static int iColorBrowserDlgMapMethod(Ihandle* ih)
+{
+ if (!IupGetCallback(ih, "HELP_CB"))
+ {
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ IupSetAttribute(colordlg_data->help_bt, "VISIBLE", "NO");
+ }
+
+ return IUP_NOERROR;
+}
+
+static void iColorBrowserDlgDestroyMethod(Ihandle* ih)
+{
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA");
+ free(colordlg_data);
+}
+
+static int iColorBrowserDlgCreateMethod(Ihandle* ih, void** params)
+{
+ Ihandle *ok_bt, *cancel_bt;
+ Ihandle *rgb_vb, *hsi_vb, *clr_vb;
+ Ihandle *lin1, *lin2, *col1, *col2;
+
+ IcolorDlgData* colordlg_data = (IcolorDlgData*)malloc(sizeof(IcolorDlgData));
+ memset(colordlg_data, 0, sizeof(IcolorDlgData));
+ iupAttribSetStr(ih, "_IUP_GC_DATA", (char*)colordlg_data);
+
+ /* ======================================================================= */
+ /* BUTTONS ============================================================= */
+ /* ======================================================================= */
+ ok_bt = IupButton("OK", NULL); /* Ok Button */
+ IupSetAttribute(ok_bt, "PADDING", "20x0");
+ IupSetCallback (ok_bt, "ACTION", (Icallback)iColorBrowserDlgButtonOK_CB);
+ IupSetAttributeHandle(ih, "DEFAULTENTER", ok_bt);
+
+ cancel_bt = IupButton(iupStrMessageGet("IUP_CANCEL"), NULL); /* Cancel Button */
+ IupSetAttribute(cancel_bt, "PADDING", "20x0");
+ IupSetCallback (cancel_bt, "ACTION", (Icallback)iColorBrowserDlgButtonCancel_CB);
+ IupSetAttributeHandle(ih, "DEFAULTESC", cancel_bt);
+
+ colordlg_data->help_bt = IupButton(iupStrMessageGet("IUP_HELP"), NULL); /* Help Button */
+ IupSetAttribute(colordlg_data->help_bt, "PADDING", "20x0");
+ IupSetCallback (colordlg_data->help_bt, "ACTION", (Icallback)iColorBrowserDlgButtonHelp_CB);
+
+ /* ======================================================================= */
+ /* COLOR =============================================================== */
+ /* ======================================================================= */
+ colordlg_data->color_browser = IupColorBrowser();
+ IupSetAttribute(colordlg_data->color_browser, "EXPAND", "YES");
+ IupSetCallback(colordlg_data->color_browser, "DRAG_CB", (Icallback)iColorBrowserDlgColorSelDrag_CB);
+ IupSetCallback(colordlg_data->color_browser, "CHANGE_CB", (Icallback)iColorBrowserDlgColorSelDrag_CB);
+
+ colordlg_data->color_cnv = IupCanvas(NULL); /* Canvas of the color */
+ IupSetAttribute(colordlg_data->color_cnv, "SIZE", "x12");
+ IupSetAttribute(colordlg_data->color_cnv, "CANFOCUS", "NO");
+ IupSetAttribute(colordlg_data->color_cnv, "EXPAND", "HORIZONTAL");
+ IupSetCallback (colordlg_data->color_cnv, "ACTION", (Icallback)iColorBrowserDlgColorCnvRedraw_CB);
+ IupSetCallback (colordlg_data->color_cnv, "MAP_CB", (Icallback)iColorBrowserDlgColorCnvMap_CB);
+ IupSetCallback (colordlg_data->color_cnv, "UNMAP_CB", (Icallback)iColorBrowserDlgColorCnvUnMap_CB);
+ IupSetCallback (colordlg_data->color_cnv, "BUTTON_CB", (Icallback)iColorBrowserDlgColorCnvButton_CB);
+
+ colordlg_data->colorhex_txt = IupText(NULL); /* Hex of the color */
+ IupSetAttribute(colordlg_data->colorhex_txt, "VISIBLECOLUMNS", "7");
+ IupSetCallback (colordlg_data->colorhex_txt, "ACTION", (Icallback)iColorBrowserDlgHexAction_CB);
+ IupSetAttribute(colordlg_data->colorhex_txt, "MASK", "#[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]");
+
+ /* ======================================================================= */
+ /* ALPHA TRANSPARENCY ================================================== */
+ /* ======================================================================= */
+ colordlg_data->alpha_val = IupVal("HORIZONTAL");
+ IupSetAttribute(colordlg_data->alpha_val, "EXPAND", "HORIZONTAL");
+ IupSetAttribute(colordlg_data->alpha_val, "MIN", "0");
+ IupSetAttribute(colordlg_data->alpha_val, "MAX", "255");
+ IupSetAttribute(colordlg_data->alpha_val, "VALUE", "255");
+ IupSetAttribute(colordlg_data->alpha_val, "SIZE", "80x12");
+ IupSetCallback (colordlg_data->alpha_val, "MOUSEMOVE_CB", (Icallback)iColorBrowserDlgAlphaVal_CB);
+ IupSetCallback (colordlg_data->alpha_val, "BUTTON_PRESS_CB", (Icallback)iColorBrowserDlgAlphaVal_CB);
+ IupSetCallback (colordlg_data->alpha_val, "BUTTON_RELEASE_CB", (Icallback)iColorBrowserDlgAlphaVal_CB);
+
+ colordlg_data->alpha_txt = IupText(NULL); /* Alpha value */
+ IupSetAttribute(colordlg_data->alpha_txt, "VISIBLECOLUMNS", "3");
+ IupSetAttribute(colordlg_data->alpha_txt, "SPIN", "YES");
+ IupSetAttribute(colordlg_data->alpha_txt, "SPINMIN", "0");
+ IupSetAttribute(colordlg_data->alpha_txt, "SPINMAX", "255");
+ IupSetAttribute(colordlg_data->alpha_txt, "SPININC", "1");
+ IupSetCallback (colordlg_data->alpha_txt, "ACTION", (Icallback)iColorBrowserDlgAlphaAction_CB);
+ IupSetCallback (colordlg_data->alpha_txt, "SPIN_CB", (Icallback)iColorBrowserDlgAlphaSpin_CB);
+ IupSetAttribute(colordlg_data->alpha_txt, "MASKINT", "0:255");
+
+ /* ======================================================================= */
+ /* COLOR TABLE ========================================================= */
+ /* ======================================================================= */
+ colordlg_data->colortable_cbar = IupColorbar();
+ IupSetAttribute(colordlg_data->colortable_cbar, "ORIENTATION", "HORIZONTAL");
+ IupSetAttribute(colordlg_data->colortable_cbar, "NUM_PARTS", "2");
+ IupSetAttribute(colordlg_data->colortable_cbar, "NUM_CELLS", "20");
+ IupSetAttribute(colordlg_data->colortable_cbar, "SHOW_PREVIEW", "NO");
+ IupSetAttribute(colordlg_data->colortable_cbar, "SIZE", "138x22");
+ IupSetAttribute(colordlg_data->colortable_cbar, "SQUARED", "NO");
+ IupSetCallback (colordlg_data->colortable_cbar, "SELECT_CB", (Icallback)iColorBrowserDlgColorTableSelect_CB);
+
+ /* ======================================================================= */
+ /* RGB TEXT FIELDS ===================================================== */
+ /* ======================================================================= */
+ colordlg_data->red_txt = IupText(NULL); /* Red value */
+ IupSetAttribute(colordlg_data->red_txt, "VISIBLECOLUMNS", "3");
+ IupSetAttribute(colordlg_data->red_txt, "SPIN", "YES");
+ IupSetAttribute(colordlg_data->red_txt, "SPINMIN", "0");
+ IupSetAttribute(colordlg_data->red_txt, "SPINMAX", "255");
+ IupSetAttribute(colordlg_data->red_txt, "SPININC", "1");
+ IupSetCallback (colordlg_data->red_txt, "ACTION", (Icallback)iColorBrowserDlgRedAction_CB);
+ IupSetCallback (colordlg_data->red_txt, "SPIN_CB", (Icallback)iColorBrowserDlgRedSpin_CB);
+ IupSetAttribute(colordlg_data->red_txt, "MASKINT", "0:255");
+
+ colordlg_data->green_txt = IupText(NULL); /* Green value */
+ IupSetAttribute(colordlg_data->green_txt, "VISIBLECOLUMNS", "3");
+ IupSetAttribute(colordlg_data->green_txt, "SPIN", "YES");
+ IupSetAttribute(colordlg_data->green_txt, "SPINMIN", "0");
+ IupSetAttribute(colordlg_data->green_txt, "SPINMAX", "255");
+ IupSetAttribute(colordlg_data->green_txt, "SPININC", "1");
+ IupSetCallback (colordlg_data->green_txt, "ACTION", (Icallback)iColorBrowserDlgGreenAction_CB);
+ IupSetCallback (colordlg_data->green_txt, "SPIN_CB", (Icallback)iColorBrowserDlgGreenSpin_CB);
+ IupSetAttribute(colordlg_data->green_txt, "MASKINT", "0:255");
+
+ colordlg_data->blue_txt = IupText(NULL); /* Blue value */
+ IupSetAttribute(colordlg_data->blue_txt, "VISIBLECOLUMNS", "3");
+ IupSetAttribute(colordlg_data->blue_txt, "SPIN", "YES");
+ IupSetAttribute(colordlg_data->blue_txt, "SPINMIN", "0");
+ IupSetAttribute(colordlg_data->blue_txt, "SPINMAX", "255");
+ IupSetAttribute(colordlg_data->blue_txt, "SPININC", "1");
+ IupSetCallback (colordlg_data->blue_txt, "ACTION", (Icallback)iColorBrowserDlgBlueAction_CB);
+ IupSetCallback (colordlg_data->blue_txt, "SPIN_CB", (Icallback)iColorBrowserDlgBlueSpin_CB);
+ IupSetAttribute(colordlg_data->blue_txt, "MASKINT", "0:255");
+
+ /* ======================================================================= */
+ /* HSI TEXT FIELDS ===================================================== */
+ /* ======================================================================= */
+ colordlg_data->hue_txt = IupText(NULL); /* Hue value */
+ IupSetAttribute(colordlg_data->hue_txt, "VISIBLECOLUMNS", "3");
+ IupSetAttribute(colordlg_data->hue_txt, "SPIN", "YES");
+ IupSetAttribute(colordlg_data->hue_txt, "SPINMIN", "0");
+ IupSetAttribute(colordlg_data->hue_txt, "SPINMAX", "359");
+ IupSetAttribute(colordlg_data->hue_txt, "SPINWRAP", "YES");
+ IupSetAttribute(colordlg_data->hue_txt, "SPININC", "1");
+ IupSetCallback(colordlg_data->hue_txt, "ACTION", (Icallback)iColorBrowserDlgHueAction_CB);
+ IupSetCallback(colordlg_data->hue_txt, "SPIN_CB", (Icallback)iColorBrowserDlgHueSpin_CB);
+ IupSetAttribute(colordlg_data->hue_txt, "MASKINT", "0:359");
+
+ colordlg_data->saturation_txt = IupText(NULL); /* Saturation value */
+ IupSetAttribute(colordlg_data->saturation_txt, "VISIBLECOLUMNS", "3");
+ IupSetAttribute(colordlg_data->saturation_txt, "SPIN", "YES");
+ IupSetAttribute(colordlg_data->saturation_txt, "SPINMIN", "0");
+ IupSetAttribute(colordlg_data->saturation_txt, "SPINMAX", "100");
+ IupSetAttribute(colordlg_data->saturation_txt, "SPININC", "1");
+ IupSetCallback(colordlg_data->saturation_txt, "ACTION", (Icallback)iColorBrowserDlgSaturationAction_CB);
+ IupSetCallback(colordlg_data->saturation_txt, "SPIN_CB", (Icallback)iColorBrowserDlgSaturationSpin_CB);
+ IupSetAttribute(colordlg_data->saturation_txt, "MASKINT", "0:100");
+
+ colordlg_data->intensity_txt = IupText(NULL); /* Intensity value */
+ IupSetAttribute(colordlg_data->intensity_txt, "VISIBLECOLUMNS", "3");
+ IupSetAttribute(colordlg_data->intensity_txt, "SPIN", "YES");
+ IupSetAttribute(colordlg_data->intensity_txt, "SPINMIN", "0");
+ IupSetAttribute(colordlg_data->intensity_txt, "SPINMAX", "100");
+ IupSetAttribute(colordlg_data->intensity_txt, "SPININC", "1");
+ IupSetCallback(colordlg_data->intensity_txt, "ACTION", (Icallback)iColorBrowserDlgIntensityAction_CB);
+ IupSetCallback(colordlg_data->intensity_txt, "SPIN_CB", (Icallback)iColorBrowserDlgIntensitySpin_CB);
+ IupSetAttribute(colordlg_data->intensity_txt, "MASKINT", "0:100");
+
+ /* =================== */
+ /* 1st line = Controls */
+ /* =================== */
+
+ col1 = IupVbox(colordlg_data->color_browser, IupSetAttributes(IupHbox(colordlg_data->color_cnv, NULL), "MARGIN=30x0"),NULL);
+
+ hsi_vb = IupVbox(IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_HUE")),
+ colordlg_data->hue_txt,
+ NULL), "ALIGNMENT=ACENTER"),
+ IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_SATURATION")),
+ colordlg_data->saturation_txt,
+ NULL), "ALIGNMENT=ACENTER"),
+ IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_INTENSITY")),
+ colordlg_data->intensity_txt,
+ NULL), "ALIGNMENT=ACENTER"),
+ NULL);
+ IupSetAttribute(hsi_vb, "GAP", "5");
+
+ rgb_vb = IupVbox(IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_RED")),
+ colordlg_data->red_txt,
+ NULL), "ALIGNMENT=ACENTER"),
+ IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_GREEN")),
+ colordlg_data->green_txt,
+ NULL), "ALIGNMENT=ACENTER"),
+ IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_BLUE")),
+ colordlg_data->blue_txt,
+ NULL), "ALIGNMENT=ACENTER"),
+ NULL);
+ IupSetAttribute(rgb_vb, "GAP", "5");
+
+ clr_vb = IupVbox(IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_OPACITY")),
+ colordlg_data->alpha_txt, colordlg_data->alpha_val,
+ NULL), "ALIGNMENT=ACENTER"),
+ IupSetAttributes(IupHbox(IupLabel("He&xa:"),
+ colordlg_data->colorhex_txt,
+ NULL), "ALIGNMENT=ACENTER"),
+ IupSetAttributes(IupVbox(IupLabel(iupStrMessageGet("IUP_PALETTE")),
+ colordlg_data->colortable_cbar,
+ NULL), "GAP=3"),
+ NULL);
+ IupSetAttribute(clr_vb, "GAP", "5");
+ IupSetAttribute(clr_vb, "EXPAND", "YES");
+
+ IupDestroy(IupSetAttributes(IupNormalizer(IupGetChild(IupGetChild(hsi_vb, 0), 0), /* Hue Label */
+ IupGetChild(IupGetChild(hsi_vb, 1), 0), /* Saturation Label */
+ IupGetChild(IupGetChild(hsi_vb, 2), 0), /* Intensity Label */
+ IupGetChild(IupGetChild(clr_vb, 0), 0), /* Opacity Label */
+ IupGetChild(IupGetChild(clr_vb, 1), 0), /* Hexa Label */
+ NULL), "NORMALIZE=HORIZONTAL"));
+
+ IupDestroy(IupSetAttributes(IupNormalizer(IupGetChild(IupGetChild(rgb_vb, 0), 0), /* Red Label */
+ IupGetChild(IupGetChild(rgb_vb, 1), 0), /* Green Label */
+ IupGetChild(IupGetChild(rgb_vb, 2), 0), /* Blue Label */
+ NULL), "NORMALIZE=HORIZONTAL"));
+
+ col2 = IupVbox(IupSetAttributes(IupHbox(hsi_vb, IupFill(), rgb_vb, NULL), "EXPAND=YES"),
+ IupSetAttributes(IupLabel(NULL), "SEPARATOR=HORIZONTAL"),
+ clr_vb,
+ NULL);
+ IupSetAttributes(col2, "EXPAND=NO, GAP=10");
+
+ lin1 = IupHbox(col1, col2, NULL);
+ IupSetAttribute(lin1, "GAP", "10");
+ IupSetAttribute(lin1, "MARGIN", "0x0");
+
+ /* ================== */
+ /* 2nd line = Buttons */
+ /* ================== */
+
+ lin2 = IupHbox(IupFill(), ok_bt, cancel_bt, colordlg_data->help_bt, NULL);
+ IupSetAttribute(lin2, "GAP", "5");
+ IupSetAttribute(lin2, "MARGIN", "0x0");
+ IupSetAttribute(lin2, "NORMALIZESIZE", "HORIZONTAL");
+
+ /* Do not use IupAppend because we set childtype=IUP_CHILDNONE */
+ iupChildTreeAppend(ih, IupSetAttributes(IupVbox(lin1, IupSetAttributes(IupLabel(NULL), "SEPARATOR=HORIZONTAL"), lin2, NULL), "MARGIN=10x10, GAP=10"));
+
+ iColorBrowserDlgInit_Defaults(colordlg_data);
+
+ (void)params;
+ return IUP_NOERROR;
+}
+
+Iclass* iupColorBrowserDlgGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupDialogGetClass());
+
+ ic->Create = iColorBrowserDlgCreateMethod;
+ ic->Destroy = iColorBrowserDlgDestroyMethod;
+ ic->Map = iColorBrowserDlgMapMethod;
+
+ ic->name = "colordlg"; /* this will hide the GTK and Windows implementations */
+ ic->nativetype = IUP_TYPEDIALOG;
+ ic->is_interactive = 1;
+ ic->childtype = IUP_CHILDNONE;
+
+ iupClassRegisterAttribute(ic, "COLORTABLE", iColorBrowserDlgGetColorTableAttrib, iColorBrowserDlgSetColorTableAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "STATUS", iColorBrowserDlgGetStatusAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUE", iColorBrowserDlgGetValueAttrib, iColorBrowserDlgSetValueAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ALPHA", iColorBrowserDlgGetAlphaAttrib, iColorBrowserDlgSetAlphaAttrib, IUPAF_SAMEASSYSTEM, "255", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUEHSI", iColorBrowserDlgGetValueHSIAttrib, iColorBrowserDlgSetValueHSIAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUEHEX", iColorBrowserDlgGetValueHexAttrib, iColorBrowserDlgSetValueHexAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOWALPHA", NULL, iColorBrowserDlgSetShowAlphaAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOWCOLORTABLE", NULL, iColorBrowserDlgSetShowColorTableAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOWHEX", NULL, iColorBrowserDlgSetShowHexAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOWHELP", NULL, iColorBrowserDlgSetShowHelpAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
diff --git a/iup/srccontrols/color/iup_colorhsi.c b/iup/srccontrols/color/iup_colorhsi.c
new file mode 100755
index 0000000..ce5e71f
--- /dev/null
+++ b/iup/srccontrols/color/iup_colorhsi.c
@@ -0,0 +1,358 @@
+/** \file
+ * \brief HSI Color Manipulation
+ * Copied and adapted from IM
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#include <math.h>
+#include <stdio.h>
+#include "iup_colorhsi.h"
+
+static const float rad60 = 1.0471975f;
+static const float rad120 = 2.0943951f;
+static const float rad180 = 3.1415926f;
+static const float rad240 = 4.1887902f;
+static const float rad300 = 5.2359877f;
+static const float rad360 = 6.2831853f;
+static const float sqrt3 = 1.7320508f;
+static const float rad2deg = 57.2957795131f;
+
+static float costab[361];
+static float sintab[361];
+static int init_tab = 0;
+
+static void iColorBuildTables(void)
+{
+ int theta;
+ for (theta=0; theta<=360; theta++)
+ {
+ float th = ((float)theta)/rad2deg;
+ costab[theta] = cosf(th);
+ sintab[theta] = sinf(th);
+ }
+ init_tab = 1;
+}
+
+static void iColorSinCos(float H, float *sinH, float *cosH)
+{
+ int theta;
+
+ H *= rad2deg;
+ theta = (int)(H + 0.5f); /* Round */
+
+ if (!init_tab)
+ iColorBuildTables();
+
+ if (theta<0) theta = 0;
+ if (theta>360) theta = 360;
+
+ *cosH = costab[theta];
+ *sinH = sintab[theta];
+}
+
+static float iColorNormHue(float H)
+{
+ while (H < 0.0f)
+ H += rad360;
+
+ if (H > rad360)
+ H = fmodf(H, rad360);
+
+ return H;
+}
+
+static unsigned char iColorQuantize(float value)
+{
+ if (value >= 1.0f) return 255;
+ if (value <= 0.0f) return 0;
+ return (unsigned char)(value*256);
+}
+
+static float iColorReconstruct(unsigned char value)
+{
+ if (value <= 0) return 0.0f;
+ if (value >= 255) return 1.0f;
+ return (((float)value + 0.5f)/256.0f);
+}
+
+static void iColorSmax01(float h, float hr, float hb, float hg, float *h0, float *h1)
+{
+ if (h < rad60)
+ {
+ *h0 = hb;
+ *h1 = hr;
+ }
+ else if (h < rad120)
+ {
+ *h0 = hb;
+ *h1 = hg;
+ }
+ else if (h < rad180)
+ {
+ *h0 = hr;
+ *h1 = hg;
+ }
+ else if (h < rad240)
+ {
+ *h0 = hr;
+ *h1 = hb;
+ }
+ else if (h < rad300)
+ {
+ *h0 = hg;
+ *h1 = hb;
+ }
+ else
+ {
+ *h0 = hg;
+ *h1 = hr;
+ }
+}
+
+/* Given H and I, returns S max, but s is in u,v space. */
+static float iColorHSI_Smax(float h, float cosH, float sinH, float i)
+{
+ float hr, hb, hg, imax, h0, h1;
+
+ /* i here is normalized between 0-1 */
+
+ if (i == 0.0f || i == 1.0f)
+ return 0.0f;
+
+ /* Making r=0, g=0, b=0, r=1, g=1 or b=1 in the parametric equations and
+ writting s in function of H and I. */
+
+ /* at bottom */
+ if (i <= 1.0f/3.0f)
+ {
+ /* face B=0 */
+ if (h < rad120)
+ {
+ hb = (cosH + sinH*sqrt3)/3.0f;
+ return i/hb;
+ }
+
+ /* face R=0 */
+ if (h < rad240)
+ {
+ hr = -cosH/1.5f;
+ return i/hr;
+ }
+
+ /* face G=0 (h < rad360) */
+ {
+ hg = (cosH - sinH*sqrt3)/3.0f;
+ return i/hg;
+ }
+ }
+
+ /* at top */
+ if (i >= 2.0f/3.0f)
+ {
+ /* face R=1 */
+ if (h < rad60 || h > rad300)
+ {
+ hr = cosH/1.5f;
+ return (1.0f-i)/hr;
+ }
+
+ /* face G=1 */
+ if (h < rad180)
+ {
+ hg = (-cosH + sinH*sqrt3)/3.0f;
+ return (1.0f-i)/hg;
+ }
+
+ /* face B=1 (h > rad180 && h < rad300) */
+ {
+ hb = (-cosH - sinH*sqrt3)/3.0f;
+ return (1.0f-i)/hb;
+ }
+ }
+
+ /* in the middle */
+ hr = cosH/1.5f;
+ hg = (-cosH + sinH*sqrt3)/3.0f;
+ hb = (-cosH - sinH*sqrt3)/3.0f;
+
+ iColorSmax01(h, hr, hb, hg, &h0, &h1);
+
+ if (h == 0.0f || h == rad120 || h == rad240)
+ imax = 1.0f/3.0f;
+ else if (h == rad60 || h == rad180 || h == rad300)
+ imax = 2.0f/3.0f;
+ else
+ imax = h0/(h0 - h1);
+
+ if (i < imax)
+ return -i/h0;
+ else
+ return (1.0f-i)/h1;
+}
+
+/* Given H, returns I where S is max,
+ BUT the maximum S here is 1 at the corners of the cube. */
+static float iColorHSI_ImaxS(float h, float cosH, float sinH)
+{
+ float i, h0, h1;
+ float hr, hb, hg;
+
+ /* i here is normalized between 0-1 */
+
+ if (h == 0.0f || h == rad120 || h == rad240)
+ return 1.0f/3.0f;
+
+ if (h == rad60 || h == rad180 || h == rad300)
+ return 2.0f/3.0f;
+
+ hr = cosH/1.5f;
+ hg = (-cosH + sinH*sqrt3)/3.0f;
+ hb = (-cosH - sinH*sqrt3)/3.0f;
+
+ iColorSmax01(h, hr, hb, hg, &h0, &h1);
+
+ i = h0/(h0 - h1);
+
+ return i;
+}
+
+static void iColorRGB2HSI(float r, float g, float b, float *h, float *s, float *i)
+{
+ float v, u, ImaxS;
+
+ /* Parametric equations */
+ v = r - (g + b)/2.0f;
+ u = (g - b) * (sqrt3/2.0f);
+
+ *i = (r + g + b)/3; /* already normalized to 0-1 */
+
+ *s = sqrtf(v*v + u*u); /* s is between 0-1, BUT it is linear in the cube and it is in u,v space. */
+
+ if (*s == 0.0f)
+ {
+ /* *h = <any> (left unchanged) */
+ ImaxS = 1.0f/3.0f;
+ }
+ else
+ {
+ float Smax;
+ float H, cosH, sinH;
+
+ H = atan2f(u, v);
+ H = iColorNormHue(H);
+ *h = H * rad2deg;
+
+ iColorSinCos(H, &sinH, &cosH);
+
+ /* must scale S from 0-Smax to 0-1 */
+ Smax = iColorHSI_Smax(H, cosH, sinH, *i);
+ if (Smax == 0.0f)
+ *s = 0.0f;
+ else
+ {
+ if (*s > Smax) /* because of round problems when calculating s and Smax */
+ *s = Smax;
+ *s /= Smax;
+ }
+
+ ImaxS = iColorHSI_ImaxS((float)H, cosH, sinH);
+ }
+
+ /* must convert I from linear scale to non-linear scale. USED ONLY FOR THE COLORBROWSER */
+ if (*i < 0.5f) /* half I is I=ImaxS, not I=0.5 */
+ *i = ((*i)*0.5f)/ImaxS;
+ else
+ *i = (((*i) - ImaxS)*0.5f)/(1.0f - ImaxS) + 0.5f;
+}
+
+static void iColorHSI2RGB(float h, float s, float i, float *r, float *g, float *b)
+{
+ float cosH, sinH, H, v, u;
+ float Smax, ImaxS;
+
+ if (i < 0) i = 0;
+ else if (i > 1) i = 1;
+
+ if (s < 0) s = 0;
+ else if (s > 1) s = 1;
+
+ if (s == 0.0f || i == 1.0f || i == 0.0f || (int)h == 360)
+ {
+ *r = i;
+ *g = i;
+ *b = i;
+ return;
+ }
+
+ H = h/rad2deg;
+ H = iColorNormHue(H);
+
+ iColorSinCos(H, &sinH, &cosH);
+
+ /* must convert I from non-linear scale to linear scale. USED ONLY FOR THE COLORBROWSER */
+ ImaxS = iColorHSI_ImaxS(H, cosH, sinH);
+ if (i < 0.5f) /* half I is I=ImaxS, not I=0.5 */
+ i = ImaxS * (i / 0.5f);
+ else
+ i = (1.0f - ImaxS) * (i - 0.5f)/0.5f + ImaxS;
+
+ /* must scale S from 0-1 to 0-Smax */
+ Smax = iColorHSI_Smax(H, cosH, sinH, i);
+ s *= Smax;
+ if (s > 1.0f) /* because of round problems when calculating s and Smax */
+ s = 1.0f;
+
+ v = s * cosH;
+ u = s * sinH;
+
+ /* Inverse of the Parametric equations, using i normalized to 0-1 */
+ *r = i + v/1.5f;
+ *g = i - (v - u*sqrt3)/3.0f;
+ *b = i - (v + u*sqrt3)/3.0f;
+
+ /* fix round errors */
+ if (*r < 0.0f) *r = 0;
+ if (*g < 0.0f) *g = 0;
+ if (*b < 0.0f) *b = 0;
+
+ if (*r > 1.0f) *r = 1.0f;
+ if (*g > 1.0f) *g = 1.0f;
+ if (*b > 1.0f) *b = 1.0f;
+}
+
+/*********************************************************************************************/
+
+void iupColorRGB2HSI(unsigned char r, unsigned char g, unsigned char b, float *h, float *s, float *i)
+{
+ float fr = iColorReconstruct(r);
+ float fg = iColorReconstruct(g);
+ float fb = iColorReconstruct(b);
+
+ iColorRGB2HSI(fr, fg, fb, h, s, i);
+}
+
+void iupColorHSI2RGB(float h, float s, float i, unsigned char *r, unsigned char *g, unsigned char *b)
+{
+ float fr, fg, fb;
+
+ iColorHSI2RGB(h, s, i, &fr, &fg, &fb);
+
+ *r = iColorQuantize(fr);
+ *g = iColorQuantize(fg);
+ *b = iColorQuantize(fb);
+}
+
+int iupStrToHSI(const char *str, float *h, float *s, float *i)
+{
+ float fh, fs, fi;
+ if (!str) return 0;
+ if (sscanf(str, "%f %f %f", &fh, &fs, &fi) != 3) return 0;
+ if (fh > 359 || fs > 1 || fi > 1) return 0;
+ if (fh < 0 || fs < 0 || fi < 0) return 0;
+ *h = fh;
+ *s = fs;
+ *i = fi;
+ return 1;
+}
diff --git a/iup/srccontrols/color/iup_colorhsi.h b/iup/srccontrols/color/iup_colorhsi.h
new file mode 100755
index 0000000..b29ea48
--- /dev/null
+++ b/iup/srccontrols/color/iup_colorhsi.h
@@ -0,0 +1,44 @@
+/** \file
+ * \brief HSI Color Manipulation
+ * Copied and adapted from IM
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_COLORHSI_H
+#define __IUP_COLORHSI_H
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/* 0<=H<=359 */
+/* 0<=S<=1 */
+/* 0<=I<=1 */
+
+
+/* Converts from RGB to HSI.
+ */
+void iupColorRGB2HSI(unsigned char r, unsigned char g, unsigned char b, float *h, float *s, float *i);
+
+/* Converts from HSI to RGB.
+ */
+void iupColorHSI2RGB(float h, float s, float i, unsigned char *r, unsigned char *g, unsigned char *b);
+
+int iupStrToHSI(const char *str, float *h, float *s, float *i);
+
+#ifdef IUP_DEFMATHFLOAT
+#define atan2f(_X, _Y) ((float)atan2((double)_X, (double)_Y))
+#define cosf(_X) ((float)cos((double)_X))
+#define fmodf(_X, _Y) ((float)fmod((double)_X, (double)_Y))
+#define sinf(_X) ((float)sin((double)_X))
+#define sqrtf(_X) ((float)sqrt((double)_X))
+#endif
+
+
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/config.mak b/iup/srccontrols/config.mak
new file mode 100755
index 0000000..394d607
--- /dev/null
+++ b/iup/srccontrols/config.mak
@@ -0,0 +1,48 @@
+PROJNAME = iup
+LIBNAME = iupcontrols
+OPT = YES
+
+INCLUDES = ../include ../src .
+
+SRCCOLOR = iup_colorbrowser.c iup_colorhsi.c iup_colorbrowserdlg.c
+SRCCOLOR := $(addprefix color/, $(SRCCOLOR))
+
+SRCMATRIX = iupmat_key.c iupmat_mark.c iupmat_aux.c iupmat_mem.c iupmat_mouse.c iupmat_numlc.c \
+ iupmat_colres.c iupmat_draw.c iupmat_focus.c iupmat_getset.c iupmatrix.c \
+ iupmat_scroll.c iupmat_edit.c
+SRCMATRIX := $(addprefix matrix/, $(SRCMATRIX))
+
+SRC = iup_cdutil.c iup_gauge.c iup_cells.c iup_colorbar.c iup_controls.c \
+ iup_dial.c iup_oldtabs.c iup_oldval.c iup_oldmask.c \
+ $(SRCCOLOR) $(SRCMATRIX)
+
+LIBS = iup iupcd
+LDIR = ../lib/$(TEC_UNAME)
+USE_CD = Yes
+
+# force the definition of math functions using float
+# Some compilers do not define them
+ifeq ($(TEC_UNAME), dll)
+ DEFINES += IUP_DEFMATHFLOAT
+endif
+ifeq ($(TEC_UNAME), vc6)
+ DEFINES += IUP_DEFMATHFLOAT
+endif
+ifeq ($(TEC_UNAME), dll7)
+ DEFINES += IUP_DEFMATHFLOAT
+endif
+ifeq ($(TEC_UNAME), vc7)
+ DEFINES += IUP_DEFMATHFLOAT
+endif
+ifneq ($(findstring ow, $(TEC_UNAME)), )
+ DEFINES += IUP_DEFMATHFLOAT
+endif
+ifneq ($(findstring bc, $(TEC_UNAME)), )
+ DEFINES += IUP_DEFMATHFLOAT
+endif
+ifneq ($(findstring AIX, $(TEC_UNAME)), )
+ DEFINES += IUP_DEFMATHFLOAT
+endif
+ifneq ($(findstring SunOS, $(TEC_UNAME)), )
+ DEFINES += IUP_DEFMATHFLOAT
+endif
diff --git a/iup/srccontrols/iup_cdutil.c b/iup/srccontrols/iup_cdutil.c
new file mode 100755
index 0000000..3ffb15b
--- /dev/null
+++ b/iup/srccontrols/iup_cdutil.c
@@ -0,0 +1,153 @@
+/** \file
+ * \brief cdiuputil. CD and IUP utilities for the IupControls
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#include <stdlib.h>
+#include <stdarg.h>
+
+#include <cd.h>
+
+#include "iup.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_cdutil.h"
+
+
+long cdIupConvertColor(const char *color)
+{
+ unsigned char r, g, b;
+ if (iupStrToRGB(color, &r, &g, &b))
+ return cdEncodeColor(r, g, b);
+ else
+ return 0;
+}
+
+void cdIupCalcShadows(long bgcolor, long *light_shadow, long *mid_shadow, long *dark_shadow)
+{
+ int r, bg_r = cdRed(bgcolor);
+ int g, bg_g = cdGreen(bgcolor);
+ int b, bg_b = cdBlue(bgcolor);
+
+ /* light_shadow */
+
+ int max = bg_r;
+ if (bg_g > max) max = bg_g;
+ if (bg_b > max) max = bg_b;
+
+ if (255-max < 64)
+ {
+ r = 255;
+ g = 255;
+ b = 255;
+ }
+ else
+ {
+ /* preserve some color information */
+ if (bg_r == max) r = 255;
+ else r = bg_r + (255-max);
+ if (bg_g == max) g = 255;
+ else g = bg_g + (255-max);
+ if (bg_b == max) b = 255;
+ else b = bg_b + (255-max);
+ }
+
+ if (light_shadow) *light_shadow = cdEncodeColor((unsigned char)r, (unsigned char)g, (unsigned char)b);
+
+ /* dark_shadow */
+ r = bg_r - 128;
+ g = bg_g - 128;
+ b = bg_b - 128;
+ if (r < 0) r = 0;
+ if (g < 0) g = 0;
+ if (b < 0) b = 0;
+
+ if (dark_shadow) *dark_shadow = cdEncodeColor((unsigned char)r, (unsigned char)g, (unsigned char)b);
+
+ /* mid_shadow = (dark_shadow+bgcolor)/2 */
+ if (mid_shadow) *mid_shadow = cdEncodeColor((unsigned char)((bg_r+r)/2), (unsigned char)((bg_g+g)/2), (unsigned char)((bg_b+b)/2));
+}
+
+void cdIupDrawSunkenRect(cdCanvas *canvas, int x1, int y1, int x2, int y2, long light_shadow, long mid_shadow, long dark_shadow)
+{
+ cdCanvasForeground(canvas, mid_shadow);
+ cdCanvasLine(canvas, x1, y1+1, x1, y2);
+ cdCanvasLine(canvas, x1, y2, x2-1, y2);
+
+ cdCanvasForeground(canvas, dark_shadow);
+ cdCanvasLine(canvas, x1+1, y1+2, x1+1, y2-1);
+ cdCanvasLine(canvas, x1+1, y2-1, x2-2, y2-1);
+
+ cdCanvasForeground(canvas, light_shadow);
+ cdCanvasLine(canvas, x1, y1, x2, y1);
+ cdCanvasLine(canvas, x2, y1, x2, y2);
+}
+
+void cdIupDrawRaisenRect(cdCanvas *canvas, int x1, int y1, int x2, int y2, long light_shadow, long mid_shadow, long dark_shadow)
+{
+ cdCanvasForeground(canvas, light_shadow);
+ cdCanvasLine(canvas, x1, y1+1, x1, y2);
+ cdCanvasLine(canvas, x1, y2, x2-1, y2);
+
+ cdCanvasForeground(canvas, dark_shadow);
+ cdCanvasLine(canvas, x1, y1, x2, y1);
+ cdCanvasLine(canvas, x2, y1, x2, y2);
+
+ cdCanvasForeground(canvas, mid_shadow);
+ cdCanvasLine(canvas, x1+1, y1+1, x2-1, y1+1);
+ cdCanvasLine(canvas, x2-1, y1+2, x2-1, y2-1);
+}
+
+void cdIupDrawVertSunkenMark(cdCanvas *canvas, int x, int y1, int y2, long light_shadow, long dark_shadow)
+{
+ cdCanvasForeground(canvas, dark_shadow);
+ cdCanvasLine(canvas, x-1, y1, x-1, y2);
+ cdCanvasForeground(canvas, light_shadow);
+ cdCanvasLine(canvas, x, y1, x, y2);
+}
+
+void cdIupDrawHorizSunkenMark(cdCanvas *canvas, int x1, int x2, int y, long light_shadow, long dark_shadow)
+{
+ cdCanvasForeground(canvas, dark_shadow);
+ cdCanvasLine(canvas, x1, y+1, x2, y+1);
+ cdCanvasForeground(canvas, light_shadow);
+ cdCanvasLine(canvas, x1, y, x2, y);
+}
+
+void cdIupDrawFocusRect(Ihandle* ih, cdCanvas *canvas, int x1, int y1, int x2, int y2)
+{
+ int y, x, w, h;
+#ifdef WIN32
+ void* gc = cdCanvasGetAttribute(canvas, "HDC");
+#else
+ void* gc = cdCanvasGetAttribute(canvas, "GC");
+#endif
+
+ cdCanvasUpdateYAxis(canvas, &y1);
+ cdCanvasUpdateYAxis(canvas, &y2);
+ y = y1;
+ if (y2<y1) y = y2;
+ x = x1;
+ if (x2<x1) x = x2;
+
+ w = abs(x2-x1)+1;
+ h = abs(y2-y1)+1;
+
+ iupdrvDrawFocusRect(ih, gc, x, y, w, h);
+}
+
+void cdDrawFocusRect(cdCanvas *canvas, int x1, int y1, int x2, int y2)
+{
+ int old_linestyle = cdCanvasLineStyle(canvas, CD_DOTTED);
+ int old_foreground = cdCanvasForeground(canvas, CD_WHITE);
+ int old_writemode = cdCanvasWriteMode(canvas, CD_XOR);
+
+ cdCanvasRect(canvas, x1, x2, y1, y2);
+
+ cdCanvasWriteMode(canvas, old_writemode);
+ cdCanvasForeground(canvas, old_foreground);
+ cdCanvasLineStyle(canvas, old_linestyle);
+}
diff --git a/iup/srccontrols/iup_cdutil.h b/iup/srccontrols/iup_cdutil.h
new file mode 100755
index 0000000..73ad3b4
--- /dev/null
+++ b/iup/srccontrols/iup_cdutil.h
@@ -0,0 +1,35 @@
+/** \file
+ * \brief cdiuputil. CD and IUP utilities for the IupControls
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_CDUTIL_H
+#define __IUP_CDUTIL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void cdIupCalcShadows(long bgcolor, long *light_shadow, long *mid_shadow, long *dark_shadow);
+long cdIupConvertColor(const char *color);
+void cdIupDrawSunkenRect(cdCanvas *canvas, int x1, int y1, int x2, int y2,
+ long light_shadow, long mid_shadow, long dark_shadow);
+void cdIupDrawRaisenRect(cdCanvas *canvas, int x1, int y1, int x2, int y2,
+ long light_shadow, long mid_shadow, long dark_shadow);
+void cdIupDrawVertSunkenMark(cdCanvas *canvas, int x, int y1, int y2, long light_shadow, long dark_shadow);
+void cdIupDrawHorizSunkenMark(cdCanvas *canvas, int x1, int x2, int y, long light_shadow, long dark_shadow);
+void cdIupDrawFocusRect(Ihandle* ih, cdCanvas *canvas, int x1, int y1, int x2, int y2);
+
+void cdDrawFocusRect(cdCanvas *canvas, int x1, int y1, int x2, int y2);
+
+#define cdIupInvertYAxis(_y, _h) ((_h) - (_y) - 1);
+
+#define cdIupLIGTHER(_x) ((unsigned char)(((_x)+ 192)/2))
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/iup_cells.c b/iup/srccontrols/iup_cells.c
new file mode 100755
index 0000000..d9a7fe4
--- /dev/null
+++ b/iup/srccontrols/iup_cells.c
@@ -0,0 +1,974 @@
+/** \file
+ * \brief Cells Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#undef CD_NO_OLD_INTERFACE
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+
+#include <cd.h>
+#include <cdiup.h>
+#include <cddbuf.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_stdcontrols.h"
+#include "iup_controls.h"
+#include "iup_cdutil.h"
+
+
+#define ICELLS_OUT -999
+
+struct _IcontrolData
+{
+ iupCanvas canvas; /* from IupCanvas (must reserve it) */
+
+ cdCanvas* cdcanvas; /* cd canvas for drawing */
+ cdCanvas* cddbuffer; /* image canvas for double buffering */
+ int w; /* control width (pixels) */
+ int h; /* control height (pixels) */
+ int clipped; /* cells bounding box clipping activated */
+ int boxed; /* draw cells bounding box activated */
+ int bufferize; /* bufferize on */
+ int non_scrollable_lins; /* number of non-scrollable lines */
+ int non_scrollable_cols; /* number of non-scrollable columns */
+ long int bgcolor; /* Empty area color and bgcolor */
+};
+
+
+/* Function to inquire application cell data (line height) */
+static int iCellsGetHeight(Ihandle* ih, int i)
+{
+ int size;
+
+ IFni cb = (IFni)IupGetCallback(ih, "HEIGHT_CB");
+ if (!cb)
+ return 30; /* default value */
+
+ size = cb(ih, i);
+ if (size < 0)
+ size = 0;
+
+ return size;
+}
+
+/* Function to inquire application cell data (column width) */
+static int iCellsGetWidth(Ihandle* ih, int j)
+{
+ int size;
+
+ IFni cb = (IFni)IupGetCallback(ih, "WIDTH_CB");
+ if (!cb)
+ return 60; /* default value */
+
+ size = cb(ih, j);
+ if (size < 0)
+ size = 0;
+
+ return size;
+}
+
+/* Function used to calculate a cell limits */
+static int iCellsGetLimits(Ihandle* ih, int i, int j, int* xmin, int* xmax, int* ymin, int* ymax)
+{
+ int result = 1;
+ int xmin_sum = 0;
+ int ymin_sum = 0;
+ int w = ih->data->w;
+ int h = ih->data->h;
+ int _xmin, _xmax, _ymin, _ymax;
+
+ /* Adjusting the inital position according to the cell's type. If it
+ * is non-scrollable, the origin is always zero, otherwise the origin
+ * is the scrollbar position */
+ int posx = (j <= ih->data->non_scrollable_cols)? 0: IupGetInt(ih, "POSX");
+ int posy = (i <= ih->data->non_scrollable_lins)? 0: IupGetInt(ih, "POSY");
+ int idx;
+
+ /* Adding to the origin, the cells' width and height */
+ for (idx = 1; idx < j; idx++)
+ xmin_sum += iCellsGetWidth(ih, idx);
+
+ for (idx = 1; idx < i; idx++)
+ ymin_sum += iCellsGetHeight(ih, idx);
+
+ /* Finding the cell origin */
+ _xmin = xmin_sum - posx;
+ _ymax = h - (ymin_sum - posy) - 1;
+
+ /* Computing the cell limit, based on its origin and size */
+ _xmax = _xmin + iCellsGetWidth(ih, j);
+ _ymin = _ymax - iCellsGetHeight(ih, i);
+
+ /* Checking if the cell is visible */
+ if (_xmax < 0 || _xmin > w || _ymin > h || _ymax < 0)
+ result = 0;
+
+ if (xmin != NULL)
+ *xmin = _xmin;
+
+ if (xmax != NULL)
+ *xmax = _xmax;
+
+ if (ymin != NULL)
+ *ymin = _ymin;
+
+ if (ymax != NULL)
+ *ymax = _ymax;
+
+ return result;
+}
+
+/* Function to inquire application cell data (vertical span) */
+static int iCellsGetVspan(Ihandle* ih, int i, int j)
+{
+ int result = 1; /* default value */
+
+ IFnii cb = (IFnii)IupGetCallback(ih, "VSPAN_CB");
+ if (cb)
+ result = cb(ih, i, j);
+
+ if (result < 0)
+ result = 1;
+
+ return result;
+}
+
+/* Function to inquire application cell data (horizontal span) */
+static int iCellsGetHspan(Ihandle* ih, int i, int j)
+{
+ int result = 1; /* default value */
+
+ IFnii cb = (IFnii)IupGetCallback(ih, "HSPAN_CB");
+ if (cb)
+ result = cb(ih, i, j);
+
+ if (result < 0)
+ result = 1;
+
+ return result;
+}
+
+/* Function to inquire application cell data (#columns) */
+static int iCellsGetNCols(Ihandle* ih)
+{
+ int result = 10; /* default value */
+
+ Icallback cb = IupGetCallback(ih, "NCOLS_CB");
+ if (cb)
+ result = cb(ih);
+
+ if (result < 0)
+ result = 0;
+
+ return result;
+}
+
+/* Function to inquire application cell data (# lines) */
+static int iCellsGetNLines(Ihandle* ih)
+{
+ int result = 10; /* default value */
+
+ Icallback cb = IupGetCallback(ih, "NLINES_CB");
+ if (cb)
+ result = cb(ih);
+
+ if (result < 0)
+ result = 0;
+
+ return result;
+}
+
+/* Recalculation of first visible line */
+static int iCellsGetFirstLine(Ihandle* ih)
+{
+ int i, j;
+ int nlines = iCellsGetNLines(ih);
+ int ncols = iCellsGetNCols(ih);
+
+ if (ih->data->non_scrollable_lins >= nlines)
+ return 1;
+
+ /* Looping the lines until a visible one is found */
+ for (i = 1; i <= nlines; i++) {
+ for (j = 1; j <= ncols; j++) {
+ if (iCellsGetLimits(ih, i, j, NULL, NULL, NULL, NULL))
+ return i;
+ }
+ }
+ return ICELLS_OUT;
+}
+
+/* Recalculation of first visible column */
+static int iCellsGetFirstCol(Ihandle* ih)
+{
+ int i, j;
+ int ncols = iCellsGetNCols(ih);
+ int nlines = iCellsGetNLines(ih);
+
+ if (ih->data->non_scrollable_cols >= ncols)
+ return 1;
+
+ /* Looping the columns until a visible one is found */
+ for (j = 1; j <= ncols; j++) {
+ for (i = 1; i <= nlines; i++) {
+ if (iCellsGetLimits(ih, i, j, NULL, NULL, NULL, NULL))
+ return j;
+ }
+ }
+ return ICELLS_OUT;
+}
+
+/* Function used to get the cells groups virtual size */
+static void iCellsGetVirtualSize(Ihandle* ih, int* wi, int* he)
+{
+ int i, j;
+ *wi = 0; *he = 0;
+
+ /* Looping through all lines and columns, adding its width and heights
+ * to the return values. So, the cells virtual size is computed */
+ for (i = 1; i <= iCellsGetNLines(ih); i++)
+ *he = *he + iCellsGetHeight(ih, i);
+ for (j = 1; j <= iCellsGetNCols(ih); j++)
+ *wi = *wi + iCellsGetWidth(ih, j);
+}
+
+/* Function used to calculate a group of columns height */
+static int iCellsGetRangedHeight(Ihandle* ih, int from, int to)
+{
+ int i;
+ int result = 0;
+
+ /* Looping through a column adding the line height */
+ for (i = from; i <= to; i++)
+ result += iCellsGetHeight(ih, i);
+
+ return result;
+}
+
+/* Function used to calculate a group of lines width */
+static int iCellsGetRangedWidth(Ihandle* ih, int from, int to)
+{
+ int j;
+ int result = 0;
+
+ /* Looping through a column adding the column width */
+ for (j = from; j <= to; j++)
+ result += iCellsGetWidth(ih, j);
+
+ return result;
+}
+
+/* Function used to turn a cell visible */
+static void iCellsSetFullVisible(Ihandle* ih, int i, int j)
+{
+ int xmin, xmax, ymin, ymax;
+ int posx = IupGetInt(ih, "POSX");
+ int posy = IupGetInt(ih, "POSY");
+ int dx = 0;
+ int dy = 0;
+
+ /* Getting the frontiers positions for the visible cell */
+ int min_x = iCellsGetRangedWidth(ih, 1, ih->data->non_scrollable_cols);
+ int max_y = ih->data->h - iCellsGetRangedHeight(ih, 1, ih->data->non_scrollable_lins);
+
+ /* Getting the cell's area limit */
+ iCellsGetLimits(ih, i, j, &xmin, &xmax, &ymin, &ymax);
+
+ /* Adjusting the diference of the scrollbars' position (horizontal) */
+ if (xmax > ih->data->w)
+ dx = xmax - ih->data->w;
+
+ /* Giving priority to xmin position. This can be seen by the usage
+ * of dx at the left part of the expression (using the last dx).
+ * This is the case wher the cell cannot be fitted. */
+ if (xmin - dx < min_x)
+ dx = - (min_x - xmin);
+
+ /* Adjusting the diference of the scrollbars' position (horizontal) */
+ if (ymax > max_y)
+ dy = - (ymax - max_y);
+ if (ymin < 0)
+ dy = -ymin;
+
+ /* Adding the diference to scrollbars' position */
+ posx += dx;
+ posy += dy;
+
+ /* Setting iup scrollbars' attributes */
+ IupSetfAttribute(ih, "POSX", "%d", posx);
+ IupSetfAttribute(ih, "POSY", "%d", posy);
+}
+
+/* Function used to make a cell the first visible one */
+static void iCellsAdjustOrigin(Ihandle* ih, int lin, int col)
+{
+ int xmin_sum, ymin_sum;
+
+ /* If the origin line is a non-scrollable one, the scrollbar position is
+ * set to zero. Otherwise, the sum of the previous widths will be
+ * set to the scrollbar position. This algorithm is applied to both
+ * scrollbars */
+ if (lin <= ih->data->non_scrollable_lins)
+ {
+ IupSetAttribute(ih, "POSY", "0");
+ }
+ else if (lin <= iCellsGetNLines(ih))
+ {
+ ymin_sum = iCellsGetRangedHeight(ih, ih->data->non_scrollable_lins+1, lin-1);
+ IupSetfAttribute(ih, "POSY", "%d", ymin_sum);
+ }
+
+ /* As said before... */
+ if (col <= ih->data->non_scrollable_cols)
+ {
+ IupSetAttribute(ih, "POSX", "0");
+ }
+ else if (col <= iCellsGetNCols(ih))
+ {
+ xmin_sum = iCellsGetRangedWidth(ih, ih->data->non_scrollable_cols+1, col-1);
+ IupSetfAttribute(ih, "POSX", "%d", xmin_sum);
+ }
+}
+
+/* Function used for the scrollbar's update; usually needed when the
+ * object has modified its size or the cells sizes has changed. */
+static void iCellsAdjustScrolls(Ihandle* ih)
+{
+ int virtual_height, virtual_width;
+
+ /* Getting the virtual size */
+ iCellsGetVirtualSize(ih, &virtual_width, &virtual_height);
+
+ IupSetfAttribute(ih, "YMAX", "%d", virtual_height-1);
+ IupSetfAttribute(ih, "XMAX", "%d", virtual_width-1);
+
+ /* Setting the object scrollbar position */
+ IupSetfAttribute(ih, "DY", "%d", ih->data->h);
+ IupSetfAttribute(ih, "DX", "%d", ih->data->w);
+}
+
+/* Function used to call the client; is used when a cell must be repainted. */
+static void iCellsCallDrawCb(Ihandle* ih, int xmin, int xmax, int ymin, int ymax, int i, int j)
+{
+ int cxmin, cxmax, cymin, cymax;
+ int oldxmin, oldxmax, oldymin, oldymax, oldclip;
+ int w = ih->data->w;
+ int h = ih->data->h;
+ IFniiiiii draw_cb;
+ cdCanvas* old_cnv = cdActiveCanvas();
+
+ /* Getting clipping area for post restore */
+ oldclip = cdCanvasClip(ih->data->cddbuffer, CD_QUERY);
+ cdCanvasGetClipArea(ih->data->cddbuffer, &oldxmin, &oldxmax, &oldymin, &oldymax);
+
+ if (ih->data->clipped) /* Clipping the cell area */
+ {
+ cdCanvasClip(ih->data->cddbuffer, CD_CLIPAREA);
+ cxmin = xmin < 0 ? 0 : xmin;
+ cymin = ymin < 0 ? 0 : ymin;
+ cxmax = xmax > w ? w : xmax;
+ cymax = ymax > h ? h : ymax;
+ cdCanvasClipArea(ih->data->cddbuffer, xmin, xmax, ymin, ymax);
+ }
+
+ draw_cb = (IFniiiiii)IupGetCallback(ih, "DRAW_CB");
+ if (draw_cb)
+ {
+ if (old_cnv != ih->data->cddbuffer) /* backward compatibility code */
+ cdActivate(ih->data->cddbuffer);
+
+ draw_cb(ih, i, j, xmin, xmax, ymin, ymax);
+
+ if (old_cnv && old_cnv != ih->data->cddbuffer)
+ {
+ cdActivate(old_cnv);
+ cdCanvasActivate(ih->data->cddbuffer);
+ }
+ }
+
+ cdCanvasClip(ih->data->cddbuffer, oldclip);
+ cdCanvasClipArea(ih->data->cddbuffer, oldxmin, oldxmax, oldymin, oldymax);
+}
+
+/* Render function for one cell in a given coordinate. */
+static void iCellsRenderCellIn(Ihandle* ih, int i, int j, int xmin, int xmax, int ymin, int ymax)
+{
+ int k;
+ int w = ih->data->w;
+ int h = ih->data->h;
+ int hspan = 1;
+ int vspan = 1;
+
+ /* Checking if the cells is out of range. (no span will affect it!) */
+ if (xmin > w || ymax < 0)
+ return;
+
+ /* Calculating cell spans */
+ hspan = iCellsGetHspan(ih, i, j);
+ vspan = iCellsGetVspan(ih, i, j);
+
+ /* if any span is set to zero, then another cell invaded its space and
+ * the cell does not need to draw itself */
+ if (hspan == 0 || vspan == 0)
+ return;
+
+ /* Increasing cell's width and height according to its spans */
+ for(k = 1; k < hspan; k++)
+ xmax += iCellsGetWidth(ih, j+k);
+ for(k = 1; k < vspan; k++)
+ ymin -= iCellsGetHeight(ih, i+k);
+
+ /* Checking if the cell expanded enough to appear inside the canvas */
+ if (xmax < 0 || ymin > h)
+ return;
+
+ /* Calling application's draw callback */
+ iCellsCallDrawCb(ih, xmin, xmax, ymin, ymax, i, j);
+
+ /* Drawing a box in cell's area */
+ if (ih->data->boxed)
+ {
+ cdCanvasForeground(ih->data->cddbuffer, CD_BLACK);
+ cdCanvasRect(ih->data->cddbuffer, xmin, xmax, ymin, ymax);
+ }
+}
+
+/* Repaint function for all cells in a given range */
+static void iCellsRenderRangedCells(Ihandle* ih, int linfrom, int linto, int colfrom, int colto)
+{
+ int i, j;
+ int xmin, xmax, ymin, ymax;
+ int refxmin, refxmax;
+
+ /* Getting first cell limits: this function is slow to be called everytime */
+ iCellsGetLimits(ih, linfrom, colfrom, &xmin, &xmax, &ymin, &ymax);
+
+ /* Initializing current reference position */
+ refxmin = xmin;
+ refxmax = xmax;
+
+ /* Looping through the cells adding next cell width and height */
+ for (i = linfrom; i <= linto; i++)
+ {
+ xmin = refxmin;
+ xmax = refxmax;
+ for (j = colfrom; j <= colto; j++)
+ {
+ iCellsRenderCellIn(ih, i, j, xmin, xmax, ymin, ymax);
+ xmin = xmax;
+ xmax = xmin + (j == colto ? 0 : iCellsGetWidth(ih, j+1));
+ }
+ ymax = ymin;
+ ymin = ymax - (i == linto ? 0 : iCellsGetHeight(ih, i+1));
+ }
+}
+
+/* Repaint function for all cells */
+static void iCellsRenderCells(Ihandle* ih)
+{
+ int sline = ih->data->non_scrollable_lins;
+ int scol = ih->data->non_scrollable_cols;
+ int nlines = iCellsGetNLines(ih);
+ int ncols = iCellsGetNCols(ih);
+
+ cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor);
+ cdCanvasClear(ih->data->cddbuffer);
+
+ /* Repainting the four parts of the cells: common cells, non-scrollable
+ * columns, non-scrollable lines, and non-scrollable margin
+ * (line and column) */
+ iCellsRenderRangedCells(ih, sline+1, nlines, scol+1, ncols);
+ iCellsRenderRangedCells(ih, sline+1, nlines, 1, scol);
+ iCellsRenderRangedCells(ih, 1, sline, scol+1, ncols);
+ iCellsRenderRangedCells(ih, 1, sline, 1, scol);
+}
+
+static void iCellsRepaint(Ihandle* ih)
+{
+ if (ih->data->cddbuffer == NULL)
+ return;
+
+ /* If object is buffering, it will not be drawn */
+ if (ih->data->bufferize == 1)
+ return;
+
+ /* update render */
+ iCellsRenderCells(ih);
+
+ /* update display */
+ cdCanvasFlush(ih->data->cddbuffer);
+}
+
+static int iCellsRedraw_CB(Ihandle* ih)
+{
+ if (ih->data->cddbuffer == NULL)
+ return IUP_DEFAULT;
+
+ /* update display */
+ cdCanvasFlush(ih->data->cddbuffer);
+ return IUP_DEFAULT;
+}
+
+/* Function used to calculate the cell coordinates limited by a hint */
+static int iCellsGetRangedCoord(Ihandle* ih, int x, int y, int* lin, int* col, int linfrom, int linto, int colfrom, int colto)
+{
+ int i, j, k;
+ int hspan, vspan;
+ int rxmax, rymin;
+ int xmin, xmax, ymin, ymax;
+ int refxmin, refxmax;
+ int w = ih->data->w;
+
+ /* Getting the first cell's limit -- based on the range */
+ iCellsGetLimits(ih, linfrom, colfrom, &xmin, &xmax, &ymin, &ymax);
+
+ /* Initializing reference position */
+ refxmin = xmin;
+ refxmax = xmax;
+
+ /* Looping through the cells adding next cell width and height */
+ for (i = linfrom; i <= linto; i++)
+ {
+ xmin = refxmin;
+ xmax = refxmax;
+ if (!(ymax < 0))
+ {
+ for (j = colfrom; j <= colto; j++)
+ {
+ hspan = 1;
+ vspan = 1;
+ if (!(xmin > w))
+ {
+ hspan = iCellsGetHspan(ih, i, j);
+ vspan = iCellsGetVspan(ih, i, j);
+ if (hspan != 0 && vspan != 0)
+ {
+ rxmax = xmax;
+ rymin = ymin;
+ for(k = 1; k < hspan; k++)
+ rxmax += iCellsGetWidth(ih, j+k);
+ for(k = 1; k < vspan; k++)
+ rymin -= iCellsGetHeight(ih, i+k);
+
+ /* A cell was found */
+ if (x >= xmin && x <= rxmax && y >= rymin && y <= ymax)
+ {
+ *lin = i;
+ *col = j;
+ return 1;
+ }
+ }
+ xmin = xmax;
+ xmax = xmin + (j == colto ? 0 : iCellsGetWidth(ih, j+1));
+ }
+ }
+ }
+ ymax = ymin;
+ ymin = ymax - (i == linto ? 0 : iCellsGetHeight(ih, i+1));
+ }
+
+ /* No cell selected... */
+ *lin = ICELLS_OUT;
+ *col = ICELLS_OUT;
+ return 0;
+}
+
+/* Function used to calculate the cell coordinates */
+static int iCellsGetCoord(Ihandle* ih, int x, int y, int* lin, int* col)
+{
+ int pck = 0;
+ int sline = ih->data->non_scrollable_lins;
+ int scol = ih->data->non_scrollable_cols;
+ int nlines = iCellsGetNLines(ih);
+ int ncols = iCellsGetNCols(ih);
+
+ /* Trying to pick a cell (raster coordinates) at the four
+ * parts of the cells (reverse order of the repainting):
+ * non-scrollable margin (line and column), non-scrollable
+ * columns, non-scrollable lines, and common cells. */
+ pck = iCellsGetRangedCoord(ih, x, y, lin, col, 1, sline, 1, scol);
+ if (pck)
+ return 1;
+
+ pck = iCellsGetRangedCoord(ih, x, y, lin, col, 1, sline, scol+1, ncols);
+ if (pck)
+ return 1;
+
+ pck = iCellsGetRangedCoord(ih, x, y, lin, col, sline+1, nlines, 1, scol);
+ if (pck)
+ return 1;
+
+ pck = iCellsGetRangedCoord(ih, x, y, lin, col, 1, nlines, 1, ncols);
+ return pck;
+}
+
+static int iCellsScroll_CB(Ihandle* ih)
+{
+ IFnii cb;
+ int ret = IUP_DEFAULT;
+ int fline = -999;
+ int fcol = -999;
+
+ fline = iCellsGetFirstLine(ih);
+ fcol = iCellsGetFirstCol(ih);
+
+ /* Checking the existence of a scroll bar callback. If the application
+ * has set one, it will be called now. If the application returns
+ * IUP_DEFAULT, the cells will be repainted. */
+ cb = (IFnii)IupGetCallback(ih, "SCROLLING_CB");
+ if (cb)
+ ret = cb(ih, fline, fcol);
+
+ if (ret == IUP_DEFAULT)
+ iCellsRepaint(ih);
+
+ return IUP_DEFAULT;
+}
+
+static int iCellsMotion_CB(Ihandle* ih, int x, int y, char* r)
+{
+ int i, j;
+
+ /* Checking the existence of a motion bar callback. If the application
+ * has set one, it will be called now. However, before calling the
+ * callback, we need to find out which cell is under the mouse
+ * position. */
+ IFniiiis cb = (IFniiiis)IupGetCallback(ih, "MOUSEMOTION_CB");
+ if (!cb)
+ return IUP_DEFAULT;
+
+ iCellsGetCoord(ih, x, y, &i, &j);
+ return cb(ih, i, j, x, y, r);
+}
+
+static int iCellsResize_CB(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ {
+ /* update canvas size */
+ cdCanvasActivate(ih->data->cdcanvas);
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+ }
+
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update canvas size */
+ cdCanvasActivate(ih->data->cddbuffer);
+ cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL);
+
+ /* recalculate scrollbars positions and size */
+ iCellsAdjustScrolls(ih);
+
+ /* update render */
+ iCellsRenderCells(ih);
+
+ return IUP_DEFAULT;
+}
+
+static int iCellsButton_CB(Ihandle* ih, int b, int m, int x, int y, char* r)
+{
+ int i, j;
+ IFniiiiiis cb;
+
+ y = cdIupInvertYAxis(y, ih->data->h);
+
+ /* Treating the button event. The application will receive
+ * a button press callback. */
+ cb = (IFniiiiiis)IupGetCallback(ih, "MOUSECLICK_CB");
+ if (!cb)
+ return IUP_DEFAULT;
+
+ iCellsGetCoord(ih, x, y, &i, &j);
+ return cb(ih, b, m, i, j, x, y, r);
+}
+
+static char* iCellsGetImageCanvasAttrib(Ihandle* ih)
+{
+ return (char*)ih->data->cddbuffer;
+}
+
+static char* iCellsGetCanvasAttrib(Ihandle* ih)
+{
+ return (char*)ih->data->cdcanvas;
+}
+
+static char* iCellsGetFirstLineAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(80);
+ sprintf( buffer, "%d", iCellsGetFirstLine(ih) );
+ return buffer;
+}
+
+static char* iCellsGetFirstColAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(80);
+ sprintf(buffer, "%d", iCellsGetFirstCol(ih) );
+ return buffer;
+}
+
+static char* iCellsGetLimitsAttrib(Ihandle* ih, const char* name_id)
+{
+ char* buffer = iupStrGetMemory(80);
+ int xmin, xmax, ymin, ymax;
+ int i, j;
+
+ if (iupStrToIntInt(name_id, &i, &j, ':') != 2)
+ return NULL;
+
+ iCellsGetLimits(ih, i, j, &xmin, &xmax, &ymin, &ymax);
+ sprintf(buffer, "%d:%d:%d:%d", xmin, xmax, ymin, ymax);
+ return buffer;
+}
+
+static int iCellsSetBufferizeAttrib(Ihandle* ih, const char* value)
+{
+ if (value == NULL || iupStrEqualNoCase(value, "NO"))
+ {
+ ih->data->bufferize = 0;
+ iCellsAdjustScrolls(ih);
+ iCellsRepaint(ih);
+ }
+ else
+ ih->data->bufferize = 1;
+
+ return 0;
+}
+
+static char* iCellsGetBufferizeAttrib(Ihandle* ih)
+{
+ if (ih->data->bufferize)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iCellsSetRepaintAttrib(Ihandle* ih, const char* value)
+{
+ (void)value; /* not used */
+ ih->data->bufferize = 0;
+ iCellsAdjustScrolls(ih);
+ iCellsRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static int iCellsSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ value = iupControlBaseGetParentBgColor(ih);
+
+ ih->data->bgcolor = cdIupConvertColor(value);
+
+ iCellsRepaint(ih);
+ return 1;
+}
+
+static int iCellsSetOriginAttrib(Ihandle* ih, const char* value)
+{
+ int lin = -9;
+ int col = -9;
+ iupStrToIntInt(value, &lin, &col, ':');
+ iCellsAdjustOrigin(ih, lin, col);
+ iCellsRepaint(ih);
+ return 1;
+}
+
+static int iCellsSetNonScrollableColsAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrToInt(value, &ih->data->non_scrollable_cols))
+ iCellsRepaint(ih);
+ return 0;
+}
+
+static char* iCellsGetNonScrollableColsAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(80);
+ sprintf(buffer, "%d", ih->data->non_scrollable_cols);
+ return buffer;
+}
+
+static int iCellsSetNonScrollableLinesAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrToInt(value, &ih->data->non_scrollable_lins))
+ iCellsRepaint(ih);
+ return 0;
+}
+
+static char* iCellsGetNonScrollableLinesAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(80);
+ sprintf(buffer, "%d", ih->data->non_scrollable_lins);
+ return buffer;
+}
+
+static int iCellsSetBoxedAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "NO"))
+ ih->data->boxed = 0;
+ else
+ ih->data->boxed = 1;
+
+ iCellsRepaint(ih);
+ return 0;
+}
+
+static char* iCellsGetBoxedAttrib(Ihandle* ih)
+{
+ if (ih->data->boxed)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iCellsSetClippedAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "NO"))
+ ih->data->clipped = 0;
+ else
+ ih->data->clipped = 1;
+
+ iCellsRepaint(ih);
+ return 0;
+}
+
+static char* iCellsGetClippedAttrib(Ihandle* ih)
+{
+ if (ih->data->clipped)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iCellsSetFullVisibleAttrib(Ihandle* ih, const char* value)
+{
+ int i, j;
+ if (iupStrToIntInt(value, &i, &j, ':') != 2)
+ return 0;
+
+ iCellsSetFullVisible(ih, i, j);
+ iCellsRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+
+/****************************************************************************/
+
+
+static int iCellsMapMethod(Ihandle* ih)
+{
+ ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih);
+ if (!ih->data->cdcanvas)
+ return IUP_ERROR;
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+
+ return IUP_NOERROR;
+}
+
+static void iCellsUnMapMethod(Ihandle* ih)
+{
+ if (ih->data->cddbuffer)
+ cdKillCanvas(ih->data->cddbuffer);
+
+ if (ih->data->cdcanvas)
+ cdKillCanvas(ih->data->cdcanvas);
+}
+
+static int iCellsCreateMethod(Ihandle* ih, void **params)
+{
+ (void)params;
+
+ /* free the data allocated by IupCanvas */
+ if (ih->data) free(ih->data);
+ ih->data = iupALLOCCTRLDATA();
+
+ /* change the IupCanvas default values */
+ iupAttribSetStr(ih, "SCROLLBAR", "YES");
+ iupAttribSetStr(ih, "BORDER", "NO");
+
+ /* default values */
+ ih->data->boxed = 1;
+ ih->data->clipped = 1;
+
+ /* IupCanvas callbacks */
+ IupSetCallback(ih, "RESIZE_CB", (Icallback)iCellsResize_CB);
+ IupSetCallback(ih, "ACTION", (Icallback)iCellsRedraw_CB);
+ IupSetCallback(ih, "BUTTON_CB", (Icallback)iCellsButton_CB);
+ IupSetCallback(ih, "MOTION_CB", (Icallback)iCellsMotion_CB);
+ IupSetCallback(ih, "SCROLL_CB", (Icallback)iCellsScroll_CB);
+
+ return IUP_NOERROR;
+}
+
+Iclass* iupCellsGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupCanvasGetClass());
+
+ ic->name = "cells";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPECANVAS;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+ ic->has_attrib_id = 1; /* has attributes with IDs that must be parsed */
+
+ /* Class functions */
+ ic->Create = iCellsCreateMethod;
+ ic->Map = iCellsMapMethod;
+ ic->UnMap = iCellsUnMapMethod;
+
+ /* Do not need to set base attributes because they are inherited from IupCanvas */
+
+ /* IupCells Callbacks */
+ iupClassRegisterCallback(ic, "SCROLLING_CB", "ii");
+ iupClassRegisterCallback(ic, "MOUSEMOTION_CB", "iiiis");
+ iupClassRegisterCallback(ic, "MOUSECLICK_CB", "iiiiiis");
+ iupClassRegisterCallback(ic, "DRAW_CB", "iiiiiiv");
+ iupClassRegisterCallback(ic, "VSPAN_CB", "ii");
+ iupClassRegisterCallback(ic, "HSPAN_CB", "ii");
+ iupClassRegisterCallback(ic, "NCOLS_CB", "");
+ iupClassRegisterCallback(ic, "NLINES_CB", "");
+ iupClassRegisterCallback(ic, "HEIGHT_CB", "i");
+ iupClassRegisterCallback(ic, "WIDTH_CB", "i");
+
+ /* IupCells only */
+ iupClassRegisterAttribute(ic, "BOXED", iCellsGetBoxedAttrib, iCellsSetBoxedAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "CLIPPED", iCellsGetClippedAttrib, iCellsSetClippedAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "NON_SCROLLABLE_LINES", iCellsGetNonScrollableLinesAttrib, iCellsSetNonScrollableLinesAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "NON_SCROLLABLE_COLS", iCellsGetNonScrollableColsAttrib, iCellsSetNonScrollableColsAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "NO_COLOR", iupControlBaseGetBgColorAttrib, iCellsSetBgColorAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "BUFFERIZE", iCellsGetBufferizeAttrib, iCellsSetBufferizeAttrib, NULL, NULL, IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "ORIGIN", NULL, iCellsSetOriginAttrib, NULL, NULL, IUPAF_DEFAULT);
+
+ iupClassRegisterAttribute(ic, "FULL_VISIBLE", NULL, iCellsSetFullVisibleAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "REPAINT", NULL, iCellsSetRepaintAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "LIMITS", iCellsGetLimitsAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FIRST_COL", iCellsGetFirstColAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FIRST_LINE", iCellsGetFirstLineAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IMAGE_CANVAS", iCellsGetImageCanvasAttrib, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_READONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CANVAS", iCellsGetCanvasAttrib, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_READONLY|IUPAF_NO_INHERIT);
+
+ /* Overwrite IupCanvas Attributes */
+ iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iCellsSetBgColorAttrib, NULL, "255 255 255", IUPAF_NO_INHERIT); /* overwrite canvas implementation, set a system default to force a new default */
+
+ return ic;
+}
+
+Ihandle* IupCells(void)
+{
+ return IupCreate("cells");
+}
diff --git a/iup/srccontrols/iup_colorbar.c b/iup/srccontrols/iup_colorbar.c
new file mode 100755
index 0000000..72e717c
--- /dev/null
+++ b/iup/srccontrols/iup_colorbar.c
@@ -0,0 +1,1082 @@
+/** \file
+ * \brief Colorbar Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+
+#include <cd.h>
+#include <cdiup.h>
+#include <cddbuf.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_stdcontrols.h"
+#include "iup_controls.h"
+#include "iup_image.h"
+#include "iup_cdutil.h"
+
+
+#define ICOLORBAR_DEFAULT_NUM_CELLS 16 /* default number of cells */
+#define ICOLORBAR_NO_COLOR 0xff000000 /* no color */
+#define ICOLORBAR_DELTA 5 /* preview margin */
+#define ICOLORBAR_RENDER_ALL -1
+#define ICOLORBAR_RENDER_NONE -2
+
+
+struct _IcontrolData
+{
+ iupCanvas canvas; /* from IupCanvas (must reserve it) */
+
+ int w; /* size of the canvas - width */
+ int h; /* size of the canvas - height */
+ cdCanvas* cdcanvas; /* cd canvas for drawing */
+ cdCanvas* cddbuffer; /* image canvas for double buffering */
+ long int colors[256]; /* CD color vector */
+ int num_cells; /* number of cells at the widgets */
+ int num_parts; /* number of sections used to split the colors cells area */
+ int vertical; /* vertical orientation flag */
+ int squared; /* square cells attribute flag */
+ int shadowed; /* 3D shadowed attribute flag */
+ long bgcolor; /* control background color */
+ long light_shadow; /* } */
+ long mid_shadow; /* } 3D shadowed color */
+ long dark_shadow; /* } */
+ int bufferize; /* bufferation flag */
+ long int transparency; /* transparency color */
+ int show_secondary; /* secondary color selction flag */
+ int preview_size; /* preview size (pixels) 0=disabled, -1=automatic */
+ int fgcolor_idx; /* current primary index selected */
+ int bgcolor_idx; /* current secondary index selected */
+ int focus_cell; /* cell with focus */
+ int has_focus; /* 1 if the control has the focus, else 0 */
+};
+
+/* Default colors used for a widget */
+static struct {
+ unsigned int r;
+ unsigned int g;
+ unsigned int b;
+} default_colors[ICOLORBAR_DEFAULT_NUM_CELLS] = {
+ { 0, 0, 0 }, { 128, 0, 0 }, { 0, 128, 0 }, { 128, 128, 0 },
+ { 0, 0, 128 }, { 128, 0, 128 }, { 0, 128, 128 }, { 192, 192, 192 },
+ { 128, 128, 128 }, { 255, 0, 0 }, { 0, 255, 0 }, { 255, 255, 0 },
+ { 0, 0, 255 }, { 255, 0, 255 }, { 0, 255, 255 }, { 255, 255, 255 }
+};
+
+
+/* This function draw the 3D cell effect. */
+static void iColorbarDrawSunken(Ihandle* ih, int xmin, int xmax, int ymin, int ymax)
+{
+ if (!ih->data->shadowed) return;
+ cdIupDrawSunkenRect(ih->data->cddbuffer, xmin, ymin, xmax, ymax, ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow);
+}
+
+/* This function is used to draw a box for a cell. */
+static void iColorbarDrawBox(Ihandle* ih, int xmin, int xmax, int ymin, int ymax, int idx)
+{
+ long int color = ih->data->colors[idx];
+ cdCanvasInteriorStyle(ih->data->cddbuffer, CD_SOLID);
+
+ if (color == ih->data->transparency)
+ {
+ int xm = (xmin+xmax)/2;
+ int ym = (ymin+ymax)/2;
+ cdCanvasForeground(ih->data->cddbuffer,0xeeeeee);
+ cdCanvasBox(ih->data->cddbuffer,xmin, xm, ymin, ym);
+ cdCanvasBox(ih->data->cddbuffer,xm, xmax, ym, ymax);
+ cdCanvasForeground(ih->data->cddbuffer,0xcccccc);
+ cdCanvasBox(ih->data->cddbuffer,xmin, xm, ym, ymax);
+ cdCanvasBox(ih->data->cddbuffer,xm, xmax, ymin, ym);
+ }
+ else
+ {
+ if (!iupdrvIsActive(ih))
+ {
+ unsigned char r, g, b, bg_r, bg_g, bg_b;
+ cdDecodeColor(color, &r, &g, &b);
+ cdDecodeColor(ih->data->bgcolor, &bg_r, &bg_g, &bg_b);
+ iupImageColorMakeInactive(&r, &g, &b, bg_r, bg_g, bg_b);
+ color = cdEncodeColor(r, g, b);
+ }
+ cdCanvasForeground(ih->data->cddbuffer,color);
+ cdCanvasBegin(ih->data->cddbuffer,CD_FILL);
+ cdCanvasVertex(ih->data->cddbuffer,xmin, ymin); cdCanvasVertex(ih->data->cddbuffer,xmin, ymax);
+ cdCanvasVertex(ih->data->cddbuffer,xmax, ymax); cdCanvasVertex(ih->data->cddbuffer,xmax, ymin);
+ cdCanvasEnd(ih->data->cddbuffer);
+ }
+
+ cdCanvasForeground(ih->data->cddbuffer,CD_BLACK);
+ cdCanvasBegin(ih->data->cddbuffer,CD_CLOSED_LINES);
+ cdCanvasVertex(ih->data->cddbuffer,xmin, ymin); cdCanvasVertex(ih->data->cddbuffer,xmin, ymax);
+ cdCanvasVertex(ih->data->cddbuffer,xmax, ymax); cdCanvasVertex(ih->data->cddbuffer,xmax, ymin);
+ cdCanvasEnd(ih->data->cddbuffer);
+}
+
+/* This function is used to get the largest square of a cell bounding box. */
+static void iColorbarFitSquare(int* xmin, int* xmax, int* ymin, int* ymax)
+{
+ int mx = (*xmax + *xmin) / 2;
+ int my = (*ymax + *ymin) / 2;
+ int dx = (*xmax - *xmin) / 2;
+ int dy = (*ymax - *ymin) / 2;
+
+ if (dx < dy)
+ {
+ *ymin = my - dx;
+ *ymax = my + dx;
+ }
+ else
+ {
+ *xmin = mx - dy;
+ *xmax = mx + dy;
+ }
+}
+
+/* This function is used to get the preview area bounding box. */
+static void iColorbarGetPreviewLimit(Ihandle* ih, int* xmin, int* xmax, int* ymin, int* ymax)
+{
+ int num_itens = ih->data->num_cells / ih->data->num_parts + 1; /* include space for preview area */
+
+ *xmin = 0; *ymin = 0;
+ if (ih->data->vertical)
+ {
+ *xmax = ih->data->w;
+ if (ih->data->preview_size > 0)
+ *ymax = *ymin + ih->data->preview_size;
+ else
+ *ymax = ih->data->h / num_itens;
+ }
+ else
+ {
+ *ymax = ih->data->h;
+ if (ih->data->preview_size > 0)
+ *xmax = *xmin + ih->data->preview_size;
+ else
+ *xmax = ih->data->w / num_itens;
+ }
+ if (ih->data->squared)
+ iColorbarFitSquare(xmin, xmax, ymin, ymax);
+}
+
+/* This function is used to get a cell bounding box. */
+static void iColorbarGetCellLimit(Ihandle* ih, int idx, int* xmin, int* xmax, int* ymin, int* ymax)
+{
+ int delta, dummy;
+ int wcell, hcell;
+ int px = 0, py = 0;
+ int posx, posy;
+ int num_itens = ih->data->num_cells / ih->data->num_parts;
+
+ if (ih->data->preview_size != 0)
+ iColorbarGetPreviewLimit(ih, &dummy, &px, &dummy, &py);
+
+ if (ih->data->vertical) /* Vertical orientation */
+ {
+ wcell = ih->data->w / ih->data->num_parts;
+ hcell = (ih->data->h - py) / num_itens;
+ posx = idx / num_itens;
+ posy = idx % num_itens;
+ if (ih->data->squared)
+ {
+ wcell = wcell < hcell ? wcell : hcell;
+ hcell = wcell;
+ }
+ delta = (ih->data->w - (ih->data->num_parts*wcell)) / 2;
+ *xmin = delta + (posx+0)*wcell;
+ *xmax = delta + (posx+1)*wcell;
+ *ymin = py + (posy+0)*hcell;
+ *ymax = py + (posy+1)*hcell;
+ }
+ else /* Horizontal orientation */
+ {
+ hcell = ih->data->h / ih->data->num_parts;
+ wcell = (ih->data->w - px) / num_itens;
+ posx = idx % num_itens;
+ posy = idx / num_itens;
+ if (ih->data->squared)
+ {
+ wcell = wcell < hcell ? wcell : hcell;
+ hcell = wcell;
+ }
+ delta = (ih->data->h - (ih->data->num_parts * hcell)) / 2;
+ *xmin = px + (posx + 0) * wcell;
+ *xmax = px + (posx + 1) * wcell;
+ *ymin = delta + (posy + 0) * hcell;
+ *ymax = delta + (posy + 1) * hcell;
+ }
+}
+
+/* This function is used to get the index color of a canvas coordinate. */
+static int iColorbarGetIndexColor(Ihandle* ih, int x, int y)
+{
+ int i;
+ int xmin, ymin;
+ int xmax, ymax;
+ int result = -9;
+
+ for (i = 0; i < ih->data->num_cells; i++)
+ {
+ iColorbarGetCellLimit(ih, i, &xmin, &xmax, &ymin, &ymax);
+ if (x > xmin && x < xmax && y > ymin && y < ymax)
+ {
+ result = i;
+ break;
+ }
+ }
+ return result;
+}
+
+/* This function is used to repaint the preview area. */
+static void iColorbarRenderPreview(Ihandle* ih)
+{
+ int delta = ICOLORBAR_DELTA;
+ int xmin, ymin;
+ int xmax, ymax;
+ int xhalf, yhalf;
+ int bg = ih->data->bgcolor_idx;
+ int fg = ih->data->fgcolor_idx;
+
+ if (ih->data->preview_size == 0)
+ return;
+
+ iColorbarGetPreviewLimit(ih, &xmin, &xmax, &ymin, &ymax);
+
+ if (xmax-xmin < delta || ymax-ymin < delta)
+ delta = 0;
+
+ if (ih->data->show_secondary)
+ {
+ xhalf = 2 * (xmax - xmin - 2 * delta) / 3 + delta;
+ yhalf = 2 * (ymax - ymin - 2 * delta) / 3 + delta;
+
+ iColorbarDrawBox(ih, xmax - xhalf, xmax - delta, ymin + delta, ymin + yhalf, bg);
+ iColorbarDrawBox(ih, xmin + delta, xmin + xhalf, ymax - yhalf, ymax - delta, fg);
+ }
+ else
+ {
+ iColorbarDrawBox(ih, xmin + delta, xmax - delta, ymin + delta, ymax - delta, fg);
+ }
+}
+
+static void iColorbarDrawFocusCell(Ihandle* ih)
+{
+ int delta = 4;
+ int xmin, ymin;
+ int xmax, ymax;
+
+ iColorbarGetCellLimit(ih, ih->data->focus_cell, &xmin, &xmax, &ymin, &ymax);
+ xmin += delta;
+ xmax -= delta;
+ ymin += delta;
+ ymax -= delta;
+
+ cdIupDrawFocusRect(ih, ih->data->cdcanvas, xmin, ymin, xmax, ymax);
+}
+
+/* This function is used to repaint a cell. */
+static void iColorbarRenderCell(Ihandle* ih, int idx)
+{
+ int delta = 2;
+ int xmin, ymin;
+ int xmax, ymax;
+
+ iColorbarGetCellLimit(ih, idx, &xmin, &xmax, &ymin, &ymax);
+ xmin += delta;
+ xmax -= delta;
+ ymin += delta;
+ ymax -= delta;
+
+ iColorbarDrawBox(ih, xmin, xmax, ymin, ymax, idx);
+ iColorbarDrawSunken(ih, xmin, xmax, ymin, ymax);
+}
+
+/* This function loops all cells, repainting them. */
+static void iColorbarRenderCells(Ihandle* ih)
+{
+ int i;
+ for (i = 0; i < ih->data->num_cells; i++)
+ iColorbarRenderCell(ih, i);
+}
+
+static void iColorbarRepaint(Ihandle* ih)
+{
+ /* Checking errors or not initialized conditions */
+ if (ih->data->cddbuffer == NULL)
+ return;
+
+ /* If object is buffering, it will be not drawn */
+ if (ih->data->bufferize == 1)
+ return;
+
+ /* update render */
+ cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor);
+ cdCanvasClear(ih->data->cddbuffer);
+ iColorbarRenderPreview(ih);
+ iColorbarRenderCells(ih);
+
+ /* update display */
+ cdCanvasFlush(ih->data->cddbuffer);
+ if (ih->data->has_focus)
+ iColorbarDrawFocusCell(ih);
+}
+
+static int iColorbarCheckPreview(Ihandle* ih, int x, int y)
+{
+ int xmin, ymin;
+ int xmax, ymax;
+ int xhalf, yhalf;
+ int delta = ICOLORBAR_DELTA;
+
+ iColorbarGetPreviewLimit(ih, &xmin, &xmax, &ymin, &ymax);
+
+ if (ih->data->show_secondary)
+ {
+ xhalf = 2 * (xmax - xmin - 2 * delta) / 3 + delta;
+ yhalf = 2 * (ymax - ymin - 2 * delta) / 3 + delta;
+
+ if (x > xmin+delta && x < xmin+xhalf && y > ymax-yhalf && y < ymax-delta)
+ return IUP_PRIMARY;
+ if (x > xmax-xhalf && x < xmax-delta && y > ymin+delta && y < ymin+yhalf)
+ return IUP_SECONDARY;
+ if (x > xmin && x < xmax && y > ymin && y < ymax)
+ return 1; /* switch */
+ }
+ else
+ {
+ if (x > xmin+delta && x < xmax-delta && y > ymin+delta && y < ymax-delta)
+ return IUP_PRIMARY;
+ }
+
+ return 0;
+}
+
+static int iColorbarSetNumPartsAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrToInt(value, &ih->data->num_parts))
+ iColorbarRepaint(ih);
+ return 0;
+}
+
+static char* iColorbarGetNumPartsAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(100);
+ sprintf(buffer, "%d", ih->data->num_parts);
+ return buffer;
+}
+
+static int iColorbarSetPrimaryCellAttrib(Ihandle* ih, const char* value)
+{
+ int new_val;
+ if (iupStrToInt(value, &new_val))
+ {
+ if (new_val > 0 && new_val < ih->data->num_cells)
+ {
+ ih->data->fgcolor_idx = new_val;
+ iColorbarRepaint(ih);
+ }
+ }
+ return 0;
+}
+
+static char* iColorbarGetPrimaryCellAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(100);
+ sprintf(buffer, "%d", ih->data->fgcolor_idx);
+ return buffer;
+}
+
+static int iColorbarSetSecondaryCellAttrib(Ihandle* ih, const char* value)
+{
+ int new_val;
+ if (iupStrToInt(value, &new_val))
+ {
+ if (new_val > 0 && new_val < ih->data->num_cells)
+ {
+ ih->data->bgcolor_idx = new_val;
+ iColorbarRepaint(ih);
+ }
+ }
+
+ return 0;
+}
+
+static char* iColorbarGetSecondaryCellAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(100);
+ sprintf(buffer, "%d", ih->data->bgcolor_idx);
+ return buffer;
+}
+
+static int iColorbarSetBufferizeAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "NO"))
+ {
+ ih->data->bufferize = 0;
+ iColorbarRepaint(ih);
+ }
+ else
+ ih->data->bufferize = 1;
+
+ return 0;
+}
+
+static char* iColorbarGetBufferizeAttrib(Ihandle* ih)
+{
+ if (ih->data->bufferize)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iColorbarSetNumCellsAttrib(Ihandle* ih, const char* value)
+{
+ int new_val;
+ if (iupStrToInt(value, &new_val))
+ {
+ if (new_val > 0 && new_val <= 256)
+ {
+ ih->data->num_cells = new_val;
+
+ if (ih->data->fgcolor_idx >= ih->data->num_cells)
+ ih->data->fgcolor_idx = ih->data->num_cells - 1;
+
+ if (ih->data->bgcolor_idx >= ih->data->num_cells)
+ ih->data->bgcolor_idx = ih->data->num_cells - 1;
+
+ iColorbarRepaint(ih);
+ }
+ }
+ return 0;
+}
+
+static char* iColorbarGetNumCellsAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(100);
+ sprintf(buffer, "%d", ih->data->num_cells);
+ return buffer;
+}
+
+static int iColorbarSetOrientationAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "HORIZONTAL"))
+ ih->data->vertical = 0;
+ else
+ ih->data->vertical = 1;
+
+ iColorbarRepaint(ih);
+ return 0;
+}
+
+static char* iColorbarGetOrientationAttrib(Ihandle* ih)
+{
+ if (ih->data->vertical)
+ return "VERTICAL";
+ else
+ return "HORIZONTAL";
+}
+
+static int iColorbarSetSquaredAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "NO"))
+ ih->data->squared = 0;
+ else
+ ih->data->squared = 1;
+
+ iColorbarRepaint(ih);
+ return 0;
+}
+
+static char* iColorbarGetSquaredAttrib(Ihandle* ih)
+{
+ if (ih->data->squared)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iColorbarSetShadowedAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "NO"))
+ ih->data->shadowed = 0;
+ else
+ ih->data->shadowed = 1;
+
+ iColorbarRepaint(ih);
+ return 0;
+}
+
+static char* iColorbarGetShadowedAttrib(Ihandle* ih)
+{
+ if (ih->data->shadowed)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iColorbarSetShowSecondaryAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "NO"))
+ ih->data->show_secondary = 0;
+ else
+ ih->data->show_secondary = 1;
+
+ iColorbarRepaint(ih);
+ return 0;
+}
+
+static char* iColorbarGetShowSecondaryAttrib(Ihandle* ih)
+{
+ if (ih->data->show_secondary)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iColorbarSetShowPreviewAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "NO"))
+ ih->data->preview_size = 0;
+ else
+ ih->data->preview_size = -1; /* reset to automatic */
+
+ iColorbarRepaint(ih);
+ return 1;
+}
+
+static int iColorbarSetPreviewSizeAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrToInt(value, &ih->data->preview_size))
+ iColorbarRepaint(ih);
+ return 0;
+}
+
+static char* iColorbarGetPreviewSizeAttrib(Ihandle* ih)
+{
+ if (ih->data->preview_size == -1) /* automatic */
+ return NULL;
+ else
+ {
+ char* buffer = iupStrGetMemory(100);
+ sprintf(buffer, "%d", ih->data->preview_size);
+ return buffer;
+ }
+}
+
+static int iColorbarSetCellAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int idx = -1;
+ iupStrToInt(name_id, &idx);
+ if (idx >= 0 || idx < ih->data->num_cells)
+ {
+ ih->data->colors[idx] = cdIupConvertColor(value);
+ iColorbarRepaint(ih);
+ }
+
+ return 0;
+}
+
+static char* iColorbarGetCellAttrib(Ihandle* ih, const char* name_id)
+{
+ char* buffer = iupStrGetMemory(100);
+ int idx = -1;
+ long color;
+
+ iupStrToInt(name_id, &idx);
+ if (idx < 0 || idx >= ih->data->num_cells)
+ return NULL;
+
+ color = ih->data->colors[idx];
+ sprintf(buffer, "%d %d %d", cdRed(color), cdGreen(color), cdBlue(color));
+ return buffer;
+}
+
+static int iColorbarSetTransparencyAttrib(Ihandle* ih, const char* value)
+{
+ if (value == NULL)
+ ih->data->transparency = ICOLORBAR_NO_COLOR;
+ else
+ ih->data->transparency = cdIupConvertColor(value);
+
+ iColorbarRepaint(ih);
+ return 0;
+}
+
+static char* iColorbarGetTransparencyAttrib(Ihandle* ih)
+{
+ if (ih->data->transparency == ICOLORBAR_NO_COLOR)
+ return NULL;
+ else
+ {
+ char* buffer = iupStrGetMemory(100);
+ sprintf(buffer, "%d %d %d", cdRed(ih->data->transparency), cdGreen(ih->data->transparency), cdBlue(ih->data->transparency));
+ return buffer;
+ }
+}
+
+static int iColorbarSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ value = iupControlBaseGetParentBgColor(ih);
+
+ ih->data->bgcolor = cdIupConvertColor(value);
+
+ cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow);
+ if (!iupdrvIsActive(ih))
+ ih->data->light_shadow = ih->data->mid_shadow;
+
+ iColorbarRepaint(ih);
+ return 1;
+}
+
+static int iColorbarSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ iupBaseSetActiveAttrib(ih, value);
+
+ cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow);
+ if (!iupdrvIsActive(ih))
+ ih->data->light_shadow = ih->data->mid_shadow;
+
+ iColorbarRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static int iColorbarRedraw_CB(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update display */
+ cdCanvasFlush(ih->data->cddbuffer);
+ if (ih->data->has_focus)
+ iColorbarDrawFocusCell(ih);
+
+ return IUP_DEFAULT;
+}
+
+static int iColorbarResize_CB(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ {
+ /* update canvas size */
+ cdCanvasActivate(ih->data->cdcanvas);
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+ }
+
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update size */
+ cdCanvasActivate(ih->data->cddbuffer);
+ cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL);
+
+ /* update render */
+ cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor);
+ cdCanvasClear(ih->data->cddbuffer);
+ iColorbarRenderPreview(ih);
+ iColorbarRenderCells(ih);
+
+ return IUP_DEFAULT;
+}
+
+static void iColorbarRenderPartsRepaint(Ihandle* ih, int preview, int idx)
+{
+ /* update render */
+ if (preview)
+ iColorbarRenderPreview(ih);
+
+ if (idx != ICOLORBAR_RENDER_NONE)
+ {
+ if (idx == ICOLORBAR_RENDER_ALL)
+ iColorbarRenderCells(ih);
+ else
+ iColorbarRenderCell(ih, idx);
+ }
+
+ /* update display */
+ cdCanvasFlush(ih->data->cddbuffer);
+ if (ih->data->has_focus)
+ iColorbarDrawFocusCell(ih);
+}
+
+static int iColorbarFocus_CB(Ihandle* ih, int focus)
+{
+ ih->data->has_focus = focus;
+
+ if (ih->data->cddbuffer)
+ {
+ cdCanvasFlush(ih->data->cddbuffer);
+ if (ih->data->has_focus)
+ iColorbarDrawFocusCell(ih);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static void iColorbarCallExtentedCb(Ihandle* ih, int idx)
+{
+ IFni extended_cb = (IFni)IupGetCallback(ih, "EXTENDED_CB");
+ if (!extended_cb)
+ return;
+
+ if (extended_cb(ih, idx) == IUP_IGNORE)
+ return;
+
+ iColorbarRenderPartsRepaint(ih, 1, ICOLORBAR_RENDER_ALL); /* the preview and all the cells are rendered */
+}
+
+static void iColorbarCallSelectCb(Ihandle* ih, int idx, int type)
+{
+ IFnii select_cb;
+
+ if (type == IUP_SECONDARY && !ih->data->show_secondary)
+ return;
+
+ select_cb = (IFnii)IupGetCallback(ih, "SELECT_CB");
+ if (!select_cb)
+ return;
+
+ if (select_cb(ih, idx, type) == IUP_IGNORE)
+ return;
+
+ if (type == IUP_PRIMARY)
+ ih->data->fgcolor_idx = idx;
+ else
+ ih->data->bgcolor_idx = idx;
+
+ iColorbarRenderPartsRepaint(ih, 1, ICOLORBAR_RENDER_NONE); /* only the preview area is rendered */
+}
+
+static void iColorbarCallCellCb(Ihandle* ih, int idx)
+{
+ char* returned;
+ sIFni cell_cb = (sIFni)IupGetCallback(ih, "CELL_CB");
+ if (!cell_cb)
+ return;
+
+ returned = cell_cb(ih, idx); /* the application can change the color */
+ if (returned)
+ {
+ int preview = 0;
+ /* check if the preview area should be rendered */
+ if (idx == ih->data->fgcolor_idx || idx == ih->data->bgcolor_idx)
+ preview = 1;
+
+ ih->data->colors[idx] = cdIupConvertColor(returned);
+ iColorbarRenderPartsRepaint(ih, preview, idx); /* the preview and the cell are rendered */
+ }
+}
+
+static int iColorbarKeyPress_CB(Ihandle* ih, int c, int press)
+{
+ if (c != K_LEFT && c != K_UP && c != K_RIGHT && c != K_DOWN &&
+ c != K_HOME && c != K_END &&
+ c != K_SP && c != K_sCR && c != K_sSP && c != K_cSP)
+ return IUP_DEFAULT;
+
+ if (!press || !ih->data->has_focus)
+ return IUP_DEFAULT;
+
+ switch(c)
+ {
+ case K_LEFT:
+ if (ih->data->vertical)
+ {
+ int cells_per_line = ih->data->num_cells / ih->data->num_parts;
+ if (ih->data->focus_cell > cells_per_line)
+ ih->data->focus_cell -= cells_per_line;
+ }
+ else
+ {
+ if (ih->data->focus_cell > 0)
+ ih->data->focus_cell--;
+ }
+ break;
+ case K_DOWN:
+ if (ih->data->vertical)
+ {
+ if (ih->data->focus_cell > 0)
+ ih->data->focus_cell--;
+ }
+ else
+ {
+ int cells_per_line = ih->data->num_cells / ih->data->num_parts;
+ if (ih->data->focus_cell > cells_per_line)
+ ih->data->focus_cell -= cells_per_line;
+ }
+ break;
+ case K_RIGHT:
+ if (ih->data->vertical)
+ {
+ int cells_per_line = ih->data->num_cells / ih->data->num_parts;
+ if (ih->data->focus_cell+cells_per_line < ih->data->num_cells-1)
+ ih->data->focus_cell += cells_per_line;
+ }
+ else
+ {
+ if (ih->data->focus_cell < ih->data->num_cells-1)
+ ih->data->focus_cell++;
+ }
+ break;
+ case K_UP:
+ if (ih->data->vertical)
+ {
+ if (ih->data->focus_cell < ih->data->num_cells-1)
+ ih->data->focus_cell++;
+ }
+ else
+ {
+ int cells_per_line = ih->data->num_cells / ih->data->num_parts;
+ if (ih->data->focus_cell+cells_per_line < ih->data->num_cells-1)
+ ih->data->focus_cell += cells_per_line;
+ }
+ break;
+ case K_HOME:
+ ih->data->focus_cell = 0;
+ break;
+ case K_END:
+ ih->data->focus_cell = ih->data->num_cells-1;
+ break;
+ case K_sCR:
+ iColorbarCallCellCb(ih, ih->data->focus_cell);
+ return IUP_DEFAULT;
+ case K_SP:
+ iColorbarCallSelectCb(ih, ih->data->focus_cell, IUP_PRIMARY);
+ return IUP_DEFAULT;
+ case K_cSP:
+ iColorbarCallSelectCb(ih, ih->data->focus_cell, IUP_SECONDARY);
+ return IUP_DEFAULT;
+ case K_sSP:
+ iColorbarCallExtentedCb(ih, ih->data->focus_cell);
+ return IUP_DEFAULT;
+ }
+
+ if (ih->data->cddbuffer)
+ {
+ cdCanvasFlush(ih->data->cddbuffer);
+ if (ih->data->has_focus)
+ iColorbarDrawFocusCell(ih);
+ }
+
+ return IUP_IGNORE; /* to avoid arrow keys being processed by the system */
+}
+
+static int iColorbarButton_CB(Ihandle* ih, int b, int m, int x, int y, char* r)
+{
+ int idx;
+
+ if (m == 0)
+ return IUP_DEFAULT;
+
+ y = cdIupInvertYAxis(y, ih->data->h);
+
+ if (b == IUP_BUTTON1 && iup_isdouble(r))
+ {
+ idx = iColorbarGetIndexColor(ih, x, y);
+ if (idx < 0 || idx >= ih->data->num_cells)
+ {
+ int ret = iColorbarCheckPreview(ih, x, y);
+ if (ret)
+ {
+ if (ret == 1)
+ {
+ IFnii switch_cb = (IFnii)IupGetCallback(ih, "SWITCH_CB");
+
+ if (!ih->data->show_secondary)
+ return IUP_DEFAULT;
+
+ if (switch_cb && switch_cb(ih, ih->data->fgcolor_idx, ih->data->bgcolor_idx) == IUP_IGNORE)
+ return IUP_DEFAULT;
+
+ /* the application allow to switch the indices */
+ idx = ih->data->fgcolor_idx;
+ ih->data->fgcolor_idx = ih->data->bgcolor_idx;
+ ih->data->bgcolor_idx = idx;
+
+ iColorbarRenderPartsRepaint(ih, 1, ICOLORBAR_RENDER_NONE); /* only the preview area is rendered */
+ }
+ else
+ {
+ if (ret == IUP_PRIMARY)
+ idx = ih->data->fgcolor_idx;
+ else
+ idx = ih->data->bgcolor_idx;
+
+ iColorbarCallCellCb(ih, idx);
+ }
+ }
+
+ return IUP_DEFAULT;
+ }
+
+ ih->data->focus_cell = idx;
+
+ iColorbarCallCellCb(ih, idx);
+ }
+ else if (b == IUP_BUTTON1)
+ {
+ idx = iColorbarGetIndexColor(ih, x, y);
+ if (idx < 0 || idx >= ih->data->num_cells)
+ return IUP_DEFAULT;
+
+ ih->data->focus_cell = idx;
+
+ iColorbarCallSelectCb(ih, idx, IUP_PRIMARY);
+ }
+ else if (b == IUP_BUTTON3 && iup_isshift(r))
+ {
+ idx = iColorbarGetIndexColor(ih, x, y);
+ if (idx < 0 || idx >= ih->data->num_cells)
+ return IUP_DEFAULT;
+
+ ih->data->focus_cell = idx;
+
+ iColorbarCallExtentedCb(ih, idx);
+ }
+ else if (b == IUP_BUTTON3)
+ {
+ idx = iColorbarGetIndexColor(ih, x, y);
+ if (idx < 0 || idx >= ih->data->num_cells)
+ return IUP_DEFAULT;
+
+ ih->data->focus_cell = idx;
+
+ iColorbarCallSelectCb(ih, idx, IUP_SECONDARY);
+ }
+
+ return IUP_DEFAULT;
+}
+
+
+/****************************************************************************/
+
+
+static int iColorbarMapMethod(Ihandle* ih)
+{
+ ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih);
+ if (!ih->data->cdcanvas)
+ return IUP_ERROR;
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+
+ return IUP_NOERROR;
+}
+
+static void iColorbarUnMapMethod(Ihandle* ih)
+{
+ if (ih->data->cddbuffer)
+ cdKillCanvas(ih->data->cddbuffer);
+
+ if (ih->data->cdcanvas)
+ cdKillCanvas(ih->data->cdcanvas);
+}
+
+static int iColorbarCreateMethod(Ihandle* ih, void **params)
+{
+ int i;
+ (void)params;
+
+ /* free the data allocated by IupCanvas */
+ if (ih->data) free(ih->data);
+ ih->data = iupALLOCCTRLDATA();
+
+ /* change the IupCanvas default values */
+ iupAttribSetStr(ih, "BORDER", "NO");
+
+ /* default values */
+ ih->data->num_cells = 16;
+ ih->data->num_parts = 1;
+ ih->data->vertical = 1;
+ ih->data->squared = 1;
+ ih->data->shadowed = 1;
+ ih->data->focus_cell = 0;
+ ih->data->preview_size = -1; /* automatic */
+ ih->data->fgcolor_idx = 0; /* black */
+ ih->data->bgcolor_idx = 15; /* white */
+ ih->data->transparency = ICOLORBAR_NO_COLOR;
+ ih->data->light_shadow = CD_WHITE;
+ ih->data->mid_shadow = CD_GRAY;
+ ih->data->dark_shadow = CD_DARK_GRAY;
+
+ /* Initialization of the color vector */
+ for (i = 0; i < ICOLORBAR_DEFAULT_NUM_CELLS; i++)
+ {
+ ih->data->colors[i] = cdEncodeColor((unsigned char)default_colors[i].r,
+ (unsigned char)default_colors[i].g,
+ (unsigned char)default_colors[i].b);
+ }
+
+ /* IupCanvas callbacks */
+ IupSetCallback(ih, "RESIZE_CB", (Icallback)iColorbarResize_CB);
+ IupSetCallback(ih, "ACTION", (Icallback)iColorbarRedraw_CB);
+ IupSetCallback(ih, "BUTTON_CB", (Icallback)iColorbarButton_CB);
+ IupSetCallback(ih, "FOCUS_CB", (Icallback)iColorbarFocus_CB);
+ IupSetCallback(ih, "KEYPRESS_CB", (Icallback)iColorbarKeyPress_CB);
+
+ return IUP_NOERROR;
+}
+
+Iclass* iupColorbarGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupCanvasGetClass());
+
+ ic->name = "colorbar";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPECANVAS;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+ ic->has_attrib_id = 1; /* has attributes with IDs that must be parsed */
+
+ /* Class functions */
+ ic->Create = iColorbarCreateMethod;
+ ic->Map = iColorbarMapMethod;
+ ic->UnMap = iColorbarUnMapMethod;
+
+ /* Do not need to set base attributes because they are inherited from IupCanvas */
+
+ /* IupColorbar Callbacks */
+ iupClassRegisterCallback(ic, "CELL_CB", "i=s");
+ iupClassRegisterCallback(ic, "SWITCH_CB", "ii");
+ iupClassRegisterCallback(ic, "SELECT_CB", "ii");
+ iupClassRegisterCallback(ic, "EXTENDED_CB", "i");
+
+ /* IupColorbar only */
+ iupClassRegisterAttributeId(ic, "CELL", iColorbarGetCellAttrib, iColorbarSetCellAttrib, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "NUM_CELLS", iColorbarGetNumCellsAttrib, iColorbarSetNumCellsAttrib, IUPAF_SAMEASSYSTEM, "16", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "NUM_PARTS", iColorbarGetNumPartsAttrib, iColorbarSetNumPartsAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "PREVIEW_SIZE", iColorbarGetPreviewSizeAttrib, iColorbarSetPreviewSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "PRIMARY_CELL", iColorbarGetPrimaryCellAttrib, iColorbarSetPrimaryCellAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SECONDARY_CELL", iColorbarGetSecondaryCellAttrib, iColorbarSetSecondaryCellAttrib, IUPAF_SAMEASSYSTEM, "15", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "BUFFERIZE", iColorbarGetBufferizeAttrib, iColorbarSetBufferizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "ORIENTATION", iColorbarGetOrientationAttrib, iColorbarSetOrientationAttrib, IUPAF_SAMEASSYSTEM, "VERTICAL", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "TRANSPARENCY", iColorbarGetTransparencyAttrib, iColorbarSetTransparencyAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "SHOW_PREVIEW", NULL, iColorbarSetShowPreviewAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "SHOW_SECONDARY", iColorbarGetShowSecondaryAttrib, iColorbarSetShowSecondaryAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "SQUARED", iColorbarGetSquaredAttrib, iColorbarSetSquaredAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "SHADOWED", iColorbarGetShadowedAttrib, iColorbarSetShadowedAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED);
+
+ /* Overwrite IupCanvas Attributes */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iColorbarSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iColorbarSetBgColorAttrib, NULL, "255 255 255", IUPAF_NO_INHERIT); /* overwrite canvas implementation, set a system default to force a new default */
+
+ return ic;
+}
+
+Ihandle *IupColorbar(void)
+{
+ return IupCreate("colorbar");
+}
diff --git a/iup/srccontrols/iup_controls.c b/iup/srccontrols/iup_controls.c
new file mode 100755
index 0000000..e60bd91
--- /dev/null
+++ b/iup/srccontrols/iup_controls.c
@@ -0,0 +1,56 @@
+/** \file
+ * \brief initializes the additional controls.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+#include "iup_object.h"
+#include "iup_childtree.h"
+#include "iup_register.h"
+#include "iup_controls.h"
+#include "iup_attrib.h"
+
+
+int IupControlsOpen(void)
+{
+ if (IupGetGlobal("_IUP_CONTROLS_OPEN"))
+ return IUP_OPENED;
+
+ iupRegisterClass(iupDialGetClass());
+ iupRegisterClass(iupCellsGetClass());
+ iupRegisterClass(iupColorbarGetClass());
+ iupRegisterClass(iupColorBrowserGetClass());
+ iupRegisterClass(iupMatrixGetClass());
+ iupRegisterClass(iupGaugeGetClass());
+ iupRegisterClass(iupColorBrowserDlgGetClass());
+
+ IupSetGlobal("_IUP_CONTROLS_OPEN", "1");
+
+ return IUP_NOERROR;
+}
+
+void IupControlsClose(void) /* for backward compatibility */
+{
+}
+
+char *iupControlBaseGetParentBgColor(Ihandle* ih)
+{
+ return IupGetAttribute(iupChildTreeGetNativeParent(ih), "BGCOLOR");
+}
+
+char *iupControlBaseGetBgColorAttrib(Ihandle* ih)
+{
+ /* check the hash table */
+ char *color = iupAttribGet(ih, "BGCOLOR");
+
+ /* If not defined check native definition from parent */
+ if (!color)
+ color = iupControlBaseGetParentBgColor(ih);
+
+ return color;
+}
+
diff --git a/iup/srccontrols/iup_controls.h b/iup/srccontrols/iup_controls.h
new file mode 100755
index 0000000..bb26963
--- /dev/null
+++ b/iup/srccontrols/iup_controls.h
@@ -0,0 +1,33 @@
+/** \file
+ * \brief Additional Controls Class Initialization functions.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUP_CONTROLS_H
+#define __IUP_CONTROLS_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+Iclass* iupDialGetClass(void);
+Iclass* iupCellsGetClass(void);
+Iclass* iupColorbarGetClass(void);
+Iclass* iupColorBrowserGetClass(void);
+Iclass* iupMatrixGetClass(void);
+Iclass* iupGaugeGetClass(void);
+Iclass* iupTabsGetClass(void);
+Iclass* iupColorBrowserDlgGetClass(void);
+
+char *iupControlBaseGetParentBgColor (Ihandle* ih);
+char *iupControlBaseGetBgColorAttrib(Ihandle* ih);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/iup_dial.c b/iup/srccontrols/iup_dial.c
new file mode 100755
index 0000000..1dd2d0f
--- /dev/null
+++ b/iup/srccontrols/iup_dial.c
@@ -0,0 +1,864 @@
+/** \file
+ * \brief Dial Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+
+#include <cd.h>
+#include <cdiup.h>
+#include <cddbuf.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_stdcontrols.h"
+#include "iup_controls.h"
+#include "iup_cdutil.h"
+
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+#define IDIAL_SPACE 3
+#define IDIAL_NCOLORS 10
+#define IDIAL_DEFAULT_DENSITY 0.2
+#define IDIAL_DEFAULT_DENSITY_STR "0.2"
+#define IDIAL_DEFAULT_FGCOLOR "64 64 64"
+#define IDIAL_DEFAULT_FGCOLOR_COMP 64
+
+enum{IDIAL_VERTICAL, IDIAL_HORIZONTAL, IDIAL_CIRCULAR};
+
+#define dialmin(a,b) ((a)<(b)?(a):(b))
+
+
+struct _IcontrolData
+{
+ iupCanvas canvas; /* from IupCanvas (must reserve it) */
+
+ /* attributes */
+ double angle;
+ int type;
+ double unit;
+ double density;
+
+ /* mouse interaction control */
+ int px;
+ int py;
+ int pressing;
+
+ /* visual appearance control */
+ void (*Draw)(Ihandle* ih);
+ int w, h;
+ int has_focus;
+ int num_div; /* number of sections in the dial wheel */
+ double radius; /* radius size of the dial wheel */
+ long fgcolor[IDIAL_NCOLORS+1];
+ long bgcolor,
+ light_shadow,
+ mid_shadow,
+ dark_shadow;
+
+ /* drawing canvas */
+ cdCanvas *cddbuffer;
+ cdCanvas *cdcanvas;
+};
+
+
+static long int iDialGetFgColor(Ihandle* ih, double a, double amin)
+{
+ double nu = fabs(a - 0.5 * M_PI);
+ double de = fabs(0.5 * M_PI - amin);
+ double fr = nu / de;
+ int i = (int)(IDIAL_NCOLORS * fr);
+ return ih->data->fgcolor[IDIAL_NCOLORS - i];
+}
+
+static void iDialDrawVerticalBackground(Ihandle* ih, double amin, double amax, int *ymin, int *ymax)
+{
+ double delta = (0.5 * M_PI - amin) / IDIAL_NCOLORS;
+ double a, yc = ih->data->h / 2.0;
+ *ymin = *ymax = ih->data->h / 2;
+ for (a = amin; a < 0.5 * M_PI; a += delta) /* shading */
+ {
+ int y0 = (int)(yc - ih->data->radius * cos(a));
+ int y1 = (int)(yc - ih->data->radius * cos(a+delta));
+ cdCanvasForeground(ih->data->cddbuffer, iDialGetFgColor(ih, a, amin));
+ cdCanvasBox(ih->data->cddbuffer, IDIAL_SPACE+1, ih->data->w-1-IDIAL_SPACE-2, y0, y1);
+
+ if (y0 < *ymin) *ymin = y0;
+
+ if (abs(y1-y0) < 2)
+ continue;
+ }
+ for (a = 0.5 * M_PI; a < amax; a += delta)
+ {
+ int y0 = (int)(yc + ih->data->radius * fabs(cos(a)));
+ int y1 = (int)(yc + ih->data->radius * fabs(cos(a+delta)));
+ cdCanvasForeground(ih->data->cddbuffer, iDialGetFgColor(ih, a, amin));
+ cdCanvasBox(ih->data->cddbuffer, IDIAL_SPACE+1, ih->data->w-1-IDIAL_SPACE-2, y0, y1);
+
+ if (y1 > *ymax) *ymax = y1;
+
+ if (abs(y1-y0) < 2)
+ continue;
+ }
+}
+
+static void iDialDrawVertical(Ihandle* ih)
+{
+ double delta = 2 * M_PI / ih->data->num_div;
+ double a, amin, amax;
+ int ymin, ymax;
+
+ ih->data->radius = (ih->data->h - 2 * IDIAL_SPACE - 2) / 2.0;
+
+ amin = 0.0;
+ amax = M_PI;
+ if(ih->data->angle < amin)
+ {
+ for (a = ih->data->angle; a < amin; a += delta)
+ ;
+ }
+ else
+ {
+ for (a = ih->data->angle; a > amin; a -= delta)
+ ;
+ a += delta;
+ }
+
+ iDialDrawVerticalBackground(ih, amin, amax, &ymin, &ymax);
+
+ cdIupDrawRaisenRect(ih->data->cddbuffer, IDIAL_SPACE, ymin, ih->data->w-1-IDIAL_SPACE, ymax,
+ ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow);
+
+ for ( ; a < amax; a += delta) /* graduation */
+ {
+ int y;
+ if (a < 0.5 * M_PI) y = (int)(ih->data->h / 2.0 - ih->data->radius * cos(a));
+ else y = (int)(ih->data->h / 2.0 + ih->data->radius * fabs(cos(a)));
+
+ if (abs(y-ymin) < 3 || abs(ymax-y) < 3)
+ continue;
+
+ cdIupDrawHorizSunkenMark(ih->data->cddbuffer, IDIAL_SPACE+1, ih->data->w-1-IDIAL_SPACE-2, y, ih->data->light_shadow, ih->data->dark_shadow);
+ }
+}
+
+static void iDialDrawHorizontalBackground(Ihandle* ih,double amin,double amax, int *xmin, int *xmax)
+{
+ double delta = (0.5 * M_PI - amin) / IDIAL_NCOLORS;
+ double a, xc = ih->data->w / 2.0;
+ *xmin = *xmax = ih->data->w / 2;
+ for (a = amin; a < 0.5 * M_PI; a += delta)
+ {
+ int x0=(int)(xc - ih->data->radius * cos(a));
+ int x1=(int)(xc - ih->data->radius * cos(a + delta));
+ cdCanvasForeground(ih->data->cddbuffer,iDialGetFgColor(ih, a, amin));
+ cdCanvasBox(ih->data->cddbuffer, x0, x1, IDIAL_SPACE+2, ih->data->h-1-IDIAL_SPACE-1);
+
+ if (x0 < *xmin) *xmin = x0;
+
+ if (abs(x1 - x0) < 2)
+ continue;
+ }
+ for (a = 0.5 * M_PI; a < amax; a += delta)
+ {
+ int x0 =(int)(xc + ih->data->radius * fabs(cos(a)));
+ int x1 =(int)(xc + ih->data->radius * fabs(cos(a + delta)));
+ cdCanvasForeground(ih->data->cddbuffer, iDialGetFgColor(ih, a, amin));
+ cdCanvasBox(ih->data->cddbuffer, x0, x1, IDIAL_SPACE+2, ih->data->h-1-IDIAL_SPACE-1);
+
+ if (x1 > *xmax) *xmax = x1;
+
+ if (abs(x1-x0) < 2)
+ continue;
+ }
+}
+
+static void iDialDrawHorizontal(Ihandle* ih)
+{
+ double delta = 2 * M_PI / ih->data->num_div;
+ int x;
+ double a, amin, amax;
+ int xmin, xmax;
+ ih->data->radius = (ih->data->w - 2 * IDIAL_SPACE - 2) / 2.0;
+ amin = 0.0;
+ amax = M_PI;
+ if(ih->data->angle < amin)
+ {
+ for (a = ih->data->angle; a < amin; a += delta) ;
+ }
+ else
+ {
+ for (a = ih->data->angle; a > amin; a-= delta) ;
+ a += delta;
+ }
+
+ iDialDrawHorizontalBackground(ih, amin, amax, &xmin, &xmax);
+
+ cdIupDrawRaisenRect(ih->data->cddbuffer, xmin, IDIAL_SPACE, xmax, ih->data->h-1-IDIAL_SPACE,
+ ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow);
+
+ for ( ; a < amax; a += delta)
+ {
+ if (a < 0.5 * M_PI) x = (int)(ih->data->w / 2.0 - ih->data->radius * cos(a));
+ else x = (int)(ih->data->w / 2.0 + ih->data->radius * fabs(cos(a)));
+
+ if (abs(x - xmin) < 3 || abs(xmax - x) < 3)
+ continue;
+
+ cdIupDrawVertSunkenMark(ih->data->cddbuffer, x, IDIAL_SPACE+2, ih->data->h-1-IDIAL_SPACE-1, ih->data->light_shadow, ih->data->dark_shadow);
+ }
+}
+
+static void iDialDrawCircularMark(Ihandle* ih, int x1, int y1)
+{
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->bgcolor);
+ cdCanvasBox(ih->data->cddbuffer,x1, x1+4, y1, y1+4);
+
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->light_shadow);
+ cdCanvasLine(ih->data->cddbuffer, x1, y1+1, x1, y1+3);
+ cdCanvasLine(ih->data->cddbuffer, x1+1, y1+4, x1+3, y1+4);
+
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->mid_shadow);
+ cdCanvasLine(ih->data->cddbuffer, x1+1, y1, x1+4, y1);
+ cdCanvasLine(ih->data->cddbuffer, x1+4, y1, x1+4, y1+3);
+
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->dark_shadow);
+ cdCanvasLine(ih->data->cddbuffer, x1+2, y1, x1+3, y1);
+ cdCanvasLine(ih->data->cddbuffer, x1+4, y1+1, x1+4, y1+2);
+}
+
+static void iDialDrawCircular(Ihandle* ih)
+{
+ double delta = 2 * M_PI / ih->data->num_div, a = ih->data->angle;
+ int i, xc = ih->data->w / 2, yc = ih->data->h / 2, wide;
+ ih->data->radius = dialmin(ih->data->w, ih->data->h) / 2 - 2 * IDIAL_SPACE;
+
+ wide = (int)(2 * ih->data->radius);
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->mid_shadow);
+ cdCanvasLineWidth(ih->data->cddbuffer, 2);
+ cdCanvasArc(ih->data->cddbuffer, xc, yc, wide-1, wide-1, -135, 45.0);
+ cdCanvasLineWidth(ih->data->cddbuffer, 1);
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->bgcolor);
+ cdCanvasSector(ih->data->cddbuffer, xc, yc, wide-2, wide-2, 0.0, 360.0);
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->light_shadow);
+ cdCanvasArc(ih->data->cddbuffer, xc, yc, wide, wide, 45, 225);
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->dark_shadow);
+ cdCanvasArc(ih->data->cddbuffer, xc, yc, wide, wide, -135, 45);
+
+ for (i = 0; i < ih->data->num_div; ++i)
+ {
+ int x2 = (int)(xc + (ih->data->radius - 6) * cos(a));
+ int y2 = (int)(yc + (ih->data->radius - 6) * sin(a));
+
+ if (i == 0)
+ {
+ cdCanvasForeground(ih->data->cddbuffer, CD_BLACK);
+ cdCanvasLine(ih->data->cddbuffer, xc, yc, x2, y2);
+ }
+
+ iDialDrawCircularMark(ih, x2-2, y2-2);
+ a += delta;
+ }
+
+ iDialDrawCircularMark(ih, xc-2, yc-2);
+}
+
+static void iDialRepaint(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ return;
+
+ /* update render */
+ cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor);
+ cdCanvasClear(ih->data->cddbuffer);
+ ih->data->Draw(ih);
+
+ /* update display */
+ cdCanvasFlush(ih->data->cddbuffer);
+ if (ih->data->has_focus)
+ cdIupDrawFocusRect(ih, ih->data->cdcanvas, 0, 0, ih->data->w-1, ih->data->h-1);
+}
+
+static void iDialUpdateFgColors(Ihandle* ih, unsigned char r, unsigned char g, unsigned char b)
+{
+ int i, max, deltar, deltag, deltab;
+
+ /* this function is also called before mapping */
+ max = (ih->handle && iupdrvIsActive(ih))? 255 : 192;
+ deltar = (max-r) / IDIAL_NCOLORS;
+ deltag = (max-g) / IDIAL_NCOLORS;
+ deltab = (max-b) / IDIAL_NCOLORS;
+
+ for (i=0; i<=IDIAL_NCOLORS; i++)
+ {
+ ih->data->fgcolor[i] = cdEncodeColor(r, g, b);
+ r = (unsigned char)(r + deltar);
+ g = (unsigned char)(g + deltag);
+ b = (unsigned char)(b + deltab);
+ }
+}
+
+static int iDialButtonPress(Ihandle* ih, int button, int x, int y)
+{
+ IFn cb;
+
+ if (button!=IUP_BUTTON1)
+ return IUP_DEFAULT;
+
+ y = cdIupInvertYAxis(y, ih->data->h);
+ ih->data->px = x;
+ ih->data->py = y;
+
+ if (ih->data->type != IDIAL_CIRCULAR)
+ ih->data->angle=0;
+
+ cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB");
+ if (cb)
+ cb(ih);
+ else
+ {
+ IFnd cb_old = (IFnd) IupGetCallback(ih, "BUTTON_PRESS_CB");
+ if (cb_old)
+ cb_old(ih, ih->data->angle * ih->data->unit);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iDialButtonRelease(Ihandle* ih, int button)
+{
+ IFn cb;
+
+ if (button!=IUP_BUTTON1)
+ return IUP_DEFAULT;
+
+ iDialRepaint(ih);
+
+ cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB");
+ if (cb)
+ cb(ih);
+ else
+ {
+ IFnd cb_old = (IFnd) IupGetCallback(ih, "BUTTON_RELEASE_CB");
+ if (cb_old)
+ cb_old(ih, ih->data->angle * ih->data->unit);
+ }
+
+ return IUP_DEFAULT;
+}
+
+
+/******************************************************************/
+
+
+static int iDialMotionVertical_CB(Ihandle* ih, int x, int y, char *status)
+{
+ IFn cb;
+ (void)x; /* not used */
+
+ if (!iup_isbutton1(status))
+ return IUP_DEFAULT;
+
+ y = cdIupInvertYAxis(y, ih->data->h);
+ ih->data->angle += (double)(y-ih->data->py) / ih->data->radius;
+ ih->data->py = y;
+
+ iDialRepaint(ih);
+
+ cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB");
+ if (cb)
+ cb(ih);
+ else
+ {
+ IFnd cb_old = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB");
+ if (cb_old)
+ cb_old(ih, ih->data->angle * ih->data->unit);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iDialMotionHorizontal_CB(Ihandle* ih, int x, int y, char *status)
+{
+ IFn cb;
+
+ if (!iup_isbutton1(status))
+ return IUP_DEFAULT;
+
+ y = cdIupInvertYAxis(y, ih->data->h);
+ ih->data->angle += (double)(x-ih->data->px) / ih->data->radius;
+ ih->data->px = x;
+
+ iDialRepaint(ih);
+
+ cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB");
+ if (cb)
+ cb(ih);
+ else
+ {
+ IFnd cb_old = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB");
+ if (cb_old)
+ cb_old(ih, ih->data->angle * ih->data->unit);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iDialMotionCircular_CB(Ihandle* ih, int x, int y, char *status)
+{
+ int cx = ih->data->w / 2;
+ int cy = ih->data->h / 2;
+ double vet, xa, ya, xb, yb, ma, mb, ab;
+ IFn cb;
+
+ if (!iup_isbutton1(status))
+ return IUP_DEFAULT;
+
+ y = cdIupInvertYAxis(y, ih->data->h);
+
+ xa = ih->data->px-cx;
+ ya = ih->data->py-cy;
+ ma = sqrt(xa * xa + ya * ya);
+
+ xb = x - cx;
+ yb = y - cy;
+ mb = sqrt(xb * xb + yb * yb);
+
+ ab = xa * xb + ya * yb;
+ vet = xa * yb - xb * ya;
+
+ ab = ab / (ma * mb);
+
+ /* if the mouse is in the center of the dial, ignore it */
+ if (ma == 0 || mb == 0 || ab < -1 || ab > 1)
+ return IUP_DEFAULT;
+
+ if (vet>0) ih->data->angle += acos(ab);
+ else ih->data->angle -= acos(ab);
+
+ iDialRepaint(ih);
+ ih->data->px = x;
+ ih->data->py = y;
+
+ cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB");
+ if (cb)
+ cb(ih);
+ else
+ {
+ IFnd cb_old = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB");
+ if (cb_old)
+ cb_old(ih, ih->data->angle * ih->data->unit);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iDialButton_CB(Ihandle* ih, int button, int pressed, int x, int y)
+{
+ if (pressed)
+ return iDialButtonPress(ih, button, x, y);
+ else
+ return iDialButtonRelease(ih, button);
+}
+
+static int iDialResize_CB(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ {
+ /* update canvas size */
+ cdCanvasActivate(ih->data->cdcanvas);
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+ }
+
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update size */
+ cdCanvasActivate(ih->data->cddbuffer);
+ cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL);
+
+ /* update number of divisions */
+ switch(ih->data->type)
+ {
+ case IDIAL_VERTICAL:
+ ih->data->num_div = (int)((ih->data->h-2 * IDIAL_SPACE-2) * ih->data->density);
+ break;
+
+ case IDIAL_HORIZONTAL:
+ ih->data->num_div = (int)((ih->data->w-2 * IDIAL_SPACE-2) * ih->data->density);
+ break;
+
+ case IDIAL_CIRCULAR:
+ ih->data->num_div = (int)((dialmin(ih->data->w, ih->data->h)-2 * IDIAL_SPACE-2) * ih->data->density);
+ break;
+ }
+
+ /* update render */
+ cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor);
+ cdCanvasClear(ih->data->cddbuffer);
+ ih->data->Draw(ih);
+
+ return IUP_DEFAULT;
+}
+
+static int iDialRedraw_CB(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update display */
+ cdCanvasFlush(ih->data->cddbuffer);
+ if (ih->data->has_focus)
+ cdIupDrawFocusRect(ih, ih->data->cdcanvas, 0, 0, ih->data->w-1, ih->data->h-1);
+
+ return IUP_DEFAULT;
+}
+
+static int iDialFocus_CB(Ihandle* ih, int focus)
+{
+ ih->data->has_focus = focus;
+ iDialRepaint(ih);
+ return IUP_DEFAULT;
+}
+
+static int iDialKeyPress_CB(Ihandle* ih, int c, int press)
+{
+ IFn cb;
+ char* cb_name;
+
+ if (c != K_LEFT && c != K_UP &&
+ c != K_sLEFT && c != K_sUP &&
+ c != K_RIGHT && c != K_DOWN &&
+ c != K_sRIGHT && c != K_sDOWN &&
+ c != K_HOME)
+ return IUP_DEFAULT;
+
+ if (press && ih->data->pressing)
+ {
+ switch(c)
+ {
+ case K_sLEFT:
+ case K_sDOWN:
+ ih->data->angle -= M_PI / 100.0;
+ break;
+ case K_LEFT:
+ case K_DOWN:
+ ih->data->angle -= M_PI / 10.0;
+ break;
+ case K_sRIGHT:
+ case K_sUP:
+ ih->data->angle += M_PI / 100.0;
+ break;
+ case K_RIGHT:
+ case K_UP:
+ ih->data->angle += M_PI / 10.0;
+ break;
+ }
+ }
+
+ if (c == K_HOME)
+ ih->data->angle = 0;
+
+ if (press)
+ {
+ if (ih->data->pressing)
+ {
+ cb_name = "MOUSEMOVE_CB";
+ }
+ else
+ {
+ ih->data->pressing = 1;
+ if (ih->data->type != IDIAL_CIRCULAR)
+ ih->data->angle = 0;
+ cb_name = "BUTTON_PRESS_CB";
+ }
+ }
+ else
+ {
+ ih->data->pressing = 0;
+ cb_name = "RELEASE_CB";
+ }
+
+ iDialRepaint(ih);
+
+ cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB");
+ if (cb)
+ cb(ih);
+ else
+ {
+ IFnd cb_old = (IFnd) IupGetCallback(ih, cb_name);
+ if (cb_old)
+ cb_old(ih, ih->data->angle * ih->data->unit);
+ }
+
+ return IUP_IGNORE; /* to avoid arrow keys being processed by the system */
+}
+
+static int iDialWheel_CB(Ihandle* ih, float delta)
+{
+ IFn cb;
+
+ ih->data->angle += ((double)delta) * (M_PI / 10.0);
+
+ if (fabs(ih->data->angle) < M_PI / 10.1)
+ ih->data->angle = 0;
+
+ iDialRepaint(ih);
+
+ cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB");
+ if (cb)
+ cb(ih);
+ else
+ {
+ IFnd cb_old = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB");
+ if (cb_old)
+ cb_old(ih, ih->data->angle * ih->data->unit);
+ }
+
+ return IUP_DEFAULT;
+}
+
+
+/*********************************************************************************/
+
+
+static char* iDialGetValueAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%f", ih->data->angle);
+ return str;
+}
+
+static int iDialSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (!value) /* reset to default */
+ ih->data->angle = 0;
+ else
+ ih->data->angle = atof(value);
+
+ iDialRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static int iDialSetDensityAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->density = atof(value);
+ iDialRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iDialGetDensityAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%f", ih->data->density);
+ return str;
+}
+
+static int iDialSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ value = iupControlBaseGetParentBgColor(ih);
+
+ ih->data->bgcolor = cdIupConvertColor(value);
+
+ cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow);
+ if (!iupdrvIsActive(ih))
+ ih->data->light_shadow = ih->data->mid_shadow;
+
+ iDialRepaint(ih);
+ return 1;
+}
+
+static int iDialSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+ iDialUpdateFgColors(ih, r, g, b);
+
+ iDialRepaint(ih);
+ return 1;
+}
+
+static int iDialSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char r, g, b;
+
+ iupBaseSetActiveAttrib(ih, value);
+
+ value = iupAttribGetStr(ih, "FGCOLOR");
+ if (!iupStrToRGB(value, &r, &g, &b))
+ return 0;
+ iDialUpdateFgColors(ih, r, g, b);
+
+ cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow);
+ if (!iupdrvIsActive(ih))
+ ih->data->light_shadow = ih->data->mid_shadow;
+
+ iDialRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static int iDialSetUnitAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->unit = iupStrEqualNoCase(value, "DEGREES")? CD_RAD2DEG : 1.0;
+ return 1;
+}
+
+static int iDialSetTypeAttrib(Ihandle* ih, const char* value)
+{
+ /* valid only before map */
+ if (ih->handle)
+ return 0;
+
+ if (iupStrEqualNoCase(value, "VERTICAL"))
+ {
+ ih->data->Draw = iDialDrawVertical;
+ ih->data->type = IDIAL_VERTICAL;
+ IupSetCallback(ih, "MOTION_CB", (Icallback)iDialMotionVertical_CB);
+ IupSetAttribute(ih, "SIZE", "16x80");
+ }
+ else if (iupStrEqualNoCase(value, "CIRCULAR"))
+ {
+ ih->data->Draw = iDialDrawCircular;
+ ih->data->type = IDIAL_CIRCULAR;
+ IupSetCallback(ih, "MOTION_CB", (Icallback)iDialMotionCircular_CB);
+ IupSetAttribute(ih, "SIZE", "40x36");
+ }
+ else /* "HORIZONTAL" */
+ {
+ ih->data->Draw = iDialDrawHorizontal;
+ ih->data->type = IDIAL_HORIZONTAL;
+ IupSetCallback(ih, "MOTION_CB", (Icallback)iDialMotionHorizontal_CB);
+ IupSetAttribute(ih, "SIZE", "80x16");
+ }
+ return 0; /* do not store value in hash table */
+}
+
+static char* iDialGetTypeAttrib(Ihandle* ih)
+{
+ if (ih->data->type == IDIAL_HORIZONTAL)
+ return "HORIZONTAL";
+ else if (ih->data->type == IDIAL_VERTICAL)
+ return "VERTICAL";
+ else /* (ih->data->type == IDIAL_CIRCULAR) */
+ return "CIRCULAR";
+}
+
+
+/****************************************************************************/
+
+
+static int iDialMapMethod(Ihandle* ih)
+{
+ ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih);
+ if (!ih->data->cdcanvas)
+ return IUP_ERROR;
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+
+ return IUP_NOERROR;
+}
+
+static void iDialUnMapMethod(Ihandle* ih)
+{
+ if (ih->data->cddbuffer)
+ cdKillCanvas(ih->data->cddbuffer);
+
+ if (ih->data->cdcanvas)
+ cdKillCanvas(ih->data->cdcanvas);
+}
+
+static int iDialCreateMethod(Ihandle* ih, void **params)
+{
+ char* type = "HORIZONTAL";
+ if (params && params[0])
+ type = params[0];
+
+ /* free the data allocated by IupCanvas */
+ if (ih->data) free(ih->data);
+ ih->data = iupALLOCCTRLDATA();
+
+ /* change the IupCanvas default values */
+ iupAttribSetStr(ih, "BORDER", "NO");
+ ih->expand = IUP_EXPAND_NONE;
+
+ /* default values */
+ iDialSetTypeAttrib(ih, type);
+ ih->data->density = IDIAL_DEFAULT_DENSITY;
+ ih->data->unit = 1.0; /* RADIANS */
+ iDialUpdateFgColors(ih, IDIAL_DEFAULT_FGCOLOR_COMP, IDIAL_DEFAULT_FGCOLOR_COMP, IDIAL_DEFAULT_FGCOLOR_COMP);
+
+ /* IupCanvas callbacks */
+ IupSetCallback(ih, "ACTION", (Icallback)iDialRedraw_CB);
+ IupSetCallback(ih, "RESIZE_CB", (Icallback)iDialResize_CB);
+ IupSetCallback(ih, "BUTTON_CB", (Icallback)iDialButton_CB);
+ IupSetCallback(ih, "FOCUS_CB", (Icallback)iDialFocus_CB);
+ IupSetCallback(ih, "KEYPRESS_CB", (Icallback)iDialKeyPress_CB);
+ IupSetCallback(ih, "WHEEL_CB", (Icallback)iDialWheel_CB);
+
+ return IUP_NOERROR;
+}
+
+Iclass* iupDialGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupCanvasGetClass());
+
+ ic->name = "dial";
+ ic->format = "S"; /* one optional string */
+ ic->nativetype = IUP_TYPECANVAS;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iDialCreateMethod;
+ ic->Map = iDialMapMethod;
+ ic->UnMap = iDialUnMapMethod;
+
+ /* Do not need to set base attributes because they are inherited from IupCanvas */
+
+ /* IupDial Callbacks */
+ iupClassRegisterCallback(ic, "MOUSEMOVE_CB", "d");
+ iupClassRegisterCallback(ic, "BUTTON_PRESS_CB", "d");
+ iupClassRegisterCallback(ic, "BUTTON_RELEASE_CB", "d");
+ iupClassRegisterCallback(ic, "VALUECHANGED_CB", "");
+
+ /* IupDial only */
+ iupClassRegisterAttribute(ic, "VALUE", iDialGetValueAttrib, iDialSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TYPE", iDialGetTypeAttrib, iDialSetTypeAttrib, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "DENSITY", iDialGetDensityAttrib, iDialSetDensityAttrib, IDIAL_DEFAULT_DENSITY_STR, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iDialSetFgColorAttrib, IDIAL_DEFAULT_FGCOLOR, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "UNIT", NULL, iDialSetUnitAttrib, IUPAF_SAMEASSYSTEM, "RADIANS", IUPAF_NOT_MAPPED);
+
+ /* Overwrite IupCanvas Attributes */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iDialSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iDialSetBgColorAttrib, NULL, "255 255 255", IUPAF_NO_INHERIT); /* overwrite canvas implementation, set a system default to force a new default */
+
+ return ic;
+}
+
+Ihandle* IupDial(const char* type)
+{
+ void *params[2];
+ params[0] = (void*)type;
+ params[1] = NULL;
+ return IupCreatev("dial", params);
+}
diff --git a/iup/srccontrols/iup_gauge.c b/iup/srccontrols/iup_gauge.c
new file mode 100755
index 0000000..8732eee
--- /dev/null
+++ b/iup/srccontrols/iup_gauge.c
@@ -0,0 +1,435 @@
+/** \file
+ * \brief Gauge control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+
+#include <cd.h>
+#include <cdiup.h>
+#include <cddbuf.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_stdcontrols.h"
+#include "iup_controls.h"
+#include "iup_cdutil.h"
+
+#define IGAUGE_DEFAULTCOLOR "64 96 192"
+#define IGAUGE_DEFAULTSIZE "120x14"
+
+#define IGAUGE_GAP 3
+#define IGAUGE_BLOCKS 20
+
+#define gaugeround(_) ((int)((_)+.5))
+
+
+struct _IcontrolData
+{
+ iupCanvas canvas; /* from IupCanvas (must reserve it) */
+
+ int w;
+ int h;
+
+ int show_text;
+ int dashed;
+ int horiz_padding, vert_padding; /* internal margin */
+
+ long bgcolor;
+ long fgcolor;
+ long light_shadow;
+ long mid_shadow;
+ long dark_shadow;
+
+ double value; /* min<=value<max */
+ double vmin;
+ double vmax;
+
+ char* text;
+
+ cdCanvas *cddbuffer;
+ cdCanvas *cdcanvas;
+};
+
+
+static void iGaugeDrawText(Ihandle* ih, int xmid)
+{
+ int x, y, xmin, xmax, ymin, ymax;
+ char* text = ih->data->text;
+
+ cdCanvasNativeFont(ih->data->cddbuffer, IupGetAttribute(ih, "FONT"));
+ cdCanvasTextAlignment(ih->data->cddbuffer, CD_CENTER);
+ cdCanvasBackOpacity(ih->data->cddbuffer, CD_TRANSPARENT);
+
+ x = (int)(0.5 * ih->data->w);
+ y = (int)(0.5 * ih->data->h);
+
+ if(text == NULL)
+ {
+ char* m = iupStrGetMemory(30);
+ sprintf(m, "%.1f%%", 100 * (ih->data->value - ih->data->vmin) / (ih->data->vmax - ih->data->vmin));
+ text = m;
+ }
+
+ cdCanvasGetTextBox(ih->data->cddbuffer, x, y, text, &xmin, &xmax, &ymin, &ymax);
+
+ if(xmid < xmin)
+ {
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->fgcolor);
+ cdCanvasText(ih->data->cddbuffer, x, y, text);
+ }
+ else if(xmid > xmax)
+ {
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->bgcolor);
+ cdCanvasText(ih->data->cddbuffer, x, y, text);
+ }
+ else
+ {
+ cdCanvasClip(ih->data->cddbuffer, CD_CLIPAREA);
+ cdCanvasClipArea(ih->data->cddbuffer, xmin, xmid, ymin, ymax);
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->bgcolor);
+ cdCanvasText(ih->data->cddbuffer, x, y, text);
+
+ cdCanvasClipArea(ih->data->cddbuffer, xmid, xmax, ymin, ymax);
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->fgcolor);
+ cdCanvasText(ih->data->cddbuffer, x, y, text);
+ cdCanvasClip(ih->data->cddbuffer, CD_CLIPOFF);
+ }
+}
+
+static void iGaugeDrawGauge(Ihandle* ih)
+{
+ int border = 3; /* includes the pixel used to draw the 3D border */
+ int xstart = ih->data->horiz_padding+border;
+ int ystart = ih->data->vert_padding+border;
+ int xend = ih->data->w-1 - (ih->data->horiz_padding+border);
+ int yend = ih->data->h-1 - (ih->data->vert_padding+border);
+
+ cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor);
+ cdCanvasClear(ih->data->cddbuffer);
+
+ cdIupDrawSunkenRect(ih->data->cddbuffer, 0, 0, ih->data->w-1, ih->data->h-1,
+ ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow);
+
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->fgcolor);
+
+ if (ih->data->dashed)
+ {
+ float step = (xend - xstart + 1) / (float)IGAUGE_BLOCKS;
+ float boxw = step - IGAUGE_GAP;
+ float vx = (float)((xend-xstart + 1) * (ih->data->value - ih->data->vmin) / (ih->data->vmax - ih->data->vmin));
+ int intvx = (int)(100 * vx);
+ float i = 0;
+
+ if(ih->data->value == ih->data->vmin)
+ return;
+
+ while(gaugeround(100*(i + boxw)) <= intvx)
+ {
+ cdCanvasBox(ih->data->cddbuffer, xstart + gaugeround(i),
+ xstart + gaugeround(i + boxw) - 1, ystart, yend);
+ i += step;
+ }
+ }
+ else
+ {
+ int xmid = xstart + gaugeround((xend-xstart + 1) * (ih->data->value - ih->data->vmin) / (ih->data->vmax - ih->data->vmin));
+
+ if(ih->data->value != ih->data->vmin)
+ cdCanvasBox(ih->data->cddbuffer, xstart, xmid, ystart, yend );
+
+ if(ih->data->show_text)
+ iGaugeDrawText(ih, xmid);
+ }
+}
+
+static int iGaugeResize_CB(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ {
+ /* update canvas size */
+ cdCanvasActivate(ih->data->cdcanvas);
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+ }
+
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update size */
+ cdCanvasActivate(ih->data->cddbuffer);
+ cdCanvasGetSize(ih->data->cddbuffer,&ih->data->w,&ih->data->h,NULL,NULL);
+
+ /* update render */
+ iGaugeDrawGauge(ih);
+
+ return IUP_DEFAULT;
+}
+
+static void iGaugeRepaint(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ return;
+
+ /* update render */
+ iGaugeDrawGauge(ih);
+
+ /* update display */
+ cdCanvasFlush(ih->data->cddbuffer);
+}
+
+static int iGaugeRedraw_CB(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update display */
+ cdCanvasFlush(ih->data->cddbuffer);
+ return IUP_DEFAULT;
+}
+
+static void iGaugeCropValue(Ihandle* ih)
+{
+ if(ih->data->value>ih->data->vmax)
+ ih->data->value = ih->data->vmax;
+ else if(ih->data->value<ih->data->vmin)
+ ih->data->value = ih->data->vmin;
+}
+
+static int iGaugeSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->fgcolor = cdIupConvertColor(value);
+ iGaugeRepaint(ih);
+ return 1;
+}
+
+static int iGaugeSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ value = iupControlBaseGetParentBgColor(ih);
+
+ ih->data->bgcolor = cdIupConvertColor(value);
+ cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow);
+
+ iGaugeRepaint(ih);
+ return 1;
+}
+
+static int iGaugeSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if(value == NULL)
+ ih->data->value = 0;
+ else
+ ih->data->value = atof(value);
+ iGaugeCropValue(ih);
+
+ iGaugeRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iGaugeGetValueAttrib(Ihandle* ih)
+{
+ char* value = iupStrGetMemory(30);
+ sprintf(value, "%g", ih->data->value);
+ return value;
+}
+
+static int iGaugeSetMinAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->vmin = atof(value);
+ iGaugeCropValue(ih);
+
+ iGaugeRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iGaugeGetMinAttrib(Ihandle* ih)
+{
+ char* value = iupStrGetMemory(30);
+ sprintf(value, "%g", ih->data->vmin);
+ return value;
+}
+
+static int iGaugeSetMaxAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->vmax = atof(value);
+ iGaugeCropValue(ih);
+ iGaugeRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iGaugeGetMaxAttrib(Ihandle* ih)
+{
+ char* value = iupStrGetMemory(30);
+ sprintf(value, "%g", ih->data->vmax);
+ return value;
+}
+
+static int iGaugeSetShowTextAttrib(Ihandle* ih, const char* value)
+{
+ if(iupStrEqualNoCase(value, "YES"))
+ ih->data->show_text = 1;
+ else if(iupStrEqualNoCase(value, "NO"))
+ ih->data->show_text = 0;
+
+ iGaugeRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iGaugeGetShowTextAttrib(Ihandle* ih)
+{
+ if(ih->data->show_text)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iGaugeSetPaddingAttrib(Ihandle* ih, const char* value)
+{
+ iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');
+ iGaugeRepaint(ih);
+ return 0;
+}
+
+static char* iGaugeGetPaddingAttrib(Ihandle* ih)
+{
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding);
+ return str;
+}
+
+static int iGaugeSetDashedAttrib(Ihandle* ih, const char* value)
+{
+ if(iupStrEqualNoCase(value, "YES"))
+ ih->data->dashed = 1;
+ else if(iupStrEqualNoCase(value, "NO"))
+ ih->data->dashed = 0;
+
+ iGaugeRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iGaugeGetDashedAttrib(Ihandle* ih)
+{
+ if(ih->data->dashed)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iGaugeSetTextAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->text)
+ free(ih->data->text);
+
+ ih->data->text = iupStrDup(value);
+
+ iGaugeRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iGaugeGetTextAttrib(Ihandle* ih)
+{
+ return ih->data->text;
+}
+
+static void iGaugeUnMapMethod(Ihandle* ih)
+{
+ if (ih->data->cddbuffer)
+ cdKillCanvas(ih->data->cddbuffer);
+
+ if (ih->data->cdcanvas)
+ cdKillCanvas(ih->data->cdcanvas);
+}
+
+static int iGaugeMapMethod(Ihandle* ih)
+{
+ ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih);
+ if (!ih->data->cdcanvas)
+ return IUP_ERROR;
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+
+ return IUP_NOERROR;
+}
+
+static int iGaugeCreateMethod(Ihandle* ih, void **params)
+{
+ (void)params;
+
+ /* free the data allocated by IupCanvas */
+ if (ih->data)
+ free(ih->data);
+ ih->data = iupALLOCCTRLDATA();
+
+ /* change the IupCanvas default values */
+ iupAttribSetStr(ih, "BORDER", "NO");
+ IupSetAttribute(ih, "SIZE", IGAUGE_DEFAULTSIZE);
+ ih->expand = IUP_EXPAND_NONE;
+
+ /* default values */
+ iupAttribSetStr(ih, "FGCOLOR", IGAUGE_DEFAULTCOLOR);
+ ih->data->fgcolor = cdIupConvertColor(IGAUGE_DEFAULTCOLOR);
+ ih->data->vmax = 1;
+ ih->data->bgcolor = CD_GRAY;
+ ih->data->light_shadow = CD_WHITE;
+ ih->data->mid_shadow = CD_GRAY;
+ ih->data->dark_shadow = CD_DARK_GRAY;
+ ih->data->show_text = 1;
+
+ /* IupCanvas callbacks */
+ IupSetCallback(ih, "RESIZE_CB", (Icallback)iGaugeResize_CB);
+ IupSetCallback(ih, "ACTION", (Icallback)iGaugeRedraw_CB);
+
+ return IUP_NOERROR;
+}
+
+Iclass* iupGaugeGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupCanvasGetClass());
+
+ ic->name = "gauge";
+ ic->format = NULL; /* no parameters */
+ ic->nativetype = IUP_TYPECANVAS;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 0;
+
+ /* Class functions */
+ ic->Create = iGaugeCreateMethod;
+ ic->Map = iGaugeMapMethod;
+ ic->UnMap = iGaugeUnMapMethod;
+
+ /* Do not need to set base attributes because they are inherited from IupCanvas */
+
+ /* IupGauge only */
+ iupClassRegisterAttribute(ic, "MIN", iGaugeGetMinAttrib, iGaugeSetMinAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MAX", iGaugeGetMaxAttrib, iGaugeSetMaxAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUE", iGaugeGetValueAttrib, iGaugeSetValueAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DASHED", iGaugeGetDashedAttrib, iGaugeSetDashedAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "PADDING", iGaugeGetPaddingAttrib, iGaugeSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "TEXT", iGaugeGetTextAttrib, iGaugeSetTextAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOW_TEXT", iGaugeGetShowTextAttrib, iGaugeSetShowTextAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iGaugeSetFgColorAttrib, IGAUGE_DEFAULTCOLOR, NULL, IUPAF_NOT_MAPPED);
+
+ /* Overwrite IupCanvas Attributes */
+ iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iGaugeSetBgColorAttrib, NULL, "255 255 255", IUPAF_NO_INHERIT); /* overwrite canvas implementation, set a system default to force a new default */
+
+ return ic;
+}
+
+Ihandle *IupGauge(void)
+{
+ return IupCreate("gauge");
+}
diff --git a/iup/srccontrols/iup_oldmask.c b/iup/srccontrols/iup_oldmask.c
new file mode 100755
index 0000000..fec10f3
--- /dev/null
+++ b/iup/srccontrols/iup_oldmask.c
@@ -0,0 +1,208 @@
+/** \file
+ * \brief OLD mask pattern matching
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+#include "iupmask.h"
+
+#include "iup_mask.h"
+#include "iup_str.h"
+
+
+void iupmaskRemove(Ihandle *ih)
+{
+ IupSetAttribute(ih,"MASK", NULL);
+}
+
+void iupmaskMatRemove(Ihandle *ih, int lin, int col)
+{
+ IupMatSetAttribute(ih,"MASK", lin, col, NULL);
+}
+
+int iupmaskSetInt(Ihandle *ih, int autofill, int min, int max)
+{
+ (void)autofill;
+ IupSetfAttribute(ih,"MASKINT", "%d:%d", min, max);
+ return 1;
+}
+
+int iupmaskMatSetInt(Ihandle *ih, int autofill, int min, int max, int lin, int col)
+{
+ (void)autofill;
+ IupMatSetfAttribute(ih,"MASKINT", lin, col, "%d:%d", min, max);
+ return 1;
+}
+
+int iupmaskSetFloat(Ihandle* ih, int autofill, float min, float max)
+{
+ (void)autofill;
+ IupSetfAttribute(ih,"MASKFLOAT", "%f:%f", min, max);
+ return 1;
+}
+
+int iupmaskMatSetFloat(Ihandle* ih, int autofill, float min, float max, int lin, int col)
+{
+ (void)autofill;
+ IupMatSetfAttribute(ih,"MASKFLOAT", lin, col, "%f:%f", min, max);
+ return 0;
+}
+
+int iupmaskSet(Ihandle* ih, const char* mask_str, int autofill, int casei)
+{
+ (void)autofill;
+ IupSetAttribute(ih,"MASKCASEI", casei?"YES":"NO");
+ IupStoreAttribute(ih,"MASK", mask_str);
+ if (iupStrEqual(mask_str, IupGetAttribute(ih,"MASK")))
+ return 1;
+ else
+ return 0;
+}
+
+int iupmaskMatSet(Ihandle* ih, const char* mask_str, int autofill, int casei, int lin, int col)
+{
+ (void)autofill;
+ IupMatSetAttribute(ih,"MASKCASEI", lin, col, casei?"YES":"NO");
+ IupMatSetAttribute(ih,"MASK", lin, col, (char*)mask_str);
+ if (iupStrEqual(mask_str, IupMatGetAttribute(ih,"MASK", lin, col)))
+ return 1;
+ else
+ return 0;
+}
+
+int iupmaskCheck(Ihandle* ih)
+{
+ char *val = IupGetAttribute(ih,"VALUE");
+ Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA");
+ return iupMaskCheck(mask,val)==1;
+}
+
+int iupmaskMatCheck(Ihandle *ih, int lin, int col)
+{
+ char *val = IupMatGetAttribute(ih,"",lin,col);
+ Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA");
+ return iupMaskCheck(mask,val)==1;
+}
+
+int iupmaskGet(Ihandle *ih, char **sval)
+{
+ char *val = IupGetAttribute(ih,"VALUE");
+ Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA");
+
+ if (iupMaskCheck(mask,val)==1)
+ {
+ *sval = val;
+ return 1;
+ }
+ else
+ return 0;
+}
+
+int iupmaskMatGet(Ihandle *ih, char **sval, int lin, int col)
+{
+ char *val = IupMatGetAttribute(ih,"",lin,col);
+ Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA");
+
+ if (iupMaskCheck(mask,val)==1)
+ {
+ *sval = val;
+ return 1;
+ }
+ else
+ return 0;
+}
+
+int iupmaskGetDouble(Ihandle *ih, double *dval)
+{
+ char *val = IupGetAttribute(ih,"VALUE");
+ Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA");
+
+ if(iupMaskCheck(mask,val)==1)
+ {
+ *dval = 0.0;
+ sscanf(val,"%lf",dval);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+int iupmaskMatGetDouble(Ihandle *ih, double *dval, int lin, int col)
+{
+ char *val = IupMatGetAttribute(ih,"",lin,col);
+ Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA");
+
+ if(iupMaskCheck(mask,val)==1)
+ {
+ *dval = 0.0;
+ sscanf(val,"%lf",dval);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+int iupmaskGetFloat(Ihandle *ih, float *fval)
+{
+ char *val = IupGetAttribute(ih,"VALUE");
+ Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA");
+
+ if(iupMaskCheck(mask,val)==1)
+ {
+ *fval = 0.0F;
+ sscanf(val,"%f",fval);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+int iupmaskMatGetFloat(Ihandle *ih, float *fval, int lin, int col)
+{
+ char *val = IupMatGetAttribute(ih,"",lin,col);
+ Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA");
+
+ if (iupMaskCheck(mask,val)==1)
+ {
+ *fval = 0.0F;
+ sscanf(val,"%f",fval);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+int iupmaskGetInt(Ihandle *ih, int *ival)
+{
+ char *val = IupGetAttribute(ih,"VALUE");
+ Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA");
+
+ if (iupMaskCheck(mask,val)==1)
+ {
+ *ival = 0;
+ sscanf(val,"%d",ival);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+int iupmaskMatGetInt(Ihandle *ih, int *ival, int lin, int col)
+{
+ char *val = IupMatGetAttribute(ih,"",lin,col);
+ Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA");
+
+ if(iupMaskCheck(mask,val)==1)
+ {
+ *ival = 0;
+ sscanf(val,"%d",ival);
+ return 1;
+ }
+ else
+ return 0;
+}
diff --git a/iup/srccontrols/iup_oldtabs.c b/iup/srccontrols/iup_oldtabs.c
new file mode 100755
index 0000000..43b0c57
--- /dev/null
+++ b/iup/srccontrols/iup_oldtabs.c
@@ -0,0 +1,2616 @@
+/** \file
+ * \brief iuptabs control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <math.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+
+#include <cd.h>
+#include <cdiup.h>
+#include <cddbuf.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_register.h"
+#include "iup_layout.h"
+#include "iup_controls.h"
+#include "iup_cdutil.h"
+
+
+/* Constants */
+static const int ITABS_BORDER = 1;
+static const int ITABS_MARGIN = 10;
+static const int ITABS_SPACING = 2;
+static const int ITABS_SCROLL_LENGTH = 51; /* the length of the scroll control in any direction */
+static const int ITABS_SCROLL_THICK = 17;
+static const int ITABS_SCROLL_SPACING = 7;
+static const int ITABS_BROKEN_TAB = 8;
+static const int ITABS_CURRENT_EXTRA_PIXELS = 1;
+
+/* Enum's */
+typedef enum
+{
+ ITABS_TOP, ITABS_BOTTOM, ITABS_LEFT, ITABS_RIGHT
+} ItabsType;
+
+typedef enum
+{
+ ITABS_FALSE, ITABS_TRUE
+} ItabsBool;
+
+typedef enum
+{
+ ITABS_BROKEN_NONE,
+ ITABS_BROKEN_START,
+ ITABS_BROKEN_END,
+ ITABS_BROKEN_CENTER
+} ItabsBrokenType;
+
+typedef enum
+{
+ ITABS_HORIZONTAL, ITABS_VERTICAL
+} ItabsOrientation;
+
+typedef enum
+{
+ ITABS_BUTTON_NONE,
+ ITABS_BUTTONPRESS_FORWARD, ITABS_BUTTONPRESS_MENU, ITABS_BUTTONPRESS_BACKWARD, /* can not change order because of "+= 3" */
+ ITABS_BUTTONRELEASE_FORWARD, ITABS_BUTTONRELEASE_MENU, ITABS_BUTTONRELEASE_BACKWARD
+} ItabsButtonState;
+
+typedef enum
+{
+ ITABS_RENDER_PLANE_ALIGN, ITABS_RENDER_PLANE_NORMAL
+} ItabsTextRender;
+
+/* Info about how to draw each tab */
+typedef struct _tagTabsDrawInfo
+{
+ Ihandle* ihandle; /* child handle */
+ int text_w, /* width of the text of this Tab */
+ tab_len; /* len */
+} ItabsDrawInfo;
+
+typedef struct _tagTabsLine
+{
+ /* Visible tabs (start and end interval) */
+ int start_tab, end_tab;
+
+ /* Shows if any button is pressed */
+ ItabsButtonState button;
+
+ /* Info about how to draw each tab */
+ ItabsDrawInfo* tabs_info;
+
+ /* Shows if all the tabs are visible */
+ ItabsBool scroll_visible,
+ broken_start_visible,
+ broken_end_visible;
+
+ /* Shows if the current tab is visible, when
+ there are other tabs to the left or right */
+ ItabsBool broken_center_visible;
+
+ /* Available space to the broken tabs */
+ int broken_tab_space,
+ broken_space_start,
+ broken_space_end;
+
+ /* Tabs line size */
+ int line_thick,
+ line_length;
+
+ /* Point to thick and length according to render */
+ int* line_w;
+ int* line_h;
+
+ /* Tabs scroll size */
+ int scroll_len, /* the scroll space in the tabs line length direction */
+ scroll_thick,
+ scroll_x,
+ scroll_y,
+ scroll_w,
+ scroll_h;
+
+ int text_h; /* height of the text (all texts have the same height) */
+} ItabsLine;
+
+/* Control context */
+struct _IcontrolData
+{
+ iupCanvas canvas; /* from IupCanvas (must reserve it) */
+
+ /* tabs type */
+ ItabsType tabs_type;
+ ItabsOrientation tabs_orientation;
+ ItabsTextRender tabs_render; /* tabs line render (depends on
+ tabs type and orientation) */
+
+ cdCanvas* cdcanvas; /* CD canvas for drawing */
+ cdCanvas* cddbuffer; /* image canvas for double buffering */
+ Ihandle* zbox; /* Handle "zbox" is a child of Tabs */
+
+ int number_of_tabs; /* number of tabs */
+ int current_tab; /* current tab */
+ ItabsLine tabs_line; /* data from a queue of tabs */
+
+ /* data from width and weight */
+ int w, h;
+ int* max_line_length; /* pointer to w or h */
+
+ /* Used colors */
+ long bgcolor;
+ long fgcolor;
+ long light_shadow;
+ long mid_shadow;
+ long dark_shadow;
+
+ int has_focus,
+ focus_x1,
+ focus_x2,
+ focus_y1,
+ focus_y2;
+
+ char* font_active;
+ char* font_inactive;
+};
+
+static void iTabsUpdateRender(Ihandle* ih)
+{
+ if (ih->data->tabs_orientation == ITABS_VERTICAL)
+ {
+ if (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT)
+ ih->data->tabs_render = ITABS_RENDER_PLANE_ALIGN;
+ else
+ ih->data->tabs_render = ITABS_RENDER_PLANE_NORMAL;
+ }
+ else
+ {
+ if (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT)
+ ih->data->tabs_render = ITABS_RENDER_PLANE_NORMAL;
+ else
+ ih->data->tabs_render = ITABS_RENDER_PLANE_ALIGN;
+ }
+
+ if (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT)
+ {
+ ih->data->tabs_line.line_w = &ih->data->tabs_line.line_thick;
+ ih->data->tabs_line.line_h = &ih->data->tabs_line.line_length;
+ ih->data->max_line_length = &ih->data->h;
+ }
+ else
+ {
+ ih->data->tabs_line.line_w = &ih->data->tabs_line.line_length;
+ ih->data->tabs_line.line_h = &ih->data->tabs_line.line_thick;
+ ih->data->max_line_length = &ih->data->w;
+ }
+
+ if (ih->data->tabs_render == ITABS_RENDER_PLANE_NORMAL)
+ {
+ ih->data->tabs_line.scroll_len = ITABS_SCROLL_THICK;
+ ih->data->tabs_line.scroll_thick = ITABS_SCROLL_LENGTH;
+ }
+ else
+ {
+ ih->data->tabs_line.scroll_len = ITABS_SCROLL_LENGTH;
+ ih->data->tabs_line.scroll_thick = ITABS_SCROLL_THICK;
+ }
+
+ if (ih->data->tabs_orientation == ITABS_HORIZONTAL)
+ {
+ ih->data->tabs_line.scroll_w = ITABS_SCROLL_LENGTH;
+ ih->data->tabs_line.scroll_h = ITABS_SCROLL_THICK;
+ }
+ else
+ {
+ ih->data->tabs_line.scroll_w = ITABS_SCROLL_THICK;
+ ih->data->tabs_line.scroll_h = ITABS_SCROLL_LENGTH;
+ }
+}
+
+static void iTabsSetCDFont(Ihandle* ih, char* tab_font, int bold)
+{
+ if (tab_font)
+ cdCanvasNativeFont(ih->data->cddbuffer, tab_font);
+ else
+ cdCanvasNativeFont(ih->data->cddbuffer, IupGetAttribute(ih, "FONT"));
+
+ if (bold)
+ cdCanvasFont(ih->data->cddbuffer, NULL, CD_BOLD, 0);
+}
+
+/* Gets the associated name of the tab */
+static Ihandle* iTabsGetTabIhandle(Ihandle* ih, int number)
+{
+ return ih->data->tabs_line.tabs_info[number].ihandle;
+}
+
+/* ========================================================================= */
+/* Drawing functions */
+/* ========================================================================= */
+
+/* Fills the draw area */
+static void iTabsFillArea(cdCanvas* canvas, int x1, int y1, int x2, int y2,
+ int x3, int y3, int x4, int y4)
+{
+ cdCanvasBegin(canvas, CD_FILL);
+ cdCanvasVertex(canvas, x1, y1);
+ cdCanvasVertex(canvas, x2, y2);
+ cdCanvasVertex(canvas, x3, y3);
+ cdCanvasVertex(canvas, x4, y4);
+ cdCanvasEnd(canvas);
+
+ cdCanvasBegin(canvas, CD_CLOSED_LINES);
+ cdCanvasVertex(canvas, x1, y1);
+ cdCanvasVertex(canvas, x2, y2);
+ cdCanvasVertex(canvas, x3, y3);
+ cdCanvasVertex(canvas, x4, y4);
+ cdCanvasEnd(canvas);
+}
+
+/* Draws the broken borders */
+static void iTabsDrawBrokenBorder(Ihandle* ih, ItabsType type, int x1, int y1, int x2, int y2)
+{
+ cdCanvas* canvas = ih->data->cddbuffer;
+ double step_x = (x2 - x1) / 5;
+ double step_y = (y2 - y1) / 5;
+ int old_color = cdCanvasForeground(canvas, CD_QUERY);
+
+ switch(type)
+ {
+ case ITABS_TOP:
+ cdCanvasForeground(canvas, ih->data->mid_shadow);
+ cdCanvasLine(canvas, (int)(x1 + step_x * 3.), y1, (int)(x1 + 4. * step_x), y2);
+ cdCanvasLine(canvas, (int)(x1 + step_x), y1, (int)(x1 + 2. * step_x), y2);
+
+ cdCanvasForeground(canvas, ih->data->dark_shadow);
+ cdCanvasLine(canvas, x1, y1, (int)(x1 + step_x), y2);
+ cdCanvasLine(canvas, (int)(x1 + step_x), y1 - 1, (int)(x1 + 2. * step_x), y2 - 1);
+ cdCanvasLine(canvas, (int)(x1 + step_x * 2.), y1, (int)(x1 + 3. * step_x), y2);
+ cdCanvasLine(canvas, (int)(x1 + step_x * 3.), y1 + 1, (int)(x1 + 4. * step_x), y2 + 1);
+ cdCanvasLine(canvas, (int)(x1 + step_x * 4.), y1, x2, y2);
+ break;
+
+ case ITABS_BOTTOM:
+ cdCanvasForeground(canvas, ih->data->mid_shadow);
+ cdCanvasLine(canvas, (int)(x1 + step_x * 3.), y1, (int)(x1 + 4. * step_x), y2);
+ cdCanvasLine(canvas, (int)(x1 + step_x), y1, (int)(x1 + 2. * step_x), y2);
+
+ cdCanvasForeground(canvas, ih->data->dark_shadow);
+ cdCanvasLine(canvas, x1, y1, (int)(x1 + step_x), y2);
+ cdCanvasLine(canvas, (int)(x1 + step_x), y1 - 1, (int)(x1 + 2. * step_x), y2 - 1);
+ cdCanvasLine(canvas, (int)(x1 + step_x * 2.), y1, (int)(x1 + 3. * step_x), y2);
+ cdCanvasLine(canvas, (int)(x1 + step_x * 3.), y1 + 1, (int)(x1 + 4. * step_x), y2 + 1);
+ cdCanvasLine (canvas, (int)(x1 + step_x * 4.), y1, x2, y2);
+ break;
+
+ case ITABS_LEFT:
+ cdCanvasForeground(canvas, ih->data->mid_shadow);
+ cdCanvasLine(canvas, x1, (int)(y1 + 3. * step_y), x2, (int)(y1 + step_y * 4.));
+ cdCanvasLine(canvas, x1, (int)(y1 + step_y), x2, (int)(y1 + step_y * 2.));
+
+ cdCanvasForeground(canvas, ih->data->dark_shadow);
+ cdCanvasLine(canvas, x1, y1, x2, (int)(y1 + step_y));
+ cdCanvasLine(canvas, x1 - 1, (int)(y1 + step_y), x2 - 1, (int)(y1 + step_y * 2.));
+ cdCanvasLine(canvas, x1, (int)(y1 + step_y * 2.), x2, (int)(y1 + step_y * 3.));
+ cdCanvasLine(canvas, x1 + 1, (int)(y1 + 3. * step_y), x2 + 1, (int)(y1 + step_y * 4.));
+ cdCanvasLine(canvas, x1, (int)(y1 + 4. * step_y), x2, y2);
+ break;
+
+ case ITABS_RIGHT:
+ cdCanvasForeground(canvas, ih->data->mid_shadow);
+ cdCanvasLine(canvas, x1, (int)(y1 + 3. * step_y), x2, (int)(y1 + step_y * 4.));
+ cdCanvasLine(canvas, x1, (int)(y1 + step_y), x2, (int)(y1 + step_y * 2.));
+
+ cdCanvasForeground(canvas, ih->data->dark_shadow);
+ cdCanvasLine(canvas, x1, y1, x2, (int)(y1 + step_y));
+ cdCanvasLine(canvas, x1 - 1, (int)(y1 + step_y), x2 - 1, (int)(y1 + step_y * 2.));
+ cdCanvasLine(canvas, x1, (int)(y1 + step_y * 2.), x2, (int)(y1 + step_y * 3.));
+ cdCanvasLine(canvas, x1 + 1, (int)(y1 + 3. * step_y), x2 + 1, (int)(y1 + step_y * 4.));
+ cdCanvasLine(canvas, x1, (int)(y1 + 4. * step_y), x2, y2);
+ break;
+ }
+
+ cdCanvasForeground (canvas, old_color);
+}
+
+/* Draws the borders */
+static void iTabsDrawBorder(Ihandle* ih, ItabsType type, int x1, int y1, int x2, int y2)
+{
+ cdCanvas* canvas = ih->data->cddbuffer;
+
+ switch(type)
+ {
+ case ITABS_TOP:
+ cdCanvasForeground(canvas, ih->data->light_shadow);
+ cdCanvasLine(canvas, x1, y1, x2, y2);
+ break;
+
+ case ITABS_LEFT:
+ cdCanvasForeground(canvas, ih->data->light_shadow);
+ cdCanvasLine(canvas, x1, y1, x2, y2);
+ break;
+
+ case ITABS_BOTTOM:
+ cdCanvasForeground(canvas, ih->data->dark_shadow);
+ cdCanvasLine(canvas, x1, y1, x2, y2);
+ cdCanvasForeground(canvas, ih->data->mid_shadow);
+ if (x1 > x2)
+ cdCanvasLine(canvas, x2+1, y1+1, x1-1, y2+1);
+ else
+ cdCanvasLine(canvas, x1+1, y1+1, x2-1, y2+1);
+ break;
+
+ case ITABS_RIGHT:
+ cdCanvasForeground(canvas, ih->data->dark_shadow);
+ cdCanvasLine(canvas, x1, y1, x2, y2);
+ cdCanvasForeground(canvas, ih->data->mid_shadow);
+ if (y1 > y2)
+ cdCanvasLine(canvas, x1-1, y2+1, x2-1, y1-1);
+ else
+ cdCanvasLine(canvas, x1-1, y1+1, x2-1, y2-1);
+ break;
+ }
+}
+
+/* Draws a tab corner */
+static void iTabsDrawCorner(Ihandle* ih, int color, int x1, int y1, int x2, int y2)
+{
+ cdCanvas* canvas = ih->data->cddbuffer;
+
+ cdCanvasForeground(canvas, ih->data->bgcolor);
+ cdCanvasLine(canvas, x1, y1, x2, y1);
+ cdCanvasLine(canvas, x1, y1, x1, y2);
+ cdCanvasForeground(canvas,color);
+ cdCanvasLine(canvas, x1, y2, x2, y1);
+}
+
+/* Draws a tab */
+static void iTabsDrawTab(Ihandle* ih, int tab_index, int offset)
+{
+ cdCanvas* canvas = ih->data->cddbuffer;
+ int x1, y1, x2, y2, x3, y3, x4, y4, x1a, y1a, x4a, y4a;
+ int tab_w, tab_h;
+ int x_text = 0, y_text = 0;
+ int line_thick, tab_len, full_tab_len;
+ ItabsType types[3];
+ ItabsBool beforeCurrent, afterCurrent;
+ int extraHeight = (tab_index == ih->data->current_tab) ? 0 : 1;
+ ItabsBrokenType type;
+
+ /* there is an error in visible tabs that happen when you change the tab configuration dynamically */
+ if (tab_index < 0 || tab_index > ih->data->number_of_tabs-1)
+ return;
+
+ /* Defines what type of tab that will be drawn and sets the length */
+ full_tab_len = ih->data->tabs_line.tabs_info[tab_index].tab_len;
+
+ if (tab_index == (ih->data->tabs_line.end_tab + 1))
+ {
+ type = ITABS_BROKEN_END;
+ tab_len = ih->data->tabs_line.broken_space_end;
+ }
+ else if (tab_index == (ih->data->tabs_line.start_tab - 1))
+ {
+ type = ITABS_BROKEN_START;
+ tab_len = ih->data->tabs_line.broken_space_start;
+ }
+ else if (ih->data->tabs_line.broken_center_visible == ITABS_TRUE)
+ {
+ type = ITABS_BROKEN_CENTER;
+ tab_len = ih->data->tabs_line.broken_tab_space;
+ }
+ else
+ {
+ type = ITABS_BROKEN_NONE;
+ tab_len = full_tab_len;
+ }
+
+ if (tab_len > full_tab_len)
+ tab_len = full_tab_len;
+
+ /* If the selected tab is not the first, and this tab is visible,
+ * subtracts one pixel from him and advances the tab on one pixel,
+ * to prevent the side of tab is confused with the border control. */
+ if (ih->data->current_tab != 0 &&
+ ((ih->data->tabs_line.start_tab == 0 && tab_index == 0) ||
+ (ih->data->tabs_line.start_tab > 0 && tab_index == (ih->data->tabs_line.start_tab - 1))))
+ {
+ offset += 1;
+ tab_len--;
+ full_tab_len--;
+ }
+
+ line_thick = ih->data->tabs_line.line_thick;
+
+ if (tab_index != ih->data->current_tab)
+ line_thick -= ITABS_CURRENT_EXTRA_PIXELS;
+
+ if (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT)
+ {
+ tab_w = line_thick;
+ tab_h = tab_len;
+ }
+ else
+ {
+ tab_w = tab_len;
+ tab_h = line_thick;
+ }
+
+ /* Calculates the border of tabs, text position and the sides will be drawn */
+ switch(ih->data->tabs_type)
+ {
+ case ITABS_TOP:
+ x1 = x1a = offset;
+ y1 = ih->data->h - *(ih->data->tabs_line.line_h) - 1;
+ y1a = y1 + extraHeight;
+ x2 = x1;
+ y2 = y1 + tab_h - 1;
+ x3 = x2 + tab_w - 1;
+ y3 = y2;
+ x4 = x3;
+ y4 = y1;
+ x4a = x3;
+ y4a = y1;
+
+ /* defines the order to draw */
+ types[0] = ITABS_LEFT;
+ types[1] = ITABS_TOP;
+ types[2] = ITABS_RIGHT;
+
+ break;
+
+ case ITABS_BOTTOM:
+ x1 = x1a = offset;
+ y1 = *(ih->data->tabs_line.line_h) - 1;
+ y1a = y1 - extraHeight;
+ x2 = x1;
+ y2 = y1 - tab_h + 1;
+ x3 = x2 + tab_w - 1;
+ y3 = y2;
+ x4 = x3;
+ y4 = y1;
+ x4a = x3;
+ y4a = y1;
+
+ types[0] = ITABS_LEFT;
+ types[1] = ITABS_BOTTOM;
+ types[2] = ITABS_RIGHT;
+
+ break;
+
+ case ITABS_LEFT:
+ x1 = *(ih->data->tabs_line.line_w) - 1;
+ x1a = x1 - extraHeight;
+ y1 = y1a = ih->data->h - offset - 1;
+ x2 = x1 - tab_w + 1;
+ y2 = y1;
+ x3 = x2;
+ y3 = y1 - tab_h + 1;
+ x4 = x1;
+ y4 = y3;
+ x4a = x1a;
+ y4a = y3;
+
+ types[0] = ITABS_TOP;
+ types[1] = ITABS_LEFT;
+ types[2] = ITABS_BOTTOM;
+
+ break;
+
+ case ITABS_RIGHT:
+ x1 = ih->data->w - ih->data->tabs_line.line_thick - 1;
+ x1a = x1 + extraHeight;
+ y1 = y1a = ih->data->h - offset - 1;
+ x2 = x1 + tab_w - 1;
+ y2 = y1;
+ x3 = x2;
+ y3 = y1 - tab_h + 1;
+ x4 = x1;
+ y4 = y3;
+ x4a = x1a;
+ y4a = y3;
+
+ types[0] = ITABS_TOP;
+ types[1] = ITABS_RIGHT;
+ types[2] = ITABS_BOTTOM;
+
+ break;
+
+ default:
+ return;
+ }
+
+ if (tab_index == (ih->data->current_tab - 1))
+ {
+ beforeCurrent = ITABS_TRUE;
+ afterCurrent = ITABS_FALSE;
+ }
+ else if (tab_index == (ih->data->current_tab + 1))
+ {
+ beforeCurrent = ITABS_FALSE;
+ afterCurrent = ITABS_TRUE;
+ }
+ else
+ {
+ beforeCurrent = ITABS_FALSE;
+ afterCurrent = ITABS_FALSE;
+ }
+
+ /* Draws the square of tab*/
+ cdCanvasForeground(canvas, ih->data->bgcolor);
+
+ /* Fills the square of tab */
+ iTabsFillArea(canvas, x1, y1, x2, y2, x3, y3, x4, y4);
+
+ /* Draws the border on the top */
+ iTabsDrawBorder(ih, types[1], x2, y2, x3, y3);
+
+ switch(type)
+ {
+ case ITABS_BROKEN_END:
+ switch(ih->data->tabs_type)
+ {
+ case ITABS_TOP:
+ cdCanvasClipArea(canvas, x1, x3 - ITABS_BORDER - 1, y1, y3);
+ break;
+ case ITABS_BOTTOM:
+ cdCanvasClipArea(canvas, x2, x4 - ITABS_BORDER - 1, y2, y4);
+ break;
+ case ITABS_LEFT:
+ cdCanvasClipArea(canvas, x3, x1, y3 + ITABS_BORDER + 1, y1);
+ break;
+ case ITABS_RIGHT:
+ cdCanvasClipArea(canvas, x4, x2, y4 + ITABS_BORDER + 1, y2);
+ break;
+ }
+
+ if (beforeCurrent == ITABS_TRUE)
+ iTabsDrawBrokenBorder(ih, types[0], x1a, y1a, x2, y2);
+ else if (afterCurrent == ITABS_TRUE)
+ iTabsDrawBrokenBorder(ih, types[2], x3, y3, x4a, y4a);
+ else
+ {
+ iTabsDrawBorder(ih, types[0], x1a, y1a, x2, y2);
+ iTabsDrawBrokenBorder(ih, types[2], x3, y3, x4a, y4a);
+ }
+
+ if (types[1] == ITABS_TOP)
+ iTabsDrawCorner(ih, ih->data->light_shadow, x1 + ITABS_BORDER - 1, y3 + ITABS_BORDER - 1,
+ x1 + ITABS_BORDER + 1, y3 + ITABS_BORDER - 3);
+
+ if (types[1] == ITABS_BOTTOM)
+ iTabsDrawCorner(ih, ih->data->dark_shadow, x2 + ITABS_BORDER - 1, y2 + ITABS_BORDER - 1,
+ x2 + ITABS_BORDER + 1, y2 + ITABS_BORDER + 1);
+ break;
+
+ case ITABS_BROKEN_START:
+ switch(ih->data->tabs_type)
+ {
+ case ITABS_TOP:
+ cdCanvasClipArea(canvas, x1 + ITABS_BORDER + 1, x3, y1, y3);
+ break;
+ case ITABS_BOTTOM:
+ cdCanvasClipArea(canvas, x2 + ITABS_BORDER + 1, x4, y2, y4);
+ break;
+ case ITABS_LEFT:
+ cdCanvasClipArea(canvas, x3, x1, y3, y1 - ITABS_BORDER - 1);
+ break;
+ case ITABS_RIGHT:
+ cdCanvasClipArea(canvas, x4, x2, y4, y2 - ITABS_BORDER - 1);
+ break;
+ }
+
+ if (beforeCurrent == ITABS_TRUE)
+ iTabsDrawBrokenBorder(ih, types[0], x1a, y1a, x2, y2);
+ else if (afterCurrent == ITABS_TRUE)
+ iTabsDrawBrokenBorder(ih, types[2], x3, y3, x4a, y4a);
+ else
+ {
+ iTabsDrawBrokenBorder(ih, types[0], x1a, y1a, x2, y2);
+ iTabsDrawBorder(ih, types[2], x3, y3, x4a, y4a);
+ }
+
+ if (types[1] == ITABS_TOP)
+ iTabsDrawCorner(ih, ih->data->dark_shadow, x3 + ITABS_BORDER - 1, y3 + ITABS_BORDER - 1,
+ x3 + ITABS_BORDER - 3, y3 + ITABS_BORDER - 3);
+
+ if (types[1] == ITABS_BOTTOM)
+ iTabsDrawCorner(ih, ih->data->dark_shadow, x4 + ITABS_BORDER - 1, y2 + ITABS_BORDER - 1,
+ x4 + ITABS_BORDER - 3, y2 + ITABS_BORDER + 1);
+ break;
+
+ case ITABS_BROKEN_CENTER:
+ switch(ih->data->tabs_type)
+ {
+ case ITABS_TOP:
+ cdCanvasClipArea (canvas, x1 + ITABS_BORDER + 1, x3 - ITABS_BORDER - 1,
+ y1 + ITABS_BORDER + 1, y3 - ITABS_BORDER - 1);
+ break;
+ case ITABS_BOTTOM:
+ cdCanvasClipArea (canvas, x2 + ITABS_BORDER + 1, x4 - ITABS_BORDER - 1,
+ y2 + ITABS_BORDER + 1, y4 - ITABS_BORDER - 1);
+ break;
+ case ITABS_LEFT:
+ cdCanvasClipArea (canvas, x3 + ITABS_BORDER + 1, x1 - ITABS_BORDER - 1,
+ y3 + ITABS_BORDER + 1, y1 - ITABS_BORDER - 1);
+ break;
+ case ITABS_RIGHT:
+ cdCanvasClipArea (canvas, x4 + ITABS_BORDER + 1, x2 - ITABS_BORDER - 1,
+ y4 + ITABS_BORDER + 1, y2 - ITABS_BORDER - 1);
+ break;
+ }
+
+ iTabsDrawBrokenBorder(ih, types[0], x1, y1, x2, y2);
+ iTabsDrawBrokenBorder(ih, types[2], x3, y3, x4, y4);
+ break;
+
+ case ITABS_BROKEN_NONE:
+ switch(ih->data->tabs_type)
+ {
+ case ITABS_TOP:
+ cdCanvasClipArea (canvas, x1 + ITABS_BORDER + 1, x3 - ITABS_BORDER - 1,
+ y1 + ITABS_BORDER + 1, y3 - ITABS_BORDER - 1);
+ break;
+ case ITABS_BOTTOM:
+ cdCanvasClipArea (canvas, x2 + ITABS_BORDER + 1, x4 - ITABS_BORDER - 1,
+ y2 + ITABS_BORDER + 1, y4 - ITABS_BORDER - 1);
+ break;
+ case ITABS_LEFT:
+ cdCanvasClipArea (canvas, x3 + ITABS_BORDER + 1, x1 - ITABS_BORDER - 1,
+ y3 + ITABS_BORDER + 1, y1 - ITABS_BORDER - 1);
+ break;
+ case ITABS_RIGHT:
+ cdCanvasClipArea (canvas, x4 + ITABS_BORDER + 1, x2 - ITABS_BORDER - 1,
+ y4 + ITABS_BORDER + 1, y2 - ITABS_BORDER - 1);
+ break;
+ }
+
+ if (beforeCurrent == ITABS_TRUE)
+ iTabsDrawBorder(ih, types[0], x1a, y1a, x2, y2);
+ else if (afterCurrent == ITABS_TRUE)
+ iTabsDrawBorder(ih, types[2], x3, y3, x4a, y4a);
+ else
+ {
+ iTabsDrawBorder(ih, types[0], x1a, y1a, x2, y2);
+ iTabsDrawBorder(ih, types[2], x3, y3, x4a, y4a);
+ }
+
+ if (types[1] == ITABS_TOP)
+ {
+ iTabsDrawCorner(ih, ih->data->light_shadow, x1 + ITABS_BORDER - 1, y3 + ITABS_BORDER - 1,
+ x1 + ITABS_BORDER + 1, y3 + ITABS_BORDER - 3);
+
+ iTabsDrawCorner(ih, ih->data->dark_shadow, x3 + ITABS_BORDER - 1, y3 + ITABS_BORDER - 1,
+ x3 + ITABS_BORDER - 3, y3 + ITABS_BORDER - 3);
+ }
+
+ if (types[1] == ITABS_BOTTOM)
+ {
+ iTabsDrawCorner(ih, ih->data->dark_shadow, x2 + ITABS_BORDER - 1, y2 + ITABS_BORDER - 1,
+ x2 + ITABS_BORDER + 1, y2 + ITABS_BORDER + 1);
+
+ iTabsDrawCorner(ih, ih->data->dark_shadow, x4 + ITABS_BORDER - 1, y2 + ITABS_BORDER - 1,
+ x4 + ITABS_BORDER - 3, y2 + ITABS_BORDER + 1);
+ }
+
+ if (types[1] == ITABS_LEFT)
+ {
+ iTabsDrawCorner(ih, ih->data->light_shadow, x3 + ITABS_BORDER - 1, y1 + ITABS_BORDER - 1,
+ x3 + ITABS_BORDER + 1, y1 + ITABS_BORDER - 3);
+
+ iTabsDrawCorner(ih, ih->data->dark_shadow, x3 + ITABS_BORDER - 1, y3 + ITABS_BORDER - 1,
+ x3 + ITABS_BORDER + 1, y3 + ITABS_BORDER + 1);
+ }
+
+ if (types[1] == ITABS_RIGHT)
+ {
+ iTabsDrawCorner(ih, ih->data->dark_shadow, x2 + ITABS_BORDER - 1, y2 + ITABS_BORDER - 1,
+ x2 + ITABS_BORDER - 3, y2 + ITABS_BORDER - 3);
+
+ iTabsDrawCorner(ih, ih->data->dark_shadow, x2 + ITABS_BORDER - 1, y4 + ITABS_BORDER - 1,
+ x2 + ITABS_BORDER - 3, y4 + ITABS_BORDER + 1);
+ }
+
+ break;
+ }
+
+ if (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT)
+ tab_h = full_tab_len;
+ else
+ tab_w = full_tab_len;
+
+ switch(ih->data->tabs_type)
+ {
+ case ITABS_TOP:
+ x_text = x1 + tab_w / 2;
+ y_text = y1 + tab_h / 2;
+ break;
+ case ITABS_BOTTOM:
+ x_text = x2 + tab_w / 2;
+ y_text = y2 + tab_h / 2;
+ break;
+ case ITABS_LEFT:
+ x_text = x1 - tab_w / 2;
+ y_text = y1 - tab_h / 2;
+ break;
+ case ITABS_RIGHT:
+ x_text = x2 - tab_w / 2;
+ y_text = y2 - tab_h / 2;
+ break;
+ }
+ cdCanvasTextAlignment (canvas, CD_CENTER);
+
+ /* Draws the text */
+ cdCanvasForeground (canvas, ih->data->fgcolor);
+
+ if (ih->data->tabs_orientation == ITABS_VERTICAL)
+ cdCanvasTextOrientation(canvas, 90);
+ else
+ cdCanvasTextOrientation(canvas, 0);
+
+ {
+ char* tab_font = NULL;
+ int bold = 0;
+
+ if (iupdrvIsActive(ih) && IupGetInt(ih->data->tabs_line.tabs_info[tab_index].ihandle, "ACTIVE"))
+ {
+ if (tab_index == ih->data->current_tab)
+ {
+ tab_font = ih->data->font_active;
+ bold = 1;
+ }
+ }
+ else
+ {
+ cdCanvasForeground(canvas, CD_DARK_GRAY);
+ tab_font = ih->data->font_inactive;
+ }
+
+ iTabsSetCDFont(ih, tab_font, bold);
+ }
+
+ cdCanvasClip(canvas, CD_CLIPAREA);
+
+ {
+ char* text = iupAttribGet(ih->data->tabs_line.tabs_info[tab_index].ihandle, "TABTITLE");
+ if (!text) text = " ";
+
+ if (ih->data->has_focus && (tab_index == ih->data->current_tab))
+ {
+ int x1, y1, x2, y2;
+ cdCanvasGetTextBox(canvas, x_text, y_text, text, &x1, &x2, &y1, &y2);
+ if (ih->data->tabs_orientation == ITABS_VERTICAL)
+ {y1-=2; y2+=2;}
+ else
+ {x1-=2; x2+=2;}
+ ih->data->focus_x1 = x1;
+ ih->data->focus_x2 = x2;
+ ih->data->focus_y1 = y1;
+ ih->data->focus_y2 = y2;
+ }
+
+ cdCanvasText(canvas, x_text, y_text, text);
+ }
+
+ cdCanvasClip (canvas, CD_CLIPOFF);
+}
+
+/* Draws the lower border of the tab labels */
+static void iTabsDrawLabelLowerBorder(Ihandle* ih, int start, int end)
+{
+ switch(ih->data->tabs_type)
+ {
+ case ITABS_TOP:
+ iTabsDrawBorder(ih, ITABS_TOP, start, ih->data->h - *(ih->data->tabs_line.line_h) - 1 - 1,
+ end, ih->data->h - *(ih->data->tabs_line.line_h) - 1 - 1);
+ break;
+
+ case ITABS_LEFT:
+ if (!start)
+ iTabsDrawBorder(ih, ITABS_LEFT, *(ih->data->tabs_line.line_w) - 1 + 1, ih->data->h - 1 - start,
+ *(ih->data->tabs_line.line_w) - 1 + 1, ih->data->h - 1 - end);
+ else
+ iTabsDrawBorder(ih, ITABS_LEFT, *(ih->data->tabs_line.line_w) - 1 + 1, ih->data->h - 1 - start,
+ *(ih->data->tabs_line.line_w) - 1 + 1, 0);
+ break;
+
+ case ITABS_BOTTOM:
+ iTabsDrawBorder(ih, ITABS_BOTTOM, start, *(ih->data->tabs_line.line_h) - 1 + 1,
+ end, *(ih->data->tabs_line.line_h) - 1 + 1);
+ break;
+
+ case ITABS_RIGHT:
+ if (!start)
+ iTabsDrawBorder(ih, ITABS_RIGHT, ih->data->w - *(ih->data->tabs_line.line_w) - 1 - 1, ih->data->h - 1 - start,
+ ih->data->w - *(ih->data->tabs_line.line_w) - 1 - 1, ih->data->h - 1 - end);
+ else
+ iTabsDrawBorder(ih, ITABS_RIGHT, ih->data->w - *(ih->data->tabs_line.line_w) - 1 - 1, ih->data->h - 1 - start,
+ ih->data->w - *(ih->data->tabs_line.line_w) - 1 - 1, 0);
+ break;
+ }
+}
+
+/* Draws a normal button */
+static void iTabsDrawButton(Ihandle* ih, int x, int y, int width, int height)
+{
+ cdCanvas* canvas = ih->data->cddbuffer;
+ int old_color = cdCanvasForeground(canvas, ih->data->bgcolor);
+
+ cdCanvasBegin(canvas, CD_FILL);
+ cdCanvasVertex(canvas, x, y);
+ cdCanvasVertex(canvas, x + width - 1, y);
+ cdCanvasVertex(canvas, x + width - 1, y + height - 1);
+ cdCanvasVertex(canvas, x, y + height - 1);
+ cdCanvasEnd(canvas);
+
+ cdCanvasForeground (canvas, old_color);
+
+ iTabsDrawBorder(ih, ITABS_TOP, x + width - 1, y + height - 1, x, y + height - 1);
+ iTabsDrawBorder(ih, ITABS_LEFT, x, y + height - 1, x, y);
+ iTabsDrawBorder(ih, ITABS_BOTTOM, x, y, x + width - 1, y);
+ iTabsDrawBorder(ih, ITABS_RIGHT, x + width - 1, y, x + width - 1, y + height - 1);
+}
+
+/* Draws arrows
+*
+* x, y ..........: lower border of the bounding box
+* width, height .: dimensions of the bounding box
+* type ..........: ITABS_LEFT, ITABS_RIGHT, ITABS_TOP, ITABS_BOTTOM
+*/
+static void iTabsDrawArrow(Ihandle* ih, int x, int y, int width, int height, int type)
+{
+ cdCanvas* canvas = ih->data->cddbuffer;
+ long old_color;
+
+ if (iupdrvIsActive(ih))
+ old_color = cdCanvasForeground(canvas, CD_BLACK);
+ else
+ old_color = cdCanvasForeground(canvas, CD_DARK_GRAY);
+
+ cdCanvasBegin(canvas, CD_CLOSED_LINES);
+ switch(type)
+ {
+ case ITABS_LEFT:
+ cdCanvasVertex(canvas, x + 4, y + height / 2);
+ cdCanvasVertex(canvas, x + width - 1 - 4, y + height - 1 - 4);
+ cdCanvasVertex(canvas, x + width - 1 - 4, y + 4);
+ break;
+
+ case ITABS_RIGHT:
+ cdCanvasVertex(canvas, x + width - 1 - 4, y + height / 2);
+ cdCanvasVertex(canvas, x + 4, y + height - 1 - 4);
+ cdCanvasVertex(canvas, x + 4, y + 4);
+ break;
+
+ case ITABS_TOP:
+ cdCanvasVertex(canvas, x + 4, y + 4);
+ cdCanvasVertex(canvas, x + width / 2, y + height - 1 - 4);
+ cdCanvasVertex(canvas, x + width - 1 - 4, y + 4);
+ break;
+
+ case ITABS_BOTTOM:
+ cdCanvasVertex(canvas, x + 4, y + height - 1 - 4);
+ cdCanvasVertex(canvas, x + width / 2, y + 4);
+ cdCanvasVertex(canvas, x + width - 1 - 4, y + height - 1 - 4);
+ break;
+ }
+ cdCanvasEnd(canvas);
+
+ cdCanvasBegin(canvas, CD_FILL);
+ switch(type)
+ {
+ case ITABS_LEFT:
+ cdCanvasVertex(canvas, x + 4, y + height / 2);
+ cdCanvasVertex(canvas, x + width - 1 - 4, y + height - 1 - 4);
+ cdCanvasVertex(canvas, x + width - 1 - 4, y + 4);
+ break;
+
+ case ITABS_RIGHT:
+ cdCanvasVertex(canvas, x + width - 1 - 4, y + height / 2);
+ cdCanvasVertex(canvas, x + 4, y + height - 1 - 4);
+ cdCanvasVertex(canvas, x + 4, y + 4);
+ break;
+
+ case ITABS_TOP:
+ cdCanvasVertex(canvas, x + 4, y + 4);
+ cdCanvasVertex(canvas, x + width / 2, y + height - 1 - 4);
+ cdCanvasVertex(canvas, x + width - 1 - 4, y + 4);
+ break;
+
+ case ITABS_BOTTOM:
+ cdCanvasVertex(canvas, x + 4, y + height - 1 - 4);
+ cdCanvasVertex(canvas, x + width / 2, y + 4);
+ cdCanvasVertex(canvas, x + width - 1 - 4, y + height - 1 - 4);
+ break;
+ }
+ cdCanvasEnd(canvas);
+
+ cdCanvasForeground(canvas, old_color);
+}
+
+/* Draws dots "..." */
+static void iTabsDrawDots(Ihandle* ih, int x, int y, int width, int height)
+{
+ x -= 1;
+ y += height / 3 - 1;
+ cdCanvasRect(ih->data->cddbuffer, x + 3, x + 4, y + 3, y + 4);
+ cdCanvasRect(ih->data->cddbuffer, x + width / 2, x+ width / 2 + 1 , y + 3, y + 4);
+ cdCanvasRect(ih->data->cddbuffer, x + width - 1 - 3, x + width - 1 - 2, y + 3, y + 4);
+}
+
+/* Draws the scroll_visible with the dots button "..." */
+static void iTabsDrawScroll(Ihandle* ih)
+{
+ int x = ih->data->tabs_line.scroll_x,
+ y = ih->data->tabs_line.scroll_y,
+ w = ih->data->tabs_line.scroll_w,
+ h = ih->data->tabs_line.scroll_h;
+ int scroll_updown;
+
+ if (ih->data->tabs_type == ITABS_TOP ||
+ ih->data->tabs_type == ITABS_BOTTOM)
+ scroll_updown = 0;
+ else
+ scroll_updown = 1;
+
+ if (ih->data->tabs_orientation == ITABS_HORIZONTAL)
+ {
+ int x3 = w / 3;
+
+ iTabsDrawButton(ih, x, y, x3, h);
+ iTabsDrawArrow (ih, x, y, x3, h, scroll_updown ? ITABS_TOP : ITABS_LEFT);
+
+ iTabsDrawButton(ih, x + x3, y, x3, h);
+ iTabsDrawDots (ih, x + x3, y, x3, h);
+
+ iTabsDrawButton(ih, x + 2 * x3, y, x3, h );
+ iTabsDrawArrow (ih, x + 2 * x3, y, x3, h, scroll_updown ? ITABS_BOTTOM : ITABS_RIGHT);
+ }
+ else
+ {
+ int y3 = h / 3;
+
+ iTabsDrawButton(ih, x, y, w, y3);
+ iTabsDrawArrow (ih, x, y, w, y3, scroll_updown ? ITABS_BOTTOM : ITABS_RIGHT);
+
+ iTabsDrawButton(ih, x, y + y3, w, y3);
+ iTabsDrawDots (ih, x, y + y3, w, y3);
+
+ iTabsDrawButton(ih, x, y + 2 * y3, w, y3);
+ iTabsDrawArrow (ih, x, y + 2 * y3, w, y3, scroll_updown ? ITABS_TOP : ITABS_LEFT);
+ }
+
+ iTabsDrawCorner(ih, ih->data->dark_shadow, x + w - 1, y + h - 1, x + w - 3, y + h - 3);
+ iTabsDrawCorner(ih, ih->data->dark_shadow, x + w - 1, y, x + w - 3, y + 2);
+ iTabsDrawCorner(ih, ih->data->light_shadow, x, y + h - 1, x + 2, y + h - 3);
+ iTabsDrawCorner(ih, ih->data->dark_shadow, x, y, x + 2, y + 2);
+}
+
+/* Clear tab background */
+static void iTabsDrawBackground(Ihandle* ih)
+{
+ int x1, y1, x2, y2, x3, y3, x4, y4;
+ cdCanvas* canvas = ih->data->cddbuffer;
+
+ cdCanvasBackground(canvas, cdIupConvertColor(iupControlBaseGetParentBgColor(ih)));
+ cdCanvasClear(canvas);
+
+ switch(ih->data->tabs_type)
+ {
+ case ITABS_TOP:
+ x1 = 0;
+ y1 = ih->data->h - *(ih->data->tabs_line.line_h) - 1 - 1;
+ x2 = x1;
+ y2 = 0;
+ x3 = ih->data->w - 1;
+ y3 = y2;
+ x4 = x3;
+ y4 = y1;
+ break;
+
+ case ITABS_BOTTOM:
+ x1 = 0;
+ y1 = *(ih->data->tabs_line.line_h) - 1 + 1;
+ x2 = x1;
+ y2 = ih->data->h - 1;
+ x3 = ih->data->w - 1;
+ y3 = y2;
+ x4 = x3;
+ y4 = y1;
+ break;
+
+ case ITABS_LEFT:
+ x1 = *(ih->data->tabs_line.line_w) - 1 + 1;
+ y1 = ih->data->h - 1;
+ x2 = ih->data->w - 1;
+ y2 = y1;
+ x3 = x2;
+ y3 = 0;
+ x4 = x1;
+ y4 = y3;
+ break;
+
+ case ITABS_RIGHT:
+ x1 = ih->data->w - *(ih->data->tabs_line.line_w) - 1 - 1;
+ y1 = ih->data->h - 1;
+ x2 = 0;
+ y2 = y1;
+ x3 = x2;
+ y3 = 0;
+ x4 = x1;
+ y4 = y3;
+ break;
+
+ default:
+ return;
+ }
+
+ /* Foreground color */
+ cdCanvasForeground(canvas, ih->data->bgcolor);
+
+ cdCanvasBegin(canvas, CD_FILL);
+ cdCanvasVertex(canvas, x1, y1);
+ cdCanvasVertex(canvas, x2, y2);
+ cdCanvasVertex(canvas, x3, y3);
+ cdCanvasVertex(canvas, x4, y4);
+ cdCanvasEnd(canvas);
+
+ cdCanvasBegin(canvas, CD_CLOSED_LINES);
+ cdCanvasVertex(canvas, x1, y1);
+ cdCanvasVertex(canvas, x2, y2);
+ cdCanvasVertex(canvas, x3, y3);
+ cdCanvasVertex(canvas, x4, y4);
+ cdCanvasEnd(canvas);
+}
+
+/* Draws tab borders */
+static void iTabsDrawTabsBorders(Ihandle* ih)
+{
+ int x1, y1, x2, y2, x3, y3, x4, y4;
+ ItabsType types[3];
+
+ switch(ih->data->tabs_type)
+ {
+ case ITABS_TOP:
+ x1 = 0;
+ y1 = ih->data->h - *(ih->data->tabs_line.line_h) - 1 - 1;
+ x2 = x1;
+ y2 = 0;
+ x3 = ih->data->w - 1;
+ y3 = y2;
+ x4 = x3;
+ y4 = y1;
+
+ /* defines the order to draw */
+ types[0] = ITABS_LEFT;
+ types[1] = ITABS_BOTTOM;
+ types[2] = ITABS_RIGHT;
+ break;
+
+ case ITABS_BOTTOM:
+ x1 = 0;
+ y1 = *(ih->data->tabs_line.line_h) - 1 + 1;
+ x2 = x1;
+ y2 = ih->data->h - 1;
+ x3 = ih->data->w - 1;
+ y3 = y2;
+ x4 = x3;
+ y4 = y1;
+
+ /* defines the order to draw */
+ types[0] = ITABS_LEFT;
+ types[1] = ITABS_TOP;
+ types[2] = ITABS_RIGHT;
+ break;
+
+ case ITABS_LEFT:
+ x1 = *(ih->data->tabs_line.line_w) - 1 + 1;
+ y1 = ih->data->h - 1;
+ x2 = ih->data->w - 1;
+ y2 = y1;
+ x3 = x2;
+ y3 = 0;
+ x4 = x1;
+ y4 = y3;
+
+ /* defines the order to draw */
+ types[0] = ITABS_TOP;
+ types[1] = ITABS_RIGHT;
+ types[2] = ITABS_BOTTOM;
+ break;
+
+ case ITABS_RIGHT:
+ x1 = ih->data->w - *(ih->data->tabs_line.line_w) - 1 - 1;
+ y1 = ih->data->h - 1;
+ x2 = 0;
+ y2 = y1;
+ x3 = x2;
+ y3 = 0;
+ x4 = x1;
+ y4 = y3;
+
+ /* defines the order to draw */
+ types[0] = ITABS_TOP;
+ types[1] = ITABS_LEFT;
+ types[2] = ITABS_BOTTOM;
+ break;
+
+ default:
+ return;
+ }
+
+ iTabsDrawBorder(ih, types[0], x1, y1, x2, y2);
+ iTabsDrawBorder(ih, types[1], x2, y2, x3, y3);
+ iTabsDrawBorder(ih, types[2], x3, y3, x4, y4);
+}
+
+/* Draws all the tabs and the scroll_visible, if it exists */
+static void iTabsDrawLineOfTabs(Ihandle* ih)
+{
+ int offset = 0;
+ int c = 0;
+
+ /* draws decorations, when necessary */
+ if (ih->data->tabs_line.broken_start_visible == ITABS_TRUE)
+ {
+ iTabsDrawTab(ih, ih->data->tabs_line.start_tab - 1, offset);
+ offset += ih->data->tabs_line.broken_space_start;
+ }
+
+ if (ih->data->tabs_line.broken_center_visible == ITABS_FALSE)
+ {
+ for(c = ih->data->tabs_line.start_tab; c <= ih->data->tabs_line.end_tab; c++)
+ {
+ if (c != ih->data->current_tab)
+ {
+ iTabsDrawTab(ih, c, offset);
+ offset += ih->data->tabs_line.tabs_info[c].tab_len;
+ }
+ else
+ {
+ if (ih->data->current_tab != 0)
+ iTabsDrawLabelLowerBorder(ih, 0, offset);
+
+ iTabsDrawTab(ih, c, offset);
+ offset += ih->data->tabs_line.tabs_info[c].tab_len;
+ iTabsDrawLabelLowerBorder(ih, offset - 1, ih->data->w);
+ }
+ }
+ }
+ else
+ {
+ if (ih->data->current_tab != 0)
+ iTabsDrawLabelLowerBorder(ih, 0, offset);
+
+ iTabsDrawTab(ih, ih->data->current_tab, offset);
+ offset += ih->data->tabs_line.broken_tab_space;
+ iTabsDrawLabelLowerBorder(ih, offset, ih->data->w);
+ }
+
+ if (ih->data->tabs_line.broken_end_visible)
+ {
+ iTabsDrawTab(ih, ih->data->tabs_line.end_tab + 1, offset);
+ offset += ih->data->tabs_line.broken_space_end;
+ }
+
+ if (ih->data->tabs_line.scroll_visible == ITABS_TRUE)
+ iTabsDrawScroll(ih);
+}
+
+/* Calls the user callback to change of tab */
+static int iTabsCallTabChangeCb(Ihandle* ih, Ihandle* new_tab, Ihandle* old_tab)
+{
+ IFnnn cb = NULL;
+
+ if (!IupGetInt(new_tab, "ACTIVE"))
+ return IUP_IGNORE;
+
+ cb = (IFnnn)IupGetCallback(ih, "TABCHANGE_CB");
+ if (!cb)
+ return IUP_DEFAULT;
+
+ return cb(ih, new_tab, old_tab);
+}
+
+/* ========================================================================= */
+/* Functions to calculate the tab sizes and the tab visibilities */
+/* ========================================================================= */
+
+/* Calculates the box size that involves the text of the tabs */
+static void iTabsCalcTextSize(Ihandle* ih)
+{
+ char* title;
+ int t, text_w, size, tabsize;
+ int text_width, text_height;
+
+ iupdrvFontGetCharSize(ih, NULL, &text_height);
+ ih->data->tabs_line.text_h = text_height;
+
+ /* Get the global size of tab */
+ size = iupAttribGetInt(ih, "TABSIZE");
+
+ for(t = 0; t < ih->data->number_of_tabs; t++)
+ {
+ Ihandle* tab_child = ih->data->tabs_line.tabs_info[t].ihandle;
+
+ title = iupAttribGet(tab_child, "TABTITLE");
+ if (!title) title = " ";
+
+ /* Get the size of an specific tab */
+ tabsize = iupAttribGetInt(tab_child, "TABSIZE");
+ text_width = iupdrvFontGetStringWidth(ih, title);
+
+ /* Uses the specific size if the value is larger than the minimum size */
+ if (tabsize > text_width)
+ text_w = tabsize;
+ else
+ {
+ /* Else, uses the tab size if the value is larger than the minimum size */
+ if (size > text_width)
+ text_w = size;
+ else /* otherwise, uses the minimum size */
+ text_w = text_width;
+ }
+
+ ih->data->tabs_line.tabs_info[t].text_w = text_w;
+ }
+}
+
+static void iTabsCalcTabSize(Ihandle* ih)
+{
+ int t, tab_len, tab_thick;
+
+ iTabsCalcTextSize(ih);
+
+ ih->data->tabs_line.line_thick = 0;
+ ih->data->tabs_line.line_length = 0;
+
+ for(t = 0; t < ih->data->number_of_tabs; t++)
+ {
+ /* initialize with the text size */
+ if (ih->data->tabs_render == ITABS_RENDER_PLANE_ALIGN)
+ {
+ tab_len = ih->data->tabs_line.tabs_info[t].text_w;
+ tab_thick = ih->data->tabs_line.text_h;
+ }
+ else
+ {
+ tab_len = ih->data->tabs_line.text_h;
+ tab_thick = ih->data->tabs_line.tabs_info[t].text_w;
+ }
+
+ /* add the borders */
+ if (abs(ih->data->current_tab - t) == 1) /* if neighbor of the current tab */
+ tab_len += ITABS_BORDER;
+ else if (t == ih->data->current_tab) /* if tab is the current tab */
+ {
+ if (ih->data->current_tab == 0 || ih->data->current_tab == (ih->data->number_of_tabs - 1))
+ tab_len += 2 * ITABS_BORDER;
+ else
+ tab_len += 3 * ITABS_BORDER;
+ }
+ else
+ tab_len += 2 * ITABS_BORDER;
+
+ /* add margins */
+ if (ih->data->tabs_render == ITABS_RENDER_PLANE_ALIGN)
+ tab_len += 2 * ITABS_MARGIN;
+ else
+ tab_len += 2 * ITABS_SPACING;
+
+ ih->data->tabs_line.tabs_info[t].tab_len = tab_len;
+
+ ih->data->tabs_line.line_length += tab_len; /* is always the sum on the lengths */
+
+ if (tab_thick > ih->data->tabs_line.line_thick) /* is always the maximum thickness */
+ ih->data->tabs_line.line_thick = tab_thick;
+ }
+
+ if (ih->data->tabs_render == ITABS_RENDER_PLANE_ALIGN)
+ ih->data->tabs_line.line_thick += 2 * ITABS_SPACING + 2 * ITABS_BORDER;
+ else
+ ih->data->tabs_line.line_thick += 2 * ITABS_MARGIN + 2 * ITABS_BORDER;
+
+ if (ih->data->tabs_line.line_thick < ih->data->tabs_line.scroll_thick)
+ ih->data->tabs_line.line_thick = ih->data->tabs_line.scroll_thick;
+
+ /* extra pixels of the selected tab */
+ ih->data->tabs_line.line_thick += ITABS_CURRENT_EXTRA_PIXELS;
+}
+
+static void iTabsCalcScrollPos(Ihandle* ih)
+{
+ int x1=0, y1=0, x2=0, y2=0;
+
+ switch(ih->data->tabs_type)
+ {
+ case ITABS_TOP:
+ ih->data->tabs_line.scroll_x = ih->data->w - ih->data->tabs_line.scroll_w - 2;
+ ih->data->tabs_line.scroll_y = ih->data->h - *(ih->data->tabs_line.line_h);
+ y1=0; y2=*(ih->data->tabs_line.line_h);
+ x1=0; x2=ih->data->w-1;
+ break;
+ case ITABS_BOTTOM:
+ ih->data->tabs_line.scroll_x = ih->data->w - ih->data->tabs_line.scroll_w - 2;
+ ih->data->tabs_line.scroll_y = *(ih->data->tabs_line.line_h) - 2 - ih->data->tabs_line.scroll_h + 1;
+ y1=ih->data->h - *(ih->data->tabs_line.line_h); y2=ih->data->h-1;
+ x1=0; x2=ih->data->w-1;
+ break;
+ case ITABS_LEFT:
+ ih->data->tabs_line.scroll_x = *(ih->data->tabs_line.line_w) - 2 - ih->data->tabs_line.scroll_w + 1;
+ ih->data->tabs_line.scroll_y = 0;
+ x1=0; x2=*(ih->data->tabs_line.line_w);
+ y1=0; y2=ih->data->h-1;
+ break;
+ case ITABS_RIGHT:
+ ih->data->tabs_line.scroll_x = ih->data->w - *(ih->data->tabs_line.line_w);
+ ih->data->tabs_line.scroll_y = 0;
+ x1=ih->data->w-*(ih->data->tabs_line.line_w); x2=ih->data->w-1;
+ y1=0; y2=ih->data->h-1;
+ break;
+ }
+
+ iupAttribSetStrf(ih, "TIPRECT", "%d %d %d %d", x1, y1, x2, y2);
+}
+
+/* Calculates the visibility of tabs */
+static void iTabsCalcVisibleTabs(Ihandle* ih)
+{
+ int line_length = *ih->data->max_line_length;
+ int old_line_length;
+ int t, t_aux = 0;
+
+ /* Verifies if all the tabs are visible */
+ if (*ih->data->max_line_length > ih->data->tabs_line.line_length)
+ {
+ /* All the tabs are visible */
+ ih->data->tabs_line.scroll_visible = ITABS_FALSE;
+ ih->data->tabs_line.broken_start_visible = ITABS_FALSE;
+ ih->data->tabs_line.broken_end_visible = ITABS_FALSE;
+ ih->data->tabs_line.broken_center_visible = ITABS_FALSE;
+
+ ih->data->tabs_line.start_tab = 0;
+ ih->data->tabs_line.end_tab = ih->data->number_of_tabs - 1;
+
+ return;
+ }
+
+ /* Subtracts space of scroll */
+ line_length -= ih->data->tabs_line.scroll_len + ITABS_SCROLL_SPACING;
+
+ ih->data->tabs_line.scroll_visible = ITABS_TRUE;
+
+ /* Verifies if current tab is smaller than start tab, adjusting if necessary */
+ if (ih->data->current_tab < ih->data->tabs_line.start_tab)
+ ih->data->tabs_line.start_tab = ih->data->current_tab;
+
+ /* Processes tabs in sequence, until the total length overcome the virtual length */
+ t = ih->data->tabs_line.start_tab;
+ old_line_length = line_length;
+
+ while(1)
+ {
+ do
+ {
+ while (ih->data->tabs_line.start_tab < ih->data->current_tab)
+ {
+ if (ih->data->tabs_line.tabs_info[ih->data->tabs_line.start_tab].tab_len <= line_length)
+ break;
+ ih->data->tabs_line.start_tab++;
+ }
+
+ for(t = ih->data->tabs_line.start_tab, t_aux = 0;
+ t < ih->data->number_of_tabs; t++, t_aux++)
+ {
+ if (ih->data->tabs_line.tabs_info[t].tab_len > line_length)
+ {
+ if ((t - 1) < ih->data->current_tab)
+ {
+ while (t_aux > 0)
+ {
+ line_length +=
+ ih->data->tabs_line.tabs_info[t - t_aux].tab_len;
+
+ if (ih->data->tabs_line.start_tab == 0)
+ {
+ line_length -= ITABS_BROKEN_TAB;
+ ih->data->tabs_line.broken_start_visible = ITABS_TRUE;
+ }
+
+ ih->data->tabs_line.start_tab++;
+
+ if (ih->data->tabs_line.tabs_info[t].tab_len <= line_length)
+ break;
+
+ t_aux--;
+ }
+
+ if (ih->data->tabs_line.tabs_info[t].tab_len > line_length)
+ {
+ /* no success */
+ ih->data->tabs_line.broken_center_visible = ITABS_TRUE;
+ break; /* break two loops */
+ }
+ }
+ else
+ {
+ t--;
+ break; /* break two loops */
+ }
+ }
+
+ line_length -= ih->data->tabs_line.tabs_info[t].tab_len;
+ ih->data->tabs_line.broken_center_visible = ITABS_FALSE;
+ }
+
+ if (t == ih->data->number_of_tabs)
+ t--;
+ }
+ while (t < ih->data->current_tab);
+
+ if (ih->data->tabs_line.start_tab > 0 &&
+ ih->data->tabs_line.broken_center_visible != ITABS_TRUE)
+ {
+ if (ih->data->tabs_line.tabs_info[ih->data->tabs_line.start_tab - 1].tab_len <
+ (line_length - ITABS_BROKEN_TAB))
+ {
+ ih->data->tabs_line.start_tab--;
+ line_length = old_line_length;
+ continue;
+ }
+ }
+
+ break;
+ }
+
+ if (ih->data->tabs_line.start_tab > 0)
+ {
+ t = ih->data->tabs_line.start_tab;
+ line_length = old_line_length;
+ line_length -= ITABS_BROKEN_TAB;
+ ih->data->tabs_line.broken_start_visible = ITABS_TRUE;
+
+ while(1)
+ {
+ do
+ {
+ while (ih->data->tabs_line.start_tab < ih->data->current_tab)
+ {
+ if (ih->data->tabs_line.tabs_info[ih->data->tabs_line.start_tab].tab_len <= line_length)
+ break;
+ ih->data->tabs_line.start_tab++;
+ }
+
+ for(t = ih->data->tabs_line.start_tab, t_aux = 0;
+ t < ih->data->number_of_tabs; t++, t_aux++)
+ {
+ if (ih->data->tabs_line.tabs_info[t].tab_len > line_length)
+ {
+ if ((t - 1) < ih->data->current_tab)
+ {
+ while (t_aux > 0)
+ {
+ line_length +=
+ ih->data->tabs_line.tabs_info[t - t_aux].tab_len;
+
+ if (ih->data->tabs_line.start_tab == 0)
+ {
+ line_length -= ITABS_BROKEN_TAB;
+ ih->data->tabs_line.broken_start_visible = ITABS_TRUE;
+ }
+
+ ih->data->tabs_line.start_tab++;
+
+ if (ih->data->tabs_line.tabs_info[t].tab_len <= line_length)
+ break;
+
+ t_aux--;
+ }
+
+ if (ih->data->tabs_line.tabs_info[t].tab_len > line_length)
+ {
+ /* no success */
+ ih->data->tabs_line.broken_center_visible = ITABS_TRUE;
+ break; /* break two loops */
+ }
+ }
+ else
+ {
+ t--;
+ break; /* break two loops */
+ }
+ }
+
+ line_length -= ih->data->tabs_line.tabs_info[t].tab_len;
+ ih->data->tabs_line.broken_center_visible = ITABS_FALSE;
+ }
+
+ if (t == ih->data->number_of_tabs)
+ t--;
+ }
+ while (t < ih->data->current_tab);
+
+ if (ih->data->tabs_line.start_tab > 0 &&
+ ih->data->tabs_line.broken_center_visible != ITABS_TRUE)
+ {
+ if (ih->data->tabs_line.tabs_info[ih->data->tabs_line.start_tab - 1].tab_len <
+ (line_length - ITABS_BROKEN_TAB))
+ {
+ ih->data->tabs_line.start_tab--;
+ line_length = old_line_length;
+ continue;
+ }
+ }
+
+ break;
+ }
+ }
+ else
+ ih->data->tabs_line.broken_start_visible = ITABS_FALSE;
+
+ /* space not occupied by tabs is destined for the broken tabs */
+ ih->data->tabs_line.broken_tab_space = line_length;
+
+ if (ih->data->tabs_line.broken_start_visible == ITABS_TRUE)
+ ih->data->tabs_line.broken_tab_space += ITABS_BROKEN_TAB;
+
+ if (ih->data->tabs_line.broken_center_visible == ITABS_TRUE &&
+ ih->data->tabs_line.start_tab == t)
+ {
+ /* If there is one visible tab and more tabs to the right,
+ it must be clipped */
+ ih->data->tabs_line.end_tab = ih->data->tabs_line.start_tab;
+ ih->data->tabs_line.broken_end_visible = ITABS_FALSE;
+ ih->data->tabs_line.broken_start_visible = ITABS_FALSE;
+ }
+ else
+ {
+ ih->data->tabs_line.end_tab = t;
+ ih->data->tabs_line.broken_center_visible = ITABS_FALSE;
+
+ /* If the last tab is not visible, it must be included the
+ right broken tab, and delete one of tabs, when necessary */
+ if (ih->data->tabs_line.end_tab < (ih->data->number_of_tabs - 1))
+ {
+ ih->data->tabs_line.broken_end_visible = ITABS_TRUE;
+
+ if (line_length < ITABS_BROKEN_TAB)
+ {
+ if (ih->data->tabs_line.start_tab == ih->data->tabs_line.end_tab)
+ {
+ /* no space to broken tabs */
+ ih->data->tabs_line.broken_center_visible = ITABS_TRUE;
+ ih->data->tabs_line.broken_end_visible = ITABS_FALSE;
+ ih->data->tabs_line.broken_start_visible = ITABS_FALSE;
+
+ ih->data->tabs_line.broken_tab_space +=
+ ih->data->tabs_line.tabs_info[ih->data->tabs_line.start_tab].tab_len;
+ }
+ else if (ih->data->current_tab == ih->data->tabs_line.end_tab)
+ {
+ ih->data->tabs_line.broken_tab_space +=
+ ih->data->tabs_line.tabs_info[ih->data->tabs_line.start_tab].tab_len;
+ ih->data->tabs_line.start_tab++;
+ ih->data->tabs_line.broken_start_visible = ITABS_TRUE;
+ }
+ else
+ {
+ ih->data->tabs_line.broken_tab_space +=
+ ih->data->tabs_line.tabs_info[ih->data->tabs_line.end_tab].tab_len;
+ ih->data->tabs_line.end_tab--;
+ }
+ }
+ }
+ else
+ ih->data->tabs_line.broken_end_visible = ITABS_FALSE;
+ }
+
+ if (ih->data->tabs_line.broken_start_visible == ITABS_TRUE &&
+ ih->data->tabs_line.broken_end_visible == ITABS_TRUE)
+ {
+ ih->data->tabs_line.broken_space_start = (int)
+ ceil((double) ih->data->tabs_line.broken_tab_space / 2);
+ ih->data->tabs_line.broken_space_end = (int)
+ floor((double) ih->data->tabs_line.broken_tab_space / 2);
+ }
+ else if (ih->data->tabs_line.broken_start_visible == ITABS_TRUE)
+ {
+ ih->data->tabs_line.broken_space_start = ih->data->tabs_line.broken_tab_space;
+ ih->data->tabs_line.broken_space_end = 0;
+ }
+ else if (ih->data->tabs_line.broken_end_visible == ITABS_TRUE)
+ {
+ ih->data->tabs_line.broken_space_end = ih->data->tabs_line.broken_tab_space;
+ ih->data->tabs_line.broken_space_start = 0;
+ }
+ else
+ {
+ ih->data->tabs_line.broken_space_end = 0;
+ ih->data->tabs_line.broken_space_start = 0;
+ }
+
+ if (ih->data->tabs_line.start_tab == 0)
+ ih->data->tabs_line.broken_start_visible = ITABS_FALSE;
+}
+
+static void iTabsGetDecorOffset(Ihandle* ih, int *x, int *y)
+{
+ switch(ih->data->tabs_type)
+ {
+ case ITABS_TOP:
+ *x = ITABS_MARGIN;
+ *y = *(ih->data->tabs_line.line_h) + ITABS_MARGIN;
+ break;
+
+ case ITABS_LEFT:
+ *x = *(ih->data->tabs_line.line_w) + ITABS_MARGIN;
+ *y = ITABS_MARGIN;
+ break;
+
+ case ITABS_RIGHT:
+ case ITABS_BOTTOM:
+ default:
+ *x = ITABS_MARGIN;
+ *y = ITABS_MARGIN;
+ break;
+ }
+}
+
+static void iTabsGetDecorSize(Ihandle* ih, int *w, int *h)
+{
+ switch(ih->data->tabs_type)
+ {
+ case ITABS_TOP:
+ *w = 2 * ITABS_MARGIN;
+ *h = *(ih->data->tabs_line.line_h) + 2 * ITABS_MARGIN;
+ break;
+
+ case ITABS_BOTTOM:
+ *w = 2 * ITABS_MARGIN;
+ *h = *(ih->data->tabs_line.line_h) + 2 * ITABS_MARGIN;
+ break;
+
+ case ITABS_LEFT:
+ *w = *(ih->data->tabs_line.line_w) + 2 * ITABS_MARGIN;
+ *h = 2 * ITABS_MARGIN;
+ break;
+
+ case ITABS_RIGHT:
+ *w = *(ih->data->tabs_line.line_w) + 2 * ITABS_MARGIN;
+ *h = 2 * ITABS_MARGIN;
+ break;
+ }
+}
+
+/* Changes the zbox value and redraws the tabs */
+static void iTabsSetNewCurrentTab(Ihandle* ih, int tab)
+{
+ char* next_tab_name = IupGetName(iTabsGetTabIhandle(ih, tab));
+ if (next_tab_name == NULL)
+ return;
+
+ ih->data->current_tab = tab;
+ IupSetAttribute(ih->data->zbox, "VALUE", next_tab_name);
+
+ iTabsCalcVisibleTabs(ih); /* calculates the visibility of tabs (depends on the sizes calculated and on the current tab) */
+
+ IupUpdate(ih);
+}
+
+
+/* ========================================================================= */
+/* IupCanvas Callbacks */
+/* ========================================================================= */
+
+
+static int iTabsFocus_CB(Ihandle* ih, int focus)
+{
+ ih->data->has_focus = focus;
+ IupUpdate(ih);
+ return IUP_DEFAULT;
+}
+
+static int iTabsResize_CB(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ {
+ /* update canvas size */
+ cdCanvasActivate(ih->data->cdcanvas);
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+ }
+
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update canvas size */
+ cdCanvasActivate(ih->data->cddbuffer);
+ cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL);
+
+ iTabsCalcTabSize(ih); /* calculates sizes of Tab line (depends on the TABTITLE of all children and on FONT) */
+ iTabsCalcScrollPos(ih); /* calculates the position of the scroll (depends on the sizes calculated) */
+ iTabsCalcVisibleTabs(ih); /* calculates the visibility of tabs (depends on the sizes calculated and on the current tab) */
+
+ return IUP_DEFAULT;
+}
+
+static int iTabsRedraw_CB(Ihandle* ih)
+{
+ char* clip_rect;
+
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ /* Paints the background and draws the border */
+ iTabsDrawBackground(ih);
+ iTabsDrawTabsBorders(ih);
+
+ /* Draws tabs and decorations */
+ iTabsDrawLineOfTabs(ih);
+
+ clip_rect = iupAttribGet(ih, "CLIPRECT");
+ if (clip_rect)
+ {
+ int x1, x2, y1, y2;
+ sscanf(clip_rect, "%d %d %d %d", &x1, &y1, &x2, &y2);
+ y1 = cdIupInvertYAxis(y1, ih->data->h);
+ y2 = cdIupInvertYAxis(y2, ih->data->h);
+ cdCanvasClipArea(ih->data->cdcanvas, x1, x2, y1, y2);
+ cdCanvasClip(ih->data->cdcanvas, CD_CLIPAREA);
+ }
+
+ /* Ends the draw process */
+ cdCanvasFlush(ih->data->cddbuffer);
+ if (ih->data->has_focus)
+ cdIupDrawFocusRect(ih, ih->data->cdcanvas, ih->data->focus_x1, ih->data->focus_y1, ih->data->focus_x2, ih->data->focus_y2);
+
+ if (clip_rect)
+ cdCanvasClip(ih->data->cdcanvas, CD_CLIPOFF);
+
+ return IUP_DEFAULT;
+}
+
+/* Callback to popup menu, with the tabs list */
+static int iTabsMenu_CB(Ihandle* ih)
+{
+ char* number = iupAttribGet(ih, "_IUPTABS_ID");
+ int tab_number = 0;
+ int result;
+
+ sscanf (number, "%d", &tab_number);
+
+ if (ih->data->current_tab != tab_number)
+ {
+ result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, tab_number),
+ iTabsGetTabIhandle(ih, ih->data->current_tab));
+ if (result != IUP_IGNORE)
+ iTabsSetNewCurrentTab(ih, tab_number);
+ }
+
+ return IUP_DEFAULT;
+}
+
+/* Creates a menu with all the tab labels */
+static Ihandle* iTabsMakeMenuFromTabs(Ihandle* ih)
+{
+ int c = 0;
+ Ihandle* menu = IupMenu(NULL);
+ Ihandle* item = NULL;
+
+ for(c = 0; c < ih->data->number_of_tabs; c++)
+ {
+ char* title = iupAttribGet(ih->data->tabs_line.tabs_info[c].ihandle, "TABTITLE");
+ if (!title) title = " ";
+
+ item = IupItem(title, NULL);
+ IupSetCallback(item, "ACTION", (Icallback) iTabsMenu_CB);
+
+ iupAttribSetStrf(item, "_IUPTABS_ID", "%4d", c);
+
+ if (c == ih->data->current_tab)
+ IupSetAttribute(item, "VALUE", "ON");
+
+ IupAppend(menu, item);
+ }
+
+ return menu;
+}
+
+static int iTabsGetNextTab(Ihandle* ih)
+{
+ int next_tab;
+
+ if (ih->data->current_tab < (ih->data->number_of_tabs - 1))
+ next_tab = ih->data->current_tab + 1;
+ else
+ next_tab = 0;
+
+ /* find the next active tab */
+ while(next_tab != ih->data->current_tab &&
+ !IupGetInt(iTabsGetTabIhandle(ih, next_tab), "ACTIVE"))
+ {
+ if (next_tab < (ih->data->number_of_tabs - 1))
+ next_tab = next_tab + 1;
+ else
+ next_tab = 0;
+ }
+
+ if (next_tab == ih->data->current_tab)
+ return -1;
+
+ return next_tab;
+}
+
+static int iTabsGetPreviousTab(Ihandle* ih)
+{
+ int previous_tab;
+ if (ih->data->current_tab > 0)
+ previous_tab = ih->data->current_tab - 1;
+ else
+ previous_tab = ih->data->number_of_tabs - 1;
+
+ /* find the previous active tab */
+ while(previous_tab != ih->data->current_tab &&
+ !IupGetInt(iTabsGetTabIhandle(ih, previous_tab), "ACTIVE"))
+ {
+ if (previous_tab > 0)
+ previous_tab = previous_tab - 1;
+ else
+ previous_tab = ih->data->number_of_tabs - 1;
+ }
+
+ if (previous_tab == ih->data->current_tab)
+ return -1;
+
+ return previous_tab;
+}
+
+/* Key press Callback */
+static int iTabsKeyPress_CB(Ihandle* ih, int c, int press)
+{
+ if (press == 0)
+ return IUP_DEFAULT;
+
+ if (((c == K_RIGHT || c == K_sRIGHT) && (ih->data->tabs_type == ITABS_TOP || ih->data->tabs_type == ITABS_BOTTOM)) ||
+ ((c == K_DOWN || c == K_sDOWN) && (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT)))
+ {
+ int result;
+ int next_tab = iTabsGetNextTab(ih);
+ if (next_tab == -1)
+ return IUP_IGNORE; /* to avoid arrow keys being processed by the system */
+
+ result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, next_tab),
+ iTabsGetTabIhandle(ih, ih->data->current_tab));
+ if (result != IUP_IGNORE)
+ iTabsSetNewCurrentTab(ih, next_tab);
+
+ return IUP_IGNORE; /* to avoid arrow keys being processed by the system */
+ }
+ else if (((c == K_LEFT || c == K_sLEFT) && (ih->data->tabs_type == ITABS_TOP || ih->data->tabs_type == ITABS_BOTTOM)) ||
+ ((c == K_UP || c == K_sUP) && (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT)))
+ {
+ int result;
+ int previous_tab = iTabsGetPreviousTab(ih);
+ if (previous_tab == -1)
+ return IUP_IGNORE; /* to avoid arrow keys being processed by the system */
+
+ result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, previous_tab),
+ iTabsGetTabIhandle(ih, ih->data->current_tab));
+ if (result != IUP_IGNORE)
+ iTabsSetNewCurrentTab(ih, previous_tab);
+
+ return IUP_IGNORE; /* to avoid arrow keys being processed by the system */
+ }
+
+ return IUP_DEFAULT;
+}
+
+/* Button press Callback of IUP Canvas */
+static int iTabsButton_CB (Ihandle* ih, int b, int press, int mx, int my)
+{
+ static int last_tab_press = -1;
+ int* virtual_width = NULL;
+ int* virtual_height = NULL;
+ int width = 0, height = 0, offset = 0;
+ int* virtual_mx = NULL;
+ int* virtual_my = NULL;
+ int click_x = mx, click_y = ih->data->h-1 - my;
+ int count = 0;
+
+ /* Only events of the left button are handled */
+ if (b != IUP_BUTTON1)
+ return IUP_DEFAULT;
+
+ /* Calculates the bounding box size of the tabs queue */
+ switch(ih->data->tabs_type)
+ {
+ case ITABS_TOP:
+ width = ih->data->w;
+ height = ih->data->tabs_line.line_thick;
+ virtual_width = &width;
+ virtual_height = &height;
+ virtual_mx = &mx;
+ virtual_my = &my;
+ *virtual_my = -(*virtual_my - (ih->data->tabs_line.line_thick - 1));
+ break;
+
+ case ITABS_BOTTOM:
+ width = ih->data->w;
+ height = ih->data->tabs_line.line_thick;
+ virtual_width = &width;
+ virtual_height = &height;
+ virtual_mx = &mx;
+ virtual_my = &my;
+ *virtual_my = *virtual_my - ih->data->h + ih->data->tabs_line.line_thick;
+ break;
+
+ case ITABS_LEFT:
+ width = ih->data->tabs_line.line_thick;
+ height = ih->data->h;
+ virtual_width = &height;
+ virtual_height = &width;
+ virtual_mx = &my;
+ virtual_my = &mx;
+ *virtual_my = -(*virtual_my - (ih->data->tabs_line.line_thick - 1));
+ break;
+
+ case ITABS_RIGHT:
+ width = ih->data->tabs_line.line_thick;
+ height = ih->data->h;
+ virtual_width = &height;
+ virtual_height = &width;
+ virtual_mx = &my;
+ virtual_my = &mx;
+ *virtual_my = *virtual_my - ih->data->w + ih->data->tabs_line.line_thick;
+ break;
+ }
+
+ /* Adjusts the offset when the first tab is not selected */
+ if (ih->data->current_tab != 0)
+ offset = 1;
+
+ /* Checks if the mouse is on the tabs area */
+ if ((*virtual_mx > (*virtual_width - 1)) ||
+ (*virtual_my > (*virtual_height - 1)) ||
+ (*virtual_mx < 0) || (*virtual_my < 0))
+ {
+ /* If a button release or any scroll_visible button are pressed, they'll are released */
+ if (!press && ih->data->tabs_line.button != ITABS_BUTTON_NONE)
+ ih->data->tabs_line.button = ITABS_BUTTON_NONE;
+
+ return IUP_DEFAULT;
+ }
+
+ if (!press && ih->data->tabs_line.button != ITABS_BUTTON_NONE)
+ ih->data->tabs_line.button += 3; /* increment from BUTPRESS_* to BUTRELEASE_* */
+
+ /* If there is a scroll_visible, verifies if the click was on one of buttons */
+ if (ih->data->tabs_line.scroll_visible == ITABS_TRUE)
+ {
+ int scroll_pos, scroll_space;
+
+ if (ih->data->tabs_orientation == ITABS_HORIZONTAL)
+ {
+ scroll_space = ih->data->tabs_line.scroll_w;
+ scroll_pos = click_x - ih->data->tabs_line.scroll_x;
+ }
+ else
+ {
+ scroll_space = ih->data->tabs_line.scroll_h;
+ scroll_pos = click_y - ih->data->tabs_line.scroll_y;
+
+ /* the controls are inverted when text is vertical */
+ scroll_pos = scroll_space - scroll_pos;
+ }
+
+ if (click_y > ih->data->tabs_line.scroll_y && click_x > ih->data->tabs_line.scroll_x &&
+ click_y < ih->data->tabs_line.scroll_y+ih->data->tabs_line.scroll_h && click_x < ih->data->tabs_line.scroll_x+ih->data->tabs_line.scroll_w)
+ {
+ /* Verifies which button was pressed by user */
+ if (scroll_pos > 2 * scroll_space / 3) /* forward button*/
+ {
+ /* If press, to draw it pressed */
+ if (press)
+ {
+ ih->data->tabs_line.button = ITABS_BUTTONPRESS_FORWARD ;
+ }
+ else if (ih->data->tabs_line.button == ITABS_BUTTONRELEASE_FORWARD)
+ /* else, change the tab */
+ {
+ int result;
+ int next_tab = iTabsGetNextTab(ih);
+ if (next_tab == -1)
+ return IUP_DEFAULT;
+
+ result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, next_tab), iTabsGetTabIhandle(ih, ih->data->current_tab));
+ if (result != IUP_IGNORE)
+ iTabsSetNewCurrentTab(ih, next_tab);
+ }
+ }
+ else if (scroll_pos > scroll_space / 3) /* menu button*/
+ {
+ /* If press, to draw it pressed */
+ if (press)
+ {
+ ih->data->tabs_line.button = ITABS_BUTTONPRESS_MENU ;
+ }
+ else if (ih->data->tabs_line.button == ITABS_BUTTONRELEASE_MENU)
+ /* else, change the tab */
+ {
+ Ihandle* menu = iTabsMakeMenuFromTabs (ih);
+ IupPopup(menu, IUP_MOUSEPOS, IUP_MOUSEPOS);
+ IupDestroy(menu);
+ }
+ }
+ else /* backward button*/
+ {
+ /* If press, to draw it pressed */
+ if (press)
+ {
+ ih->data->tabs_line.button = ITABS_BUTTONPRESS_BACKWARD ;
+ }
+ else if (ih->data->tabs_line.button == ITABS_BUTTONRELEASE_BACKWARD)
+ /* else, change the tab */
+ {
+ int result;
+ int previous_tab = iTabsGetPreviousTab(ih);
+ if (previous_tab == -1)
+ return IUP_DEFAULT;
+
+ result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, previous_tab),
+ iTabsGetTabIhandle(ih, ih->data->current_tab));
+ if (result != IUP_IGNORE)
+ iTabsSetNewCurrentTab(ih, previous_tab);
+ }
+ }
+
+ return IUP_DEFAULT;
+ }
+ }
+
+ /* If there is any scroll_visible button pressed, it will be released */
+ if (!press && ih->data->tabs_line.button != ITABS_BUTTON_NONE)
+ {
+ ih->data->tabs_line.button = ITABS_BUTTON_NONE;
+ IupUpdate(ih);
+ return IUP_DEFAULT;
+ }
+
+ /* Checks when the click was on the left broken tab */
+ if (ih->data->tabs_line.broken_start_visible == ITABS_TRUE)
+ {
+ if (*virtual_mx >= offset &&
+ *virtual_mx <= (offset + ih->data->tabs_line.broken_space_start - 1) &&
+ *virtual_my <= (ih->data->tabs_line.line_thick - ITABS_CURRENT_EXTRA_PIXELS - 1))
+ {
+ if (press)
+ last_tab_press = ih->data->tabs_line.start_tab-1;
+ else if (last_tab_press == ih->data->tabs_line.start_tab-1)
+ {
+ int result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, last_tab_press),
+ iTabsGetTabIhandle(ih, ih->data->current_tab));
+ if (result != IUP_IGNORE)
+ iTabsSetNewCurrentTab(ih, last_tab_press);
+ }
+
+ return IUP_DEFAULT;
+ }
+ else
+ offset += ih->data->tabs_line.broken_space_start;
+ }
+
+ /* Checks when the click was on one of tabs */
+ for(count = ih->data->tabs_line.start_tab; count <= ih->data->tabs_line.end_tab; count++)
+ {
+ if (*virtual_mx >= offset &&
+ *virtual_mx <= (offset + ih->data->tabs_line.tabs_info[count].tab_len - 1))
+ {
+ if (count != ih->data->current_tab)
+ {
+ if (*virtual_my <= (ih->data->tabs_line.line_thick - ITABS_CURRENT_EXTRA_PIXELS - 1))
+ {
+ if (press)
+ last_tab_press = count;
+ else if (last_tab_press == count)
+ {
+ int result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, last_tab_press),
+ iTabsGetTabIhandle(ih, ih->data->current_tab));
+ if (result != IUP_IGNORE)
+ iTabsSetNewCurrentTab(ih, last_tab_press);
+ }
+
+ return IUP_DEFAULT;
+ }
+ }
+ }
+
+ offset += ih->data->tabs_line.tabs_info[count].tab_len;
+ }
+
+ /* Checks when the click was on the right broken tab */
+ if (ih->data->tabs_line.broken_end_visible == ITABS_TRUE)
+ {
+ if (*virtual_mx >= offset &&
+ *virtual_mx <= (offset + ih->data->tabs_line.broken_space_end - 1) &&
+ *virtual_my <= (ih->data->tabs_line.line_thick - ITABS_CURRENT_EXTRA_PIXELS - 1))
+ {
+ if (press)
+ last_tab_press = ih->data->tabs_line.end_tab + 1;
+ else if (last_tab_press == ih->data->tabs_line.end_tab + 1)
+ {
+ int result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, last_tab_press),
+ iTabsGetTabIhandle(ih, ih->data->current_tab));
+ if (result != IUP_IGNORE)
+ iTabsSetNewCurrentTab(ih, last_tab_press);
+ }
+
+ return IUP_DEFAULT;
+ }
+ else
+ offset += ih->data->tabs_line.broken_space_end;
+ }
+
+ return IUP_DEFAULT;
+}
+
+static void iTabsRefreshTabs(Ihandle* ih)
+{
+ int t, old_number_of_tabs = ih->data->number_of_tabs;
+ Ihandle* child, *old_current_tab_handle = NULL;
+
+ if (ih->data->tabs_line.tabs_info)
+ old_current_tab_handle = ih->data->tabs_line.tabs_info[ih->data->current_tab].ihandle;
+
+ ih->data->number_of_tabs = 0;
+ child = ih->data->zbox->firstchild;
+ while(child)
+ {
+ if (IupGetName(child) == NULL)
+ iupAttribSetHandleName(child);
+
+ ih->data->number_of_tabs++;
+ child = child->brother;
+ }
+
+ if (old_number_of_tabs < ih->data->number_of_tabs)
+ ih->data->tabs_line.tabs_info = (ItabsDrawInfo*)realloc(ih->data->tabs_line.tabs_info, ih->data->number_of_tabs * sizeof (ItabsDrawInfo));
+
+ t = 0;
+ child = ih->data->zbox->firstchild;
+ while (child)
+ {
+ ih->data->tabs_line.tabs_info[t].ihandle = child;
+
+ if (child == old_current_tab_handle)
+ ih->data->current_tab = t; /* current tab was moved */
+
+ child = child->brother;
+ t++;
+ }
+
+ if (old_current_tab_handle &&
+ old_current_tab_handle != ih->data->tabs_line.tabs_info[ih->data->current_tab].ihandle)
+ {
+ /* current tab was removed, reset to first child */
+ ih->data->current_tab = 0;
+ }
+}
+
+
+/* ========================================================================= */
+/* Attributes */
+/* ========================================================================= */
+
+
+static int iTabsSetAlignmentAttrib(Ihandle* ih, const char* value)
+{
+ int inherit;
+ return iupClassObjectSetAttribute(ih->data->zbox, "ALIGNMENT", value, &inherit);
+}
+
+static char* iTabsGetAlignmentAttrib(Ihandle* ih)
+{
+ int inherit;
+ char *def_value;
+ return iupClassObjectGetAttribute(ih->data->zbox, "ALIGNMENT", &def_value, &inherit);
+}
+
+static int iTabsSetTabOrientationAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "VERTICAL"))
+ ih->data->tabs_orientation = ITABS_VERTICAL;
+ else
+ ih->data->tabs_orientation = ITABS_HORIZONTAL;
+
+ iTabsUpdateRender(ih);
+
+ return 0; /* do not store value in hash table */
+}
+
+static char* iTabsGetTabOrientationAttrib(Ihandle* ih)
+{
+ if (ih->data->tabs_orientation == ITABS_VERTICAL)
+ return "VERTICAL";
+ else
+ return "HORIZONTAL";
+}
+
+static int iTabsSetTabTypeAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "BOTTOM"))
+ ih->data->tabs_type = ITABS_BOTTOM;
+ else if (iupStrEqualNoCase(value, "LEFT"))
+ ih->data->tabs_type = ITABS_LEFT;
+ else if (iupStrEqualNoCase(value, "RIGHT"))
+ ih->data->tabs_type = ITABS_RIGHT;
+ else /* "TOP" */
+ ih->data->tabs_type = ITABS_TOP;
+
+ iTabsUpdateRender(ih);
+
+ return 0; /* do not store value in hash table */
+}
+
+static char* iTabsGetTabTypeAttrib(Ihandle* ih)
+{
+ if (ih->data->tabs_type == ITABS_BOTTOM)
+ return "BOTTOM";
+ else if (ih->data->tabs_type == ITABS_LEFT)
+ return "LEFT";
+ else if (ih->data->tabs_type == ITABS_RIGHT)
+ return "RIGHT";
+ else /* ITABS_TOP */
+ return "TOP";
+}
+
+static int iTabsSetRepaintAttrib(Ihandle* ih, const char* value)
+{
+ (void)value;
+
+ iTabsCalcTabSize(ih); /* calculate sizes of Tab line (depends on the TABTITLE of all children) */
+ iTabsCalcScrollPos(ih); /* calculates the position of the scroll (depends on the sizes calculated) */
+ iTabsCalcVisibleTabs(ih); /* calculates the visibility of tabs (depends on the sizes calculated and on the current tab) */
+
+ IupUpdate(ih);
+
+ return 0; /* do not store value in hash table */
+}
+
+static int iTabsSetFontActiveAttrib(Ihandle* ih, const char* value)
+{
+ char* native = IupMapFont(value);
+ if (!native) native = (char*)value;
+
+ if (native)
+ {
+ if (ih->data->font_active)
+ free(ih->data->font_active);
+
+ ih->data->font_active = iupStrDup(native);
+ IupUpdate(ih);
+ }
+ return 1;
+}
+
+static int iTabsSetFontInactiveAttrib(Ihandle* ih, const char* value)
+{
+ char* native = IupMapFont(value);
+ if (!native) native = (char*)value;
+
+ if (native)
+ {
+ if (ih->data->font_inactive)
+ free(ih->data->font_inactive);
+
+ ih->data->font_inactive = iupStrDup(native);
+ IupUpdate(ih);
+ }
+ return 1;
+}
+
+static int iTabsSetFgColorAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->fgcolor = cdIupConvertColor(value);
+ IupUpdate(ih);
+ return 1;
+}
+
+static int iTabsSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ value = iupControlBaseGetParentBgColor(ih);
+
+ ih->data->bgcolor = cdIupConvertColor(value);
+ cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow);
+
+ IupUpdate(ih);
+ return 1;
+}
+
+static int iTabsSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ iupBaseSetActiveAttrib(ih, value);
+ IupUpdate(ih); /* post repaint so children is activated/deactivated */
+ return 0; /* do not store value in hash table */
+}
+
+static int iTabsSetValueAttrib(Ihandle* ih, const char* value)
+{
+ int c;
+ Ihandle* new_tab = IupGetHandle(value);
+
+ if (new_tab == NULL)
+ return 0;
+
+ for(c = 0; c < ih->data->number_of_tabs; c++)
+ {
+ if (ih->data->tabs_line.tabs_info[c].ihandle == new_tab)
+ {
+ iTabsSetNewCurrentTab(ih, c);
+ break;
+ }
+ }
+ return 0; /* do not store value in hash table */
+}
+
+static char* iTabsGetValueAttrib(Ihandle* ih)
+{
+ return IupGetAttribute(ih->data->zbox, "VALUE");
+}
+
+static int iTabsSetValuePosAttrib(Ihandle* ih, const char* value)
+{
+ int pos;
+
+ if (!iupStrToInt(value, &pos))
+ return 0;
+
+ if (pos<0) pos=0;
+ if (pos>ih->data->number_of_tabs-1) pos=ih->data->number_of_tabs-1;
+
+ iTabsSetNewCurrentTab(ih, pos);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iTabsGetValuePosAttrib(Ihandle* ih)
+{
+ char *str = iupStrGetMemory(50);
+ sprintf(str, "%d", ih->data->current_tab);
+ return str;
+}
+
+static char* iTabsGetClientSizeAttrib(Ihandle* ih)
+{
+ int width, height, decorwidth, decorheight;
+ char* str = iupStrGetMemory(20);
+ width = ih->currentwidth;
+ height = ih->currentheight;
+ iTabsGetDecorSize(ih, &decorwidth, &decorheight);
+ width -= decorwidth;
+ height -= decorheight;
+ if (width < 0) width = 0;
+ if (height < 0) height = 0;
+ sprintf(str, "%dx%d", width, height);
+ return str;
+}
+
+
+/* ========================================================================= */
+/* Methods */
+/* ========================================================================= */
+
+
+static Ihandle* iTabsGetInnerContainerMethod(Ihandle* ih)
+{
+ return ih->data->zbox;
+}
+
+static void iTabsComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ int decorwidth, decorheight;
+ Ihandle* child = ih->data->zbox; /* zbox is always non NULL */
+
+ iTabsCalcTabSize(ih); /* make sure that decoration is updated, even if UPDATE has not been set after other changes */
+ iTabsGetDecorSize(ih, &decorwidth, &decorheight);
+
+ /* update child natural size first */
+ iupBaseComputeNaturalSize(child);
+
+ *expand = child->expand;
+ *w = child->naturalwidth + decorwidth;
+ *h = child->naturalheight + decorheight;
+}
+
+static void iTabsSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink)
+{
+ int width, height, decorwidth, decorheight;
+
+ iTabsGetDecorSize(ih, &decorwidth, &decorheight);
+
+ width = ih->currentwidth-decorwidth;
+ height = ih->currentheight-decorheight;
+ if (width < 0) width = 0;
+ if (height < 0) height = 0;
+
+ iupBaseSetCurrentSize(ih->data->zbox, width, height, shrink);
+}
+
+static void iTabsSetChildrenPositionMethod(Ihandle* ih, int x, int y)
+{
+ /* IupTabs is the native parent of its children,
+ so the position is restarted at (0,0) */
+ iTabsGetDecorOffset(ih, &x, &y);
+
+ /* Child coordinates are relative to client left-top corner. */
+ iupBaseSetPosition(ih->data->zbox, x, y);
+}
+
+static void iTabsChildAddedMethod(Ihandle* ih, Ihandle* child)
+{
+ (void)child;
+ iTabsRefreshTabs(ih); /* update the list of tabs */
+}
+
+static void iTabsChildRemovedMethod(Ihandle* ih, Ihandle* child)
+{
+ (void)child;
+ iTabsRefreshTabs(ih); /* update the list of tabs */
+}
+
+static int iTabsMapMethod(Ihandle* ih)
+{
+ ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih);
+ if (!ih->data->cdcanvas)
+ return IUP_ERROR;
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+
+ return IUP_NOERROR;
+}
+
+static void iTabsUnMapMethod(Ihandle* ih)
+{
+ if (ih->data->cddbuffer)
+ cdKillCanvas(ih->data->cddbuffer);
+
+ if (ih->data->cdcanvas)
+ cdKillCanvas(ih->data->cdcanvas);
+}
+
+static void iTabsDestroyMethod(Ihandle* ih)
+{
+ if (ih->data->font_inactive)
+ free(ih->data->font_inactive);
+
+ if (ih->data->font_inactive)
+ free(ih->data->font_inactive);
+
+ free(ih->data->tabs_line.tabs_info);
+}
+
+static int iTabsCreateMethod(Ihandle* ih, void **params)
+{
+ /* free the data allocated by IupCanvas */
+ if (ih->data)
+ free(ih->data);
+ ih->data = iupALLOCCTRLDATA();
+
+ /* change the IupCanvas default values */
+ iupAttribSetStr(ih, "BORDER", "NO");
+
+ ih->data->zbox = IupZbox(NULL);
+ ih->firstchild = ih->data->zbox; /* zbox is actually the only child of Tabs */
+ ih->data->zbox->parent = ih;
+
+ /* add children */
+ if (params)
+ {
+ Ihandle** iparams = (Ihandle**)params;
+ while (*iparams)
+ {
+ IupAppend(ih, *iparams); /* this in fact will add the child to the zbox */
+ iparams++;
+ }
+ }
+
+ /* IupCanvas callbacks */
+ IupSetCallback(ih, "RESIZE_CB", (Icallback)iTabsResize_CB);
+ IupSetCallback(ih, "ACTION", (Icallback)iTabsRedraw_CB);
+ IupSetCallback(ih, "BUTTON_CB", (Icallback)iTabsButton_CB);
+ IupSetCallback(ih, "KEYPRESS_CB", (Icallback)iTabsKeyPress_CB);
+ IupSetCallback(ih, "FOCUS_CB", (Icallback)iTabsFocus_CB);
+
+ /* initialize colors */
+ ih->data->bgcolor = -1;
+ ih->data->fgcolor = CD_BLACK;
+ ih->data->light_shadow = CD_WHITE;
+ ih->data->mid_shadow = CD_GRAY;
+ ih->data->dark_shadow = CD_DARK_GRAY;
+
+ /* Context initialize with values related to type of tabs */
+ ih->data->tabs_type = ITABS_TOP;
+ ih->data->tabs_orientation = ITABS_HORIZONTAL;
+
+ /* No button is pressed */
+ ih->data->tabs_line.button = ITABS_BUTTON_NONE ;
+
+ iTabsUpdateRender(ih);
+
+ return IUP_NOERROR;
+}
+
+static Iclass* iTabsGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupCanvasGetClass());
+
+ ic->name = "tabs";
+ ic->format = "g"; /* array of Ihandle */
+ ic->nativetype = IUP_TYPECANVAS;
+ ic->childtype = IUP_CHILD_ONE;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iTabsCreateMethod;
+ ic->Destroy = iTabsDestroyMethod;
+ ic->Map = iTabsMapMethod;
+ ic->UnMap = iTabsUnMapMethod;
+
+ ic->ComputeNaturalSize = iTabsComputeNaturalSizeMethod;
+ ic->SetChildrenCurrentSize = iTabsSetChildrenCurrentSizeMethod;
+ ic->SetChildrenPosition = iTabsSetChildrenPositionMethod;
+
+ ic->GetInnerContainer = iTabsGetInnerContainerMethod;
+ ic->ChildAdded = iTabsChildAddedMethod;
+ ic->ChildRemoved = iTabsChildRemovedMethod;
+
+ /* Do not need to set base attributes because they are inherited from IupCanvas */
+
+ /* IupTabs Callbacks */
+ iupClassRegisterCallback(ic, "TABCHANGE_CB", "nn");
+
+ /* IupTabs only */
+ iupClassRegisterAttribute(ic, "ALIGNMENT", iTabsGetAlignmentAttrib, iTabsSetAlignmentAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TABTYPE", iTabsGetTabTypeAttrib, iTabsSetTabTypeAttrib, IUPAF_SAMEASSYSTEM, "TOP", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TABORIENTATION", iTabsGetTabOrientationAttrib, iTabsSetTabOrientationAttrib, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "REPAINT", NULL, iTabsSetRepaintAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FONT_ACTIVE", NULL, iTabsSetFontActiveAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FONT_INACTIVE", NULL, iTabsSetFontInactiveAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUE", iTabsGetValueAttrib, iTabsSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "VALUEPOS", iTabsGetValuePosAttrib, iTabsSetValuePosAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "TABTITLE", NULL, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TABSIZE", NULL, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iTabsSetFgColorAttrib, NULL, NULL, IUPAF_NOT_MAPPED);
+
+ /* Overwrite IupCanvas Attributes */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iTabsSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iTabsSetBgColorAttrib, NULL, "255 255 255", IUPAF_DEFAULT); /* overwrite canvas implementation, set a system default to force a new default */
+
+ /* Base Container */
+ iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CLIENTSIZE", iTabsGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); /* overwrite canvas default */
+
+ return ic;
+}
+
+void IupOldTabsOpen(void)
+{
+ iupRegisterClass(iTabsGetClass());
+}
diff --git a/iup/srccontrols/iup_oldval.c b/iup/srccontrols/iup_oldval.c
new file mode 100755
index 0000000..50dae8a
--- /dev/null
+++ b/iup/srccontrols/iup_oldval.c
@@ -0,0 +1,809 @@
+/** \file
+ * \brief Valuator Control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupcontrols.h"
+#include "iupkey.h"
+
+#include <cd.h>
+#include <cdiup.h>
+#include <cddbuf.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_stdcontrols.h"
+#include "iup_controls.h"
+#include "iup_cdutil.h"
+#include "iup_register.h"
+
+
+
+struct _IcontrolData
+{
+ iupCanvas canvas; /* from IupCanvas (must reserve it) */
+
+ /* mouse interaction control */
+ int moving;
+
+ /* visual appearance control */
+ int w,h;
+ long bgcolor,
+ light_shadow,
+ mid_shadow,
+ dark_shadow;
+ int has_focus;
+
+ /* attributes */
+ int type;
+ int show_ticks;
+ double val,
+ step,
+ pagestep,
+ vmin,
+ vmax;
+
+ unsigned char* himage;
+ int himage_w;
+ int himage_h;
+ long int* himage_colors;
+ int himage_numcolors;
+
+ unsigned char* himageinactive;
+ int himageinactive_w;
+ int himageinactive_h;
+ long int* himageinactive_colors;
+ int himageinactive_numcolors;
+
+ /* drawing canvas */
+ cdCanvas *cddbuffer;
+ cdCanvas *cdcanvas;
+
+ /* Internal methods */
+ void (*Draw)(Ihandle* ih);
+ void (*CalcPosition)(Ihandle*,int,int);
+};
+
+#define IVAL_HANDLER_LONG 22 /* handler long side */
+#define IVAL_HANDLER_SHORT 16 /* handler short side */
+#define IVAL_TRAIL 4 /* with of the trail */
+#define IVAL_TICK 3 /* size of the tick mark */
+#define IVAL_TRAIL_START (IVAL_HANDLER_LONG/2+1)
+#define IVAL_TRAIL_END(_s) (_s-1-IVAL_HANDLER_LONG/2-1)
+#define IVAL_TRAIL_LONG(_s) (_s-1-IVAL_HANDLER_LONG-1)
+
+enum {IVAL_VERTICAL, IVAL_HORIZONTAL};
+
+static void iValUpdateImageBgColor(long int* colors, int num_colors, long bgcolor)
+{
+ int c;
+ for (c = 0; c < num_colors; c++)
+ {
+ if (*colors == -1)
+ *colors = bgcolor;
+ colors++;
+ }
+
+}
+
+static void iValSetImage(const char* name, unsigned char** image_out, long int** color_out,
+ int* w_out, int* h_out, int* numcolors_out)
+{
+ int x, y, c, width, height, max_color = 0;
+ unsigned char* image_data;
+ Ihandle *img = IupGetHandle(name);
+
+ *w_out = width = img->currentwidth;
+ *h_out = height = img->currentheight;
+ image_data = (unsigned char*)IupGetAttribute(img, "WID");
+
+ *image_out = (unsigned char*) realloc(*image_out, width*height*sizeof(unsigned char));
+ *color_out = (long int*) realloc(*color_out, 256*sizeof(long int));
+
+ for(y = height-1 ; y >=0 ; y--)
+ {
+ for(x = 0 ; x < width ; x++)
+ {
+ (*image_out)[x+width*y] = *image_data;
+ if (*image_data > max_color)
+ max_color = *image_data;
+ image_data++;
+ }
+ }
+
+ max_color++;
+ *numcolors_out = max_color;
+
+ for(c = 0 ; c < max_color; c++)
+ {
+ char colorstr[30];
+ char *value;
+ sprintf(colorstr, "%d", c);
+ value = iupAttribGet(img, colorstr);
+ if (iupStrEqualNoCase(value, "BGCOLOR"))
+ (*color_out)[c] = -1;
+ else
+ (*color_out)[c] = cdIupConvertColor(value);
+ }
+}
+
+static void iValRepaint(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ return;
+
+ /* update render */
+ cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor);
+ cdCanvasClear(ih->data->cddbuffer);
+ ih->data->Draw(ih);
+
+ /* update display */
+ cdCanvasFlush(ih->data->cddbuffer);
+ if (ih->data->has_focus)
+ cdIupDrawFocusRect(ih, ih->data->cdcanvas, 0, 0, ih->data->w-1, ih->data->h-1);
+}
+
+static void iValDrawVerticalTick(Ihandle* ih, int y)
+{
+ cdIupDrawHorizSunkenMark(ih->data->cddbuffer, 1, 1+IVAL_TICK, y, ih->data->light_shadow, ih->data->dark_shadow);
+ cdIupDrawHorizSunkenMark(ih->data->cddbuffer, ih->data->w-2-IVAL_TICK, ih->data->w-2, y, ih->data->light_shadow, ih->data->dark_shadow);
+}
+
+static void iValDrawHorizontalTick(Ihandle* ih, int x)
+{
+
+ cdIupDrawVertSunkenMark(ih->data->cddbuffer, x, 1, 1+IVAL_TICK, ih->data->light_shadow, ih->data->dark_shadow);
+ cdIupDrawVertSunkenMark(ih->data->cddbuffer, x, ih->data->h-2-IVAL_TICK, ih->data->h-2, ih->data->light_shadow, ih->data->dark_shadow);
+}
+
+static void iValDrawVerticalTicks(Ihandle* ih)
+{
+ int i;
+ for (i = 0; i < ih->data->show_ticks-1; i++)
+ {
+ iValDrawVerticalTick(ih, (i*(IVAL_TRAIL_LONG(ih->data->h)-2))/(ih->data->show_ticks-1) + IVAL_TRAIL_START+1);
+ }
+
+ iValDrawVerticalTick(ih, IVAL_TRAIL_END(ih->data->h));
+}
+
+static void iValDrawHorizontalTicks(Ihandle* ih)
+{
+ int i;
+ for (i = 0; i < ih->data->show_ticks-1; i++)
+ {
+ iValDrawHorizontalTick(ih, (i*(IVAL_TRAIL_LONG(ih->data->w)-2))/(ih->data->show_ticks-1) + IVAL_TRAIL_START+1);
+ }
+
+ iValDrawHorizontalTick(ih, IVAL_TRAIL_END(ih->data->w));
+}
+
+static void iValDrawVertical(Ihandle* ih)
+{
+ int y, x = (ih->data->w-IVAL_TRAIL)/2;
+ double vn = (ih->data->val-ih->data->vmin)/(ih->data->vmax-ih->data->vmin);
+
+ /* trail */
+ cdIupDrawSunkenRect(ih->data->cddbuffer, x, IVAL_TRAIL_START, x+IVAL_TRAIL-1, IVAL_TRAIL_END(ih->data->h)+1,
+ ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow);
+
+ if (ih->data->show_ticks > 2)
+ iValDrawVerticalTicks(ih);
+
+ if (iupdrvIsActive(ih) && ih->data->himage)
+ {
+ x = (ih->data->w - ih->data->himage_w)/2;
+ y = (int)(vn*(IVAL_TRAIL_LONG(ih->data->h)-2) + IVAL_TRAIL_START+1);
+ cdCanvasPutImageRectMap(ih->data->cddbuffer,ih->data->himage_w, ih->data->himage_h, ih->data->himage, ih->data->himage_colors,
+ x, y-ih->data->himage_h/2, 0,0,0,0,0,0);
+ }
+ else if (!iupdrvIsActive(ih) && ih->data->himageinactive)
+ {
+ x = (ih->data->w - ih->data->himageinactive_w)/2;
+ y = (int)(vn*(IVAL_TRAIL_LONG(ih->data->h)-2) + IVAL_TRAIL_START+1);
+ cdCanvasPutImageRectMap(ih->data->cddbuffer,ih->data->himageinactive_w, ih->data->himageinactive_h, ih->data->himageinactive,
+ ih->data->himageinactive_colors, x, y-ih->data->himageinactive_h/2, 0,0,0,0,0,0);
+ }
+ else
+ {
+ /* handler border */
+ x = (ih->data->w-IVAL_HANDLER_SHORT)/2;
+ y = (int)(vn*(IVAL_TRAIL_LONG(ih->data->h)-2) + IVAL_TRAIL_START+1);
+ cdIupDrawRaisenRect(ih->data->cddbuffer, x, y-IVAL_HANDLER_LONG/2-1, x+IVAL_HANDLER_SHORT-1, y+IVAL_HANDLER_LONG/2,
+ ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow);
+
+ /* handler background */
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->bgcolor );
+ cdCanvasBox(ih->data->cddbuffer,x+1, x+IVAL_HANDLER_SHORT-1-2, y-IVAL_HANDLER_LONG/2+1, y+IVAL_HANDLER_LONG/2-1);
+
+ /* handler sunken mark */
+ cdIupDrawHorizSunkenMark(ih->data->cddbuffer, x+2, x+IVAL_HANDLER_SHORT-4, y, ih->data->light_shadow, ih->data->dark_shadow);
+ }
+}
+
+static void iValDrawHorizontal(Ihandle* ih)
+{
+ int x, y = (ih->data->h-IVAL_TRAIL)/2;
+ double vn = (ih->data->val-ih->data->vmin)/(ih->data->vmax-ih->data->vmin);
+
+ /* trail */
+ cdIupDrawSunkenRect(ih->data->cddbuffer, IVAL_TRAIL_START, y, IVAL_TRAIL_END(ih->data->w)+1, y+IVAL_TRAIL-1,
+ ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow);
+
+ if (ih->data->show_ticks > 2)
+ iValDrawHorizontalTicks(ih);
+
+ if (iupdrvIsActive(ih) && ih->data->himage)
+ {
+ y = (ih->data->h - ih->data->himage_h)/2+1;
+ x = (int)(vn*(IVAL_TRAIL_LONG(ih->data->w)-2) + IVAL_TRAIL_START+1);
+ cdCanvasPutImageRectMap(ih->data->cddbuffer,ih->data->himage_w, ih->data->himage_h, ih->data->himage, ih->data->himage_colors,
+ x-ih->data->himage_w/2, y, 0,0,0,0,0,0);
+ }
+ else if (!iupdrvIsActive(ih) && ih->data->himageinactive)
+ {
+ y = (ih->data->h - ih->data->himageinactive_h)/2+1;
+ x = (int)(vn*(IVAL_TRAIL_LONG(ih->data->w)-2) + IVAL_TRAIL_START+1);
+ cdCanvasPutImageRectMap(ih->data->cddbuffer,ih->data->himageinactive_w, ih->data->himageinactive_h, ih->data->himageinactive, ih->data->himageinactive_colors,
+ x-ih->data->himageinactive_w/2, y, 0,0,0,0,0,0);
+ }
+ else
+ {
+ /* handler border */
+ y = (ih->data->h-IVAL_HANDLER_SHORT)/2;
+ x = (int)(vn*(IVAL_TRAIL_LONG(ih->data->w)-2) + IVAL_TRAIL_START+1);
+ cdIupDrawRaisenRect(ih->data->cddbuffer, x-IVAL_HANDLER_LONG/2-1, y, x+IVAL_HANDLER_LONG/2, y+IVAL_HANDLER_SHORT-1,
+ ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow);
+
+ /* handler background */
+ cdCanvasForeground(ih->data->cddbuffer, ih->data->bgcolor );
+ cdCanvasBox(ih->data->cddbuffer,x-IVAL_HANDLER_LONG/2, x+IVAL_HANDLER_LONG/2-2, y+1, y+IVAL_HANDLER_SHORT-1-2);
+
+ /* handler sunken mark */
+ cdIupDrawVertSunkenMark(ih->data->cddbuffer, x, y+3, y+IVAL_HANDLER_SHORT-3, ih->data->light_shadow, ih->data->dark_shadow);
+ }
+}
+
+static void iValCropValue(Ihandle* ih)
+{
+ if (ih->data->val > ih->data->vmax)
+ ih->data->val = ih->data->vmax;
+ else if (ih->data->val < ih->data->vmin)
+ ih->data->val = ih->data->vmin;
+}
+
+static void iValSetVerticalPosition(Ihandle* ih, int x, int y)
+{
+ double vn;
+ (void)x;
+ y = cdIupInvertYAxis(y, ih->data->h);
+ vn = ((double)(y-IVAL_TRAIL_START))/((double)IVAL_TRAIL_LONG(ih->data->h));
+ ih->data->val = vn*(ih->data->vmax-ih->data->vmin) + ih->data->vmin;
+ iValCropValue(ih);
+ iValRepaint(ih);
+}
+
+static void iValSetHorizontalPosition(Ihandle* ih, int x, int y)
+{
+ double vn;
+ (void)y;
+ vn = ((double)(x-IVAL_TRAIL_START))/((double)IVAL_TRAIL_LONG(ih->data->w));
+ ih->data->val = vn*(ih->data->vmax-ih->data->vmin) + ih->data->vmin;
+ iValCropValue(ih);
+ iValRepaint(ih);
+}
+
+static int iValMotion_CB(Ihandle *ih,int x,int y,char *r)
+{
+ IFnd cb;
+
+ if (!iup_isbutton1(r)) return IUP_DEFAULT;
+ if (!ih->data->moving) return IUP_DEFAULT;
+
+ ih->data->CalcPosition(ih,x,y);
+
+ cb = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB");
+ if (cb) cb(ih,ih->data->val);
+
+ return IUP_DEFAULT;
+}
+
+static int iValButton_CB(Ihandle *ih,int b,int m,int x,int y)
+{
+ char* cb_name;
+ IFnd cb;
+ if (b!=IUP_BUTTON1) return IUP_DEFAULT;
+
+ if (m)
+ {
+ ih->data->CalcPosition(ih, x, y);
+ ih->data->moving = 1;
+ cb_name = "BUTTON_PRESS_CB";
+ }
+ else
+ {
+ if (!ih->data->moving) return IUP_DEFAULT;
+
+ iValRepaint(ih);
+ ih->data->moving = 0;
+
+ cb_name = "BUTTON_RELEASE_CB";
+ }
+
+ cb = (IFnd) IupGetCallback(ih, cb_name);
+ if (cb) cb(ih,ih->data->val);
+
+ return IUP_DEFAULT;
+}
+
+static int iValResize_CB(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ {
+ /* update canvas size */
+ cdCanvasActivate(ih->data->cdcanvas);
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+ }
+
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update size */
+ cdCanvasActivate(ih->data->cddbuffer);
+ cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL);
+
+ /* update render */
+ cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor);
+ cdCanvasClear(ih->data->cddbuffer);
+ ih->data->Draw(ih);
+
+ return IUP_DEFAULT;
+}
+
+static int iValRedraw_CB(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update display */
+ cdCanvasFlush(ih->data->cddbuffer);
+ if (ih->data->has_focus)
+ cdIupDrawFocusRect(ih, ih->data->cdcanvas, 0, 0, ih->data->w-1, ih->data->h-1);
+
+ return IUP_DEFAULT;
+}
+
+static int iValFocus_CB (Ihandle* ih, int focus)
+{
+ ih->data->has_focus = focus;
+ iValRepaint(ih);
+ return IUP_DEFAULT;
+}
+
+static int iValKeypress_CB(Ihandle *ih, int c, int press)
+{
+ char* cb_name;
+ IFnd cb;
+
+ if (c != K_LEFT && c != K_UP &&
+ c != K_PGDN && c != K_PGUP &&
+ c != K_RIGHT && c != K_DOWN &&
+ c != K_END && c != K_HOME &&
+ c != K_sLEFT && c != K_sUP &&
+ c != K_sPGDN && c != K_sPGUP &&
+ c != K_sRIGHT && c != K_sDOWN &&
+ c != K_sEND && c != K_sHOME)
+ return IUP_DEFAULT;
+
+ if (press)
+ {
+ switch(c)
+ {
+ case K_sHOME:
+ case K_HOME:
+ ih->data->val = ih->data->vmax;
+ break;
+ case K_sEND:
+ case K_END:
+ ih->data->val = ih->data->vmin;
+ break;
+ case K_sLEFT:
+ case K_sDOWN:
+ case K_LEFT:
+ case K_DOWN:
+ ih->data->val -= ih->data->step*(ih->data->vmax-ih->data->vmin);
+ iValCropValue(ih);
+ break;
+ case K_sRIGHT:
+ case K_sUP:
+ case K_RIGHT:
+ case K_UP:
+ ih->data->val += ih->data->step*(ih->data->vmax-ih->data->vmin);
+ iValCropValue(ih);
+ break;
+ case K_sPGDN:
+ case K_PGDN:
+ ih->data->val -= ih->data->pagestep*(ih->data->vmax-ih->data->vmin);
+ iValCropValue(ih);
+ break;
+ case K_sPGUP:
+ case K_PGUP:
+ ih->data->val += ih->data->pagestep*(ih->data->vmax-ih->data->vmin);
+ iValCropValue(ih);
+ break;
+ }
+
+ if (fabs(ih->data->val-ih->data->vmin) < 0.9*ih->data->step*(ih->data->vmax-ih->data->vmin))
+ ih->data->val = ih->data->vmin;
+
+ if (ih->data->moving)
+ cb_name = "MOUSEMOVE_CB";
+ else
+ {
+ ih->data->moving = 1;
+ cb_name = "BUTTON_PRESS_CB";
+ }
+ }
+ else
+ {
+ ih->data->moving = 0;
+ cb_name = "BUTTON_RELEASE_CB";
+ }
+
+ iValRepaint(ih);
+
+ cb = (IFnd) IupGetCallback(ih, cb_name);
+ if (cb) cb(ih,ih->data->val);
+
+ return IUP_IGNORE; /* to avoid arrow keys being processed by the system */
+}
+
+static int iValWheel_CB(Ihandle *ih, float delta)
+{
+ IFnd cb;
+
+ ih->data->val += ((double)delta)*ih->data->step*(ih->data->vmax-ih->data->vmin);
+ iValCropValue(ih);
+
+ if (fabs(ih->data->val-ih->data->vmin) < 0.9*ih->data->step*(ih->data->vmax-ih->data->vmin))
+ ih->data->val = ih->data->vmin;
+
+ iValRepaint(ih);
+
+ cb = (IFnd) IupGetCallback(ih, "BUTTON_PRESS_CB");
+ if (cb) cb(ih,ih->data->val);
+
+ cb = (IFnd) IupGetCallback(ih, "BUTTON_RELEASE_CB");
+ if (cb) cb(ih,ih->data->val);
+
+ return IUP_DEFAULT;
+}
+
+
+/*******************************************************************************/
+
+
+static int iValSetTypeAttrib(Ihandle* ih, const char *value)
+{
+ /* valid only before map */
+ if (ih->handle)
+ return 0;
+
+ if (iupStrEqualNoCase(value, "VERTICAL"))
+ {
+ IupSetAttribute(ih, "RASTERSIZE", "28x124");
+
+ ih->data->Draw = iValDrawVertical;
+ ih->data->CalcPosition = iValSetVerticalPosition;
+ ih->data->type = IVAL_VERTICAL;
+ }
+ else /* "HORIZONTAL" */
+ {
+ IupSetAttribute(ih, "RASTERSIZE", "124x28");
+
+ ih->data->Draw = iValDrawHorizontal;
+ ih->data->CalcPosition = iValSetHorizontalPosition;
+ ih->data->type = IVAL_HORIZONTAL;
+ }
+
+ return 0; /* do not store value in hash table */
+}
+
+static char* iValGetTypeAttrib(Ihandle* ih)
+{
+ if (ih->data->type == IVAL_HORIZONTAL)
+ return "HORIZONTAL";
+ else /* (ih->data->type == IVAL_VERTICAL) */
+ return "VERTICAL";
+}
+
+static char* iValGetValueAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%f", ih->data->val);
+ return str;
+}
+
+static int iValSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ ih->data->val = 0;
+ else
+ ih->data->val = atof(value);
+ iValCropValue(ih);
+ iValRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static int iValSetShowTicksAttrib(Ihandle* ih, const char* showticks)
+{
+ int i;
+ if (iupStrToInt(showticks, &i))
+ {
+ ih->data->show_ticks = i;
+ iValRepaint(ih);
+ }
+ return 0; /* do not store value in hash table */
+}
+
+static char* iValGetShowTicksAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%d", ih->data->show_ticks);
+ return str;
+}
+
+static int iValSetStepAttrib(Ihandle* ih, const char* step)
+{
+ ih->data->step = atof(step);
+ iValRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iValGetStepAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%f", ih->data->step);
+ return str;
+}
+
+static int iValSetPageStepAttrib(Ihandle* ih, const char* pagestep)
+{
+ ih->data->step = atof(pagestep);
+ iValRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iValGetPageStepAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%f", ih->data->pagestep);
+ return str;
+}
+
+static int iValSetMaxAttrib(Ihandle* ih, const char* max)
+{
+ ih->data->vmax = atof(max);
+ iValCropValue(ih);
+ iValRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iValGetMaxAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%f", ih->data->vmax);
+ return str;
+}
+
+static int iValSetMinAttrib(Ihandle* ih, const char* min)
+{
+ ih->data->vmin = atof(min);
+ iValCropValue(ih);
+ iValRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+static char* iValGetMinAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(20);
+ sprintf(str, "%f", ih->data->vmin);
+ return str;
+}
+
+static int iValSetHandlerImageAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ {
+ if (ih->data->himage)
+ {
+ free(ih->data->himage);
+ free(ih->data->himage_colors);
+ ih->data->himage = NULL;
+ ih->data->himage_colors = NULL;
+ }
+ }
+ else
+ {
+ iValSetImage(value, &(ih->data->himage), &(ih->data->himage_colors),
+ &(ih->data->himage_w), &(ih->data->himage_h), &(ih->data->himage_numcolors));
+ }
+
+ iValRepaint(ih);
+ return 1;
+}
+
+static int iValSetHandlerImageInactiveAttrib(Ihandle* ih, const char* value)
+{
+ if (value==NULL)
+ {
+ if (ih->data->himageinactive)
+ {
+ free(ih->data->himageinactive);
+ free(ih->data->himageinactive_colors);
+ ih->data->himageinactive = NULL;
+ ih->data->himageinactive_colors = NULL;
+ }
+ }
+ else
+ {
+ iValSetImage(value, &(ih->data->himageinactive), &(ih->data->himageinactive_colors),
+ &(ih->data->himageinactive_w), &(ih->data->himageinactive_h), &(ih->data->himageinactive_numcolors));
+ }
+
+ iValRepaint(ih);
+ return 1;
+}
+
+static int iValSetBgColorAttrib(Ihandle* ih, const char* value)
+{
+ if (!value)
+ value = iupControlBaseGetParentBgColor(ih);
+
+ ih->data->bgcolor = cdIupConvertColor(value);
+
+ cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow);
+ if (!iupdrvIsActive(ih) && !ih->data->himage)
+ ih->data->light_shadow = ih->data->mid_shadow;
+
+ if (ih->data->himage)
+ iValUpdateImageBgColor(ih->data->himage_colors, ih->data->himage_numcolors, ih->data->bgcolor);
+ if (ih->data->himageinactive)
+ iValUpdateImageBgColor(ih->data->himageinactive_colors, ih->data->himageinactive_numcolors, ih->data->bgcolor);
+
+ iValRepaint(ih);
+ return 1;
+}
+
+static int iValSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ iupBaseSetActiveAttrib(ih, value);
+
+ cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow);
+ if (!iupdrvIsActive(ih) && !ih->data->himage)
+ ih->data->light_shadow = ih->data->mid_shadow;
+
+ iValRepaint(ih);
+ return 0; /* do not store value in hash table */
+}
+
+
+/************************************************************************************/
+
+
+static int iValMapMethod(Ihandle* ih)
+{
+ ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih);
+ if (!ih->data->cdcanvas)
+ return IUP_ERROR;
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+
+ return IUP_NOERROR;
+}
+
+static void iValUnMapMethod(Ihandle* ih)
+{
+ if (ih->data->cddbuffer)
+ cdKillCanvas(ih->data->cddbuffer);
+
+ if (ih->data->cdcanvas)
+ cdKillCanvas(ih->data->cdcanvas);
+}
+
+static void iValDestroyMethod(Ihandle* ih)
+{
+ if (ih->data->himage) free(ih->data->himage);
+ if (ih->data->himage_colors) free(ih->data->himage_colors);
+ if (ih->data->himageinactive) free(ih->data->himageinactive);
+ if (ih->data->himageinactive_colors) free(ih->data->himageinactive_colors);
+}
+
+static int iValCreateMethod(Ihandle* ih, void **params)
+{
+ if (params && params[0])
+ iupAttribStoreStr(ih, "TYPE", params[0]);
+
+ /* free the data alocated by IupCanvas */
+ if (ih->data) free(ih->data);
+ ih->data = iupALLOCCTRLDATA();
+
+ /* change the IupCanvas default values */
+ iupAttribSetStr(ih, "BORDER", "NO");
+ ih->expand = IUP_EXPAND_NONE;
+
+ /* default values */
+ iValSetTypeAttrib(ih, "HORIZONTAL");
+ ih->data->vmax = 1;
+ ih->data->step = 0.01;
+ ih->data->pagestep = 0.1;
+
+ IupSetCallback(ih,"RESIZE_CB",(Icallback)iValResize_CB);
+ IupSetCallback(ih,"ACTION",(Icallback)iValRedraw_CB);
+ IupSetCallback(ih,"BUTTON_CB",(Icallback)iValButton_CB);
+ IupSetCallback(ih,"MOTION_CB",(Icallback)iValMotion_CB);
+ IupSetCallback(ih,"FOCUS_CB",(Icallback)iValFocus_CB);
+ IupSetCallback(ih,"WHEEL_CB",(Icallback)iValWheel_CB);
+ IupSetCallback(ih,"KEYPRESS_CB",(Icallback)iValKeypress_CB);
+
+ return IUP_NOERROR;
+}
+
+static Iclass* iValGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupCanvasGetClass());
+
+ ic->name = "val";
+ ic->format = "S"; /* one optional string */
+ ic->nativetype = IUP_TYPECANVAS;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iValCreateMethod;
+ ic->Destroy = iValDestroyMethod;
+ ic->Map = iValMapMethod;
+ ic->UnMap = iValUnMapMethod;
+
+ /* IupVal Callbacks */
+ iupClassRegisterCallback(ic, "MOUSEMOVE_CB", "d");
+ iupClassRegisterCallback(ic, "BUTTON_PRESS_CB", "d");
+ iupClassRegisterCallback(ic, "BUTTON_RELEASE_CB", "d");
+
+ /* IupVal only */
+ iupClassRegisterAttribute(ic, "VALUE", iValGetValueAttrib, iValSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TYPE", iValGetTypeAttrib, iValSetTypeAttrib, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "SHOWTICKS", iValGetShowTicksAttrib, iValSetShowTicksAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "STEP", iValGetStepAttrib, iValSetStepAttrib, IUPAF_SAMEASSYSTEM, "0.01", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "PAGESTEP", iValGetPageStepAttrib, iValSetPageStepAttrib, IUPAF_SAMEASSYSTEM, "0.1", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "MAX", iValGetMaxAttrib, iValSetMaxAttrib, IUPAF_SAMEASSYSTEM, "1.0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "MIN", iValGetMinAttrib, iValSetMinAttrib, IUPAF_SAMEASSYSTEM, "0.0", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "HANDLER_IMAGE", NULL, iValSetHandlerImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "HANDLER_IMAGE_INACTIVE", NULL, iValSetHandlerImageInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED);
+
+ /* Overwrite IupCanvas Attributes */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iValSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iValSetBgColorAttrib, NULL, "255 255 255", IUPAF_NO_INHERIT); /* overwrite canvas implementation, set a system default to force a new default */
+
+ return ic;
+}
+
+void IupOldValOpen(void)
+{
+ iupRegisterClass(iValGetClass());
+}
diff --git a/iup/srccontrols/iupcontrols.def b/iup/srccontrols/iupcontrols.def
new file mode 100755
index 0000000..06c8f6f
--- /dev/null
+++ b/iup/srccontrols/iupcontrols.def
@@ -0,0 +1,35 @@
+EXPORTS
+IupColorbar
+IupColorBrowser
+IupDial
+IupGauge
+IupCells
+IupMatrix
+IupMatSetAttribute
+IupMatStoreAttribute
+IupMatGetAttribute
+IupMatGetInt
+IupMatGetFloat
+IupMatSetfAttribute
+
+IupControlsOpen
+IupControlsClose
+
+iupmaskSet
+iupmaskSetInt
+iupmaskSetFloat
+iupmaskCheck
+iupmaskGet
+iupmaskGetFloat
+iupmaskGetDouble
+iupmaskGetInt
+iupmaskMatSet
+iupmaskMatSetInt
+iupmaskMatSetFloat
+iupmaskMatCheck
+iupmaskMatGet
+iupmaskMatGetFloat
+iupmaskMatGetDouble
+iupmaskMatGetInt
+iupmaskRemove
+iupmaskMatRemove
diff --git a/iup/srccontrols/iupcontrols.dep b/iup/srccontrols/iupcontrols.dep
new file mode 100644
index 0000000..773616a
--- /dev/null
+++ b/iup/srccontrols/iupcontrols.dep
@@ -0,0 +1,173 @@
+$(OBJDIR)/iup_cdutil.o: iup_cdutil.c ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../src/iup_attrib.h ../src/iup_str.h \
+ ../src/iup_drv.h iup_cdutil.h
+$(OBJDIR)/iup_gauge.o: iup_gauge.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../../cd/include/cdiup.h \
+ ../../cd/include/cddbuf.h ../src/iup_object.h ../src/iup_class.h \
+ ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \
+ ../src/iup_str.h ../src/iup_drv.h ../src/iup_stdcontrols.h \
+ iup_controls.h iup_cdutil.h
+$(OBJDIR)/iup_cells.o: iup_cells.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../../cd/include/cdiup.h \
+ ../../cd/include/cddbuf.h ../src/iup_object.h ../src/iup_class.h \
+ ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \
+ ../src/iup_str.h ../src/iup_drv.h ../src/iup_stdcontrols.h \
+ iup_controls.h iup_cdutil.h
+$(OBJDIR)/iup_colorbar.o: iup_colorbar.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcontrols.h ../include/iupcbs.h \
+ ../../cd/include/cd.h ../../cd/include/cd_old.h \
+ ../../cd/include/cdiup.h ../../cd/include/cddbuf.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_attrib.h ../src/iup_str.h ../src/iup_drv.h \
+ ../src/iup_stdcontrols.h iup_controls.h ../src/iup_image.h iup_cdutil.h
+$(OBJDIR)/iup_controls.o: iup_controls.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcontrols.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_childtree.h ../src/iup_register.h iup_controls.h \
+ ../src/iup_attrib.h
+$(OBJDIR)/iup_dial.o: iup_dial.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../../cd/include/cdiup.h \
+ ../../cd/include/cddbuf.h ../src/iup_object.h ../src/iup_class.h \
+ ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \
+ ../src/iup_str.h ../src/iup_drv.h ../src/iup_stdcontrols.h \
+ iup_controls.h iup_cdutil.h
+$(OBJDIR)/iup_oldtabs.o: iup_oldtabs.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../../cd/include/cdiup.h \
+ ../../cd/include/cddbuf.h ../src/iup_object.h ../src/iup_class.h \
+ ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \
+ ../src/iup_str.h ../src/iup_drv.h ../src/iup_drvfont.h \
+ ../src/iup_stdcontrols.h ../src/iup_register.h ../src/iup_layout.h \
+ iup_controls.h iup_cdutil.h
+$(OBJDIR)/iup_oldval.o: iup_oldval.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../include/iupcontrols.h \
+ ../../cd/include/cd.h ../../cd/include/cd_old.h \
+ ../../cd/include/cdiup.h ../../cd/include/cddbuf.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_attrib.h ../src/iup_str.h ../src/iup_drv.h \
+ ../src/iup_stdcontrols.h iup_controls.h iup_cdutil.h \
+ ../src/iup_register.h
+$(OBJDIR)/iup_oldmask.o: iup_oldmask.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcontrols.h ../include/iupmask.h \
+ ../src/iup_mask.h ../src/iup_str.h
+$(OBJDIR)/iup_colorbrowser.o: color/iup_colorbrowser.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \
+ ../../cd/include/cd.h ../../cd/include/cd_old.h \
+ ../../cd/include/cdiup.h ../../cd/include/cdirgb.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_attrib.h ../src/iup_str.h ../src/iup_drv.h \
+ ../src/iup_stdcontrols.h iup_controls.h iup_cdutil.h \
+ color/iup_colorhsi.h
+$(OBJDIR)/iup_colorhsi.o: color/iup_colorhsi.c color/iup_colorhsi.h
+$(OBJDIR)/iup_colorbrowserdlg.o: color/iup_colorbrowserdlg.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \
+ ../include/iupcontrols.h ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../../cd/include/cdiup.h \
+ ../../cd/include/cddbuf.h ../../cd/include/cdirgb.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_attrib.h ../src/iup_str.h ../src/iup_strmessage.h \
+ ../src/iup_drv.h ../src/iup_stdcontrols.h iup_controls.h iup_cdutil.h \
+ ../src/iup_register.h ../src/iup_image.h color/iup_colorhsi.h \
+ ../src/iup_childtree.h
+$(OBJDIR)/iupmat_key.o: matrix/iupmat_key.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../src/iup_object.h ../src/iup_class.h \
+ ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \
+ ../src/iup_stdcontrols.h matrix/iupmat_def.h matrix/iupmat_scroll.h \
+ matrix/iupmat_focus.h matrix/iupmat_aux.h matrix/iupmat_getset.h \
+ matrix/iupmat_key.h matrix/iupmat_mark.h matrix/iupmat_edit.h \
+ matrix/iupmat_draw.h
+$(OBJDIR)/iupmat_mark.o: matrix/iupmat_mark.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../src/iup_object.h ../src/iup_class.h \
+ ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \
+ ../src/iup_str.h ../src/iup_stdcontrols.h matrix/iupmat_def.h \
+ matrix/iupmat_mark.h matrix/iupmat_getset.h matrix/iupmat_draw.h
+$(OBJDIR)/iupmat_aux.o: matrix/iupmat_aux.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../src/iup_object.h ../src/iup_class.h \
+ ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \
+ ../src/iup_str.h ../src/iup_drvfont.h ../src/iup_stdcontrols.h \
+ matrix/iupmat_def.h matrix/iupmat_aux.h matrix/iupmat_getset.h
+$(OBJDIR)/iupmat_mem.o: matrix/iupmat_mem.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../src/iup_object.h ../src/iup_class.h \
+ ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \
+ ../src/iup_str.h ../src/iup_stdcontrols.h matrix/iupmat_def.h \
+ matrix/iupmat_mem.h
+$(OBJDIR)/iupmat_mouse.o: matrix/iupmat_mouse.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \
+ ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_attrib.h ../src/iup_str.h ../src/iup_stdcontrols.h \
+ matrix/iupmat_def.h matrix/iupmat_colres.h matrix/iupmat_aux.h \
+ matrix/iupmat_focus.h matrix/iupmat_mouse.h matrix/iupmat_key.h \
+ matrix/iupmat_mark.h matrix/iupmat_edit.h matrix/iupmat_draw.h \
+ matrix/iupmat_scroll.h
+$(OBJDIR)/iupmat_numlc.o: matrix/iupmat_numlc.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \
+ ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_attrib.h ../src/iup_str.h ../src/iup_stdcontrols.h \
+ matrix/iupmat_def.h matrix/iupmat_edit.h matrix/iupmat_mem.h \
+ matrix/iupmat_numlc.h matrix/iupmat_draw.h
+$(OBJDIR)/iupmat_colres.o: matrix/iupmat_colres.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \
+ ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_attrib.h ../src/iup_str.h ../src/iup_stdcontrols.h \
+ matrix/iupmat_def.h matrix/iupmat_colres.h matrix/iupmat_draw.h
+$(OBJDIR)/iupmat_draw.o: matrix/iupmat_draw.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../src/iup_object.h ../src/iup_class.h \
+ ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \
+ ../src/iup_str.h ../src/iup_drv.h ../src/iup_drvfont.h \
+ ../src/iup_stdcontrols.h iup_controls.h iup_cdutil.h ../src/iup_image.h \
+ matrix/iupmat_def.h matrix/iupmat_cd.h matrix/iupmat_draw.h \
+ matrix/iupmat_aux.h matrix/iupmat_getset.h matrix/iupmat_mark.h
+$(OBJDIR)/iupmat_focus.o: matrix/iupmat_focus.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \
+ ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_attrib.h ../src/iup_str.h ../src/iup_stdcontrols.h \
+ matrix/iupmat_def.h matrix/iupmat_aux.h matrix/iupmat_focus.h \
+ matrix/iupmat_draw.h
+$(OBJDIR)/iupmat_getset.o: matrix/iupmat_getset.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \
+ ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_attrib.h ../src/iup_drvfont.h ../src/iup_str.h \
+ ../src/iup_stdcontrols.h iup_controls.h ../src/iup_childtree.h \
+ matrix/iupmat_def.h matrix/iupmat_getset.h matrix/iupmat_edit.h \
+ matrix/iupmat_draw.h matrix/iupmat_aux.h
+$(OBJDIR)/iupmatrix.o: matrix/iupmatrix.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../include/iupcontrols.h \
+ ../../cd/include/cd.h ../../cd/include/cd_old.h \
+ ../../cd/include/cdiup.h ../../cd/include/cddbuf.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_attrib.h ../src/iup_str.h ../src/iup_drv.h \
+ ../src/iup_drvfont.h ../src/iup_stdcontrols.h iup_controls.h \
+ ../src/iup_register.h matrix/iupmat_def.h matrix/iupmat_getset.h \
+ matrix/iupmat_scroll.h matrix/iupmat_aux.h matrix/iupmat_mem.h \
+ matrix/iupmat_mouse.h matrix/iupmat_focus.h matrix/iupmat_key.h \
+ matrix/iupmat_numlc.h matrix/iupmat_colres.h matrix/iupmat_mark.h \
+ matrix/iupmat_edit.h matrix/iupmat_draw.h
+$(OBJDIR)/iupmat_scroll.o: matrix/iupmat_scroll.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \
+ ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_stdcontrols.h matrix/iupmat_def.h matrix/iupmat_scroll.h \
+ matrix/iupmat_focus.h matrix/iupmat_aux.h matrix/iupmat_edit.h \
+ matrix/iupmat_draw.h
+$(OBJDIR)/iupmat_edit.o: matrix/iupmat_edit.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../include/iupcontrols.h \
+ ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_attrib.h ../src/iup_str.h ../src/iup_stdcontrols.h \
+ ../src/iup_childtree.h matrix/iupmat_def.h matrix/iupmat_scroll.h \
+ matrix/iupmat_aux.h matrix/iupmat_edit.h matrix/iupmat_key.h \
+ matrix/iupmat_getset.h matrix/iupmat_draw.h
diff --git a/iup/srccontrols/make_uname b/iup/srccontrols/make_uname
new file mode 100755
index 0000000..cc4b881
--- /dev/null
+++ b/iup/srccontrols/make_uname
@@ -0,0 +1,3 @@
+#This builds all the libraries of the folder for 1 uname
+
+tecmake $1 $2 $3 $4 $5 $6 $7
diff --git a/iup/srccontrols/make_uname.bat b/iup/srccontrols/make_uname.bat
new file mode 100755
index 0000000..f0a0722
--- /dev/null
+++ b/iup/srccontrols/make_uname.bat
@@ -0,0 +1,4 @@
+@echo off
+REM This builds all the libraries of the folder for 1 uname
+
+call tecmake %1 %2 %3 %4 %5 %6
diff --git a/iup/srccontrols/matrix/iupmat_aux.c b/iup/srccontrols/matrix/iupmat_aux.c
new file mode 100755
index 0000000..f8b85bb
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_aux.c
@@ -0,0 +1,480 @@
+/** \file
+ * \brief iupmatrix control
+ * auxiliary functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include <cd.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+
+#include "iupmat_def.h"
+#include "iupmat_aux.h"
+#include "iupmat_getset.h"
+
+
+static int iMatrixAuxIsFullVisibleLast(Ihandle* ih, int m)
+{
+ int i, sum = 0;
+ ImatLinColData *p;
+
+ if (m == IMAT_PROCESS_LIN)
+ p = &(ih->data->lines);
+ else
+ p = &(ih->data->columns);
+
+ for(i = p->first; i <= p->last; i++)
+ sum += p->sizes[i];
+
+ if (sum > p->visible_size)
+ return 0;
+ else
+ return 1;
+}
+
+int iupMatrixAuxIsCellFullVisible(Ihandle* ih, int lin, int col)
+{
+ if(((lin >= ih->data->lines.first) &&
+ (lin <= ih->data->lines.last) &&
+ (col >= ih->data->columns.first) &&
+ (col <= ih->data->columns.last)))
+ {
+ if (col == ih->data->columns.last && !iMatrixAuxIsFullVisibleLast(ih, IMAT_PROCESS_COL))
+ return 0;
+ if (lin == ih->data->lines.last && !iMatrixAuxIsFullVisibleLast(ih, IMAT_PROCESS_LIN))
+ return 0;
+
+ return 1;
+ }
+
+ return 0;
+}
+
+int iupMatrixAuxIsCellVisible(Ihandle* ih, int lin, int col)
+{
+ if(((lin >= ih->data->lines.first) &&
+ (lin <= ih->data->lines.last) &&
+ (col >= ih->data->columns.first) &&
+ (col <= ih->data->columns.last)))
+ {
+ return 1;
+ }
+
+ return 0;
+}
+
+void iupMatrixAuxGetVisibleCellDim(Ihandle* ih, int lin, int col, int* x, int* y, int* w, int* h)
+{
+ int i;
+
+ /* find the position where the column starts */
+ *x = ih->data->columns.sizes[0];
+ for(i = ih->data->columns.first; i < col; i++)
+ *x += ih->data->columns.sizes[i];
+
+ /* find the column size */
+ *w = ih->data->columns.sizes[col] - 1;
+
+ /* find the position where the line starts */
+ *y = ih->data->lines.sizes[0];
+ for(i = ih->data->lines.first; i < lin; i++)
+ *y += ih->data->lines.sizes[i];
+
+ /* find the line size */
+ *h = ih->data->lines.sizes[lin] - 1;
+}
+
+/* Calculate the size, in pixels, of the invisible columns/lines,
+ the left/above of the first column/line.
+ In fact the start position of the visible area.
+ Depends on the first visible column/line.
+ -> m : choose will operate on lines or columns [IMAT_PROCESS_LIN|IMAT_PROCESS_COL]
+*/
+void iupMatrixAuxUpdateVisiblePos(Ihandle* ih, int m)
+{
+ char* POS;
+ int i, sb, visible_pos;
+ ImatLinColData *p;
+
+ if (m == IMAT_PROCESS_LIN)
+ {
+ p = &(ih->data->lines);
+ sb = IUP_SB_VERT;
+ POS = "POSY";
+ }
+ else
+ {
+ p = &(ih->data->columns);
+ sb = IUP_SB_HORIZ;
+ POS = "POSX";
+ }
+
+ visible_pos = 0;
+ for(i = 1; i < p->first; i++)
+ visible_pos += p->sizes[i];
+
+ if (ih->data->canvas.sb & sb)
+ {
+ float pos;
+
+ if (p->total_size)
+ {
+ while ((visible_pos + p->visible_size > p->total_size) && p->first>1)
+ {
+ /* invalid position, must recalculate first */
+ p->first--;
+ visible_pos -= p->sizes[p->first];
+ }
+
+ pos = (float)visible_pos/(float)p->total_size;
+ }
+ else
+ pos = 0;
+
+ iupMatrixAuxUpdateLast(p);
+ IupSetfAttribute(ih, POS, "%.5f", (double)pos);
+ }
+ else
+ iupMatrixAuxUpdateLast(p);
+}
+
+/* Calculate which is the last visible column/line of the matrix.
+ Depends on the first visible column/line. */
+void iupMatrixAuxUpdateLast(ImatLinColData *p)
+{
+ int i, sum = 0;
+
+ if (p->visible_size > 0)
+ {
+ /* Find which is the last column/line
+ Start in the first visible and continue adding the widths
+ up to the visible size */
+ for(i = p->first; i < p->num; i++)
+ {
+ sum += p->sizes[i];
+ if(sum >= p->visible_size)
+ break;
+ }
+
+ if (i == p->num)
+ p->last = i-1;
+ else
+ p->last = i;
+ }
+ else
+ {
+ /* There is no space for any column, set the last column as 0 */
+ p->last = 0;
+ }
+}
+
+int iupMatrixAuxGetColumnWidth(Ihandle* ih, int col)
+{
+ int width = 0, pixels = 0;
+ char* str = iupStrGetMemory(100);
+ char* value;
+
+ /* can only be called for valid columns */
+
+ sprintf(str, "WIDTH%d", col);
+ value = iupAttribGet(ih, str);
+ if (!value)
+ {
+ sprintf(str, "RASTERWIDTH%d", col);
+ value = iupAttribGet(ih, str);
+ if (value)
+ pixels = 1;
+ }
+
+ if (!value)
+ {
+ /* Use the titles to define the size */
+ if (col == 0)
+ {
+ if (!ih->data->callback_mode || ih->data->use_title_size)
+ {
+ /* find the largest title */
+ int lin, max_width = 0;
+ for(lin = 0; lin < ih->data->lines.num; lin++)
+ {
+ char* title_value = iupMatrixCellGetValue(ih, lin, 0);
+ if (title_value)
+ {
+ iupdrvFontGetMultiLineStringSize(ih, title_value, &width, NULL);
+ if (width > max_width)
+ max_width = width;
+ }
+ }
+ width = max_width;
+ }
+ }
+ else if (ih->data->use_title_size)
+ {
+ char* title_value = iupMatrixCellGetValue(ih, 0, col);
+ if (title_value)
+ iupdrvFontGetMultiLineStringSize(ih, title_value, &width, NULL);
+ }
+ if (width)
+ return width + IMAT_PADDING_W + IMAT_FRAME_W;
+
+ if (col != 0)
+ value = iupAttribGetStr(ih, "WIDTHDEF");
+ }
+
+ if (iupStrToInt(value, &width))
+ {
+ if (width <= 0)
+ return 0;
+ else
+ {
+ if (pixels)
+ return width + IMAT_PADDING_W + IMAT_FRAME_W;
+ else
+ {
+ int charwidth;
+ iupdrvFontGetCharSize(ih, &charwidth, NULL);
+ return iupWIDTH2RASTER(width, charwidth) + IMAT_PADDING_W + IMAT_FRAME_W;
+ }
+ }
+ }
+ return 0;
+}
+
+int iupMatrixAuxGetLineHeight(Ihandle* ih, int lin)
+{
+ int height = 0, pixels = 0;
+ char* str = iupStrGetMemory(100);
+ char* value;
+
+ /* can only be called for valid lines */
+
+ sprintf(str, "HEIGHT%d", lin);
+ value = iupAttribGet(ih, str);
+ if(!value)
+ {
+ sprintf(str, "RASTERHEIGHT%d", lin);
+ value = iupAttribGet(ih, str);
+ if(value)
+ pixels = 1;
+ }
+
+ if (!value)
+ {
+ /* Use the titles to define the size */
+ if (lin == 0)
+ {
+ if (!ih->data->callback_mode || ih->data->use_title_size)
+ {
+ /* find the highest title */
+ int col, max_height = 0;
+ for(col = 0; col < ih->data->columns.num; col++)
+ {
+ char* title_value = iupMatrixCellGetValue(ih, 0, col);
+ if (title_value && title_value[0])
+ {
+ iupdrvFontGetMultiLineStringSize(ih, title_value, NULL, &height);
+ if (height > max_height)
+ max_height = height;
+ }
+ }
+ height = max_height;
+ }
+ }
+ else if (ih->data->use_title_size)
+ {
+ char* title_value = iupMatrixCellGetValue(ih, lin, 0);
+ if (title_value && title_value[0])
+ iupdrvFontGetMultiLineStringSize(ih, title_value, NULL, &height);
+ }
+ if (height)
+ return height + IMAT_PADDING_H + IMAT_FRAME_H;
+
+ if (lin != 0)
+ value = iupAttribGetStr(ih, "HEIGHTDEF");
+ }
+
+ if (iupStrToInt(value, &height))
+ {
+ if (height <= 0)
+ return 0;
+ else
+ {
+ if (pixels)
+ return height + IMAT_PADDING_H + IMAT_FRAME_H;
+ else
+ {
+ int charheight;
+ iupdrvFontGetCharSize(ih, NULL, &charheight);
+ return iupHEIGHT2RASTER(height, charheight) + IMAT_PADDING_H + IMAT_FRAME_H;
+ }
+ }
+ }
+ return 0;
+}
+
+/* Fill the sizes vector with the width/heigh of all the columns/lines.
+ Calculate the value of total_size */
+static void iMatrixAuxFillSizeVec(Ihandle* ih, int m)
+{
+ int i;
+ ImatLinColData *p;
+
+ if (m == IMAT_PROCESS_LIN)
+ p = &(ih->data->lines);
+ else
+ p = &(ih->data->columns);
+
+ /* Calculate total width/height of the matrix and the width/height of each column */
+ p->total_size = 0;
+ for(i = 0; i < p->num; i++)
+ {
+ if (m == IMAT_PROCESS_LIN)
+ p->sizes[i] = iupMatrixAuxGetLineHeight(ih, i);
+ else
+ p->sizes[i] = iupMatrixAuxGetColumnWidth(ih, i);
+
+ if (i > 0)
+ p->total_size += p->sizes[i];
+ }
+}
+
+static void iMatrixAuxUpdateVisibleSize(Ihandle* ih, int m)
+{
+ char* D;
+ ImatLinColData *p;
+ int canvas_size;
+
+ if (m == IMAT_PROCESS_LIN)
+ {
+ D = "DY";
+ p = &(ih->data->lines);
+ canvas_size = ih->data->h;
+ }
+ else
+ {
+ D = "DX";
+ p = &(ih->data->columns);
+ canvas_size = ih->data->w;
+ }
+
+ /* Matrix useful area is the current size minus the title area */
+ p->visible_size = canvas_size - p->sizes[0];
+ if (p->visible_size > p->total_size)
+ p->visible_size = p->total_size;
+
+ if (p->total_size)
+ IupSetfAttribute(ih, D, "%f", (double)p->visible_size/(double)p->total_size);
+ else
+ IupSetAttribute(ih, D, "1.0");
+}
+
+void iupMatrixAuxCalcSizes(Ihandle* ih)
+{
+ iMatrixAuxFillSizeVec(ih, IMAT_PROCESS_COL);
+ iMatrixAuxFillSizeVec(ih, IMAT_PROCESS_LIN);
+
+ iMatrixAuxUpdateVisibleSize(ih, IMAT_PROCESS_COL);
+ iMatrixAuxUpdateVisibleSize(ih, IMAT_PROCESS_LIN);
+
+ /* when removing lines the first can be positioned after the last line */
+ if (ih->data->lines.first > ih->data->lines.num-1)
+ {
+ if (ih->data->lines.num==1)
+ ih->data->lines.first = 1;
+ else
+ ih->data->lines.first = ih->data->lines.num-1;
+ }
+ if (ih->data->columns.first > ih->data->columns.num-1)
+ {
+ if (ih->data->columns.num == 1)
+ ih->data->columns.first = 1;
+ else
+ ih->data->columns.first = ih->data->columns.num-1;
+ }
+
+ iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_COL);
+ iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_LIN);
+
+ ih->data->need_calcsize = 0;
+}
+
+int iupMatrixAuxGetLinColFromXY(Ihandle* ih, int x, int y, int* l, int* c)
+{
+ int size, lin, col;
+
+ size = ih->data->columns.sizes[0]; /* always visible when non zero */
+ if (x < size)
+ col = 0; /* It is in the column of titles */
+ else
+ {
+ for(col = ih->data->columns.first; col <= ih->data->columns.last; col++) /* for all visible columns */
+ {
+ size += ih->data->columns.sizes[col];
+ if (x < size)
+ break;
+ }
+ if (col > ih->data->columns.last)
+ col = -1;
+ }
+
+ size = ih->data->lines.sizes[0]; /* always visible when non zero */
+ if (y < size)
+ lin = 0; /* It is in the line of titles */
+ else
+ {
+ for(lin = ih->data->lines.first; lin <= ih->data->lines.last; lin++) /* for all visible lines */
+ {
+ size += ih->data->lines.sizes[lin];
+ if (y < size)
+ break;
+ }
+ if(lin > ih->data->lines.last)
+ lin = -1;
+ }
+
+ if (col == -1 || lin == -1)
+ return 0;
+
+ *l = lin;
+ *c = col;
+ return 1;
+}
+
+int iupMatrixAuxCallLeaveCellCb(Ihandle* ih)
+{
+ IFnii cb = (IFnii)IupGetCallback(ih, "LEAVEITEM_CB");
+ if(cb)
+ return cb(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell);
+ return IUP_DEFAULT;
+}
+
+void iupMatrixAuxCallEnterCellCb(Ihandle* ih)
+{
+ IFnii cb = (IFnii)IupGetCallback(ih, "ENTERITEM_CB");
+ if (cb)
+ cb(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell);
+}
+
+int iupMatrixAuxCallEditionCbLinCol(Ihandle* ih, int lin, int col, int mode, int update)
+{
+ IFniiii cb;
+
+ if (iupAttribGetBoolean(ih, "READONLY"))
+ return IUP_IGNORE;
+
+ cb = (IFniiii)IupGetCallback(ih, "EDITION_CB");
+ if(cb)
+ return cb(ih, lin, col, mode, update);
+ return IUP_DEFAULT;
+}
diff --git a/iup/srccontrols/matrix/iupmat_aux.h b/iup/srccontrols/matrix/iupmat_aux.h
new file mode 100755
index 0000000..296c1f5
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_aux.h
@@ -0,0 +1,37 @@
+/** \file
+ * \brief iupmatrix control
+ * auxiliary functions.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_AUX_H
+#define __IUPMAT_AUX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int iupMatrixAuxIsCellFullVisible(Ihandle* ih, int lin, int col);
+int iupMatrixAuxIsCellVisible(Ihandle* ih, int lin, int col);
+void iupMatrixAuxGetVisibleCellDim (Ihandle* ih, int lin, int col, int* x, int* y, int* w, int* h);
+
+void iupMatrixAuxCalcSizes(Ihandle* ih);
+
+void iupMatrixAuxUpdateVisiblePos(Ihandle* ih, int m);
+void iupMatrixAuxUpdateLast(ImatLinColData *p);
+
+int iupMatrixAuxGetColumnWidth(Ihandle* ih, int col);
+int iupMatrixAuxGetLineHeight (Ihandle* ih, int lin);
+
+int iupMatrixAuxGetLinColFromXY (Ihandle* ih, int x, int y, int* l, int* c);
+
+int iupMatrixAuxCallLeaveCellCb (Ihandle* ih);
+void iupMatrixAuxCallEnterCellCb (Ihandle* ih);
+int iupMatrixAuxCallEditionCbLinCol(Ihandle* ih, int lin, int col, int mode, int update);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmat_cd.h b/iup/srccontrols/matrix/iupmat_cd.h
new file mode 100755
index 0000000..1a10f2b
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_cd.h
@@ -0,0 +1,25 @@
+/** \file
+ * \brief iupmatrix. CD help macros.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_CD_H
+#define __IUPMAT_CD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IUPMAT_LINE(_ih,_x1,_y1,_x2,_y2) cdCanvasLine((_ih)->data->cddbuffer, (_x1), iupMatrixInvertYAxis(_ih, _y1), (_x2), iupMatrixInvertYAxis(_ih, _y2))
+#define IUPMAT_VERTEX(_ih,_x,_y) cdCanvasVertex((_ih)->data->cddbuffer, (_x), iupMatrixInvertYAxis(_ih, _y))
+#define IUPMAT_BOX(_ih,_xmin,_xmax,_ymin,_ymax) cdCanvasBox((_ih)->data->cddbuffer, (_xmin), (_xmax), iupMatrixInvertYAxis(_ih, _ymin), iupMatrixInvertYAxis(_ih, _ymax))
+#define IUPMAT_RECT(_ih,_xmin,_xmax,_ymin,_ymax) cdCanvasRect((_ih)->data->cddbuffer, (_xmin), (_xmax), iupMatrixInvertYAxis(_ih, _ymin), iupMatrixInvertYAxis(_ih, _ymax))
+#define IUPMAT_CLIPAREA(_ih,_xmin,_xmax,_ymin,_ymax) cdCanvasClipArea((_ih)->data->cddbuffer, (_xmin), (_xmax), iupMatrixInvertYAxis(_ih, _ymin), iupMatrixInvertYAxis(_ih, _ymax))
+#define IUPMAT_TEXT(_ih,_x,_y,_text) cdCanvasText((_ih)->data->cddbuffer, (_x), iupMatrixInvertYAxis(_ih, _y), (_text))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmat_colres.c b/iup/srccontrols/matrix/iupmat_colres.c
new file mode 100755
index 0000000..d44b7df
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_colres.c
@@ -0,0 +1,182 @@
+/** \file
+ * \brief iupmatrix column resize
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+/**************************************************************************/
+/* Interactive Column Resize Functions and WIDTH/HEIGHT change */
+/**************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include <cd.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+
+#include "iupmat_def.h"
+#include "iupmat_colres.h"
+#include "iupmat_draw.h"
+
+
+#define IMAT_COLRES_TOL 3
+#define IMAT_RESIZE_COLOR 0x666666L
+
+
+/* Verify if the mouse is in the intersection between two of column titles,
+ if so the resize is started */
+int iupMatrixColResStart(Ihandle* ih, int x, int y)
+{
+ if (ih->data->lines.sizes[0] && y < ih->data->lines.sizes[0] && iupAttribGetBoolean(ih, "RESIZEMATRIX"))
+ {
+ int size, col;
+
+ /* Check if is the column of titles */
+ size = ih->data->columns.sizes[0];
+ if (abs(size-x) < IMAT_COLRES_TOL)
+ {
+ ih->data->colres_drag_col_start_x = 0;
+ ih->data->colres_dragging = 1;
+ ih->data->colres_drag_col_last_x = -1;
+ ih->data->colres_drag_col = 0;
+ return 1;
+ }
+ else
+ {
+ /* find the column */
+ for(col = ih->data->columns.first; col <= ih->data->columns.last; col++)
+ {
+ ih->data->colres_drag_col_start_x = size;
+ size += ih->data->columns.sizes[col];
+ if (abs(size-x) < IMAT_COLRES_TOL)
+ {
+ ih->data->colres_dragging = 1;
+ ih->data->colres_drag_col_last_x = -1;
+ ih->data->colres_drag_col = col;
+ return 1;
+ }
+ }
+ }
+ }
+ return 0;
+}
+
+void iupMatrixColResFinish(Ihandle* ih, int x)
+{
+ char str[100];
+ int width = x - ih->data->colres_drag_col_start_x;
+ if (width < 0)
+ width = 0;
+
+ /* delete feedback */
+ if (ih->data->colres_drag_col_last_x != -1)
+ {
+ int y1 = ih->data->lines.sizes[0]; /* from the bottom of the line of titles */
+ int y2 = ih->data->h-1; /* to the bottom of the matrix */
+
+ cdCanvasWriteMode(ih->data->cdcanvas, CD_XOR);
+ cdCanvasForeground(ih->data->cdcanvas, IMAT_RESIZE_COLOR);
+ cdCanvasLine(ih->data->cdcanvas, ih->data->colres_drag_col_last_x, iupMatrixInvertYAxis(ih, y1),
+ ih->data->colres_drag_col_last_x, iupMatrixInvertYAxis(ih, y2));
+ cdCanvasWriteMode(ih->data->cdcanvas, CD_REPLACE);
+ }
+
+ ih->data->colres_dragging = 0;
+
+ sprintf(str, "RASTERWIDTH%d", ih->data->colres_drag_col);
+ iupAttribSetInt(ih, str, width-IMAT_PADDING_W-IMAT_FRAME_W);
+ sprintf(str, "WIDTH%d", ih->data->colres_drag_col);
+ iupAttribSetStr(ih, str, NULL);
+
+ ih->data->need_calcsize = 1;
+ iupMatrixDraw(ih, 0);
+}
+
+/* Change the column width interactively, just change the line in the screen.
+ When the user finishes the drag, the iupMatrixColResFinish function is called
+ to truly change the column width. */
+void iupMatrixColResMove(Ihandle* ih, int x)
+{
+ int y1, y2;
+
+ int width = x - ih->data->colres_drag_col_start_x;
+ if (width < 0)
+ return;
+
+ y1 = ih->data->lines.sizes[0]; /* from the bottom of the line of titles */
+ y2 = ih->data->h-1; /* to the bottom of the matrix */
+
+ cdCanvasWriteMode(ih->data->cdcanvas, CD_XOR);
+ cdCanvasForeground(ih->data->cdcanvas, IMAT_RESIZE_COLOR);
+
+ /* If it is not the first time, move old line */
+ if (ih->data->colres_drag_col_last_x != -1)
+ {
+ cdCanvasLine(ih->data->cdcanvas, ih->data->colres_drag_col_last_x, iupMatrixInvertYAxis(ih, y1),
+ ih->data->colres_drag_col_last_x, iupMatrixInvertYAxis(ih, y2));
+ }
+
+ cdCanvasLine(ih->data->cdcanvas, x, iupMatrixInvertYAxis(ih, y1),
+ x, iupMatrixInvertYAxis(ih, y2));
+
+ ih->data->colres_drag_col_last_x = x;
+ cdCanvasWriteMode(ih->data->cdcanvas, CD_REPLACE);
+}
+
+
+static void iMatrixColResResetMatrixCursor(Ihandle* ih)
+{
+ char *cursor = iupAttribGet(ih, "_IUPMAT_CURSOR");
+ if (cursor)
+ {
+ IupStoreAttribute(ih, "CURSOR", cursor);
+ iupAttribSetStr(ih, "_IUPMAT_CURSOR", NULL);
+ }
+}
+
+/* Change the cursor when it passes over a group of the column titles. */
+void iupMatrixColResCheckChangeCursor(Ihandle* ih, int x, int y)
+{
+ if(ih->data->lines.sizes[0] && y < ih->data->lines.sizes[0] && iupAttribGetBoolean(ih, "RESIZEMATRIX"))
+ {
+ /* It is in the column titles area and the resize mode is on */
+ int found = 0, size, col;
+
+ size = ih->data->columns.sizes[0];
+ if (abs(size - x) < IMAT_COLRES_TOL)
+ found = 1; /* line titles */
+ else
+ {
+ for(col = ih->data->columns.first; col <= ih->data->columns.last && !found; col++)
+ {
+ size += ih->data->columns.sizes[col];
+ if(abs(size - x) < IMAT_COLRES_TOL)
+ found = 1;
+ }
+ }
+
+ if (found)
+ {
+ if (!iupAttribGet(ih, "_IUPMAT_CURSOR"))
+ iupAttribStoreStr(ih, "_IUPMAT_CURSOR", IupGetAttribute(ih, "CURSOR"));
+ IupSetAttribute(ih, "CURSOR", "RESIZE_W");
+ }
+ else /* It is in the empty area after the last column */
+ iMatrixColResResetMatrixCursor(ih);
+ }
+ else
+ iMatrixColResResetMatrixCursor(ih);
+}
+
+int iupMatrixColResIsResizing(Ihandle* ih)
+{
+ return ih->data->colres_dragging;
+}
+
diff --git a/iup/srccontrols/matrix/iupmat_colres.h b/iup/srccontrols/matrix/iupmat_colres.h
new file mode 100755
index 0000000..ba7f23d
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_colres.h
@@ -0,0 +1,24 @@
+/** \file
+ * \brief iupmatrix column resize.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_COLRES_H
+#define __IUPMAT_COLRES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int iupMatrixColResStart (Ihandle* ih, int x, int y);
+void iupMatrixColResFinish (Ihandle* ih, int x);
+void iupMatrixColResMove (Ihandle* ih, int x);
+void iupMatrixColResCheckChangeCursor(Ihandle* ih, int x, int y);
+int iupMatrixColResIsResizing (Ihandle* ih);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmat_def.h b/iup/srccontrols/matrix/iupmat_def.h
new file mode 100755
index 0000000..d45acde
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_def.h
@@ -0,0 +1,122 @@
+/** \file
+ * \brief iupmatrix. definitions.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_DEF_H
+#define __IUPMAT_DEF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define IMAT_PROCESS_COL 1 /* Process the columns */
+#define IMAT_PROCESS_LIN 2 /* Process the lines */
+
+/***************************************************************************/
+/* Decoration size in pixels */
+/***************************************************************************/
+#define IMAT_PADDING_W 6
+#define IMAT_PADDING_H 6
+#define IMAT_FRAME_W 2
+#define IMAT_FRAME_H 2
+
+/* Cell flags */
+#define IUPMAT_FONT 1 /* Has FONTL:C attribute */
+#define IUPMAT_FGCOLOR 2 /* Has FGCOLORL:C attribute */
+#define IUPMAT_BGCOLOR 4 /* Has BGCOLORL:C attribute */
+#define IUPMAT_MARK 8 /* Is marked */
+#define IUPMAT_FRAMEHCOLOR 16 /* Has FRAMEHORIZCOLORL:C */
+#define IUPMAT_FRAMEVCOLOR 32 /* Has FRAMEVERTCOLORL:C */
+
+/***************************************************************************/
+/* Structures stored in each matrix */
+/***************************************************************************/
+typedef struct _ImatCell
+{
+ char *value; /* Cell value */
+ unsigned char flags;
+} ImatCell;
+
+
+typedef struct _ImatLinColData
+{
+ int* sizes; /* Width/height of the columns/lines (allocated after map) */
+ unsigned char* flags; /* Attribute flags for the columns/lines (allocated after map) */
+
+ int num; /* Number of columns/lines in the matrix, default/minimum=1, always includes the title */
+ int num_alloc; /* Number of columns/lines allocated, default=5 */
+
+ int first; /* First visible column/line */
+ int last; /* Last visible column/line */
+
+ /* used to configure the scrollbar */
+ int total_size; /* Sum of the widths/heights of the columns/lines, not including the title */
+ int visible_size; /* Width/height of the visible window, not including the title */
+
+ int focus_cell; /* index of the current cell */
+} ImatLinColData;
+
+struct _IcontrolData
+{
+ iupCanvas canvas; /* from IupCanvas (must reserve it) */
+
+ ImatCell** cells; /* Cell value, this will be NULL if in callback mode (allocated after map) */
+
+ Ihandle* texth; /* Text handle */
+ Ihandle* droph; /* Dropdown handle */
+ Ihandle* datah; /* Current active edition element, may be equal to texth or droph */
+
+ cdCanvas* cddbuffer;
+ cdCanvas* cdcanvas;
+
+ ImatLinColData lines;
+ ImatLinColData columns;
+
+ int has_focus;
+ int w, h; /* canvas size */
+ int callback_mode;
+ int use_title_size; /* use title contents when calculating cell size */
+ int need_calcsize;
+ int first_redraw;
+
+ /* attributes */
+ int mark_continuous, mark_mode, mark_multiple;
+ int checkframecolor;
+
+ /* Mouse and Keyboard AUX */
+ int leftpressed; /* left mouse button is pressed */
+ int homekeycount, endkeycount; /* numbers of times that key was pressed */
+
+ /* ColRes AUX */
+ int colres_dragging, /* indicates if it is being made a column resize */
+ colres_drag_col, /* column being resized */
+ colres_drag_col_start_x, /* position of the start of the column being resized */
+ colres_drag_col_last_x; /* previous position */
+
+ /* Mark AUX */
+ int mark_lin1, mark_col1, /* used to store the start cell when a block is being marked */
+ mark_lin2, mark_col2, /* used to store the end cell when a block was marked */
+ mark_full1, /* indicate if full lines or columns is being selected */
+ mark_full2;
+
+ /* Draw AUX, valid only after iupMatrixPrepareDrawData */
+ sIFnii font_cb;
+ IFniiIII fgcolor_cb;
+ IFniiIII bgcolor_cb;
+ char *bgcolor, *bgcolor_parent, *fgcolor, *font; /* not need to free */
+};
+
+
+int iupMatrixIsValid(Ihandle* ih, int check_cells);
+
+#define iupMatrixInvertYAxis(_ih, _y) ((_ih)->data->h-1 - (_y))
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmat_draw.c b/iup/srccontrols/matrix/iupmat_draw.c
new file mode 100755
index 0000000..7c53fb5
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_draw.c
@@ -0,0 +1,866 @@
+/** \file
+ * \brief iupmatrix control
+ * draw functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#undef CD_NO_OLD_INTERFACE
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include <cd.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_controls.h"
+#include "iup_cdutil.h"
+#include "iup_image.h"
+
+#include "iupmat_def.h"
+#include "iupmat_cd.h"
+#include "iupmat_draw.h"
+#include "iupmat_aux.h"
+#include "iupmat_getset.h"
+#include "iupmat_mark.h"
+
+
+/* Color attenuation factor in a marked cell, 20% darker */
+#define IMAT_ATENUATION(_x) ((unsigned char)(((_x)*8)/10))
+
+/* Text alignment that will be draw. Used by iMatrixDrawCellValue */
+#define IMAT_T_CENTER 1
+#define IMAT_T_LEFT 2
+#define IMAT_T_RIGHT 3
+
+#define IMAT_CD_INACTIVE_FGCOLOR 0x666666L
+
+#define IMAT_COMBOBOX_W 16
+
+
+typedef int (*IFniiiiiiC)(Ihandle *h, int lin, int col,int x1, int x2, int y1, int y2, cdCanvas* cnv);
+
+
+/**************************************************************************/
+/* Private functions */
+/**************************************************************************/
+
+
+static int iMatrixDrawGetColAlignment(Ihandle* ih, int col, char* str)
+{
+ char* align;
+ sprintf(str, "ALIGNMENT%d", col);
+ align = iupAttribGet(ih, str);
+ if (!align)
+ {
+ if (col == 0)
+ return IMAT_T_LEFT;
+ else
+ return IMAT_T_CENTER;
+ }
+ else if (iupStrEqualNoCase(align, "ARIGHT"))
+ return IMAT_T_RIGHT;
+ else if(iupStrEqualNoCase(align, "ACENTER"))
+ return IMAT_T_CENTER;
+ else
+ return IMAT_T_LEFT;
+}
+
+static int iMatrixDrawCallDrawCB(Ihandle* ih, int lin, int col, int x1, int x2, int y1, int y2, IFniiiiiiC draw_cb)
+{
+ int ret;
+ cdCanvas* old_cnv;
+
+ IUPMAT_CLIPAREA(ih, x1, x2, y1, y2);
+ cdCanvasClip(ih->data->cddbuffer, CD_CLIPAREA);
+
+ old_cnv = cdActiveCanvas();
+ if (old_cnv != ih->data->cddbuffer) /* backward compatibility code */
+ cdActivate(ih->data->cddbuffer);
+
+ ret = draw_cb(ih, lin, col, x1, x2, iupMatrixInvertYAxis(ih, y1), iupMatrixInvertYAxis(ih, y2), ih->data->cddbuffer);
+
+ cdCanvasClip(ih->data->cddbuffer, CD_CLIPOFF);
+
+ if (old_cnv && old_cnv != ih->data->cddbuffer) /* backward compatibility code */
+ {
+ cdActivate(old_cnv);
+ cdCanvasActivate(ih->data->cddbuffer);
+ }
+
+ if (ret == IUP_DEFAULT)
+ return 0;
+
+ return 1;
+}
+
+/* Change the CD foreground color, for the selected color to draw a cell with
+ its FOREGROUND COLOR. This involves checking if there is a color attribute
+ that cell. If no, uses a color attribute for the line, else if no for the
+ column, else if no for the entire matrix. Finally, if not find any of
+ these, use the default color.
+ -> lin, col - cell coordinates, in IUP format - i.e., l,l represents the left
+ top cell of the matrix; lin and col values = 0 represents the
+ title lines and columns.
+ -> mark - indicate if a cell is marked. If yes, its color is attenuated.
+*/
+static unsigned long iMatrixDrawSetFgColor(Ihandle* ih, int lin, int col, int mark)
+{
+ unsigned char r = 0, g = 0, b = 0;
+ iupMatrixGetFgRGB(ih, lin, col, &r, &g, &b);
+
+ if (mark)
+ {
+ r = IMAT_ATENUATION(r);
+ g = IMAT_ATENUATION(g);
+ b = IMAT_ATENUATION(b);
+ }
+
+ return cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(r, g, b));
+}
+
+/* Change the CD foreground color, for the selected color to draw a cell with
+ its BACKGROUND COLOR. This involves checking if there is a color attribute
+ that cell. If no, uses a color attribute for the line, else if no for the
+ column, else if no for the entire matrix. Finally, if not find any of
+ these, use the default color.
+ -> lin, col - cell coordinates, in IUP format - i.e., l,l represents the left
+ top cell of the matrix; lin and col values = 0 represents the
+ title lines and columns.
+ -> mark - indicate if a cell is marked. If yes, its color is attenuated.
+*/
+static unsigned long iMatrixDrawSetBgColor(Ihandle* ih, int lin, int col, int mark, int active)
+{
+ unsigned char r = 255, g = 255, b = 255;
+
+ iupMatrixGetBgRGB(ih, lin, col, &r, &g, &b);
+
+ if (mark)
+ {
+ r = IMAT_ATENUATION(r);
+ g = IMAT_ATENUATION(g);
+ b = IMAT_ATENUATION(b);
+ }
+
+ if (!active)
+ {
+ r = cdIupLIGTHER(r);
+ g = cdIupLIGTHER(g);
+ b = cdIupLIGTHER(b);
+ }
+
+ return cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(r, g, b));
+}
+
+static void iMatrixDrawFrameHorizLineCell(Ihandle* ih, int lin, int col, int x1, int x2, int y, long framecolor, char* str)
+{
+ if (ih->data->checkframecolor && (ih->data->callback_mode || ih->data->cells[lin][col].flags & IUPMAT_FRAMEHCOLOR))
+ {
+ unsigned char r,g,b;
+ sprintf(str, "FRAMEHORIZCOLOR%d:%d", lin, col);
+ if (iupStrToRGB(iupAttribGet(ih, str), &r, &g, &b))
+ framecolor = cdEncodeColor(r, g, b);
+ }
+
+ cdCanvasForeground(ih->data->cddbuffer, framecolor);
+ IUPMAT_LINE(ih, x1, y, x2, y); /* bottom horizontal line */
+}
+
+static void iMatrixDrawFrameVertLineCell(Ihandle* ih, int lin, int col, int x, int y1, int y2, long framecolor, char* str)
+{
+ if (ih->data->checkframecolor && (ih->data->callback_mode || ih->data->cells[lin][col].flags & IUPMAT_FRAMEVCOLOR))
+ {
+ unsigned char r,g,b;
+ sprintf(str, "FRAMEVERTCOLOR%d:%d", lin, col);
+ if (iupStrToRGB(iupAttribGet(ih, str), &r, &g, &b))
+ framecolor = cdEncodeColor(r, g, b);
+ }
+
+ cdCanvasForeground(ih->data->cddbuffer, framecolor);
+ IUPMAT_LINE(ih, x, y1, x, y2); /* right vertical line */
+}
+
+static void iMatrixDrawFrameRectTitle(Ihandle* ih, int lin, int col, int x1, int x2, int y1, int y2, long framecolor, char* str)
+{
+ /* avoid drawing over the frame of the next cell */
+ x2 -= IMAT_FRAME_W/2;
+ y2 -= IMAT_FRAME_H/2;
+
+ iMatrixDrawFrameVertLineCell(ih, lin, col, x2, y1, y2, framecolor, str); /* right vertical line */
+ if (col==0)
+ {
+ IUPMAT_LINE(ih, x1, y1, x1, y2); /* left vertical line, reuse Foreground */
+ x1++;
+ }
+ else if (col==1 && ih->data->columns.sizes[0] == 0)
+ {
+ /* If does not have line titles then draw the left line of the cell frame */
+ IUPMAT_LINE(ih, x1, y1, x1, y2-1);
+ x1++;
+ }
+
+ cdCanvasForeground(ih->data->cddbuffer, CD_WHITE); /* Titles have a white line near the frame */
+ IUPMAT_LINE(ih, x1, y1+1, x1, y2-1);
+
+ iMatrixDrawFrameHorizLineCell(ih, lin, col, x1, x2, y2, framecolor, str); /* bottom horizontal line */
+ if (lin==0)
+ {
+ IUPMAT_LINE(ih, x1, y1, x2, y1); /* top horizontal line, reuse Foreground */
+ y1++;
+ }
+ else if (lin==1 && ih->data->lines.sizes[0] == 0)
+ {
+ /* If does not have column titles then draw the top line of the cell frame */
+ IUPMAT_LINE(ih, x1, y1, x2-1, y1);
+ y1++;
+ }
+
+ cdCanvasForeground(ih->data->cddbuffer, CD_WHITE); /* Titles have a white line near the frame */
+ IUPMAT_LINE(ih, x1, y1, x2-1, y1);
+}
+
+static void iMatrixDrawFrameRectCell(Ihandle* ih, int lin, int col, int x1, int x2, int y1, int y2, long framecolor, char* str)
+{
+ if (col==1 && ih->data->columns.sizes[0] == 0)
+ {
+ /* If does not have line titles then draw the left line of the cell frame */
+ iMatrixDrawFrameVertLineCell(ih, lin, col, x1, y1, y2-1-1, framecolor, str);
+ }
+
+ if (lin==1 && ih->data->lines.sizes[0] == 0)
+ {
+ /* If does not have column titles then draw the top line of the cell frame */
+ iMatrixDrawFrameHorizLineCell(ih, lin, col, x1, x2-1-1, y1, framecolor, str);
+ }
+
+ /* bottom line */
+ iMatrixDrawFrameHorizLineCell(ih, lin, col, x1, x2-1, y2-1, framecolor, str);
+
+ /* rigth line */
+ iMatrixDrawFrameVertLineCell(ih, lin, col, x2-1, y1, y2-1, framecolor, str);
+}
+
+static int iMatrixDrawSortSign(Ihandle* ih, int x2, int y1, int y2, int col, int active, char* str)
+{
+ int yc;
+ char* sort;
+
+ sprintf(str, "SORTSIGN%d", col);
+ sort = iupAttribGet(ih, str);
+ if (!sort || iupStrEqualNoCase(sort, "NO"))
+ return 0;
+
+ /* Remove the space between text and cell frame */
+ x2 -= IMAT_PADDING_W/2 + IMAT_FRAME_W/2;
+
+ /* Set the color used to draw the text */
+ if (active)
+ cdCanvasForeground(ih->data->cddbuffer, IMAT_CD_INACTIVE_FGCOLOR);
+ else
+ iMatrixDrawSetFgColor(ih, 0, col, 0);
+
+ yc = (int)( (y1 + y2 ) / 2.0 - .5);
+
+ cdCanvasBegin(ih->data->cddbuffer, CD_FILL);
+
+ if (iupStrEqualNoCase(sort, "DOWN"))
+ {
+ IUPMAT_VERTEX(ih, x2 - 5, yc + 2);
+ IUPMAT_VERTEX(ih, x2 - 1, yc - 2);
+ IUPMAT_VERTEX(ih, x2 - 9, yc - 2);
+ }
+ else
+ {
+ IUPMAT_VERTEX(ih, x2 - 1, yc + 2);
+ IUPMAT_VERTEX(ih, x2 - 9, yc + 2);
+ IUPMAT_VERTEX(ih, x2 - 5, yc - 2);
+ }
+
+ cdCanvasEnd(ih->data->cddbuffer);
+ return 1;
+}
+
+static void iMatrixDrawComboFeedback(Ihandle* ih, int x2, int y1, int y2, int active, long framecolor)
+{
+ int xh2, yh2, x1;
+
+ /* feedback area */
+ x2 -= IMAT_PADDING_W/2 + IMAT_FRAME_W/2;
+ x1 = x2 - IMAT_COMBOBOX_W;
+ y1 += IMAT_PADDING_H/2 + IMAT_FRAME_H/2;
+ y2 -= IMAT_PADDING_H/2 + IMAT_FRAME_H/2;
+
+ /* feedback background */
+ iMatrixDrawSetBgColor(ih, 0, 0, 0, active);
+ IUPMAT_BOX(ih, x1, x2, y1, y2);
+
+ /* feedback frame */
+ cdCanvasForeground(ih->data->cddbuffer, framecolor);
+ IUPMAT_RECT(ih, x1, x2, y1, y2);
+
+ /* feedback arrow */
+ xh2 = x2 - IMAT_COMBOBOX_W / 2;
+ yh2 = y2 - (y2 - y1) / 2;
+
+ cdCanvasBegin(ih->data->cddbuffer, CD_FILL);
+ IUPMAT_VERTEX(ih, xh2, yh2 + 3);
+ IUPMAT_VERTEX(ih, xh2 + 4, yh2 - 1);
+ IUPMAT_VERTEX(ih, xh2 - 4, yh2 - 1);
+ cdCanvasEnd(ih->data->cddbuffer);
+}
+
+static void iMatrixDrawBackground(Ihandle* ih, int x1, int x2, int y1, int y2, int marked, int active, int lin, int col)
+{
+ /* avoid drawing over the frame of the next cell */
+ x2 -= IMAT_FRAME_W/2;
+ y2 -= IMAT_FRAME_H/2;
+
+ iMatrixDrawSetBgColor(ih, lin, col, marked, active);
+ IUPMAT_BOX(ih, x1, x2, y1, y2);
+}
+
+/* Put the cell contents in the screen, using the specified color and alignment.
+ -> y1, y2 : vertical limits of the cell
+ -> x1, x2 : horizontal limits of the complete cell
+ -> alignment : alignment type (horizontal) assigned to the text. The options are:
+ [IMAT_T_CENTER,IMAT_T_LEFT,IMAT_T_RIGHT]
+ -> marked : mark state
+ -> lin, col - cell coordinates */
+static void iMatrixDrawCellValue(Ihandle* ih, int x1, int x2, int y1, int y2, int alignment, int marked, int active, int lin, int col, IFniiiiiiC draw_cb)
+{
+ char *text;
+
+ /* avoid drawing over the frame of the next cell */
+ x2 -= IMAT_FRAME_W/2;
+ y2 -= IMAT_FRAME_H/2;
+
+ /* avoid drawing over the frame of the cell */
+ x2 -= IMAT_FRAME_W/2;
+ y2 -= IMAT_FRAME_H/2;
+
+ if (lin==0 || col==0)
+ {
+ /* avoid drawing over the frame of the cell */
+ x1 += IMAT_FRAME_W/2;
+ y1 += IMAT_FRAME_H/2;
+
+ if (col==0) x1 += IMAT_FRAME_W/2;
+ if (lin==0) y1 += IMAT_FRAME_H/2;
+ }
+ else if ((col==1 && ih->data->columns.sizes[0] == 0) || (lin==1 && ih->data->lines.sizes[0] == 0))
+ {
+ /* avoid drawing over the frame of the cell */
+ x1 += IMAT_FRAME_W/2;
+ y1 += IMAT_FRAME_H/2;
+ }
+
+ if (draw_cb && !iMatrixDrawCallDrawCB(ih, lin, col, x1, x2, y1, y2, draw_cb))
+ return;
+
+ text = iupMatrixCellGetValue(ih, lin, col);
+
+ /* Put the text */
+ if (text && *text)
+ {
+ int num_line, line_height, total_height;
+ int charheight, ypos;
+
+ num_line = iupStrLineCount(text);
+ iupdrvFontGetCharSize(ih, NULL, &charheight);
+
+ line_height = charheight;
+ total_height = (line_height + IMAT_PADDING_H/2) * num_line - IMAT_PADDING_H/2 - IMAT_FRAME_H/2;
+
+ if (lin==0)
+ {
+ int text_w;
+ iupdrvFontGetMultiLineStringSize(ih, text, &text_w, NULL);
+ if (text_w > x2 - x1 + 1 - IMAT_PADDING_W - IMAT_FRAME_W)
+ alignment = IMAT_T_LEFT;
+ }
+
+ /* Set the color used to draw the text */
+ if (!active)
+ cdCanvasForeground(ih->data->cddbuffer, IMAT_CD_INACTIVE_FGCOLOR);
+ else
+ iMatrixDrawSetFgColor(ih, lin, col, marked);
+
+ /* Set the clip area to the cell region informed, the text maybe greatter than the cell */
+ IUPMAT_CLIPAREA(ih, x1, x2, y1, y2);
+ cdCanvasClip(ih->data->cddbuffer, CD_CLIPAREA);
+
+ cdCanvasNativeFont(ih->data->cddbuffer, iupMatrixGetFont(ih, lin, col));
+
+ /* Create an space between text and cell frame */
+ x1 += IMAT_PADDING_W/2; x2 -= IMAT_PADDING_W/2;
+ y1 += IMAT_PADDING_H/2; y2 -= IMAT_PADDING_H/2;
+
+ if (alignment == IMAT_T_CENTER)
+ cdCanvasTextAlignment(ih->data->cddbuffer, CD_CENTER);
+ else if(alignment == IMAT_T_LEFT)
+ cdCanvasTextAlignment(ih->data->cddbuffer, CD_WEST);
+ else
+ cdCanvasTextAlignment(ih->data->cddbuffer, CD_EAST);
+
+ if (num_line == 1)
+ {
+ ypos = (int)((y1 + y2) / 2.0 - 0.5);
+
+ /* Put the text */
+ if (alignment == IMAT_T_CENTER)
+ IUPMAT_TEXT(ih, (x1 + x2) / 2, ypos, text);
+ else if(alignment == IMAT_T_LEFT)
+ IUPMAT_TEXT(ih, x1, ypos, text);
+ else
+ IUPMAT_TEXT(ih, x2, ypos, text);
+ }
+ else
+ {
+ int i;
+ char *p, *q, *newtext;
+
+ newtext = iupStrDup(text);
+ p = newtext;
+
+ /* Get the position of the first text to be put in the screen */
+ ypos = (int)( (y1 + y2) / 2.0 - 0.5) - total_height/2 + line_height/2;
+
+ for(i = 0; i < num_line; i++)
+ {
+ q = strchr(p, '\n');
+ if (q) *q = 0; /* Cut the string to contain only one line */
+
+ /* Draw the text */
+ if(alignment == IMAT_T_CENTER)
+ IUPMAT_TEXT(ih, (x1 + x2) / 2, ypos, p);
+ else if(alignment == IMAT_T_LEFT)
+ IUPMAT_TEXT(ih, x1, ypos, p);
+ else
+ IUPMAT_TEXT(ih, x2, ypos, p);
+
+ /* Advance the string */
+ if (q) p = q + 1;
+
+ /* Advance a line */
+ ypos += line_height + IMAT_PADDING_H/2;
+ }
+
+ free(newtext);
+ }
+
+ cdCanvasClip(ih->data->cddbuffer, CD_CLIPOFF);
+ }
+}
+
+static void iMatrixDrawTitleCorner(Ihandle* ih)
+{
+ char str[100];
+ long framecolor = cdIupConvertColor(iupAttribGetStr(ih, "FRAMECOLOR"));
+ int active = iupdrvIsActive(ih);
+ IFniiiiiiC draw_cb = (IFniiiiiiC)IupGetCallback(ih, "DRAW_CB");
+
+ iMatrixDrawBackground(ih, 0, ih->data->columns.sizes[0], 0, ih->data->lines.sizes[0], 0, active, 0, 0);
+
+ iMatrixDrawFrameRectTitle(ih, 0, 0, 0, ih->data->columns.sizes[0], 0, ih->data->lines.sizes[0], framecolor, str);
+
+ iMatrixDrawCellValue(ih, 0, ih->data->columns.sizes[0], 0, ih->data->lines.sizes[0], IMAT_T_CENTER, 0, active, 0, 0, draw_cb);
+}
+
+static void iMatrixDrawMatrix(Ihandle* ih)
+{
+ iupMatrixPrepareDrawData(ih);
+
+ /* fill the background because there will be empty cells */
+ if ((ih->data->lines.num == 1) || (ih->data->columns.num == 1))
+ {
+ cdCanvasBackground(ih->data->cddbuffer, cdIupConvertColor(ih->data->bgcolor_parent));
+ cdCanvasClear(ih->data->cddbuffer);
+ }
+
+ /* Draw the corner between line and column titles, if necessary */
+ if (ih->data->lines.sizes[0] && ih->data->columns.sizes[0])
+ iMatrixDrawTitleCorner(ih);
+
+ /* If there are columns, then draw their titles */
+ iupMatrixDrawColumnTitle(ih, ih->data->columns.first, ih->data->columns.last);
+
+ /* If there are lines, then draw their titles */
+ iupMatrixDrawLineTitle(ih, ih->data->lines.first, ih->data->lines.last);
+
+ /* If there are cells in the matrix, then draw them */
+ if ((ih->data->lines.num > 1) && (ih->data->columns.num > 1))
+ iupMatrixDrawCells(ih, ih->data->lines.first, ih->data->columns.first,
+ ih->data->lines.last, ih->data->columns.last);
+}
+
+static void iMatrixDrawFocus(Ihandle* ih)
+{
+ int x1, y1, x2, y2, dx, dy;
+
+ if (iupAttribGetBoolean(ih, "HIDEFOCUS"))
+ return;
+
+ if (!iupMatrixAuxIsCellVisible(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell))
+ return;
+
+ iupMatrixAuxGetVisibleCellDim(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, &x1, &y1, &dx, &dy);
+
+ x2 = x1 + dx - 1;
+ y2 = y1 + dy - 1;
+
+ if (ih->data->columns.focus_cell == 1 && ih->data->columns.sizes[0] == 0)
+ x1++;
+ if (ih->data->lines.focus_cell == 1 && ih->data->lines.sizes[0] == 0)
+ y1++;
+
+ cdIupDrawFocusRect(ih, ih->data->cdcanvas, x1, iupMatrixInvertYAxis(ih, y1), x2, iupMatrixInvertYAxis(ih, y2));
+}
+
+
+/**************************************************************************/
+/* Exported functions */
+/**************************************************************************/
+
+
+/* Draw the line titles, visible, between lin and lastlin, include it.
+ Line titles marked will be draw with the appropriate feedback.
+ -> lin1 - First line to have its title drawn
+ -> lin2 - Last line to have its title drawn */
+void iupMatrixDrawLineTitle(Ihandle* ih, int lin1, int lin2)
+{
+ int x1, y1, x2, y2;
+ int lin, alignment, active;
+ char str[100];
+ long framecolor;
+ IFniiiiiiC draw_cb;
+
+ if (!ih->data->columns.sizes[0])
+ return;
+
+ if (lin1 > ih->data->lines.last ||
+ lin2 < ih->data->lines.first)
+ return;
+
+ if (lin1 < ih->data->lines.first)
+ lin1 = ih->data->lines.first;
+ if (lin2 > ih->data->lines.last)
+ lin2 = ih->data->lines.last;
+
+ /* Start the position of the line title */
+ x1 = 0;
+ x2 = ih->data->columns.sizes[0];
+
+ y1 = ih->data->lines.sizes[0];
+ for(lin = ih->data->lines.first; lin < lin1; lin++)
+ y1 += ih->data->lines.sizes[lin];
+
+ framecolor = cdIupConvertColor(iupAttribGetStr(ih, "FRAMECOLOR"));
+ active = iupdrvIsActive(ih);
+ draw_cb = (IFniiiiiiC)IupGetCallback(ih, "DRAW_CB");
+
+ alignment = iMatrixDrawGetColAlignment(ih, 0, str);
+
+ /* Draw the titles */
+ for(lin = lin1; lin <= lin2; lin++)
+ {
+ /* If it is a hidden line (size = 0), don't draw the title */
+ if(ih->data->lines.sizes[lin] == 0)
+ continue;
+
+ y2 = y1 + ih->data->lines.sizes[lin];
+
+ /* If it doesn't have title, the loop just calculate the final position */
+ if (ih->data->columns.sizes[0])
+ {
+ int marked = iupMatrixLineIsMarked(ih, lin);
+
+ iMatrixDrawBackground(ih, x1, x2, y1, y2, marked, active, lin, 0);
+
+ iMatrixDrawFrameRectTitle(ih, lin, 0, x1, x2, y1, y2, framecolor, str);
+
+ iMatrixDrawCellValue(ih, x1, x2, y1, y2, alignment, marked, active, lin, 0, draw_cb);
+ }
+
+ y1 = y2;
+ }
+}
+
+/* Draw the column titles, visible, between col and lastcol, include it.
+ Column titles marked will be draw with the appropriate feedback.
+ -> col1 - First column to have its title drawn
+ -> col2 - Last column to have its title drawn */
+void iupMatrixDrawColumnTitle(Ihandle* ih, int col1, int col2)
+{
+ int x1, y1, x2, y2;
+ int col, active;
+ char str[100];
+ long framecolor;
+ IFniiiiiiC draw_cb;
+
+ if (!ih->data->lines.sizes[0])
+ return;
+
+ if (col1 > ih->data->columns.last ||
+ col2 < ih->data->columns.first)
+ return;
+
+ if (col1 < ih->data->columns.first)
+ col1 = ih->data->columns.first;
+ if (col2 > ih->data->columns.last)
+ col2 = ih->data->columns.last;
+
+ /* Start the position of the first column title */
+ y1 = 0;
+ y2 = ih->data->lines.sizes[0];
+
+ x1 = ih->data->columns.sizes[0];
+ for(col = ih->data->columns.first; col < col1; col++)
+ x1 += ih->data->columns.sizes[col];
+
+ framecolor = cdIupConvertColor(iupAttribGetStr(ih, "FRAMECOLOR"));
+ active = iupdrvIsActive(ih);
+ draw_cb = (IFniiiiiiC)IupGetCallback(ih, "DRAW_CB");
+
+ /* Draw the titles */
+ for(col = col1; col <= col2; col++)
+ {
+ /* If it is an hide column (size = 0), no draw the title */
+ if(ih->data->columns.sizes[col] == 0)
+ continue;
+
+ x2 = x1 + ih->data->columns.sizes[col];
+
+ /* If it doesn't have title, the loop just calculate the final position */
+ if (ih->data->lines.sizes[0])
+ {
+ int sort = 0;
+ int marked = iupMatrixColumnIsMarked(ih, col);
+
+ iMatrixDrawBackground(ih, x1, x2, y1, y2, marked, active, 0, col);
+
+ iMatrixDrawFrameRectTitle(ih, 0, col, x1, x2, y1, y2, framecolor, str);
+
+ if (iMatrixDrawSortSign(ih, x2, y1, y2, col, active, str))
+ sort = IMAT_COMBOBOX_W; /* same space is used by the sort sign */
+
+ iMatrixDrawCellValue(ih, x1, x2-sort, y1, y2, IMAT_T_CENTER, marked, active, 0, col, draw_cb);
+ }
+
+ x1 = x2;
+ }
+}
+
+/* Redraw a block of cells of the matrix. Handle marked cells, change
+ automatically the background color of them.
+ - lin1, col1 : cell coordinates that mark the left top corner of the area to be redrawn
+ - lin2, col2 : cell coordinates that mark the right bottom corner of the area to be redrawn */
+void iupMatrixDrawCells(Ihandle* ih, int lin1, int col1, int lin2, int col2)
+{
+ int x1, y1, x2, y2, old_x2, old_y1, old_y2;
+ int alignment, lin, col, active;
+ long framecolor, emptyarea_color = -1;
+ char str[100];
+ IFnii mark_cb;
+ IFnii dropcheck_cb;
+ IFniiiiiiC draw_cb;
+
+ x1 = 0;
+ x2 = ih->data->w-1;
+ y1 = 0;
+ y2 = ih->data->h-1;
+
+ old_x2 = x2;
+ old_y1 = y1;
+ old_y2 = y2;
+
+ if (col1 > ih->data->columns.last ||
+ col2 < ih->data->columns.first ||
+ lin1 > ih->data->lines.last ||
+ lin2 < ih->data->lines.first)
+ return;
+
+ if (col1 < ih->data->columns.first)
+ col1 = ih->data->columns.first;
+ if (col2 > ih->data->columns.last)
+ col2 = ih->data->columns.last;
+ if (lin1 < ih->data->lines.first)
+ lin1 = ih->data->lines.first;
+ if (lin2 > ih->data->lines.last)
+ lin2 = ih->data->lines.last;
+
+ /* Find the initial position of the first column */
+ x1 += ih->data->columns.sizes[0];
+ for(col = ih->data->columns.first; col < col1; col++)
+ x1 += ih->data->columns.sizes[col];
+
+ /* Find the final position of the last column */
+ x2 = x1;
+ for( ; col <= col2; col++)
+ x2 += ih->data->columns.sizes[col];
+
+ /* Find the initial position of the first line */
+ y1 += ih->data->lines.sizes[0];
+ for(lin = ih->data->lines.first; lin < lin1; lin++)
+ y1 += ih->data->lines.sizes[lin];
+
+ /* Find the final position of the last line */
+ y2 = y1;
+ for( ; lin <= lin2; lin++)
+ y2 += ih->data->lines.sizes[lin];
+
+ if ((col2 == ih->data->columns.num-1) && (old_x2 > x2))
+ {
+ emptyarea_color = cdIupConvertColor(ih->data->bgcolor_parent);
+ cdCanvasForeground(ih->data->cddbuffer, emptyarea_color);
+
+ /* If it was drawn until the last column and remains space in the right of it,
+ then delete this area with the the background color. */
+ IUPMAT_BOX(ih, x2, old_x2, old_y1, old_y2);
+ }
+
+ if ((lin2 == ih->data->lines.num-1) && (old_y2 > y2))
+ {
+ if (emptyarea_color == -1)
+ emptyarea_color = cdIupConvertColor(ih->data->bgcolor_parent);
+ cdCanvasForeground(ih->data->cddbuffer, emptyarea_color);
+
+ /* If it was drawn until the last line visible and remains space below it,
+ then delete this area with the the background color. */
+ IUPMAT_BOX(ih, 0, old_x2, y2, old_y2);
+ }
+
+ /***** Draw the cell values and frame */
+ old_y1 = y1;
+ framecolor = cdIupConvertColor(iupAttribGetStr(ih, "FRAMECOLOR"));
+ active = iupdrvIsActive(ih);
+
+ mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB");
+ dropcheck_cb = (IFnii)IupGetCallback(ih, "DROPCHECK_CB");
+ draw_cb = (IFniiiiiiC)IupGetCallback(ih, "DRAW_CB");
+
+ for(col = col1; col <= col2; col++) /* For all the columns in the region */
+ {
+ if (ih->data->columns.sizes[col] == 0)
+ continue;
+
+ alignment = iMatrixDrawGetColAlignment(ih, col, str);
+
+ x2 = x1 + ih->data->columns.sizes[col];
+
+ for(lin = lin1; lin <= lin2; lin++) /* For all lines in the region */
+ {
+ int drop = 0;
+ int marked = 0;
+
+ if (ih->data->lines.sizes[lin] == 0)
+ continue;
+
+ y2 = y1 + ih->data->lines.sizes[lin];
+
+ /* If the cell is marked, then draw it with attenuation color */
+ marked = iupMatrixMarkCellGet(ih, lin, col, mark_cb, str);
+
+ iMatrixDrawBackground(ih, x1, x2, y1, y2, marked, active, lin, col);
+
+ iMatrixDrawFrameRectCell(ih, lin, col, x1, x2, y1, y2, framecolor, str);
+
+ if (dropcheck_cb && dropcheck_cb(ih, lin, col) == IUP_DEFAULT)
+ {
+ drop = IMAT_COMBOBOX_W;
+ iMatrixDrawComboFeedback(ih, x2, y1, y2, active, framecolor);
+ }
+
+ /* draw the cell contents */
+ iMatrixDrawCellValue(ih, x1, x2-drop, y1, y2, alignment, marked, active, lin, col, draw_cb);
+
+ y1 = y2;
+ }
+
+ x1 = x2;
+ y1 = old_y1; /* must reset also y */
+ }
+}
+
+void iupMatrixDraw(Ihandle* ih, int update)
+{
+ if (!ih->data->first_redraw)
+ return;
+
+ if (ih->data->need_calcsize)
+ iupMatrixAuxCalcSizes(ih);
+
+ iMatrixDrawMatrix(ih);
+
+ if (update)
+ iupMatrixDrawUpdate(ih);
+}
+
+void iupMatrixDrawUpdate(Ihandle* ih)
+{
+ cdCanvasFlush(ih->data->cddbuffer);
+
+ if (ih->data->has_focus)
+ iMatrixDrawFocus(ih);
+}
+
+int iupMatrixDrawSetRedrawAttrib(Ihandle* ih, const char* value)
+{
+ int type;
+
+ if (value == NULL)
+ type = 0;
+ else if(value[0] == 'L' || value[0] == 'l')
+ type = IMAT_PROCESS_LIN;
+ else if(value[0] == 'C' || value[0] == 'c')
+ type = IMAT_PROCESS_COL;
+ else
+ type = 0;
+
+ if (type)
+ {
+ int min = 0, max = 0;
+ value++;
+
+ if(iupStrToIntInt(value, &min, &max, ':') != 2)
+ max = min;
+
+ if (min > max)
+ return 0;
+
+ iupMatrixPrepareDrawData(ih);
+
+ if (ih->data->need_calcsize)
+ iupMatrixAuxCalcSizes(ih);
+
+ if (ih->data->lines.sizes[0] && ih->data->columns.sizes[0])
+ iMatrixDrawTitleCorner(ih);
+
+ if (type == IMAT_PROCESS_LIN)
+ {
+ iupMatrixDrawLineTitle(ih, min, max);
+ iupMatrixDrawCells(ih, min, ih->data->columns.first, max, ih->data->columns.last);
+ }
+ else
+ {
+ iupMatrixDrawColumnTitle(ih, min, max);
+ iupMatrixDrawCells(ih, ih->data->lines.first, min, ih->data->lines.last, max);
+ }
+ }
+ else
+ {
+ iupMatrixAuxCalcSizes(ih);
+ iMatrixDrawMatrix(ih);
+ }
+
+ iupMatrixDrawUpdate(ih);
+ return 0;
+}
diff --git a/iup/srccontrols/matrix/iupmat_draw.h b/iup/srccontrols/matrix/iupmat_draw.h
new file mode 100755
index 0000000..03337e7
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_draw.h
@@ -0,0 +1,31 @@
+/** \file
+ * \brief iupmatrix control
+ * draw functions.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_DRAW_H
+#define __IUPMAT_DRAW_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void iupMatrixDrawCells(Ihandle* ih, int lin1, int col1, int lin2, int col2);
+void iupMatrixDrawColumnTitle(Ihandle* ih, int col1, int col2);
+void iupMatrixDrawLineTitle(Ihandle* ih, int lin1, int lin2);
+
+/* Render the visible cells and update display */
+void iupMatrixDraw(Ihandle* ih, int update);
+
+/* Update the display only */
+void iupMatrixDrawUpdate(Ihandle* ih);
+
+int iupMatrixDrawSetRedrawAttrib(Ihandle* ih, const char* value);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmat_edit.c b/iup/srccontrols/matrix/iupmat_edit.c
new file mode 100755
index 0000000..a7e0a74
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_edit.c
@@ -0,0 +1,450 @@
+/** \file
+* \brief iupmatrix edit
+* Functions used to edit a node name in place.
+*
+* See Copyright Notice in "iup.h"
+*/
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupcontrols.h"
+
+#include <cd.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+#include "iup_childtree.h"
+
+#include "iupmat_def.h"
+#include "iupmat_scroll.h"
+#include "iupmat_aux.h"
+#include "iupmat_edit.h"
+#include "iupmat_key.h"
+#include "iupmat_getset.h"
+#include "iupmat_draw.h"
+
+
+static int iMatrixEditCallDropdownCb(Ihandle* ih, int lin, int col)
+{
+ IFnnii cb = (IFnnii)IupGetCallback(ih, "DROP_CB");
+ if(cb)
+ {
+ int ret;
+ char* value = iupMatrixCellGetValue(ih, lin, col);
+ if (!value) value = "";
+
+ iupAttribSetStr(ih->data->droph, "PREVIOUSVALUE", value);
+ IupSetAttribute(ih->data->droph, "VALUE", "1");
+
+ ret = cb(ih, ih->data->droph, lin, col);
+
+ /* check if the user set an invalid value */
+ if (IupGetInt(ih->data->droph, "VALUE") == 0)
+ IupSetAttribute(ih->data->droph, "VALUE", "1");
+
+ if(ret == IUP_DEFAULT)
+ return 1;
+ }
+
+ return 0;
+}
+
+static int iMatrixEditDropDownAction_CB(Ihandle* ih, char* t, int i, int v)
+{
+ Ihandle* ih_matrix = ih->parent;
+ IFniinsii cb = (IFniinsii)IupGetCallback(ih_matrix, "DROPSELECT_CB");
+ if(cb)
+ {
+ int ret = cb(ih_matrix, ih_matrix->data->lines.focus_cell, ih_matrix->data->columns.focus_cell, ih, t, i, v);
+
+ /* If the user returns IUP_CONTINUE in a dropselect_cb
+ the value is accepted and the matrix leaves edition mode. */
+ if (ret == IUP_CONTINUE)
+ {
+ iupMatrixEditHide(ih_matrix);
+ iupMatrixDrawUpdate(ih);
+ }
+ }
+
+ return IUP_DEFAULT;
+}
+
+static void iMatrixEditChooseElement(Ihandle* ih, int lin, int col)
+{
+ int drop = iMatrixEditCallDropdownCb(ih, lin, col);
+ if(drop)
+ ih->data->datah = ih->data->droph;
+ else
+ {
+ char* value;
+
+ ih->data->datah = ih->data->texth;
+
+ /* dropdown values are set by the user in DROP_CB.
+ text value is set here from cell contents. */
+ value = iupMatrixCellGetValue(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell);
+ if (!value) value = "";
+ IupSetAttribute(ih->data->texth, "VALUE", value);
+ }
+}
+
+static int iMatrixEditCallEditionCb(Ihandle* ih, int mode, int update)
+{
+ int ret = iupMatrixAuxCallEditionCbLinCol(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, mode, update);
+
+ if (update && ret == IUP_DEFAULT && mode == 0) /* leaving edition mode */
+ iupMatrixCellUpdateValue(ih);
+
+ return ret;
+}
+
+static int iMatrixEditCancel(Ihandle* ih, int focus, int update, int ignore)
+{
+ if (IupGetInt(ih->data->datah, "VISIBLE"))
+ {
+ int ret;
+
+ /* Avoid calling EDITION_CB twice. Usually because a killfocus. */
+ if (iupAttribGet(ih, "_IUPMAT_CALL_EDITION"))
+ return IUP_DEFAULT;
+
+ iupAttribSetStr(ih, "_IUPMAT_CALL_EDITION", "1");
+ ret = iMatrixEditCallEditionCb(ih, 0, update);
+ iupAttribSetStr(ih, "_IUPMAT_CALL_EDITION", NULL);
+
+ if (ret == IUP_IGNORE && ignore)
+ return IUP_IGNORE;
+
+ IupSetAttribute(ih->data->datah, "VISIBLE", "NO");
+ IupSetAttribute(ih->data->datah, "ACTIVE", "NO");
+
+ if (focus)
+ {
+ IupSetFocus(ih);
+ ih->data->has_focus = 1; /* set this so even if getfocus_cb is not called the focus is drawn */
+ }
+#ifdef SunOS
+ /* Usually when the edit control is hidden the matrix is automatically repainted by the system, except in SunOS. */
+ iupMatrixDrawUpdate(ih);
+#endif
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iMatrixEditKillFocus_CB(Ihandle* ih)
+{
+ Ihandle* ih_matrix = ih->parent;
+ if (iupStrEqualNoCase(IupGetGlobal("DRIVER"), "Motif"))
+ {
+ if (iupAttribGet(ih_matrix, "_IUPMAT_DOUBLE_CLICK"))
+ return IUP_DEFAULT;
+ }
+
+ iupMatrixEditForceHidden(ih_matrix);
+ return IUP_DEFAULT;
+}
+
+int iupMatrixEditHide(Ihandle* ih)
+{
+ return iMatrixEditCancel(ih, 1, 1, 1); /* set focus + update + use ignore */
+}
+
+void iupMatrixEditForceHidden(Ihandle* ih)
+{
+ iMatrixEditCancel(ih, 0, 1, 0); /* no focus + update + no ignore */
+}
+
+int iupMatrixEditIsVisible(Ihandle* ih)
+{
+ if (!IupGetInt(ih, "ACTIVE"))
+ return 0;
+
+ if (!IupGetInt(ih->data->datah, "VISIBLE"))
+ return 0;
+
+ return 1;
+}
+
+int iupMatrixEditShow(Ihandle* ih)
+{
+ char* mask;
+ int w, h, x, y;
+
+ /* work around for Windows when using Multiline */
+ if (iupAttribGet(ih, "_IUPMAT_IGNORE_SHOW"))
+ {
+ iupAttribSetStr(ih, "_IUPMAT_IGNORE_SHOW", NULL);
+ return 0;
+ }
+
+ /* not active */
+ if(!IupGetInt(ih, "ACTIVE"))
+ return 0;
+
+ /* already visible */
+ if(IupGetInt(ih->data->datah, "VISIBLE"))
+ return 0;
+
+ /* notify application */
+ if (iMatrixEditCallEditionCb(ih, 1, 0) == IUP_IGNORE)
+ return 0;
+
+ /* select edit control */
+ iMatrixEditChooseElement(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell);
+
+ /* position the cell to make it visible */
+ /* If the focus is not visible, a scroll is done for that the focus to be visible */
+ if (!iupMatrixAuxIsCellFullVisible(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell))
+ iupMatrixScrollToVisible(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell);
+
+ /* set attributes */
+ iupMatrixPrepareDrawData(ih);
+ IupStoreAttribute(ih->data->datah, "BGCOLOR", iupMatrixGetBgColor(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell));
+ IupStoreAttribute(ih->data->datah, "FGCOLOR", iupMatrixGetFgColor(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell));
+ IupSetAttribute(ih->data->datah, "FONT", iupMatrixGetFont(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell));
+
+ mask = IupMatGetAttribute(ih,"MASK", ih->data->lines.focus_cell, ih->data->columns.focus_cell);
+ if (mask)
+ {
+ IupSetAttribute(ih->data->datah, "MASKCASEI", IupMatGetAttribute(ih,"MASKCASEI", ih->data->lines.focus_cell, ih->data->columns.focus_cell));
+ IupSetAttribute(ih->data->datah, "MASK", mask);
+ }
+ else
+ {
+ mask = IupMatGetAttribute(ih,"MASKINT", ih->data->lines.focus_cell, ih->data->columns.focus_cell);
+ if (mask)
+ IupSetAttribute(ih->data->datah, "MASKINT", mask);
+ else
+ {
+ mask = IupMatGetAttribute(ih,"MASKFLOAT", ih->data->lines.focus_cell, ih->data->columns.focus_cell);
+ if (mask)
+ IupSetAttribute(ih->data->datah, "MASKFLOAT", mask);
+ }
+ }
+
+ /* calc size */
+ iupMatrixAuxGetVisibleCellDim(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, &x, &y, &w, &h);
+
+ ih->data->datah->x = x;
+ ih->data->datah->y = y;
+ if (IupGetGlobal("GTKVERSION"))
+ {
+ /* In GTK, IupCanvas is not the actual container of the IupText/IupList */
+ ih->data->datah->x += ih->x;
+ ih->data->datah->y += ih->y;
+ }
+
+ ih->data->datah->currentwidth = w;
+ ih->data->datah->currentheight = h;
+ iupClassObjectLayoutUpdate(ih->data->datah);
+
+ /* activate and show */
+ IupSetAttribute(ih->data->datah, "ACTIVE", "YES");
+ IupSetAttribute(ih->data->datah, "VISIBLE", "YES");
+ IupSetFocus(ih->data->datah);
+
+ return 1;
+}
+
+static int iMatrixEditTextAction_CB(Ihandle* ih, int c, char* after)
+{
+ Ihandle* ih_matrix = ih->parent;
+ IFniiiis cb = (IFniiiis) IupGetCallback(ih_matrix, "ACTION_CB");
+ if (cb && c!=0) /* only for valid characters */
+ {
+ int oldc = c;
+ c = cb(ih_matrix, c, ih_matrix->data->lines.focus_cell, ih_matrix->data->columns.focus_cell, 1, after);
+ if (c == IUP_IGNORE || c == IUP_CLOSE || c == IUP_CONTINUE)
+ return c;
+ else if(c == IUP_DEFAULT)
+ c = oldc;
+ return c;
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int iMatrixEditTextKeyAny_CB(Ihandle* ih, int c)
+{
+ Ihandle* ih_matrix = ih->parent;
+ IFniiiis cb = (IFniiiis) IupGetCallback(ih_matrix, "ACTION_CB");
+ if (cb && c==0) /* only for other characters */
+ {
+ int oldc = c;
+ c = cb(ih_matrix, c, ih_matrix->data->lines.focus_cell, ih_matrix->data->columns.focus_cell, 1, IupGetAttribute(ih, "VALUE"));
+ if(c == IUP_IGNORE || c == IUP_CLOSE || c == IUP_CONTINUE)
+ return c;
+ else if(c == IUP_DEFAULT)
+ c = oldc;
+ }
+
+ switch (c)
+ {
+ case K_cUP:
+ case K_cDOWN:
+ case K_cLEFT:
+ case K_cRIGHT:
+ if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT)
+ {
+ iupMatrixProcessKeyPress(ih_matrix, c);
+ return IUP_IGNORE;
+ }
+ break;
+ case K_UP:
+ if (IupGetInt(ih, "CARET") == 1)
+ {
+ /* if at the first line of the text */
+ if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT)
+ {
+ iupMatrixProcessKeyPress(ih_matrix, c);
+ return IUP_IGNORE;
+ }
+ }
+ break;
+ case K_DOWN:
+ {
+ char* value = IupGetAttribute(ih, "VALUE");
+ if (value)
+ {
+ /* if at the last line of the text */
+ if (iupStrLineCount(value) == IupGetInt(ih, "CARET"))
+ {
+ if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT)
+ {
+ iupMatrixProcessKeyPress(ih_matrix, c);
+ return IUP_IGNORE;
+ }
+ }
+ }
+ }
+ break;
+ case K_LEFT:
+ if (IupGetInt(ih, "CARETPOS") == 0)
+ {
+ /* if at the first character */
+ if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT)
+ {
+ iupMatrixProcessKeyPress(ih_matrix, c);
+ return IUP_IGNORE;
+ }
+ }
+ break;
+ case K_RIGHT:
+ {
+ char* value = IupGetAttribute(ih, "VALUE");
+ if (value)
+ {
+ /* if at the last character */
+ if ((int)strlen(value) == IupGetInt(ih, "CARETPOS"))
+ {
+ if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT)
+ {
+ iupMatrixProcessKeyPress(ih_matrix, c);
+ return IUP_IGNORE;
+ }
+ }
+ }
+ }
+ break;
+ case K_ESC:
+ iMatrixEditCancel(ih_matrix, 1, 0, 0); /* set focus + NO update + NO ignore */
+ return IUP_IGNORE;
+ case K_CR:
+ if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT)
+ {
+ if (iupStrEqualNoCase(IupGetGlobal("DRIVER"), "Win32") && IupGetInt(ih, "MULTILINE"))
+ {
+ /* work around for Windows when using Multiline */
+ iupAttribSetStr(ih_matrix, "_IUPMAT_IGNORE_SHOW", "1");
+ }
+
+ if (iupMatrixAuxCallLeaveCellCb(ih_matrix) != IUP_IGNORE)
+ {
+ iupMatrixScrollKeyCr(ih_matrix);
+ iupMatrixAuxCallEnterCellCb(ih_matrix);
+ }
+ iupMatrixDrawUpdate(ih_matrix);
+ return IUP_IGNORE;
+ }
+ break;
+ }
+
+ return IUP_CONTINUE;
+}
+
+static int iMatrixEditDropDownKeyAny_CB(Ihandle* ih, int c)
+{
+ Ihandle* ih_matrix = ih->parent;
+ IFniiiis cb = (IFniiiis)IupGetCallback(ih_matrix, "ACTION_CB");
+ if (cb)
+ {
+ int oldc = c;
+ c = cb(ih_matrix, c, ih_matrix->data->lines.focus_cell, ih_matrix->data->columns.focus_cell, 1, "");
+ if (c == IUP_IGNORE || c == IUP_CLOSE || c == IUP_CONTINUE)
+ return c;
+ else if(c == IUP_DEFAULT)
+ c = oldc;
+ }
+
+ switch (c)
+ {
+ case K_CR:
+ if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT)
+ {
+ if (iupMatrixAuxCallLeaveCellCb(ih_matrix) != IUP_IGNORE)
+ {
+ iupMatrixScrollKeyCr(ih_matrix);
+ iupMatrixAuxCallEnterCellCb(ih_matrix);
+ }
+ iupMatrixDrawUpdate(ih_matrix);
+ return IUP_IGNORE;
+ }
+ break;
+ case K_ESC:
+ iMatrixEditCancel(ih_matrix, 1, 0, 0); /* set focus + NO update + NO ignore */
+ return IUP_IGNORE;
+ }
+
+ return IUP_CONTINUE;
+}
+
+char* iupMatrixEditGetValue(Ihandle* ih)
+{
+ if (ih->data->datah == ih->data->droph)
+ return IupGetAttribute(ih->data->droph, IupGetAttribute(ih->data->droph, "VALUE"));
+ else
+ return IupGetAttribute(ih->data->texth, "VALUE");
+}
+
+void iupMatrixEditCreate(Ihandle* ih)
+{
+ /******** EDIT *************/
+ ih->data->texth = IupText(NULL);
+ iupChildTreeAppend(ih, ih->data->texth);
+
+ IupSetCallback(ih->data->texth, "ACTION", (Icallback)iMatrixEditTextAction_CB);
+ IupSetCallback(ih->data->texth, "K_ANY", (Icallback)iMatrixEditTextKeyAny_CB);
+ IupSetCallback(ih->data->texth, "KILLFOCUS_CB", (Icallback)iMatrixEditKillFocus_CB);
+ IupSetAttribute(ih->data->texth, "VALUE", "");
+ IupSetAttribute(ih->data->texth, "VISIBLE", "NO");
+ IupSetAttribute(ih->data->texth, "ACTIVE", "NO");
+
+
+ /******** DROPDOWN *************/
+ ih->data->droph = IupList(NULL);
+ iupChildTreeAppend(ih, ih->data->droph);
+
+ IupSetCallback(ih->data->droph, "ACTION", (Icallback)iMatrixEditDropDownAction_CB);
+ IupSetCallback(ih->data->droph, "KILLFOCUS_CB", (Icallback)iMatrixEditKillFocus_CB);
+ IupSetCallback(ih->data->droph, "K_ANY", (Icallback)iMatrixEditDropDownKeyAny_CB);
+ IupSetAttribute(ih->data->droph, "DROPDOWN", "YES");
+ IupSetAttribute(ih->data->droph, "MULTIPLE", "NO");
+ IupSetAttribute(ih->data->droph, "VISIBLE", "NO");
+ IupSetAttribute(ih->data->droph, "ACTIVE", "NO");
+}
diff --git a/iup/srccontrols/matrix/iupmat_edit.h b/iup/srccontrols/matrix/iupmat_edit.h
new file mode 100755
index 0000000..9a7815f
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_edit.h
@@ -0,0 +1,26 @@
+/** \file
+ * \brief iupmatrix.
+ * Functions used to edit a cell in place.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_EDIT_H
+#define __IUPMAT_EDIT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int iupMatrixEditIsVisible (Ihandle *ih);
+int iupMatrixEditShow (Ihandle* ih);
+int iupMatrixEditHide (Ihandle* ih);
+void iupMatrixEditForceHidden(Ihandle* ih);
+char* iupMatrixEditGetValue (Ihandle* ih);
+void iupMatrixEditCreate (Ihandle* ih);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmat_focus.c b/iup/srccontrols/matrix/iupmat_focus.c
new file mode 100755
index 0000000..3c000f8
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_focus.c
@@ -0,0 +1,58 @@
+/** \file
+ * \brief iupmatrix focus control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include <cd.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+
+#include "iupmat_def.h"
+#include "iupmat_aux.h"
+#include "iupmat_focus.h"
+#include "iupmat_draw.h"
+
+
+void iupMatrixFocusSet(Ihandle* ih, int lin, int col)
+{
+ ih->data->lines.focus_cell = lin;
+ ih->data->columns.focus_cell = col;
+}
+
+int iupMatrixFocus_CB(Ihandle* ih, int focus)
+{
+ int rc = IUP_DEFAULT;
+
+ if (!iupMatrixIsValid(ih, 1))
+ return IUP_DEFAULT;
+
+ if (iupStrEqualNoCase(IupGetGlobal("DRIVER"), "Motif"))
+ {
+ if (focus && iupAttribGet(ih, "_IUPMAT_DOUBLE_CLICK"))
+ {
+ iupAttribSetStr(ih, "_IUPMAT_DOUBLE_CLICK", NULL);
+ return IUP_DEFAULT;
+ }
+ }
+
+ ih->data->has_focus = focus;
+ iupMatrixDrawUpdate(ih);
+
+ if (focus)
+ iupMatrixAuxCallEnterCellCb(ih);
+ else
+ iupMatrixAuxCallLeaveCellCb(ih);
+
+ return rc;
+}
+
+
diff --git a/iup/srccontrols/matrix/iupmat_focus.h b/iup/srccontrols/matrix/iupmat_focus.h
new file mode 100755
index 0000000..75f5894
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_focus.h
@@ -0,0 +1,21 @@
+/** \file
+ * \brief iupmatrix focus control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_FOCUS_H
+#define __IUPMAT_FOCUS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int iupMatrixFocus_CB(Ihandle* ih, int focus);
+void iupMatrixFocusSet(Ihandle* ih, int lin, int col);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmat_getset.c b/iup/srccontrols/matrix/iupmat_getset.c
new file mode 100755
index 0000000..34947b6
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_getset.c
@@ -0,0 +1,358 @@
+/** \file
+ * \brief iupmatrix setget control
+ * attributes set and get
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include <cd.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_drvfont.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+#include "iup_controls.h"
+#include "iup_childtree.h"
+
+#include "iupmat_def.h"
+#include "iupmat_getset.h"
+#include "iupmat_edit.h"
+#include "iupmat_draw.h"
+#include "iupmat_aux.h"
+
+
+int iupMatrixCheckCellPos(Ihandle* ih, int lin, int col)
+{
+ /* Check if the cell exists */
+ if ((lin < 0) || (col < 0) || (lin > ih->data->lines.num-1) || (col > ih->data->columns.num-1))
+ return 0;
+
+ return 1;
+}
+
+void iupMatrixCellSetValue(Ihandle* ih, int lin, int col, const char* value)
+{
+ if (ih->data->callback_mode)
+ return;
+
+ if (ih->data->cells[lin][col].value)
+ free(ih->data->cells[lin][col].value);
+
+ ih->data->cells[lin][col].value = iupStrDup(value);
+
+ if (lin==0 || col==0)
+ ih->data->need_calcsize = 1;
+}
+
+char* iupMatrixCellGetValue (Ihandle* ih, int lin, int col)
+{
+ if (!ih->handle)
+ {
+ char str[100];
+ sprintf(str, "%d:%d", lin, col);
+ return iupAttribGet(ih, str);
+ }
+ else
+ {
+ if (ih->data->callback_mode)
+ {
+ sIFnii value_cb = (sIFnii)IupGetCallback(ih, "VALUE_CB");
+ return value_cb(ih, lin, col);
+ }
+ else
+ return ih->data->cells[lin][col].value;
+ }
+}
+
+void iupMatrixCellSetFlag(Ihandle* ih, int lin, int col, unsigned char attr, int set)
+{
+ if (!ih->handle)
+ return;
+
+ if (lin==-1)
+ {
+ if ((col < 0) || (col > ih->data->columns.num-1))
+ return;
+
+ if (set)
+ ih->data->columns.flags[col] |= attr;
+ else
+ ih->data->columns.flags[col] &= ~attr;
+ }
+ else if (col == -1)
+ {
+ if ((lin < 0) || (lin > ih->data->lines.num-1))
+ return;
+
+ if (set)
+ ih->data->lines.flags[lin] |= attr;
+ else
+ ih->data->lines.flags[lin] &= ~attr;
+ }
+ else
+ {
+ if (!ih->data->callback_mode)
+ {
+ if ((lin < 0) || (col < 0) || (lin > ih->data->lines.num-1) || (col > ih->data->columns.num-1))
+ return;
+
+ if (set)
+ ih->data->cells[lin][col].flags |= attr;
+ else
+ ih->data->cells[lin][col].flags &= ~attr;
+ }
+ }
+}
+
+void iupMatrixCellUpdateValue(Ihandle* ih)
+{
+ IFniis value_edit_cb;
+ char *value = iupMatrixEditGetValue(ih);
+
+ iupMatrixCellSetValue(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, value);
+
+ value_edit_cb = (IFniis)IupGetCallback(ih, "VALUE_EDIT_CB");
+ if (value_edit_cb)
+ value_edit_cb(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, value);
+
+ iupMatrixPrepareDrawData(ih);
+ iupMatrixDrawCells(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, ih->data->lines.focus_cell, ih->data->columns.focus_cell);
+}
+
+void iupMatrixPrepareDrawData(Ihandle* ih)
+{
+ /* FGCOLOR, BGCOLOR and FONT */
+ iupAttribStoreStr(ih, "_IUPMAT_BGCOLOR_PARENT", iupControlBaseGetParentBgColor(ih));
+ iupAttribStoreStr(ih, "_IUPMAT_BGCOLOR", IupGetAttribute(ih, "BGCOLOR"));
+ iupAttribStoreStr(ih, "_IUPMAT_FGCOLOR", IupGetAttribute(ih, "FGCOLOR"));
+ iupAttribStoreStr(ih, "_IUPMAT_FONT", IupGetAttribute(ih, "FONT"));
+
+ ih->data->bgcolor_parent = iupAttribGet(ih, "_IUPMAT_BGCOLOR_PARENT");
+ ih->data->bgcolor = iupAttribGet(ih, "_IUPMAT_BGCOLOR");
+ ih->data->fgcolor = iupAttribGet(ih, "_IUPMAT_FGCOLOR");
+ ih->data->font = iupAttribGet(ih, "_IUPMAT_FONT");
+
+ ih->data->font_cb = (sIFnii)IupGetCallback(ih, "FONT_CB");
+ ih->data->fgcolor_cb = (IFniiIII)IupGetCallback(ih, "FGCOLOR_CB");
+ ih->data->bgcolor_cb = (IFniiIII)IupGetCallback(ih, "BGCOLOR_CB");
+}
+
+static char* iMatrixGetCellAttrib(Ihandle* ih, unsigned char attr, int lin, int col, int native_parent)
+{
+ char* value = NULL;
+ char attrib_id[100];
+ const char* attrib = NULL;
+ char* attrib_global = NULL;
+
+ if (attr == IUPMAT_FONT)
+ {
+ attrib = "FONT";
+ attrib_global = ih->data->font;
+ }
+ else if (attr == IUPMAT_BGCOLOR)
+ {
+ attrib = "BGCOLOR";
+ attrib_global = ih->data->bgcolor;
+ }
+ else if (attr == IUPMAT_FGCOLOR)
+ {
+ attrib = "FGCOLOR";
+ attrib_global = ih->data->fgcolor;
+ }
+
+ /* 1 - check for this cell */
+ if (ih->data->callback_mode || ih->data->cells[lin][col].flags & attr)
+ {
+ sprintf(attrib_id, "%s%d:%d", attrib, lin, col);
+ value = iupAttribGet(ih, attrib_id);
+ }
+ if (!value)
+ {
+ /* 2 - check for this line, if not title col */
+ if (col != 0)
+ {
+ if (ih->data->lines.flags[lin] & attr)
+ {
+ sprintf(attrib_id, "%s%d:*", attrib, lin);
+ value = iupAttribGet(ih, attrib_id);
+ }
+ }
+
+ if (!value)
+ {
+ /* 3 - check for this column, if not title line */
+ if (lin != 0)
+ {
+ if (ih->data->columns.flags[col] & attr)
+ {
+ sprintf(attrib_id,"%s*:%d", attrib, col);
+ value = iupAttribGet(ih, attrib_id);
+ }
+ }
+
+ if (!value)
+ {
+ /* 4 - check for the matrix or native parent */
+ if (native_parent)
+ value = ih->data->bgcolor_parent;
+ else
+ value = attrib_global;
+ }
+ }
+ }
+
+ return value;
+}
+
+static int iMatrixCallColorCB(Ihandle* ih, IFniiIII cb, int lin, int col, unsigned char *r, unsigned char *g, unsigned char *b)
+{
+ int ir, ig, ib, ret;
+ ret = cb(ih, lin, col, &ir, &ig, &ib);
+ *r = iupBYTECROP(ir);
+ *g = iupBYTECROP(ig);
+ *b = iupBYTECROP(ib);
+ return ret;
+}
+
+char* iupMatrixGetFgColor(Ihandle* ih, int lin, int col)
+{
+ unsigned char r = 0, g = 0, b = 0;
+ /* called from Edit only */
+ if (!ih->data->fgcolor_cb || (iMatrixCallColorCB(ih, ih->data->fgcolor_cb, lin, col, &r, &g, &b) == IUP_IGNORE))
+ {
+ char* fgcolor = iMatrixGetCellAttrib(ih, IUPMAT_FGCOLOR, lin, col, 0);
+ if (!fgcolor)
+ {
+ if (lin ==0 || col == 0)
+ fgcolor = IupGetGlobal("DLGFGCOLOR");
+ else
+ fgcolor = IupGetGlobal("TXTFGCOLOR");
+ }
+ return fgcolor;
+ }
+ else
+ {
+ char* buffer = iupStrGetMemory(30);
+ sprintf(buffer, "%d %d %d", r, g, b);
+ return buffer;
+ }
+}
+
+void iupMatrixGetFgRGB(Ihandle* ih, int lin, int col, unsigned char *r, unsigned char *g, unsigned char *b)
+{
+ /* called from Draw only */
+ if (!ih->data->fgcolor_cb || (iMatrixCallColorCB(ih, ih->data->fgcolor_cb, lin, col, r, g, b) == IUP_IGNORE))
+ {
+ char* fgcolor = iMatrixGetCellAttrib(ih, IUPMAT_FGCOLOR, lin, col, 0);
+ if (!fgcolor)
+ {
+ if (lin ==0 || col == 0)
+ fgcolor = IupGetGlobal("DLGFGCOLOR");
+ else
+ fgcolor = IupGetGlobal("TXTFGCOLOR");
+ }
+ iupStrToRGB(fgcolor, r, g, b);
+ }
+}
+
+char* iupMatrixGetBgColor(Ihandle* ih, int lin, int col)
+{
+ unsigned char r = 0, g = 0, b = 0;
+ /* called from Edit only */
+ if (!ih->data->bgcolor_cb || (iMatrixCallColorCB(ih, ih->data->bgcolor_cb, lin, col, &r, &g, &b) == IUP_IGNORE))
+ {
+ int native_parent = 0;
+ if (lin == 0 || col == 0)
+ native_parent = 1;
+ return iMatrixGetCellAttrib(ih, IUPMAT_BGCOLOR, lin, col, native_parent);
+ }
+ else
+ {
+ char* buffer = iupStrGetMemory(30);
+ sprintf(buffer, "%d %d %d", r, g, b);
+ return buffer;
+ }
+}
+
+#define IMAT_DARKER(_x) (((_x)*9)/10)
+
+void iupMatrixGetBgRGB(Ihandle* ih, int lin, int col, unsigned char *r, unsigned char *g, unsigned char *b)
+{
+ /* called from Draw only */
+ if (!ih->data->bgcolor_cb || (iMatrixCallColorCB(ih, ih->data->bgcolor_cb, lin, col, r, g, b) == IUP_IGNORE))
+ {
+ int native_parent = 0;
+ if (lin == 0 || col == 0)
+ native_parent = 1;
+ iupStrToRGB(iMatrixGetCellAttrib(ih, IUPMAT_BGCOLOR, lin, col, native_parent), r, g, b);
+ if (native_parent)
+ {
+ int ir = IMAT_DARKER(*r), ig=IMAT_DARKER(*g), ib=IMAT_DARKER(*b); /* use a darker version of the background by 10% */
+ *r = iupBYTECROP(ir);
+ *g = iupBYTECROP(ig);
+ *b = iupBYTECROP(ib);
+ }
+ }
+}
+
+char* iupMatrixGetFont(Ihandle* ih, int lin, int col)
+{
+ char* font = NULL;
+ /* called from Draw and Edit only */
+ if (ih->data->font_cb)
+ font = ih->data->font_cb(ih, lin, col);
+ if (!font)
+ font = iMatrixGetCellAttrib(ih, IUPMAT_FONT, lin, col, 0);
+ return font;
+}
+
+char *iupMatrixGetSize(Ihandle* ih, int index, int m, int pixels)
+{
+ char* str;
+ int size;
+ ImatLinColData *lincol_data;
+
+ if(m == IMAT_PROCESS_LIN)
+ lincol_data = &(ih->data->lines);
+ else
+ lincol_data = &(ih->data->columns);
+
+ if (index < 0 || index > lincol_data->num-1)
+ return NULL;
+
+ if (m == IMAT_PROCESS_LIN)
+ size = iupMatrixAuxGetLineHeight(ih, index);
+ else
+ size = iupMatrixAuxGetColumnWidth(ih, index);
+
+ str = iupStrGetMemory(100);
+
+ if (size)
+ {
+ /* remove the decoration added in iupMatrixAuxGet */
+ if (m == IMAT_PROCESS_COL)
+ size -= IMAT_PADDING_W + IMAT_FRAME_W;
+ else
+ size -= IMAT_PADDING_H + IMAT_FRAME_H;
+
+ if (!pixels)
+ {
+ int charwidth, charheight;
+ iupdrvFontGetCharSize(ih, &charwidth, &charheight);
+ if (m == IMAT_PROCESS_COL)
+ size = iupRASTER2WIDTH(size, charwidth);
+ else
+ size = iupRASTER2HEIGHT(size, charheight);
+ }
+ }
+
+ sprintf(str, "%d", size);
+ return str;
+}
diff --git a/iup/srccontrols/matrix/iupmat_getset.h b/iup/srccontrols/matrix/iupmat_getset.h
new file mode 100755
index 0000000..9ae3d07
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_getset.h
@@ -0,0 +1,37 @@
+/** \file
+ * \brief iupmatrix control
+ * attributes set and get.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_GETSET_H
+#define __IUPMAT_GETSET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void iupMatrixCellSetValue(Ihandle* ih, int lin, int col, const char* value);
+char* iupMatrixCellGetValue(Ihandle* ih, int lin, int col);
+
+void iupMatrixCellSetFlag(Ihandle* ih, int lin, int col, unsigned char attr, int set);
+
+void iupMatrixPrepareDrawData(Ihandle* ih);
+char* iupMatrixGetFgColor(Ihandle* ih, int lin, int col);
+char* iupMatrixGetBgColor(Ihandle* ih, int lin, int col);
+char* iupMatrixGetFont (Ihandle* ih, int lin, int col);
+void iupMatrixGetBgRGB(Ihandle* ih, int lin, int col, unsigned char *r, unsigned char *g, unsigned char *b);
+void iupMatrixGetFgRGB(Ihandle* ih, int lin, int col, unsigned char *r, unsigned char *g, unsigned char *b);
+
+void iupMatrixCellUpdateValue(Ihandle* ih);
+
+char* iupMatrixGetSize(Ihandle* ih, int index, int m, int pixels);
+
+int iupMatrixCheckCellPos(Ihandle* ih, int lin, int col);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmat_key.c b/iup/srccontrols/matrix/iupmat_key.c
new file mode 100755
index 0000000..ae9ed55
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_key.c
@@ -0,0 +1,229 @@
+/** \file
+ * \brief iupmatrix control
+ * keyboard control
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+/**************************************************************************/
+/* Functions to control keys in the matrix and in the text edition */
+/**************************************************************************/
+
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupkey.h"
+
+#include <cd.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_stdcontrols.h"
+
+#include "iupmat_def.h"
+#include "iupmat_scroll.h"
+#include "iupmat_focus.h"
+#include "iupmat_aux.h"
+#include "iupmat_getset.h"
+#include "iupmat_key.h"
+#include "iupmat_mark.h"
+#include "iupmat_edit.h"
+#include "iupmat_draw.h"
+
+
+int iupMatrixProcessKeyPress(Ihandle* ih, int c)
+{
+ int ret = IUP_IGNORE; /* default for processed keys */
+
+ /* If the focus is not visible, a scroll is done for that the focus to be visible */
+ if (!iupMatrixAuxIsCellFullVisible(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell))
+ iupMatrixScrollToVisible(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell);
+
+ switch (c)
+ {
+ case K_cHOME:
+ case K_sHOME:
+ case K_HOME:
+ if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE)
+ break;
+ iupMatrixScrollKeyHome(ih);
+ ih->data->homekeycount++;
+ iupMatrixAuxCallEnterCellCb(ih);
+ break;
+
+ case K_cEND:
+ case K_sEND:
+ case K_END:
+ if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE)
+ break;
+ iupMatrixScrollKeyEnd(ih);
+ ih->data->endkeycount++;
+ iupMatrixAuxCallEnterCellCb(ih);
+ break;
+
+ case K_sTAB:
+ case K_TAB:
+ return IUP_CONTINUE; /* do not redraw */
+
+ case K_cLEFT:
+ case K_sLEFT:
+ case K_LEFT:
+ if (iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE)
+ break;
+ iupMatrixScrollKeyLeft(ih);
+ iupMatrixAuxCallEnterCellCb(ih);
+ break;
+
+ case K_cRIGHT:
+ case K_sRIGHT:
+ case K_RIGHT:
+ if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE)
+ break;
+ iupMatrixScrollKeyRight(ih);
+ iupMatrixAuxCallEnterCellCb(ih);
+ break;
+
+ case K_cUP:
+ case K_sUP:
+ case K_UP:
+ if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE)
+ break;
+ iupMatrixScrollKeyUp(ih);
+ iupMatrixAuxCallEnterCellCb(ih);
+ break ;
+
+ case K_cDOWN:
+ case K_sDOWN:
+ case K_DOWN:
+ if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE)
+ break;
+ iupMatrixScrollKeyDown(ih);
+ iupMatrixAuxCallEnterCellCb(ih);
+ break;
+
+ case K_sPGUP:
+ case K_PGUP:
+ if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE)
+ break;
+ iupMatrixScrollKeyPgUp(ih);
+ iupMatrixAuxCallEnterCellCb(ih);
+ break;
+
+ case K_sPGDN:
+ case K_PGDN:
+ if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE)
+ break;
+ iupMatrixScrollKeyPgDown(ih);
+ iupMatrixAuxCallEnterCellCb(ih);
+ break;
+
+ case K_F2:
+ case K_SP:
+ case K_CR:
+ case K_sCR:
+ if (iupMatrixEditShow(ih))
+ return IUP_IGNORE; /* do not redraw */
+ break;
+
+ case K_sDEL:
+ case K_DEL:
+ {
+ int lin, col;
+ char str[100];
+ IFnii mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB");
+
+ iupMatrixPrepareDrawData(ih);
+
+ for(lin = 1; lin < ih->data->lines.num; lin++)
+ {
+ for(col = 1; col < ih->data->columns.num; col++)
+ {
+ if (iupMatrixMarkCellGet(ih, lin, col, mark_cb, str))
+ {
+ if (iupMatrixAuxCallEditionCbLinCol(ih, lin, col, 1, 1) != IUP_IGNORE)
+ {
+ IFniis value_edit_cb;
+
+ iupMatrixCellSetValue(ih, lin, col, NULL);
+
+ value_edit_cb = (IFniis)IupGetCallback(ih, "VALUE_EDIT_CB");
+ if (value_edit_cb)
+ value_edit_cb(ih, lin, col, NULL);
+
+ iupMatrixDrawCells(ih, lin, col, lin, col);
+ }
+ }
+ }
+ }
+ break;
+ }
+ default:
+ /* if a valid character is pressed enter edition mode */
+ if (iup_isprint(c))
+ {
+ if (iupMatrixEditShow(ih))
+ {
+ if (ih->data->datah == ih->data->texth)
+ {
+ char value[2] = {0,0};
+ value[0] = (char)c;
+ IupStoreAttribute(ih->data->datah, "VALUE", value);
+ IupSetAttribute(ih->data->datah, "CARET", "2");
+ }
+ return IUP_IGNORE; /* do not redraw */
+ }
+ }
+ ret = IUP_DEFAULT; /* unprocessed keys */
+ break;
+ }
+
+ iupMatrixDrawUpdate(ih);
+ return ret;
+}
+
+void iupMatrixKeyResetHomeEndCount(Ihandle* ih)
+{
+ ih->data->homekeycount = 0;
+ ih->data->endkeycount = 0;
+}
+
+int iupMatrixKeyPress_CB(Ihandle* ih, int c, int press)
+{
+ int oldc = c;
+ IFniiiis cb;
+
+ if (!iupMatrixIsValid(ih, 1))
+ return IUP_DEFAULT;
+
+ if (!press)
+ return IUP_DEFAULT;
+
+ cb = (IFniiiis)IupGetCallback(ih, "ACTION_CB");
+ if (cb)
+ {
+ if (iup_isprint(c))
+ {
+ char value[2]={0,0};
+ value[0] = (char)c;
+ c = cb(ih, c, ih->data->lines.focus_cell, ih->data->columns.focus_cell, 0, value);
+ }
+ else
+ {
+ c = cb(ih, c, ih->data->lines.focus_cell, ih->data->columns.focus_cell, 0,
+ iupMatrixCellGetValue(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell));
+ }
+
+ if (c == IUP_IGNORE || c == IUP_CLOSE || c == IUP_CONTINUE)
+ return c;
+ else if (c == IUP_DEFAULT)
+ c = oldc;
+ }
+
+ if (c != K_HOME && c != K_sHOME)
+ ih->data->homekeycount = 0;
+ if (c != K_END && c != K_sEND)
+ ih->data->endkeycount = 0;
+
+ return iupMatrixProcessKeyPress(ih, c);
+}
diff --git a/iup/srccontrols/matrix/iupmat_key.h b/iup/srccontrols/matrix/iupmat_key.h
new file mode 100755
index 0000000..1062dd0
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_key.h
@@ -0,0 +1,23 @@
+/** \file
+ * \brief iupmatrix. keyboard control.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_KEY_H
+#define __IUPMAT_KEY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int iupMatrixKeyPress_CB(Ihandle* ih, int c, int press);
+int iupMatrixProcessKeyPress(Ihandle* ih, int c);
+
+void iupMatrixKeyResetHomeEndCount(Ihandle* ih);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmat_mark.c b/iup/srccontrols/matrix/iupmat_mark.c
new file mode 100755
index 0000000..99aad32
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_mark.c
@@ -0,0 +1,720 @@
+/** \file
+ * \brief iupmatrix control
+ * cell selection
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+/**************************************************************************/
+/* Functions to cell selection (mark) */
+/**************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <memory.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include <cd.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+
+#include "iupmat_def.h"
+#include "iupmat_mark.h"
+#include "iupmat_getset.h"
+#include "iupmat_draw.h"
+
+
+static void iMatrixMarkLinSet(Ihandle* ih, int lin, int mark)
+{
+ /* called when MARKMODE=LIN */
+ if (mark==-1)
+ mark = !(ih->data->lines.flags[lin] & IUPMAT_MARK);
+
+ if (mark)
+ ih->data->lines.flags[lin] |= IUPMAT_MARK;
+ else
+ ih->data->lines.flags[lin] &= ~IUPMAT_MARK;
+}
+
+static void iMatrixMarkColSet(Ihandle* ih, int col, int mark)
+{
+ /* called when MARKMODE=COL */
+ if (mark==-1)
+ mark = !(ih->data->columns.flags[col] & IUPMAT_MARK);
+
+ if (mark)
+ ih->data->columns.flags[col] |= IUPMAT_MARK;
+ else
+ ih->data->columns.flags[col] &= ~IUPMAT_MARK;
+}
+
+static void iMatrixMarkCellSet(Ihandle* ih, int lin, int col, int mark, IFniii markedit_cb, IFnii mark_cb, char* str)
+{
+ /* called only when MARKMODE=CELL */
+ if (mark == -1)
+ mark = !iupMatrixMarkCellGet(ih, lin, col, mark_cb, str);
+
+ if (ih->data->callback_mode)
+ {
+ if (markedit_cb)
+ markedit_cb(ih, lin, col, mark);
+ else
+ {
+ sprintf(str, "MARK%d:%d", lin, col);
+ if (mark)
+ iupAttribSetStr(ih, str, "1");
+ else
+ iupAttribSetStr(ih, str, NULL);
+ }
+ }
+ else
+ {
+ if (mark)
+ ih->data->cells[lin][col].flags |= IUPMAT_MARK;
+ else
+ ih->data->cells[lin][col].flags &= ~IUPMAT_MARK;
+ }
+}
+
+int iupMatrixMarkCellGet(Ihandle* ih, int lin, int col, IFnii mark_cb, char* str)
+{
+ /* called independent from MARKMODE */
+
+ if (ih->data->mark_mode == IMAT_MARK_NO)
+ return 0;
+
+ if (ih->data->mark_mode == IMAT_MARK_CELL)
+ {
+ if (ih->data->callback_mode)
+ {
+ if (mark_cb)
+ return mark_cb(ih, lin, col);
+ else
+ {
+ int mark = 0;
+ char* value;
+ sprintf(str, "MARK%d:%d", lin, col);
+ value = iupAttribGet(ih, str);
+ iupStrToInt(value, &mark);
+ return mark;
+ }
+ }
+ else
+ return ih->data->cells[lin][col].flags & IUPMAT_MARK;
+ }
+ else
+ {
+ if (ih->data->lines.flags[lin] & IUPMAT_MARK || ih->data->columns.flags[col] & IUPMAT_MARK)
+ return 1;
+ else
+ return 0;
+ }
+}
+
+static void iMatrixMarkItem(Ihandle* ih, int lin1, int col1, int mark, IFniii markedit_cb, IFnii mark_cb, char* str)
+{
+ int lin, col;
+
+ if (ih->data->mark_full1 == IMAT_PROCESS_LIN)
+ {
+ if (ih->data->mark_mode == IMAT_MARK_CELL)
+ {
+ for (col = 1; col < ih->data->columns.num; col++)
+ iMatrixMarkCellSet(ih, lin1, col, mark, markedit_cb, mark_cb, str);
+ }
+ else
+ {
+ iMatrixMarkLinSet(ih, lin1, mark);
+ iupMatrixDrawLineTitle(ih, lin1, lin1);
+ }
+
+ iupMatrixDrawCells(ih, lin1, 1, lin1, ih->data->columns.num-1);
+ }
+ else if (ih->data->mark_full1 == IMAT_PROCESS_COL)
+ {
+ if (ih->data->mark_mode == IMAT_MARK_CELL)
+ {
+ for(lin = 1; lin < ih->data->lines.num; lin++)
+ iMatrixMarkCellSet(ih, lin, col1, mark, markedit_cb, mark_cb, str);
+ }
+ else
+ {
+ iMatrixMarkColSet(ih, col1, mark);
+ iupMatrixDrawColumnTitle(ih, col1, col1);
+ }
+
+ iupMatrixDrawCells(ih, 1, col1, ih->data->lines.num-1, col1);
+ }
+ else if (ih->data->mark_mode == IMAT_MARK_CELL)
+ {
+ iMatrixMarkCellSet(ih, lin1, col1, mark, markedit_cb, mark_cb, str);
+ iupMatrixDrawCells(ih, lin1, col1, lin1, col1);
+ }
+}
+
+static void iMatrixMarkBlock(Ihandle* ih, int lin1, int col1, int lin2, int col2, int mark, IFniii markedit_cb, IFnii mark_cb, char* str)
+{
+ int lin, col;
+
+ if (lin1 > lin2) {int t = lin1; lin1 = lin2; lin2 = t;}
+ if (col1 > col2) {int t = col1; col1 = col2; col2 = t;}
+
+ if (ih->data->mark_full1 == IMAT_PROCESS_LIN)
+ {
+ for(lin=lin1; lin<=lin2; lin++)
+ iMatrixMarkItem(ih, lin, 0, mark, markedit_cb, mark_cb, str);
+ }
+ else if(ih->data->mark_full1 == IMAT_PROCESS_COL)
+ {
+ for(col=col1; col<=col2; col++)
+ iMatrixMarkItem(ih, 0, col, mark, markedit_cb, mark_cb, str);
+ }
+ else if (ih->data->mark_mode == IMAT_MARK_CELL)
+ {
+ for(lin=lin1; lin<=lin2; lin++)
+ {
+ for(col=col1; col<=col2; col++)
+ iMatrixMarkItem(ih, lin, col, mark, markedit_cb, mark_cb, str);
+ }
+ }
+}
+
+void iupMatrixMarkMouseBlock(Ihandle* ih, int lin2, int col2)
+{
+ /* called only when "shift" is pressed and MARKMULTIPLE=YES */
+ IFniii markedit_cb = NULL;
+ IFnii mark_cb = NULL;
+ char str[100];
+
+ iupMatrixPrepareDrawData(ih);
+
+ ih->data->mark_full2 = 0;
+
+ if (lin2 == 0 && col2 == 0)
+ return;
+ /* If it was pointing for a column title... */
+ else if (lin2 == 0)
+ {
+ if ((ih->data->mark_mode == IMAT_MARK_CELL && ih->data->mark_multiple) ||
+ ih->data->mark_mode & IMAT_MARK_COL)
+ ih->data->mark_full2 = IMAT_PROCESS_COL;
+ }
+ /* If it was pointing for a line title... */
+ else if (col2 == 0)
+ {
+ if ((ih->data->mark_mode == IMAT_MARK_CELL && ih->data->mark_multiple) ||
+ ih->data->mark_mode & IMAT_MARK_LIN)
+ ih->data->mark_full2 = IMAT_PROCESS_LIN;
+ }
+
+ /* if new block is not the same, does nothing */
+ if (ih->data->mark_full1 != ih->data->mark_full2)
+ return;
+
+ if (ih->data->mark_mode == IMAT_MARK_CELL && ih->data->callback_mode)
+ {
+ markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB");
+ mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB");
+ }
+
+ /* Unmark previous block */
+ if (ih->data->mark_lin1 != -1 && ih->data->mark_lin2 != -1 &&
+ ih->data->mark_col1 != -1 && ih->data->mark_col2 != -1)
+ iMatrixMarkBlock(ih, ih->data->mark_lin1, ih->data->mark_col1, ih->data->mark_lin2, ih->data->mark_col2, 0, markedit_cb, mark_cb, str);
+
+ ih->data->mark_lin2 = lin2;
+ ih->data->mark_col2 = col2;
+
+ /* Unmark new block */
+ iMatrixMarkBlock(ih, ih->data->mark_lin1, ih->data->mark_col1, ih->data->mark_lin2, ih->data->mark_col2, 1, markedit_cb, mark_cb, str);
+}
+
+void iupMatrixMarkMouseReset(Ihandle* ih)
+{
+ ih->data->mark_lin1 = -1;
+ ih->data->mark_col1 = -1;
+ ih->data->mark_lin2 = -1;
+ ih->data->mark_col2 = -1;
+
+ ih->data->mark_full1 = 0;
+ ih->data->mark_full2 = 0;
+}
+
+void iupMatrixMarkMouseItem(Ihandle* ih, int ctrl, int lin1, int col1)
+{
+ int mark = 1, mark_full_all, lin, col;
+ IFniii markedit_cb = NULL;
+ IFnii mark_cb = NULL;
+ char str[100];
+
+ iupMatrixMarkMouseReset(ih);
+ iupMatrixPrepareDrawData(ih);
+
+ if (!ih->data->mark_multiple || ih->data->mark_continuous || !ctrl)
+ {
+ iupMatrixMarkClearAll(ih, 1);
+ iupMatrixDraw(ih, 0);
+ }
+ else
+ mark = -1; /* toggle mark state */
+
+ ih->data->mark_full1 = 0;
+ mark_full_all = 0;
+
+ if (lin1 == 0 && col1 == 0)
+ {
+ if ((ih->data->mark_mode == IMAT_MARK_CELL && ih->data->mark_multiple) ||
+ ih->data->mark_mode == IMAT_MARK_COL ||
+ ih->data->mark_mode == IMAT_MARK_LIN)
+ mark_full_all = 1;
+ }
+ /* If it was pointing for a column title... */
+ else if (lin1 == 0)
+ {
+ if ((ih->data->mark_mode == IMAT_MARK_CELL && ih->data->mark_multiple) ||
+ ih->data->mark_mode & IMAT_MARK_COL)
+ ih->data->mark_full1 = IMAT_PROCESS_COL;
+ }
+ /* If it was pointing for a line title... */
+ else if (col1 == 0)
+ {
+ if ((ih->data->mark_mode == IMAT_MARK_CELL && ih->data->mark_multiple) ||
+ ih->data->mark_mode & IMAT_MARK_LIN)
+ ih->data->mark_full1 = IMAT_PROCESS_LIN;
+ }
+
+ if (ih->data->mark_mode == IMAT_MARK_CELL && ih->data->callback_mode)
+ {
+ markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB");
+ mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB");
+ }
+
+ if (mark_full_all)
+ {
+ if (ih->data->mark_mode == IMAT_MARK_CELL)
+ {
+ char str[100];
+ for (col = 1; col < ih->data->columns.num; col++)
+ {
+ for(lin = 1; lin < ih->data->lines.num; lin++)
+ iMatrixMarkCellSet(ih, lin, col, mark, markedit_cb, mark_cb, str);
+ }
+ }
+ else if (ih->data->mark_mode == IMAT_MARK_LIN)
+ {
+ for(lin = 1; lin < ih->data->lines.num; lin++)
+ iMatrixMarkLinSet(ih, lin, mark);
+
+ iupMatrixDrawLineTitle(ih, 1, ih->data->lines.num-1);
+ }
+ else if (ih->data->mark_mode == IMAT_MARK_COL)
+ {
+ for (col = 1; col < ih->data->columns.num; col++)
+ iMatrixMarkColSet(ih, col, mark);
+
+ iupMatrixDrawColumnTitle(ih, 1, ih->data->columns.num-1);
+ }
+
+ iupMatrixDrawCells(ih, 1, 1, ih->data->lines.num-1, ih->data->columns.num-1);
+ }
+ else
+ iMatrixMarkItem(ih, lin1, col1, mark, markedit_cb, mark_cb, str);
+
+ ih->data->mark_lin1 = lin1;
+ ih->data->mark_col1 = col1;
+}
+
+static void iMatrixMarkAllLinCol(ImatLinColData *p, int mark)
+{
+ int i;
+ for(i = 1; i < p->num; i++)
+ {
+ if (mark)
+ p->flags[i] |= IUPMAT_MARK;
+ else
+ p->flags[i] &= ~IUPMAT_MARK;
+ }
+}
+
+void iupMatrixMarkClearAll(Ihandle* ih, int check)
+{
+ /* "!check" is used to clear all marks independent from MARKMODE */
+
+ if (ih->data->mark_mode == IMAT_MARK_CELL || !check)
+ {
+ int lin, col;
+ IFniii markedit_cb = NULL;
+ char str[100];
+
+ if (check)
+ markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB");
+
+ for(lin = 1; lin < ih->data->lines.num; lin++)
+ {
+ for(col = 1; col < ih->data->columns.num; col++)
+ iMatrixMarkCellSet(ih, lin, col, 0, markedit_cb, NULL, str);
+ }
+ }
+
+ if (ih->data->mark_mode & IMAT_MARK_LIN || !check)
+ iMatrixMarkAllLinCol(&(ih->data->lines), 0);
+
+ if (ih->data->mark_mode & IMAT_MARK_COL || !check)
+ iMatrixMarkAllLinCol(&(ih->data->columns), 0);
+}
+
+int iupMatrixColumnIsMarked(Ihandle* ih, int col)
+{
+ if (col == 0 || /* Line titles are never marked... */
+ !(ih->data->mark_mode & IMAT_MARK_COL))
+ return 0;
+
+ return ih->data->columns.flags[col] & IUPMAT_MARK;
+}
+
+int iupMatrixLineIsMarked(Ihandle* ih, int lin)
+{
+ if (lin == 0 || /* Column titles are never marked... */
+ !(ih->data->mark_mode & IMAT_MARK_LIN))
+ return 0;
+
+ return ih->data->lines.flags[lin] & IUPMAT_MARK;
+}
+
+int iupMatrixSetMarkedAttrib(Ihandle* ih, const char* value)
+{
+ int lin, col, mark;
+ char str[100];
+ IFniii markedit_cb;
+
+ if (ih->data->mark_mode == IMAT_MARK_NO)
+ return 0;
+
+ if (!value)
+ iupMatrixMarkClearAll(ih, 1);
+ else if (*value == 'C' || *value == 'c') /* columns */
+ {
+ if (ih->data->mark_mode == IMAT_MARK_LIN)
+ return 0;
+
+ value++; /* skip C mark */
+ if ((int)strlen(value) != ih->data->columns.num-1)
+ return 0;
+
+ markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB");
+
+ for(col = 1; col < ih->data->columns.num; col++)
+ {
+ if (*value++ == '1')
+ mark = 1;
+ else
+ mark = 0;
+
+ /* mark all the cells for that column */
+ if (ih->data->mark_mode == IMAT_MARK_CELL)
+ {
+ for(lin = 1; lin < ih->data->lines.num; lin++)
+ iMatrixMarkCellSet(ih, lin, col, mark, markedit_cb, NULL, str);
+ }
+ else
+ iMatrixMarkColSet(ih, col, mark);
+ }
+
+ if (ih->data->mark_mode & IMAT_MARK_LIN)
+ iMatrixMarkAllLinCol(&(ih->data->lines), 0);
+ }
+ else if (*value == 'L' || *value == 'l') /* lines */
+ {
+ if (ih->data->mark_mode == IMAT_MARK_COL)
+ return 0;
+
+ value++; /* skip L mark */
+ if ((int)strlen(value) != ih->data->lines.num-1)
+ return 0;
+
+ markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB");
+
+ for(lin = 1; lin < ih->data->lines.num; lin++)
+ {
+ if (*value++ == '1')
+ mark = 1;
+ else
+ mark = 0;
+
+ /* Mark all the cells for that line */
+ if (ih->data->mark_mode == IMAT_MARK_CELL)
+ {
+ for(col = 1; col < ih->data->columns.num; col++)
+ iMatrixMarkCellSet(ih, lin, col, mark, markedit_cb, NULL, str);
+ }
+ else
+ iMatrixMarkLinSet(ih, lin, mark);
+ }
+
+ if (ih->data->mark_mode & IMAT_MARK_COL)
+ iMatrixMarkAllLinCol(&(ih->data->columns), 0);
+ }
+ else if (ih->data->mark_mode == IMAT_MARK_CELL) /* cells */
+ {
+ if ((int)strlen(value) != (ih->data->lines.num-1)*(ih->data->columns.num-1))
+ return 0;
+
+ markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB");
+
+ for(lin = 1; lin < ih->data->lines.num; lin++)
+ {
+ for(col = 1; col < ih->data->columns.num; col++)
+ {
+ if (*value++ == '1')
+ mark = 1;
+ else
+ mark = 0;
+
+ iMatrixMarkCellSet(ih, lin, col, mark, markedit_cb, NULL, str);
+ }
+ }
+ }
+
+ if (ih->handle)
+ iupMatrixDraw(ih, 1);
+
+ return 0;
+}
+
+char* iupMatrixGetMarkedAttrib(Ihandle* ih)
+{
+ int lin, col, size;
+ IFnii mark_cb;
+ char str[100];
+ char* p, *value = NULL;
+ int exist_mark = 0; /* Show if there is someone marked */
+
+ if (ih->data->mark_mode == IMAT_MARK_NO)
+ return NULL;
+
+ mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB");
+
+ if (ih->data->mark_mode == IMAT_MARK_CELL)
+ {
+ size = (ih->data->lines.num-1) * (ih->data->columns.num-1) + 1;
+ value = iupStrGetMemory(size);
+ p = value;
+
+ for(lin = 1; lin < ih->data->lines.num; lin++)
+ {
+ for(col = 1; col < ih->data->columns.num; col++)
+ {
+ if (iupMatrixMarkCellGet(ih, lin, col, mark_cb, str))
+ {
+ exist_mark = 1;
+ *p++ = '1';
+ }
+ else
+ *p++ = '0';
+ }
+ }
+ *p = 0;
+ }
+ else
+ {
+ int marked_lines = 0, marked_cols = 0;
+
+ if (ih->data->mark_mode == IMAT_MARK_LINCOL) /* must find which format to return */
+ {
+ /* look for a marked column */
+ for(col = 1; col < ih->data->columns.num; col++)
+ {
+ if (ih->data->columns.flags[col] & IUPMAT_MARK)
+ {
+ marked_cols = 1; /* at least one column is marked */
+ break;
+ }
+ }
+
+ if (!marked_cols)
+ marked_lines = 1;
+ }
+ else if (ih->data->mark_mode == IMAT_MARK_LIN)
+ marked_lines = 1;
+ else if (ih->data->mark_mode == IMAT_MARK_COL)
+ marked_cols = 1;
+
+ if (marked_lines)
+ {
+ size = 1 + (ih->data->lines.num-1) + 1;
+ value = iupStrGetMemory(size);
+ p = value;
+
+ *p++ = 'L';
+
+ for(lin = 1; lin < ih->data->lines.num; lin++)
+ {
+ if (ih->data->lines.flags[lin] & IUPMAT_MARK)
+ {
+ exist_mark = 1;
+ *p++ = '1';
+ }
+ else
+ *p++ = '0';
+ }
+ *p = 0;
+ }
+ else if (marked_cols)
+ {
+ size = 1 + (ih->data->columns.num-1) + 1;
+ value = iupStrGetMemory(size);
+ p = value;
+
+ *p++ = 'C';
+
+ for(col = 1; col < ih->data->columns.num; col++)
+ {
+ if (ih->data->columns.flags[col] & IUPMAT_MARK)
+ {
+ exist_mark = 1;
+ *p++ = '1';
+ }
+ else
+ *p++ = '0';
+ }
+ *p = 0;
+ }
+ }
+
+ return exist_mark? value: NULL;
+}
+
+int iupMatrixSetMarkAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int lin = 0, col = 0;
+
+ if (ih->data->mark_mode == IMAT_MARK_NO)
+ return 0;
+
+ if (iupStrToIntInt(name_id, &lin, &col, ':') == 2)
+ {
+ if (!iupMatrixCheckCellPos(ih, lin, col))
+ return 0;
+
+ if (ih->data->mark_mode == IMAT_MARK_CELL)
+ {
+ int mark;
+
+ if (lin == 0 || col == 0) /* title can NOT have a mark */
+ return 0;
+
+ mark = iupStrBoolean(value);
+
+ if (ih->data->callback_mode)
+ {
+ IFniii markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB");
+ if (markedit_cb)
+ markedit_cb(ih, lin, col, mark);
+ else if (mark)
+ return 1; /* store the attribute */
+ }
+ else
+ {
+ if (mark)
+ ih->data->cells[lin][col].flags |= IUPMAT_MARK;
+ else
+ ih->data->cells[lin][col].flags &= ~IUPMAT_MARK;
+ }
+
+ if (ih->handle)
+ {
+ /* This assumes that the matrix has been draw completely previously */
+ iupMatrixPrepareDrawData(ih);
+ iupMatrixDrawCells(ih, lin, col, lin, col);
+ }
+ }
+ else
+ {
+ int mark = iupStrBoolean(value);
+
+ if (ih->data->mark_mode & IMAT_MARK_LIN && lin!=0)
+ {
+ if (mark)
+ ih->data->lines.flags[lin] |= IUPMAT_MARK;
+ else
+ ih->data->lines.flags[lin] &= ~IUPMAT_MARK;
+ }
+
+ if (ih->data->mark_mode & IMAT_MARK_COL && col!=0)
+ {
+ if (mark)
+ ih->data->columns.flags[col] |= IUPMAT_MARK;
+ else
+ ih->data->columns.flags[col] &= ~IUPMAT_MARK;
+ }
+
+ if (ih->handle)
+ {
+ /* This assumes that the matrix has been draw completely previously */
+ iupMatrixPrepareDrawData(ih);
+ iupMatrixDrawCells(ih, lin, col, lin, col);
+ }
+ }
+ }
+
+ return 0;
+}
+
+char* iupMatrixGetMarkAttrib(Ihandle* ih, const char* name_id)
+{
+ int lin = 0, col = 0;
+
+ if (ih->data->mark_mode == IMAT_MARK_NO)
+ return "0";
+
+ if (iupStrToIntInt(name_id, &lin, &col, ':') == 2)
+ {
+ if (!iupMatrixCheckCellPos(ih, lin, col))
+ return NULL;
+
+ if (ih->data->mark_mode == IMAT_MARK_CELL)
+ {
+ if (lin == 0 || col == 0) /* title can NOT have a mark */
+ return NULL;
+
+ if (ih->data->callback_mode)
+ {
+ IFnii mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB");
+ if (mark_cb)
+ {
+ if (mark_cb(ih, lin, col))
+ return "1";
+ else
+ return "0";
+ }
+ else
+ return NULL; /* let check the hash table */
+ }
+ else
+ {
+ if (ih->data->cells[lin][col].flags & IUPMAT_MARK)
+ return "1";
+ else
+ return "0";
+ }
+ }
+ else
+ {
+ if (ih->data->mark_mode & IMAT_MARK_LIN && lin!=0 && ih->data->lines.flags[lin] & IUPMAT_MARK)
+ return "1";
+
+ if (ih->data->mark_mode & IMAT_MARK_COL && col!=0 && ih->data->columns.flags[col] & IUPMAT_MARK)
+ return "1";
+
+ return "0";
+ }
+ }
+
+ return NULL;
+}
diff --git a/iup/srccontrols/matrix/iupmat_mark.h b/iup/srccontrols/matrix/iupmat_mark.h
new file mode 100755
index 0000000..819916e
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_mark.h
@@ -0,0 +1,42 @@
+/** \file
+ * \brief iupmatrix. cell selection.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_MARK_H
+#define __IUPMAT_MARK_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Used to mark (or not mark) cells */
+#define IMAT_MARK_NO 0
+#define IMAT_MARK_LIN 1
+#define IMAT_MARK_COL 2
+#define IMAT_MARK_LINCOL 3
+#define IMAT_MARK_CELL 4
+
+int iupMatrixSetMarkedAttrib(Ihandle* ih, const char* value);
+char* iupMatrixGetMarkedAttrib(Ihandle* ih);
+char* iupMatrixGetMarkAttrib(Ihandle* ih, const char* name_id);
+int iupMatrixSetMarkAttrib(Ihandle* ih, const char* name_id, const char* value);
+
+void iupMatrixMarkClearAll(Ihandle* ih, int check);
+
+int iupMatrixMarkCellGet(Ihandle* ih, int lin, int col, IFnii mark_cb, char* str);
+
+int iupMatrixColumnIsMarked(Ihandle* ih, int col);
+int iupMatrixLineIsMarked (Ihandle* ih, int lin);
+
+void iupMatrixMarkMouseBlock(Ihandle* ih, int lin2, int col2);
+void iupMatrixMarkMouseItem(Ihandle* ih, int ctrl, int lin1, int col1);
+void iupMatrixMarkMouseReset(Ihandle* ih);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmat_mem.c b/iup/srccontrols/matrix/iupmat_mem.c
new file mode 100755
index 0000000..eebea7a
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_mem.c
@@ -0,0 +1,319 @@
+/** \file
+ * \brief iupmatrix control memory allocation
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+/**************************************************************************/
+/* Functions to allocate memory */
+/**************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <memory.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include <cd.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+
+#include "iupmat_def.h"
+#include "iupmat_mem.h"
+
+
+static void iMatrixGetInitialValues(Ihandle* ih)
+{
+ int lin, col;
+ char* value;
+ char attr[100];
+
+ for (lin=0; lin<ih->data->lines.num; lin++)
+ {
+ for (col=0; col<ih->data->columns.num; col++)
+ {
+ sprintf(attr, "%d:%d", lin, col);
+ value = iupAttribGet(ih, attr);
+ if (value)
+ {
+ /* get the initial value and remove it from the hash table */
+
+ if (*value)
+ ih->data->cells[lin][col].value = iupStrDup(value);
+
+ iupAttribSetStr(ih, attr, NULL);
+ }
+ }
+ }
+}
+
+void iupMatrixMemAlloc(Ihandle* ih)
+{
+ ih->data->lines.num_alloc = ih->data->lines.num;
+ if (ih->data->lines.num_alloc == 1)
+ ih->data->lines.num_alloc = 5;
+
+ ih->data->columns.num_alloc = ih->data->columns.num;
+ if (ih->data->columns.num_alloc == 1)
+ ih->data->columns.num_alloc = 5;
+
+ if (!ih->data->callback_mode)
+ {
+ int lin;
+
+ ih->data->cells = (ImatCell**)calloc(ih->data->lines.num_alloc, sizeof(ImatCell*));
+ for (lin = 0; lin < ih->data->lines.num_alloc; lin++)
+ ih->data->cells[lin] = (ImatCell*)calloc(ih->data->columns.num_alloc, sizeof(ImatCell));
+
+ iMatrixGetInitialValues(ih);
+ }
+
+ ih->data->lines.flags = (unsigned char*)calloc(ih->data->lines.num_alloc, sizeof(unsigned char));
+ ih->data->columns.flags = (unsigned char*)calloc(ih->data->columns.num_alloc, sizeof(unsigned char));
+ ih->data->lines.sizes = (int*)calloc(ih->data->lines.num_alloc, sizeof(int));
+ ih->data->columns.sizes = (int*)calloc(ih->data->columns.num_alloc, sizeof(int));
+}
+
+void iupMatrixMemRelease(Ihandle* ih)
+{
+ if (ih->data->cells)
+ {
+ int lin, col;
+ for (lin = 0; lin < ih->data->lines.num_alloc; lin++)
+ {
+ for (col = 0; col < ih->data->columns.num_alloc; col++)
+ {
+ ImatCell* cell = &(ih->data->cells[lin][col]);
+ if (cell->value)
+ {
+ free(cell->value);
+ cell->value = NULL;
+ }
+ }
+ free(ih->data->cells[lin]);
+ ih->data->cells[lin] = NULL;
+ }
+ free(ih->data->cells);
+ ih->data->cells = NULL;
+ }
+
+ if (ih->data->columns.flags)
+ {
+ free(ih->data->columns.flags);
+ ih->data->columns.flags = NULL;
+ }
+
+ if (ih->data->lines.flags)
+ {
+ free(ih->data->lines.flags);
+ ih->data->lines.flags = NULL;
+ }
+
+ if (ih->data->columns.sizes)
+ {
+ free(ih->data->columns.sizes);
+ ih->data->columns.sizes = NULL;
+ }
+
+ if (ih->data->lines.sizes)
+ {
+ free(ih->data->lines.sizes);
+ ih->data->lines.sizes = NULL;
+ }
+}
+
+void iupMatrixMemReAllocLines(Ihandle* ih, int old_num, int num, int base)
+{
+ int lin, col, end, diff_num, shift_num;
+
+ /* base is the first line where the change started */
+
+ /* If it doesn't have enough lines allocated, then allocate more space */
+ if (num > ih->data->lines.num_alloc) /* this also implicates that num>old_num */
+ {
+ int old_alloc = ih->data->lines.num_alloc;
+ ih->data->lines.num_alloc = num;
+
+ if (!ih->data->callback_mode)
+ {
+ ih->data->cells = (ImatCell**)realloc(ih->data->cells, ih->data->lines.num_alloc*sizeof(ImatCell*));
+
+ /* new space are allocated at the end, later we need to move the old data and clear the available space */
+ for(lin = old_alloc; lin < num; lin++)
+ ih->data->cells[lin] = (ImatCell*)calloc(ih->data->columns.num_alloc, sizeof(ImatCell));
+ }
+
+ ih->data->lines.sizes = (int*)realloc(ih->data->lines.sizes, ih->data->lines.num_alloc*sizeof(int));
+ ih->data->lines.flags = (unsigned char*)realloc(ih->data->lines.flags, ih->data->lines.num_alloc*sizeof(unsigned char));
+ }
+
+ if (old_num==num)
+ return;
+
+ if (num>old_num) /* ADD */
+ {
+ diff_num = num-old_num; /* size of the openned space */
+ shift_num = old_num-base; /* size of the data to be moved (base maximum is old_num) */
+ end = base+diff_num;
+
+ /* shift the old data, opening space for new data, from base to end */
+ /* do it in reverse order to avoid overlapping */
+ if (shift_num)
+ {
+ if (!ih->data->callback_mode)
+ for (lin = shift_num-1; lin >= 0; lin--) /* all columns, shift_num lines */
+ memmove(ih->data->cells[lin+end], ih->data->cells[lin+base], ih->data->columns.num_alloc*sizeof(ImatCell));
+ memmove(ih->data->lines.sizes+end, ih->data->lines.sizes+base, shift_num*sizeof(int));
+ memmove(ih->data->lines.flags+end, ih->data->lines.flags+base, shift_num*sizeof(unsigned char));
+ }
+
+ /* then clear the new space starting at base */
+ if (!ih->data->callback_mode)
+ for (lin = 0; lin < diff_num; lin++) /* all columns, diff_num lines */
+ memset(ih->data->cells[lin+base], 0, ih->data->columns.num_alloc*sizeof(ImatCell));
+ memset(ih->data->lines.sizes+base, 0, diff_num*sizeof(int));
+ memset(ih->data->lines.flags+base, 0, diff_num*sizeof(unsigned char));
+ }
+ else /* DEL */
+ {
+ diff_num = old_num-num; /* size of the openned space */
+ shift_num = num-base; /* size of the data to be moved */
+ end = base+diff_num;
+
+ /* release memory from the opened space */
+ if (!ih->data->callback_mode)
+ {
+ for(lin = base; lin < end; lin++) /* all columns, base-end lines */
+ {
+ for (col = 0; col < ih->data->columns.num_alloc; col++)
+ {
+ ImatCell* cell = &(ih->data->cells[lin][col]);
+ if (cell->value)
+ {
+ free(cell->value);
+ cell->value = NULL;
+ }
+ cell->flags = 0;
+ }
+ }
+ }
+
+ /* move the old data to opened space from end to base */
+ if (shift_num)
+ {
+ if (!ih->data->callback_mode)
+ for (lin = 0; lin < shift_num; lin++) /* all columns, shift_num lines */
+ memmove(ih->data->cells[lin+base], ih->data->cells[lin+end], ih->data->columns.num_alloc*sizeof(ImatCell));
+ memmove(ih->data->lines.sizes+base, ih->data->lines.sizes+end, shift_num*sizeof(int));
+ memmove(ih->data->lines.flags+base, ih->data->lines.flags+end, shift_num*sizeof(unsigned char));
+ }
+
+ /* then clear the remaining space starting at num */
+ if (!ih->data->callback_mode)
+ for (lin = 0; lin < diff_num; lin++) /* all columns, diff_num lines */
+ memset(ih->data->cells[lin+num], 0, ih->data->columns.num_alloc*sizeof(ImatCell));
+ memset(ih->data->lines.sizes+num, 0, diff_num*sizeof(int));
+ memset(ih->data->lines.flags+num, 0, diff_num*sizeof(unsigned char));
+ }
+}
+
+void iupMatrixMemReAllocColumns(Ihandle* ih, int old_num, int num, int base)
+{
+ int lin, col, end, diff_num, shift_num;
+
+ /* base is the first column where the change started */
+
+ /* If it doesn't have enough columns allocated, then allocate more space */
+ if (num > ih->data->columns.num_alloc) /* this also implicates that also num>old_num */
+ {
+ ih->data->columns.num_alloc = num;
+
+ /* new space are allocated at the end, later we need to move the old data and clear the available space */
+
+ if (!ih->data->callback_mode)
+ {
+ for(lin = 0; lin < ih->data->lines.num_alloc; lin++)
+ ih->data->cells[lin] = (ImatCell*)realloc(ih->data->cells[lin], ih->data->columns.num_alloc*sizeof(ImatCell));
+ }
+
+ ih->data->columns.sizes = (int*)realloc(ih->data->columns.sizes, ih->data->columns.num_alloc*sizeof(int));
+ ih->data->columns.flags = (unsigned char*)realloc(ih->data->columns.flags, ih->data->columns.num_alloc*sizeof(unsigned char));
+ }
+
+ if (old_num==num)
+ return;
+
+ if (num>old_num) /* ADD */
+ {
+ /* even if (old_num-base)>(num-old_num) memmove will correctly copy the memory */
+ /* then clear the openned space starting at base */
+
+ diff_num = num-old_num; /* size of the openned space */
+ shift_num = old_num-base; /* size of the data to be moved (base maximum is old_num) */
+ end = base+diff_num;
+
+ /* shift the old data, opening space for new data, from base to end */
+ if (shift_num)
+ {
+ if (!ih->data->callback_mode)
+ for (lin = 0; lin < ih->data->lines.num_alloc; lin++) /* all lines, shift_num columns */
+ memmove(ih->data->cells[lin]+end, ih->data->cells[lin]+base, shift_num*sizeof(ImatCell));
+ memmove(ih->data->columns.sizes+end, ih->data->columns.sizes+base, shift_num*sizeof(int));
+ memmove(ih->data->columns.flags+end, ih->data->columns.flags+base, shift_num*sizeof(unsigned char));
+ }
+
+ /* then clear the openned space starting at base */
+ if (!ih->data->callback_mode)
+ for (lin = 0; lin < ih->data->lines.num_alloc; lin++) /* all lines, diff_num columns */
+ memset(ih->data->cells[lin]+base, 0, diff_num*sizeof(ImatCell));
+ memset(ih->data->columns.sizes+base, 0, diff_num*sizeof(int));
+ memset(ih->data->columns.flags+base, 0, diff_num*sizeof(unsigned char));
+ }
+ else /* DEL */
+ {
+ diff_num = old_num-num; /* size of the openned space */
+ shift_num = num-base; /* size of the data to be moved */
+ end = base+diff_num;
+
+ /* release memory from the opened space */
+ if (!ih->data->callback_mode)
+ {
+ for (lin = 0; lin < ih->data->lines.num_alloc; lin++) /* all lines, base-end columns */
+ {
+ for(col = base; col < end; col++)
+ {
+ ImatCell* cell = &(ih->data->cells[lin][col]);
+ if (cell->value)
+ {
+ free(cell->value);
+ cell->value = NULL;
+ }
+ cell->flags = 0;
+ }
+ }
+ }
+
+ /* move the old data to opened space from end to base */
+ /* even if (num-base)>(old_num-num) memmove will correctly copy the memory */
+ if (shift_num)
+ {
+ if (!ih->data->callback_mode)
+ for (lin = 0; lin < ih->data->lines.num_alloc; lin++) /* all lines, shift_num columns */
+ memmove(ih->data->cells[lin]+base, ih->data->cells[lin]+end, shift_num*sizeof(ImatCell));
+ memmove(ih->data->columns.sizes+base, ih->data->columns.sizes+end, shift_num*sizeof(int));
+ memmove(ih->data->columns.flags+base, ih->data->columns.flags+end, shift_num*sizeof(unsigned char));
+ }
+
+ /* then clear the remaining space starting at num */
+ if (!ih->data->callback_mode)
+ for (lin = 0; lin < ih->data->lines.num_alloc; lin++) /* all lines, diff_num columns */
+ memset(ih->data->cells[lin]+num, 0, diff_num*sizeof(ImatCell));
+ memset(ih->data->columns.sizes+num, 0, diff_num*sizeof(int));
+ memset(ih->data->columns.flags+num, 0, diff_num*sizeof(unsigned char));
+ }
+}
diff --git a/iup/srccontrols/matrix/iupmat_mem.h b/iup/srccontrols/matrix/iupmat_mem.h
new file mode 100755
index 0000000..05a047b
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_mem.h
@@ -0,0 +1,24 @@
+/** \file
+ * \brief iupmatrix control
+ * memory allocation.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_MEM_H
+#define __IUPMAT_MEM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void iupMatrixMemAlloc(Ihandle* ih);
+void iupMatrixMemRelease(Ihandle* ih);
+void iupMatrixMemReAllocLines (Ihandle* ih, int old_num, int num, int base);
+void iupMatrixMemReAllocColumns(Ihandle* ih, int old_num, int num, int base);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmat_mouse.c b/iup/srccontrols/matrix/iupmat_mouse.c
new file mode 100755
index 0000000..33b5fe7
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_mouse.c
@@ -0,0 +1,212 @@
+/** \file
+ * \brief iupmatrix control
+ * mouse events
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+/**************************************************************************/
+/* Functions to handle mouse events */
+/**************************************************************************/
+
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include <cd.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+
+#include "iupmat_def.h"
+#include "iupmat_colres.h"
+#include "iupmat_aux.h"
+#include "iupmat_focus.h"
+#include "iupmat_mouse.h"
+#include "iupmat_key.h"
+#include "iupmat_mark.h"
+#include "iupmat_edit.h"
+#include "iupmat_draw.h"
+#include "iupmat_scroll.h"
+
+
+#define IMAT_DRAG_SCROLL_DELTA 5
+
+static void iMatrixMouseCallMoveCb(Ihandle* ih, int lin, int col)
+{
+ IFnii cb = (IFnii)IupGetCallback(ih, "MOUSEMOVE_CB");
+ if (cb)
+ cb(ih, lin, col);
+}
+
+static int iMatrixMouseCallClickCb(Ihandle* ih, int press, int lin, int col, char* r)
+{
+ IFniis cb;
+
+ if (press)
+ cb = (IFniis)IupGetCallback(ih, "CLICK_CB");
+ else
+ cb = (IFniis)IupGetCallback(ih, "RELEASE_CB");
+
+ if (cb)
+ return cb(ih, lin, col, r);
+
+ return IUP_DEFAULT;
+}
+
+static void iMatrixMouseLeftPress(Ihandle* ih, int lin, int col, int shift, int ctrl, int dclick)
+{
+ if (dclick)
+ {
+ iupMatrixMarkMouseReset(ih);
+
+ if (lin==0 || col==0)
+ return;
+
+ /* if a double click NOT in the current cell */
+ if (lin != ih->data->lines.focus_cell || col != ih->data->columns.focus_cell)
+ {
+ /* leave the previous cell if the matrix previously had the focus */
+ if (ih->data->has_focus && iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE)
+ return;
+
+ iupMatrixFocusSet(ih, lin, col);
+
+ iupMatrixAuxCallEnterCellCb(ih);
+ }
+
+ if (iupMatrixEditShow(ih))
+ {
+ if(ih->data->datah == ih->data->droph)
+ IupSetAttribute(ih->data->datah, "SHOWDROPDOWN", "YES");
+
+ if (iupStrEqualNoCase(IupGetGlobal("DRIVER"), "Motif"))
+ if(atoi(IupGetGlobal("MOTIFNUMBER")) < 2203) /* since OpenMotif version 2.2.3 this is not necessary */
+ iupAttribSetStr(ih, "_IUPMAT_DOUBLE_CLICK", "1");
+ }
+ }
+ else /* single click */
+ {
+ if (shift && ih->data->mark_multiple && ih->data->mark_mode != IMAT_MARK_NO)
+ {
+ iupMatrixMarkMouseBlock(ih, lin, col);
+ }
+ else
+ {
+ ih->data->leftpressed = 1;
+
+ if (lin>0 && col>0)
+ {
+ if (iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE)
+ return;
+
+ iupMatrixFocusSet(ih, lin, col);
+
+ /* process mark before EnterCell */
+ if (ih->data->mark_mode != IMAT_MARK_NO)
+ iupMatrixMarkMouseItem(ih, ctrl, lin, col);
+
+ iupMatrixAuxCallEnterCellCb(ih);
+ }
+ else
+ {
+ /* only process marks if at titles */
+ if (ih->data->mark_mode != IMAT_MARK_NO)
+ iupMatrixMarkMouseItem(ih, ctrl, lin, col);
+ }
+ }
+ }
+}
+
+int iupMatrixMouseButton_CB(Ihandle* ih, int b, int press, int x, int y, char* r)
+{
+ int lin=-1, col=-1;
+
+ if (!iupMatrixIsValid(ih, 0))
+ return IUP_DEFAULT;
+
+ /* reset press state */
+ ih->data->leftpressed = 0;
+
+ if (press)
+ {
+ /* The edit Focus callback is not called when the user clicks in the parent canvas.
+ so we have to compensate that. */
+ iupMatrixEditForceHidden(ih);
+ ih->data->has_focus = 1;
+ }
+
+ iupMatrixAuxGetLinColFromXY(ih, x, y, &lin, &col);
+
+ if (b == IUP_BUTTON1)
+ {
+ if (press)
+ {
+ iupMatrixKeyResetHomeEndCount(ih);
+
+ if (iupMatrixColResStart(ih, x, y))
+ return IUP_DEFAULT; /* Resize of the width a of a column was started */
+
+ if (lin!=-1 && col!=-1)
+ iMatrixMouseLeftPress(ih, lin, col, isshift(r), iscontrol(r), isdouble(r));
+ }
+ else
+ {
+ if (iupMatrixColResIsResizing(ih)) /* If it was made a column resize, finish it */
+ iupMatrixColResFinish(ih, x);
+ }
+ }
+ else
+ iupMatrixMarkMouseReset(ih);
+
+ if (lin!=-1 && col!=-1)
+ {
+ if (iMatrixMouseCallClickCb(ih, press, lin, col, r) == IUP_IGNORE)
+ return IUP_DEFAULT;
+ }
+
+ iupMatrixDrawUpdate(ih);
+ return IUP_DEFAULT;
+}
+
+int iupMatrixMouseMove_CB(Ihandle* ih, int x, int y)
+{
+ int lin, col;
+
+ if (!iupMatrixIsValid(ih, 0))
+ return IUP_DEFAULT;
+
+ if (ih->data->leftpressed && ih->data->mark_multiple && ih->data->mark_mode != IMAT_MARK_NO)
+ {
+ if ((x < ih->data->columns.sizes[0] || x < IMAT_DRAG_SCROLL_DELTA) && (ih->data->columns.first > 1))
+ iupMatrixScrollLeft(ih);
+ else if ((x > ih->data->w - IMAT_DRAG_SCROLL_DELTA) && (ih->data->columns.last < ih->data->columns.num-1))
+ iupMatrixScrollRight(ih);
+
+ if ((y < ih->data->lines.sizes[0] || y < IMAT_DRAG_SCROLL_DELTA) && (ih->data->lines.first > 1))
+ iupMatrixScrollUp(ih);
+ else if ((y > ih->data->h - IMAT_DRAG_SCROLL_DELTA) && (ih->data->lines.last < ih->data->lines.num-1))
+ iupMatrixScrollDown(ih);
+
+ if (iupMatrixAuxGetLinColFromXY(ih, x, y, &lin, &col))
+ {
+ iupMatrixMarkMouseBlock(ih, lin, col);
+ iupMatrixDrawUpdate(ih);
+
+ iMatrixMouseCallMoveCb(ih, lin, col);
+ }
+ return IUP_DEFAULT;
+ }
+ else if(iupMatrixColResIsResizing(ih)) /* Make a resize in a column size */
+ iupMatrixColResMove(ih, x);
+ else /* Change cursor when it is passed on a join involving column titles */
+ iupMatrixColResCheckChangeCursor(ih, x, y);
+
+ if (iupMatrixAuxGetLinColFromXY(ih, x, y, &lin, &col))
+ iMatrixMouseCallMoveCb(ih, lin, col);
+
+ return IUP_DEFAULT;
+}
diff --git a/iup/srccontrols/matrix/iupmat_mouse.h b/iup/srccontrols/matrix/iupmat_mouse.h
new file mode 100755
index 0000000..17a09ec
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_mouse.h
@@ -0,0 +1,22 @@
+/** \file
+ * \brief iMatrixrix control
+ * mouse events.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_MOUSE_H
+#define __IUPMAT_MOUSE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int iupMatrixMouseButton_CB (Ihandle* ih, int b, int press, int x, int y, char* r);
+int iupMatrixMouseMove_CB (Ihandle* ih, int x, int y);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmat_numlc.c b/iup/srccontrols/matrix/iupmat_numlc.c
new file mode 100755
index 0000000..e48720a
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_numlc.c
@@ -0,0 +1,495 @@
+/** \file
+ * \brief iupmatrix control
+ * change number of columns or lines
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+/**************************************************************************/
+/* Functions to change the number of lines and columns of the matrix, */
+/* after it has been created. */
+/**************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include <cd.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+
+#include "iupmat_def.h"
+#include "iupmat_edit.h"
+#include "iupmat_mem.h"
+#include "iupmat_numlc.h"
+#include "iupmat_draw.h"
+
+
+static void iMatrixUpdateLineAttributes(Ihandle* ih, int base, int count, int add)
+{
+#define IMAT_NUM_ATTRIB_LINE 6
+#define IMAT_ATTRIB_LINE_ONLY 3
+ char* attrib_format[IMAT_NUM_ATTRIB_LINE] = {
+ "BGCOLOR%d:*",
+ "FGCOLOR%d:*",
+ "FONT%d:*",
+ "BGCOLOR%d:%d",
+ "FGCOLOR%d:%d",
+ "FONT%d:%d"};
+ char* attrib = iupStrGetMemory(100);
+ int a, lin, col;
+ char* value;
+
+ if (add) /* ADD */
+ {
+ /* copy the attributes of the moved cells, from base+count to num */
+ /* do it in reverse order to avoid overlapping */
+ /* then clear the new space starting from base to base+count */
+
+ for(a = 0; a < IMAT_NUM_ATTRIB_LINE; a++)
+ {
+ for(lin = ih->data->lines.num-1; lin >= base+count; lin--)
+ {
+ /* Update the line attributes */
+ if (a < IMAT_ATTRIB_LINE_ONLY)
+ {
+ sprintf(attrib, attrib_format[a], lin-count);
+ value = iupAttribGet(ih, attrib);
+ sprintf(attrib, attrib_format[a], lin);
+ iupAttribStoreStr(ih, attrib, value);
+ }
+ /* Update the cell attribute */
+ else for(col = 0; col < ih->data->columns.num; col++)
+ {
+ sprintf(attrib, attrib_format[a], lin-count, col);
+ value = iupAttribGet(ih, attrib);
+ sprintf(attrib, attrib_format[a], lin, col);
+ iupAttribStoreStr(ih, attrib, value);
+ }
+ }
+
+ for(lin = base; lin < base+count; lin++)
+ {
+ if (a < IMAT_ATTRIB_LINE_ONLY)
+ {
+ sprintf(attrib, attrib_format[a], lin);
+ iupAttribSetStr(ih, attrib, NULL);
+ }
+ else for(col = 0; col < ih->data->columns.num; col++)
+ {
+ sprintf(attrib, attrib_format[a], lin, col);
+ iupAttribSetStr(ih, attrib, NULL);
+ }
+ }
+ }
+ }
+ else /* DEL */
+ {
+ /* copy the attributes of the moved cells from base+count to base */
+ /* then clear the remaining space starting at num */
+
+ for(a = 0; a < IMAT_NUM_ATTRIB_LINE; a++)
+ {
+ for(lin = base; lin < ih->data->lines.num; lin++)
+ {
+ /* Update the line attributes */
+ if (a < IMAT_ATTRIB_LINE_ONLY)
+ {
+ sprintf(attrib, attrib_format[a], lin+count);
+ value = iupAttribGet(ih, attrib);
+ sprintf(attrib, attrib_format[a], lin);
+ iupAttribStoreStr(ih, attrib, value);
+ }
+ /* Update each cell attribute */
+ else for(col = 0; col < ih->data->columns.num; col++)
+ {
+ sprintf(attrib, attrib_format[a], lin+count, col);
+ value = iupAttribGet(ih, attrib);
+ sprintf(attrib, attrib_format[a], lin, col);
+ iupAttribStoreStr(ih, attrib, value);
+ }
+ }
+
+ for(lin = ih->data->lines.num; lin < ih->data->lines.num+count; lin++)
+ {
+ if (a < IMAT_ATTRIB_LINE_ONLY)
+ {
+ sprintf(attrib, attrib_format[a], lin);
+ iupAttribSetStr(ih, attrib, NULL);
+ }
+ else for(col = 0; col < ih->data->columns.num; col++)
+ {
+ sprintf(attrib, attrib_format[a], lin, col);
+ iupAttribSetStr(ih, attrib, NULL);
+ }
+ }
+ }
+ }
+}
+
+static void iMatrixUpdateColumnAttributes(Ihandle* ih, int base, int count, int add)
+{
+#define IMAT_NUM_ATTRIB_COL 7
+#define IMAT_ATTRIB_COL_ONLY 4
+ char* attrib_format[IMAT_NUM_ATTRIB_COL] = {
+ "ALIGNMENT%d",
+ "BGCOLOR*:%d",
+ "FGCOLOR*:%d",
+ "FONT*:%d",
+ "BGCOLOR%d:%d",
+ "FGCOLOR%d:%d",
+ "FONT%d:%d"};
+ char* attrib = iupStrGetMemory(100);
+ int a, col, lin;
+ char* value;
+
+ if (add) /* ADD */
+ {
+ /* update the attributes of the moved cells, from base+count to num */
+ /* do it in reverse order to avoid overlapping */
+ /* then clear the new space starting from base to base+count */
+
+ for(a = 0; a < IMAT_NUM_ATTRIB_COL; a++)
+ {
+ for(col = ih->data->columns.num-1; col >= base+count; col--)
+ {
+ /* Update the column attributes */
+ if (a < IMAT_ATTRIB_COL_ONLY)
+ {
+ sprintf(attrib, attrib_format[a], col-count);
+ value = iupAttribGet(ih, attrib);
+ sprintf(attrib,attrib_format[a],col);
+ iupAttribStoreStr(ih, attrib, value);
+ }
+ /* Update the cell attributes */
+ else for(lin = 0; lin < ih->data->lines.num; lin++)
+ {
+ sprintf(attrib, attrib_format[a], lin, col-count);
+ value = iupAttribGet(ih, attrib);
+ sprintf(attrib, attrib_format[a], lin, col);
+ iupAttribStoreStr(ih, attrib, value);
+ }
+ }
+
+ for(col = base; col < base+count; col++)
+ {
+ if (a < IMAT_ATTRIB_COL_ONLY)
+ {
+ sprintf(attrib, attrib_format[a], col);
+ iupAttribSetStr(ih, attrib, NULL);
+ }
+ else for(lin = 0; lin < ih->data->lines.num; lin++)
+ {
+ sprintf(attrib, attrib_format[a], lin, col);
+ iupAttribSetStr(ih, attrib, NULL);
+ }
+ }
+ }
+ }
+ else /* DEL */
+ {
+ /* copy the attributes of the moved cells from base+count to base */
+ /* then clear the remaining space starting at num */
+
+ for(a = 0; a < IMAT_NUM_ATTRIB_COL; a++)
+ {
+ for(col = base; col < ih->data->columns.num; col++)
+ {
+ /* Update the column attributes */
+ if (a < IMAT_ATTRIB_COL_ONLY)
+ {
+ sprintf(attrib, attrib_format[a], col+count);
+ value = iupAttribGet(ih, attrib);
+ sprintf(attrib, attrib_format[a], col);
+ iupAttribStoreStr(ih, attrib, value);
+ }
+ /* Update the cell attributes */
+ else for(lin = 0; lin < ih->data->lines.num; lin++)
+ {
+ sprintf(attrib, attrib_format[a], lin, col+count);
+ value = iupAttribGet(ih, attrib);
+ sprintf(attrib, attrib_format[a], lin, col);
+ iupAttribStoreStr(ih, attrib, value);
+ }
+ }
+
+ for(col = ih->data->columns.num; col < ih->data->columns.num+count; col++)
+ {
+ if (a < IMAT_ATTRIB_COL_ONLY)
+ {
+ sprintf(attrib, attrib_format[a], col);
+ iupAttribSetStr(ih, attrib, NULL);
+ }
+ else for(lin = 0; lin < ih->data->lines.num; lin++)
+ {
+ sprintf(attrib, attrib_format[a], lin, col);
+ iupAttribSetStr(ih, attrib, NULL);
+ }
+ }
+ }
+ }
+}
+
+static int iMatrixGetStartEnd(const char* value, int *base, int *count, int max, int del)
+{
+ int ret;
+
+ if (!value)
+ return 0;
+
+ *base = 0;
+ *count = 1;
+
+ ret = sscanf(value, "%d-%d", base, count);
+ if (ret <= 0 || ret > 2)
+ return 0;
+ if (ret == 1)
+ *count = 1;
+
+ if (*count <= 0)
+ return 0;
+
+ if (del)
+ {
+ if (*base <= 0) /* the first valid element is always 1 */
+ *base = 1;
+
+ /* when del, base can be at the last element */
+ if (*base > max-1)
+ *base = max-1;
+
+ /* when del, count must be inside the existant range */
+ if (*base + *count > max)
+ *count = max - *base;
+ }
+ else
+ {
+ (*base)++; /* add after the given index, so increment to position the base */
+
+ if (*base <= 0) /* the first valid element is always 1 */
+ *base = 1;
+
+ /* when add, base can be just after the last element but not more */
+ if (*base > max)
+ *base = max;
+
+ /* when add, count can be any positive value */
+ }
+
+ return 1;
+}
+
+
+/**************************************************************************/
+/* Exported functions */
+/**************************************************************************/
+
+int iupMatrixSetAddLinAttrib(Ihandle* ih, const char* value)
+{
+ int base, count, lines_num = ih->data->lines.num;
+
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+
+ if (!iMatrixGetStartEnd(value, &base, &count, lines_num, 0))
+ return 0;
+
+ /* if the focus cell is after the inserted area */
+ if (ih->data->lines.focus_cell >= base)
+ {
+ /* leave of the edition mode */
+ iupMatrixEditForceHidden(ih);
+
+ /* move it to the same cell */
+ ih->data->lines.focus_cell += count;
+ }
+
+ iupMatrixMemReAllocLines(ih, lines_num, lines_num+count, base);
+
+ ih->data->lines.num += count;
+ ih->data->need_calcsize = 1;
+
+ if (base < lines_num) /* If before the last line. */
+ iMatrixUpdateLineAttributes(ih, base, count, 1);
+
+ iupMatrixDraw(ih, 1);
+ return 0;
+}
+
+int iupMatrixSetDelLinAttrib(Ihandle* ih, const char* value)
+{
+ int base, count, lines_num = ih->data->lines.num;
+
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+
+ if (!iMatrixGetStartEnd(value, &base, &count, lines_num, 1))
+ return 0;
+
+ /* if the focus cell is after the removed area */
+ if (ih->data->lines.focus_cell >= base)
+ {
+ /* leave of the edition mode */
+ iupMatrixEditForceHidden(ih);
+
+ /* if the focus cell is inside the removed area */
+ if (ih->data->lines.focus_cell <= base+count-1)
+ ih->data->lines.focus_cell = base; /* move it to the first existant cell */
+ else
+ ih->data->lines.focus_cell -= count; /* move it to the same cell */
+ }
+
+ iupMatrixMemReAllocLines(ih, lines_num, lines_num-count, base);
+
+ ih->data->lines.num -= count;
+ ih->data->need_calcsize = 1;
+
+ if (ih->data->lines.focus_cell >= ih->data->lines.num)
+ ih->data->lines.focus_cell = ih->data->lines.num-1;
+ if (ih->data->lines.focus_cell <= 0)
+ ih->data->lines.focus_cell = 1;
+
+ if (base < lines_num) /* If before the last line. (always true when deleting) */
+ iMatrixUpdateLineAttributes(ih, base, count, 0);
+
+ iupMatrixDraw(ih, 1);
+ return 0;
+}
+
+int iupMatrixSetAddColAttrib(Ihandle* ih, const char* value)
+{
+ int base, count, columns_num = ih->data->columns.num;
+
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+
+ if (!iMatrixGetStartEnd(value, &base, &count, columns_num, 0))
+ return 0;
+
+ /* if the focus cell is after the inserted area */
+ if (ih->data->columns.focus_cell >= base)
+ {
+ /* leave the edition mode */
+ iupMatrixEditForceHidden(ih);
+
+ /* move it to the same cell */
+ ih->data->columns.focus_cell += count;
+ }
+
+ iupMatrixMemReAllocColumns(ih, columns_num, columns_num+count, base);
+
+ ih->data->columns.num += count;
+ ih->data->need_calcsize = 1;
+
+ if (base < columns_num) /* If before the last column. */
+ iMatrixUpdateColumnAttributes(ih, base, count, 1);
+
+ iupMatrixDraw(ih, 1);
+ return 0;
+}
+
+int iupMatrixSetDelColAttrib(Ihandle* ih, const char* value)
+{
+ int base, count, columns_num = ih->data->columns.num;
+
+ if (!ih->handle) /* do not store the action before map */
+ return 0;
+
+ if (!iMatrixGetStartEnd(value, &base, &count, columns_num, 1))
+ return 0;
+
+ /* if the focus cell is after the removed area */
+ if (ih->data->columns.focus_cell >= base)
+ {
+ /* leave the edition mode */
+ iupMatrixEditForceHidden(ih);
+
+ /* if the focus cell is inside the removed area */
+ if (ih->data->columns.focus_cell <= base+count-1)
+ ih->data->columns.focus_cell = base; /* move it to the first existant cell */
+ else
+ ih->data->columns.focus_cell -= count; /* move it to the same cell */
+ }
+
+ iupMatrixMemReAllocColumns(ih, columns_num, columns_num-count, base);
+
+ ih->data->columns.num -= count;
+ ih->data->need_calcsize = 1;
+
+ if (ih->data->columns.focus_cell >= ih->data->columns.num)
+ ih->data->columns.focus_cell = ih->data->columns.num-1;
+ if (ih->data->columns.focus_cell <= 0)
+ ih->data->columns.focus_cell = 1;
+
+ if (base < columns_num) /* If before the last column. (always true when deleting) */
+ iMatrixUpdateColumnAttributes(ih, base, count, 0);
+
+ iupMatrixDraw(ih, 1);
+ return 0;
+}
+
+int iupMatrixSetNumLinAttrib(Ihandle* ih, const char* value)
+{
+ int num = 0;
+ if (iupStrToInt(value, &num))
+ {
+ if (num < 0) num = 0;
+
+ num++; /* add room for title line */
+
+ /* can be set before map */
+ if (ih->handle)
+ {
+ int base; /* base is after the end */
+ if (num >= ih->data->lines.num) /* add or alloc */
+ base = ih->data->lines.num;
+ else
+ base = num;
+ iupMatrixMemReAllocLines(ih, ih->data->lines.num, num, base);
+ }
+
+ ih->data->lines.num = num;
+ ih->data->need_calcsize = 1;
+
+ if (ih->handle)
+ iupMatrixDraw(ih, 1);
+ }
+
+ return 0;
+}
+
+int iupMatrixSetNumColAttrib(Ihandle* ih, const char* value)
+{
+ int num = 0;
+ if (iupStrToInt(value, &num))
+ {
+ if (num < 0) num = 0;
+
+ num++; /* add room for title column */
+
+ /* can be set before map */
+ if (ih->handle)
+ {
+ int base; /* base is after the end */
+ if (num >= ih->data->columns.num) /* add or alloc */
+ base = ih->data->columns.num;
+ else
+ base = num;
+ iupMatrixMemReAllocColumns(ih, ih->data->columns.num, num, base);
+ }
+
+ ih->data->columns.num = num;
+ ih->data->need_calcsize = 1;
+
+ if (ih->handle)
+ iupMatrixDraw(ih, 1);
+ }
+
+ return 0;
+}
diff --git a/iup/srccontrols/matrix/iupmat_numlc.h b/iup/srccontrols/matrix/iupmat_numlc.h
new file mode 100755
index 0000000..df5e16f
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_numlc.h
@@ -0,0 +1,27 @@
+/** \file
+ * \brief iupmatrix. change number of collumns or lines.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_NUMLC_H
+#define __IUPMAT_NUMLC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int iupMatrixSetAddLinAttrib(Ihandle* ih, const char* value);
+int iupMatrixSetDelLinAttrib(Ihandle* ih, const char* value);
+int iupMatrixSetAddColAttrib(Ihandle* ih, const char* value);
+int iupMatrixSetDelColAttrib(Ihandle* ih, const char* value);
+
+int iupMatrixSetNumLinAttrib(Ihandle* ih, const char* value);
+int iupMatrixSetNumColAttrib(Ihandle* ih, const char* value);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmat_scroll.c b/iup/srccontrols/matrix/iupmat_scroll.c
new file mode 100755
index 0000000..24bbef2
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_scroll.c
@@ -0,0 +1,495 @@
+/** \file
+ * \brief iupmatrix control
+ * scrolling
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include "iup.h"
+#include "iupcbs.h"
+
+#include <cd.h>
+
+#include "iup_object.h"
+#include "iup_stdcontrols.h"
+
+#include "iupmat_def.h"
+#include "iupmat_scroll.h"
+#include "iupmat_focus.h"
+#include "iupmat_aux.h"
+#include "iupmat_edit.h"
+#include "iupmat_draw.h"
+
+
+/* Macros used by "dir" parameter of the iMatrixScrollLine and iMatrixScrollColumn functions */
+#define IMAT_SCROLL_LEFT 0
+#define IMAT_SCROLL_RIGHT 1
+#define IMAT_SCROLL_UP 2
+#define IMAT_SCROLL_DOWN 3
+
+
+/**************************************************************************/
+/* Private functions */
+/**************************************************************************/
+
+
+static int iMatrixScrollIsFullVisibleLast(ImatLinColData *p)
+{
+ int i, sum = 0;
+
+ for(i = p->first; i <= p->last; i++)
+ sum += p->sizes[i];
+
+ if (sum > p->visible_size)
+ return 0;
+ else
+ return 1;
+}
+
+/* Scroll columns/lines in the left/top side of the matriz until the last column/line is FULLY visible.
+ -> m : Define the mode of operation: lines or columns [IMAT_PROCESS_LIN|IMAT_PROCESS_COL] */
+static void iMatrixScrollToVisible(Ihandle* ih, int m, int index)
+{
+ ImatLinColData* p;
+
+ if (m == IMAT_PROCESS_LIN)
+ p = &(ih->data->lines);
+ else
+ p = &(ih->data->columns);
+
+ if (index < p->first)
+ {
+ p->first = index;
+ return;
+ }
+ else if (index > p->last)
+ {
+ /* Increment the first column/line until the index is visible */
+ while(index > p->last && p->last != (p->num - 1))
+ {
+ p->first++;
+ iupMatrixAuxUpdateLast(p);
+ }
+ }
+
+ if (index == p->last)
+ {
+ /* must increment util the last is fully visible */
+ while(index == p->last && p->last != (p->num - 1) && !iMatrixScrollIsFullVisibleLast(p))
+ {
+ p->first++;
+ iupMatrixAuxUpdateLast(p);
+ }
+ }
+}
+
+/* Callback to report to the user which visualization area of
+ the matrix changed. */
+static void iMatrixScrollCallScrollTopCb(Ihandle* ih)
+{
+ IFnii cb = (IFnii)IupGetCallback(ih, "SCROLLTOP_CB");
+ if (cb)
+ cb(ih, ih->data->lines.first, ih->data->columns.first);
+}
+
+static int iMatrixScrollGetNextNonEmpty(Ihandle* ih, int m, int index)
+{
+ ImatLinColData* p;
+
+ if (m == IMAT_PROCESS_LIN)
+ p = &(ih->data->lines);
+ else
+ p = &(ih->data->columns);
+
+ while(index < p->num && p->sizes[index] == 0)
+ index++;
+
+ if (index > p->num-1)
+ {
+ if (p->num == 1)
+ return 1;
+ else
+ return p->num-1;
+ }
+ else
+ return index;
+}
+
+static int iMatrixScrollGetPrevNonEmpty(Ihandle* ih, int m, int index)
+{
+ ImatLinColData* p;
+
+ if (m == IMAT_PROCESS_LIN)
+ p = &(ih->data->lines);
+ else
+ p = &(ih->data->columns);
+
+ while(index > 0 && p->sizes[index] == 0)
+ index--;
+
+ if (index < 1)
+ return 1;
+ else
+ return index;
+}
+
+static void iMatrixScrollSetFocusScrollToVisible(Ihandle* ih, int m, int index)
+{
+ if (m == IMAT_PROCESS_COL)
+ iupMatrixFocusSet(ih, ih->data->lines.focus_cell, index);
+ else
+ iupMatrixFocusSet(ih, index, ih->data->columns.focus_cell);
+
+ /* set for both because current focus maybe hidden */
+ iMatrixScrollToVisible(ih, IMAT_PROCESS_COL, ih->data->columns.focus_cell);
+ iMatrixScrollToVisible(ih, IMAT_PROCESS_LIN, ih->data->lines.focus_cell);
+}
+
+/**************************************************************************/
+/* Exported functions */
+/**************************************************************************/
+
+
+/* Move using the cells of matrix.
+ Receive as a parameter a pointer to a function that will make the work,
+ in fact. This is done to avoid a test to each of the manipulation cursor
+ functions, verifying if it is necessary to call or not the scroll
+ callback. This is only done here.
+ -> func - pointer to the function that will make the movement
+ -> mode - parameter passed to func, specify if the movement request is of
+ the scrollbar or the keyboard
+ -> pos - parameter passed to func, that will be the handle position function
+ of the scrollbar, returning the scrollbar thumb position...
+ if func is other function, this parameter will be ignored
+ -> m - parameter passed to func, specify which is the mode of operation:
+ lines or columns [IMAT_PROCESS_LIN|IMAT_PROCESS_COL]
+*/
+void iupMatrixScrollMoveCursor(iupMatrixScrollMoveF func, Ihandle* ih, int mode, float pos, int m)
+{
+ int old_lines_first = ih->data->lines.first;
+ int old_columns_first = ih->data->columns.first;
+
+ iupMatrixEditForceHidden(ih);
+
+ func(ih, mode, pos, m);
+
+ if (ih->data->lines.first != old_lines_first || ih->data->columns.first != old_columns_first)
+ {
+ if (ih->data->columns.first != old_columns_first)
+ iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_COL);
+
+ if (ih->data->lines.first != old_lines_first)
+ iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_LIN);
+
+ iMatrixScrollCallScrollTopCb(ih);
+
+ iupMatrixDraw(ih, 0);
+ }
+}
+
+void iupMatrixScrollToVisible(Ihandle* ih, int lin, int col)
+{
+ int old_lines_first = ih->data->lines.first;
+ int old_columns_first = ih->data->columns.first;
+
+ iMatrixScrollToVisible(ih, IMAT_PROCESS_COL, col);
+ iMatrixScrollToVisible(ih, IMAT_PROCESS_LIN, lin);
+
+ if (ih->data->lines.first != old_lines_first || ih->data->columns.first != old_columns_first)
+ {
+ if (ih->data->columns.first != old_columns_first)
+ iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_COL);
+
+ if (ih->data->lines.first != old_lines_first)
+ iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_LIN);
+
+ iMatrixScrollCallScrollTopCb(ih);
+
+ iupMatrixDraw(ih, 1);
+ }
+}
+
+/* This function is called when the "home" key is pressed.
+ In the first time, go to the beginning of the line.
+ In the second time, go to the beginning of the page.
+ In the third time, go to the beginning of the matrix.
+ -> mode and pos : DO NOT USED.
+*/
+void iupMatrixScrollHome(Ihandle* ih, int unused_mode, float unused_pos, int unused_m)
+{
+ (void)unused_m;
+ (void)unused_mode;
+ (void)unused_pos;
+
+ /* called only for mode==IMAT_SCROLLKEY */
+
+ if(ih->data->homekeycount == 0) /* go to the beginning of the line */
+ {
+ ih->data->columns.first = iMatrixScrollGetNextNonEmpty(ih, IMAT_PROCESS_COL, 1);
+ iMatrixScrollSetFocusScrollToVisible(ih, IMAT_PROCESS_COL, ih->data->columns.first);
+ }
+ else if(ih->data->homekeycount == 1) /* go to the beginning of the visible page */
+ {
+ iupMatrixFocusSet(ih, ih->data->lines.first, ih->data->columns.first);
+
+ /* set for both because current focus maybe hidden */
+ iMatrixScrollToVisible(ih, IMAT_PROCESS_COL, ih->data->columns.focus_cell);
+ iMatrixScrollToVisible(ih, IMAT_PROCESS_LIN, ih->data->lines.focus_cell);
+ }
+ else if(ih->data->homekeycount == 2) /* go to the beginning of the matrix 1:1 */
+ {
+ ih->data->columns.first = iMatrixScrollGetNextNonEmpty(ih, IMAT_PROCESS_COL, 1);
+ ih->data->lines.first = iMatrixScrollGetNextNonEmpty(ih, IMAT_PROCESS_LIN, 1);
+
+ iupMatrixFocusSet(ih, ih->data->lines.first, ih->data->columns.first);
+
+ /* set for both because current focus maybe hidden */
+ iMatrixScrollToVisible(ih, IMAT_PROCESS_COL, ih->data->columns.focus_cell);
+ iMatrixScrollToVisible(ih, IMAT_PROCESS_LIN, ih->data->lines.focus_cell);
+ }
+}
+
+/* This function is called when the "end" key is pressed.
+ In the first time, go to the end of the line.
+ In the second time, go to the end of the page.
+ In the third time, go to the end of the matrix.
+ -> mode and pos : DO NOT USED.
+*/
+void iupMatrixScrollEnd(Ihandle* ih, int unused_mode, float unused_pos, int unused_m)
+{
+ (void)unused_m;
+ (void)unused_mode;
+ (void)unused_pos;
+
+ /* called only for mode==IMAT_SCROLLKEY */
+
+ if(ih->data->endkeycount == 0) /* go to the end of the line */
+ {
+ int last_col = iMatrixScrollGetPrevNonEmpty(ih, IMAT_PROCESS_COL, ih->data->columns.num-1);
+ iMatrixScrollSetFocusScrollToVisible(ih, IMAT_PROCESS_COL, last_col);
+ }
+ else if(ih->data->endkeycount == 1) /* go to the end of the visible page */
+ {
+ iupMatrixFocusSet(ih, ih->data->lines.last, ih->data->columns.last);
+
+ /* set for both because current focus maybe hidden */
+ iMatrixScrollToVisible(ih, IMAT_PROCESS_COL, ih->data->columns.focus_cell);
+ iMatrixScrollToVisible(ih, IMAT_PROCESS_LIN, ih->data->lines.focus_cell);
+ }
+ else if(ih->data->endkeycount == 2) /* go to the end of the matrix */
+ {
+ int last_col = iMatrixScrollGetPrevNonEmpty(ih, IMAT_PROCESS_COL, ih->data->columns.num-1);
+ int last_lin = iMatrixScrollGetPrevNonEmpty(ih, IMAT_PROCESS_LIN, ih->data->lines.num-1);
+
+ iupMatrixFocusSet(ih, last_lin, last_col);
+
+ /* set for both because current focus maybe hidden */
+ iMatrixScrollToVisible(ih, IMAT_PROCESS_COL, ih->data->columns.focus_cell);
+ iMatrixScrollToVisible(ih, IMAT_PROCESS_LIN, ih->data->lines.focus_cell);
+ }
+}
+
+/* This function is called to move a cell to the left or up.
+ -> mode : indicate if the command was from the keyboard or the scrollbar. If scrollbar,
+ do not change the focus.
+ -> pos : DO NOT USED
+ -> m : define the mode of operation: lines or columns [IMAT_PROCESS_LIN|IMAT_PROCESS_COL]
+*/
+void iupMatrixScrollLeftUp(Ihandle* ih, int mode, float pos, int m)
+{
+ ImatLinColData* p;
+ (void)pos;
+
+ if(m == IMAT_PROCESS_LIN)
+ p = &(ih->data->lines);
+ else
+ p = &(ih->data->columns);
+
+ if (mode == IMAT_SCROLLKEY)
+ {
+ int next = iMatrixScrollGetPrevNonEmpty(ih, m, p->focus_cell-1);
+ iMatrixScrollSetFocusScrollToVisible(ih, m, next);
+ }
+ else /* IMAT_SCROLLBAR */
+ {
+ p->first = iMatrixScrollGetPrevNonEmpty(ih, m, p->first-1);
+ }
+}
+
+/* This function is called to move a cell to the right or down.
+ -> mode : indicate if the command from the keyboard or the scrollbar. If scrollbar,
+ do not change the focus.
+ -> pos : DO NOT USED
+ -> m : define the mode of operation: lines or columns [IMAT_PROCESS_LIN|IMAT_PROCESS_COL]
+*/
+void iupMatrixScrollRightDown(Ihandle* ih, int mode, float pos, int m)
+{
+ ImatLinColData* p;
+ (void)pos;
+
+ if(m == IMAT_PROCESS_LIN)
+ p = &(ih->data->lines);
+ else
+ p = &(ih->data->columns);
+
+ if (mode == IMAT_SCROLLKEY)
+ {
+ int next = iMatrixScrollGetNextNonEmpty(ih, m, p->focus_cell+1);
+ iMatrixScrollSetFocusScrollToVisible(ih, m, next);
+ }
+ else /* IMAT_SCROLLBAR */
+ {
+ p->first = iMatrixScrollGetNextNonEmpty(ih, m, p->first+1);
+ }
+}
+
+/* This function is called to move a page to the left or up.
+ -> mode : indicate if the command was from the keyboard or the scrollbar. If scrollbar,
+ do not change the focus.
+ -> pos : DO NOT USED
+ -> m : define the mode of operation: lines (PgLeft) or columns (PgUp) [IMAT_PROCESS_LIN|IMAT_PROCESS_COL]
+*/
+void iupMatrixScrollPgLeftUp(Ihandle* ih, int mode, float pos, int m)
+{
+ ImatLinColData* p;
+ (void)pos;
+
+ if(m == IMAT_PROCESS_LIN)
+ p = &(ih->data->lines);
+ else
+ p = &(ih->data->columns);
+
+ if (mode == IMAT_SCROLLKEY)
+ {
+ int next = iMatrixScrollGetPrevNonEmpty(ih, m, p->focus_cell - (p->last - p->first));
+ iMatrixScrollSetFocusScrollToVisible(ih, m, next);
+ }
+ else /* IMAT_SCROLLBAR */
+ {
+ p->first = iMatrixScrollGetPrevNonEmpty(ih, m, p->first - (p->last - p->first));
+ }
+}
+
+/* This function is called to move a page to the right or down.
+ -> mode : indicate if the command was from the keyboard or the scrollbar. If scrollbar,
+ do not change the focus.
+ -> pos : DO NOT USED
+ -> m : define the mode of operation: lines (PgDown) or columns (PgRight) [IMAT_PROCESS_LIN|IMAT_PROCESS_COL]
+*/
+void iupMatrixScrollPgRightDown(Ihandle* ih, int mode, float pos, int m)
+{
+ ImatLinColData* p;
+ (void)pos;
+
+ if(m == IMAT_PROCESS_LIN)
+ p = &(ih->data->lines);
+ else
+ p = &(ih->data->columns);
+
+ if (mode == IMAT_SCROLLKEY)
+ {
+ int next = iMatrixScrollGetNextNonEmpty(ih, IMAT_PROCESS_COL, p->focus_cell + (p->last - p->first));
+ iMatrixScrollSetFocusScrollToVisible(ih, m, next);
+ }
+ else /* IMAT_SCROLLBAR */
+ {
+ p->first = iMatrixScrollGetPrevNonEmpty(ih, m, p->first + (p->last - p->first));
+ }
+}
+
+void iupMatrixScrollCr(Ihandle* ih, int unused_mode, float unused_pos, int unused_m)
+{
+ int oldlin = ih->data->lines.focus_cell;
+ int oldcol = ih->data->columns.focus_cell;
+ (void)unused_m;
+ (void)unused_mode;
+ (void)unused_pos;
+
+ /* called only for mode==IMAT_SCROLLKEY */
+
+ /* try the normal processing of next cell down */
+ iupMatrixScrollRightDown(ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_LIN);
+
+ if(ih->data->lines.focus_cell == oldlin && ih->data->columns.focus_cell == oldcol)
+ {
+ /* If focus was not changed, it was because it is in the last line of the column.
+ Go to the next column of the same line. */
+ iupMatrixScrollRightDown(ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_COL);
+ }
+}
+
+/* This function is called when a drag is performed in the scrollbar.
+ -> x : scrollbar thumb position, value between 0 and 1
+ -> mode : DO NOT USED
+ -> m : define the mode of operation: lines or columns [IMAT_PROCESS_LIN|IMAT_PROCESS_COL]
+*/
+void iupMatrixScrollPos(Ihandle* ih, int mode, float pos, int m)
+{
+ int scroll_pos, index, vp;
+ float d;
+ ImatLinColData* p;
+ (void)mode;
+
+ if (m == IMAT_PROCESS_LIN)
+ {
+ p = &(ih->data->lines);
+ d = IupGetFloat(ih, "DY");
+ }
+ else
+ {
+ p = &(ih->data->columns);
+ d = IupGetFloat(ih, "DX");
+ }
+
+ if (p->num == 1)
+ {
+ p->first = 1;
+ return;
+ }
+
+ scroll_pos = (int)(pos * p->total_size + 0.5);
+
+ vp = 0;
+ for(index = 1; index < p->num; index++)
+ {
+ vp += p->sizes[index];
+ if (vp > scroll_pos)
+ break;
+ }
+
+ if (index == p->num)
+ {
+ if (p->num == 1)
+ index = 1;
+ else
+ index = p->num-1;
+ }
+
+ p->first = index;
+}
+
+int iupMatrixScroll_CB(Ihandle* ih, int action, float x, float y)
+{
+ if (!iupMatrixIsValid(ih, 0))
+ return IUP_DEFAULT;
+
+ switch(action)
+ {
+ case IUP_SBUP : iupMatrixScrollUp(ih); break;
+ case IUP_SBDN : iupMatrixScrollDown(ih); break;
+ case IUP_SBPGUP : iupMatrixScrollPgUp(ih); break;
+ case IUP_SBPGDN : iupMatrixScrollPgDown(ih); break;
+ case IUP_SBRIGHT : iupMatrixScrollRight(ih); break;
+ case IUP_SBLEFT : iupMatrixScrollLeft(ih); break;
+ case IUP_SBPGRIGHT : iupMatrixScrollPgRight(ih); break;
+ case IUP_SBPGLEFT : iupMatrixScrollPgLeft(ih); break;
+ case IUP_SBPOSV : iupMatrixScrollPosVer(ih,y); break;
+ case IUP_SBPOSH : iupMatrixScrollPosHor(ih,x); break;
+ case IUP_SBDRAGV : iupMatrixScrollPosVer(ih,y); break;
+ case IUP_SBDRAGH : iupMatrixScrollPosHor(ih,x); break;
+ }
+
+ iupMatrixDrawUpdate(ih);
+
+ return IUP_DEFAULT;
+}
diff --git a/iup/srccontrols/matrix/iupmat_scroll.h b/iup/srccontrols/matrix/iupmat_scroll.h
new file mode 100755
index 0000000..582442b
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmat_scroll.h
@@ -0,0 +1,69 @@
+/** \file
+ * \brief iupmatrix control
+ * scrolling.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IUPMAT_SCROLL_H
+#define __IUPMAT_SCROLL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int iupMatrixScroll_CB(Ihandle* ih, int action, float x, float y);
+
+void iupMatrixScrollToVisible(Ihandle* ih, int lin, int col);
+
+typedef void (*iupMatrixScrollMoveF)(Ihandle* ih, int mode, float pos, int m);
+void iupMatrixScrollMoveCursor(iupMatrixScrollMoveF func, Ihandle* ih, int mode, float pos, int m);
+
+/* Used only by the macros bellow */
+void iupMatrixScrollHome (Ihandle* ih, int, float, int);
+void iupMatrixScrollEnd (Ihandle* ih, int, float, int);
+void iupMatrixScrollLeftUp (Ihandle* ih, int, float, int);
+void iupMatrixScrollRightDown (Ihandle* ih, int, float, int);
+void iupMatrixScrollPgLeftUp (Ihandle* ih, int, float, int);
+void iupMatrixScrollPgRightDown(Ihandle* ih, int, float, int);
+void iupMatrixScrollPos (Ihandle* ih, int, float, int);
+void iupMatrixScrollCr (Ihandle* ih, int, float, int);
+
+/* Mode used to "walk" inside the matrix.
+ It shows if the movement request was from the scrollbar or from a key.
+ Possible values for the "mode" parameter of the iupMatrixScrollMoveCursor function.
+ */
+#define IMAT_SCROLLBAR 0
+#define IMAT_SCROLLKEY 1
+
+/* Macros to help during the call of iupMatrixScrollMoveCursor function */
+
+/* used in the keyboard processing module */
+#define iupMatrixScrollKeyHome(ih) iupMatrixScrollMoveCursor(iupMatrixScrollHome , ih, IMAT_SCROLLKEY, 0, 0)
+#define iupMatrixScrollKeyEnd(ih) iupMatrixScrollMoveCursor(iupMatrixScrollEnd , ih, IMAT_SCROLLKEY, 0, 0)
+#define iupMatrixScrollKeyPgUp(ih) iupMatrixScrollMoveCursor(iupMatrixScrollPgLeftUp , ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_LIN)
+#define iupMatrixScrollKeyPgDown(ih) iupMatrixScrollMoveCursor(iupMatrixScrollPgRightDown, ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_LIN)
+#define iupMatrixScrollKeyDown(ih) iupMatrixScrollMoveCursor(iupMatrixScrollRightDown , ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_LIN)
+#define iupMatrixScrollKeyRight(ih) iupMatrixScrollMoveCursor(iupMatrixScrollRightDown , ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_COL)
+#define iupMatrixScrollKeyUp(ih) iupMatrixScrollMoveCursor(iupMatrixScrollLeftUp , ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_LIN)
+#define iupMatrixScrollKeyLeft(ih) iupMatrixScrollMoveCursor(iupMatrixScrollLeftUp , ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_COL)
+#define iupMatrixScrollKeyCr(ih) iupMatrixScrollMoveCursor(iupMatrixScrollCr , ih, IMAT_SCROLLKEY, 0, 0)
+
+/* Used by the scrollbar callback only */
+#define iupMatrixScrollUp(ih) iupMatrixScrollMoveCursor(iupMatrixScrollLeftUp , ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_LIN)
+#define iupMatrixScrollLeft(ih) iupMatrixScrollMoveCursor(iupMatrixScrollLeftUp , ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_COL)
+#define iupMatrixScrollDown(ih) iupMatrixScrollMoveCursor(iupMatrixScrollRightDown , ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_LIN)
+#define iupMatrixScrollRight(ih) iupMatrixScrollMoveCursor(iupMatrixScrollRightDown , ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_COL)
+#define iupMatrixScrollPgUp(ih) iupMatrixScrollMoveCursor(iupMatrixScrollPgLeftUp , ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_LIN)
+#define iupMatrixScrollPgLeft(ih) iupMatrixScrollMoveCursor(iupMatrixScrollPgLeftUp , ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_COL)
+#define iupMatrixScrollPgDown(ih) iupMatrixScrollMoveCursor(iupMatrixScrollPgRightDown, ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_LIN)
+#define iupMatrixScrollPgRight(ih) iupMatrixScrollMoveCursor(iupMatrixScrollPgRightDown, ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_COL)
+#define iupMatrixScrollPosVer(ih, y) iupMatrixScrollMoveCursor(iupMatrixScrollPos , ih, IMAT_SCROLLBAR, y, IMAT_PROCESS_LIN)
+#define iupMatrixScrollPosHor(ih, x) iupMatrixScrollMoveCursor(iupMatrixScrollPos , ih, IMAT_SCROLLBAR, x, IMAT_PROCESS_COL)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srccontrols/matrix/iupmatrix.c b/iup/srccontrols/matrix/iupmatrix.c
new file mode 100755
index 0000000..20d618d
--- /dev/null
+++ b/iup/srccontrols/matrix/iupmatrix.c
@@ -0,0 +1,980 @@
+/** \file
+ * \brief IupMatrix control core
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupcontrols.h"
+
+#include <cd.h>
+#include <cdiup.h>
+#include <cddbuf.h>
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_drvfont.h"
+#include "iup_stdcontrols.h"
+#include "iup_controls.h"
+#include "iup_register.h"
+
+#include "iupmat_def.h"
+#include "iupmat_getset.h"
+#include "iupmat_scroll.h"
+#include "iupmat_aux.h"
+#include "iupmat_mem.h"
+#include "iupmat_mouse.h"
+#include "iupmat_focus.h"
+#include "iupmat_key.h"
+#include "iupmat_numlc.h"
+#include "iupmat_colres.h"
+#include "iupmat_mark.h"
+#include "iupmat_edit.h"
+#include "iupmat_draw.h"
+
+
+int iupMatrixIsValid(Ihandle* ih, int check_cells)
+{
+ if (!ih->data->cddbuffer)
+ return 0;
+ if (check_cells && ((ih->data->columns.num == 0) || (ih->data->lines.num == 0)))
+ return 0;
+ return 1;
+}
+
+static int iMatrixSetOriginAttrib(Ihandle* ih, const char* value)
+{
+ int lin = -1, col = -1;
+
+ /* Get the parameters. The '*' indicates that want to keep the table in
+ the same line or column */
+ if (iupStrToIntInt(value, &lin, &col, ':') != 2)
+ {
+ if (lin != -1)
+ col = ih->data->columns.first;
+ else if (col != -1)
+ lin = ih->data->lines.first;
+ else
+ return 0;
+ }
+
+ /* Check if the cell exists */
+ if (!iupMatrixCheckCellPos(ih, lin, col))
+ return 0;
+
+ /* Can not be a title */
+ if((lin < 1) || (col < 1))
+ return 0;
+
+ ih->data->columns.first = col;
+ ih->data->lines.first = lin;
+
+ iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_COL);
+ iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_LIN);
+
+ iupMatrixDraw(ih, 1);
+ return 0;
+}
+
+static int iMatrixSetShowAttrib(Ihandle* ih, const char* value)
+{
+ int lin = -1, col = -1;
+
+ /* Get the parameters. The '*' indicates that want to keep the table in
+ the same line or column */
+ if (iupStrToIntInt(value, &lin, &col, ':') != 2)
+ {
+ if (lin != -1)
+ col = ih->data->columns.first;
+ else if (col != -1)
+ lin = ih->data->lines.first;
+ else
+ return 0;
+ }
+
+ /* Check if the cell exists */
+ if (!iupMatrixCheckCellPos(ih, lin, col))
+ return 0;
+
+ /* Can not be a title */
+ if((lin < 1) || (col < 1))
+ return 0;
+
+ if (!iupMatrixAuxIsCellFullVisible(ih, lin, col))
+ iupMatrixScrollToVisible(ih, lin, col);
+
+ return 0;
+}
+
+static char* iMatrixGetOriginAttrib(Ihandle* ih)
+{
+ char* val = iupStrGetMemory(100);
+ sprintf(val, "%d:%d", ih->data->lines.first, ih->data->columns.first);
+ return val;
+}
+
+static int iMatrixSetFocusCellAttrib(Ihandle* ih, const char* value)
+{
+ int lin = 0, col = 0;
+ if (iupStrToIntInt(value, &lin, &col, ':') == 2)
+ {
+ if (!iupMatrixCheckCellPos(ih, lin, col))
+ return 0;
+
+ if (lin <= 0 || col <= 0) /* title can NOT have the focus */
+ return 0;
+ if (lin >= ih->data->lines.num || col >= ih->data->columns.num)
+ return 0;
+
+ iupMatrixFocusSet(ih, lin, col);
+
+ if (ih->data->cddbuffer)
+ iupMatrixDrawUpdate(ih);
+ }
+
+ return 0;
+}
+
+static char* iMatrixGetFocusCellAttrib(Ihandle* ih)
+{
+ char* str = iupStrGetMemory(100);
+ sprintf(str, "%d:%d", ih->data->lines.focus_cell, ih->data->columns.focus_cell);
+ return str;
+}
+
+static int iMatrixSetUseTitleSizeAttrib(Ihandle* ih, const char* value)
+{
+ /* can be set only before map */
+ if (ih->handle)
+ return 0;
+
+ if (iupStrBoolean(value))
+ ih->data->use_title_size = 1;
+ else
+ ih->data->use_title_size = 0;
+
+ return 0;
+}
+
+static char* iMatrixGetUseTitleSizeAttrib(Ihandle* ih)
+{
+ if (ih->data->use_title_size)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iMatrixSetValueAttrib(Ihandle* ih, const char* value)
+{
+ if (IupGetInt(ih->data->datah, "VISIBLE"))
+ IupStoreAttribute(ih->data->datah, "VALUE", value);
+ else
+ iupMatrixCellSetValue(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, value);
+ return 0;
+}
+
+static char* iMatrixGetValueAttrib(Ihandle* ih)
+{
+ if (IupGetInt(ih->data->datah, "VISIBLE"))
+ return iupMatrixEditGetValue(ih);
+ else
+ return iupMatrixCellGetValue(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell);
+}
+
+static int iMatrixSetCaretAttrib(Ihandle* ih, const char* value)
+{
+ IupStoreAttribute(ih->data->texth, "CARET", value);
+ return 1;
+}
+
+static char* iMatrixGetCaretAttrib(Ihandle* ih)
+{
+ return IupGetAttribute(ih->data->texth, "CARET");
+}
+
+static int iMatrixSetSelectionAttrib(Ihandle* ih, const char* value)
+{
+ IupStoreAttribute(ih->data->texth, "SELECTION", value);
+ return 1;
+}
+
+static char* iMatrixGetSelectionAttrib(Ihandle* ih)
+{
+ return IupGetAttribute(ih->data->texth, "SELECTION");
+}
+
+static int iMatrixSetMultilineAttrib(Ihandle* ih, const char* value)
+{
+ IupStoreAttribute(ih->data->texth, "MULTILINE", value);
+ if (iupStrBoolean(value))
+ IupSetAttribute(ih->data->texth, "SCROLLBAR", "NO");
+ return 1;
+}
+
+static char* iMatrixGetMultilineAttrib(Ihandle* ih)
+{
+ return IupGetAttribute(ih->data->texth, "MULTILINE");
+}
+
+static char* iMatrixGetNumLinAttrib(Ihandle* ih)
+{
+ char* num = iupStrGetMemory(100);
+ sprintf(num, "%d", ih->data->lines.num-1);
+ return num;
+}
+
+static char* iMatrixGetNumColAttrib(Ihandle* ih)
+{
+ char* num = iupStrGetMemory(100);
+ sprintf(num, "%d", ih->data->columns.num-1);
+ return num;
+}
+
+static int iMatrixSetMarkModeAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "CELL"))
+ ih->data->mark_mode = IMAT_MARK_CELL;
+ else if (iupStrEqualNoCase(value, "LIN"))
+ ih->data->mark_mode = IMAT_MARK_LIN;
+ else if (iupStrEqualNoCase(value, "COL"))
+ ih->data->mark_mode = IMAT_MARK_COL;
+ else if(iupStrEqualNoCase(value, "LINCOL"))
+ ih->data->mark_mode = IMAT_MARK_LINCOL;
+ else
+ ih->data->mark_mode = IMAT_MARK_NO;
+
+ if (ih->handle)
+ {
+ iupMatrixMarkClearAll(ih, 0);
+ iupMatrixDraw(ih, 1);
+ }
+ return 0;
+}
+
+static char* iMatrixGetMarkModeAttrib(Ihandle* ih)
+{
+ char* mark2str[] = {"NO", "LIN", "COL", "LINCOL", "CELL"};
+ return mark2str[ih->data->mark_mode];
+}
+
+static int iMatrixSetMarkAreaAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "NOT_CONTINUOUS"))
+ ih->data->mark_continuous = 0;
+ else
+ ih->data->mark_continuous = 1;
+
+ if (ih->handle)
+ {
+ iupMatrixMarkClearAll(ih, 0);
+ iupMatrixDraw(ih, 1);
+ }
+ return 0;
+}
+
+static char* iMatrixGetMarkAreaAttrib(Ihandle* ih)
+{
+ if (ih->data->mark_continuous)
+ return "CONTINUOUS";
+ else
+ return "NOT_CONTINUOUS";
+}
+
+static int iMatrixSetMarkMultipleAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ ih->data->mark_multiple = 1;
+ else
+ ih->data->mark_multiple = 0;
+
+ if (ih->handle)
+ {
+ iupMatrixMarkClearAll(ih, 0);
+ iupMatrixDraw(ih, 1);
+ }
+ return 0;
+}
+
+static char* iMatrixGetMarkMultipleAttrib(Ihandle* ih)
+{
+ if (ih->data->mark_multiple)
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iMatrixSetEditModeAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ iupMatrixEditShow(ih);
+ else
+ {
+ iupMatrixEditHide(ih);
+ iupMatrixDrawUpdate(ih);
+ }
+ return 1;
+}
+
+static char* iMatrixGetEditModeAttrib(Ihandle* ih)
+{
+ if (iupMatrixEditIsVisible(ih))
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iMatrixSetActiveAttrib(Ihandle* ih, const char* value)
+{
+ iupBaseSetActiveAttrib(ih, value);
+ iupMatrixDraw(ih, 1);
+ return 0;
+}
+
+static int iMatrixSetWidthAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int col = 0;
+ if (iupStrToInt(name_id, &col))
+ {
+ (void)value;
+ ih->data->need_calcsize = 1;
+ IupUpdate(ih);
+ }
+ return 1;
+}
+
+static char* iMatrixGetWidthAttrib(Ihandle* ih, const char* name_id)
+{
+ int col;
+ if (iupStrToInt(name_id, &col))
+ return iupMatrixGetSize(ih, col, IMAT_PROCESS_COL, 0);
+ return NULL;
+}
+
+static int iMatrixSetHeightAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int lin = 0;
+ if (iupStrToInt(name_id, &lin))
+ {
+ (void)value;
+ ih->data->need_calcsize = 1;
+ IupUpdate(ih);
+ }
+ return 1;
+}
+
+static char* iMatrixGetHeightAttrib(Ihandle* ih, const char* name_id)
+{
+ int lin;
+ if (iupStrToInt(name_id, &lin))
+ return iupMatrixGetSize(ih, lin, IMAT_PROCESS_LIN, 0);
+ return NULL;
+}
+
+static int iMatrixSetRasterWidthAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int col = 0;
+ if (iupStrToInt(name_id, &col))
+ {
+ (void)value;
+ ih->data->need_calcsize = 1;
+ IupUpdate(ih);
+ }
+ return 1;
+}
+
+static char* iMatrixGetRasterWidthAttrib(Ihandle* ih, const char* name_id)
+{
+ int col;
+ if (iupStrToInt(name_id, &col))
+ return iupMatrixGetSize(ih, col, IMAT_PROCESS_COL, 1);
+ return NULL;
+}
+
+static int iMatrixSetRasterHeightAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int lin = 0;
+ if (iupStrToInt(name_id, &lin))
+ {
+ (void)value;
+ ih->data->need_calcsize = 1;
+ IupUpdate(ih);
+ }
+ return 1;
+}
+
+static char* iMatrixGetRasterHeightAttrib(Ihandle* ih, const char* name_id)
+{
+ int lin;
+ if (iupStrToInt(name_id, &lin))
+ return iupMatrixGetSize(ih, lin, IMAT_PROCESS_LIN, 1);
+ return NULL;
+}
+
+static char* iMatrixGetAlignmentAttrib(Ihandle* ih, const char* name_id)
+{
+ char* align;
+ char str[50];
+ sprintf(str, "ALIGNMENT%s", name_id);
+ align = iupAttribGet(ih, str);
+ if (!align)
+ {
+ int col;
+ if (iupStrToInt(name_id, &col))
+ {
+ if (col == 0)
+ return "ALEFT";
+ else
+ return "ACENTER";
+ }
+ }
+
+ return NULL;
+}
+
+static int iMatrixSetIdValueAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ int lin = 0, col = 0;
+ if (iupStrToIntInt(name_id, &lin, &col, ':') == 2)
+ {
+ if (iupMatrixCheckCellPos(ih, lin, col))
+ iupMatrixCellSetValue(ih, lin, col, value);
+ }
+ return 0;
+}
+
+static char* iMatrixGetIdValueAttrib(Ihandle* ih, const char* name_id)
+{
+ int lin, col;
+ if (iupStrToIntInt(name_id, &lin, &col, ':') == 2)
+ {
+ if (iupMatrixCheckCellPos(ih, lin, col))
+ return iupMatrixCellGetValue(ih, lin, col);
+ }
+ return NULL;
+}
+
+static int iMatrixSetFlagsAttrib(Ihandle* ih, const char* name_id, const char* value, unsigned char attr)
+{
+ if (name_id[0]==0)
+ return 1;
+ if (name_id[0]=='*' && name_id[1]==':')
+ {
+ int col;
+ name_id += 2; /* skip '*' and ':' */
+ if (iupStrToInt(name_id, &col))
+ iupMatrixCellSetFlag(ih, -1, col, attr, value!=NULL);
+ }
+ else if (name_id[strlen(name_id)-1]=='*')
+ {
+ int lin;
+ if (iupStrToInt(name_id, &lin))
+ iupMatrixCellSetFlag(ih, lin, -1, attr, value!=NULL);
+ }
+ else
+ {
+ int lin, col;
+ if (iupStrToIntInt(name_id, &lin, &col, ':') == 2)
+ iupMatrixCellSetFlag(ih, lin, col, attr, value!=NULL);
+ }
+ return 1;
+}
+
+static int iMatrixSetBgColorAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ return iMatrixSetFlagsAttrib(ih, name_id, value, IUPMAT_BGCOLOR);
+}
+
+static int iMatrixSetFgColorAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ return iMatrixSetFlagsAttrib(ih, name_id, value, IUPMAT_FGCOLOR);
+}
+
+static int iMatrixSetFontAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ return iMatrixSetFlagsAttrib(ih, name_id, value, IUPMAT_FONT);
+}
+
+static int iMatrixSetFrameHorizColorAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ ih->data->checkframecolor = value!=NULL;
+ return iMatrixSetFlagsAttrib(ih, name_id, value, IUPMAT_FRAMEHCOLOR);
+}
+
+static int iMatrixSetFrameVertColorAttrib(Ihandle* ih, const char* name_id, const char* value)
+{
+ ih->data->checkframecolor = value!=NULL;
+ return iMatrixSetFlagsAttrib(ih, name_id, value, IUPMAT_FRAMEVCOLOR);
+}
+
+static char* iMatrixGetFontAttrib(Ihandle* ih, const char* name_id)
+{
+ if (name_id[0]==0)
+ return iupGetFontAttrib(ih);
+ return NULL;
+}
+
+static char* iMatrixGetBgColorAttrib(Ihandle* ih, const char* name_id)
+{
+ if (name_id[0]==0)
+ {
+ /* check the hash table */
+ char *color = iupAttribGet(ih, "BGCOLOR");
+
+ /* If not defined return the default for normal cells */
+ if (!color)
+ color = IupGetGlobal("TXTBGCOLOR");
+
+ return color;
+ }
+ return NULL;
+}
+
+static char* iMatrixGetNumColVisibleAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(50);
+ sprintf(buffer, "%d", ih->data->columns.last - ih->data->columns.first);
+ return buffer;
+}
+
+static char* iMatrixGetNumLinVisibleAttrib(Ihandle* ih)
+{
+ char* buffer = iupStrGetMemory(50);
+ sprintf(buffer, "%d", ih->data->lines.last - ih->data->lines.first);
+ return buffer;
+}
+
+static char* iMatrixGetMaskDataAttrib(Ihandle* ih)
+{
+ /* Used only by the OLD iupmask API */
+ if (IupGetInt(ih->data->datah, "VISIBLE"))
+ return IupGetAttribute(ih->data->datah,"OLD_MASK_DATA");
+ else
+ return NULL;
+}
+
+
+/*****************************************************************************/
+/* Callbacks registered to the Canvas */
+/*****************************************************************************/
+
+
+static int iMatrixResize_CB(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ {
+ /* update canvas size */
+ cdCanvasActivate(ih->data->cdcanvas);
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+ }
+
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update size */
+ cdCanvasActivate(ih->data->cddbuffer);
+ cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL);
+
+ iupMatrixEditForceHidden(ih);
+
+ ih->data->need_calcsize = 1;
+ iupMatrixDraw(ih, 0);
+
+ return IUP_DEFAULT;
+}
+
+static int iMatrixRedraw_CB(Ihandle* ih)
+{
+ if (!ih->data->cddbuffer)
+ return IUP_DEFAULT;
+
+ if (!ih->data->first_redraw)
+ {
+ ih->data->first_redraw = 1;
+ iupMatrixDraw(ih, 0);
+ }
+
+ iupMatrixDrawUpdate(ih);
+
+ return IUP_DEFAULT;
+}
+
+
+/***************************************************************************/
+
+
+static int iMatrixCreateMethod(Ihandle* ih, void **params)
+{
+ if (params && params[0])
+ {
+ char* action_cb = (char*)params[0];
+ iupAttribStoreStr(ih, "ACTION_CB", action_cb);
+ }
+
+ /* free the data allocated by IupCanvas */
+ if (ih->data) free(ih->data);
+ ih->data = iupALLOCCTRLDATA();
+
+ /* change the IupCanvas default values */
+ iupAttribSetStr(ih, "SCROLLBAR", "YES");
+ iupAttribSetStr(ih, "BORDER", "NO");
+ iupAttribSetStr(ih, "CURSOR", "IupMatrixCrossCursor");
+
+ /* IupCanvas callbacks */
+ IupSetCallback(ih, "ACTION", (Icallback)iMatrixRedraw_CB);
+ IupSetCallback(ih, "RESIZE_CB", (Icallback)iMatrixResize_CB);
+ IupSetCallback(ih, "BUTTON_CB", (Icallback)iupMatrixMouseButton_CB);
+ IupSetCallback(ih, "MOTION_CB", (Icallback)iupMatrixMouseMove_CB);
+ IupSetCallback(ih, "KEYPRESS_CB", (Icallback)iupMatrixKeyPress_CB);
+ IupSetCallback(ih, "FOCUS_CB", (Icallback)iupMatrixFocus_CB);
+ IupSetCallback(ih, "SCROLL_CB", (Icallback)iupMatrixScroll_CB);
+
+ /* Create the edit fields */
+ iupMatrixEditCreate(ih);
+
+ /* defaults */
+ ih->data->datah = ih->data->texth;
+ ih->data->mark_continuous = 1;
+ ih->data->columns.num = 1;
+ ih->data->lines.num = 1;
+ ih->data->need_calcsize = 1;
+ ih->data->lines.first = 1;
+ ih->data->columns.first = 1;
+ ih->data->lines.focus_cell = 1;
+ ih->data->columns.focus_cell = 1;
+ ih->data->mark_lin1 = -1;
+ ih->data->mark_col1 = -1;
+ ih->data->mark_lin2 = -1;
+ ih->data->mark_col2 = -1;
+ ih->data->use_title_size = 0;
+
+ return IUP_NOERROR;
+}
+
+static int iMatrixMapMethod(Ihandle* ih)
+{
+ ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih);
+ if (!ih->data->cdcanvas)
+ return IUP_ERROR;
+
+ /* this can fail if canvas size is zero */
+ ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas);
+
+ if (IupGetCallback(ih, "VALUE_CB"))
+ {
+ ih->data->callback_mode = 1;
+
+ if (!IupGetCallback(ih, "VALUE_EDIT_CB"))
+ iupAttribSetStr(ih, "READONLY", "YES");
+ }
+
+ iupMatrixMemAlloc(ih);
+
+ return IUP_NOERROR;
+}
+
+static void iMatrixUnMapMethod(Ihandle* ih)
+{
+ if(ih->data->cddbuffer)
+ {
+ cdKillCanvas(ih->data->cddbuffer);
+ ih->data->cddbuffer = NULL;
+ }
+
+ if(ih->data->cdcanvas)
+ {
+ cdKillCanvas(ih->data->cdcanvas);
+ ih->data->cdcanvas = NULL;
+ }
+
+ iupMatrixMemRelease(ih);
+}
+
+static int iMatrixGetNaturalWidth(Ihandle* ih)
+{
+ int width = 0, num, col;
+
+ num = iupAttribGetInt(ih, "NUMCOL_VISIBLE")+1; /* include the title column */
+
+ if (iupAttribGetInt(ih, "NUMCOL_VISIBLE_LAST"))
+ {
+ int start = ih->data->columns.num - (num-1); /* title is computed apart */
+ if (start<1) start=1;
+ width += iupMatrixAuxGetColumnWidth(ih, 0); /* compute title */
+ for(col = start; col < ih->data->columns.num; col++)
+ width += iupMatrixAuxGetColumnWidth(ih, col);
+ }
+ else
+ {
+ if (num > ih->data->columns.num)
+ num = ih->data->columns.num;
+ for(col = 0; col < num; col++)
+ width += iupMatrixAuxGetColumnWidth(ih, col);
+ }
+
+ return width;
+}
+
+static int iMatrixGetNaturalHeight(Ihandle* ih)
+{
+ int height = 0, num, lin;
+
+ num = iupAttribGetInt(ih, "NUMLIN_VISIBLE")+1; /* include the title line */
+
+ if (iupAttribGetInt(ih, "NUMLIN_VISIBLE_LAST"))
+ {
+ int start = ih->data->lines.num - (num-1); /* title is computed apart */
+ if (start<1) start=1;
+ height += iupMatrixAuxGetLineHeight(ih, 0); /* compute title */
+ for(lin = start; lin < ih->data->lines.num; lin++)
+ height += iupMatrixAuxGetLineHeight(ih, lin);
+ }
+ else
+ {
+ if (num > ih->data->lines.num)
+ num = ih->data->lines.num;
+ for(lin = 0; lin < num; lin++)
+ height += iupMatrixAuxGetLineHeight(ih, lin);
+ }
+
+ return height;
+}
+
+static void iMatrixComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ int natural_w = 0, natural_h = 0;
+ (void)expand; /* unset if not a container */
+
+ if (!ih->handle)
+ ih->data->canvas.sb = iupBaseGetScrollbar(ih);
+
+ /* add scrollbar */
+ if (ih->data->canvas.sb)
+ {
+ int sb_size = iupdrvGetScrollbarSize();
+ if (ih->data->canvas.sb & IUP_SB_HORIZ)
+ natural_w += sb_size;
+ if (ih->data->canvas.sb & IUP_SB_VERT)
+ natural_h += sb_size;
+ }
+
+ *w = natural_w + iMatrixGetNaturalWidth(ih);
+ *h = natural_h + iMatrixGetNaturalHeight(ih);
+}
+
+static void iMatrixCreateCursor(void)
+{
+ Ihandle *imgcursor;
+ unsigned char matrx_img_cur_excel[15*15] =
+ {
+ 0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,
+ 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0,
+ 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0,
+ 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0,
+ 1,1,1,1,1,2,2,2,2,1,1,1,1,1,0,
+ 1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,
+ 1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,
+ 1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,
+ 1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,
+ 0,1,1,1,1,2,2,2,2,1,1,1,1,1,1,
+ 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0,
+ 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0,
+ 0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,
+ 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ };
+
+ imgcursor = IupImage(15, 15, matrx_img_cur_excel);
+ IupSetAttribute(imgcursor, "0", "BGCOLOR");
+ IupSetAttribute(imgcursor, "1", "0 0 0");
+ IupSetAttribute(imgcursor, "2", "255 255 255");
+ IupSetAttribute(imgcursor, "HOTSPOT", "7:7"); /* Centered Hotspot */
+ IupSetHandle("IupMatrixCrossCursor", imgcursor);
+ IupSetHandle("matrx_img_cur_excel", imgcursor); /* for backward compatibility */
+}
+
+Iclass* iupMatrixGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupCanvasGetClass());
+
+ ic->name = "matrix";
+ ic->format = "A"; /* one optional callback name */
+ ic->nativetype = IUP_TYPECANVAS;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+ ic->has_attrib_id = 1; /* has attributes with IDs that must be parsed */
+
+ /* Class functions */
+ ic->Create = iMatrixCreateMethod;
+ ic->Map = iMatrixMapMethod;
+ ic->UnMap = iMatrixUnMapMethod;
+ ic->ComputeNaturalSize = iMatrixComputeNaturalSizeMethod;
+
+ /* Do not need to set base attributes because they are inherited from IupCanvas */
+
+ /* IupMatrix Callbacks */
+ /* --- Interaction --- */
+ iupClassRegisterCallback(ic, "ACTION_CB", "iiiis");
+ iupClassRegisterCallback(ic, "CLICK_CB", "iis");
+ iupClassRegisterCallback(ic, "RELEASE_CB", "iis");
+ iupClassRegisterCallback(ic, "MOUSEMOVE_CB", "ii");
+ iupClassRegisterCallback(ic, "ENTERITEM_CB", "ii");
+ iupClassRegisterCallback(ic, "LEAVEITEM_CB", "ii");
+ iupClassRegisterCallback(ic, "SCROLLTOP_CB", "ii");
+ /* --- Drawing --- */
+ iupClassRegisterCallback(ic, "BGCOLOR_CB", "iiIII");
+ iupClassRegisterCallback(ic, "FGCOLOR_CB", "iiIII");
+ iupClassRegisterCallback(ic, "FONT_CB", "ii=s");
+ iupClassRegisterCallback(ic, "DRAW_CB", "iiiiii");
+ iupClassRegisterCallback(ic, "DROPCHECK_CB", "ii");
+ /* --- Editing --- */
+ iupClassRegisterCallback(ic, "DROP_CB", "nii");
+ iupClassRegisterCallback(ic, "DROPSELECT_CB", "iinsii");
+ iupClassRegisterCallback(ic, "EDITION_CB", "iii");
+ /* --- Callback Mode --- */
+ iupClassRegisterCallback(ic, "VALUE_CB", "ii=s");
+ iupClassRegisterCallback(ic, "VALUE_EDIT_CB", "iis");
+ iupClassRegisterCallback(ic, "MARK_CB", "ii");
+ iupClassRegisterCallback(ic, "MARKEDIT_CB", "iii");
+
+ /* IupMatrix Attributes - CELL */
+ iupClassRegisterAttributeId(ic, "IDVALUE", iMatrixGetIdValueAttrib, iMatrixSetIdValueAttrib, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FOCUS_CELL", iMatrixGetFocusCellAttrib, iMatrixSetFocusCellAttrib, IUPAF_SAMEASSYSTEM, "1:1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); /* can be NOT mapped */
+ iupClassRegisterAttribute(ic, "VALUE", iMatrixGetValueAttrib, iMatrixSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "FGCOLOR", NULL, iMatrixSetFgColorAttrib, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttributeId(ic, "FONT", iMatrixGetFontAttrib, iMatrixSetFontAttrib, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttributeId(ic, "FRAMEHORIZCOLOR", NULL, iMatrixSetFrameHorizColorAttrib, IUPAF_NOT_MAPPED);
+ iupClassRegisterAttributeId(ic, "FRAMEVERTCOLOR", NULL, iMatrixSetFrameVertColorAttrib, IUPAF_NOT_MAPPED);
+
+ /* IupMatrix Attributes - COLUMN */
+ iupClassRegisterAttributeId(ic, "ALIGNMENT", iMatrixGetAlignmentAttrib, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "SORTSIGN", NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* IupMatrix Attributes - SIZE */
+ iupClassRegisterAttribute(ic, "NUMLIN", iMatrixGetNumLinAttrib, iupMatrixSetNumLinAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "NUMCOL", iMatrixGetNumColAttrib, iupMatrixSetNumColAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "NUMLIN_VISIBLE", iMatrixGetNumLinVisibleAttrib, NULL, IUPAF_SAMEASSYSTEM, "3", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "NUMCOL_VISIBLE", iMatrixGetNumColVisibleAttrib, NULL, IUPAF_SAMEASSYSTEM, "4", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "NUMLIN_VISIBLE_LAST", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "NUMCOL_VISIBLE_LAST", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "WIDTHDEF", NULL, NULL, IUPAF_SAMEASSYSTEM, "80", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "HEIGHTDEF", NULL, NULL, IUPAF_SAMEASSYSTEM, "8", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "WIDTH", iMatrixGetWidthAttrib, iMatrixSetWidthAttrib, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "HEIGHT", iMatrixGetHeightAttrib, iMatrixSetHeightAttrib, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "RASTERWIDTH", iMatrixGetRasterWidthAttrib, iMatrixSetRasterWidthAttrib, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "RASTERHEIGHT", iMatrixGetRasterHeightAttrib, iMatrixSetRasterHeightAttrib, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* IupMatrix Attributes - MARK */
+ iupClassRegisterAttribute(ic, "MARKED", iupMatrixGetMarkedAttrib, iupMatrixSetMarkedAttrib, NULL, NULL, IUPAF_NO_INHERIT); /* noticed that MARKED must be mapped */
+ iupClassRegisterAttributeId(ic, "MARK", iupMatrixGetMarkAttrib, iupMatrixSetMarkAttrib, IUPAF_NO_INHERIT); /* noticed that for MARK the matrix must be mapped */
+ iupClassRegisterAttribute(ic, "MARK_MODE", iMatrixGetMarkModeAttrib, iMatrixSetMarkModeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MARKMODE", iMatrixGetMarkModeAttrib, iMatrixSetMarkModeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AREA", iMatrixGetMarkAreaAttrib, iMatrixSetMarkAreaAttrib, IUPAF_SAMEASSYSTEM, "CONTINUOUS", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MARKAREA", iMatrixGetMarkAreaAttrib, iMatrixSetMarkAreaAttrib, IUPAF_SAMEASSYSTEM, "CONTINUOUS", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MULTIPLE", iMatrixGetMarkMultipleAttrib, iMatrixSetMarkMultipleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MARKMULTIPLE", iMatrixGetMarkMultipleAttrib, iMatrixSetMarkMultipleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* IupMatrix Attributes - ACTION (only mapped) */
+ iupClassRegisterAttribute(ic, "ADDLIN", NULL, iupMatrixSetAddLinAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DELLIN", NULL, iupMatrixSetDelLinAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ADDCOL", NULL, iupMatrixSetAddColAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DELCOL", NULL, iupMatrixSetDelColAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "ORIGIN", iMatrixGetOriginAttrib, iMatrixSetOriginAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SHOW", NULL, iMatrixSetShowAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "EDIT_MODE", iMatrixGetEditModeAttrib, iMatrixSetEditModeAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "REDRAW", NULL, iupMatrixDrawSetRedrawAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+
+ /* IupMatrix Attributes - EDITION */
+ iupClassRegisterAttribute(ic, "CARET", iMatrixGetCaretAttrib, iMatrixSetCaretAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "SELECTION", iMatrixGetSelectionAttrib, iMatrixSetSelectionAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MULTILINE", iMatrixGetMultilineAttrib, iMatrixSetMultilineAttrib, NULL, NULL, IUPAF_NO_INHERIT);
+ iupClassRegisterAttributeId(ic, "MASK", NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* IupMatrix Attributes - GENERAL */
+ iupClassRegisterAttribute(ic, "USETITLESIZE", iMatrixGetUseTitleSizeAttrib, iMatrixSetUseTitleSizeAttrib, IUPAF_SAMEASSYSTEM, "NO", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "FRAMECOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "100 100 100", IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "READONLY", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "RESIZEMATRIX", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "HIDEFOCUS", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ /* Overwrite IupCanvas Attributes */
+ iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iMatrixSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT);
+ iupClassRegisterAttributeId(ic, "BGCOLOR", iMatrixGetBgColorAttrib, iMatrixSetBgColorAttrib, IUPAF_NOT_MAPPED);
+
+ /* IupMatrix Attributes - MASK */
+ iupClassRegisterAttribute(ic, "OLD_MASK_DATA", iMatrixGetMaskDataAttrib, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ if (!IupGetHandle("IupMatrixCrossCursor"))
+ iMatrixCreateCursor();
+
+ return ic;
+}
+
+
+/*****************************************************************************************************/
+
+
+Ihandle* IupMatrix(const char* action)
+{
+ void *params[2];
+ params[0] = (void*)action;
+ params[1] = NULL;
+ return IupCreatev("matrix", params);
+}
+
+void IupMatSetAttribute(Ihandle* ih, const char* a, int l, int c, char* v)
+{
+ char* attr = iupStrGetMemory(100);
+ sprintf(attr, "%s%d:%d", a, l, c);
+ IupSetAttribute(ih, attr, v);
+}
+
+void IupMatStoreAttribute(Ihandle* ih, const char* a, int l, int c, char* v)
+{
+ char* attr = iupStrGetMemory(100);
+ sprintf(attr, "%s%d:%d", a, l, c);
+ IupStoreAttribute(ih, attr, v);
+}
+
+char* IupMatGetAttribute(Ihandle* ih, const char* a, int l, int c)
+{
+ char* attr = iupStrGetMemory(100);
+ sprintf(attr, "%s%d:%d", a, l, c);
+ return IupGetAttribute(ih, attr);
+}
+
+int IupMatGetInt(Ihandle* ih, const char* a, int l, int c)
+{
+ char* attr = iupStrGetMemory(100);
+ sprintf(attr, "%s%d:%d", a, l, c);
+ return IupGetInt(ih, attr);
+}
+
+float IupMatGetFloat(Ihandle* ih, const char* a, int l, int c)
+{
+ char* attr = iupStrGetMemory(100);
+ sprintf(attr, "%s%d:%d", a, l, c);
+ return IupGetFloat(ih, attr);
+}
+
+void IupMatSetfAttribute(Ihandle* ih, const char* a, int l, int c, char* f, ...)
+{
+ static char v[SHRT_MAX];
+ char* attr = iupStrGetMemory(100);
+ va_list arglist;
+ sprintf(attr, "%s%d:%d", a, l, c);
+ va_start(arglist, f);
+ vsprintf(v, f, arglist);
+ va_end(arglist);
+ IupStoreAttribute(ih, attr, v);
+}
diff --git a/iup/srcgl/Makefile b/iup/srcgl/Makefile
new file mode 100755
index 0000000..882d0d2
--- /dev/null
+++ b/iup/srcgl/Makefile
@@ -0,0 +1,6 @@
+
+.PHONY: do_all iupgl
+do_all: iupgl
+
+iupgl:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak
diff --git a/iup/srcgl/config.mak b/iup/srcgl/config.mak
new file mode 100755
index 0000000..49599a5
--- /dev/null
+++ b/iup/srcgl/config.mak
@@ -0,0 +1,20 @@
+PROJNAME = iup
+LIBNAME = iupgl
+OPT = YES
+
+ifdef DBG
+ DEFINES += IUP_ASSERT
+endif
+
+INCLUDES = ../include ../src
+LDIR = ../lib/$(TEC_UNAME)
+LIBS = iup
+
+USE_OPENGL = Yes
+
+ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ SRC = iup_glcanvas_win.c
+else
+ SRC = iup_glcanvas_x.c
+ USE_X11 = Yes
+endif
diff --git a/iup/srcgl/iup_glcanvas_win.c b/iup/srcgl/iup_glcanvas_win.c
new file mode 100755
index 0000000..06cb66b
--- /dev/null
+++ b/iup/srcgl/iup_glcanvas_win.c
@@ -0,0 +1,411 @@
+/** \file
+ * \brief iupgl control for Windows
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <windows.h>
+#include <GL/gl.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupgl.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+#include "iup_assert.h"
+#include "iup_register.h"
+
+
+struct _IcontrolData
+{
+ iupCanvas canvas; /* from IupCanvas (must reserve it) */
+ HWND window;
+ HDC device;
+ HGLRC context;
+ HPALETTE palette;
+ int is_owned_dc;
+};
+
+static int wGLCanvasDefaultResize_CB(Ihandle *ih, int width, int height)
+{
+ IupGLMakeCurrent(ih);
+ glViewport(0,0,width,height);
+ return IUP_DEFAULT;
+}
+
+static int wGLCanvasCreateMethod(Ihandle* ih, void** params)
+{
+ (void)params;
+ free(ih->data); /* allocated by the iCanvasCreateMethod of IupCanvas */
+ ih->data = iupALLOCCTRLDATA();
+ IupSetCallback(ih, "RESIZE_CB", (Icallback)wGLCanvasDefaultResize_CB);
+ return IUP_NOERROR;
+}
+
+static int wGLCreateContext(Ihandle* ih)
+{
+ Ihandle* ih_shared;
+ int number;
+ int isIndex = 0;
+ int pixelFormat;
+ PIXELFORMATDESCRIPTOR test_pfd;
+ PIXELFORMATDESCRIPTOR pfd = {
+ sizeof(PIXELFORMATDESCRIPTOR), /* size of this pfd */
+ 1, /* version number */
+ PFD_DRAW_TO_WINDOW | /* support window */
+ PFD_SUPPORT_OPENGL, /* support OpenGL */
+ PFD_TYPE_RGBA, /* RGBA type */
+ 24, /* 24-bit color depth */
+ 0, 0, 0, 0, 0, 0, /* color bits ignored */
+ 0, /* no alpha buffer */
+ 0, /* shift bit ignored */
+ 0, /* no accumulation buffer */
+ 0, 0, 0, 0, /* accum bits ignored */
+ 16, /* 32-bit z-buffer */
+ 0, /* no stencil buffer */
+ 0, /* no auxiliary buffer */
+ PFD_MAIN_PLANE, /* main layer */
+ 0, /* reserved */
+ 0, 0, 0 /* layer masks ignored */
+ };
+
+ /* the IupCanvas is already mapped, just initialize the OpenGL context */
+
+ /* double or single buffer */
+ if (iupStrEqualNoCase(iupAttribGetStr(ih,"BUFFER"), "DOUBLE"))
+ pfd.dwFlags |= PFD_DOUBLEBUFFER;
+
+ /* stereo */
+ if (iupAttribGetBoolean(ih,"STEREO"))
+ pfd.dwFlags |= PFD_STEREO;
+
+ /* rgba or index */
+ if (iupStrEqualNoCase(iupAttribGetStr(ih,"COLOR"), "INDEX"))
+ {
+ isIndex = 1;
+ pfd.iPixelType = PFD_TYPE_COLORINDEX;
+ pfd.cColorBits = 8; /* assume 8 bits when indexed */
+ number = iupAttribGetInt(ih,"BUFFER_SIZE");
+ if (number > 0) pfd.cColorBits = (BYTE)number;
+ }
+
+ /* red, green, blue bits */
+ number = iupAttribGetInt(ih,"RED_SIZE");
+ if (number > 0) pfd.cRedBits = (BYTE)number;
+ pfd.cRedShift = 0;
+
+ number = iupAttribGetInt(ih,"GREEN_SIZE");
+ if (number > 0) pfd.cGreenBits = (BYTE)number;
+ pfd.cGreenShift = pfd.cRedBits;
+
+ number = iupAttribGetInt(ih,"BLUE_SIZE");
+ if (number > 0) pfd.cBlueBits = (BYTE)number;
+ pfd.cBlueShift = pfd.cRedBits + pfd.cGreenBits;
+
+ number = iupAttribGetInt(ih,"ALPHA_SIZE");
+ if (number > 0) pfd.cAlphaBits = (BYTE)number;
+ pfd.cAlphaShift = pfd.cRedBits + pfd.cGreenBits + pfd.cBlueBits;
+
+ /* depth and stencil size */
+ number = iupAttribGetInt(ih,"DEPTH_SIZE");
+ if (number > 0) pfd.cDepthBits = (BYTE)number;
+
+ /* stencil */
+ number = iupAttribGetInt(ih,"STENCIL_SIZE");
+ if (number > 0) pfd.cStencilBits = (BYTE)number;
+
+ /* red, green, blue accumulation bits */
+ number = iupAttribGetInt(ih,"ACCUM_RED_SIZE");
+ if (number > 0) pfd.cAccumRedBits = (BYTE)number;
+
+ number = iupAttribGetInt(ih,"ACCUM_GREEN_SIZE");
+ if (number > 0) pfd.cAccumGreenBits = (BYTE)number;
+
+ number = iupAttribGetInt(ih,"ACCUM_BLUE_SIZE");
+ if (number > 0) pfd.cAccumBlueBits = (BYTE)number;
+
+ number = iupAttribGetInt(ih,"ACCUM_ALPHA_SIZE");
+ if (number > 0) pfd.cAccumAlphaBits = (BYTE)number;
+
+ pfd.cAccumBits = pfd.cAccumRedBits + pfd.cAccumGreenBits + pfd.cAccumBlueBits + pfd.cAccumAlphaBits;
+
+ /* get a device context */
+ {
+ LONG style = GetClassLong(ih->data->window, GCL_STYLE);
+ ih->data->is_owned_dc = (int) ((style & CS_OWNDC) || (style & CS_CLASSDC));
+ }
+
+ ih->data->device = GetDC(ih->data->window);
+ iupAttribSetStr(ih, "VISUAL", (char*)ih->data->device);
+
+ /* choose pixel format */
+ pixelFormat = ChoosePixelFormat(ih->data->device, &pfd);
+ if (pixelFormat == 0)
+ {
+ iupAttribSetStr(ih, "ERROR", "No appropriate pixel format.");
+ return IUP_NOERROR;
+ }
+ SetPixelFormat(ih->data->device,pixelFormat,&pfd);
+
+ /* create rendering context */
+ ih->data->context = wglCreateContext(ih->data->device);
+ if (!ih->data->context)
+ {
+ iupAttribSetStr(ih, "ERROR", "Could not create a rendering context.");
+ return IUP_NOERROR;
+ }
+ iupAttribSetStr(ih, "CONTEXT", (char*)ih->data->context);
+
+ ih_shared = IupGetAttributeHandle(ih, "SHAREDCONTEXT");
+ if (ih_shared && iupStrEqual(ih_shared->iclass->name, "glcanvas")) /* must be an IupGLCanvas */
+ wglShareLists(ih_shared->data->context, ih->data->context);
+
+ DescribePixelFormat(ih->data->device, pixelFormat, sizeof(PIXELFORMATDESCRIPTOR), &test_pfd);
+ if ((pfd.dwFlags & PFD_STEREO) && !(test_pfd.dwFlags & PFD_STEREO))
+ {
+ iupAttribSetStr(ih, "ERROR", "Stereo not available.");
+ return IUP_NOERROR;
+ }
+
+ /* create colormap for index mode */
+ if (isIndex)
+ {
+ if (!ih->data->palette)
+ {
+ LOGPALETTE lp = {0x300,1,{255,255,255,PC_NOCOLLAPSE}}; /* set first color as white */
+ ih->data->palette = CreatePalette(&lp);
+ ResizePalette(ih->data->palette,1<<pfd.cColorBits);
+ iupAttribSetStr(ih, "COLORMAP", (char*)ih->data->palette);
+ }
+
+ SelectPalette(ih->data->device,ih->data->palette,FALSE);
+ RealizePalette(ih->data->device);
+ }
+
+ return IUP_NOERROR;
+}
+
+static int wGLCanvasMapMethod(Ihandle* ih)
+{
+ /* get a device context */
+ ih->data->window = (HWND)iupAttribGet(ih, "HWND"); /* check first in the hash table, can be defined by the IupFileDlg */
+ if (!ih->data->window)
+ ih->data->window = (HWND)IupGetAttribute(ih, "HWND"); /* works for Win32 and GTK, only after mapping the IupCanvas */
+ if (!ih->data->window)
+ return IUP_NOERROR;
+
+ {
+ LONG style = GetClassLong(ih->data->window, GCL_STYLE);
+ ih->data->is_owned_dc = (int) ((style & CS_OWNDC) || (style & CS_CLASSDC));
+ }
+
+ return wGLCreateContext(ih);
+}
+
+static void wGLCanvasUnMapMethod(Ihandle* ih)
+{
+ if (ih->data->context)
+ {
+ if (ih->data->context == wglGetCurrentContext())
+ wglMakeCurrent(NULL, NULL);
+
+ wglDeleteContext(ih->data->context);
+ }
+
+ if (ih->data->palette)
+ DeleteObject((HGDIOBJ)ih->data->palette);
+
+ if (ih->data->device)
+ ReleaseDC(ih->data->window, ih->data->device);
+}
+
+static int wGLCanvasSetRefreshContextAttrib(Ihandle* ih, const char* value)
+{
+ if (!ih->data->is_owned_dc)
+ {
+ if (ih->data->context)
+ {
+ if (ih->data->context == wglGetCurrentContext())
+ wglMakeCurrent(NULL, NULL);
+
+ wglDeleteContext(ih->data->context);
+ }
+
+ if (ih->data->device)
+ ReleaseDC(ih->data->window, ih->data->device);
+
+ wGLCreateContext(ih);
+ }
+
+ (void)value;
+ return 0;
+}
+
+static Iclass* wGlCanvasGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupCanvasGetClass());
+
+ ic->name = "glcanvas";
+ ic->format = "A"; /* one optional callback name */
+ ic->nativetype = IUP_TYPECANVAS;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+
+ ic->Create = wGLCanvasCreateMethod;
+ ic->Map = wGLCanvasMapMethod;
+ ic->UnMap = wGLCanvasUnMapMethod;
+
+ iupClassRegisterAttribute(ic, "BUFFER", NULL, NULL, IUPAF_SAMEASSYSTEM, "SINGLE", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "COLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "RGBA", IUPAF_DEFAULT);
+
+ iupClassRegisterAttribute(ic, "CONTEXT", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "VISUAL", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "COLORMAP", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_STRING);
+
+ iupClassRegisterAttribute(ic, "REFRESHCONTEXT", NULL, wGLCanvasSetRefreshContextAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+
+ return ic;
+}
+
+/******************************************* Exported functions */
+
+void IupGLCanvasOpen(void)
+{
+ if (!IupGetGlobal("_IUP_GLCANVAS_OPEN"))
+ {
+ iupRegisterClass(wGlCanvasGetClass());
+ IupSetGlobal("_IUP_GLCANVAS_OPEN", "1");
+ }
+}
+
+Ihandle* IupGLCanvas(const char *action)
+{
+ void *params[2];
+ params[0] = (void*)action;
+ params[1] = NULL;
+ return IupCreatev("glcanvas", params);
+}
+
+int IupGLIsCurrent(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return 0;
+
+ /* must be an IupGLCanvas */
+ if (!iupStrEqual(ih->iclass->name, "glcanvas"))
+ return 0;
+
+ /* must be mapped */
+ if (!ih->data->window)
+ return 0;
+
+ if (ih->data->context == wglGetCurrentContext())
+ return 1;
+
+ return 0;
+}
+
+void IupGLMakeCurrent(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ /* must be an IupGLCanvas */
+ if (!iupStrEqual(ih->iclass->name, "glcanvas"))
+ return;
+
+ /* must be mapped */
+ if (!ih->data->window)
+ return;
+
+ wglMakeCurrent(ih->data->device, ih->data->context);
+}
+
+void IupGLSwapBuffers(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ /* must be an IupGLCanvas */
+ if (!iupStrEqual(ih->iclass->name, "glcanvas"))
+ return;
+
+ /* must be mapped */
+ if (!ih->data->window)
+ return;
+
+ SwapBuffers(ih->data->device);
+}
+
+void IupGLPalette(Ihandle* ih, int index, float r, float g, float b)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ /* must be an IupGLCanvas */
+ if (!iupStrEqual(ih->iclass->name, "glcanvas"))
+ return;
+
+ /* must be mapped */
+ if (!ih->data->window)
+ return;
+
+ /* must have a palette */
+ if (ih->data->palette)
+ {
+ PALETTEENTRY entry;
+ entry.peRed = (BYTE)(r*255);
+ entry.peGreen = (BYTE)(g*255);
+ entry.peBlue = (BYTE)(b*255);
+ entry.peFlags = PC_NOCOLLAPSE;
+ SetPaletteEntries(ih->data->palette,index,1,&entry);
+ UnrealizeObject(ih->data->device);
+ SelectPalette(ih->data->device,ih->data->palette,FALSE);
+ RealizePalette(ih->data->device);
+ }
+}
+
+void IupGLUseFont(Ihandle* ih, int first, int count, int list_base)
+{
+ HFONT old_font, font;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ /* must be an IupGLCanvas */
+ if (!iupStrEqual(ih->iclass->name, "glcanvas"))
+ return;
+
+ /* must be mapped */
+ if (!ih->data->window)
+ return;
+
+ font = (HFONT)IupGetAttribute(ih, "HFONT");
+ if (font)
+ {
+ old_font = SelectObject(ih->data->device, font);
+ wglUseFontBitmaps(ih->data->device, first, count, list_base);
+ SelectObject(ih->data->device, old_font);
+ }
+}
+
+void IupGLWait(int gl)
+{
+ if (gl)
+ glFinish();
+ else
+ GdiFlush();
+}
diff --git a/iup/srcgl/iup_glcanvas_x.c b/iup/srcgl/iup_glcanvas_x.c
new file mode 100755
index 0000000..adddeb1
--- /dev/null
+++ b/iup/srcgl/iup_glcanvas_x.c
@@ -0,0 +1,448 @@
+/** \file
+ * \brief iupgl control for X11
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <X11/Xlib.h>
+#include <GL/glx.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <memory.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iupgl.h"
+
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_stdcontrols.h"
+#include "iup_assert.h"
+#include "iup_register.h"
+
+
+struct _IcontrolData
+{
+ iupCanvas canvas; /* from IupCanvas (must reserve it) */
+
+ Display* display;
+ Drawable window;
+
+ Colormap colormap;
+ XVisualInfo *vinfo;
+ GLXContext context;
+};
+
+static int xGLCanvasDefaultResize(Ihandle *ih, int width, int height)
+{
+ IupGLMakeCurrent(ih);
+ glViewport(0,0,width,height);
+ return IUP_DEFAULT;
+}
+
+static int xGLCanvasCreateMethod(Ihandle* ih, void** params)
+{
+ (void)params;
+ free(ih->data); /* allocated by the iCanvasCreateMethod of IupCanvas */
+ ih->data = iupALLOCCTRLDATA();
+ IupSetCallback(ih, "RESIZE_CB", (Icallback)xGLCanvasDefaultResize);
+ return IUP_NOERROR;
+}
+
+static void xGLCanvasGetVisual(Ihandle* ih)
+{
+ int erb, evb, number;
+ int n = 0;
+ int alist[40];
+
+ if (!ih->data->display)
+ ih->data->display = (Display*)IupGetGlobal("XDISPLAY"); /* works for Motif and GTK, can be called before mapped */
+ if (!ih->data->display)
+ return;
+
+ /* double or single buffer */
+ if (iupStrEqualNoCase(iupAttribGetStr(ih,"BUFFER"), "DOUBLE"))
+ {
+ alist[n++] = GLX_DOUBLEBUFFER;
+ }
+
+ /* stereo */
+ if (iupAttribGetBoolean(ih,"STEREO"))
+ {
+ alist[n++] = GLX_STEREO;
+ }
+
+ /* rgba or index */
+ if (iupStrEqualNoCase(iupAttribGetStr(ih,"COLOR"), "INDEX"))
+ {
+ /* buffer size (for index mode) */
+ number = iupAttribGetInt(ih,"BUFFER_SIZE");
+ if (number > 0)
+ {
+ alist[n++] = GLX_BUFFER_SIZE;
+ alist[n++] = number;
+ }
+ }
+ else
+ {
+ alist[n++] = GLX_RGBA; /* assume rgba as default */
+ }
+
+ /* red, green, blue bits */
+ number = iupAttribGetInt(ih,"RED_SIZE");
+ if (number > 0)
+ {
+ alist[n++] = GLX_RED_SIZE;
+ alist[n++] = number;
+ }
+
+ number = iupAttribGetInt(ih,"GREEN_SIZE");
+ if (number > 0)
+ {
+ alist[n++] = GLX_GREEN_SIZE;
+ alist[n++] = number;
+ }
+
+ number = iupAttribGetInt(ih,"BLUE_SIZE");
+ if (number > 0)
+ {
+ alist[n++] = GLX_BLUE_SIZE;
+ alist[n++] = number;
+ }
+
+ number = iupAttribGetInt(ih,"ALPHA_SIZE");
+ if (number > 0)
+ {
+ alist[n++] = GLX_ALPHA_SIZE;
+ alist[n++] = number;
+ }
+
+ /* depth and stencil size */
+ number = iupAttribGetInt(ih,"DEPTH_SIZE");
+ if (number > 0)
+ {
+ alist[n++] = GLX_DEPTH_SIZE;
+ alist[n++] = number;
+ }
+
+ number = iupAttribGetInt(ih,"STENCIL_SIZE");
+ if (number > 0)
+ {
+ alist[n++] = GLX_STENCIL_SIZE;
+ alist[n++] = number;
+ }
+
+ /* red, green, blue accumulation bits */
+ number = iupAttribGetInt(ih,"ACCUM_RED_SIZE");
+ if (number > 0)
+ {
+ alist[n++] = GLX_ACCUM_RED_SIZE;
+ alist[n++] = number;
+ }
+
+ number = iupAttribGetInt(ih,"ACCUM_GREEN_SIZE");
+ if (number > 0)
+ {
+ alist[n++] = GLX_ACCUM_GREEN_SIZE;
+ alist[n++] = number;
+ }
+
+ number = iupAttribGetInt(ih,"ACCUM_BLUE_SIZE");
+ if (number > 0)
+ {
+ alist[n++] = GLX_ACCUM_BLUE_SIZE;
+ alist[n++] = number;
+ }
+
+ number = iupAttribGetInt(ih,"ACCUM_ALPHA_SIZE");
+ if (number > 0)
+ {
+ alist[n++] = GLX_ACCUM_ALPHA_SIZE;
+ alist[n++] = number;
+ }
+ alist[n++] = None;
+
+ /* check out X extension */
+ if (!glXQueryExtension(ih->data->display, &erb, &evb))
+ {
+ iupAttribSetStr(ih, "ERROR", "X server has no OpenGL GLX extension");
+ return;
+ }
+
+ /* choose visual */
+ ih->data->vinfo = glXChooseVisual(ih->data->display, DefaultScreen(ih->data->display), alist);
+ if (!ih->data->vinfo)
+ iupAttribSetStr(ih, "ERROR", "No appropriate visual");
+}
+
+static char* xGLCanvasGetVisualAttrib(Ihandle *ih)
+{
+ /* This must be available before mapping, because IupCanvas uses it during map in GTK and Motif. */
+ if (ih->data->vinfo)
+ return (char*)ih->data->vinfo->visual;
+
+ xGLCanvasGetVisual(ih);
+
+ if (ih->data->vinfo)
+ return (char*)ih->data->vinfo->visual;
+
+ return NULL;
+}
+
+static int xGLCanvasMapMethod(Ihandle* ih)
+{
+ GLXContext shared_context = NULL;
+ Ihandle* ih_shared;
+
+ /* the IupCanvas is already mapped, just initialize the OpenGL context */
+
+ if (!xGLCanvasGetVisualAttrib(ih))
+ return IUP_NOERROR; /* do not abort mapping */
+
+ ih->data->window = (XID)iupAttribGet(ih, "XWINDOW"); /* check first in the hash table, can be defined by the IupFileDlg */
+ if (!ih->data->window)
+ ih->data->window = (XID)IupGetAttribute(ih, "XWINDOW"); /* works for Motif and GTK, only after mapping the IupCanvas */
+ if (!ih->data->window)
+ return IUP_NOERROR;
+
+ ih_shared = IupGetAttributeHandle(ih, "SHAREDCONTEXT");
+ if (ih_shared && iupStrEqual(ih_shared->iclass->name, "glcanvas")) /* must be an IupGLCanvas */
+ shared_context = ih_shared->data->context;
+
+ /* create rendering context */
+ ih->data->context = glXCreateContext(ih->data->display, ih->data->vinfo, shared_context, GL_TRUE);
+ if (!ih->data->context)
+ {
+ iupAttribSetStr(ih, "ERROR", "Could not create a rendering context");
+ return IUP_NOERROR;
+ }
+ iupAttribSetStr(ih, "CONTEXT", (char*)ih->data->context);
+
+ /* create colormap for index mode */
+ if (iupStrEqualNoCase(iupAttribGetStr(ih,"COLOR"), "INDEX") &&
+ ih->data->vinfo->class != StaticColor && ih->data->vinfo->class != StaticGray)
+ {
+ ih->data->colormap = XCreateColormap(ih->data->display, RootWindow(ih->data->display, DefaultScreen(ih->data->display)), ih->data->vinfo->visual, AllocAll);
+ iupAttribSetStr(ih, "COLORMAP", (char*)ih->data->colormap);
+ }
+
+ if (ih->data->colormap != None)
+ IupGLPalette(ih,0,1,1,1); /* set first color as white */
+
+ return IUP_NOERROR;
+}
+
+static void xGLCanvasUnMapMethod(Ihandle* ih)
+{
+ if (ih->data->context)
+ {
+ if (ih->data->context == glXGetCurrentContext())
+ glXMakeCurrent(ih->data->display, None, NULL);
+
+ glXDestroyContext(ih->data->display, ih->data->context);
+ }
+
+ if (ih->data->colormap != None)
+ XFreeColormap(ih->data->display, ih->data->colormap);
+
+ if (ih->data->vinfo)
+ XFree(ih->data->vinfo);
+}
+
+static Iclass* xGlCanvasGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupCanvasGetClass());
+
+ ic->name = "glcanvas";
+ ic->format = "A"; /* one optional callback name */
+ ic->nativetype = IUP_TYPECANVAS;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+
+ ic->Create = xGLCanvasCreateMethod;
+ ic->Map = xGLCanvasMapMethod;
+ ic->UnMap = xGLCanvasUnMapMethod;
+
+ iupClassRegisterAttribute(ic, "BUFFER", NULL, NULL, IUPAF_SAMEASSYSTEM, "SINGLE", IUPAF_DEFAULT);
+ iupClassRegisterAttribute(ic, "COLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "RGBA", IUPAF_DEFAULT);
+
+ iupClassRegisterAttribute(ic, "CONTEXT", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_STRING);
+ iupClassRegisterAttribute(ic, "VISUAL", xGLCanvasGetVisualAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_STRING|IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "COLORMAP", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_STRING);
+
+ return ic;
+}
+
+
+/******************************************* Exported functions */
+
+void IupGLCanvasOpen(void)
+{
+ if (!IupGetGlobal("_IUP_GLCANVAS_OPEN"))
+ {
+ iupRegisterClass(xGlCanvasGetClass());
+ IupSetGlobal("_IUP_GLCANVAS_OPEN", "1");
+ }
+}
+
+Ihandle* IupGLCanvas(const char *action)
+{
+ void *params[2];
+ params[0] = (void*)action;
+ params[1] = NULL;
+ return IupCreatev("glcanvas", params);
+}
+
+int IupGLIsCurrent(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return 0;
+
+ /* must be an IupGLCanvas */
+ if (!iupStrEqual(ih->iclass->name, "glcanvas"))
+ return 0;
+
+ /* must be mapped */
+ if (!ih->data->window)
+ return 0;
+
+ if (ih->data->context == glXGetCurrentContext())
+ return 1;
+
+ return 0;
+}
+
+void IupGLMakeCurrent(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ /* must be an IupGLCanvas */
+ if (!iupStrEqual(ih->iclass->name, "glcanvas"))
+ return;
+
+ /* must be mapped */
+ if (!ih->data->window)
+ return;
+
+ glXMakeCurrent(ih->data->display, ih->data->window, ih->data->context);
+ glXWaitX();
+}
+
+void IupGLSwapBuffers(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ /* must be an IupGLCanvas */
+ if (!iupStrEqual(ih->iclass->name, "glcanvas"))
+ return;
+
+ /* must be mapped */
+ if (!ih->data->window)
+ return;
+
+ glXSwapBuffers(ih->data->display, ih->data->window);
+}
+
+static int xGLCanvasIgnoreError(Display *param1, XErrorEvent *param2)
+{
+ (void)param1;
+ (void)param2;
+ return 0;
+}
+
+void IupGLPalette(Ihandle* ih, int index, float r, float g, float b)
+{
+ XColor color;
+ int rShift, gShift, bShift;
+ XVisualInfo *vinfo;
+ XErrorHandler old_handler;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ /* must be an IupGLCanvas */
+ if (!iupStrEqual(ih->iclass->name, "glcanvas"))
+ return;
+
+ /* must be mapped */
+ if (!ih->data->window)
+ return;
+
+ /* must have a colormap */
+ if (ih->data->colormap == None)
+ return;
+
+ /* code fragment based on the toolkit library provided with OpenGL */
+ old_handler = XSetErrorHandler(xGLCanvasIgnoreError);
+
+ vinfo = ih->data->vinfo;
+ switch (vinfo->class)
+ {
+ case DirectColor:
+ rShift = ffs((unsigned int)vinfo->red_mask) - 1;
+ gShift = ffs((unsigned int)vinfo->green_mask) - 1;
+ bShift = ffs((unsigned int)vinfo->blue_mask) - 1;
+ color.pixel = ((index << rShift) & vinfo->red_mask) |
+ ((index << gShift) & vinfo->green_mask) |
+ ((index << bShift) & vinfo->blue_mask);
+ color.red = (unsigned short)(r * 65535.0 + 0.5);
+ color.green = (unsigned short)(g * 65535.0 + 0.5);
+ color.blue = (unsigned short)(b * 65535.0 + 0.5);
+ color.flags = DoRed | DoGreen | DoBlue;
+ XStoreColor(ih->data->display, ih->data->colormap, &color);
+ break;
+ case GrayScale:
+ case PseudoColor:
+ if (index < vinfo->colormap_size)
+ {
+ color.pixel = index;
+ color.red = (unsigned short)(r * 65535.0 + 0.5);
+ color.green = (unsigned short)(g * 65535.0 + 0.5);
+ color.blue = (unsigned short)(b * 65535.0 + 0.5);
+ color.flags = DoRed | DoGreen | DoBlue;
+ XStoreColor(ih->data->display, ih->data->colormap, &color);
+ }
+ break;
+ }
+
+ XSync(ih->data->display, 0);
+ XSetErrorHandler(old_handler);
+}
+
+void IupGLUseFont(Ihandle* ih, int first, int count, int list_base)
+{
+ Font font;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ /* must be an IupGLCanvas */
+ if (!iupStrEqual(ih->iclass->name, "glcanvas"))
+ return;
+
+ /* must be mapped */
+ if (!ih->data->window)
+ return;
+
+ font = (Font)IupGetAttribute(ih, "XFONTID");
+ if (font)
+ glXUseXFont(font, first, count, list_base);
+}
+
+void IupGLWait(int gl)
+{
+ if (gl)
+ glXWaitGL();
+ else
+ glXWaitX();
+}
diff --git a/iup/srcgl/iupgl.def b/iup/srcgl/iupgl.def
new file mode 100755
index 0000000..d82a1b1
--- /dev/null
+++ b/iup/srcgl/iupgl.def
@@ -0,0 +1,9 @@
+EXPORTS
+IupGLCanvasOpen
+IupGLCanvas
+IupGLMakeCurrent
+IupGLSwapBuffers
+IupGLPalette
+IupGLIsCurrent
+IupGLUseFont
+IupGLWait
diff --git a/iup/srcgl/iupgl.dep b/iup/srcgl/iupgl.dep
new file mode 100644
index 0000000..52fbcfa
--- /dev/null
+++ b/iup/srcgl/iupgl.dep
@@ -0,0 +1,5 @@
+$(OBJDIR)/iup_glcanvas_x.o: iup_glcanvas_x.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../include/iupgl.h \
+ ../src/iup_object.h ../src/iup_class.h ../src/iup_table.h \
+ ../src/iup_classbase.h ../src/iup_attrib.h ../src/iup_str.h \
+ ../src/iup_stdcontrols.h ../src/iup_assert.h ../src/iup_register.h
diff --git a/iup/srcgl/make_uname b/iup/srcgl/make_uname
new file mode 100755
index 0000000..cc4b881
--- /dev/null
+++ b/iup/srcgl/make_uname
@@ -0,0 +1,3 @@
+#This builds all the libraries of the folder for 1 uname
+
+tecmake $1 $2 $3 $4 $5 $6 $7
diff --git a/iup/srcgl/make_uname.bat b/iup/srcgl/make_uname.bat
new file mode 100755
index 0000000..f0a0722
--- /dev/null
+++ b/iup/srcgl/make_uname.bat
@@ -0,0 +1,4 @@
+@echo off
+REM This builds all the libraries of the folder for 1 uname
+
+call tecmake %1 %2 %3 %4 %5 %6
diff --git a/iup/srcim/Makefile b/iup/srcim/Makefile
new file mode 100755
index 0000000..933ded1
--- /dev/null
+++ b/iup/srcim/Makefile
@@ -0,0 +1,6 @@
+
+.PHONY: do_all iupim
+do_all: iupim
+
+iupim:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak
diff --git a/iup/srcim/config.mak b/iup/srcim/config.mak
new file mode 100755
index 0000000..8feb290
--- /dev/null
+++ b/iup/srcim/config.mak
@@ -0,0 +1,15 @@
+PROJNAME = iup
+LIBNAME = iupim
+OPT = YES
+
+USE_IM = Yes
+
+ifdef DBG
+ DEFINES += IUP_ASSERT
+endif
+
+INCLUDES = ../include ../src
+LDIR = ../lib/$(TEC_UNAME)
+LIBS = iup
+
+SRC = iup_im.c
diff --git a/iup/srcim/iup_im.c b/iup/srcim/iup_im.c
new file mode 100755
index 0000000..c26a3ff
--- /dev/null
+++ b/iup/srcim/iup_im.c
@@ -0,0 +1,306 @@
+/** \file
+ * \brief iupim utilities
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <im.h>
+#include <im_convert.h>
+#include <im_counter.h>
+#include <im_util.h>
+#include <im_image.h>
+
+#include "iup.h"
+#include "iupim.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "iup_object.h"
+#include "iup_assert.h"
+#include "iup_str.h"
+#include "iup_image.h"
+
+
+static void PrintError(int error)
+{
+ char* lang = IupGetLanguage();
+ char* msg;
+ if (iupStrEqualNoCase(lang, "ENGLISH"))
+ {
+ switch (error)
+ {
+ case IM_ERR_OPEN:
+ msg = "Error Opening File.\n";
+ break;
+ case IM_ERR_MEM:
+ msg = "Insuficient memory.\n";
+ break;
+ case IM_ERR_ACCESS:
+ msg = "Error Accessing File.\n";
+ break;
+ case IM_ERR_DATA:
+ msg = "Image type not Suported.\n";
+ break;
+ case IM_ERR_FORMAT:
+ msg = "Invalid Format.\n";
+ break;
+ case IM_ERR_COMPRESS:
+ msg = "Invalid or unsupported compression.\n";
+ break;
+ default:
+ msg = "Unknown Error.\n";
+ }
+ }
+ else
+ {
+ switch (error)
+ {
+ case IM_ERR_OPEN:
+ msg = "Erro Abrindo Arquivo.\n";
+ break;
+ case IM_ERR_MEM:
+ msg = "Memσria Insuficiente.\n";
+ break;
+ case IM_ERR_ACCESS:
+ msg = "Erro Acessando Arquivo.\n";
+ break;
+ case IM_ERR_DATA:
+ msg = "Tipo de Imagem nγo Suportado.\n";
+ break;
+ case IM_ERR_FORMAT:
+ msg = "Formato Invαlido.\n";
+ break;
+ case IM_ERR_COMPRESS:
+ msg = "Compressγo Invαlida ou nγo Suportada.\n";
+ break;
+ default:
+ msg = "Erro Desconhecido.\n";
+ }
+ }
+
+ IupMessage("Error", msg);
+}
+
+Ihandle* IupLoadImage(const char* file_name)
+{
+ long palette[256];
+ int i, error, width, height, color_mode, flags,
+ data_type, palette_count, has_alpha = 0;
+ Ihandle* iup_image = NULL;
+ const unsigned char* transp_index;
+ void* image_data = NULL;
+ imCounterCallback old_callback;
+ imFile* ifile;
+
+ iupASSERT(file_name);
+ if (!file_name)
+ return NULL;
+
+ old_callback = imCounterSetCallback(NULL, NULL);
+
+ ifile = imFileOpen(file_name, &error);
+ if (error)
+ goto load_finish;
+
+ error = imFileReadImageInfo(ifile, 0, &width, &height, &color_mode, &data_type);
+ if (error)
+ goto load_finish;
+
+ flags = IM_TOPDOWN;
+ flags |= IM_PACKED;
+ if (imColorModeHasAlpha(color_mode))
+ {
+ has_alpha = 1;
+ flags |= IM_ALPHA;
+ }
+
+ color_mode = imColorModeToBitmap(color_mode);
+ data_type = IM_BYTE;
+
+ image_data = malloc(imImageDataSize(width, height, flags|color_mode, data_type));
+ if (!image_data)
+ goto load_finish;
+
+ error = imFileReadImageData(ifile, image_data, 1, flags);
+ if (error)
+ goto load_finish;
+
+ if (color_mode == IM_RGB)
+ {
+ if (has_alpha)
+ iup_image = IupImageRGBA(width, height, (unsigned char*)image_data);
+ else
+ iup_image = IupImageRGB(width, height, (unsigned char*)image_data);
+ palette_count = 0;
+ }
+ else
+ {
+ imFileGetPalette(ifile, palette, &palette_count);
+ iup_image = IupImage(width, height, (unsigned char*)image_data);
+ }
+
+ for (i = 0; i < palette_count; i++)
+ {
+ char attr[6], color[30];
+ unsigned char r, g, b;
+
+ sprintf(attr, "%d", i);
+ imColorDecode(&r, &g, &b, palette[i]);
+ sprintf(color, "%d %d %d", (int)r, (int)g, (int)b);
+
+ IupStoreAttribute(iup_image, attr, color);
+ }
+
+ transp_index = imFileGetAttribute(ifile, "TransparencyIndex", NULL, NULL);
+ if (transp_index)
+ {
+ char attr[6];
+ sprintf(attr, "%d", (int)(*transp_index));
+ IupSetAttribute(iup_image, attr, "BGCOLOR");
+ }
+
+load_finish:
+ imCounterSetCallback(NULL, old_callback);
+ if (ifile) imFileClose(ifile);
+ if (image_data) free(image_data);
+ if (error) PrintError(error);
+ return iup_image;
+}
+
+int IupSaveImage(Ihandle* ih, const char* file_name, const char* format)
+{
+ int width, height, i, bpp;
+ unsigned char* data;
+ int error;
+ long palette[256];
+ imFile* ifile;
+
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return 0;
+
+ iupASSERT(file_name);
+ if (!file_name)
+ return 0;
+
+ ifile = imFileNew(file_name, format, &error);
+ if (!ifile)
+ {
+ PrintError(error);
+ return 0;
+ }
+
+ data = (unsigned char*)IupGetAttribute(ih, "WID");
+
+ width = IupGetInt(ih, "WIDTH");
+ height = IupGetInt(ih, "HEIGHT");
+ bpp = IupGetInt(ih, "BPP");
+
+ if (bpp == 24)
+ error = imFileWriteImageInfo(ifile, width, height, IM_RGB|IM_TOPDOWN|IM_PACKED, IM_BYTE);
+ else if (bpp == 32)
+ error = imFileWriteImageInfo(ifile, width, height, IM_RGB|IM_TOPDOWN|IM_PACKED|IM_ALPHA, IM_BYTE);
+ else /* bpp == 8 */
+ {
+ for(i = 0; i < 256; i++)
+ {
+ unsigned int r, g, b;
+ char str[20];
+ char* color;
+
+ sprintf(str, "%d", i);
+ color = IupGetAttribute(ih, str);
+ if (!color)
+ break;
+
+ if (strcmp(color, "BGCOLOR") == 0)
+ {
+ unsigned char transp_index = (unsigned char)i;
+ imFileSetAttribute(ifile, "TransparencyIndex", IM_BYTE, 1, &transp_index);
+ palette[i] = imColorEncode(0, 0, 0);
+ }
+ else
+ {
+ sscanf(color, "%d %d %d", &r, &g, &b);
+ palette[i] = imColorEncode((unsigned char)r, (unsigned char)g, (unsigned char)b);
+ }
+ }
+
+ imFileSetPalette(ifile, palette, i);
+
+ error = imFileWriteImageInfo(ifile, width, height, IM_MAP|IM_TOPDOWN, IM_BYTE);
+ }
+
+ if (error == IM_ERR_NONE)
+ error = imFileWriteImageData(ifile, data);
+
+ imFileClose(ifile);
+
+ if (error)
+ PrintError(error);
+
+ return error == IM_ERR_NONE? 1: 0;
+}
+
+/******************************************************************************/
+
+static void iInitColors(iupColor* colors, int count, long* palette)
+{
+ int i;
+ for (i=0; i< count; i++)
+ {
+ imColorDecode(&(colors[i].r), &(colors[i].g), &(colors[i].b), palette[i]);
+ colors[i].a = 0;
+ }
+}
+
+static void iInitPalette(long* palette, int count, iupColor* colors)
+{
+ int i;
+ for (i=0; i< count; i++)
+ {
+ palette[i] = imColorEncode(colors[i].r, colors[i].g, colors[i].b);
+ }
+}
+
+void* IupGetImageNativeHandle(imImage* image)
+{
+ int bpp = image->depth*8;
+ iupColor colors[256];
+ iInitColors(colors, image->palette_count, image->palette);
+ if (image->has_alpha && bpp == 24)
+ bpp = 32;
+ return iupdrvImageCreateImageRaw(image->width, image->height, bpp, colors, image->palette_count, image->data[0]);
+}
+
+imImage* IupGetNativeHandleImage(void* handle)
+{
+ int width, height, bpp;
+ iupColor colors[256];
+ int colors_count = 0;
+ if (iupdrvImageGetRawInfo(handle, &width, &height, &bpp, colors, &colors_count))
+ {
+ imImage* image = imImageCreate(width, height, bpp>8? IM_RGB: IM_MAP, IM_BYTE);
+ if (image)
+ {
+ if (bpp==32)
+ imImageAddAlpha(image);
+
+ if (bpp<=8 && colors_count)
+ {
+ long* palette = (long*)malloc(256*sizeof(long));
+ iInitPalette(palette, colors_count, colors);
+ imImageSetPalette(image, palette, colors_count);
+ }
+
+ iupdrvImageGetRawData(handle, image->data[0]);
+
+ return image;
+ }
+
+ iupdrvImageDestroy(handle, IUPIMAGE_IMAGE);
+ }
+ return NULL;
+}
diff --git a/iup/srcim/iupim.def b/iup/srcim/iupim.def
new file mode 100755
index 0000000..1014c9b
--- /dev/null
+++ b/iup/srcim/iupim.def
@@ -0,0 +1,3 @@
+EXPORTS
+IupLoadImage
+IupSaveImage
diff --git a/iup/srcim/iupim.dep b/iup/srcim/iupim.dep
new file mode 100644
index 0000000..c19b469
--- /dev/null
+++ b/iup/srcim/iupim.dep
@@ -0,0 +1,7 @@
+$(OBJDIR)/iup_im.o: iup_im.c ../../im/include/im.h ../../im/include/old_im.h \
+ ../../im/include/im_convert.h ../../im/include/im_image.h \
+ ../../im/include/im_counter.h ../../im/include/im_util.h \
+ ../../im/include/im_image.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupim.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \
+ ../src/iup_assert.h ../src/iup_str.h ../src/iup_image.h
diff --git a/iup/srcim/make_uname b/iup/srcim/make_uname
new file mode 100755
index 0000000..cc4b881
--- /dev/null
+++ b/iup/srcim/make_uname
@@ -0,0 +1,3 @@
+#This builds all the libraries of the folder for 1 uname
+
+tecmake $1 $2 $3 $4 $5 $6 $7
diff --git a/iup/srcim/make_uname.bat b/iup/srcim/make_uname.bat
new file mode 100755
index 0000000..f0a0722
--- /dev/null
+++ b/iup/srcim/make_uname.bat
@@ -0,0 +1,4 @@
+@echo off
+REM This builds all the libraries of the folder for 1 uname
+
+call tecmake %1 %2 %3 %4 %5 %6
diff --git a/iup/srcimglib/Makefile b/iup/srcimglib/Makefile
new file mode 100755
index 0000000..261537a
--- /dev/null
+++ b/iup/srcimglib/Makefile
@@ -0,0 +1,6 @@
+
+.PHONY: do_all iupimglib
+do_all: iupimglib
+
+iupimglib:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak
diff --git a/iup/srcimglib/config.mak b/iup/srcimglib/config.mak
new file mode 100755
index 0000000..01cfefb
--- /dev/null
+++ b/iup/srcimglib/config.mak
@@ -0,0 +1,14 @@
+PROJNAME = iup
+LIBNAME = iupimglib
+#OPT = YES
+
+INCLUDES = ../include ../src
+
+SRC = iup_image_library.c
+
+LIBS = iup
+LDIR = ../lib/$(TEC_UNAME)
+
+ifneq ($(findstring AIX, $(TEC_UNAME)), )
+ DEFINES += IUP_IMGLIB_DUMMY
+endif
diff --git a/iup/srcimglib/iup_image_library.c b/iup/srcimglib/iup_image_library.c
new file mode 100755
index 0000000..0202b13
--- /dev/null
+++ b/iup/srcimglib/iup_image_library.c
@@ -0,0 +1,403 @@
+/** \file
+ * \brief initializes iupdial, iupgauge, iuptabs, iupcb, iupgc and iupval controls.
+ *
+ * See Copyright Notice in iup.h
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+
+#include "iup_str.h"
+#include "iup_image.h"
+
+/* GTK and Win32 share the same library in Windows */
+/* GTK and Motif share the same library in UNIX */
+
+#ifndef IUP_IMGLIB_DUMMY
+#ifdef WIN32
+#include "iup_imglib_bitmaps.h" /* Used only by the Win32 driver in Windows */
+#endif
+#ifndef WIN32
+#include "iup_imglib_bitmaps8.h" /* Used only by the Motif driver in UNIX */
+#endif
+#include "iup_imglib_bitmapsgtk.h" /* Used only by the GTK driver in UNIX or Windows */
+#ifndef WIN32
+#include "iup_imglib_icons8.h" /* Used only by the Motif driver in UNIX */
+#include "iup_imglib_logos8.h" /* Used only by the Motif driver in UNIX */
+#endif
+#include "iup_imglib_icons.h"
+#include "iup_imglib_logos.h"
+#endif
+
+void IupImageLibOpen(void)
+{
+#ifndef IUP_IMGLIB_DUMMY
+ int motif=0, win32=0, gtk=0;
+ char* driver;
+
+ if (IupGetGlobal("_IUP_IMAGELIB_OPEN"))
+ return;
+
+ driver = IupGetGlobal("DRIVER");
+ if (iupStrEqualNoCase(driver, "GTK"))
+ gtk = 1;
+ else if (iupStrEqualNoCase(driver, "Motif"))
+ motif = 1;
+ else if (iupStrEqualNoCase(driver, "Win32"))
+ win32 = 1;
+
+ IupSetGlobal("_IUP_IMAGELIB_OPEN", "1");
+
+ /**************** Bitmaps *****************/
+
+#ifndef WIN32
+ if (motif)
+ {
+ iupImageStockSet("IUP_ActionCancel", load_image_ActionCancel8, 0);
+ iupImageStockSet("IUP_ActionOk", load_image_ActionOk8, 0);
+ iupImageStockSet("IUP_ArrowDown", load_image_ArrowDown8, 0);
+ iupImageStockSet("IUP_ArrowLeft", load_image_ArrowLeft8, 0);
+ iupImageStockSet("IUP_ArrowRight", load_image_ArrowRight8, 0);
+ iupImageStockSet("IUP_ArrowUp", load_image_ArrowUp8, 0);
+ iupImageStockSet("IUP_EditCopy", load_image_EditCopy8, 0);
+ iupImageStockSet("IUP_EditCut", load_image_EditCut8, 0);
+ iupImageStockSet("IUP_EditErase", load_image_EditErase8, 0);
+ iupImageStockSet("IUP_EditFind", load_image_EditFind8, 0);
+ iupImageStockSet("IUP_EditPaste", load_image_EditPaste8, 0);
+ iupImageStockSet("IUP_EditRedo", load_image_EditRedo8, 0);
+ iupImageStockSet("IUP_EditUndo", load_image_EditUndo8, 0);
+ iupImageStockSet("IUP_FileClose", load_image_FileClose8, 0);
+ iupImageStockSet("IUP_FileCloseAll", load_image_FileCloseAll8, 0);
+ iupImageStockSet("IUP_FileNew", load_image_FileNew8, 0);
+ iupImageStockSet("IUP_FileOpen", load_image_FileOpen8, 0);
+ iupImageStockSet("IUP_FileProperties", load_image_FileProperties8, 0);
+ iupImageStockSet("IUP_FileSave", load_image_FileSave8, 0);
+ iupImageStockSet("IUP_FileSaveAll", load_image_FileSaveAll8, 0);
+ iupImageStockSet("IUP_FileText", load_image_FileText8, 0);
+ iupImageStockSet("IUP_FontBold", load_image_FontBold8, 0);
+ iupImageStockSet("IUP_FontDialog", load_image_FontDialog8, 0);
+ iupImageStockSet("IUP_FontItalic", load_image_FontItalic8, 0);
+ iupImageStockSet("IUP_MediaForward", load_image_MediaForward8, 0);
+ iupImageStockSet("IUP_MediaGotoBegin", load_image_MediaGoToBegin8, 0);
+ iupImageStockSet("IUP_MediaGoToEnd", load_image_MediaGoToEnd8, 0);
+ iupImageStockSet("IUP_MediaPause", load_image_MediaPause8, 0);
+ iupImageStockSet("IUP_MediaPlay", load_image_MediaPlay8, 0);
+ iupImageStockSet("IUP_MediaRecord", load_image_MediaRecord8, 0);
+ iupImageStockSet("IUP_MediaReverse", load_image_MediaReverse8, 0);
+ iupImageStockSet("IUP_MediaRewind", load_image_MediaRewind8, 0);
+ iupImageStockSet("IUP_MediaStop", load_image_MediaStop8, 0);
+ iupImageStockSet("IUP_MessageError", load_image_MessageError8, 0);
+ iupImageStockSet("IUP_MessageHelp", load_image_MessageHelp8, 0);
+ iupImageStockSet("IUP_MessageInfo", load_image_MessageInfo8, 0);
+ iupImageStockSet("IUP_NavigateHome", load_image_NavigateHome8, 0);
+ iupImageStockSet("IUP_NavigateRefresh", load_image_NavigateRefresh8, 0);
+ iupImageStockSet("IUP_Print", load_image_Print8, 0);
+ iupImageStockSet("IUP_PrintPreview", load_image_PrintPreview8, 0);
+ iupImageStockSet("IUP_ToolsColor", load_image_ToolsColor8, 0);
+ iupImageStockSet("IUP_ToolsSettings", load_image_ToolsSettings8, 0);
+ iupImageStockSet("IUP_ToolsSortAscend", load_image_ToolsSortAscend8, 0);
+ iupImageStockSet("IUP_ToolsSortDescend", load_image_ToolsSortDescend8, 0);
+ iupImageStockSet("IUP_ViewFullScreen", load_image_ViewFullScreen8, 0);
+ iupImageStockSet("IUP_WindowsCascade", load_image_WindowsCascade8, 0);
+ iupImageStockSet("IUP_WindowsTile", load_image_WindowsTile8, 0);
+ iupImageStockSet("IUP_Zoom", load_image_Zoom8, 0);
+ iupImageStockSet("IUP_ZoomActualSize", load_image_ZoomActualSize8, 0);
+ iupImageStockSet("IUP_ZoomIn", load_image_ZoomIn8, 0);
+ iupImageStockSet("IUP_ZoomOut", load_image_ZoomOut8, 0);
+ iupImageStockSet("IUP_ZoomSelection", load_image_ZoomSelection8, 0);
+ }
+#endif
+
+#ifdef WIN32
+ if (win32)
+ {
+ iupImageStockSet("IUP_ActionCancel", load_image_ActionCancel, 0);
+ iupImageStockSet("IUP_ActionOk", load_image_ActionOk, 0);
+ iupImageStockSet("IUP_ArrowDown", load_image_ArrowDown, 0);
+ iupImageStockSet("IUP_ArrowLeft", load_image_ArrowLeft, 0);
+ iupImageStockSet("IUP_ArrowRight", load_image_ArrowRight, 0);
+ iupImageStockSet("IUP_ArrowUp", load_image_ArrowUp, 0);
+ iupImageStockSet("IUP_EditCopy", load_image_EditCopy, 0);
+ iupImageStockSet("IUP_EditCut", load_image_EditCut, 0);
+ iupImageStockSet("IUP_EditErase", load_image_EditErase, 0);
+ iupImageStockSet("IUP_EditFind", load_image_EditFind, 0);
+ iupImageStockSet("IUP_EditPaste", load_image_EditPaste, 0);
+ iupImageStockSet("IUP_EditRedo", load_image_EditRedo, 0);
+ iupImageStockSet("IUP_EditUndo", load_image_EditUndo, 0);
+ iupImageStockSet("IUP_FileClose", load_image_FileClose, 0);
+ iupImageStockSet("IUP_FileCloseAll", load_image_FileCloseAll, 0);
+ iupImageStockSet("IUP_FileNew", load_image_FileNew, 0);
+ iupImageStockSet("IUP_FileOpen", load_image_FileOpen, 0);
+ iupImageStockSet("IUP_FileProperties", load_image_FileProperties, 0);
+ iupImageStockSet("IUP_FileSave", load_image_FileSave, 0);
+ iupImageStockSet("IUP_FileSaveAll", load_image_FileSaveAll, 0);
+ iupImageStockSet("IUP_FileText", load_image_FileText, 0);
+ iupImageStockSet("IUP_FontBold", load_image_FontBold, 0);
+ iupImageStockSet("IUP_FontDialog", load_image_FontDialog, 0);
+ iupImageStockSet("IUP_FontItalic", load_image_FontItalic, 0);
+ iupImageStockSet("IUP_MediaForward", load_image_MediaForward, 0);
+ iupImageStockSet("IUP_MediaGotoBegin", load_image_MediaGoToBegin, 0);
+ iupImageStockSet("IUP_MediaGoToEnd", load_image_MediaGoToEnd, 0);
+ iupImageStockSet("IUP_MediaPause", load_image_MediaPause, 0);
+ iupImageStockSet("IUP_MediaPlay", load_image_MediaPlay, 0);
+ iupImageStockSet("IUP_MediaRecord", load_image_MediaRecord, 0);
+ iupImageStockSet("IUP_MediaReverse", load_image_MediaReverse, 0);
+ iupImageStockSet("IUP_MediaRewind", load_image_MediaRewind, 0);
+ iupImageStockSet("IUP_MediaStop", load_image_MediaStop, 0);
+ iupImageStockSet("IUP_MessageError", load_image_MessageError, 0);
+ iupImageStockSet("IUP_MessageHelp", load_image_MessageHelp, 0);
+ iupImageStockSet("IUP_MessageInfo", load_image_MessageInfo, 0);
+ iupImageStockSet("IUP_NavigateHome", load_image_NavigateHome, 0);
+ iupImageStockSet("IUP_NavigateRefresh", load_image_NavigateRefresh, 0);
+ iupImageStockSet("IUP_Print", load_image_Print, 0);
+ iupImageStockSet("IUP_PrintPreview", load_image_PrintPreview, 0);
+ iupImageStockSet("IUP_ToolsColor", load_image_ToolsColor, 0);
+ iupImageStockSet("IUP_ToolsSettings", load_image_ToolsSettings, 0);
+ iupImageStockSet("IUP_ToolsSortAscend", load_image_ToolsSortAscend, 0);
+ iupImageStockSet("IUP_ToolsSortDescend", load_image_ToolsSortDescend, 0);
+ iupImageStockSet("IUP_ViewFullScreen", load_image_ViewFullScreen, 0);
+ iupImageStockSet("IUP_WindowsCascade", load_image_WindowsCascade, 0);
+ iupImageStockSet("IUP_WindowsTile", load_image_WindowsTile, 0);
+ iupImageStockSet("IUP_Zoom", load_image_Zoom, 0);
+ iupImageStockSet("IUP_ZoomActualSize", load_image_ZoomActualSize, 0);
+ iupImageStockSet("IUP_ZoomIn", load_image_ZoomIn, 0);
+ iupImageStockSet("IUP_ZoomOut", load_image_ZoomOut, 0);
+ iupImageStockSet("IUP_ZoomSelection", load_image_ZoomSelection, 0);
+ }
+#endif
+
+ if (gtk)
+ {
+ iupImageStockSet("IUP_ActionCancel", 0, "gtk-cancel");
+ iupImageStockSet("IUP_ActionOk", 0, "gtk-apply");
+ iupImageStockSet("IUP_ArrowDown", 0, "gtk-go-down");
+ iupImageStockSet("IUP_ArrowLeft", 0, "gtk-go-back-ltr");
+ iupImageStockSet("IUP_ArrowRight", 0, "gtk-go-forward-ltr");
+ iupImageStockSet("IUP_ArrowUp", 0, "gtk-go-up");
+ iupImageStockSet("IUP_EditCopy", 0, "gtk-copy");
+ iupImageStockSet("IUP_EditCut", 0, "gtk-cut");
+ iupImageStockSet("IUP_EditErase", 0, "gtk-close");
+ iupImageStockSet("IUP_EditFind", 0, "gtk-find");
+ iupImageStockSet("IUP_EditPaste", 0, "gtk-paste");
+ iupImageStockSet("IUP_EditRedo", 0, "gtk-redo-ltr");
+ iupImageStockSet("IUP_EditUndo", 0, "gtk-undo-ltr");
+ iupImageStockSet("IUP_FileClose", load_image_iupgtk_close, 0);
+ iupImageStockSet("IUP_FileCloseAll", load_image_iupgtk_close_all, 0);
+ iupImageStockSet("IUP_FileNew", 0, "gtk-new");
+ iupImageStockSet("IUP_FileOpen", 0, "gtk-open");
+ iupImageStockSet("IUP_FileProperties", 0, "gtk-properties");
+ iupImageStockSet("IUP_FileSave", 0, "gtk-save");
+ iupImageStockSet("IUP_FileSaveAll", load_image_iupgtk_save_all, 0);
+ iupImageStockSet("IUP_FileText", load_image_iupgtk_text, 0);
+ iupImageStockSet("IUP_FontBold", 0, "gtk-bold");
+ iupImageStockSet("IUP_FontDialog", 0, "gtk-font");
+ iupImageStockSet("IUP_FontItalic", 0, "gtk-italic");
+ iupImageStockSet("IUP_MediaForward", 0, "gtk-media-forward-ltr");
+ iupImageStockSet("IUP_MediaGotoBegin", 0, "gtk-media-previous-ltr");
+ iupImageStockSet("IUP_MediaGoToEnd", 0, "gtk-media-next-ltr");
+ iupImageStockSet("IUP_MediaPause", 0, "gtk-media-pause");
+ iupImageStockSet("IUP_MediaPlay", 0, "gtk-media-play-ltr");
+ iupImageStockSet("IUP_MediaRecord", 0, "gtk-media-record");
+ iupImageStockSet("IUP_MediaReverse", 0, "gtk-media-play-rtl");
+ iupImageStockSet("IUP_MediaRewind", 0, "gtk-media-rewind-ltr");
+ iupImageStockSet("IUP_MediaStop", 0, "gtk-media-stop");
+ iupImageStockSet("IUP_MessageError", 0, "gtk-stop");
+ iupImageStockSet("IUP_MessageHelp", 0, "gtk-help");
+ iupImageStockSet("IUP_MessageInfo", 0, "gtk-info");
+ iupImageStockSet("IUP_NavigateHome", 0, "gtk-home");
+ iupImageStockSet("IUP_NavigateRefresh", 0, "gtk-refresh");
+ iupImageStockSet("IUP_Print", 0, "gtk-print");
+ iupImageStockSet("IUP_PrintPreview", 0, "gtk-print-preview");
+ iupImageStockSet("IUP_ToolsColor", 0, "gtk-select-color");
+ iupImageStockSet("IUP_ToolsSettings", 0, "gtk-preferences");
+ iupImageStockSet("IUP_ToolsSortAscend", 0, "gtk-sort-ascending");
+ iupImageStockSet("IUP_ToolsSortDescend", 0, "gtk-sort-descending");
+ iupImageStockSet("IUP_ViewFullScreen", 0, "gtk-fullscreen");
+ iupImageStockSet("IUP_WindowsCascade", load_image_iupgtk_cascade, 0);
+ iupImageStockSet("IUP_WindowsTile", load_image_iupgtk_tile, 0);
+ iupImageStockSet("IUP_Zoom", load_image_iupgtk_zoom, 0);
+ iupImageStockSet("IUP_ZoomActualSize", 0, "gtk-zoom-100");
+ iupImageStockSet("IUP_ZoomIn", 0, "gtk-zoom-in");
+ iupImageStockSet("IUP_ZoomOut", 0, "gtk-zoom-out");
+ iupImageStockSet("IUP_ZoomSelection", 0, "gtk-zoom-fit");
+ }
+
+ /***************** Icons *****************/
+
+#ifndef WIN32
+ if (motif)
+ {
+ iupImageStockSet("IUP_Tecgraf", load_image_Tecgraf8, 0);
+ iupImageStockSet("IUP_PUC-Rio", load_image_PUC_Rio8, 0);
+ iupImageStockSet("IUP_BR", load_image_BR8, 0);
+ iupImageStockSet("IUP_Lua", load_image_Lua8, 0);
+ iupImageStockSet("IUP_TecgrafPUC-Rio", load_image_TecgrafPUC_Rio8, 0);
+ iupImageStockSet("IUP_Petrobras", load_image_Petrobras8, 0);
+ }
+ else
+#endif
+ {
+ iupImageStockSet("IUP_Tecgraf", load_image_Tecgraf, 0);
+ iupImageStockSet("IUP_PUC-Rio", load_image_PUC_Rio, 0);
+ iupImageStockSet("IUP_BR", load_image_BR, 0);
+ iupImageStockSet("IUP_Lua", load_image_Lua, 0);
+ iupImageStockSet("IUP_TecgrafPUC-Rio", load_image_TecgrafPUC_Rio, 0);
+ iupImageStockSet("IUP_Petrobras", load_image_Petrobras, 0);
+ }
+
+ /***************** Logos *****************/
+
+#ifndef WIN32
+ if (motif)
+ {
+ iupImageStockSet("IUP_LogoTecgraf", load_image_LogoTecgraf8, 0);
+ iupImageStockSet("IUP_LogoPUC-Rio", load_image_LogoPUC_Rio8, 0);
+ iupImageStockSet("IUP_LogoBR", load_image_LogoBR8, 0);
+ iupImageStockSet("IUP_LogoLua", load_image_LogoLua8, 0);
+ iupImageStockSet("IUP_LogoTecgrafPUC-Rio", load_image_LogoTecgrafPUC_Rio8, 0);
+ iupImageStockSet("IUP_LogoPetrobras", load_image_LogoPetrobras8, 0);
+ }
+ else
+#endif
+ {
+ iupImageStockSet("IUP_LogoTecgraf", load_image_LogoTecgraf, 0);
+ iupImageStockSet("IUP_LogoPUC-Rio", load_image_LogoPUC_Rio, 0);
+ iupImageStockSet("IUP_LogoBR", load_image_LogoBR, 0);
+ iupImageStockSet("IUP_LogoLua", load_image_LogoLua, 0);
+ iupImageStockSet("IUP_LogoTecgrafPUC-Rio", load_image_LogoTecgrafPUC_Rio, 0);
+ iupImageStockSet("IUP_LogoPetrobras", load_image_LogoPetrobras, 0);
+ }
+
+#ifdef WIN32
+ if (win32)
+ {
+ iupImageStockSet("IUP_DeviceCamera", load_image_DeviceCamera, 0);
+ iupImageStockSet("IUP_DeviceCD", load_image_DeviceCD, 0);
+ iupImageStockSet("IUP_DeviceCellPhone", load_image_DeviceCellPhone, 0);
+ iupImageStockSet("IUP_DeviceComputer", load_image_DeviceComputer, 0);
+ iupImageStockSet("IUP_DeviceFax", load_image_DeviceFax, 0);
+ iupImageStockSet("IUP_DeviceMP3", load_image_DeviceMP3, 0);
+ iupImageStockSet("IUP_DeviceNetwork", load_image_DeviceNetwork, 0);
+ iupImageStockSet("IUP_DevicePDA", load_image_DevicePDA, 0);
+ iupImageStockSet("IUP_DevicePrinter", load_image_DevicePrinter, 0);
+ iupImageStockSet("IUP_DeviceScanner", load_image_DeviceScanner, 0);
+ iupImageStockSet("IUP_DeviceSound", load_image_DeviceSound, 0);
+ iupImageStockSet("IUP_DeviceVideo", load_image_DeviceVideo, 0);
+
+ iupImageStockSet("IUP_LogoMessageError", load_image_LogoMessageError, 0);
+ iupImageStockSet("IUP_LogoMessageHelp", load_image_LogoMessageHelp, 0);
+ iupImageStockSet("IUP_LogoMessageInfo", load_image_LogoMessageInfo, 0);
+ iupImageStockSet("IUP_LogoMessageSecurity", load_image_LogoMessageSecurity, 0);
+ iupImageStockSet("IUP_LogoMessageWarning", load_image_LogoMessageWarning, 0);
+ }
+#endif
+
+ if (gtk)
+ {
+ iupImageStockSet("IUP_LogoMessageError", 0, "gtk-dialog-error");
+ iupImageStockSet("IUP_LogoMessageHelp", 0, "gtk-dialog-question");
+ iupImageStockSet("IUP_LogoMessageInfo", 0, "gtk-dialog-info");
+ iupImageStockSet("IUP_LogoMessageSecurity", 0, "gtk-dialog-authentication");
+ iupImageStockSet("IUP_LogoMessageWarning", 0, "gtk-dialog-warning");
+ }
+#endif
+}
+
+void iupImageLibLoadAll(void)
+{
+#ifndef IUP_IMGLIB_DUMMY
+ /* Bitmaps */
+ iupImageStockLoad("IUP_ActionCancel");
+ iupImageStockLoad("IUP_ActionOk");
+ iupImageStockLoad("IUP_ArrowDown");
+ iupImageStockLoad("IUP_ArrowLeft");
+ iupImageStockLoad("IUP_ArrowRight");
+ iupImageStockLoad("IUP_ArrowUp");
+ iupImageStockLoad("IUP_EditCopy");
+ iupImageStockLoad("IUP_EditCut");
+ iupImageStockLoad("IUP_EditErase");
+ iupImageStockLoad("IUP_EditFind");
+ iupImageStockLoad("IUP_EditPaste");
+ iupImageStockLoad("IUP_EditRedo");
+ iupImageStockLoad("IUP_EditUndo");
+ iupImageStockLoad("IUP_FileClose");
+ iupImageStockLoad("IUP_FileCloseAll");
+ iupImageStockLoad("IUP_FileNew");
+ iupImageStockLoad("IUP_FileOpen");
+ iupImageStockLoad("IUP_FileProperties");
+ iupImageStockLoad("IUP_FileSave");
+ iupImageStockLoad("IUP_FileSaveAll");
+ iupImageStockLoad("IUP_FileText");
+ iupImageStockLoad("IUP_FontBold");
+ iupImageStockLoad("IUP_FontDialog");
+ iupImageStockLoad("IUP_FontItalic");
+ iupImageStockLoad("IUP_MediaForward");
+ iupImageStockLoad("IUP_MediaGotoBegin");
+ iupImageStockLoad("IUP_MediaGoToEnd");
+ iupImageStockLoad("IUP_MediaPause");
+ iupImageStockLoad("IUP_MediaPlay");
+ iupImageStockLoad("IUP_MediaRecord");
+ iupImageStockLoad("IUP_MediaReverse");
+ iupImageStockLoad("IUP_MediaRewind");
+ iupImageStockLoad("IUP_MediaStop");
+ iupImageStockLoad("IUP_MessageError");
+ iupImageStockLoad("IUP_MessageHelp");
+ iupImageStockLoad("IUP_MessageInfo");
+ iupImageStockLoad("IUP_NavigateHome");
+ iupImageStockLoad("IUP_NavigateRefresh");
+ iupImageStockLoad("IUP_Print");
+ iupImageStockLoad("IUP_PrintPreview");
+ iupImageStockLoad("IUP_ToolsColor");
+ iupImageStockLoad("IUP_ToolsSettings");
+ iupImageStockLoad("IUP_ToolsSortAscend");
+ iupImageStockLoad("IUP_ToolsSortDescend");
+ iupImageStockLoad("IUP_ViewFullScreen");
+ iupImageStockLoad("IUP_WindowsCascade");
+ iupImageStockLoad("IUP_WindowsTile");
+ iupImageStockLoad("IUP_Zoom");
+ iupImageStockLoad("IUP_ZoomActualSize");
+ iupImageStockLoad("IUP_ZoomIn");
+ iupImageStockLoad("IUP_ZoomOut");
+ iupImageStockLoad("IUP_ZoomSelection");
+
+ /* Icons */
+ iupImageStockLoad("IUP_Tecgraf");
+ iupImageStockLoad("IUP_PUC-Rio");
+ iupImageStockLoad("IUP_BR");
+ iupImageStockLoad("IUP_Lua");
+ iupImageStockLoad("IUP_TecgrafPUC-Rio");
+ iupImageStockLoad("IUP_Petrobras");
+
+ /* Logos */
+ iupImageStockLoad("IUP_LogoTecgraf");
+ iupImageStockLoad("IUP_LogoPUC-Rio");
+ iupImageStockLoad("IUP_LogoBR");
+ iupImageStockLoad("IUP_LogoLua");
+ iupImageStockLoad("IUP_LogoTecgrafPUC-Rio");
+ iupImageStockLoad("IUP_LogoPetrobras");
+
+#ifdef WIN32
+ /* Logos - Win32 Only */
+ iupImageStockLoad("IUP_DeviceCamera");
+ iupImageStockLoad("IUP_DeviceCD");
+ iupImageStockLoad("IUP_DeviceCellPhone");
+ iupImageStockLoad("IUP_DeviceComputer");
+ iupImageStockLoad("IUP_DeviceFax");
+ iupImageStockLoad("IUP_DeviceMP3");
+ iupImageStockLoad("IUP_DeviceNetwork");
+ iupImageStockLoad("IUP_DevicePDA");
+ iupImageStockLoad("IUP_DevicePrinter");
+ iupImageStockLoad("IUP_DeviceScanner");
+ iupImageStockLoad("IUP_DeviceSound");
+ iupImageStockLoad("IUP_DeviceVideo");
+#endif
+
+ /* Logos - GTK and Win32 Only */
+ iupImageStockLoad("IUP_LogoMessageError");
+ iupImageStockLoad("IUP_LogoMessageHelp");
+ iupImageStockLoad("IUP_LogoMessageInfo");
+ iupImageStockLoad("IUP_LogoMessageSecurity");
+ iupImageStockLoad("IUP_LogoMessageWarning");
+#endif
+}
diff --git a/iup/srcimglib/iup_imglib_bitmaps.h b/iup/srcimglib/iup_imglib_bitmaps.h
new file mode 100755
index 0000000..41577d6
--- /dev/null
+++ b/iup/srcimglib/iup_imglib_bitmaps.h
@@ -0,0 +1,1248 @@
+static Ihandle* load_image_FileSave(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 183, 182, 245, 255, 183, 182, 245, 255, 179, 178, 243, 255, 174, 173, 241, 255, 168, 167, 238, 255, 162, 161, 234, 255, 155, 154, 231, 255, 148, 147, 228, 255, 143, 142, 224, 255, 136, 135, 221, 255, 129, 128, 218, 255, 123, 122, 214, 255, 117, 116, 211, 255, 112, 111, 209, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 179, 178, 243, 255, 190, 189, 255, 255, 147, 146, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 75, 88, 190, 255, 89, 88, 176, 255, 89, 88, 176, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 173, 172, 240, 255, 190, 189, 255, 255, 138, 137, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 63, 82, 184, 255, 51, 51, 103, 255, 86, 85, 170, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 167, 166, 237, 255, 190, 189, 255, 255, 129, 128, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 52, 77, 179, 255, 122, 121, 223, 255, 83, 82, 164, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 159, 158, 233, 255, 190, 189, 255, 255, 119, 118, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 40, 71, 173, 255, 114, 113, 215, 255, 80, 79, 159, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 152, 151, 229, 255, 190, 189, 255, 255, 110, 109, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 198, 209, 229, 255, 28, 65, 167, 255, 103, 103, 204, 255, 77, 77, 154, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 146, 145, 226, 255, 190, 189, 255, 255, 103, 102, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 198, 209, 229, 255, 189, 202, 225, 255, 17, 59, 161, 255, 92, 93, 194, 255, 74, 74, 148, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 139, 138, 223, 255, 188, 187, 255, 255, 183, 182, 255, 255, 96, 99, 201, 255, 86, 94, 196, 255, 75, 88, 190, 255, 63, 82, 184, 255, 52, 77, 179, 255, 40, 71, 173, 255, 28, 65, 167, 255, 17, 59, 161, 255, 92, 93, 193, 255, 84, 86, 186, 255, 71, 71, 143, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 132, 131, 219, 255, 180, 179, 255, 255, 174, 173, 255, 255, 164, 163, 252, 255, 143, 142, 244, 255, 135, 134, 236, 255, 129, 128, 230, 255, 122, 121, 223, 255, 114, 113, 215, 255, 108, 107, 209, 255, 92, 93, 193, 255, 84, 86, 186, 255, 76, 80, 178, 255, 68, 68, 137, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 124, 123, 215, 255, 170, 169, 255, 255, 160, 159, 251, 255, 148, 147, 245, 255, 75, 91, 113, 255, 75, 91, 113, 255, 75, 91, 113, 255, 75, 91, 113, 255, 82, 98, 118, 255, 91, 106, 125, 255, 84, 86, 186, 255, 76, 79, 178, 255, 68, 73, 170, 255, 65, 65, 131, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 118, 117, 212, 255, 160, 159, 255, 255, 145, 144, 245, 255, 135, 134, 236, 255, 75, 91, 113, 255, 0, 0, 0, 255, 52, 60, 71, 255, 206, 217, 233, 255, 212, 221, 236, 255, 103, 116, 133, 255, 67, 75, 174, 255, 68, 73, 170, 255, 60, 66, 163, 255, 62, 62, 125, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 112, 111, 209, 255, 154, 153, 255, 255, 135, 134, 236, 255, 129, 128, 230, 255, 75, 91, 113, 255, 52, 60, 71, 255, 104, 120, 141, 255, 216, 224, 237, 255, 224, 231, 241, 255, 115, 127, 143, 255, 53, 65, 163, 255, 60, 66, 162, 255, 53, 61, 156, 255, 60, 59, 120, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 108, 107, 207, 255, 143, 142, 243, 255, 129, 128, 230, 255, 36, 68, 170, 255, 33, 50, 71, 255, 171, 180, 195, 255, 179, 187, 198, 255, 188, 193, 202, 255, 196, 200, 206, 255, 72, 77, 86, 255, 51, 62, 158, 255, 54, 61, 156, 255, 49, 57, 152, 255, 57, 57, 114, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 108, 107, 207, 84, 101, 100, 195, 255, 86, 85, 170, 255, 83, 82, 164, 255, 80, 79, 159, 255, 77, 77, 154, 255, 74, 74, 148, 255, 71, 71, 143, 255, 68, 68, 137, 255, 65, 65, 131, 255, 60, 59, 120, 255, 60, 59, 120, 255, 57, 57, 114, 255, 55, 54, 110, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_NavigateHome(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 100, 95, 83, 57, 100, 95, 83, 255, 84, 77, 68, 255, 84, 77, 68, 95, 255, 255, 255, 0, 121, 55, 44, 255, 121, 55, 44, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 100, 95, 83, 57, 100, 95, 83, 255, 223, 175, 44, 255, 218, 167, 33, 255, 84, 77, 68, 255, 84, 77, 68, 57, 121, 55, 44, 255, 89, 40, 32, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 100, 95, 83, 57, 100, 95, 83, 255, 239, 179, 18, 255, 111, 94, 78, 255, 107, 91, 75, 255, 224, 167, 20, 255, 84, 77, 68, 255, 108, 49, 39, 255, 74, 33, 26, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 100, 95, 83, 57, 100, 95, 83, 255, 239, 179, 18, 255, 111, 94, 78, 255, 184, 185, 188, 255, 167, 171, 178, 255, 96, 81, 68, 255, 217, 157, 10, 255, 84, 77, 68, 255, 59, 26, 20, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 100, 95, 83, 57, 100, 95, 83, 255, 239, 179, 18, 255, 111, 94, 78, 255, 189, 189, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 187, 192, 255, 83, 70, 58, 255, 208, 148, 7, 255, 84, 77, 68, 255, 84, 77, 68, 60, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 100, 95, 83, 57, 100, 95, 83, 255, 239, 179, 18, 255, 111, 94, 78, 255, 189, 189, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 186, 192, 255, 72, 60, 51, 255, 204, 144, 5, 255, 84, 77, 68, 255, 84, 77, 68, 60, 255, 255, 255, 0,
+ 255, 255, 255, 0, 100, 95, 83, 255, 239, 179, 18, 255, 111, 94, 78, 255, 189, 189, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 253, 255, 241, 244, 250, 255, 181, 184, 192, 255, 68, 57, 48, 255, 205, 143, 0, 255, 84, 77, 68, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 100, 95, 83, 63, 64, 55, 45, 255, 192, 192, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 253, 255, 241, 244, 250, 255, 231, 236, 246, 255, 220, 228, 242, 255, 162, 166, 175, 255, 39, 33, 28, 255, 84, 77, 68, 96, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 82, 93, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 164, 143, 255, 168, 159, 138, 255, 163, 153, 130, 255, 157, 145, 122, 255, 220, 228, 242, 255, 209, 219, 238, 255, 173, 183, 199, 255, 31, 42, 57, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 77, 87, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 159, 138, 255, 240, 179, 14, 255, 236, 175, 12, 255, 111, 94, 78, 255, 209, 219, 238, 255, 198, 209, 233, 255, 166, 178, 198, 255, 31, 42, 57, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 73, 84, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 253, 255, 163, 153, 130, 255, 234, 172, 11, 255, 227, 166, 9, 255, 100, 84, 70, 255, 198, 209, 233, 255, 187, 201, 229, 255, 160, 174, 198, 255, 31, 42, 57, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 71, 81, 95, 255, 255, 255, 255, 255, 249, 250, 253, 255, 241, 244, 250, 255, 157, 145, 122, 255, 224, 163, 8, 255, 138, 120, 85, 255, 81, 68, 56, 255, 187, 201, 229, 255, 177, 193, 225, 255, 154, 170, 197, 255, 31, 42, 57, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 68, 78, 93, 255, 249, 250, 253, 255, 191, 195, 202, 255, 186, 191, 201, 255, 151, 137, 113, 255, 214, 153, 4, 255, 209, 147, 2, 255, 67, 57, 46, 255, 158, 173, 198, 255, 153, 170, 197, 255, 150, 167, 196, 255, 31, 42, 57, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 67, 77, 91, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_MessageHelp(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 218, 240, 182, 209, 220, 241, 255, 208, 219, 239, 255, 209, 219, 239, 255, 209, 220, 239, 255, 208, 219, 241, 255, 194, 205, 226, 158, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 208, 219, 241, 92, 211, 220, 241, 255, 228, 232, 245, 255, 253, 252, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 251, 252, 255, 224, 230, 243, 255, 210, 221, 241, 255, 110, 117, 129, 67, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 204, 218, 240, 93, 214, 223, 240, 255, 255, 255, 255, 255, 251, 255, 255, 255, 198, 243, 255, 255, 168, 221, 254, 255, 152, 207, 252, 255, 145, 201, 255, 255, 169, 212, 255, 255, 248, 254, 255, 255, 255, 255, 252, 255, 212, 223, 241, 255, 69, 73, 82, 79, 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0, 0, 212, 222, 241, 255, 255, 255, 255, 255, 206, 233, 255, 255, 112, 178, 255, 255, 135, 175, 236, 255, 223, 226, 236, 255, 244, 240, 235, 255, 224, 228, 241, 255, 120, 164, 246, 255, 77, 140, 254, 255, 202, 222, 255, 255, 255, 255, 253, 255, 210, 221, 240, 255, 0, 0, 0, 54, 0, 0, 0, 2,
+ 207, 218, 240, 193, 239, 241, 246, 255, 219, 234, 255, 255, 73, 138, 255, 255, 92, 135, 222, 255, 255, 255, 238, 255, 253, 252, 254, 255, 161, 185, 231, 255, 255, 255, 250, 255, 254, 249, 243, 255, 60, 114, 224, 255, 53, 112, 230, 255, 238, 243, 255, 255, 224, 231, 244, 255, 110, 117, 129, 182, 0, 0, 0, 31,
+ 212, 222, 241, 255, 255, 255, 255, 255, 106, 152, 245, 255, 42, 102, 226, 255, 109, 139, 200, 255, 227, 234, 240, 255, 81, 126, 215, 255, 0, 48, 189, 255, 126, 156, 215, 255, 255, 255, 255, 255, 101, 140, 218, 255, 20, 83, 209, 255, 118, 154, 226, 255, 254, 253, 254, 255, 188, 198, 217, 241, 0, 0, 0, 84,
+ 215, 224, 241, 255, 230, 237, 251, 255, 50, 106, 219, 255, 51, 104, 211, 255, 40, 94, 202, 255, 33, 88, 201, 255, 25, 84, 201, 255, 16, 75, 193, 255, 198, 208, 226, 255, 255, 255, 255, 255, 63, 112, 208, 255, 32, 90, 205, 255, 56, 106, 206, 255, 251, 251, 252, 255, 211, 222, 239, 254, 0, 0, 0, 105,
+ 217, 225, 242, 255, 202, 216, 243, 255, 34, 91, 205, 255, 50, 102, 207, 255, 47, 100, 204, 255, 43, 96, 204, 255, 31, 85, 196, 255, 168, 181, 207, 255, 255, 255, 255, 255, 122, 156, 224, 255, 26, 83, 199, 255, 43, 96, 205, 255, 41, 94, 198, 255, 237, 241, 245, 255, 213, 223, 240, 254, 0, 0, 0, 173,
+ 216, 225, 243, 255, 214, 222, 242, 255, 30, 86, 197, 255, 50, 102, 206, 255, 49, 101, 204, 255, 33, 90, 204, 255, 105, 134, 194, 255, 255, 255, 255, 255, 145, 173, 232, 255, 15, 74, 196, 255, 45, 98, 204, 255, 40, 95, 203, 255, 43, 94, 195, 255, 241, 242, 243, 255, 214, 224, 242, 254, 0, 0, 0, 177,
+ 215, 224, 243, 255, 251, 250, 248, 255, 50, 98, 197, 255, 38, 92, 202, 255, 51, 103, 206, 255, 35, 91, 203, 255, 105, 137, 202, 255, 223, 231, 247, 255, 56, 107, 208, 255, 35, 90, 202, 255, 49, 101, 205, 255, 27, 83, 195, 255, 80, 120, 199, 255, 253, 252, 248, 255, 196, 205, 224, 248, 0, 0, 0, 175,
+ 207, 217, 238, 225, 249, 250, 250, 255, 144, 168, 216, 255, 13, 72, 189, 255, 46, 98, 205, 255, 41, 96, 205, 255, 58, 107, 203, 255, 104, 142, 216, 255, 41, 94, 202, 255, 45, 98, 204, 255, 41, 93, 201, 255, 16, 71, 185, 255, 189, 201, 224, 255, 232, 237, 246, 255, 128, 135, 149, 218, 0, 0, 0, 157,
+ 134, 143, 159, 50, 215, 225, 242, 255, 255, 255, 248, 255, 88, 125, 199, 255, 12, 69, 187, 255, 19, 78, 198, 255, 149, 164, 194, 255, 255, 255, 255, 255, 111, 146, 217, 255, 15, 74, 193, 255, 11, 69, 184, 255, 128, 154, 206, 255, 255, 255, 248, 255, 214, 224, 242, 255, 0, 0, 0, 168, 0, 0, 0, 102,
+ 0, 0, 0, 3, 179, 189, 208, 169, 226, 234, 245, 255, 255, 255, 244, 255, 128, 154, 207, 255, 21, 76, 183, 255, 60, 100, 185, 255, 154, 175, 217, 255, 35, 88, 192, 255, 36, 86, 185, 255, 159, 175, 213, 255, 255, 255, 247, 255, 217, 226, 244, 255, 70, 75, 83, 200, 0, 0, 0, 140, 0, 0, 0, 34,
+ 0, 0, 0, 0, 0, 0, 0, 15, 160, 169, 188, 186, 216, 227, 244, 255, 251, 250, 248, 255, 226, 226, 228, 255, 162, 177, 207, 255, 150, 171, 212, 255, 187, 198, 221, 255, 240, 241, 236, 255, 242, 243, 246, 255, 214, 225, 242, 255, 93, 98, 108, 206, 0, 0, 0, 148, 0, 0, 0, 69, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 78, 83, 92, 124, 196, 205, 225, 242, 215, 225, 243, 255, 217, 227, 244, 255, 218, 227, 244, 255, 216, 226, 243, 255, 215, 225, 243, 255, 171, 181, 198, 237, 16, 17, 19, 178, 0, 0, 0, 144, 0, 0, 0, 77, 0, 0, 0, 14, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 62, 0, 0, 0, 105, 0, 0, 0, 176, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 105, 0, 0, 0, 105, 0, 0, 0, 46, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_MediaStop(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 141, 179, 253, 255, 138, 176, 250, 255, 134, 173, 246, 255, 129, 168, 243, 255, 125, 163, 239, 255, 120, 158, 234, 255, 116, 155, 231, 255, 112, 151, 227, 255, 110, 149, 226, 242, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 138, 176, 250, 255, 213, 225, 252, 255, 212, 226, 251, 255, 198, 216, 250, 255, 185, 205, 249, 255, 179, 202, 249, 255, 172, 198, 249, 255, 157, 187, 245, 255, 45, 85, 170, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 134, 173, 246, 255, 218, 229, 251, 255, 202, 218, 251, 255, 179, 202, 249, 255, 168, 194, 248, 255, 152, 182, 246, 255, 145, 179, 243, 255, 135, 163, 220, 255, 37, 78, 162, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 129, 168, 243, 255, 211, 225, 251, 255, 186, 206, 249, 255, 165, 191, 248, 255, 148, 179, 243, 255, 133, 168, 242, 255, 122, 159, 235, 255, 108, 141, 208, 255, 30, 70, 154, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 125, 163, 239, 255, 200, 215, 251, 255, 173, 199, 248, 255, 152, 183, 247, 255, 136, 171, 242, 255, 122, 159, 237, 255, 109, 148, 230, 255, 85, 119, 190, 255, 22, 62, 146, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 120, 158, 234, 255, 187, 208, 249, 255, 161, 189, 248, 255, 144, 176, 244, 255, 121, 159, 239, 255, 104, 146, 230, 255, 89, 132, 220, 255, 72, 107, 180, 255, 15, 54, 139, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 116, 155, 231, 255, 175, 201, 249, 255, 148, 181, 245, 255, 126, 163, 237, 255, 108, 149, 230, 255, 89, 133, 218, 255, 78, 121, 206, 255, 67, 101, 172, 255, 9, 48, 133, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 112, 151, 227, 255, 160, 188, 243, 255, 131, 161, 215, 255, 109, 141, 206, 255, 89, 124, 193, 255, 72, 107, 175, 255, 64, 98, 167, 255, 55, 88, 155, 255, 5, 44, 129, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 110, 149, 226, 242, 57, 98, 182, 255, 51, 92, 176, 255, 42, 83, 167, 255, 32, 72, 157, 255, 22, 62, 146, 255, 13, 52, 137, 255, 6, 45, 130, 255, 5, 44, 129, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_FontItalic(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 32, 0, 0, 0, 255, 0, 0, 0, 255, 5, 4, 5, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 84, 0, 0, 0, 255, 5, 4, 5, 84, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 255, 5, 4, 5, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 84, 0, 0, 0, 255, 5, 4, 5, 96, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 255, 5, 4, 5, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 81, 0, 0, 0, 255, 5, 4, 5, 105, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 34, 0, 0, 0, 255, 0, 0, 0, 255, 5, 4, 5, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_FontDialog(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 85, 115, 179, 70, 80, 113, 178, 191, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 104, 133, 190, 255, 81, 113, 177, 255, 134, 161, 214, 84, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 78, 111, 175, 21, 77, 109, 172, 255, 77, 108, 174, 255, 61, 94, 157, 237, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 70, 104, 170, 155, 65, 99, 167, 155, 56, 92, 161, 255, 51, 80, 143, 255, 51, 80, 142, 79, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 65, 98, 166, 244, 58, 93, 161, 21, 54, 86, 150, 203, 50, 79, 142, 255, 48, 78, 139, 216, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 69, 102, 165, 97, 62, 93, 161, 200, 255, 255, 255, 0, 53, 87, 154, 70, 52, 85, 149, 255, 46, 76, 137, 254, 46, 76, 136, 68, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 65, 97, 161, 213, 57, 90, 155, 42, 255, 255, 255, 0, 255, 255, 255, 0, 51, 85, 147, 234, 46, 76, 137, 255, 45, 73, 133, 186, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 64, 94, 157, 35, 58, 91, 154, 255, 49, 80, 143, 208, 46, 75, 135, 213, 48, 79, 142, 213, 46, 78, 141, 244, 44, 73, 133, 255, 34, 59, 108, 253, 33, 58, 106, 36, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 61, 92, 155, 177, 54, 86, 150, 190, 39, 63, 114, 52, 36, 60, 109, 58, 41, 66, 120, 58, 41, 70, 129, 42, 41, 69, 128, 255, 36, 60, 112, 255, 34, 59, 108, 177, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 62, 92, 152, 11, 51, 84, 150, 244, 41, 67, 120, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 39, 65, 120, 148, 33, 58, 106, 255, 32, 56, 104, 237, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 56, 87, 150, 26, 50, 82, 146, 183, 41, 69, 124, 245, 64, 84, 117, 233, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 35, 62, 116, 88, 31, 54, 98, 255, 35, 60, 112, 255, 36, 61, 112, 255, 33, 56, 103, 240, 32, 54, 102, 11, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 47, 78, 139, 21, 41, 69, 124, 42, 34, 58, 105, 42, 31, 52, 96, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 34, 60, 112, 21, 29, 52, 96, 42, 25, 43, 81, 42, 23, 41, 77, 42, 25, 44, 82, 42, 29, 51, 96, 11, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_FileText(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 174, 190, 212, 255, 169, 185, 207, 255, 164, 179, 201, 255, 164, 179, 201, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 178, 194, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 156, 171, 192, 255, 53, 73, 99, 255, 122, 139, 162, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 175, 191, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 251, 252, 254, 255, 149, 164, 185, 255, 186, 197, 212, 255, 53, 73, 99, 255, 122, 139, 162, 169, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 171, 187, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 255, 255, 251, 251, 254, 255, 248, 249, 253, 255, 147, 162, 183, 255, 54, 74, 100, 255, 54, 74, 100, 255, 54, 74, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 167, 182, 204, 255, 255, 255, 255, 255, 50, 106, 216, 255, 48, 102, 208, 255, 45, 96, 196, 255, 42, 89, 183, 255, 40, 82, 168, 255, 243, 246, 252, 255, 239, 244, 251, 255, 147, 162, 183, 255, 147, 162, 183, 255, 54, 74, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 163, 178, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 255, 255, 249, 251, 253, 255, 246, 249, 253, 255, 242, 245, 252, 255, 238, 242, 251, 255, 234, 239, 251, 255, 230, 236, 249, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 158, 174, 195, 255, 254, 254, 254, 255, 50, 106, 216, 255, 48, 102, 208, 255, 46, 96, 196, 255, 43, 89, 183, 255, 39, 82, 167, 255, 37, 75, 153, 255, 34, 69, 142, 255, 223, 232, 248, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 154, 169, 190, 255, 251, 252, 254, 255, 248, 249, 253, 255, 244, 247, 253, 255, 240, 244, 252, 255, 237, 241, 251, 255, 232, 238, 250, 255, 228, 234, 248, 255, 223, 231, 247, 255, 218, 226, 246, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 150, 165, 186, 255, 246, 249, 253, 255, 50, 106, 216, 255, 48, 102, 208, 255, 45, 96, 196, 255, 43, 89, 183, 255, 40, 82, 168, 255, 36, 75, 154, 255, 34, 69, 142, 255, 211, 223, 245, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 147, 162, 183, 255, 243, 246, 252, 255, 238, 242, 251, 255, 234, 239, 251, 255, 230, 235, 249, 255, 225, 232, 249, 255, 219, 229, 247, 255, 215, 225, 246, 255, 211, 222, 244, 255, 205, 218, 243, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 147, 162, 183, 255, 237, 242, 251, 255, 50, 106, 216, 255, 49, 101, 208, 255, 45, 96, 196, 255, 43, 89, 183, 255, 40, 81, 167, 255, 37, 75, 154, 255, 34, 69, 142, 255, 199, 213, 243, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 147, 162, 183, 255, 232, 238, 249, 255, 227, 234, 248, 255, 222, 230, 248, 255, 217, 227, 247, 255, 213, 223, 245, 255, 208, 219, 245, 255, 203, 216, 243, 255, 198, 213, 242, 255, 194, 209, 241, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 147, 162, 183, 255, 226, 233, 249, 255, 221, 230, 248, 255, 216, 226, 247, 255, 211, 222, 245, 255, 206, 219, 244, 255, 202, 215, 243, 255, 197, 212, 242, 255, 193, 208, 241, 255, 188, 205, 240, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 147, 162, 183, 255, 220, 229, 247, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_PrintPreview(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 174, 190, 212, 255, 169, 185, 207, 255, 164, 179, 201, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 178, 194, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 171, 192, 255, 54, 74, 100, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 175, 191, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 164, 185, 255, 186, 197, 212, 255, 54, 74, 100, 255, 164, 179, 201, 140, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 171, 187, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 162, 183, 255, 54, 74, 100, 255, 54, 74, 100, 255, 54, 74, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 167, 182, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 250, 246, 255, 193, 197, 193, 255, 151, 159, 161, 255, 132, 141, 145, 255, 136, 145, 149, 255, 60, 77, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 163, 178, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 246, 255, 178, 184, 184, 255, 188, 194, 196, 255, 231, 235, 236, 255, 226, 232, 235, 255, 164, 174, 178, 255, 99, 108, 117, 255, 93, 108, 122, 16, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 158, 174, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 196, 195, 255, 185, 191, 194, 255, 255, 255, 255, 255, 251, 252, 255, 255, 243, 247, 253, 255, 230, 238, 252, 255, 147, 158, 170, 255, 89, 97, 103, 135, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 154, 169, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 158, 161, 255, 229, 233, 235, 255, 251, 252, 255, 255, 243, 247, 253, 255, 232, 240, 251, 255, 217, 229, 250, 255, 179, 195, 216, 255, 88, 92, 92, 221, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 150, 165, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 151, 154, 255, 228, 233, 237, 255, 243, 247, 253, 255, 232, 239, 252, 255, 217, 229, 249, 255, 200, 217, 247, 255, 153, 173, 200, 255, 83, 86, 86, 221, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 178, 179, 255, 178, 185, 191, 255, 231, 239, 251, 255, 217, 230, 250, 255, 199, 218, 247, 255, 181, 205, 244, 255, 109, 119, 127, 255, 88, 90, 90, 151, 145, 133, 117, 132, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 222, 223, 223, 255, 139, 143, 147, 255, 157, 168, 180, 255, 176, 195, 215, 255, 152, 174, 200, 255, 109, 118, 127, 255, 87, 89, 85, 255, 168, 144, 93, 255, 178, 152, 111, 254, 145, 133, 117, 132, 255, 255, 255, 0,
+ 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 238, 241, 247, 255, 212, 215, 215, 255, 146, 151, 151, 255, 103, 106, 108, 255, 98, 100, 102, 255, 91, 87, 81, 255, 147, 115, 67, 255, 231, 160, 71, 255, 253, 198, 97, 255, 161, 142, 114, 254, 145, 133, 117, 78,
+ 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 133, 134, 140, 255, 104, 77, 52, 255, 208, 127, 53, 255, 228, 152, 65, 255, 237, 179, 87, 255, 118, 103, 79, 255,
+ 255, 255, 255, 0, 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 70, 74, 84, 255, 103, 76, 51, 255, 189, 119, 56, 255, 102, 72, 45, 255, 89, 76, 55, 81,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 104, 77, 52, 84, 60, 49, 39, 255, 72, 58, 37, 84, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_Zoom(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 146, 158, 176, 4, 217, 222, 227, 75, 182, 192, 203, 154, 151, 164, 182, 195, 136, 151, 170, 217, 116, 132, 154, 229, 124, 141, 163, 190, 160, 178, 213, 78, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 186, 194, 207, 128, 149, 161, 178, 208, 177, 189, 200, 247, 187, 203, 214, 255, 187, 212, 222, 255, 152, 178, 195, 255, 118, 144, 165, 255, 82, 104, 132, 236, 86, 109, 135, 92, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 84, 104, 134, 26, 146, 158, 176, 201, 189, 198, 209, 253, 234, 244, 246, 255, 230, 246, 249, 255, 222, 242, 246, 255, 206, 234, 244, 255, 178, 212, 229, 255, 128, 158, 181, 255, 70, 91, 119, 250, 69, 88, 115, 36, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 189, 196, 207, 158, 164, 176, 190, 243, 227, 235, 240, 255, 244, 250, 251, 255, 241, 249, 251, 255, 234, 245, 250, 255, 215, 237, 245, 255, 191, 223, 241, 255, 164, 203, 230, 255, 104, 133, 158, 255, 61, 82, 111, 130, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 148, 160, 178, 213, 182, 196, 207, 255, 234, 245, 249, 255, 243, 250, 252, 255, 244, 251, 252, 255, 238, 246, 251, 255, 218, 237, 246, 255, 193, 222, 240, 255, 169, 207, 236, 255, 125, 162, 192, 255, 60, 81, 112, 239, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 113, 129, 151, 255, 196, 218, 227, 255, 222, 241, 247, 255, 235, 246, 250, 255, 238, 248, 251, 255, 230, 243, 249, 255, 211, 233, 244, 255, 190, 220, 239, 255, 165, 202, 231, 255, 130, 166, 204, 255, 63, 84, 114, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 128, 143, 165, 221, 164, 188, 205, 255, 204, 232, 244, 255, 215, 238, 246, 255, 218, 239, 247, 255, 210, 234, 244, 255, 197, 226, 242, 255, 179, 213, 236, 255, 157, 195, 227, 255, 114, 148, 181, 255, 56, 76, 108, 206, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 127, 142, 163, 162, 125, 150, 173, 247, 186, 223, 242, 255, 193, 225, 243, 255, 193, 225, 242, 255, 187, 222, 240, 255, 178, 216, 237, 255, 163, 203, 231, 255, 135, 173, 211, 255, 87, 115, 146, 255, 86, 95, 102, 244, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 105, 122, 149, 20, 83, 102, 130, 241, 139, 171, 193, 255, 170, 209, 236, 255, 174, 210, 238, 255, 167, 207, 236, 255, 158, 199, 231, 255, 138, 178, 216, 255, 98, 129, 161, 255, 66, 86, 114, 255, 165, 147, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 84, 104, 134, 70, 77, 98, 129, 245, 101, 129, 157, 255, 126, 162, 191, 255, 135, 173, 208, 255, 115, 149, 180, 255, 89, 117, 147, 255, 64, 84, 110, 255, 145, 128, 79, 255, 239, 216, 135, 255, 165, 147, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 84, 104, 134, 49, 120, 141, 173, 155, 66, 88, 117, 200, 59, 80, 112, 243, 67, 88, 119, 255, 87, 108, 143, 225, 75, 77, 73, 117, 66, 52, 45, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 87, 76, 43, 1, 255, 255, 255, 0, 79, 80, 77, 82, 79, 80, 77, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 79, 80, 77, 82, 79, 80, 77, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 87, 76, 43, 2, 255, 255, 255, 0, 79, 80, 77, 82, 79, 80, 77, 255, 179, 141, 50, 255, 116, 102, 67, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 79, 80, 77, 58, 79, 80, 77, 202, 79, 80, 77, 81, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ZoomSelection(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 158, 203, 28, 194, 201, 211, 127, 150, 163, 181, 195, 129, 144, 164, 221, 120, 137, 159, 203, 160, 176, 212, 78, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 29, 36, 45, 9, 169, 178, 194, 176, 184, 195, 206, 241, 201, 217, 226, 255, 189, 214, 224, 255, 149, 177, 195, 255, 97, 121, 148, 242, 179, 185, 194, 255, 8, 9, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 154, 165, 183, 114, 176, 187, 199, 237, 232, 239, 243, 255, 237, 248, 250, 255, 224, 241, 247, 255, 195, 225, 240, 255, 152, 188, 214, 255, 65, 84, 106, 255, 21, 28, 38, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 148, 160, 178, 213, 199, 212, 221, 255, 240, 248, 251, 255, 244, 251, 252, 255, 231, 243, 249, 255, 201, 227, 242, 255, 169, 207, 236, 255, 100, 132, 161, 255, 20, 27, 38, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 118, 134, 155, 244, 196, 218, 228, 255, 224, 242, 248, 255, 231, 245, 250, 255, 218, 237, 246, 255, 193, 222, 240, 255, 162, 200, 230, 255, 105, 136, 169, 255, 20, 27, 38, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255, 255, 163, 174, 189, 255, 153, 180, 199, 255, 198, 228, 244, 255, 201, 230, 244, 255, 191, 224, 240, 255, 174, 211, 235, 255, 142, 180, 216, 255, 94, 118, 143, 255, 25, 30, 35, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 127, 153, 21, 101, 124, 151, 246, 160, 196, 222, 255, 174, 210, 238, 255, 164, 204, 234, 255, 145, 185, 221, 255, 98, 129, 161, 255, 99, 106, 109, 255, 55, 49, 34, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 80, 103, 91, 98, 122, 152, 208, 106, 137, 166, 237, 106, 137, 171, 252, 92, 119, 150, 248, 67, 81, 97, 209, 154, 133, 80, 255, 202, 178, 109, 255, 55, 49, 34, 85, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 12, 15, 5, 36, 43, 54, 40, 22, 29, 39, 67, 20, 28, 38, 83, 27, 34, 45, 79, 25, 26, 24, 39, 88, 82, 66, 178, 181, 150, 71, 255, 214, 193, 123, 255, 73, 65, 44, 113, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 26, 28, 79, 80, 77, 197, 198, 151, 43, 255, 214, 193, 123, 255, 55, 49, 33, 85,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 0, 1, 34, 35, 34, 36, 79, 80, 78, 189, 132, 112, 63, 224, 35, 32, 23, 66,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 19, 26, 26, 26, 54, 9, 9, 8, 9};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ZoomOut(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 127, 127, 191, 4, 217, 220, 227, 75, 182, 192, 203, 154, 150, 163, 181, 195, 136, 150, 170, 217, 115, 132, 153, 229, 123, 140, 162, 190, 160, 176, 212, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 185, 193, 207, 128, 149, 160, 177, 208, 176, 188, 200, 247, 187, 203, 214, 255, 187, 212, 222, 255, 152, 178, 195, 255, 118, 144, 165, 255, 82, 103, 131, 236, 85, 108, 135, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 88, 107, 137, 26, 145, 158, 176, 201, 189, 197, 208, 253, 234, 244, 246, 255, 230, 246, 249, 255, 222, 242, 246, 255, 206, 234, 244, 255, 178, 212, 229, 255, 128, 158, 181, 255, 70, 90, 119, 250, 70, 84, 113, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 188, 195, 206, 158, 163, 176, 189, 243, 227, 235, 240, 255, 244, 250, 251, 255, 241, 249, 251, 255, 234, 245, 250, 255, 215, 237, 245, 255, 191, 223, 241, 255, 164, 203, 230, 255, 104, 133, 158, 255, 60, 82, 111, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 148, 160, 178, 213, 182, 196, 207, 255, 234, 245, 249, 255, 243, 250, 252, 255, 244, 251, 252, 255, 238, 246, 251, 255, 218, 237, 246, 255, 193, 222, 240, 255, 169, 207, 236, 255, 125, 162, 192, 255, 59, 81, 112, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 113, 129, 151, 255, 196, 218, 227, 255, 222, 241, 247, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 165, 202, 231, 255, 130, 166, 204, 255, 63, 84, 114, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 143, 164, 221, 164, 188, 205, 255, 204, 232, 244, 255, 215, 238, 246, 255, 218, 239, 247, 255, 210, 234, 244, 255, 197, 226, 242, 255, 179, 213, 236, 255, 157, 195, 227, 255, 114, 148, 181, 255, 55, 75, 107, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 127, 141, 163, 162, 124, 149, 173, 247, 186, 223, 242, 255, 193, 225, 243, 255, 193, 225, 242, 255, 187, 222, 240, 255, 178, 216, 237, 255, 163, 203, 231, 255, 135, 173, 211, 255, 87, 115, 146, 255, 85, 95, 102, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 102, 127, 153, 20, 82, 101, 130, 241, 139, 171, 193, 255, 170, 209, 236, 255, 174, 210, 238, 255, 167, 207, 236, 255, 158, 199, 231, 255, 138, 178, 216, 255, 98, 129, 161, 255, 66, 86, 114, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83, 105, 134, 70, 77, 97, 129, 245, 101, 129, 157, 255, 126, 162, 191, 255, 135, 173, 208, 255, 115, 149, 180, 255, 89, 117, 147, 255, 64, 84, 110, 255, 145, 128, 79, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 83, 104, 135, 49, 120, 141, 172, 155, 66, 87, 117, 200, 58, 79, 112, 243, 67, 88, 119, 255, 87, 107, 142, 225, 74, 76, 71, 117, 66, 52, 45, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 77, 80, 77, 82, 79, 80, 77, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 80, 77, 82, 79, 80, 77, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 0, 2, 0, 0, 0, 0, 77, 80, 77, 82, 79, 80, 77, 255, 179, 141, 50, 255, 116, 102, 67, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 79, 58, 79, 79, 77, 202, 78, 78, 75, 81, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_EditCut(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 169, 178, 191, 139, 155, 166, 178, 228, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 47, 220, 224, 229, 238, 123, 133, 148, 176, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 157, 172, 52, 140, 150, 163, 254, 122, 133, 153, 25, 255, 255, 255, 0, 246, 247, 248, 133, 171, 178, 188, 254, 100, 108, 122, 92, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 146, 155, 169, 250, 147, 156, 171, 163, 255, 255, 255, 15, 230, 232, 236, 233, 102, 111, 124, 254, 22, 18, 14, 33, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 169, 177, 190, 242, 138, 147, 161, 249, 200, 204, 209, 128, 193, 198, 206, 251, 86, 95, 107, 253, 22, 18, 14, 27, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 161, 170, 184, 179, 139, 148, 162, 254, 141, 150, 161, 191, 119, 129, 142, 254, 76, 82, 91, 234, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 137, 145, 161, 65, 116, 128, 142, 254, 99, 110, 126, 254, 85, 93, 105, 253, 70, 75, 82, 170, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 110, 132, 238, 86, 96, 113, 255, 84, 102, 134, 252, 79, 96, 132, 88, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 91, 136, 238, 45, 88, 137, 235, 179, 84, 131, 224, 249, 75, 118, 202, 173, 76, 119, 205, 251, 78, 122, 211, 247, 76, 117, 203, 159, 70, 107, 185, 74, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 88, 135, 234, 49, 89, 140, 238, 243, 83, 128, 220, 247, 59, 91, 158, 244, 53, 82, 142, 221, 70, 110, 190, 236, 79, 123, 213, 255, 69, 107, 185, 255, 58, 92, 159, 144, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 86, 135, 231, 176, 86, 134, 229, 255, 65, 102, 176, 255, 53, 82, 142, 248, 53, 82, 141, 180, 75, 116, 202, 250, 79, 121, 213, 24, 66, 104, 178, 96, 52, 83, 143, 250, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 85, 132, 226, 250, 82, 129, 222, 49, 66, 101, 178, 48, 51, 80, 139, 250, 53, 82, 141, 18, 80, 123, 213, 250, 77, 120, 205, 48, 56, 88, 150, 107, 43, 64, 106, 251, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 83, 130, 222, 250, 79, 118, 210, 48, 62, 99, 172, 98, 49, 76, 132, 250, 255, 255, 255, 0, 75, 116, 199, 205, 62, 98, 170, 255, 41, 60, 99, 255, 28, 31, 41, 244, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 78, 121, 209, 206, 63, 98, 171, 255, 51, 80, 138, 255, 39, 54, 87, 227, 22, 18, 14, 3, 63, 100, 172, 89, 42, 59, 96, 238, 39, 55, 88, 239, 51, 79, 135, 104, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 67, 104, 180, 88, 54, 84, 146, 227, 40, 58, 93, 238, 49, 74, 124, 110, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_FileProperties(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 172, 164, 143, 57, 172, 164, 143, 255, 169, 161, 140, 255, 165, 156, 136, 255, 160, 150, 131, 255, 154, 144, 126, 255, 150, 139, 122, 255, 150, 139, 122, 122, 156, 184, 153, 255, 166, 193, 174, 255,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 172, 164, 143, 57, 172, 164, 143, 255, 246, 225, 131, 255, 246, 225, 131, 255, 246, 225, 131, 255, 244, 219, 119, 255, 242, 210, 101, 255, 207, 178, 95, 255, 150, 139, 122, 255, 166, 193, 174, 255, 154, 211, 147, 255,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 172, 164, 143, 57, 172, 164, 143, 255, 246, 225, 131, 255, 114, 91, 64, 255, 246, 225, 131, 255, 244, 219, 119, 255, 242, 210, 101, 255, 239, 201, 80, 255, 235, 191, 59, 255, 233, 182, 41, 255, 131, 165, 118, 255, 120, 192, 93, 255,
+ 167, 182, 204, 255, 167, 182, 204, 255, 166, 181, 202, 255, 166, 176, 189, 255, 172, 164, 143, 255, 246, 225, 131, 255, 112, 97, 75, 255, 246, 225, 131, 255, 115, 89, 60, 255, 242, 210, 101, 255, 239, 201, 80, 255, 235, 191, 59, 255, 228, 178, 39, 255, 214, 163, 28, 255, 110, 149, 100, 255, 108, 180, 83, 255,
+ 166, 181, 203, 255, 254, 254, 254, 255, 234, 234, 228, 255, 172, 164, 143, 255, 246, 225, 131, 255, 112, 97, 75, 255, 226, 205, 122, 255, 111, 97, 76, 255, 242, 210, 101, 255, 113, 93, 69, 255, 223, 178, 50, 255, 200, 153, 29, 255, 179, 136, 26, 255, 109, 83, 31, 255, 88, 132, 79, 255, 100, 172, 76, 255,
+ 165, 179, 201, 255, 254, 254, 254, 255, 172, 164, 143, 255, 229, 211, 134, 255, 112, 97, 75, 255, 189, 184, 175, 255, 112, 97, 74, 255, 222, 193, 97, 255, 111, 97, 76, 255, 233, 182, 41, 255, 51, 39, 21, 255, 58, 44, 16, 255, 53, 41, 23, 255, 44, 34, 20, 145, 67, 116, 61, 255, 97, 167, 75, 255,
+ 162, 177, 199, 255, 252, 253, 254, 255, 233, 233, 226, 255, 132, 117, 94, 255, 227, 227, 223, 255, 246, 255, 255, 255, 201, 200, 194, 255, 112, 97, 74, 255, 214, 169, 46, 255, 71, 53, 35, 255, 153, 163, 175, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 67, 116, 61, 114, 76, 130, 65, 255,
+ 160, 176, 197, 255, 246, 255, 255, 255, 246, 255, 255, 255, 246, 255, 255, 255, 246, 255, 255, 255, 246, 255, 255, 255, 239, 250, 253, 255, 197, 196, 193, 255, 114, 92, 65, 255, 205, 222, 242, 255, 192, 211, 238, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 67, 116, 61, 15,
+ 158, 174, 195, 255, 246, 255, 255, 255, 246, 255, 255, 255, 246, 255, 255, 255, 246, 255, 255, 255, 239, 249, 253, 255, 229, 242, 250, 255, 217, 232, 246, 255, 205, 222, 243, 255, 192, 211, 238, 255, 178, 200, 234, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 156, 170, 192, 255, 246, 255, 255, 255, 156, 166, 183, 255, 152, 163, 182, 255, 239, 249, 253, 255, 144, 156, 179, 255, 141, 153, 178, 255, 139, 152, 177, 255, 139, 152, 177, 255, 139, 152, 177, 255, 165, 190, 230, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 153, 168, 190, 255, 246, 255, 255, 255, 246, 255, 255, 255, 239, 250, 253, 255, 229, 242, 250, 255, 218, 232, 246, 255, 205, 222, 242, 255, 192, 211, 238, 255, 178, 200, 234, 255, 166, 190, 230, 255, 154, 180, 227, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 152, 166, 188, 255, 246, 255, 255, 255, 156, 165, 184, 255, 152, 162, 182, 255, 218, 232, 246, 255, 144, 157, 179, 255, 141, 154, 178, 255, 139, 152, 177, 255, 139, 152, 177, 255, 139, 152, 177, 255, 144, 173, 223, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 150, 165, 186, 255, 239, 250, 252, 255, 230, 242, 250, 255, 218, 233, 246, 255, 205, 222, 242, 255, 191, 211, 238, 255, 178, 200, 234, 255, 165, 190, 230, 255, 154, 180, 226, 255, 144, 173, 223, 255, 137, 167, 221, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 149, 163, 185, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ArrowUp(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 159, 184, 146, 255, 69, 85, 68, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 180, 206, 166, 255, 213, 241, 198, 255, 86, 104, 82, 255, 73, 90, 71, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 174, 200, 160, 255, 215, 244, 199, 255, 197, 238, 175, 255, 129, 166, 111, 255, 80, 97, 77, 255, 73, 90, 71, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 174, 200, 160, 255, 215, 244, 199, 255, 191, 235, 168, 255, 173, 225, 146, 255, 165, 218, 139, 255, 117, 154, 101, 255, 100, 117, 95, 255, 44, 54, 43, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 166, 192, 152, 255, 208, 240, 190, 255, 191, 235, 168, 255, 171, 224, 145, 255, 163, 216, 137, 255, 141, 189, 118, 255, 123, 171, 104, 255, 92, 128, 79, 255, 53, 64, 51, 255, 44, 54, 43, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 167, 193, 153, 255, 90, 108, 86, 255, 75, 91, 72, 255, 71, 87, 69, 255, 185, 224, 166, 255, 149, 202, 126, 255, 121, 168, 102, 255, 60, 73, 58, 255, 53, 64, 51, 255, 50, 61, 49, 255, 44, 54, 43, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 169, 136, 255, 174, 213, 157, 255, 134, 187, 112, 255, 107, 155, 90, 255, 53, 64, 51, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 162, 131, 255, 162, 202, 147, 255, 118, 172, 99, 255, 93, 142, 78, 255, 44, 54, 43, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 156, 127, 255, 151, 192, 137, 255, 91, 139, 75, 255, 80, 129, 67, 255, 35, 43, 34, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 151, 123, 255, 60, 73, 58, 255, 53, 64, 51, 255, 44, 54, 43, 255, 28, 34, 27, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ArrowDown(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 162, 188, 149, 255, 156, 180, 144, 255, 147, 170, 137, 255, 140, 161, 130, 255, 132, 152, 124, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 156, 180, 144, 255, 201, 241, 180, 255, 198, 239, 177, 255, 190, 233, 169, 255, 35, 43, 34, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 170, 137, 255, 196, 238, 174, 255, 173, 226, 147, 255, 134, 179, 115, 255, 44, 54, 43, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 140, 161, 130, 255, 191, 234, 170, 255, 163, 216, 139, 255, 125, 170, 106, 255, 53, 64, 51, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 156, 180, 144, 255, 147, 170, 137, 255, 140, 161, 130, 255, 132, 152, 124, 255, 185, 228, 164, 255, 152, 205, 129, 255, 116, 160, 98, 255, 60, 73, 58, 255, 127, 146, 120, 255, 127, 146, 120, 255, 127, 146, 120, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 166, 192, 152, 72, 132, 151, 123, 255, 184, 225, 165, 255, 187, 229, 168, 255, 182, 224, 163, 255, 140, 193, 118, 255, 106, 151, 90, 255, 96, 141, 81, 255, 78, 119, 67, 255, 28, 34, 27, 255, 44, 54, 43, 51, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 153, 176, 141, 100, 132, 151, 123, 255, 150, 199, 128, 255, 140, 193, 118, 255, 128, 181, 108, 255, 116, 170, 98, 255, 78, 119, 67, 255, 28, 34, 27, 255, 37, 45, 36, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 153, 176, 141, 100, 132, 151, 123, 255, 128, 178, 109, 255, 116, 170, 98, 255, 78, 119, 67, 255, 28, 34, 27, 255, 54, 66, 53, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 153, 176, 141, 100, 132, 151, 123, 255, 100, 146, 86, 255, 28, 34, 27, 255, 54, 66, 53, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 153, 177, 141, 99, 103, 118, 96, 255, 53, 65, 52, 82, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ViewFullScreen(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 166, 181, 203, 255, 165, 180, 202, 255, 164, 179, 201, 255, 163, 178, 200, 255, 162, 177, 199, 255, 161, 176, 197, 255, 159, 174, 196, 255, 158, 173, 195, 255, 157, 172, 193, 255, 155, 170, 192, 255, 154, 169, 190, 255, 153, 168, 189, 255, 152, 167, 188, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 166, 181, 203, 255, 254, 255, 253, 255, 253, 254, 253, 255, 251, 253, 253, 255, 249, 252, 253, 255, 247, 251, 253, 255, 245, 249, 253, 255, 243, 247, 253, 255, 240, 246, 254, 255, 238, 244, 254, 255, 235, 242, 254, 255, 232, 240, 254, 255, 230, 239, 254, 255, 227, 237, 254, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 165, 180, 202, 255, 253, 254, 253, 255, 135, 159, 206, 255, 120, 147, 200, 255, 111, 140, 199, 255, 109, 139, 200, 255, 102, 134, 200, 255, 90, 126, 198, 255, 79, 119, 196, 255, 71, 113, 195, 255, 63, 107, 195, 255, 57, 103, 196, 255, 69, 116, 204, 255, 224, 235, 254, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 164, 179, 201, 255, 251, 253, 253, 255, 116, 143, 199, 255, 206, 223, 255, 255, 200, 219, 255, 255, 192, 214, 255, 255, 183, 209, 254, 255, 174, 202, 253, 255, 165, 195, 253, 255, 155, 189, 252, 255, 145, 182, 251, 255, 135, 175, 250, 255, 64, 120, 228, 255, 221, 233, 254, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 163, 178, 200, 255, 249, 252, 253, 255, 114, 142, 198, 255, 201, 220, 255, 255, 232, 240, 255, 255, 229, 238, 255, 255, 224, 236, 255, 255, 165, 195, 253, 255, 155, 189, 252, 255, 145, 182, 251, 255, 136, 175, 250, 255, 114, 156, 240, 255, 58, 116, 227, 255, 219, 231, 254, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 162, 177, 199, 255, 247, 251, 253, 255, 114, 142, 198, 255, 194, 215, 255, 255, 184, 209, 254, 255, 175, 203, 253, 255, 166, 196, 253, 255, 156, 189, 252, 255, 145, 181, 251, 255, 132, 171, 247, 255, 119, 160, 242, 255, 106, 148, 236, 255, 57, 115, 227, 255, 216, 230, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 161, 176, 197, 255, 245, 249, 253, 255, 114, 142, 198, 255, 185, 210, 254, 255, 225, 236, 255, 255, 221, 233, 255, 255, 217, 231, 255, 255, 213, 228, 255, 255, 209, 225, 255, 255, 204, 221, 255, 255, 200, 219, 255, 255, 98, 140, 229, 255, 57, 115, 227, 255, 214, 228, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 159, 174, 196, 255, 243, 247, 253, 255, 114, 142, 198, 255, 177, 204, 253, 255, 167, 197, 253, 255, 157, 190, 252, 255, 143, 179, 249, 255, 131, 170, 246, 255, 120, 161, 243, 255, 111, 152, 237, 255, 102, 142, 230, 255, 90, 130, 222, 255, 57, 114, 226, 255, 212, 226, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 158, 173, 195, 255, 240, 246, 254, 255, 114, 142, 198, 255, 168, 197, 253, 255, 217, 231, 255, 255, 214, 228, 255, 255, 209, 225, 255, 255, 204, 221, 255, 255, 200, 219, 255, 255, 194, 213, 255, 255, 188, 208, 255, 255, 83, 121, 214, 255, 57, 114, 226, 255, 210, 225, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 157, 172, 193, 255, 238, 244, 254, 255, 116, 144, 199, 255, 158, 191, 252, 255, 136, 173, 243, 255, 127, 167, 243, 255, 115, 157, 240, 255, 106, 149, 236, 255, 98, 140, 229, 255, 90, 130, 222, 255, 83, 121, 214, 255, 75, 112, 205, 255, 58, 115, 226, 255, 208, 224, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 155, 170, 192, 255, 235, 242, 254, 255, 125, 151, 203, 255, 127, 157, 219, 255, 128, 163, 234, 255, 119, 157, 233, 255, 109, 151, 232, 255, 99, 144, 231, 255, 89, 136, 230, 255, 79, 130, 229, 255, 70, 124, 228, 255, 63, 120, 228, 255, 74, 126, 229, 255, 206, 223, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 154, 169, 190, 255, 232, 240, 254, 255, 230, 239, 254, 255, 227, 237, 254, 255, 224, 235, 254, 255, 221, 233, 254, 255, 219, 231, 254, 255, 216, 230, 255, 255, 214, 228, 255, 255, 212, 226, 255, 255, 210, 225, 255, 255, 208, 224, 255, 255, 206, 223, 255, 255, 205, 222, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_MediaGoToEnd(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 53, 96, 140, 228, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 113, 154, 231, 255, 95, 147, 237, 63, 96, 140, 228, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 113, 154, 231, 255, 128, 158, 231, 250, 93, 136, 225, 236, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 109, 153, 230, 255, 96, 139, 222, 255, 94, 144, 235, 74, 96, 140, 228, 6, 255, 255, 255, 0, 255, 255, 255, 0, 109, 153, 230, 255, 170, 196, 239, 255, 87, 135, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 104, 148, 229, 255, 158, 191, 251, 255, 82, 128, 217, 253, 96, 140, 228, 107, 96, 140, 228, 6, 255, 255, 255, 0, 104, 148, 229, 255, 161, 190, 240, 255, 83, 128, 214, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 255, 155, 190, 250, 255, 137, 181, 253, 255, 70, 117, 211, 255, 96, 140, 228, 110, 96, 140, 228, 6, 96, 140, 228, 255, 150, 180, 239, 255, 79, 123, 208, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 89, 138, 226, 255, 148, 182, 250, 255, 116, 165, 253, 255, 96, 151, 253, 255, 60, 109, 205, 255, 96, 140, 228, 110, 89, 138, 226, 255, 141, 171, 240, 255, 74, 117, 200, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 81, 131, 225, 255, 133, 173, 239, 255, 96, 151, 253, 255, 51, 116, 244, 255, 27, 91, 214, 255, 51, 89, 166, 255, 81, 131, 225, 255, 126, 159, 238, 255, 68, 111, 192, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 72, 122, 223, 255, 116, 157, 238, 255, 51, 116, 244, 255, 27, 91, 214, 255, 33, 68, 140, 255, 27, 76, 171, 136, 72, 122, 223, 255, 111, 150, 236, 255, 63, 104, 183, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 63, 117, 221, 255, 81, 132, 230, 255, 27, 91, 214, 255, 33, 68, 140, 255, 27, 76, 169, 127, 255, 255, 255, 0, 63, 117, 221, 255, 107, 147, 235, 255, 56, 96, 175, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 56, 110, 220, 255, 60, 112, 212, 255, 33, 68, 140, 255, 27, 76, 169, 106, 255, 255, 255, 0, 255, 255, 255, 0, 56, 110, 220, 255, 101, 143, 235, 255, 51, 89, 166, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 49, 106, 219, 255, 33, 68, 140, 255, 26, 74, 167, 119, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 49, 106, 219, 255, 86, 132, 233, 255, 45, 83, 158, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 44, 102, 216, 255, 27, 76, 172, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 44, 102, 216, 255, 78, 123, 225, 255, 40, 77, 150, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 26, 75, 173, 132, 27, 75, 168, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 62, 106, 211, 250, 36, 72, 144, 255, 36, 72, 144, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ArrowLeft(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 167, 193, 153, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 166, 192, 152, 255, 90, 108, 86, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 174, 200, 160, 255, 208, 240, 190, 255, 75, 91, 72, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 174, 200, 160, 255, 215, 244, 199, 255, 191, 235, 168, 255, 71, 87, 69, 255, 147, 169, 136, 255, 141, 162, 131, 255, 137, 156, 127, 255, 132, 151, 123, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 180, 206, 166, 255, 215, 244, 199, 255, 191, 235, 168, 255, 171, 224, 145, 255, 185, 224, 166, 255, 174, 213, 157, 255, 162, 202, 147, 255, 151, 192, 137, 255, 60, 73, 58, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 184, 146, 255, 213, 241, 198, 255, 197, 238, 175, 255, 173, 225, 146, 255, 163, 216, 137, 255, 149, 202, 126, 255, 134, 187, 112, 255, 118, 172, 99, 255, 91, 139, 75, 255, 53, 64, 51, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 85, 68, 57, 86, 104, 82, 255, 129, 166, 111, 255, 165, 218, 139, 255, 141, 189, 118, 255, 121, 168, 102, 255, 107, 155, 90, 255, 93, 142, 78, 255, 80, 129, 67, 255, 44, 54, 43, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 90, 71, 51, 80, 97, 77, 255, 117, 154, 101, 255, 123, 171, 104, 255, 60, 73, 58, 255, 53, 64, 51, 255, 44, 54, 43, 255, 35, 43, 34, 255, 28, 34, 27, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 90, 71, 51, 100, 117, 95, 255, 92, 128, 79, 255, 53, 64, 51, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 54, 43, 51, 53, 64, 51, 255, 50, 61, 49, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 54, 43, 51, 44, 54, 43, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ActionCancel(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 236, 206, 209, 109, 238, 209, 210, 255, 222, 157, 161, 255, 217, 135, 138, 255, 215, 132, 136, 255, 209, 122, 128, 255, 210, 140, 146, 255, 231, 196, 199, 255, 236, 206, 209, 109, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 236, 206, 209, 0, 229, 181, 183, 255, 224, 139, 141, 255, 239, 163, 161, 255, 241, 161, 159, 255, 239, 143, 145, 255, 226, 120, 124, 255, 205, 97, 103, 255, 192, 92, 100, 255, 218, 163, 167, 255, 236, 206, 209, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 236, 206, 209, 0, 222, 153, 156, 255, 235, 156, 155, 255, 254, 213, 201, 255, 255, 214, 203, 255, 255, 181, 177, 255, 251, 148, 151, 255, 236, 122, 127, 255, 224, 110, 115, 255, 213, 100, 105, 255, 194, 86, 93, 255, 202, 125, 131, 255, 236, 206, 209, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 227, 173, 175, 255, 237, 159, 157, 255, 255, 230, 215, 255, 248, 211, 196, 255, 245, 173, 167, 255, 250, 159, 157, 255, 240, 131, 134, 255, 228, 115, 119, 255, 214, 99, 104, 255, 201, 85, 90, 255, 205, 94, 98, 255, 192, 83, 89, 255, 202, 128, 134, 255, 236, 206, 209, 109, 255, 255, 255, 0,
+ 236, 206, 209, 109, 222, 134, 135, 255, 255, 223, 209, 255, 243, 203, 192, 255, 209, 134, 135, 255, 206, 115, 119, 255, 224, 119, 119, 255, 228, 116, 119, 255, 211, 92, 96, 255, 198, 96, 101, 255, 208, 138, 144, 255, 196, 97, 102, 255, 197, 87, 92, 255, 185, 77, 84, 255, 223, 175, 179, 255, 255, 255, 255, 0,
+ 217, 154, 158, 255, 238, 173, 167, 255, 253, 217, 200, 255, 223, 151, 149, 255, 235, 211, 215, 255, 241, 223, 224, 255, 203, 109, 114, 255, 196, 74, 80, 255, 195, 88, 94, 255, 231, 193, 196, 255, 255, 255, 255, 255, 217, 160, 164, 255, 193, 80, 85, 255, 192, 82, 88, 255, 190, 100, 106, 255, 236, 206, 209, 109,
+ 201, 114, 120, 255, 247, 178, 171, 255, 255, 186, 175, 255, 242, 157, 153, 255, 247, 202, 203, 255, 255, 254, 254, 255, 242, 219, 220, 255, 200, 118, 123, 255, 232, 194, 197, 255, 255, 255, 255, 255, 241, 205, 206, 255, 209, 106, 110, 255, 197, 84, 88, 255, 192, 83, 89, 255, 184, 80, 88, 255, 231, 196, 199, 255,
+ 200, 103, 108, 255, 252, 159, 157, 255, 253, 158, 154, 255, 239, 131, 130, 255, 225, 113, 115, 255, 232, 173, 177, 255, 252, 249, 249, 255, 254, 252, 253, 255, 254, 255, 255, 255, 235, 192, 194, 255, 207, 94, 100, 255, 201, 80, 85, 255, 198, 87, 92, 255, 192, 83, 89, 255, 184, 82, 89, 255, 222, 175, 179, 255,
+ 198, 95, 103, 255, 241, 130, 134, 255, 240, 130, 131, 255, 228, 117, 119, 255, 208, 83, 90, 255, 198, 91, 97, 255, 240, 218, 218, 255, 255, 255, 255, 255, 252, 251, 251, 255, 205, 121, 126, 255, 192, 67, 73, 255, 202, 86, 91, 255, 197, 86, 91, 255, 190, 83, 89, 255, 184, 82, 89, 255, 221, 173, 177, 255,
+ 197, 105, 112, 255, 219, 107, 113, 255, 227, 114, 118, 255, 211, 93, 98, 255, 197, 90, 97, 255, 223, 181, 183, 255, 251, 243, 244, 255, 242, 213, 215, 255, 252, 244, 244, 255, 242, 224, 226, 255, 204, 124, 128, 255, 192, 73, 80, 255, 195, 84, 89, 255, 188, 82, 88, 255, 183, 79, 87, 255, 222, 177, 181, 255,
+ 216, 158, 163, 255, 198, 87, 94, 255, 216, 101, 106, 255, 210, 112, 118, 255, 231, 199, 201, 255, 255, 255, 255, 255, 235, 188, 190, 255, 206, 92, 97, 255, 221, 142, 146, 255, 253, 245, 244, 255, 247, 238, 239, 255, 218, 156, 160, 255, 192, 82, 87, 255, 185, 78, 84, 255, 184, 84, 91, 255, 237, 212, 214, 255,
+ 236, 206, 209, 109, 191, 93, 101, 255, 202, 87, 94, 255, 217, 131, 135, 255, 251, 241, 241, 255, 236, 191, 193, 255, 204, 92, 96, 255, 200, 75, 80, 255, 200, 74, 79, 255, 215, 129, 133, 255, 251, 241, 240, 255, 233, 196, 197, 255, 187, 79, 83, 255, 180, 72, 78, 255, 202, 124, 131, 255, 236, 206, 209, 109,
+ 255, 255, 255, 0, 227, 185, 189, 255, 186, 76, 82, 255, 203, 97, 100, 255, 211, 120, 124, 255, 203, 99, 104, 255, 197, 79, 85, 255, 200, 88, 93, 255, 198, 83, 88, 255, 194, 78, 83, 255, 204, 116, 119, 255, 197, 102, 107, 255, 182, 76, 81, 255, 183, 83, 91, 255, 236, 206, 209, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 236, 206, 209, 0, 218, 165, 169, 255, 182, 73, 79, 255, 190, 78, 83, 255, 194, 83, 88, 255, 195, 87, 90, 255, 194, 85, 89, 255, 193, 84, 88, 255, 191, 83, 87, 255, 185, 75, 80, 255, 181, 73, 78, 255, 179, 76, 83, 255, 226, 182, 186, 255, 236, 206, 209, 109, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 236, 206, 209, 0, 229, 191, 194, 255, 192, 101, 108, 255, 180, 72, 80, 255, 185, 77, 82, 255, 186, 79, 85, 255, 185, 78, 83, 255, 181, 75, 81, 255, 177, 70, 77, 255, 191, 101, 107, 255, 230, 192, 195, 255, 236, 206, 209, 0, 236, 206, 209, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 236, 206, 209, 0, 236, 206, 209, 109, 228, 187, 191, 255, 205, 136, 141, 255, 195, 113, 120, 255, 196, 114, 121, 255, 204, 133, 138, 255, 225, 181, 185, 255, 236, 206, 209, 109, 255, 255, 255, 151, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_Print(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 169, 185, 207, 4, 171, 187, 209, 115, 174, 190, 212, 255, 174, 190, 212, 255, 174, 190, 212, 255, 174, 190, 212, 255, 174, 190, 212, 255, 174, 190, 212, 255, 174, 190, 212, 255, 173, 189, 211, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 169, 185, 207, 114, 206, 211, 227, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 225, 230, 239, 255, 171, 183, 200, 255, 76, 95, 121, 254, 75, 94, 120, 38, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 169, 185, 207, 27, 169, 185, 207, 255, 253, 253, 254, 255, 235, 238, 242, 255, 194, 203, 215, 255, 194, 203, 215, 255, 176, 187, 202, 255, 168, 179, 198, 255, 203, 212, 226, 255, 92, 110, 134, 255, 76, 95, 121, 239, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 163, 180, 203, 156, 223, 229, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 241, 243, 248, 255, 213, 220, 232, 255, 173, 185, 202, 255, 75, 94, 120, 254, 75, 94, 120, 107, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 155, 173, 198, 48, 155, 173, 198, 255, 252, 253, 254, 255, 226, 231, 236, 255, 194, 203, 215, 255, 194, 203, 215, 255, 176, 187, 202, 255, 183, 194, 210, 255, 202, 211, 225, 255, 89, 106, 132, 255, 79, 97, 123, 248, 140, 155, 177, 255, 147, 162, 183, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 125, 142, 167, 90, 155, 173, 198, 255, 189, 202, 217, 255, 255, 255, 255, 255, 249, 250, 252, 255, 249, 250, 252, 255, 241, 243, 248, 255, 231, 236, 244, 255, 217, 224, 236, 255, 154, 168, 187, 255, 77, 96, 122, 255, 127, 143, 165, 255, 157, 173, 197, 255, 77, 97, 123, 255, 255, 255, 255, 0,
+ 118, 137, 163, 79, 134, 151, 176, 229, 161, 179, 204, 255, 153, 169, 194, 255, 163, 178, 201, 255, 146, 161, 185, 255, 129, 145, 169, 255, 113, 130, 155, 255, 96, 114, 139, 255, 81, 99, 125, 255, 74, 93, 119, 255, 90, 108, 133, 255, 144, 159, 180, 255, 116, 132, 155, 255, 74, 94, 120, 255, 255, 255, 255, 0,
+ 141, 160, 186, 255, 242, 244, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 252, 253, 255, 246, 248, 251, 255, 241, 243, 248, 255, 234, 238, 246, 255, 228, 233, 243, 255, 123, 138, 161, 255, 102, 119, 143, 255, 77, 97, 122, 255, 255, 255, 255, 0,
+ 132, 150, 174, 255, 179, 192, 208, 255, 175, 187, 203, 255, 161, 174, 191, 255, 148, 162, 181, 255, 134, 149, 170, 255, 122, 138, 159, 255, 110, 126, 149, 255, 98, 115, 139, 255, 88, 106, 130, 255, 80, 98, 123, 255, 72, 91, 116, 255, 109, 126, 149, 255, 89, 107, 131, 255, 64, 84, 110, 255, 255, 255, 255, 0,
+ 127, 144, 170, 255, 227, 230, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 245, 249, 255, 225, 231, 241, 255, 10, 255, 0, 255, 10, 255, 0, 255, 2, 161, 0, 255, 96, 113, 137, 255, 76, 94, 119, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 126, 142, 168, 239, 210, 216, 224, 255, 250, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 252, 255, 255, 237, 243, 251, 255, 216, 227, 245, 255, 197, 213, 238, 255, 10, 255, 0, 255, 180, 255, 0, 255, 2, 161, 0, 255, 83, 101, 125, 255, 62, 82, 107, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 127, 140, 161, 133, 140, 154, 173, 246, 226, 235, 248, 255, 238, 244, 254, 255, 230, 240, 254, 255, 220, 232, 253, 255, 200, 219, 247, 255, 181, 205, 243, 255, 165, 194, 239, 255, 2, 161, 0, 255, 2, 161, 0, 255, 2, 161, 0, 255, 69, 88, 113, 255, 53, 73, 99, 255, 53, 73, 99, 176, 255, 255, 255, 0,
+ 104, 116, 135, 60, 122, 136, 159, 237, 190, 205, 227, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 26, 255, 255, 255, 0,
+ 255, 255, 255, 0, 116, 132, 156, 63, 82, 102, 127, 255, 78, 98, 124, 255, 75, 95, 121, 255, 72, 92, 118, 255, 68, 88, 114, 255, 65, 85, 111, 255, 61, 81, 107, 255, 58, 78, 104, 255, 55, 75, 101, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 105, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_MediaPause(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 141, 179, 253, 255, 138, 176, 250, 255, 110, 149, 226, 242, 255, 255, 255, 0, 141, 179, 253, 255, 138, 176, 250, 255, 110, 149, 226, 242, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 138, 176, 250, 255, 213, 225, 252, 255, 45, 85, 170, 255, 255, 255, 255, 0, 138, 176, 250, 255, 213, 225, 252, 255, 45, 85, 170, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 134, 173, 246, 255, 218, 229, 251, 255, 37, 78, 162, 255, 255, 255, 255, 0, 134, 173, 246, 255, 218, 229, 251, 255, 37, 78, 162, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 129, 168, 243, 255, 211, 225, 251, 255, 30, 70, 154, 255, 255, 255, 255, 0, 129, 168, 243, 255, 211, 225, 251, 255, 30, 70, 154, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 125, 163, 239, 255, 200, 215, 251, 255, 22, 62, 146, 255, 255, 255, 255, 0, 125, 163, 239, 255, 200, 215, 251, 255, 22, 62, 146, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 120, 158, 234, 255, 187, 208, 249, 255, 15, 54, 139, 255, 255, 255, 255, 0, 120, 158, 234, 255, 187, 208, 249, 255, 15, 54, 139, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 116, 155, 231, 255, 175, 201, 249, 255, 9, 48, 133, 255, 255, 255, 255, 0, 116, 155, 231, 255, 175, 201, 249, 255, 9, 48, 133, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 112, 151, 227, 255, 160, 188, 243, 255, 5, 44, 129, 255, 255, 255, 255, 0, 112, 151, 227, 255, 160, 188, 243, 255, 5, 44, 129, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 110, 149, 226, 242, 6, 45, 130, 255, 5, 44, 129, 255, 255, 255, 255, 0, 110, 149, 226, 242, 6, 45, 130, 255, 5, 44, 129, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_FileClose(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 103, 147, 255, 133, 148, 164, 67, 129, 145, 166, 255, 120, 137, 161, 255, 135, 149, 170, 255, 123, 140, 160, 124, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 103, 147, 255, 96, 116, 149, 255, 83, 105, 141, 92, 0, 0, 0, 0, 109, 121, 158, 21, 130, 145, 166, 255, 117, 132, 159, 85, 0, 0, 0, 0,
+ 182, 169, 136, 143, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 182, 169, 136, 143, 0, 0, 0, 0, 76, 103, 147, 255, 76, 103, 147, 255, 76, 103, 147, 255, 0, 0, 0, 0, 0, 0, 0, 0, 106, 123, 152, 77, 84, 107, 141, 255, 0, 0, 0, 0,
+ 172, 164, 143, 255, 236, 228, 178, 255, 248, 237, 182, 255, 248, 237, 182, 255, 246, 236, 169, 255, 243, 225, 146, 255, 170, 161, 141, 255, 176, 164, 132, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 170, 161, 141, 255, 170, 161, 141, 255, 170, 161, 141, 255, 170, 161, 141, 255, 170, 161, 141, 255, 168, 159, 139, 255, 166, 156, 137, 255, 166, 155, 137, 255, 164, 154, 135, 255, 163, 153, 134, 255, 160, 150, 132, 255, 160, 150, 132, 255, 160, 149, 131, 255, 160, 149, 131, 255, 143, 132, 117, 255, 0, 0, 0, 0,
+ 168, 160, 139, 255, 249, 240, 190, 255, 249, 240, 190, 255, 249, 240, 190, 255, 249, 240, 190, 255, 248, 242, 180, 255, 251, 236, 170, 255, 251, 233, 160, 255, 252, 229, 149, 255, 252, 223, 138, 255, 251, 216, 127, 255, 248, 210, 116, 255, 244, 202, 104, 255, 241, 192, 93, 255, 122, 112, 99, 255, 0, 0, 0, 0,
+ 166, 156, 137, 255, 249, 240, 190, 255, 248, 237, 182, 255, 248, 237, 182, 255, 247, 240, 171, 255, 250, 236, 162, 255, 251, 230, 149, 255, 252, 225, 137, 255, 252, 220, 125, 255, 250, 211, 111, 255, 247, 204, 99, 255, 243, 195, 85, 255, 239, 185, 73, 255, 207, 153, 25, 255, 122, 112, 99, 255, 0, 0, 0, 0,
+ 163, 153, 134, 255, 249, 240, 190, 255, 248, 237, 182, 255, 250, 238, 176, 255, 250, 235, 164, 255, 251, 230, 149, 255, 252, 225, 137, 255, 252, 220, 125, 255, 249, 213, 113, 255, 247, 205, 101, 255, 243, 196, 88, 255, 239, 185, 73, 255, 231, 169, 53, 255, 199, 143, 12, 255, 107, 99, 87, 255, 0, 0, 0, 0,
+ 159, 149, 131, 255, 249, 240, 190, 255, 247, 240, 171, 255, 251, 236, 165, 255, 251, 231, 152, 255, 252, 225, 137, 255, 251, 221, 127, 255, 249, 213, 113, 255, 247, 205, 101, 255, 243, 196, 88, 255, 240, 187, 75, 255, 236, 178, 61, 255, 227, 164, 44, 255, 191, 138, 12, 255, 92, 83, 73, 255, 0, 0, 0, 0,
+ 156, 145, 128, 255, 248, 237, 182, 255, 251, 236, 170, 255, 251, 232, 155, 255, 252, 227, 143, 255, 251, 221, 129, 255, 249, 213, 113, 255, 247, 206, 104, 255, 244, 197, 91, 255, 240, 188, 77, 255, 236, 178, 61, 255, 232, 169, 50, 255, 226, 158, 36, 255, 180, 130, 16, 255, 75, 67, 59, 255, 0, 0, 0, 0,
+ 152, 142, 125, 255, 246, 234, 176, 255, 251, 233, 159, 255, 252, 228, 146, 255, 251, 221, 129, 255, 250, 214, 117, 255, 247, 206, 104, 255, 244, 198, 93, 255, 240, 188, 77, 255, 236, 180, 65, 255, 232, 170, 53, 255, 230, 163, 42, 255, 220, 150, 29, 255, 169, 124, 21, 255, 59, 52, 45, 255, 0, 0, 0, 0,
+ 149, 138, 122, 255, 246, 232, 170, 255, 252, 229, 149, 255, 251, 223, 132, 255, 250, 214, 117, 255, 247, 208, 106, 255, 244, 198, 93, 255, 240, 190, 80, 255, 236, 180, 65, 255, 232, 170, 53, 255, 230, 164, 43, 255, 223, 154, 32, 255, 215, 144, 22, 255, 159, 119, 27, 255, 45, 39, 32, 255, 0, 0, 0, 0,
+ 146, 135, 119, 255, 240, 223, 162, 255, 234, 205, 112, 255, 226, 184, 73, 255, 219, 174, 55, 255, 217, 169, 45, 255, 210, 161, 38, 255, 199, 152, 33, 255, 188, 142, 32, 255, 174, 131, 30, 255, 171, 127, 25, 255, 169, 124, 21, 255, 159, 119, 27, 255, 150, 114, 31, 255, 33, 28, 22, 255, 0, 0, 0, 0,
+ 143, 132, 117, 255, 133, 122, 108, 255, 119, 109, 96, 255, 102, 93, 81, 255, 84, 76, 66, 255, 65, 58, 49, 255, 48, 42, 35, 255, 33, 28, 22, 255, 24, 19, 14, 255, 24, 19, 14, 255, 24, 19, 14, 255, 24, 19, 14, 255, 24, 19, 14, 255, 24, 19, 14, 255, 24, 19, 14, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ToolsSortAscend(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 79, 123, 202, 24, 72, 112, 191, 245, 58, 96, 163, 22, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 73, 114, 193, 170, 69, 107, 183, 255, 58, 88, 151, 117, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 70, 109, 185, 222, 67, 102, 175, 225, 51, 83, 140, 233, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 71, 112, 192, 66, 69, 107, 183, 247, 60, 93, 157, 40, 51, 80, 137, 255, 58, 89, 152, 80, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 69, 107, 183, 203, 66, 101, 174, 218, 54, 86, 146, 150, 52, 82, 139, 244, 55, 86, 147, 193, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 69, 107, 183, 3, 69, 106, 183, 241, 69, 107, 183, 24, 255, 255, 255, 0, 57, 90, 153, 77, 51, 79, 136, 255, 55, 90, 150, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 68, 106, 182, 198, 55, 85, 145, 248, 57, 87, 147, 100, 58, 86, 152, 10, 51, 79, 137, 239, 51, 79, 136, 255, 51, 79, 135, 209, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 149, 88, 111, 173, 149, 85, 105, 185, 151, 91, 114, 157, 149, 90, 112, 186, 145, 71, 77, 209, 140, 51, 41, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 147, 73, 81, 182, 255, 255, 255, 0, 155, 89, 100, 23, 149, 73, 76, 232, 125, 46, 37, 222, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 151, 70, 70, 22, 255, 255, 255, 0, 153, 82, 95, 153, 126, 47, 37, 255, 128, 47, 39, 86, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 129, 0, 0, 0, 75, 0, 0, 0, 255, 0, 0, 0, 69, 0, 0, 0, 138, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 156, 88, 107, 67, 146, 71, 77, 255, 126, 47, 38, 170, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 51, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 66, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 149, 91, 114, 224, 138, 52, 41, 232, 133, 55, 44, 23, 255, 255, 255, 0, 148, 65, 65, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 180, 0, 0, 0, 255, 0, 0, 0, 198, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 152, 87, 107, 141, 143, 63, 62, 255, 136, 50, 40, 101, 255, 255, 255, 0, 146, 73, 61, 21, 138, 51, 40, 165, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 51, 0, 0, 0, 255, 0, 0, 0, 66, 255, 255, 255, 0, 255, 255, 255, 0,
+ 148, 71, 77, 43, 136, 51, 41, 244, 119, 44, 34, 245, 125, 46, 38, 155, 131, 49, 38, 168, 121, 45, 36, 234, 123, 45, 36, 157, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 123, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_MediaReverse(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 2, 95, 147, 237, 36, 87, 135, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 94, 144, 235, 40, 95, 139, 224, 255, 83, 128, 214, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 96, 140, 228, 61, 92, 138, 224, 250, 165, 191, 255, 255, 79, 123, 208, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 96, 140, 228, 63, 88, 135, 223, 255, 165, 191, 255, 255, 105, 154, 255, 255, 74, 117, 200, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 96, 140, 228, 63, 85, 133, 222, 255, 165, 191, 255, 255, 133, 174, 255, 255, 79, 137, 253, 255, 68, 111, 192, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 64, 114, 205, 66, 83, 132, 221, 255, 162, 189, 255, 255, 136, 174, 255, 255, 104, 156, 249, 255, 62, 126, 249, 255, 63, 104, 183, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 76, 171, 81, 62, 115, 219, 255, 103, 156, 251, 255, 79, 138, 246, 255, 44, 113, 238, 255, 56, 96, 175, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 76, 169, 74, 47, 100, 207, 255, 52, 114, 232, 255, 36, 106, 242, 255, 51, 89, 166, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 76, 169, 60, 48, 98, 200, 255, 29, 102, 245, 255, 45, 83, 158, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 26, 74, 167, 69, 47, 101, 211, 255, 40, 77, 150, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 106, 58, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 76, 172, 77, 36, 72, 144, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 75, 168, 3, 26, 75, 173, 78, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_EditUndo(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 180, 246, 92, 147, 179, 245, 184, 158, 187, 245, 226, 167, 193, 245, 196, 169, 193, 245, 148, 170, 194, 245, 26, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 142, 176, 245, 184, 142, 176, 245, 252, 139, 174, 245, 231, 129, 168, 244, 227, 127, 164, 244, 220, 157, 185, 245, 227, 170, 194, 245, 242, 170, 194, 245, 26, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 139, 170, 234, 255, 166, 200, 245, 48, 255, 255, 255, 0, 139, 174, 245, 166, 143, 177, 246, 251, 101, 146, 238, 236, 68, 112, 200, 251, 59, 101, 183, 252, 55, 96, 180, 247, 71, 120, 221, 241, 153, 183, 245, 236, 170, 194, 245, 217, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 170, 194, 245, 9, 129, 164, 233, 255, 158, 192, 245, 213, 127, 168, 245, 128, 144, 178, 246, 252, 94, 140, 231, 254, 69, 112, 199, 255, 62, 104, 187, 250, 53, 93, 172, 199, 68, 111, 181, 225, 57, 95, 167, 252, 86, 136, 238, 249, 165, 192, 245, 223, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 115, 153, 231, 255, 106, 154, 243, 255, 113, 156, 244, 255, 89, 140, 241, 232, 58, 99, 180, 253, 56, 97, 176, 248, 53, 93, 169, 111, 255, 255, 255, 0, 80, 125, 183, 36, 49, 88, 163, 232, 69, 119, 219, 239, 128, 165, 244, 188, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 98, 142, 230, 255, 75, 130, 236, 255, 91, 141, 243, 255, 118, 156, 236, 255, 40, 75, 146, 171, 52, 92, 168, 65, 255, 255, 255, 0, 255, 255, 255, 0, 32, 64, 126, 3, 62, 106, 194, 251, 69, 118, 220, 235, 128, 169, 244, 194, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 82, 131, 229, 255, 54, 115, 223, 255, 73, 130, 234, 255, 106, 154, 243, 255, 97, 140, 226, 255, 126, 163, 237, 57, 255, 255, 255, 0, 255, 255, 255, 0, 32, 64, 126, 5, 62, 105, 194, 253, 74, 126, 230, 246, 131, 169, 244, 180, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 66, 120, 227, 255, 64, 114, 214, 255, 58, 105, 199, 255, 52, 95, 182, 255, 49, 90, 173, 255, 40, 76, 149, 255, 255, 255, 255, 0, 255, 255, 255, 0, 54, 94, 175, 34, 61, 105, 193, 254, 80, 132, 235, 253, 112, 151, 227, 117, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 170, 194, 245, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 39, 74, 146, 71, 69, 118, 219, 252, 102, 147, 239, 254, 141, 176, 245, 6, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 56, 100, 190, 209, 84, 136, 240, 254, 86, 126, 207, 109, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 94, 142, 239, 34, 64, 111, 208, 92, 79, 132, 240, 254, 78, 121, 212, 246, 42, 80, 155, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 72, 123, 227, 67, 79, 132, 242, 250, 72, 116, 209, 249, 51, 90, 170, 74, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 90, 141, 243, 89, 67, 116, 214, 129, 53, 92, 174, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ToolsSettings(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 132, 191, 48, 0, 0, 0, 4, 132, 132, 191, 128, 132, 132, 191, 255, 119, 119, 171, 125, 0, 0, 0, 10, 132, 132, 191, 48, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 132, 132, 191, 16, 132, 132, 191, 207, 132, 132, 191, 255, 97, 97, 141, 109, 129, 129, 187, 197, 132, 132, 191, 255, 113, 113, 162, 227, 86, 86, 124, 148, 132, 132, 191, 255, 129, 129, 185, 215, 55, 55, 80, 38, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 132, 132, 191, 226, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 123, 123, 175, 242, 0, 0, 0, 124, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0,
+ 132, 132, 191, 16, 132, 132, 191, 207, 125, 125, 182, 166, 131, 131, 187, 228, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 121, 121, 173, 247, 97, 97, 141, 215, 129, 129, 187, 214, 62, 62, 90, 34, 0, 0, 0, 1,
+ 132, 132, 189, 113, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 85, 85, 121, 226, 10, 10, 15, 186, 0, 0, 0, 169, 23, 23, 33, 178, 86, 86, 125, 218, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 83, 83, 119, 178, 0, 0, 0, 37,
+ 85, 85, 121, 25, 113, 113, 164, 185, 132, 132, 191, 255, 132, 132, 191, 255, 77, 77, 109, 222, 0, 0, 0, 169, 0, 0, 0, 103, 0, 0, 0, 43, 0, 0, 0, 28, 0, 0, 0, 49, 94, 94, 135, 180, 132, 132, 191, 255, 132, 132, 191, 255, 93, 93, 133, 228, 10, 10, 15, 170, 0, 0, 0, 79,
+ 132, 132, 191, 128, 127, 127, 182, 202, 132, 132, 191, 255, 125, 125, 182, 250, 0, 0, 0, 178, 0, 0, 0, 96, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 54, 54, 78, 39, 132, 132, 191, 255, 132, 132, 191, 255, 107, 107, 155, 237, 89, 89, 128, 191, 0, 0, 0, 45,
+ 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 107, 107, 155, 237, 0, 0, 0, 155, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 127, 127, 182, 202, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 0, 0, 0, 103,
+ 125, 125, 182, 183, 116, 116, 169, 235, 132, 132, 191, 255, 127, 127, 182, 251, 0, 0, 0, 140, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 132, 191, 240, 132, 132, 191, 255, 113, 113, 162, 242, 99, 99, 144, 232, 0, 0, 0, 172,
+ 0, 0, 0, 16, 99, 99, 144, 191, 132, 132, 191, 255, 132, 132, 191, 255, 75, 75, 108, 199, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 132, 191, 112, 132, 132, 191, 255, 132, 132, 191, 255, 77, 77, 109, 220, 0, 0, 0, 154, 0, 0, 0, 125,
+ 132, 132, 191, 96, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 93, 93, 133, 162, 0, 0, 0, 21, 0, 0, 0, 0, 132, 132, 191, 16, 132, 132, 191, 128, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 77, 77, 109, 168, 0, 0, 0, 37,
+ 89, 89, 128, 24, 132, 132, 189, 243, 115, 115, 166, 238, 113, 113, 162, 242, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 125, 125, 182, 200, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 129, 129, 185, 249, 111, 111, 162, 243, 127, 127, 182, 251, 10, 10, 15, 169, 0, 0, 0, 70,
+ 0, 0, 0, 1, 0, 0, 0, 37, 0, 0, 0, 134, 119, 119, 171, 234, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 111, 111, 162, 243, 0, 0, 0, 176, 0, 0, 0, 146, 0, 0, 0, 134, 0, 0, 0, 39,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 22, 131, 131, 187, 228, 132, 132, 191, 255, 77, 77, 109, 221, 113, 113, 164, 241, 132, 132, 191, 255, 113, 113, 162, 242, 85, 85, 121, 225, 132, 132, 191, 255, 121, 121, 173, 246, 0, 0, 0, 145, 0, 0, 0, 39, 0, 0, 0, 22, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 63, 63, 92, 167, 0, 0, 0, 160, 105, 105, 150, 202, 132, 132, 191, 255, 85, 85, 121, 223, 0, 0, 0, 152, 64, 64, 92, 163, 0, 0, 0, 161, 0, 0, 0, 127, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 118, 0, 0, 0, 172, 0, 0, 0, 110, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_FileSaveAll(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 165, 164, 221, 255, 161, 161, 218, 255, 154, 153, 216, 255, 148, 147, 212, 255, 140, 139, 208, 255, 131, 130, 204, 255, 123, 122, 199, 255, 115, 115, 196, 255, 108, 106, 192, 255, 94, 92, 175, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 161, 161, 218, 255, 190, 189, 255, 255, 147, 146, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 247, 251, 255, 135, 138, 214, 255, 116, 116, 162, 255, 87, 86, 169, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 165, 164, 221, 255, 161, 161, 218, 255, 154, 153, 216, 255, 148, 147, 212, 255, 140, 139, 208, 255, 131, 130, 204, 255, 123, 122, 199, 255, 117, 117, 197, 255, 113, 111, 194, 255, 101, 99, 178, 255, 116, 117, 178, 255, 86, 85, 168, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 161, 161, 218, 255, 190, 189, 255, 255, 147, 146, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 247, 250, 255, 157, 159, 222, 255, 114, 114, 160, 255, 80, 79, 158, 255, 108, 110, 194, 255, 82, 81, 163, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 165, 164, 221, 255, 161, 161, 218, 255, 154, 153, 216, 255, 148, 147, 212, 255, 140, 139, 208, 255, 131, 130, 204, 255, 123, 122, 199, 255, 115, 115, 196, 255, 110, 108, 191, 255, 97, 95, 180, 255, 95, 96, 168, 255, 80, 79, 158, 255, 97, 101, 186, 255, 79, 78, 156, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 161, 161, 218, 255, 190, 189, 255, 255, 147, 146, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 244, 249, 255, 96, 99, 201, 255, 65, 65, 127, 255, 85, 84, 168, 255, 109, 112, 196, 255, 78, 77, 155, 255, 86, 92, 178, 255, 74, 73, 148, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 155, 153, 216, 255, 185, 184, 251, 255, 134, 133, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 244, 249, 255, 222, 229, 240, 255, 80, 91, 193, 255, 92, 93, 166, 255, 81, 80, 159, 255, 98, 102, 188, 255, 75, 74, 150, 255, 77, 83, 171, 255, 70, 69, 139, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 148, 146, 212, 255, 178, 178, 247, 255, 116, 115, 217, 255, 255, 255, 255, 255, 242, 244, 249, 255, 222, 228, 240, 255, 203, 212, 231, 255, 57, 79, 181, 255, 108, 110, 194, 255, 78, 77, 155, 255, 87, 93, 180, 255, 72, 71, 143, 255, 68, 75, 166, 255, 66, 65, 131, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 140, 139, 208, 255, 170, 171, 240, 255, 115, 117, 210, 255, 96, 99, 201, 255, 80, 90, 193, 255, 56, 79, 181, 255, 33, 67, 169, 255, 42, 72, 172, 255, 97, 101, 186, 255, 75, 74, 150, 255, 78, 84, 173, 255, 68, 67, 136, 255, 61, 68, 160, 255, 61, 60, 122, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 132, 131, 204, 255, 161, 162, 234, 255, 152, 153, 227, 255, 141, 143, 219, 255, 130, 133, 212, 255, 120, 123, 203, 255, 108, 113, 196, 255, 98, 103, 188, 255, 86, 92, 178, 255, 72, 71, 143, 255, 68, 75, 167, 255, 65, 64, 129, 255, 58, 57, 116, 255, 58, 57, 116, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 123, 122, 199, 255, 152, 153, 227, 255, 142, 143, 220, 255, 64, 77, 96, 255, 64, 77, 96, 255, 64, 77, 96, 255, 70, 83, 100, 255, 70, 83, 100, 255, 77, 83, 171, 255, 68, 67, 136, 255, 61, 68, 161, 255, 61, 60, 122, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 115, 115, 196, 255, 142, 143, 219, 255, 130, 133, 212, 255, 64, 77, 96, 255, 92, 99, 106, 255, 165, 174, 182, 255, 199, 207, 209, 255, 72, 85, 103, 255, 68, 75, 166, 255, 65, 64, 128, 255, 58, 57, 116, 255, 58, 57, 116, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 107, 107, 192, 255, 131, 134, 211, 255, 76, 95, 187, 255, 60, 71, 82, 255, 120, 126, 134, 255, 207, 212, 219, 255, 175, 182, 183, 255, 61, 66, 73, 255, 61, 68, 160, 255, 61, 60, 121, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 102, 101, 189, 101, 89, 88, 176, 239, 89, 88, 176, 255, 85, 85, 169, 255, 80, 80, 160, 255, 76, 74, 149, 255, 69, 68, 137, 255, 63, 63, 126, 255, 58, 57, 116, 255, 58, 57, 116, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_MessageInfo(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 153, 222, 50, 123, 163, 226, 126, 127, 167, 234, 151, 118, 160, 234, 145, 100, 144, 218, 134, 106, 139, 198, 109, 121, 143, 185, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 107, 149, 217, 1, 114, 159, 223, 109, 141, 179, 231, 204, 196, 220, 246, 254, 218, 231, 249, 255, 224, 234, 252, 255, 222, 231, 246, 255, 192, 205, 226, 255, 138, 159, 196, 203, 83, 111, 160, 129, 98, 124, 168, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 102, 144, 213, 3, 114, 156, 222, 129, 169, 199, 236, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 245, 252, 255, 239, 245, 251, 255, 255, 255, 255, 255, 241, 244, 248, 255, 167, 182, 205, 255, 80, 108, 154, 189, 90, 116, 160, 22, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 105, 147, 212, 89, 146, 179, 226, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 237, 246, 255, 57, 109, 199, 255, 52, 102, 187, 255, 235, 238, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 157, 172, 195, 255, 74, 102, 149, 172, 88, 114, 157, 12, 0, 0, 0, 0,
+ 100, 138, 202, 16, 119, 154, 208, 190, 222, 231, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 251, 253, 255, 133, 162, 213, 255, 133, 160, 209, 255, 248, 249, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 255, 100, 123, 161, 251, 75, 104, 149, 87, 0, 0, 0, 0,
+ 99, 134, 194, 87, 139, 162, 203, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 234, 246, 255, 208, 219, 235, 255, 228, 235, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 249, 249, 255, 255, 255, 247, 255, 185, 191, 203, 255, 74, 102, 148, 194, 0, 0, 0, 0,
+ 88, 121, 177, 121, 148, 169, 203, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 193, 223, 255, 47, 93, 185, 255, 79, 116, 188, 255, 233, 237, 243, 255, 255, 255, 255, 255, 252, 251, 252, 255, 252, 248, 243, 255, 216, 214, 217, 255, 82, 107, 150, 229, 0, 0, 0, 0,
+ 87, 121, 181, 105, 151, 171, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 216, 232, 255, 55, 90, 194, 255, 63, 98, 183, 255, 227, 235, 238, 255, 255, 255, 255, 255, 253, 253, 252, 255, 247, 245, 241, 255, 228, 224, 222, 255, 85, 111, 152, 228, 0, 0, 0, 0,
+ 91, 125, 184, 91, 141, 164, 203, 254, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 220, 234, 255, 60, 91, 188, 255, 72, 103, 181, 255, 232, 239, 241, 255, 255, 255, 255, 255, 251, 252, 252, 255, 243, 241, 236, 255, 216, 216, 215, 255, 82, 108, 151, 233, 0, 0, 0, 0,
+ 110, 138, 184, 63, 128, 150, 190, 243, 250, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 225, 237, 255, 59, 82, 185, 255, 76, 100, 181, 255, 243, 249, 246, 255, 255, 255, 255, 255, 242, 243, 243, 255, 246, 242, 233, 255, 184, 188, 196, 255, 71, 100, 147, 214, 0, 0, 0, 0,
+ 138, 159, 195, 10, 116, 140, 181, 189, 185, 196, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 212, 234, 255, 23, 50, 170, 255, 38, 66, 165, 255, 227, 237, 242, 255, 255, 255, 255, 255, 237, 235, 233, 255, 246, 241, 228, 255, 105, 126, 159, 255, 71, 100, 147, 137, 0, 0, 0, 0,
+ 0, 0, 0, 0, 114, 139, 181, 63, 122, 144, 182, 243, 241, 245, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 183, 216, 255, 41, 79, 165, 255, 44, 80, 162, 255, 173, 188, 215, 255, 255, 252, 241, 255, 255, 247, 232, 255, 167, 174, 186, 255, 66, 95, 143, 217, 85, 111, 155, 26, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 109, 133, 174, 96, 136, 153, 183, 250, 228, 232, 232, 255, 255, 255, 250, 255, 253, 249, 243, 255, 244, 249, 238, 255, 244, 244, 236, 255, 243, 237, 232, 255, 249, 242, 228, 255, 177, 181, 190, 255, 72, 100, 145, 239, 73, 101, 148, 69, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 115, 158, 74, 94, 120, 159, 210, 126, 144, 172, 255, 201, 205, 209, 255, 247, 243, 229, 255, 240, 236, 224, 255, 191, 194, 198, 255, 117, 134, 164, 254, 72, 99, 145, 198, 75, 103, 148, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 104, 151, 30, 74, 101, 148, 123, 59, 90, 140, 195, 45, 78, 131, 200, 47, 80, 133, 198, 65, 94, 142, 175, 75, 102, 147, 92, 70, 98, 145, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ZoomActualSize(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 174, 190, 212, 255, 169, 185, 207, 255, 164, 179, 201, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 178, 194, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 171, 192, 255, 54, 74, 100, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 175, 191, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 164, 185, 255, 186, 197, 212, 255, 54, 74, 100, 255, 164, 179, 201, 140, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 171, 187, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 162, 183, 255, 54, 74, 100, 255, 54, 74, 100, 255, 54, 74, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 167, 182, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 250, 246, 255, 193, 197, 193, 255, 151, 159, 161, 255, 132, 141, 145, 255, 136, 145, 149, 255, 60, 77, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 163, 178, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 246, 255, 178, 184, 184, 255, 188, 194, 196, 255, 231, 235, 236, 255, 226, 232, 235, 255, 164, 174, 178, 255, 99, 108, 117, 255, 93, 108, 122, 16, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 158, 174, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 196, 195, 255, 185, 191, 194, 255, 255, 255, 255, 255, 251, 252, 255, 255, 243, 247, 253, 255, 230, 238, 252, 255, 147, 158, 170, 255, 89, 97, 103, 135, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 154, 169, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 158, 161, 255, 229, 233, 235, 255, 251, 252, 255, 255, 243, 247, 253, 255, 232, 240, 251, 255, 217, 229, 250, 255, 179, 195, 216, 255, 88, 92, 92, 221, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 150, 165, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 151, 154, 255, 228, 233, 237, 255, 243, 247, 253, 255, 232, 239, 252, 255, 217, 229, 249, 255, 200, 217, 247, 255, 153, 173, 200, 255, 83, 86, 86, 221, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 178, 179, 255, 178, 185, 191, 255, 231, 239, 251, 255, 217, 230, 250, 255, 199, 218, 247, 255, 181, 205, 244, 255, 109, 119, 127, 255, 88, 90, 90, 151, 145, 133, 117, 132, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 222, 223, 223, 255, 139, 143, 147, 255, 157, 168, 180, 255, 176, 195, 215, 255, 152, 174, 200, 255, 109, 118, 127, 255, 87, 89, 85, 255, 168, 144, 93, 255, 178, 152, 111, 254, 145, 133, 117, 132, 255, 255, 255, 0,
+ 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 238, 241, 247, 255, 212, 215, 215, 255, 146, 151, 151, 255, 103, 106, 108, 255, 98, 100, 102, 255, 91, 87, 81, 255, 147, 115, 67, 255, 231, 160, 71, 255, 253, 198, 97, 255, 161, 142, 114, 254, 145, 133, 117, 78,
+ 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 133, 134, 140, 255, 104, 77, 52, 255, 208, 127, 53, 255, 228, 152, 65, 255, 237, 179, 87, 255, 118, 103, 79, 255,
+ 255, 255, 255, 0, 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 70, 74, 84, 255, 103, 76, 51, 255, 189, 119, 56, 255, 102, 72, 45, 255, 89, 76, 55, 81,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 104, 77, 52, 84, 60, 49, 39, 255, 72, 58, 37, 84, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_WindowsCascade(void)
+{
+ unsigned char imgdata[] = {
+ 148, 159, 197, 255, 140, 155, 170, 255, 121, 144, 177, 255, 90, 121, 193, 255, 79, 112, 174, 255, 71, 99, 170, 255, 62, 88, 153, 255, 59, 88, 152, 255, 60, 90, 154, 255, 59, 78, 122, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 143, 153, 170, 255, 133, 172, 251, 255, 101, 145, 237, 255, 86, 130, 226, 255, 79, 125, 223, 255, 70, 116, 219, 255, 64, 110, 217, 255, 56, 105, 212, 255, 54, 105, 217, 255, 65, 75, 87, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 142, 155, 171, 255, 254, 254, 254, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 249, 254, 255, 255, 240, 249, 252, 255, 241, 253, 254, 255, 65, 75, 87, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 140, 153, 171, 255, 255, 254, 255, 255, 255, 255, 255, 255, 253, 254, 255, 255, 248, 249, 255, 255, 240, 243, 252, 255, 230, 237, 252, 255, 221, 232, 253, 255, 223, 237, 255, 255, 65, 75, 87, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 141, 154, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 159, 197, 255, 140, 155, 170, 255, 121, 144, 177, 255, 90, 121, 193, 255, 79, 112, 174, 255, 71, 99, 170, 255, 62, 88, 153, 255, 59, 88, 152, 255, 60, 90, 154, 255, 59, 78, 122, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 144, 152, 172, 255, 254, 255, 255, 255, 255, 255, 255, 255, 143, 153, 170, 255, 133, 172, 251, 255, 101, 145, 237, 255, 86, 130, 226, 255, 79, 125, 223, 255, 70, 116, 219, 255, 64, 110, 217, 255, 56, 105, 212, 255, 54, 105, 217, 255, 65, 75, 87, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 141, 154, 172, 255, 255, 255, 255, 255, 255, 255, 253, 255, 142, 155, 171, 255, 254, 254, 254, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 249, 254, 255, 255, 240, 249, 252, 255, 241, 253, 254, 255, 65, 75, 87, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 125, 135, 145, 255, 80, 80, 82, 255, 81, 84, 89, 255, 140, 153, 171, 255, 255, 254, 255, 255, 255, 255, 255, 255, 253, 254, 255, 255, 248, 249, 255, 255, 240, 243, 252, 255, 230, 237, 252, 255, 221, 232, 253, 255, 223, 237, 255, 255, 65, 75, 87, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 141, 154, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 159, 197, 255, 140, 155, 170, 255, 121, 144, 177, 255, 90, 121, 193, 255, 79, 112, 174, 255, 71, 99, 170, 255, 62, 88, 153, 255, 59, 88, 152, 255, 60, 90, 154, 255, 59, 78, 122, 255,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 144, 152, 172, 255, 254, 255, 255, 255, 255, 255, 255, 255, 143, 153, 170, 255, 133, 172, 251, 255, 101, 145, 237, 255, 86, 130, 226, 255, 79, 125, 223, 255, 70, 116, 219, 255, 64, 110, 217, 255, 56, 105, 212, 255, 54, 105, 217, 255, 65, 75, 87, 255,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 141, 154, 172, 255, 255, 255, 255, 255, 255, 255, 253, 255, 142, 155, 171, 255, 254, 254, 254, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 249, 254, 255, 255, 240, 249, 252, 255, 241, 253, 254, 255, 65, 75, 87, 255,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 125, 135, 145, 255, 80, 80, 82, 255, 81, 84, 89, 255, 140, 153, 171, 255, 255, 254, 255, 255, 255, 255, 255, 255, 253, 254, 255, 255, 248, 249, 255, 255, 240, 243, 252, 255, 230, 237, 252, 255, 221, 232, 253, 255, 223, 237, 255, 255, 65, 75, 87, 255,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 141, 154, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 251, 255, 255, 242, 246, 254, 255, 236, 241, 252, 255, 226, 236, 252, 255, 214, 227, 249, 255, 213, 231, 254, 255, 65, 75, 87, 255,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 144, 152, 172, 255, 254, 255, 255, 255, 255, 255, 255, 255, 244, 248, 254, 255, 237, 242, 255, 255, 227, 235, 252, 255, 217, 230, 252, 255, 206, 224, 252, 255, 207, 226, 255, 255, 65, 75, 87, 255,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 141, 154, 172, 255, 255, 255, 255, 255, 255, 255, 253, 255, 247, 253, 255, 255, 237, 248, 255, 255, 224, 241, 254, 255, 213, 234, 253, 255, 204, 229, 252, 255, 207, 234, 255, 255, 65, 75, 87, 255,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 125, 135, 145, 255, 80, 80, 82, 255, 81, 84, 89, 255, 77, 82, 88, 255, 73, 80, 88, 255, 71, 78, 88, 255, 68, 76, 87, 255, 64, 74, 86, 255, 66, 76, 88, 255, 58, 65, 75, 255};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_EditCopy(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 178, 194, 216, 255, 178, 194, 216, 255, 174, 191, 212, 255, 174, 191, 212, 255, 169, 184, 206, 255, 163, 178, 200, 255, 139, 155, 178, 73, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 178, 194, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 177, 199, 255, 102, 130, 165, 255, 54, 74, 100, 48, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 175, 190, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 254, 255, 150, 166, 187, 255, 186, 197, 212, 255, 91, 114, 143, 255, 54, 74, 100, 48, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 169, 185, 207, 255, 255, 255, 255, 255, 186, 218, 255, 255, 174, 208, 255, 255, 210, 222, 240, 255, 147, 162, 183, 255, 174, 196, 240, 255, 171, 194, 239, 255, 170, 193, 239, 255, 160, 185, 239, 255, 146, 176, 237, 255, 146, 176, 237, 255, 95, 141, 230, 60, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 163, 178, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 240, 242, 248, 255, 230, 234, 243, 255, 174, 196, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 133, 167, 235, 255, 53, 101, 197, 255, 53, 101, 197, 60, 255, 255, 255, 0, 255, 255, 255, 0,
+ 156, 171, 193, 255, 255, 255, 255, 255, 159, 197, 250, 255, 142, 184, 240, 255, 129, 174, 229, 255, 115, 161, 222, 255, 166, 189, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 154, 234, 255, 178, 201, 240, 255, 43, 87, 177, 255, 43, 87, 177, 60, 255, 255, 255, 0,
+ 151, 166, 187, 255, 252, 253, 254, 255, 245, 246, 251, 255, 235, 239, 246, 255, 224, 230, 241, 255, 214, 222, 236, 255, 156, 181, 231, 255, 255, 255, 255, 255, 138, 174, 252, 255, 138, 174, 252, 255, 210, 219, 241, 255, 96, 142, 231, 255, 42, 87, 179, 255, 41, 84, 172, 255, 39, 80, 164, 255, 255, 255, 255, 0,
+ 147, 162, 183, 255, 247, 248, 251, 255, 129, 174, 229, 255, 115, 161, 222, 255, 110, 156, 218, 255, 104, 151, 213, 255, 144, 170, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 244, 251, 255, 219, 228, 247, 255, 197, 211, 242, 255, 154, 174, 204, 255, 37, 77, 157, 255, 255, 255, 255, 0,
+ 147, 162, 183, 255, 240, 243, 248, 255, 215, 223, 234, 255, 207, 217, 230, 255, 199, 210, 225, 255, 191, 203, 221, 255, 130, 159, 216, 255, 255, 255, 255, 255, 127, 167, 243, 255, 110, 151, 231, 255, 92, 140, 218, 255, 81, 131, 209, 255, 81, 131, 209, 255, 154, 174, 202, 255, 37, 74, 152, 255, 255, 255, 255, 0,
+ 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 115, 146, 209, 255, 255, 255, 255, 255, 251, 253, 254, 255, 234, 239, 251, 255, 211, 222, 245, 255, 190, 206, 240, 255, 175, 195, 237, 255, 153, 172, 199, 255, 35, 71, 146, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 100, 133, 201, 255, 255, 255, 255, 255, 92, 140, 218, 255, 81, 131, 209, 255, 81, 131, 209, 255, 81, 131, 209, 255, 81, 131, 209, 255, 152, 171, 198, 255, 34, 69, 142, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 85, 121, 193, 255, 246, 249, 253, 255, 156, 176, 206, 255, 155, 175, 204, 255, 154, 173, 202, 255, 153, 172, 199, 255, 152, 171, 198, 255, 151, 169, 196, 255, 33, 67, 137, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 71, 110, 186, 255, 41, 84, 170, 255, 41, 84, 170, 255, 39, 80, 162, 255, 37, 76, 155, 255, 35, 72, 150, 255, 34, 70, 143, 255, 33, 67, 138, 255, 32, 65, 134, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_FileOpen(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 133, 148, 164, 67, 129, 145, 166, 255, 120, 137, 161, 255, 135, 149, 170, 255, 123, 140, 160, 124, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 116, 149, 255, 83, 105, 141, 92, 255, 255, 255, 0, 109, 121, 158, 21, 130, 145, 166, 255, 117, 132, 159, 85, 95, 116, 148, 255,
+ 172, 164, 143, 87, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 182, 169, 136, 141, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 106, 123, 152, 77, 84, 107, 141, 255, 79, 105, 144, 255,
+ 172, 164, 143, 255, 218, 210, 160, 255, 247, 240, 171, 255, 247, 240, 171, 255, 249, 238, 166, 255, 251, 235, 159, 255, 170, 161, 141, 255, 176, 164, 132, 130, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 83, 106, 142, 255, 79, 104, 145, 255, 76, 103, 147, 255,
+ 171, 162, 142, 255, 246, 238, 167, 255, 247, 240, 171, 255, 249, 238, 166, 255, 251, 235, 159, 255, 253, 232, 152, 255, 251, 212, 113, 255, 167, 158, 137, 255, 163, 153, 134, 255, 159, 148, 130, 255, 154, 144, 126, 255, 151, 140, 122, 255, 147, 136, 119, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 168, 160, 139, 255, 246, 234, 160, 255, 249, 238, 166, 255, 251, 235, 159, 255, 254, 232, 152, 255, 255, 218, 122, 255, 255, 212, 103, 255, 255, 212, 103, 255, 255, 212, 103, 255, 255, 212, 103, 255, 255, 212, 103, 255, 255, 212, 103, 255, 147, 136, 119, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 165, 156, 136, 255, 243, 230, 154, 255, 251, 235, 159, 255, 254, 232, 152, 255, 185, 172, 139, 255, 185, 172, 139, 255, 183, 170, 138, 255, 179, 166, 136, 255, 175, 163, 134, 255, 170, 159, 131, 255, 166, 154, 129, 255, 161, 149, 127, 255, 157, 145, 124, 255, 153, 142, 122, 255, 149, 139, 121, 255, 147, 136, 119, 255,
+ 163, 154, 134, 255, 242, 225, 146, 255, 253, 232, 152, 255, 222, 196, 128, 255, 176, 167, 142, 255, 253, 222, 129, 255, 255, 224, 132, 255, 255, 224, 132, 255, 255, 224, 132, 255, 255, 224, 132, 255, 255, 223, 129, 255, 255, 221, 123, 255, 255, 216, 116, 255, 255, 214, 107, 255, 209, 169, 86, 255, 111, 98, 78, 162,
+ 159, 149, 131, 255, 241, 220, 137, 255, 255, 226, 140, 255, 177, 168, 141, 255, 199, 186, 140, 255, 255, 216, 116, 255, 255, 212, 103, 255, 255, 212, 103, 255, 255, 212, 103, 255, 255, 208, 95, 255, 255, 205, 84, 255, 252, 197, 75, 255, 247, 187, 65, 255, 219, 162, 46, 255, 108, 94, 71, 241, 111, 98, 78, 43,
+ 156, 145, 128, 255, 239, 215, 129, 255, 224, 197, 125, 255, 176, 166, 140, 255, 254, 221, 128, 255, 255, 211, 104, 255, 255, 212, 103, 255, 255, 209, 98, 255, 255, 205, 88, 255, 252, 199, 78, 255, 247, 190, 70, 255, 242, 182, 59, 255, 236, 172, 49, 255, 129, 105, 37, 255, 89, 68, 20, 144, 255, 255, 255, 0,
+ 152, 142, 125, 255, 236, 210, 121, 255, 173, 164, 139, 255, 206, 194, 137, 255, 255, 216, 113, 255, 255, 211, 101, 255, 255, 206, 92, 255, 254, 201, 81, 255, 250, 193, 73, 255, 245, 185, 63, 255, 238, 176, 52, 255, 233, 168, 41, 255, 205, 133, 16, 255, 91, 75, 34, 255, 52, 39, 14, 39, 255, 255, 255, 0,
+ 149, 138, 122, 255, 211, 190, 126, 255, 174, 164, 138, 255, 255, 220, 126, 255, 255, 207, 95, 255, 255, 203, 85, 255, 250, 196, 76, 255, 245, 188, 65, 255, 240, 179, 55, 255, 235, 170, 46, 255, 229, 160, 36, 255, 212, 140, 19, 255, 128, 103, 35, 255, 48, 42, 27, 180, 255, 255, 255, 0, 255, 255, 255, 0,
+ 146, 135, 119, 255, 171, 161, 137, 255, 212, 178, 106, 255, 205, 143, 0, 255, 205, 143, 0, 255, 205, 143, 0, 255, 199, 140, 4, 255, 190, 136, 8, 255, 180, 130, 15, 255, 169, 124, 21, 255, 159, 119, 27, 255, 150, 114, 31, 255, 91, 74, 33, 254, 55, 48, 30, 74, 255, 255, 255, 0, 255, 255, 255, 0,
+ 143, 132, 117, 255, 143, 128, 102, 255, 135, 121, 96, 255, 123, 110, 87, 255, 111, 98, 78, 255, 97, 86, 68, 255, 82, 72, 57, 255, 67, 58, 46, 255, 53, 46, 37, 255, 41, 34, 27, 255, 30, 25, 20, 255, 22, 18, 14, 255, 24, 19, 14, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_FileNew(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 103, 248, 255, 255, 84, 216, 255, 155, 0, 255, 255, 211, 0, 255, 255, 254, 79, 223, 255, 255, 88, 250, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 216, 13, 178, 250, 121, 0, 255, 255, 255, 149, 255, 255, 180, 0, 255, 255, 214, 0, 255, 255, 255, 149, 255, 250, 121, 0, 255, 255, 245, 61, 170, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 219, 11, 205, 255, 255, 149, 255, 250, 121, 0, 255, 255, 160, 0, 255, 255, 177, 0, 255, 250, 121, 0, 255, 255, 255, 149, 255, 240, 217, 59, 255, 174, 190, 212, 255, 169, 185, 207, 255, 164, 179, 201, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 250, 140, 0, 255, 255, 149, 0, 255, 255, 145, 0, 255, 255, 255, 255, 255, 255, 255, 168, 255, 255, 180, 0, 255, 255, 154, 0, 255, 255, 168, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 171, 192, 255, 54, 74, 100, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 214, 0, 251, 255, 231, 19, 254, 255, 146, 0, 255, 255, 211, 0, 255, 255, 222, 5, 255, 255, 191, 0, 255, 255, 248, 49, 255, 255, 227, 28, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 164, 185, 255, 186, 197, 212, 255, 54, 74, 100, 255, 164, 179, 201, 140, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 252, 76, 203, 255, 255, 149, 255, 250, 121, 0, 255, 255, 168, 0, 255, 255, 180, 0, 255, 250, 121, 0, 255, 255, 255, 149, 255, 255, 255, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 162, 183, 255, 54, 74, 100, 255, 54, 74, 100, 255, 54, 74, 100, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 244, 62, 193, 250, 121, 0, 255, 255, 255, 149, 255, 255, 157, 0, 255, 255, 220, 2, 255, 255, 255, 149, 255, 250, 121, 0, 255, 255, 255, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 252, 253, 255, 147, 162, 183, 255, 147, 162, 183, 255, 54, 74, 100, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 237, 44, 124, 255, 219, 14, 150, 255, 174, 0, 255, 255, 228, 31, 255, 255, 237, 121, 255, 255, 244, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 245, 247, 250, 255, 233, 237, 245, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 158, 174, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 238, 241, 247, 255, 225, 231, 241, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 154, 169, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 254, 255, 242, 245, 249, 255, 230, 235, 244, 255, 218, 225, 238, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 150, 165, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 248, 251, 255, 235, 239, 246, 255, 223, 229, 240, 255, 211, 219, 235, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 252, 253, 255, 240, 243, 248, 255, 227, 233, 242, 255, 216, 223, 237, 255, 203, 213, 231, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 245, 247, 250, 255, 233, 237, 245, 255, 220, 227, 239, 255, 209, 217, 234, 255, 196, 207, 228, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 238, 241, 247, 255, 225, 231, 241, 255, 213, 221, 236, 255, 201, 211, 230, 255, 189, 202, 225, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_MediaRecord(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 199, 99, 68, 64, 199, 99, 68, 153, 199, 99, 68, 224, 197, 98, 67, 224, 194, 96, 66, 153, 191, 94, 65, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 199, 99, 68, 64, 207, 109, 79, 210, 229, 144, 116, 255, 241, 159, 133, 255, 233, 135, 105, 255, 205, 99, 65, 255, 181, 83, 56, 209, 175, 84, 59, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 199, 99, 68, 153, 229, 144, 116, 255, 255, 197, 178, 255, 250, 180, 157, 255, 242, 151, 122, 255, 230, 115, 77, 255, 188, 76, 43, 255, 156, 72, 52, 153, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 199, 99, 68, 224, 241, 159, 133, 255, 250, 180, 157, 255, 247, 169, 144, 255, 240, 143, 112, 255, 228, 109, 69, 255, 202, 72, 31, 255, 135, 59, 45, 224, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 197, 98, 67, 224, 233, 135, 105, 255, 242, 151, 122, 255, 240, 143, 112, 255, 232, 122, 85, 255, 222, 92, 50, 255, 196, 64, 22, 255, 114, 46, 37, 224, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 194, 96, 66, 153, 205, 99, 65, 255, 230, 115, 77, 255, 228, 109, 69, 255, 222, 92, 50, 255, 214, 71, 24, 255, 153, 48, 20, 255, 95, 34, 30, 153, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 191, 94, 65, 64, 181, 83, 56, 209, 188, 76, 43, 255, 202, 72, 31, 255, 196, 64, 22, 255, 153, 48, 20, 255, 100, 31, 23, 209, 78, 24, 24, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 175, 84, 59, 64, 156, 72, 52, 153, 135, 59, 45, 224, 114, 46, 37, 224, 95, 34, 30, 153, 78, 24, 24, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ActionOk(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 220, 233, 218, 174, 146, 193, 139, 255, 107, 173, 96, 255, 107, 179, 96, 255, 114, 186, 102, 255, 114, 185, 103, 255, 104, 175, 92, 255, 99, 164, 89, 255, 148, 192, 142, 255, 220, 233, 218, 174, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 197, 222, 193, 255, 111, 175, 99, 255, 158, 211, 147, 255, 200, 249, 188, 255, 189, 254, 177, 255, 173, 243, 162, 255, 159, 228, 147, 255, 149, 219, 137, 255, 137, 207, 127, 255, 110, 180, 98, 255, 78, 149, 67, 255, 178, 208, 173, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 199, 223, 195, 255, 117, 182, 106, 255, 198, 242, 186, 255, 212, 255, 200, 255, 186, 253, 174, 255, 167, 237, 154, 255, 152, 223, 140, 255, 142, 213, 132, 255, 137, 207, 125, 255, 132, 201, 121, 255, 130, 201, 119, 255, 119, 187, 106, 255, 69, 142, 58, 255, 170, 202, 165, 255, 255, 255, 255, 0,
+ 220, 233, 218, 174, 121, 182, 111, 255, 201, 245, 189, 255, 209, 255, 197, 255, 180, 250, 169, 255, 161, 232, 149, 255, 145, 215, 134, 255, 136, 207, 124, 255, 130, 201, 118, 255, 128, 199, 116, 255, 123, 194, 112, 255, 102, 175, 90, 255, 111, 183, 98, 255, 107, 178, 96, 255, 64, 135, 53, 255, 220, 233, 218, 174,
+ 181, 213, 176, 255, 149, 208, 137, 255, 210, 255, 198, 255, 182, 251, 170, 255, 159, 230, 148, 255, 142, 212, 130, 255, 131, 201, 119, 255, 126, 196, 114, 255, 123, 193, 110, 255, 120, 192, 109, 255, 85, 160, 72, 255, 142, 186, 134, 255, 178, 216, 172, 255, 112, 179, 100, 255, 84, 155, 73, 255, 116, 168, 109, 255,
+ 114, 178, 105, 255, 190, 247, 178, 255, 187, 254, 175, 255, 162, 232, 150, 255, 144, 214, 132, 255, 130, 201, 118, 255, 123, 194, 111, 255, 119, 191, 109, 255, 118, 189, 106, 255, 81, 157, 70, 255, 129, 178, 121, 255, 252, 253, 252, 255, 249, 252, 248, 255, 123, 183, 114, 255, 91, 162, 80, 255, 76, 144, 66, 255,
+ 112, 185, 101, 255, 183, 252, 171, 255, 168, 238, 156, 255, 145, 216, 134, 255, 117, 190, 104, 255, 122, 193, 110, 255, 119, 190, 108, 255, 117, 189, 107, 255, 84, 158, 72, 255, 124, 175, 116, 255, 244, 248, 243, 255, 250, 252, 250, 255, 153, 200, 145, 255, 93, 165, 81, 255, 91, 162, 81, 255, 64, 138, 53, 255,
+ 118, 189, 107, 255, 176, 245, 165, 255, 152, 223, 140, 255, 149, 214, 138, 255, 145, 192, 137, 255, 90, 162, 78, 255, 120, 191, 108, 255, 85, 160, 73, 255, 121, 173, 112, 255, 248, 251, 247, 255, 255, 255, 255, 255, 155, 200, 147, 255, 86, 163, 74, 255, 90, 162, 79, 255, 90, 160, 79, 255, 67, 140, 56, 255,
+ 111, 181, 100, 255, 162, 232, 150, 255, 136, 209, 124, 255, 205, 236, 200, 255, 251, 252, 251, 255, 130, 177, 122, 255, 71, 148, 59, 255, 120, 172, 111, 255, 246, 249, 246, 255, 254, 254, 254, 255, 155, 202, 150, 255, 86, 162, 73, 255, 90, 162, 79, 255, 87, 158, 77, 255, 85, 156, 75, 255, 65, 138, 55, 255,
+ 100, 172, 88, 255, 145, 215, 133, 255, 132, 203, 121, 255, 143, 203, 134, 255, 242, 249, 240, 255, 246, 249, 245, 255, 131, 177, 123, 255, 246, 250, 245, 255, 255, 255, 255, 255, 156, 201, 149, 255, 83, 160, 71, 255, 90, 163, 78, 255, 87, 158, 75, 255, 83, 154, 72, 255, 80, 151, 70, 255, 61, 134, 50, 255,
+ 126, 180, 118, 255, 130, 200, 118, 255, 131, 200, 119, 255, 112, 186, 99, 255, 146, 200, 137, 255, 248, 251, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 157, 201, 150, 255, 82, 160, 70, 255, 89, 162, 78, 255, 87, 159, 77, 255, 83, 154, 72, 255, 79, 150, 69, 255, 76, 146, 65, 255, 73, 140, 63, 255,
+ 187, 214, 182, 255, 102, 174, 91, 255, 125, 194, 113, 255, 116, 185, 104, 255, 98, 175, 86, 255, 159, 205, 152, 255, 229, 240, 227, 255, 135, 189, 126, 255, 83, 159, 71, 255, 90, 161, 77, 255, 87, 158, 75, 255, 84, 154, 72, 255, 79, 150, 68, 255, 78, 147, 66, 255, 64, 135, 53, 255, 146, 186, 140, 255,
+ 220, 233, 218, 174, 87, 151, 77, 255, 100, 171, 88, 255, 111, 181, 99, 255, 105, 175, 93, 255, 93, 168, 81, 255, 100, 169, 90, 255, 84, 158, 72, 255, 88, 160, 77, 255, 85, 156, 73, 255, 81, 153, 71, 255, 78, 149, 68, 255, 76, 147, 66, 255, 71, 141, 60, 255, 55, 128, 45, 255, 220, 233, 218, 174,
+ 255, 255, 255, 0, 182, 210, 178, 255, 65, 137, 54, 255, 93, 163, 82, 255, 102, 171, 90, 255, 96, 166, 85, 255, 90, 160, 77, 255, 88, 159, 77, 255, 84, 155, 73, 255, 81, 152, 71, 255, 78, 148, 67, 255, 76, 146, 66, 255, 70, 140, 60, 255, 50, 124, 39, 255, 144, 184, 138, 255, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 186, 212, 182, 255, 78, 144, 69, 255, 69, 142, 58, 255, 78, 149, 66, 255, 82, 152, 71, 255, 85, 155, 75, 255, 82, 152, 71, 255, 77, 147, 66, 255, 71, 141, 61, 255, 58, 131, 47, 255, 53, 126, 43, 255, 147, 186, 142, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 220, 233, 218, 174, 172, 203, 167, 255, 102, 159, 94, 255, 56, 129, 45, 255, 58, 130, 47, 255, 59, 133, 49, 255, 58, 130, 47, 255, 61, 132, 51, 255, 107, 161, 99, 255, 220, 233, 218, 174, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_MessageError(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 11, 11, 13, 248, 25, 24, 72, 250, 52, 51, 148, 254, 82, 82, 188, 251, 56, 56, 163, 252, 22, 22, 93, 201, 7, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 9, 8, 36, 252, 45, 45, 177, 254, 99, 99, 246, 255, 135, 135, 255, 255, 146, 146, 255, 255, 118, 118, 255, 255, 83, 83, 255, 240, 44, 44, 210, 118, 9, 9, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 245, 13, 12, 64, 253, 53, 53, 230, 255, 110, 110, 255, 255, 145, 145, 255, 255, 147, 147, 255, 255, 132, 132, 255, 255, 118, 118, 255, 255, 103, 103, 255, 255, 81, 81, 255, 251, 47, 47, 253, 115, 10, 10, 136, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 242, 5, 5, 41, 251, 42, 42, 231, 255, 83, 83, 255, 239, 104, 104, 255, 249, 87, 87, 255, 255, 56, 56, 255, 253, 37, 37, 255, 255, 41, 41, 255, 252, 56, 56, 255, 235, 66, 66, 255, 255, 50, 50, 255, 233, 31, 31, 255, 86, 6, 6, 132, 0, 0, 0, 0, 0, 0, 0, 0,
+ 233, 4, 4, 12, 236, 21, 21, 175, 255, 50, 50, 255, 237, 82, 82, 255, 194, 179, 179, 255, 202, 119, 119, 255, 234, 0, 0, 255, 236, 0, 0, 255, 232, 0, 0, 255, 180, 82, 82, 255, 176, 173, 173, 255, 225, 77, 77, 255, 237, 24, 24, 255, 174, 15, 15, 245, 13, 0, 0, 73, 0, 0, 0, 0,
+ 227, 6, 6, 69, 228, 26, 26, 242, 251, 34, 34, 255, 233, 63, 63, 255, 229, 220, 220, 255, 238, 253, 253, 255, 197, 115, 115, 255, 215, 3, 3, 255, 176, 81, 81, 255, 214, 227, 227, 255, 254, 255, 255, 255, 229, 97, 97, 255, 219, 8, 8, 255, 202, 15, 15, 255, 81, 4, 4, 178, 0, 0, 0, 0,
+ 212, 11, 11, 147, 216, 20, 20, 255, 234, 23, 23, 255, 241, 11, 11, 255, 219, 67, 67, 255, 234, 228, 228, 255, 245, 253, 253, 255, 212, 186, 186, 255, 232, 234, 234, 255, 255, 254, 254, 255, 229, 99, 99, 255, 215, 3, 3, 255, 207, 10, 10, 255, 195, 10, 10, 255, 111, 5, 5, 226, 0, 0, 0, 0,
+ 195, 11, 11, 188, 201, 12, 12, 255, 216, 13, 13, 255, 220, 11, 11, 255, 214, 0, 0, 255, 206, 61, 60, 255, 237, 239, 238, 255, 255, 255, 255, 255, 253, 255, 255, 255, 219, 88, 88, 255, 202, 0, 0, 255, 203, 3, 3, 255, 197, 6, 6, 255, 184, 6, 6, 255, 113, 4, 4, 241, 0, 0, 0, 0,
+ 186, 8, 7, 171, 187, 8, 8, 255, 200, 7, 7, 255, 209, 5, 5, 255, 200, 0, 0, 255, 182, 83, 83, 255, 237, 242, 242, 255, 255, 255, 255, 255, 252, 255, 255, 255, 201, 117, 117, 255, 190, 0, 0, 255, 195, 1, 1, 255, 184, 3, 3, 255, 172, 3, 3, 255, 103, 3, 3, 242, 0, 0, 0, 0,
+ 194, 3, 3, 105, 176, 5, 5, 253, 185, 3, 3, 255, 194, 0, 0, 255, 167, 76, 76, 255, 217, 230, 230, 255, 255, 252, 252, 255, 230, 158, 158, 255, 244, 233, 232, 255, 241, 255, 255, 255, 185, 117, 117, 255, 177, 6, 6, 255, 171, 1, 1, 255, 160, 2, 2, 255, 81, 2, 1, 237, 0, 0, 0, 0,
+ 140, 1, 1, 34, 157, 3, 3, 217, 171, 0, 0, 255, 163, 40, 40, 255, 210, 222, 222, 255, 255, 254, 254, 255, 212, 100, 100, 255, 179, 0, 0, 255, 192, 70, 70, 255, 236, 231, 231, 255, 247, 255, 255, 255, 183, 94, 94, 255, 154, 0, 0, 255, 135, 2, 2, 255, 29, 1, 0, 209, 0, 0, 0, 0,
+ 0, 0, 0, 0, 93, 1, 1, 112, 163, 1, 1, 255, 158, 8, 8, 255, 212, 153, 153, 255, 208, 104, 104, 255, 172, 0, 0, 255, 174, 0, 0, 255, 169, 0, 0, 255, 184, 72, 72, 255, 227, 183, 183, 255, 165, 39, 39, 255, 140, 0, 0, 255, 82, 1, 1, 255, 0, 0, 0, 142, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 0, 0, 2, 99, 1, 1, 165, 150, 0, 0, 255, 151, 0, 0, 255, 155, 0, 0, 255, 159, 0, 0, 255, 160, 0, 0, 255, 157, 0, 0, 255, 151, 0, 0, 255, 143, 0, 0, 255, 136, 0, 0, 255, 98, 0, 0, 255, 11, 0, 0, 201, 0, 0, 0, 41, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 78, 1, 1, 159, 132, 0, 0, 255, 142, 0, 0, 255, 142, 0, 0, 255, 143, 0, 0, 255, 140, 0, 0, 255, 136, 0, 0, 255, 129, 0, 0, 255, 84, 1, 1, 255, 11, 0, 0, 203, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 33, 0, 0, 110, 78, 1, 1, 212, 96, 0, 0, 250, 101, 0, 0, 255, 96, 0, 0, 255, 79, 0, 0, 255, 43, 0, 0, 233, 1, 0, 0, 157, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 77, 0, 0, 0, 109, 0, 0, 0, 114, 0, 0, 0, 100, 0, 0, 0, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_EditPaste(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 195, 179, 134, 255, 189, 173, 130, 255, 176, 159, 121, 255, 111, 96, 75, 51, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 172, 164, 143, 115, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 159, 141, 91, 255, 239, 232, 165, 255, 244, 232, 155, 255, 226, 213, 140, 255, 118, 102, 70, 255, 143, 133, 115, 255, 149, 138, 122, 255, 145, 133, 117, 255, 145, 133, 117, 69, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 172, 164, 143, 255, 247, 240, 171, 255, 249, 241, 170, 255, 247, 239, 166, 255, 162, 151, 115, 255, 245, 236, 161, 255, 118, 103, 79, 212, 214, 197, 120, 255, 124, 108, 76, 255, 120, 97, 52, 255, 232, 195, 95, 255, 236, 182, 34, 255, 111, 94, 78, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 172, 164, 143, 255, 249, 241, 170, 255, 249, 241, 168, 255, 150, 134, 93, 255, 207, 198, 140, 255, 240, 228, 147, 255, 231, 213, 122, 255, 222, 198, 98, 255, 178, 154, 79, 255, 103, 90, 62, 255, 165, 125, 28, 255, 205, 143, 0, 255, 105, 89, 75, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 170, 161, 141, 255, 249, 241, 170, 255, 249, 240, 167, 255, 138, 125, 94, 255, 127, 115, 88, 255, 122, 109, 86, 255, 119, 105, 82, 255, 115, 102, 79, 255, 112, 97, 76, 255, 104, 90, 68, 255, 144, 111, 35, 255, 205, 143, 0, 255, 88, 74, 62, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 166, 158, 138, 255, 248, 240, 169, 255, 248, 234, 153, 255, 245, 227, 136, 255, 234, 209, 109, 255, 212, 161, 19, 255, 212, 161, 19, 255, 211, 160, 18, 255, 207, 151, 13, 255, 202, 145, 7, 255, 205, 143, 0, 255, 205, 143, 0, 255, 68, 57, 48, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 162, 153, 134, 255, 246, 234, 159, 255, 246, 225, 131, 255, 245, 216, 107, 255, 244, 206, 83, 255, 240, 179, 14, 255, 142, 160, 182, 255, 136, 153, 176, 255, 128, 146, 169, 255, 120, 138, 162, 255, 112, 130, 154, 255, 103, 121, 145, 255, 94, 113, 137, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 158, 148, 130, 255, 243, 226, 145, 255, 244, 213, 102, 255, 243, 203, 76, 255, 242, 194, 50, 255, 233, 175, 21, 255, 136, 153, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 251, 252, 255, 239, 241, 247, 255, 225, 231, 239, 255, 86, 104, 129, 255, 77, 96, 122, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 154, 142, 126, 255, 240, 217, 131, 255, 242, 201, 70, 255, 242, 191, 45, 255, 241, 183, 22, 255, 226, 160, 0, 255, 128, 146, 169, 255, 255, 255, 255, 255, 158, 174, 195, 255, 158, 174, 195, 255, 153, 168, 189, 255, 211, 220, 232, 255, 77, 96, 122, 255, 186, 197, 212, 255, 71, 82, 97, 255, 255, 255, 255, 0,
+ 148, 137, 121, 255, 237, 208, 116, 255, 241, 189, 40, 255, 240, 181, 17, 255, 234, 171, 7, 255, 220, 157, 0, 255, 120, 138, 162, 255, 250, 251, 253, 255, 238, 242, 247, 255, 225, 230, 239, 255, 211, 219, 232, 255, 198, 208, 224, 255, 74, 90, 112, 255, 70, 82, 97, 255, 66, 72, 80, 255, 62, 61, 63, 255,
+ 144, 132, 117, 255, 234, 200, 104, 255, 240, 181, 16, 255, 235, 172, 8, 255, 227, 164, 3, 255, 212, 150, 0, 255, 111, 130, 154, 255, 239, 241, 247, 255, 158, 174, 195, 255, 158, 174, 195, 255, 152, 168, 189, 255, 147, 162, 183, 255, 178, 191, 212, 255, 147, 162, 183, 255, 147, 162, 183, 255, 56, 47, 38, 255,
+ 139, 127, 113, 255, 236, 182, 34, 255, 205, 143, 0, 255, 205, 143, 0, 255, 205, 143, 0, 255, 205, 143, 0, 255, 102, 121, 145, 255, 225, 230, 239, 255, 211, 219, 232, 255, 198, 208, 224, 255, 188, 198, 218, 255, 178, 191, 212, 255, 171, 185, 207, 255, 168, 182, 204, 255, 147, 162, 183, 255, 56, 47, 38, 255,
+ 139, 127, 113, 69, 142, 126, 100, 255, 111, 94, 79, 255, 97, 82, 69, 255, 77, 65, 55, 255, 56, 47, 38, 255, 94, 113, 137, 255, 211, 220, 232, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 56, 47, 38, 255,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 85, 104, 129, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_FileCloseAll(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 76, 103, 147, 255, 133, 148, 164, 67, 129, 145, 166, 255, 120, 137, 161, 255, 135, 149, 170, 255, 123, 140, 160, 124, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 76, 103, 147, 255, 96, 116, 149, 255, 83, 105, 141, 92, 0, 0, 0, 0, 109, 121, 158, 21, 130, 145, 166, 255, 117, 132, 159, 85, 0, 0, 0, 0,
+ 0, 0, 0, 0, 171, 162, 142, 255, 171, 162, 142, 255, 171, 162, 142, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 103, 147, 255, 76, 103, 147, 255, 76, 103, 147, 255, 0, 0, 0, 0, 0, 0, 0, 0, 106, 123, 152, 77, 130, 145, 166, 255, 0, 0, 0, 0,
+ 171, 162, 142, 255, 236, 228, 178, 255, 248, 238, 182, 255, 243, 225, 146, 255, 171, 162, 142, 255, 171, 162, 141, 100, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 84, 107, 141, 255, 255, 255, 255, 0,
+ 171, 162, 142, 255, 170, 161, 141, 255, 169, 160, 140, 255, 168, 159, 139, 255, 168, 158, 139, 255, 170, 160, 141, 255, 164, 154, 135, 255, 163, 152, 134, 255, 162, 151, 133, 255, 161, 150, 132, 255, 146, 135, 118, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 107, 141, 255, 0, 0, 0, 0,
+ 171, 162, 142, 255, 255, 247, 194, 255, 250, 241, 189, 255, 250, 242, 187, 255, 251, 242, 175, 255, 253, 235, 162, 255, 254, 230, 146, 255, 254, 222, 132, 255, 253, 215, 119, 255, 250, 199, 87, 255, 141, 123, 93, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 168, 159, 140, 255, 255, 246, 192, 255, 248, 238, 180, 255, 248, 238, 168, 255, 251, 232, 152, 255, 171, 162, 142, 255, 171, 162, 142, 255, 171, 162, 142, 255, 247, 200, 92, 255, 207, 153, 25, 255, 128, 111, 76, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 164, 155, 136, 255, 255, 247, 188, 255, 250, 238, 169, 255, 251, 232, 156, 255, 171, 162, 142, 255, 236, 228, 178, 255, 248, 238, 182, 255, 243, 225, 146, 255, 171, 162, 142, 255, 187, 153, 71, 255, 109, 93, 62, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 159, 150, 132, 255, 255, 244, 182, 255, 251, 233, 159, 255, 252, 227, 143, 255, 171, 162, 142, 255, 170, 161, 141, 255, 169, 160, 140, 255, 168, 159, 139, 255, 168, 158, 139, 255, 170, 160, 141, 255, 164, 154, 135, 255, 163, 152, 134, 255, 162, 151, 133, 255, 161, 150, 132, 255, 146, 135, 118, 73, 0, 0, 0, 0,
+ 155, 144, 127, 255, 255, 242, 173, 255, 254, 231, 150, 255, 253, 223, 132, 255, 171, 162, 142, 255, 255, 247, 194, 255, 250, 241, 189, 255, 250, 242, 187, 255, 251, 242, 175, 255, 253, 235, 162, 255, 254, 230, 146, 255, 254, 222, 132, 255, 253, 215, 119, 255, 250, 199, 87, 255, 141, 123, 93, 255, 0, 0, 0, 0,
+ 150, 139, 123, 255, 255, 238, 159, 255, 234, 205, 112, 255, 226, 196, 104, 255, 168, 159, 140, 255, 255, 246, 192, 255, 248, 238, 180, 255, 248, 238, 168, 255, 251, 232, 152, 255, 252, 225, 136, 255, 251, 218, 119, 255, 249, 208, 105, 255, 247, 200, 92, 255, 207, 153, 25, 255, 128, 111, 76, 251, 0, 0, 0, 0,
+ 146, 135, 119, 255, 147, 134, 110, 251, 126, 111, 82, 251, 105, 90, 60, 251, 164, 155, 136, 255, 255, 247, 188, 255, 250, 238, 169, 255, 251, 232, 156, 255, 252, 226, 139, 255, 251, 218, 122, 255, 248, 209, 106, 255, 244, 198, 91, 255, 243, 189, 77, 255, 198, 147, 26, 255, 109, 93, 62, 251, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 150, 132, 255, 255, 244, 182, 255, 251, 233, 159, 255, 252, 227, 143, 255, 251, 219, 125, 255, 249, 210, 110, 255, 245, 199, 93, 255, 240, 188, 76, 255, 240, 179, 60, 255, 186, 138, 27, 255, 89, 75, 50, 251, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 144, 127, 255, 255, 242, 173, 255, 254, 231, 150, 255, 253, 223, 132, 255, 251, 214, 116, 255, 248, 203, 99, 255, 244, 191, 80, 255, 240, 180, 62, 255, 241, 171, 47, 255, 171, 129, 29, 255, 69, 58, 37, 251, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 139, 123, 255, 255, 238, 159, 255, 234, 205, 112, 255, 226, 196, 104, 255, 214, 183, 92, 255, 199, 168, 79, 255, 185, 151, 64, 255, 170, 136, 51, 255, 158, 123, 39, 255, 159, 120, 30, 255, 55, 46, 26, 251, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 135, 119, 255, 147, 134, 110, 251, 126, 111, 82, 251, 105, 90, 60, 251, 85, 72, 42, 251, 66, 53, 27, 251, 50, 39, 15, 251, 46, 35, 15, 251, 45, 35, 14, 251, 46, 36, 16, 251, 28, 22, 15, 247, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_MediaRewind(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 2, 95, 147, 237, 36, 87, 135, 224, 255, 96, 140, 228, 2, 95, 147, 237, 36, 87, 135, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 94, 144, 235, 40, 95, 139, 224, 255, 83, 128, 214, 255, 94, 144, 235, 40, 95, 139, 224, 255, 83, 128, 214, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 96, 140, 228, 61, 92, 138, 224, 250, 164, 190, 254, 255, 83, 127, 212, 255, 92, 138, 224, 250, 165, 191, 255, 255, 79, 123, 208, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 96, 140, 228, 63, 88, 135, 223, 255, 164, 190, 254, 255, 102, 150, 248, 255, 88, 135, 223, 255, 165, 191, 255, 255, 105, 154, 255, 255, 74, 117, 200, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 96, 140, 228, 63, 85, 133, 222, 255, 164, 190, 254, 255, 123, 165, 248, 255, 85, 133, 222, 255, 165, 191, 255, 255, 133, 174, 255, 255, 79, 137, 253, 255, 68, 111, 192, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 114, 205, 66, 83, 132, 221, 255, 162, 189, 255, 255, 117, 158, 242, 255, 83, 132, 221, 255, 162, 189, 255, 255, 136, 174, 255, 255, 104, 156, 249, 255, 62, 126, 249, 255, 63, 104, 183, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 76, 171, 81, 62, 115, 219, 255, 103, 156, 251, 255, 62, 118, 222, 255, 62, 115, 219, 255, 103, 156, 251, 255, 79, 138, 246, 255, 44, 113, 238, 255, 56, 96, 175, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 76, 169, 74, 47, 100, 207, 255, 52, 114, 232, 255, 33, 97, 220, 255, 47, 100, 207, 255, 52, 114, 232, 255, 36, 106, 242, 255, 51, 89, 166, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 76, 169, 60, 48, 98, 200, 255, 29, 102, 245, 255, 40, 81, 160, 255, 48, 98, 200, 255, 29, 102, 245, 255, 45, 83, 158, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 74, 167, 69, 47, 101, 211, 255, 40, 77, 150, 255, 26, 74, 167, 69, 47, 101, 211, 255, 40, 77, 150, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 255, 106, 58, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 76, 172, 77, 36, 72, 144, 255, 0, 0, 0, 0, 27, 76, 172, 77, 36, 72, 144, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 75, 168, 3, 26, 75, 173, 78, 0, 0, 0, 0, 27, 75, 168, 3, 26, 75, 173, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ZoomIn(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 127, 127, 191, 4, 217, 220, 227, 75, 182, 192, 203, 154, 150, 163, 181, 195, 136, 150, 170, 217, 115, 132, 153, 229, 123, 140, 162, 190, 160, 176, 212, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 185, 193, 207, 128, 149, 160, 177, 208, 176, 188, 200, 247, 187, 203, 214, 255, 187, 212, 222, 255, 152, 178, 195, 255, 118, 144, 165, 255, 82, 103, 131, 236, 85, 108, 135, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 88, 107, 137, 26, 145, 158, 176, 201, 189, 197, 208, 253, 234, 244, 246, 255, 230, 246, 249, 255, 222, 242, 246, 255, 206, 234, 244, 255, 178, 212, 229, 255, 128, 158, 181, 255, 70, 90, 119, 250, 70, 84, 113, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 188, 195, 206, 158, 163, 176, 189, 243, 227, 235, 240, 255, 244, 250, 251, 255, 241, 249, 251, 255, 0, 0, 0, 255, 215, 237, 245, 255, 191, 223, 241, 255, 164, 203, 230, 255, 104, 133, 158, 255, 60, 82, 111, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 148, 160, 178, 213, 182, 196, 207, 255, 234, 245, 249, 255, 243, 250, 252, 255, 244, 251, 252, 255, 0, 0, 0, 255, 218, 237, 246, 255, 193, 222, 240, 255, 169, 207, 236, 255, 125, 162, 192, 255, 59, 81, 112, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 113, 129, 151, 255, 196, 218, 227, 255, 222, 241, 247, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 165, 202, 231, 255, 130, 166, 204, 255, 63, 84, 114, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 143, 164, 221, 164, 188, 205, 255, 204, 232, 244, 255, 215, 238, 246, 255, 218, 239, 247, 255, 0, 0, 0, 255, 197, 226, 242, 255, 179, 213, 236, 255, 157, 195, 227, 255, 114, 148, 181, 255, 55, 75, 107, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 127, 141, 163, 162, 124, 149, 173, 247, 186, 223, 242, 255, 193, 225, 243, 255, 193, 225, 242, 255, 0, 0, 0, 255, 178, 216, 237, 255, 163, 203, 231, 255, 135, 173, 211, 255, 87, 115, 146, 255, 85, 95, 102, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 102, 127, 153, 20, 82, 101, 130, 241, 139, 171, 193, 255, 170, 209, 236, 255, 174, 210, 238, 255, 167, 207, 236, 255, 158, 199, 231, 255, 138, 178, 216, 255, 98, 129, 161, 255, 66, 86, 114, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83, 105, 134, 70, 77, 97, 129, 245, 101, 129, 157, 255, 126, 162, 191, 255, 135, 173, 208, 255, 115, 149, 180, 255, 89, 117, 147, 255, 64, 84, 110, 255, 145, 128, 79, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 83, 104, 135, 49, 120, 141, 172, 155, 66, 87, 117, 200, 58, 79, 112, 243, 67, 88, 119, 255, 87, 107, 142, 225, 74, 76, 71, 117, 66, 52, 45, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 77, 80, 77, 82, 79, 80, 77, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 80, 77, 82, 79, 80, 77, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 0, 2, 0, 0, 0, 0, 77, 80, 77, 82, 79, 80, 77, 255, 179, 141, 50, 255, 116, 102, 67, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 79, 58, 79, 79, 77, 202, 78, 78, 75, 81, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ArrowRight(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 156, 180, 144, 255, 166, 192, 152, 72, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 170, 137, 255, 132, 151, 123, 255, 153, 176, 141, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 140, 161, 130, 255, 184, 225, 165, 255, 132, 151, 123, 255, 153, 176, 141, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 162, 188, 149, 255, 156, 180, 144, 255, 147, 170, 137, 255, 140, 161, 130, 255, 132, 152, 124, 255, 187, 229, 168, 255, 150, 199, 128, 255, 132, 151, 123, 255, 153, 176, 141, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 156, 180, 144, 255, 201, 241, 180, 255, 196, 238, 174, 255, 191, 234, 170, 255, 185, 228, 164, 255, 182, 224, 163, 255, 140, 193, 118, 255, 128, 178, 109, 255, 132, 151, 123, 255, 153, 177, 141, 99, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 170, 137, 255, 198, 239, 177, 255, 173, 226, 147, 255, 163, 216, 139, 255, 152, 205, 129, 255, 140, 193, 118, 255, 128, 181, 108, 255, 116, 170, 98, 255, 100, 146, 86, 255, 103, 118, 96, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 140, 161, 130, 255, 190, 233, 169, 255, 134, 179, 115, 255, 125, 170, 106, 255, 116, 160, 98, 255, 106, 151, 90, 255, 116, 170, 98, 255, 78, 119, 67, 255, 28, 34, 27, 255, 53, 65, 52, 82, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 132, 152, 124, 255, 35, 43, 34, 255, 44, 54, 43, 255, 53, 64, 51, 255, 60, 73, 58, 255, 96, 141, 81, 255, 78, 119, 67, 255, 28, 34, 27, 255, 54, 66, 53, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 127, 146, 120, 255, 78, 119, 67, 255, 28, 34, 27, 255, 54, 66, 53, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 127, 146, 120, 255, 28, 34, 27, 255, 37, 45, 36, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 127, 146, 120, 255, 44, 54, 43, 51, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_EditFind(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 138, 159, 193, 223, 113, 137, 178, 234, 54, 85, 142, 221, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 138, 159, 193, 191, 113, 137, 178, 234, 54, 85, 142, 221, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 59, 90, 147, 171, 241, 244, 249, 255, 12, 49, 117, 226, 21, 57, 124, 2, 255, 255, 255, 0, 21, 57, 124, 2, 59, 90, 147, 171, 241, 244, 249, 255, 12, 49, 117, 226, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 138, 159, 193, 191, 122, 145, 183, 255, 79, 107, 157, 255, 48, 79, 139, 255, 42, 74, 134, 235, 255, 255, 255, 0, 145, 165, 196, 255, 122, 145, 183, 255, 79, 107, 157, 255, 48, 79, 139, 255, 42, 74, 134, 235, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 127, 150, 186, 255, 248, 249, 251, 255, 177, 195, 222, 255, 117, 145, 195, 255, 33, 68, 133, 255, 8, 46, 118, 1, 127, 150, 186, 255, 248, 249, 251, 255, 178, 196, 223, 255, 135, 162, 208, 255, 36, 70, 134, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 120, 143, 181, 18, 127, 149, 185, 255, 99, 126, 172, 255, 73, 102, 155, 255, 45, 79, 140, 255, 59, 90, 148, 255, 54, 88, 150, 218, 99, 123, 168, 255, 112, 137, 178, 255, 87, 114, 163, 255, 40, 74, 135, 255, 33, 68, 132, 255, 99, 125, 170, 18, 255, 255, 255, 0, 255, 255, 255, 0,
+ 138, 159, 193, 5, 124, 146, 185, 255, 234, 240, 247, 255, 240, 246, 253, 255, 196, 213, 240, 255, 95, 127, 181, 255, 38, 72, 135, 255, 16, 53, 123, 202, 118, 141, 178, 255, 255, 255, 255, 255, 243, 246, 251, 255, 193, 210, 238, 255, 86, 118, 173, 255, 36, 71, 135, 255, 255, 255, 255, 0, 255, 255, 255, 0,
+ 138, 159, 193, 123, 114, 137, 176, 255, 255, 255, 255, 255, 199, 210, 231, 255, 139, 162, 203, 255, 77, 108, 166, 255, 23, 60, 126, 255, 118, 141, 178, 120, 118, 141, 178, 255, 210, 217, 230, 255, 205, 216, 236, 255, 137, 160, 202, 255, 85, 118, 172, 255, 24, 59, 124, 255, 116, 140, 181, 126, 255, 255, 255, 0,
+ 139, 158, 189, 239, 108, 133, 176, 255, 78, 107, 159, 255, 49, 83, 145, 255, 41, 73, 135, 255, 38, 70, 132, 255, 23, 57, 124, 255, 16, 53, 123, 223, 112, 135, 174, 255, 78, 107, 159, 255, 49, 84, 145, 255, 41, 75, 138, 255, 28, 61, 124, 255, 20, 55, 119, 255, 55, 87, 144, 249, 255, 255, 255, 0,
+ 134, 154, 189, 255, 253, 253, 254, 255, 225, 232, 245, 255, 184, 200, 228, 255, 132, 158, 205, 255, 32, 64, 126, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 98, 126, 171, 255, 229, 232, 241, 255, 223, 226, 235, 255, 175, 191, 221, 255, 108, 137, 188, 255, 41, 74, 134, 255, 255, 255, 255, 0,
+ 123, 145, 182, 255, 250, 250, 252, 255, 184, 200, 227, 255, 140, 163, 205, 255, 95, 128, 185, 255, 32, 64, 126, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 98, 126, 171, 255, 229, 232, 241, 255, 223, 226, 235, 255, 175, 191, 221, 255, 108, 137, 188, 255, 41, 74, 134, 255, 255, 255, 255, 0,
+ 123, 145, 182, 255, 250, 250, 252, 255, 184, 200, 227, 255, 140, 163, 205, 255, 95, 128, 185, 255, 32, 64, 126, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 98, 126, 171, 255, 229, 232, 241, 255, 223, 226, 235, 255, 175, 191, 221, 255, 108, 137, 188, 255, 41, 74, 134, 255, 255, 255, 255, 0,
+ 123, 145, 182, 255, 250, 250, 252, 255, 184, 200, 227, 255, 140, 163, 205, 255, 95, 128, 185, 255, 32, 64, 126, 255, 255, 255, 255, 0, 255, 255, 255, 0, 98, 126, 171, 9, 98, 126, 171, 255, 226, 230, 239, 255, 186, 198, 224, 255, 147, 169, 208, 255, 83, 117, 175, 255, 39, 73, 135, 255, 255, 255, 255, 0,
+ 97, 121, 160, 214, 90, 119, 164, 255, 63, 95, 149, 255, 57, 88, 143, 255, 57, 87, 142, 255, 31, 63, 126, 232, 32, 64, 126, 12, 255, 255, 255, 0, 98, 126, 171, 6, 98, 126, 171, 235, 74, 102, 151, 225, 78, 108, 158, 255, 60, 91, 146, 255, 49, 81, 138, 255, 13, 48, 113, 238, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 2, 255, 255, 255, 0, 147, 162, 183, 5, 87, 112, 160, 7, 87, 112, 160, 13, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_MediaForward(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 28, 96, 140, 228, 2, 0, 0, 0, 0, 96, 140, 228, 28, 96, 140, 228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 154, 231, 255, 95, 147, 237, 34, 96, 140, 228, 2, 113, 154, 231, 255, 95, 147, 237, 34, 96, 140, 228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 153, 230, 255, 96, 139, 222, 255, 94, 144, 235, 40, 108, 152, 229, 255, 96, 139, 222, 255, 94, 144, 235, 40, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 148, 229, 255, 158, 191, 251, 255, 82, 128, 217, 235, 102, 146, 228, 255, 157, 190, 250, 255, 82, 128, 217, 235, 96, 140, 228, 61, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 255, 155, 190, 250, 255, 137, 181, 253, 255, 70, 117, 211, 255, 140, 177, 244, 255, 136, 180, 252, 255, 70, 117, 211, 255, 96, 140, 228, 63, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 138, 226, 255, 148, 182, 250, 255, 116, 165, 253, 255, 96, 151, 253, 255, 60, 109, 205, 255, 111, 158, 246, 255, 96, 150, 252, 255, 60, 109, 205, 255, 96, 140, 228, 63, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 131, 225, 255, 133, 173, 239, 255, 96, 151, 253, 255, 51, 116, 244, 255, 27, 91, 214, 255, 51, 89, 166, 255, 55, 115, 229, 255, 27, 91, 214, 255, 51, 89, 166, 255, 64, 114, 205, 95, 96, 140, 228, 3, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 122, 223, 255, 116, 157, 238, 255, 51, 116, 244, 255, 27, 91, 214, 255, 33, 68, 140, 255, 43, 103, 220, 255, 27, 91, 214, 255, 33, 68, 140, 255, 27, 76, 171, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 117, 221, 255, 81, 132, 230, 255, 27, 91, 214, 255, 33, 68, 140, 255, 65, 115, 212, 255, 27, 91, 214, 255, 33, 68, 140, 255, 27, 76, 169, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 110, 220, 255, 60, 112, 212, 255, 33, 68, 140, 255, 49, 102, 208, 255, 60, 112, 212, 255, 33, 68, 140, 255, 27, 76, 169, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 106, 219, 255, 33, 68, 140, 255, 26, 74, 167, 69, 49, 106, 219, 255, 33, 68, 140, 255, 26, 74, 167, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 102, 216, 255, 27, 76, 172, 77, 0, 0, 0, 0, 44, 102, 216, 255, 27, 76, 172, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 75, 173, 78, 27, 75, 168, 3, 0, 0, 0, 0, 26, 75, 173, 78, 27, 75, 168, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_WindowsTile(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 139, 170, 234, 255, 139, 170, 234, 255, 127, 161, 233, 255, 108, 148, 231, 255, 88, 135, 229, 255, 70, 123, 228, 255, 57, 114, 226, 255, 139, 170, 234, 255, 139, 170, 234, 255, 127, 161, 233, 255, 108, 148, 231, 255, 88, 135, 229, 255, 70, 123, 228, 255, 57, 114, 226, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 139, 170, 234, 255, 254, 255, 255, 255, 144, 181, 251, 255, 132, 171, 249, 255, 119, 162, 246, 255, 106, 153, 245, 255, 57, 114, 226, 255, 139, 170, 234, 255, 254, 255, 255, 255, 144, 181, 251, 255, 132, 171, 249, 255, 119, 162, 246, 255, 106, 153, 245, 255, 57, 114, 226, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 139, 170, 234, 255, 139, 170, 234, 255, 110, 151, 231, 255, 86, 134, 229, 255, 64, 118, 227, 255, 57, 114, 226, 255, 57, 114, 226, 255, 139, 170, 234, 255, 139, 170, 234, 255, 110, 151, 231, 255, 86, 134, 229, 255, 64, 118, 227, 255, 57, 114, 226, 255, 57, 114, 226, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 147, 160, 186, 255, 254, 255, 255, 255, 244, 246, 252, 255, 234, 239, 250, 255, 223, 231, 247, 255, 211, 222, 245, 255, 53, 73, 99, 255, 147, 160, 186, 255, 254, 255, 255, 255, 244, 246, 252, 255, 234, 239, 250, 255, 223, 231, 247, 255, 211, 222, 245, 255, 53, 73, 99, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 138, 153, 180, 255, 252, 253, 254, 255, 241, 244, 252, 255, 230, 236, 249, 255, 219, 228, 246, 255, 208, 219, 245, 255, 53, 73, 99, 255, 138, 153, 180, 255, 252, 253, 254, 255, 241, 244, 252, 255, 230, 236, 249, 255, 219, 228, 246, 255, 208, 219, 245, 255, 53, 73, 99, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 131, 147, 173, 255, 250, 251, 254, 255, 237, 242, 251, 255, 226, 233, 249, 255, 215, 225, 246, 255, 203, 216, 243, 255, 53, 73, 99, 255, 131, 147, 173, 255, 250, 251, 254, 255, 237, 242, 251, 255, 226, 233, 249, 255, 215, 225, 246, 255, 203, 216, 243, 255, 53, 73, 99, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 119, 136, 163, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 119, 136, 163, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 139, 170, 234, 255, 139, 170, 234, 255, 127, 161, 233, 255, 108, 148, 231, 255, 88, 135, 229, 255, 70, 123, 228, 255, 57, 114, 226, 255, 139, 170, 234, 255, 139, 170, 234, 255, 127, 161, 233, 255, 108, 148, 231, 255, 88, 135, 229, 255, 70, 123, 228, 255, 57, 114, 226, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 139, 170, 234, 255, 254, 255, 255, 255, 144, 181, 251, 255, 132, 171, 249, 255, 119, 162, 246, 255, 106, 153, 245, 255, 57, 114, 226, 255, 139, 170, 234, 255, 254, 255, 255, 255, 144, 181, 251, 255, 132, 171, 249, 255, 119, 162, 246, 255, 106, 153, 245, 255, 57, 114, 226, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 139, 170, 234, 255, 139, 170, 234, 255, 110, 151, 231, 255, 86, 134, 229, 255, 64, 118, 227, 255, 57, 114, 226, 255, 57, 114, 226, 255, 139, 170, 234, 255, 139, 170, 234, 255, 110, 151, 231, 255, 86, 134, 229, 255, 64, 118, 227, 255, 57, 114, 226, 255, 57, 114, 226, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 147, 160, 186, 255, 254, 255, 255, 255, 244, 246, 252, 255, 234, 239, 250, 255, 223, 231, 247, 255, 211, 222, 245, 255, 53, 73, 99, 255, 147, 160, 186, 255, 254, 255, 255, 255, 244, 246, 252, 255, 234, 239, 250, 255, 223, 231, 247, 255, 211, 222, 245, 255, 53, 73, 99, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 138, 153, 180, 255, 252, 253, 254, 255, 241, 244, 252, 255, 230, 236, 249, 255, 219, 228, 246, 255, 208, 219, 245, 255, 53, 73, 99, 255, 138, 153, 180, 255, 252, 253, 254, 255, 241, 244, 252, 255, 230, 236, 249, 255, 219, 228, 246, 255, 208, 219, 245, 255, 53, 73, 99, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 131, 147, 173, 255, 250, 251, 254, 255, 237, 242, 251, 255, 226, 233, 249, 255, 215, 225, 246, 255, 203, 216, 243, 255, 53, 73, 99, 255, 131, 147, 173, 255, 250, 251, 254, 255, 237, 242, 251, 255, 226, 233, 249, 255, 215, 225, 246, 255, 203, 216, 243, 255, 53, 73, 99, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 119, 136, 163, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 119, 136, 163, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_FontBold(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 240, 0, 0, 0, 100, 0, 0, 0, 12, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 51, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 255, 255, 255, 0, 5, 4, 5, 71, 5, 4, 5, 255, 0, 0, 0, 255, 0, 0, 0, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 255, 255, 255, 0, 5, 4, 5, 3, 5, 4, 5, 255, 0, 0, 0, 255, 0, 0, 0, 226, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 255, 255, 255, 0, 5, 4, 5, 71, 5, 4, 5, 255, 0, 0, 0, 255, 0, 0, 0, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 254, 0, 0, 0, 161, 0, 0, 0, 23, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 255, 255, 255, 0, 5, 4, 5, 71, 5, 4, 5, 255, 0, 0, 0, 255, 0, 0, 0, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 255, 255, 255, 0, 5, 4, 5, 3, 5, 4, 5, 255, 0, 0, 0, 255, 0, 0, 0, 226, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 57, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 255, 255, 255, 0, 5, 4, 5, 71, 5, 4, 5, 255, 0, 0, 0, 255, 0, 0, 0, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 240, 0, 0, 0, 100, 0, 0, 0, 12, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_EditErase(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 74, 73, 73, 48, 72, 74, 73, 188, 72, 73, 73, 66, 74, 74, 73, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 65, 65, 68, 3, 67, 68, 69, 103, 65, 65, 68, 255, 66, 67, 67, 246, 75, 74, 75, 81, 75, 76, 75, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 58, 61, 64, 4, 82, 81, 80, 34, 71, 71, 70, 110, 255, 255, 255, 0, 255, 255, 255, 0,
+ 65, 65, 68, 4, 65, 65, 68, 98, 62, 63, 66, 182, 55, 57, 61, 255, 63, 64, 68, 252, 72, 72, 73, 122, 77, 75, 75, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 36, 41, 49, 8, 59, 63, 66, 66, 75, 74, 74, 247, 64, 64, 66, 156, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 65, 65, 68, 25, 65, 65, 68, 56, 64, 65, 68, 182, 58, 60, 63, 255, 62, 63, 64, 255, 79, 77, 75, 177, 77, 77, 76, 11, 255, 255, 255, 0, 53, 56, 61, 9, 71, 73, 73, 168, 61, 63, 66, 251, 53, 53, 55, 139, 42, 46, 52, 12, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 65, 65, 68, 6, 65, 65, 68, 112, 63, 64, 67, 251, 62, 62, 66, 255, 76, 77, 77, 166, 57, 58, 63, 46, 58, 58, 62, 147, 61, 60, 60, 255, 46, 49, 52, 147, 38, 42, 48, 15, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 59, 61, 61, 1, 63, 63, 66, 41, 62, 63, 66, 207, 54, 55, 59, 255, 50, 51, 54, 247, 49, 51, 50, 239, 38, 42, 45, 174, 35, 39, 45, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 47, 48, 52, 64, 46, 47, 52, 249, 57, 58, 61, 255, 46, 47, 50, 222, 32, 35, 41, 18, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 51, 52, 52, 32, 38, 39, 44, 210, 45, 46, 49, 254, 47, 48, 52, 255, 52, 53, 56, 255, 42, 43, 45, 218, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 49, 50, 53, 31, 38, 40, 43, 213, 38, 39, 44, 252, 40, 41, 43, 172, 20, 22, 25, 52, 30, 31, 36, 182, 48, 49, 51, 255, 37, 39, 43, 105, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 40, 43, 45, 24, 29, 32, 35, 202, 30, 33, 37, 255, 45, 46, 49, 194, 25, 24, 26, 18, 12, 14, 14, 11, 15, 18, 20, 11, 31, 34, 38, 151, 48, 48, 51, 244, 37, 42, 48, 29, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 40, 48, 56, 8, 30, 33, 38, 162, 24, 27, 33, 241, 44, 45, 49, 228, 43, 45, 47, 42, 255, 255, 255, 0, 255, 255, 255, 0, 12, 16, 16, 8, 9, 9, 11, 14, 45, 47, 49, 205, 25, 28, 32, 146, 28, 33, 38, 3, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 26, 29, 32, 75, 22, 24, 32, 255, 37, 38, 43, 255, 36, 38, 40, 133, 9, 11, 13, 11, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 4, 4, 3, 2, 36, 38, 40, 36, 36, 36, 37, 223, 13, 16, 17, 31, 39, 45, 52, 2, 255, 255, 255, 0,
+ 255, 255, 255, 0, 16, 16, 18, 6, 20, 20, 22, 133, 18, 19, 23, 255, 31, 32, 35, 186, 8, 10, 12, 38, 12, 14, 16, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 16, 16, 17, 3, 54, 54, 57, 147, 11, 13, 10, 53, 39, 46, 55, 2, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 28, 31, 37, 50, 5, 6, 7, 145, 0, 1, 2, 62, 3, 4, 4, 13, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 4, 2, 2, 2, 10, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ToolsColor(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 247, 239, 169, 115, 246, 217, 124, 244, 245, 214, 118, 250, 245, 212, 114, 253, 245, 214, 117, 251, 244, 207, 94, 241, 245, 230, 144, 147, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 247, 239, 170, 143, 243, 207, 90, 249, 246, 232, 152, 224, 248, 241, 182, 255, 248, 241, 182, 255, 248, 241, 182, 255, 246, 231, 146, 228, 244, 212, 108, 250, 244, 210, 101, 233, 232, 212, 132, 116, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 247, 239, 169, 120, 244, 212, 107, 251, 246, 234, 157, 238, 247, 241, 175, 244, 248, 241, 182, 255, 248, 241, 182, 255, 248, 241, 182, 255, 246, 238, 166, 249, 246, 234, 160, 239, 237, 210, 112, 227, 237, 198, 84, 248, 245, 231, 149, 88, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 245, 216, 122, 248, 246, 234, 158, 230, 248, 241, 182, 255, 255, 175, 109, 255, 255, 144, 85, 255, 255, 176, 109, 255, 248, 241, 182, 255, 247, 236, 165, 254, 247, 236, 167, 254, 245, 231, 152, 241, 217, 176, 77, 245, 221, 187, 93, 171, 244, 223, 132, 64, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 245, 212, 112, 255, 247, 240, 172, 235, 248, 241, 182, 255, 255, 144, 84, 255, 217, 34, 0, 255, 88, 0, 0, 255, 248, 240, 178, 255, 151, 182, 180, 255, 100, 141, 179, 255, 140, 171, 182, 255, 236, 211, 120, 232, 201, 154, 53, 236, 219, 182, 81, 143, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 245, 212, 112, 255, 246, 237, 164, 230, 248, 241, 182, 255, 243, 89, 41, 255, 122, 0, 0, 255, 219, 31, 0, 255, 246, 233, 147, 255, 100, 140, 176, 255, 0, 58, 176, 255, 0, 0, 97, 255, 244, 222, 115, 244, 227, 195, 92, 222, 174, 129, 39, 239, 242, 211, 100, 62, 255, 255, 255, 0,
+ 255, 255, 255, 0, 243, 203, 84, 249, 245, 227, 142, 207, 248, 241, 182, 255, 248, 241, 182, 255, 246, 234, 158, 254, 246, 233, 147, 255, 246, 232, 148, 255, 35, 89, 179, 255, 0, 15, 179, 255, 0, 43, 171, 255, 244, 222, 115, 251, 239, 215, 99, 238, 180, 132, 29, 248, 206, 157, 39, 148, 255, 255, 255, 0,
+ 255, 255, 255, 0, 244, 220, 118, 105, 220, 180, 59, 247, 244, 226, 139, 181, 247, 231, 154, 232, 246, 230, 149, 254, 246, 232, 149, 254, 245, 227, 140, 255, 244, 227, 133, 255, 244, 222, 112, 255, 244, 220, 104, 255, 244, 219, 106, 255, 239, 212, 92, 244, 185, 139, 32, 247, 201, 151, 34, 171, 255, 255, 255, 0,
+ 255, 255, 255, 0, 244, 226, 137, 32, 244, 223, 132, 66, 194, 153, 29, 253, 201, 164, 55, 255, 235, 194, 70, 255, 240, 212, 101, 251, 243, 218, 102, 254, 140, 219, 62, 255, 80, 186, 0, 255, 103, 171, 0, 255, 243, 217, 99, 255, 235, 203, 81, 244, 185, 139, 30, 248, 200, 149, 29, 167, 255, 255, 255, 0,
+ 244, 223, 130, 2, 244, 220, 124, 7, 255, 255, 255, 0, 255, 255, 255, 0, 243, 212, 106, 108, 178, 129, 17, 253, 232, 202, 82, 254, 243, 218, 98, 255, 113, 217, 35, 255, 43, 145, 0, 255, 0, 96, 0, 255, 243, 217, 98, 255, 229, 195, 73, 239, 176, 128, 18, 254, 206, 155, 27, 115, 255, 255, 255, 0,
+ 255, 255, 255, 0, 243, 216, 112, 2, 255, 255, 255, 0, 255, 255, 255, 0, 231, 179, 34, 254, 201, 151, 28, 231, 233, 202, 81, 255, 242, 215, 95, 255, 103, 179, 10, 255, 0, 111, 0, 255, 37, 136, 0, 255, 238, 209, 83, 250, 204, 159, 46, 238, 172, 125, 24, 254, 189, 135, 11, 2, 255, 255, 255, 0,
+ 255, 255, 255, 0, 242, 210, 99, 1, 255, 255, 255, 0, 255, 255, 255, 0, 233, 181, 32, 255, 219, 176, 52, 206, 240, 210, 89, 255, 240, 212, 92, 255, 242, 215, 92, 255, 242, 214, 90, 253, 236, 207, 81, 251, 215, 174, 55, 244, 169, 123, 24, 253, 201, 148, 26, 143, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 182, 58, 71, 193, 140, 34, 241, 234, 194, 67, 255, 231, 195, 72, 255, 236, 201, 78, 255, 226, 193, 68, 245, 199, 163, 56, 251, 171, 124, 26, 249, 209, 155, 25, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 240, 198, 69, 1, 255, 255, 255, 0, 255, 255, 255, 0, 214, 165, 45, 84, 172, 126, 36, 229, 184, 137, 31, 253, 168, 125, 31, 252, 175, 133, 35, 250, 210, 157, 32, 160, 223, 169, 29, 83, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_ToolsSortDescend(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 149, 88, 111, 173, 149, 85, 105, 185, 151, 91, 114, 157, 149, 90, 112, 186, 145, 71, 77, 209, 140, 51, 41, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 147, 73, 81, 182, 0, 0, 0, 0, 155, 89, 100, 23, 149, 73, 76, 232, 125, 46, 37, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 151, 70, 70, 22, 0, 0, 0, 0, 153, 82, 95, 153, 126, 47, 37, 255, 128, 47, 39, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 156, 88, 107, 67, 146, 71, 77, 255, 126, 47, 38, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 149, 91, 114, 224, 138, 52, 41, 232, 133, 55, 44, 23, 0, 0, 0, 0, 148, 65, 65, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 152, 87, 107, 141, 143, 63, 62, 255, 136, 50, 40, 101, 0, 0, 0, 0, 146, 73, 61, 21, 138, 51, 40, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 148, 71, 77, 43, 136, 51, 41, 244, 119, 44, 34, 245, 125, 46, 38, 155, 131, 49, 38, 168, 121, 45, 36, 234, 123, 45, 36, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 79, 123, 202, 24, 72, 112, 191, 245, 58, 96, 163, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 73, 114, 193, 170, 69, 107, 183, 255, 58, 88, 151, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 75, 0, 0, 0, 255, 0, 0, 0, 69, 0, 0, 0, 138, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 70, 109, 185, 222, 67, 102, 175, 225, 51, 83, 140, 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 71, 112, 192, 66, 69, 107, 183, 247, 60, 93, 157, 40, 51, 80, 137, 255, 58, 89, 152, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 255, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 69, 107, 183, 203, 66, 101, 174, 218, 54, 86, 146, 150, 52, 82, 139, 244, 55, 86, 147, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 255, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0,
+ 69, 107, 183, 3, 69, 106, 183, 241, 69, 107, 183, 24, 0, 0, 0, 0, 57, 90, 153, 77, 51, 79, 136, 255, 55, 90, 150, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 106, 182, 198, 55, 85, 145, 248, 57, 87, 147, 100, 58, 86, 152, 10, 51, 79, 137, 239, 51, 79, 136, 255, 51, 79, 135, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_MediaPlay(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 28, 96, 140, 228, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 113, 154, 231, 255, 95, 147, 237, 34, 96, 140, 228, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 109, 153, 230, 255, 96, 139, 222, 255, 94, 144, 235, 40, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 104, 148, 229, 255, 158, 191, 251, 255, 82, 128, 217, 235, 96, 140, 228, 61, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 255, 155, 190, 250, 255, 137, 181, 253, 255, 70, 117, 211, 255, 96, 140, 228, 63, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 89, 138, 226, 255, 148, 182, 250, 255, 116, 165, 253, 255, 96, 151, 253, 255, 60, 109, 205, 255, 96, 140, 228, 63, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 81, 131, 225, 255, 133, 173, 239, 255, 96, 151, 253, 255, 51, 116, 244, 255, 27, 91, 214, 255, 51, 89, 166, 255, 64, 114, 205, 95, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 72, 122, 223, 255, 116, 157, 238, 255, 51, 116, 244, 255, 27, 91, 214, 255, 33, 68, 140, 255, 27, 76, 171, 81, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 63, 117, 221, 255, 81, 132, 230, 255, 27, 91, 214, 255, 33, 68, 140, 255, 27, 76, 169, 74, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 56, 110, 220, 255, 60, 112, 212, 255, 33, 68, 140, 255, 27, 76, 169, 60, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 49, 106, 219, 255, 33, 68, 140, 255, 26, 74, 167, 69, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 44, 102, 216, 255, 27, 76, 172, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 26, 75, 173, 78, 27, 75, 168, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_NavigateRefresh(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 174, 190, 212, 255, 169, 185, 207, 255, 164, 179, 201, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 178, 194, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 171, 192, 255, 54, 74, 100, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 175, 191, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 185, 201, 255, 186, 197, 212, 255, 54, 74, 100, 255, 164, 179, 201, 140, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 171, 187, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 153, 35, 255, 206, 214, 204, 255, 127, 143, 164, 255, 58, 78, 103, 255, 54, 74, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 167, 182, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 233, 206, 255, 112, 153, 35, 255, 112, 153, 35, 255, 112, 153, 35, 255, 87, 123, 16, 255, 174, 185, 202, 255, 147, 162, 183, 255, 54, 74, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 163, 178, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 153, 35, 255, 198, 213, 170, 255, 255, 255, 255, 255, 82, 118, 17, 255, 219, 226, 208, 255, 233, 237, 245, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 158, 174, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 153, 35, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 238, 241, 247, 255, 225, 231, 241, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 154, 169, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 254, 255, 242, 245, 249, 255, 112, 153, 35, 255, 218, 225, 238, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 150, 165, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 241, 222, 255, 112, 153, 35, 255, 247, 248, 251, 255, 213, 225, 196, 255, 112, 153, 35, 255, 211, 219, 235, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 153, 35, 255, 112, 153, 35, 255, 112, 153, 35, 255, 112, 153, 35, 255, 188, 203, 188, 255, 203, 213, 231, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 237, 215, 255, 79, 106, 16, 255, 233, 237, 245, 255, 220, 227, 239, 255, 209, 217, 234, 255, 196, 207, 228, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 238, 241, 247, 255, 225, 231, 241, 255, 213, 221, 236, 255, 201, 211, 230, 255, 189, 202, 225, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_EditRedo(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 170, 194, 245, 26, 169, 193, 245, 148, 167, 193, 245, 196, 158, 187, 245, 226, 140, 175, 244, 100, 121, 161, 244, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 170, 194, 245, 26, 170, 194, 245, 242, 157, 185, 245, 227, 127, 164, 244, 220, 129, 168, 244, 227, 133, 170, 244, 220, 120, 162, 244, 243, 121, 162, 244, 101, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 170, 194, 245, 217, 153, 183, 245, 236, 71, 121, 224, 239, 55, 96, 180, 247, 58, 100, 182, 252, 64, 109, 199, 245, 100, 147, 243, 232, 113, 156, 244, 232, 113, 157, 244, 86, 255, 255, 255, 0, 166, 200, 245, 48, 64, 114, 214, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 165, 192, 245, 223, 86, 136, 238, 249, 54, 91, 159, 251, 68, 110, 175, 217, 53, 93, 172, 198, 53, 93, 172, 244, 54, 95, 179, 251, 99, 147, 243, 253, 103, 153, 243, 230, 107, 157, 244, 89, 158, 192, 245, 213, 59, 105, 199, 255, 170, 194, 245, 9, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 128, 165, 244, 188, 69, 119, 220, 239, 39, 74, 140, 218, 80, 125, 183, 36, 255, 255, 255, 0, 53, 93, 169, 111, 51, 91, 167, 245, 44, 80, 155, 250, 85, 137, 241, 231, 113, 156, 244, 255, 106, 154, 243, 255, 52, 95, 181, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 128, 169, 244, 194, 69, 119, 222, 234, 38, 73, 142, 195, 32, 64, 126, 3, 255, 255, 255, 0, 255, 255, 255, 0, 52, 92, 168, 65, 40, 75, 146, 171, 118, 156, 236, 255, 91, 141, 243, 255, 75, 130, 236, 255, 46, 85, 163, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 131, 169, 244, 180, 75, 127, 232, 245, 40, 75, 147, 217, 32, 64, 126, 5, 255, 255, 255, 0, 255, 255, 255, 0, 148, 181, 245, 45, 148, 181, 245, 255, 106, 154, 243, 255, 73, 130, 234, 255, 54, 115, 223, 255, 40, 76, 149, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 112, 151, 227, 117, 81, 133, 236, 253, 50, 89, 172, 250, 32, 64, 126, 11, 255, 255, 255, 0, 255, 255, 255, 0, 64, 114, 214, 255, 58, 105, 199, 255, 52, 95, 182, 255, 46, 84, 164, 255, 40, 76, 149, 255, 37, 70, 138, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 141, 176, 245, 6, 102, 147, 239, 254, 69, 118, 219, 252, 39, 74, 146, 71, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 170, 194, 245, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 86, 126, 207, 109, 84, 136, 240, 254, 56, 100, 190, 209, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 42, 80, 155, 1, 79, 123, 214, 233, 79, 132, 240, 253, 64, 111, 208, 92, 94, 142, 239, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 42, 80, 155, 14, 76, 121, 217, 202, 80, 133, 243, 245, 72, 123, 227, 67, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 75, 128, 234, 85, 90, 141, 243, 89, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_MediaGoToBegin(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 2, 96, 140, 228, 28, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 113, 154, 231, 255, 128, 158, 231, 250, 93, 136, 225, 236, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 2, 95, 147, 237, 34, 87, 135, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 109, 153, 230, 255, 170, 196, 239, 255, 87, 135, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 94, 144, 235, 40, 95, 139, 224, 255, 83, 128, 214, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 104, 148, 229, 255, 161, 190, 240, 255, 83, 128, 214, 255, 255, 255, 255, 0, 96, 140, 228, 3, 96, 140, 228, 61, 92, 138, 224, 250, 165, 191, 255, 255, 79, 123, 208, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 255, 150, 180, 239, 255, 79, 123, 208, 255, 96, 140, 228, 3, 96, 140, 228, 63, 88, 135, 223, 255, 165, 191, 255, 255, 105, 154, 255, 255, 74, 117, 200, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 89, 138, 226, 255, 141, 171, 240, 255, 74, 117, 200, 255, 96, 140, 228, 63, 85, 133, 222, 255, 165, 191, 255, 255, 133, 174, 255, 255, 79, 137, 253, 255, 68, 111, 192, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 81, 131, 225, 255, 126, 159, 238, 255, 68, 111, 192, 255, 83, 132, 221, 255, 162, 189, 255, 255, 136, 174, 255, 255, 104, 156, 249, 255, 62, 126, 249, 255, 63, 104, 183, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 72, 122, 223, 255, 111, 150, 236, 255, 63, 104, 183, 255, 27, 76, 171, 81, 62, 115, 219, 255, 103, 156, 251, 255, 79, 138, 246, 255, 44, 113, 238, 255, 56, 96, 175, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 63, 117, 221, 255, 107, 147, 235, 255, 56, 96, 175, 255, 255, 255, 255, 0, 27, 76, 169, 74, 47, 100, 207, 255, 52, 114, 232, 255, 36, 106, 242, 255, 51, 89, 166, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 56, 110, 220, 255, 101, 143, 235, 255, 51, 89, 166, 255, 255, 255, 255, 0, 255, 255, 255, 0, 27, 76, 169, 60, 48, 98, 200, 255, 29, 102, 245, 255, 45, 83, 158, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 49, 106, 219, 255, 86, 132, 233, 255, 45, 83, 158, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 26, 74, 167, 69, 47, 101, 211, 255, 40, 77, 150, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 44, 102, 216, 255, 78, 123, 225, 255, 40, 77, 150, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 76, 172, 77, 36, 72, 144, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 62, 106, 211, 250, 36, 72, 144, 255, 36, 72, 144, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 75, 168, 3, 26, 75, 173, 78, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
diff --git a/iup/srcimglib/iup_imglib_bitmaps8.h b/iup/srcimglib/iup_imglib_bitmaps8.h
new file mode 100755
index 0000000..cf6b142
--- /dev/null
+++ b/iup/srcimglib/iup_imglib_bitmaps8.h
@@ -0,0 +1,14421 @@
+static Ihandle* load_image_Zoom8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 1, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 0, 1, 2, 2, 2, 255, 255, 255, 1, 0, 255, 255, 255, 255,
+ 255, 1, 0, 2, 2, 255, 255, 255, 255, 255, 255, 0, 1, 255, 255, 255,
+ 255, 0, 255, 2, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255,
+ 255, 0, 255, 2, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255,
+ 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255,
+ 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 1, 255, 0, 255, 255, 255,
+ 255, 1, 0, 255, 255, 255, 255, 255, 255, 1, 255, 0, 1, 255, 255, 255,
+ 255, 255, 0, 1, 255, 255, 255, 1, 1, 255, 1, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 1, 0, 0, 0, 0, 1, 255, 0, 0, 0, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "128 128 128");
+ IupSetAttribute(image, "2", "255 255 255");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_EditCut8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 0, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 1, 0, 1, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 1, 255, 1, 1, 1, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 1, 1, 1, 255, 1, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 255, 1, 255, 255, 1, 255, 1, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 255, 1, 255, 255, 1, 255, 1, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 255, 1, 255, 255, 1, 255, 255, 1, 1, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 1, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 128");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_EditErase8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 1, 255,
+ 255, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 0, 0, 1, 255, 255,
+ 255, 255, 0, 0, 0, 0, 1, 255, 255, 255, 0, 0, 1, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 1, 255, 0, 1, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 1, 255, 0, 0, 1, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 1, 255, 255, 255, 0, 0, 1, 255, 255, 255,
+ 255, 255, 0, 0, 0, 1, 255, 255, 255, 255, 255, 0, 1, 255, 255, 255,
+ 255, 255, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255, 0, 1, 255, 255,
+ 255, 255, 255, 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 1, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "255 255 255");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ArrowUp8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 1, 1, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255,
+ 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255,
+ 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "76 178 127");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_MediaGoToBegin8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255,
+ 255, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255,
+ 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255,
+ 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_MessageError8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 1, 1, 1, 1, 1, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 1, 1, 2, 2, 2, 2, 2, 1, 1, 255, 255, 255, 255,
+ 255, 255, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 255, 255, 255,
+ 255, 1, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 1, 255, 255,
+ 255, 1, 2, 4, 4, 4, 2, 2, 2, 4, 4, 4, 2, 1, 3, 255,
+ 1, 2, 2, 2, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 1, 255,
+ 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 1, 3,
+ 1, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 1, 3,
+ 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 1, 3,
+ 1, 2, 2, 2, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 1, 3,
+ 255, 1, 2, 4, 4, 4, 2, 2, 2, 4, 4, 4, 2, 1, 3, 3,
+ 255, 1, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 1, 3, 255,
+ 255, 255, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, 3, 255,
+ 255, 255, 255, 1, 1, 2, 2, 2, 2, 2, 1, 1, 3, 3, 255, 255,
+ 255, 255, 255, 255, 3, 1, 1, 1, 1, 1, 3, 3, 3, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 3, 3, 3, 3, 3, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "128 0 0");
+ IupSetAttribute(image, "2", "255 0 0");
+ IupSetAttribute(image, "3", "128 128 128");
+ IupSetAttribute(image, "4", "255 255 255");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ZoomIn8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 1, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 0, 1, 2, 2, 2, 255, 255, 255, 1, 0, 255, 255, 255, 255,
+ 255, 1, 0, 2, 2, 255, 0, 0, 255, 255, 255, 0, 1, 255, 255, 255,
+ 255, 0, 255, 2, 255, 255, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255,
+ 255, 0, 255, 2, 0, 0, 0, 0, 0, 0, 255, 255, 0, 255, 255, 255,
+ 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 0, 255, 255, 255,
+ 255, 0, 255, 255, 255, 255, 0, 0, 255, 255, 1, 255, 0, 255, 255, 255,
+ 255, 1, 0, 255, 255, 255, 0, 0, 255, 1, 255, 0, 1, 255, 255, 255,
+ 255, 255, 0, 1, 255, 255, 255, 1, 1, 255, 1, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 1, 0, 0, 0, 0, 1, 255, 0, 0, 0, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "128 128 128");
+ IupSetAttribute(image, "2", "255 255 255");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_FontItalic8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_FileNew8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 1, 255, 255, 2, 1, 255, 255, 2, 255, 255, 255, 255, 255, 255, 255, 255,
+ 2, 1, 255, 2, 3, 255, 2, 1, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 2, 1, 2, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 1, 2, 1, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 0, 255,
+ 2, 2, 2, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255,
+ 255, 255, 3, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 0, 255,
+ 2, 255, 255, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255,
+ 255, 255, 255, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255,
+ 255, 255, 255, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255,
+ 255, 255, 255, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255,
+ 255, 255, 255, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255,
+ 255, 255, 255, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255,
+ 255, 255, 255, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255,
+ 255, 255, 255, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "255 255 0");
+ IupSetAttribute(image, "2", "128 128 128");
+ IupSetAttribute(image, "3", "255 255 255");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_FileCloseAll8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 3, 3, 3, 0, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 255, 255, 0, 0, 255, 255,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 0, 255, 0, 255,
+ 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 255, 255, 255, 255, 255, 0,
+ 0, 1, 1, 0, 3, 3, 3, 0, 1, 1, 0, 255, 255, 255, 255, 255, 0,
+ 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 255, 255, 255, 0,
+ 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 0, 255,
+ 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 255, 255, 255, 255,
+ 255, 255, 0, 1, 1, 1, 0, 3, 3, 3, 0, 1, 0, 255, 255, 255, 255,
+ 255, 255, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 255,
+ 255, 255, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255,
+ 255, 255, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255,
+ 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255};
+
+ Ihandle* image = IupImage(17, 17, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "128 128 0");
+ IupSetAttribute(image, "2", "128 128 128");
+ IupSetAttribute(image, "3", "255 255 255");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_EditFind8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 0, 1, 0, 255, 255, 255, 0, 1, 0, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 255, 255,
+ 255, 255, 255, 0, 1, 0, 0, 0, 255, 0, 1, 0, 0, 0, 255, 255,
+ 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0,
+ 255, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0,
+ 255, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 255, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0,
+ 255, 0, 1, 0, 0, 0, 255, 255, 255, 255, 255, 0, 1, 0, 0, 0,
+ 255, 0, 1, 0, 0, 0, 255, 255, 255, 255, 255, 0, 1, 0, 0, 0,
+ 255, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "255 255 255");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ToolsSettings8(void)
+{
+ unsigned char imgdata[] = {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 2, 6, 6, 6, 3, 0, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 1, 1, 4, 4, 2, 2, 2, 2, 2, 0, 4, 4, 2, 2, 4, 4, 4,
+ 4, 4, 1, 5, 6, 0, 0, 2, 6, 3, 2, 2, 0, 0, 0, 5, 6, 0, 4, 4,
+ 4, 4, 1, 6, 5, 6, 1, 2, 6, 3, 2, 2, 0, 1, 5, 6, 5, 0, 4, 4,
+ 4, 4, 0, 1, 6, 5, 6, 2, 6, 3, 2, 2, 0, 5, 6, 5, 1, 0, 4, 4,
+ 4, 4, 0, 1, 6, 6, 0, 2, 6, 3, 2, 2, 0, 0, 5, 6, 1, 0, 4, 4,
+ 1, 1, 1, 5, 6, 0, 6, 2, 6, 3, 2, 2, 0, 6, 0, 5, 6, 0, 0, 4,
+ 1, 6, 5, 6, 5, 6, 0, 2, 6, 3, 2, 2, 0, 0, 5, 6, 5, 6, 5, 0,
+ 0, 1, 1, 1, 6, 5, 6, 0, 0, 0, 0, 0, 0, 5, 6, 5, 0, 1, 1, 0,
+ 0, 1, 1, 0, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 0, 1, 1, 0,
+ 0, 1, 0, 5, 6, 5, 0, 0, 1, 5, 6, 1, 0, 0, 6, 5, 6, 0, 1, 0,
+ 4, 0, 1, 1, 5, 0, 1, 1, 1, 6, 5, 0, 1, 1, 1, 6, 1, 0, 0, 4,
+ 4, 4, 1, 5, 0, 1, 1, 1, 1, 5, 6, 0, 1, 1, 1, 1, 1, 0, 0, 4,
+ 4, 4, 1, 5, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 4, 4,
+ 4, 4, 1, 5, 0, 0, 4, 4, 1, 1, 1, 0, 4, 4, 0, 1, 1, 0, 4, 4,
+ 4, 4, 4, 0, 0, 4, 4, 4, 0, 1, 1, 0, 4, 4, 4, 0, 0, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4};
+
+ Ihandle* image = IupImage(20, 20, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "128 128 0");
+ IupSetAttribute(image, "2", "128 128 128");
+ IupSetAttribute(image, "3", "192 192 192");
+ IupSetAttribute(image, "4", "BGCOLOR");
+ IupSetAttribute(image, "5", "255 255 0");
+ IupSetAttribute(image, "6", "255 255 255");
+ IupSetAttribute(image, "7", "7 7 7");
+
+ return image;
+}
+
+static Ihandle* load_image_ToolsSortAscend8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 2, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 4, 2, 4, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 2, 2, 2, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 4, 2, 255, 2, 4, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 2, 2, 2, 2, 2, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 4, 2, 255, 255, 255, 2, 4, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 2, 2, 2, 255, 2, 2, 2, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 3, 3, 3, 3, 3, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 3, 255, 255, 255, 3, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 255, 3, 3, 255, 255, 255, 255, 1, 1, 1, 1, 1, 255,
+ 255, 255, 255, 3, 3, 255, 255, 255, 255, 255, 4, 1, 1, 1, 4, 255,
+ 255, 255, 3, 3, 255, 255, 255, 255, 255, 255, 255, 1, 1, 1, 255, 255,
+ 255, 3, 3, 255, 255, 255, 3, 255, 255, 255, 255, 4, 1, 4, 255, 255,
+ 255, 3, 3, 3, 3, 3, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "4 2 4");
+ IupSetAttribute(image, "2", "4 2 132");
+ IupSetAttribute(image, "3", "132 2 4");
+ IupSetAttribute(image, "4", "132 130 132");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_EditUndo8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 0, 255, 255, 255,
+ 255, 255, 0, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255,
+ 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255,
+ 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255,
+ 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 255, 0, 255, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ZoomSelection8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 2, 0, 0, 0, 0, 2, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 0, 2, 255, 255, 255, 255, 255, 255, 2, 0, 255, 255, 255, 255,
+ 255, 2, 0, 255, 1, 1, 3, 255, 1, 1, 255, 0, 2, 255, 255, 255,
+ 255, 0, 255, 255, 1, 255, 255, 255, 255, 1, 255, 255, 0, 255, 255, 255,
+ 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255,
+ 255, 0, 255, 255, 3, 255, 255, 255, 255, 3, 255, 255, 0, 255, 255, 255,
+ 255, 0, 255, 255, 1, 255, 255, 255, 255, 1, 255, 255, 0, 255, 255, 255,
+ 255, 2, 0, 255, 1, 1, 3, 255, 1, 1, 255, 0, 2, 255, 255, 255,
+ 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 2, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 2, 0, 0, 0, 0, 2, 255, 0, 0, 0, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "86 86 86");
+ IupSetAttribute(image, "2", "128 128 128");
+ IupSetAttribute(image, "3", "134 134 134");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_MediaRecord8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 1, 1, 1, 1, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255,
+ 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255,
+ 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255,
+ 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255,
+ 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255,
+ 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255,
+ 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255,
+ 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 1, 1, 1, 1, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "128 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_EditCopy8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 2, 2, 2, 2, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 2, 2, 2, 2, 0, 2, 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 2, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 255, 255, 255,
+ 255, 0, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 255, 255,
+ 255, 0, 2, 0, 0, 0, 0, 1, 2, 2, 2, 2, 1, 2, 1, 255,
+ 255, 0, 2, 2, 2, 2, 2, 1, 2, 0, 0, 2, 1, 1, 1, 1,
+ 255, 0, 2, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 1,
+ 255, 0, 2, 2, 2, 2, 2, 1, 2, 0, 0, 0, 0, 0, 2, 1,
+ 255, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 1,
+ 255, 255, 255, 255, 255, 255, 255, 1, 2, 0, 0, 0, 0, 0, 2, 1,
+ 255, 255, 255, 255, 255, 255, 255, 1, 2, 2, 2, 2, 2, 2, 2, 1,
+ 255, 255, 255, 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 128");
+ IupSetAttribute(image, "2", "255 255 255");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_MediaGoToEnd8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255,
+ 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 255,
+ 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 255,
+ 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_EditPaste8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 255, 255, 255,
+ 0, 2, 4, 2, 0, 3, 0, 0, 3, 0, 4, 2, 4, 0, 255, 255,
+ 0, 4, 4, 0, 5, 5, 5, 5, 5, 5, 0, 4, 2, 0, 255, 255,
+ 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 255, 255,
+ 0, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 0, 255, 255,
+ 0, 2, 4, 2, 4, 2, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255,
+ 0, 4, 2, 4, 2, 4, 1, 6, 6, 6, 6, 6, 1, 1, 255, 255,
+ 0, 2, 4, 2, 4, 2, 1, 6, 6, 6, 6, 6, 1, 6, 1, 255,
+ 0, 4, 2, 4, 2, 4, 1, 6, 1, 1, 1, 6, 1, 1, 1, 1,
+ 0, 2, 4, 2, 4, 2, 1, 6, 6, 6, 6, 6, 6, 6, 6, 1,
+ 0, 4, 2, 4, 2, 4, 1, 6, 1, 1, 1, 1, 1, 1, 6, 1,
+ 255, 0, 0, 0, 0, 0, 1, 6, 6, 6, 6, 6, 6, 6, 6, 1,
+ 255, 255, 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 128");
+ IupSetAttribute(image, "2", "128 128 0");
+ IupSetAttribute(image, "3", "255 255 0");
+ IupSetAttribute(image, "4", "128 128 128");
+ IupSetAttribute(image, "5", "192 192 192");
+ IupSetAttribute(image, "6", "255 255 255");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ZoomActualSize8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255,
+ 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255,
+ 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255,
+ 0, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 0, 255,
+ 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255,
+ 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255,
+ 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255,
+ 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255,
+ 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255,
+ 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255,
+ 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255,
+ 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_MediaStop8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_WindowsCascade8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
+ 255, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
+ 255, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 255, 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 255, 255, 255, 255, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "255 255 255");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ZoomOut8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 1, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 0, 1, 2, 2, 2, 255, 255, 255, 1, 0, 255, 255, 255, 255,
+ 255, 1, 0, 2, 2, 255, 255, 255, 255, 255, 255, 0, 1, 255, 255, 255,
+ 255, 0, 255, 2, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255,
+ 255, 0, 255, 2, 0, 0, 0, 0, 0, 0, 255, 255, 0, 255, 255, 255,
+ 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 0, 255, 255, 255,
+ 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 1, 255, 0, 255, 255, 255,
+ 255, 1, 0, 255, 255, 255, 255, 255, 255, 1, 255, 0, 1, 255, 255, 255,
+ 255, 255, 0, 1, 255, 255, 255, 1, 1, 255, 1, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 1, 0, 0, 0, 0, 1, 255, 0, 0, 0, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "128 128 128");
+ IupSetAttribute(image, "2", "255 255 255");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_MediaPause8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_NavigateRefresh8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
+ 255, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 255, 255, 255, 255,
+ 255, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 255, 255, 255,
+ 255, 0, 2, 2, 2, 2, 2, 1, 2, 2, 0, 0, 0, 0, 255, 255,
+ 255, 0, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 0, 255, 255,
+ 255, 0, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 0, 255, 255,
+ 255, 0, 2, 2, 1, 2, 2, 1, 1, 2, 2, 2, 2, 0, 255, 255,
+ 255, 0, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 0, 255, 255,
+ 255, 0, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 0, 255, 255,
+ 255, 0, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 2, 0, 255, 255,
+ 255, 0, 2, 2, 2, 2, 1, 1, 2, 2, 1, 2, 2, 0, 255, 255,
+ 255, 0, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 0, 255, 255,
+ 255, 0, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 0, 255, 255,
+ 255, 0, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 0, 255, 255,
+ 255, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 255, 255,
+ 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 128 0");
+ IupSetAttribute(image, "2", "255 255 255");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ActionCancel8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 2, 1, 255, 255, 255, 255, 255, 1, 2, 255, 255, 255,
+ 255, 255, 255, 255, 1, 2, 1, 255, 255, 255, 1, 2, 1, 255, 255, 255,
+ 255, 255, 255, 255, 255, 1, 2, 1, 255, 1, 2, 1, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 1, 2, 1, 2, 1, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 1, 2, 1, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 1, 2, 1, 2, 1, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 1, 2, 1, 255, 1, 2, 1, 255, 255, 255, 255,
+ 255, 255, 255, 255, 1, 2, 1, 255, 255, 255, 1, 2, 1, 255, 255, 255,
+ 255, 255, 255, 255, 2, 1, 255, 255, 255, 255, 255, 1, 2, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "128 0 0");
+ IupSetAttribute(image, "2", "255 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_FileSave8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 255, 0, 255,
+ 255, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 255,
+ 255, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 255,
+ 255, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 255,
+ 255, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 255,
+ 255, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 255,
+ 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 255,
+ 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255,
+ 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255,
+ 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 0, 255,
+ 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 0, 255,
+ 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 0, 255,
+ 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "128 128 0");
+ IupSetAttribute(image, "2", "192 192 192");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_EditRedo8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 255,
+ 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255,
+ 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255,
+ 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255,
+ 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 255, 0, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_FontDialog8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 2, 1, 2, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 1, 1, 1, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 2, 1, 1, 1, 2, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 1, 1, 255, 1, 1, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 2, 1, 255, 255, 1, 1, 2, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255, 255,
+ 255, 255, 255, 2, 1, 255, 255, 255, 255, 1, 1, 2, 255, 255, 255, 255,
+ 255, 255, 255, 1, 1, 255, 255, 255, 255, 2, 1, 1, 255, 255, 255, 255,
+ 255, 255, 2, 1, 255, 255, 255, 255, 255, 2, 1, 1, 2, 255, 255, 255,
+ 255, 1, 1, 1, 1, 255, 255, 255, 1, 1, 1, 1, 1, 1, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 128");
+ IupSetAttribute(image, "2", "128 128 128");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_FileSaveAll8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 255, 255, 255, 0, 1, 0, 2, 2, 2, 2, 2, 0, 2, 0, 255,
+ 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 255, 0, 1, 0, 2, 2, 2, 2, 2, 0, 2, 0, 1, 0, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255,
+ 0, 1, 0, 2, 2, 2, 2, 2, 0, 2, 0, 1, 0, 1, 0, 255,
+ 0, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 1, 0, 255,
+ 0, 1, 0, 2, 2, 2, 2, 2, 0, 1, 0, 1, 0, 1, 0, 255,
+ 0, 1, 0, 2, 2, 2, 2, 2, 0, 1, 0, 1, 0, 1, 0, 255,
+ 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 255,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 255,
+ 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 255, 255, 255,
+ 0, 1, 1, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 255, 255, 255,
+ 0, 1, 1, 0, 0, 0, 0, 2, 0, 1, 0, 255, 255, 255, 255, 255,
+ 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "128 128 0");
+ IupSetAttribute(image, "2", "192 192 192");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_MessageHelp8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255,
+ 255, 255, 1, 6, 6, 6, 3, 6, 6, 6, 3, 6, 6, 6, 1, 255,
+ 255, 255, 1, 6, 3, 6, 6, 6, 3, 6, 6, 6, 3, 6, 1, 4,
+ 255, 255, 1, 6, 6, 6, 5, 2, 2, 2, 2, 5, 6, 6, 1, 4,
+ 255, 255, 1, 6, 3, 6, 2, 2, 3, 5, 2, 2, 3, 6, 1, 4,
+ 255, 255, 1, 6, 6, 6, 2, 4, 6, 6, 2, 2, 6, 6, 1, 4,
+ 255, 255, 1, 6, 3, 6, 6, 6, 3, 4, 2, 4, 3, 6, 1, 4,
+ 255, 255, 1, 6, 6, 6, 3, 6, 4, 2, 5, 6, 6, 6, 1, 4,
+ 255, 255, 1, 6, 3, 6, 6, 6, 2, 4, 6, 6, 3, 6, 1, 4,
+ 255, 255, 1, 6, 6, 6, 3, 6, 6, 6, 3, 6, 6, 6, 1, 4,
+ 255, 255, 1, 6, 3, 6, 6, 6, 2, 2, 6, 6, 3, 6, 1, 4,
+ 255, 255, 1, 6, 6, 6, 3, 6, 3, 6, 3, 6, 6, 6, 1, 4,
+ 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 6, 6, 1, 1, 4, 255,
+ 255, 255, 255, 255, 4, 4, 4, 4, 4, 4, 1, 3, 1, 4, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 1, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "64 64 64");
+ IupSetAttribute(image, "2", "64 64 128");
+ IupSetAttribute(image, "3", "255 255 64");
+ IupSetAttribute(image, "4", "128 128 128");
+ IupSetAttribute(image, "5", "224 224 224");
+ IupSetAttribute(image, "6", "255 255 255");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_FontBold8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ActionOk8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 3, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 3, 2, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 3, 2, 1, 255, 255, 255,
+ 255, 255, 255, 3, 1, 255, 255, 255, 1, 3, 2, 1, 255, 255, 255, 255,
+ 255, 255, 255, 2, 3, 1, 255, 1, 3, 2, 1, 255, 255, 255, 255, 255,
+ 255, 255, 255, 1, 2, 3, 1, 3, 2, 1, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 1, 2, 3, 2, 1, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 1, 2, 1, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "43 155 43");
+ IupSetAttribute(image, "2", "92 249 105");
+ IupSetAttribute(image, "3", "98 244 85");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_FileOpen8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0,
+ 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0,
+ 255, 0, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 0, 2, 3, 2, 3, 2, 3, 2, 3, 2, 0, 255, 255, 255, 255,
+ 255, 0, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 255, 255, 255, 255,
+ 255, 0, 2, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 0, 3, 2, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 255, 0, 2, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255,
+ 255, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255,
+ 255, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255,
+ 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "128 128 0");
+ IupSetAttribute(image, "2", "255 255 0");
+ IupSetAttribute(image, "3", "255 255 255");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_FileText8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 1, 1, 1, 1, 1, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 1, 1, 1, 1, 1, 0, 1, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 255,
+ 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255,
+ 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 255,
+ 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255,
+ 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 255,
+ 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255,
+ 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 255,
+ 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255,
+ 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "255 255 255");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ArrowDown8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255,
+ 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255,
+ 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255,
+ 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 1, 1, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "76 178 127");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_FileClose8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 255,
+ 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0,
+ 255, 255, 0, 3, 3, 3, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0,
+ 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 255, 255,
+ 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255,
+ 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255,
+ 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255,
+ 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255,
+ 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255,
+ 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255,
+ 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255,
+ 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "128 128 0");
+ IupSetAttribute(image, "2", "128 128 128");
+ IupSetAttribute(image, "3", "255 255 255");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_NavigateHome8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 1, 1, 255, 255, 2, 1, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 1, 3, 3, 1, 255, 2, 1, 255, 255, 255,
+ 255, 255, 255, 255, 255, 1, 3, 1, 1, 3, 1, 2, 1, 255, 255, 255,
+ 255, 255, 255, 255, 1, 3, 1, 4, 4, 1, 3, 1, 1, 255, 255, 255,
+ 255, 255, 255, 1, 3, 1, 4, 4, 4, 4, 1, 3, 1, 255, 255, 255,
+ 255, 255, 1, 3, 1, 4, 4, 4, 4, 4, 4, 1, 3, 1, 255, 255,
+ 255, 1, 3, 1, 4, 4, 4, 4, 4, 4, 4, 4, 1, 3, 1, 255,
+ 255, 255, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 255, 255,
+ 255, 255, 1, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 1, 255, 255,
+ 255, 255, 1, 4, 4, 4, 1, 3, 3, 1, 4, 4, 4, 1, 255, 255,
+ 255, 255, 1, 4, 4, 4, 1, 3, 3, 1, 4, 4, 4, 1, 255, 255,
+ 255, 255, 1, 4, 4, 4, 1, 3, 3, 1, 4, 4, 4, 1, 255, 255,
+ 255, 255, 1, 4, 4, 4, 1, 3, 3, 1, 4, 4, 4, 1, 255, 255,
+ 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "4 2 4");
+ IupSetAttribute(image, "2", "132 2 4");
+ IupSetAttribute(image, "3", "252 254 4");
+ IupSetAttribute(image, "4", "252 254 252");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_MediaForward8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_MessageInfo8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 1, 1, 1, 1, 1, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 1, 1, 7, 7, 7, 7, 7, 1, 1, 255, 255, 255, 255,
+ 255, 255, 1, 7, 7, 7, 7, 6, 5, 7, 7, 7, 1, 255, 255, 255,
+ 255, 1, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 1, 255, 255,
+ 255, 1, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 1, 2, 255,
+ 1, 7, 7, 7, 7, 7, 7, 3, 4, 7, 7, 7, 7, 7, 1, 255,
+ 1, 7, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 7, 1, 2,
+ 1, 7, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 7, 1, 2,
+ 1, 7, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 7, 1, 2,
+ 1, 7, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 7, 1, 2,
+ 255, 1, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 1, 2, 2,
+ 255, 1, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 1, 2, 255,
+ 255, 255, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 2, 2, 255,
+ 255, 255, 255, 1, 1, 7, 7, 7, 7, 7, 1, 1, 2, 2, 255, 255,
+ 255, 255, 255, 255, 2, 1, 1, 1, 1, 1, 2, 2, 2, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 2, 2, 2, 2, 2, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "47 93 185");
+ IupSetAttribute(image, "2", "128 128 128");
+ IupSetAttribute(image, "3", "208 219 235");
+ IupSetAttribute(image, "4", "228 235 242");
+ IupSetAttribute(image, "5", "239 245 251");
+ IupSetAttribute(image, "6", "240 245 252");
+ IupSetAttribute(image, "7", "255 255 255");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ViewFullScreen8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255,
+ 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 255,
+ 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 255,
+ 1, 5, 1, 2, 4, 2, 4, 2, 4, 2, 4, 2, 1, 5, 1, 255,
+ 1, 5, 1, 4, 3, 3, 3, 4, 2, 4, 2, 4, 1, 5, 1, 255,
+ 1, 5, 1, 2, 4, 2, 4, 2, 4, 2, 4, 2, 1, 5, 1, 255,
+ 1, 5, 1, 4, 3, 3, 3, 3, 3, 3, 3, 4, 1, 5, 1, 255,
+ 1, 5, 1, 2, 4, 2, 4, 2, 4, 2, 4, 2, 1, 5, 1, 255,
+ 1, 5, 1, 4, 3, 3, 3, 3, 3, 3, 3, 4, 1, 5, 1, 255,
+ 1, 5, 1, 2, 4, 2, 4, 2, 4, 2, 4, 2, 1, 5, 1, 255,
+ 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 255,
+ 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 255,
+ 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "4 2 4");
+ IupSetAttribute(image, "2", "4 254 252");
+ IupSetAttribute(image, "3", "132 130 132");
+ IupSetAttribute(image, "4", "252 254 252");
+ IupSetAttribute(image, "5", "255 255 255");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ArrowLeft8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 1, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 1, 1, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 255, 255, 255, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 1, 1, 1, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 1, 1, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 1, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "76 178 127");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_MediaRewind8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ArrowRight8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 1, 1, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 255, 255, 255,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 1, 1, 1, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 1, 1, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "76 178 127");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_MediaReverse8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_Print8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255,
+ 255, 255, 255, 255, 1, 5, 5, 5, 5, 5, 5, 5, 5, 1, 255, 255,
+ 255, 255, 255, 255, 1, 5, 1, 1, 1, 1, 1, 5, 1, 255, 255, 255,
+ 255, 255, 255, 1, 5, 5, 5, 5, 5, 5, 5, 5, 1, 255, 255, 255,
+ 255, 255, 255, 1, 5, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 255,
+ 255, 255, 1, 5, 5, 5, 5, 5, 5, 5, 5, 1, 4, 1, 4, 1,
+ 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 1, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 3, 3, 3, 4, 4, 1, 4, 1, 255,
+ 1, 4, 4, 4, 4, 4, 4, 2, 2, 2, 4, 4, 1, 1, 1, 255,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 255,
+ 255, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 1, 255, 255,
+ 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "64 64 64");
+ IupSetAttribute(image, "2", "255 255 64");
+ IupSetAttribute(image, "3", "128 128 128");
+ IupSetAttribute(image, "4", "224 224 224");
+ IupSetAttribute(image, "5", "255 255 255");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_FileProperties8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 1, 1,
+ 255, 255, 255, 255, 255, 255, 0, 2, 2, 2, 2, 2, 2, 0, 1, 1,
+ 255, 255, 255, 255, 255, 0, 2, 0, 2, 2, 2, 2, 2, 2, 1, 1,
+ 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 2, 2, 2, 2, 1, 1,
+ 0, 3, 3, 0, 2, 0, 2, 0, 2, 0, 2, 2, 2, 0, 1, 1,
+ 0, 3, 0, 2, 0, 3, 0, 2, 0, 2, 0, 0, 0, 255, 1, 1,
+ 0, 3, 0, 0, 3, 3, 3, 0, 2, 0, 3, 0, 255, 255, 255, 1,
+ 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 255, 255, 255, 255,
+ 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, 255, 255, 255,
+ 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 255, 255, 255, 255,
+ 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, 255, 255, 255,
+ 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 255, 255, 255, 255,
+ 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 128");
+ IupSetAttribute(image, "2", "192 192 192");
+ IupSetAttribute(image, "3", "255 255 255");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ToolsSortDescend8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 3, 3, 3, 3, 3, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 3, 255, 255, 255, 3, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 255, 3, 3, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 3, 3, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 3, 3, 255, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 3, 3, 255, 255, 255, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 3, 3, 3, 3, 3, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 255, 2, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 4, 2, 4, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 2, 2, 2, 255, 255, 255, 255, 1, 1, 1, 1, 1, 255,
+ 255, 255, 4, 2, 255, 2, 4, 255, 255, 255, 4, 1, 1, 1, 4, 255,
+ 255, 255, 2, 2, 2, 2, 2, 255, 255, 255, 255, 1, 1, 1, 255, 255,
+ 255, 4, 2, 255, 255, 255, 2, 4, 255, 255, 255, 4, 1, 4, 255, 255,
+ 255, 2, 2, 2, 255, 2, 2, 2, 255, 255, 255, 255, 1, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "4 2 4");
+ IupSetAttribute(image, "2", "4 2 132");
+ IupSetAttribute(image, "3", "132 2 4");
+ IupSetAttribute(image, "4", "132 130 132");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_ToolsColor8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 0, 0, 5, 7, 5, 7, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 0, 7, 5, 7, 6, 0, 6, 7, 5, 0, 255, 255, 255,
+ 255, 255, 0, 7, 6, 0, 6, 0, 4, 0, 5, 7, 5, 0, 255, 255,
+ 255, 255, 0, 5, 0, 3, 0, 6, 0, 6, 6, 0, 6, 5, 0, 255,
+ 255, 255, 0, 7, 6, 0, 6, 7, 5, 7, 0, 6, 0, 7, 0, 255,
+ 255, 255, 0, 5, 7, 5, 7, 5, 7, 5, 6, 0, 6, 5, 0, 255,
+ 255, 255, 255, 0, 0, 0, 5, 7, 5, 6, 0, 6, 5, 7, 0, 255,
+ 255, 255, 255, 255, 255, 0, 6, 0, 6, 0, 2, 0, 7, 5, 0, 255,
+ 255, 255, 255, 255, 255, 255, 0, 1, 0, 6, 0, 6, 5, 0, 255, 255,
+ 255, 255, 255, 255, 255, 0, 6, 0, 6, 5, 7, 5, 7, 0, 255, 255,
+ 255, 255, 255, 255, 255, 0, 5, 7, 5, 7, 5, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 255 255");
+ IupSetAttribute(image, "2", "255 0 0");
+ IupSetAttribute(image, "3", "128 0 128");
+ IupSetAttribute(image, "4", "255 0 255");
+ IupSetAttribute(image, "5", "255 255 0");
+ IupSetAttribute(image, "6", "236 233 216");
+ IupSetAttribute(image, "7", "255 255 255");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_MediaPlay8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 0");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_PrintPreview8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255, 255, 255,
+ 255, 1, 5, 5, 5, 5, 5, 5, 5, 1, 1, 255, 255, 255, 255, 255,
+ 255, 1, 5, 5, 5, 5, 5, 5, 5, 1, 4, 1, 255, 255, 255, 255,
+ 255, 1, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 255, 255, 255,
+ 255, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 255, 255, 255,
+ 255, 1, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 255, 255, 255,
+ 255, 1, 5, 5, 5, 5, 5, 5, 1, 3, 4, 4, 3, 1, 255, 255,
+ 255, 1, 5, 5, 5, 5, 5, 1, 3, 2, 2, 4, 3, 3, 1, 255,
+ 255, 1, 5, 5, 5, 5, 5, 1, 4, 2, 4, 4, 3, 4, 1, 255,
+ 255, 1, 5, 5, 5, 5, 5, 1, 4, 4, 4, 4, 3, 4, 1, 255,
+ 255, 1, 5, 5, 5, 5, 5, 1, 3, 4, 4, 2, 3, 3, 1, 255,
+ 255, 1, 5, 5, 5, 5, 5, 5, 1, 3, 4, 4, 3, 1, 3, 255,
+ 255, 1, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 3, 1, 1,
+ 255, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 255, 1, 1,
+ 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 1,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "64 64 64");
+ IupSetAttribute(image, "2", "64 255 255");
+ IupSetAttribute(image, "3", "128 128 128");
+ IupSetAttribute(image, "4", "224 224 224");
+ IupSetAttribute(image, "5", "255 255 255");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_WindowsTile8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 0, 255, 255, 0, 1, 1, 1, 1, 1, 0,
+ 0, 1, 1, 1, 1, 1, 0, 255, 255, 0, 1, 1, 1, 1, 1, 0,
+ 0, 1, 1, 1, 1, 1, 0, 255, 255, 0, 1, 1, 1, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 0, 255, 255, 0, 1, 1, 1, 1, 1, 0,
+ 0, 1, 1, 1, 1, 1, 0, 255, 255, 0, 1, 1, 1, 1, 1, 0,
+ 0, 1, 1, 1, 1, 1, 0, 255, 255, 0, 1, 1, 1, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "255 255 255");
+ IupSetAttribute(image, "2", "0 0 0");
+ IupSetAttribute(image, "3", "0 0 0");
+ IupSetAttribute(image, "4", "0 0 0");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetAttribute(image, "6", "0 0 0");
+ IupSetAttribute(image, "7", "0 0 0");
+ IupSetAttribute(image, "8", "0 0 0");
+ IupSetAttribute(image, "9", "0 0 0");
+ IupSetAttribute(image, "10", "0 0 0");
+ IupSetAttribute(image, "11", "0 0 0");
+ IupSetAttribute(image, "12", "0 0 0");
+ IupSetAttribute(image, "13", "0 0 0");
+ IupSetAttribute(image, "14", "0 0 0");
+ IupSetAttribute(image, "15", "0 0 0");
+ IupSetAttribute(image, "16", "0 0 0");
+ IupSetAttribute(image, "17", "0 0 0");
+ IupSetAttribute(image, "18", "0 0 0");
+ IupSetAttribute(image, "19", "0 0 0");
+ IupSetAttribute(image, "20", "0 0 0");
+ IupSetAttribute(image, "21", "0 0 0");
+ IupSetAttribute(image, "22", "0 0 0");
+ IupSetAttribute(image, "23", "0 0 0");
+ IupSetAttribute(image, "24", "0 0 0");
+ IupSetAttribute(image, "25", "0 0 0");
+ IupSetAttribute(image, "26", "0 0 0");
+ IupSetAttribute(image, "27", "0 0 0");
+ IupSetAttribute(image, "28", "0 0 0");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
diff --git a/iup/srcimglib/iup_imglib_bitmapsgtk.h b/iup/srcimglib/iup_imglib_bitmapsgtk.h
new file mode 100755
index 0000000..4b22ad2
--- /dev/null
+++ b/iup/srcimglib/iup_imglib_bitmapsgtk.h
@@ -0,0 +1,224 @@
+static Ihandle* load_image_iupgtk_close_all(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 30, 30, 30, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 118, 0, 0, 0, 228, 0, 0, 0, 247, 0, 0, 0, 255, 0, 0, 0, 255, 5, 5, 4, 54, 21, 21, 21, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 44, 45, 35, 48, 111, 113, 102, 236, 217, 221, 192, 255, 217, 221, 192, 255, 217, 221, 192, 255, 186, 190, 163, 255, 48, 48, 40, 255, 16, 16, 12, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 35, 36, 29, 169, 191, 193, 175, 255, 198, 202, 166, 255, 196, 201, 165, 255, 198, 203, 167, 255, 201, 206, 169, 255, 85, 88, 71, 255, 27, 28, 22, 91, 25, 25, 25, 4, 31, 31, 31, 3, 31, 31, 31, 3, 14, 14, 14, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 33, 34, 27, 246, 118, 120, 109, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 115, 117, 108, 255, 113, 115, 106, 255, 114, 115, 106, 246, 123, 124, 118, 227, 2, 2, 2, 90, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12, 12, 9, 255, 225, 228, 205, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 206, 211, 174, 255, 206, 211, 174, 255, 204, 209, 172, 255, 198, 203, 168, 255, 190, 195, 161, 255, 171, 176, 145, 255, 10, 10, 8, 162, 31, 31, 31, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6, 6, 4, 255, 222, 225, 201, 255, 206, 211, 174, 255, 204, 209, 172, 255, 110, 113, 93, 255, 21, 22, 18, 255, 6, 6, 5, 255, 0, 0, 0, 255, 0, 0, 0, 255, 160, 164, 134, 255, 193, 197, 164, 255, 187, 191, 158, 255, 164, 167, 138, 255, 10, 10, 8, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 219, 223, 197, 255, 205, 210, 173, 255, 174, 178, 147, 255, 118, 120, 107, 255, 217, 221, 192, 255, 217, 221, 192, 255, 217, 221, 192, 255, 186, 190, 163, 255, 48, 48, 40, 255, 177, 180, 149, 255, 183, 188, 155, 255, 157, 158, 132, 255, 10, 10, 8, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 222, 224, 202, 255, 202, 207, 170, 255, 91, 93, 76, 255, 191, 193, 175, 255, 198, 202, 166, 255, 196, 201, 165, 255, 198, 203, 167, 255, 201, 206, 169, 255, 85, 88, 71, 255, 130, 133, 110, 255, 176, 180, 149, 255, 147, 151, 124, 255, 10, 10, 8, 163, 14, 14, 14, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 215, 218, 195, 255, 194, 199, 164, 255, 38, 39, 31, 255, 118, 120, 109, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 115, 117, 108, 255, 113, 115, 106, 255, 114, 115, 106, 246, 123, 124, 118, 227, 2, 2, 2, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 201, 203, 183, 255, 176, 180, 149, 255, 12, 12, 9, 255, 225, 228, 205, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 206, 211, 174, 255, 205, 210, 173, 255, 204, 209, 172, 255, 205, 210, 173, 255, 203, 208, 171, 255, 198, 203, 168, 255, 190, 195, 161, 255, 171, 176, 145, 255, 10, 10, 8, 162, 0, 0, 0, 0, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 170, 173, 149, 255, 143, 147, 121, 255, 6, 6, 4, 255, 222, 225, 201, 255, 206, 211, 174, 255, 204, 209, 172, 255, 110, 113, 93, 255, 21, 22, 18, 255, 6, 6, 5, 255, 0, 0, 0, 255, 0, 0, 0, 255, 160, 164, 134, 255, 193, 197, 164, 255, 187, 191, 158, 255, 164, 167, 138, 255, 10, 10, 8, 162, 0, 0, 0, 0, 31, 31, 31, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 26, 26, 20, 87, 9, 10, 7, 158, 10, 10, 8, 161, 0, 0, 0, 255, 219, 223, 197, 255, 205, 210, 173, 255, 174, 178, 147, 255, 118, 120, 107, 255, 217, 221, 192, 255, 217, 221, 192, 255, 217, 221, 192, 255, 186, 190, 163, 255, 48, 48, 40, 255, 177, 180, 149, 255, 183, 188, 155, 255, 157, 158, 132, 255, 10, 10, 8, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 51, 51, 30, 9, 48, 48, 38, 22, 48, 48, 36, 25, 0, 0, 0, 255, 222, 224, 202, 255, 202, 207, 170, 255, 91, 93, 76, 255, 191, 193, 175, 255, 198, 202, 166, 255, 196, 201, 165, 255, 198, 203, 167, 255, 201, 206, 169, 255, 85, 88, 71, 255, 130, 133, 110, 255, 176, 180, 149, 255, 147, 151, 124, 255, 10, 10, 8, 163, 14, 14, 14, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 215, 218, 195, 255, 194, 199, 164, 255, 38, 39, 31, 255, 118, 120, 109, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 115, 117, 108, 255, 113, 115, 106, 255, 114, 115, 106, 246, 123, 124, 118, 227, 2, 2, 2, 90, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 201, 203, 183, 255, 176, 180, 149, 255, 12, 12, 9, 255, 225, 228, 205, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 206, 211, 174, 255, 206, 211, 174, 255, 204, 209, 172, 255, 198, 203, 168, 255, 190, 195, 161, 255, 171, 176, 145, 255, 10, 10, 8, 162, 31, 31, 31, 6, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 170, 173, 149, 255, 143, 147, 121, 255, 6, 6, 4, 255, 222, 225, 201, 255, 206, 211, 174, 255, 206, 211, 174, 255, 206, 211, 174, 255, 206, 211, 174, 255, 206, 211, 174, 255, 205, 210, 173, 255, 205, 210, 173, 255, 202, 207, 170, 255, 196, 200, 166, 255, 187, 191, 158, 255, 164, 167, 138, 255, 10, 10, 8, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 20, 87, 9, 10, 7, 158, 10, 10, 8, 161, 0, 0, 0, 255, 219, 223, 197, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 204, 209, 172, 255, 200, 205, 169, 255, 194, 198, 164, 255, 183, 188, 155, 255, 157, 158, 132, 255, 10, 10, 8, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 30, 9, 48, 48, 38, 22, 48, 48, 36, 25, 0, 0, 0, 255, 222, 224, 202, 255, 202, 207, 170, 255, 202, 207, 170, 255, 201, 206, 170, 255, 201, 206, 170, 255, 199, 204, 168, 255, 200, 205, 169, 255, 198, 203, 168, 255, 194, 199, 164, 255, 188, 192, 159, 255, 179, 183, 151, 255, 149, 153, 126, 255, 10, 10, 8, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 215, 218, 195, 255, 194, 199, 164, 255, 194, 198, 164, 255, 192, 197, 162, 255, 192, 197, 162, 255, 189, 194, 160, 255, 190, 195, 161, 255, 185, 189, 156, 255, 182, 186, 154, 255, 176, 181, 149, 255, 166, 170, 140, 255, 124, 127, 105, 255, 10, 10, 8, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 201, 203, 183, 255, 176, 180, 149, 255, 172, 176, 146, 255, 171, 175, 144, 255, 169, 173, 143, 255, 167, 171, 141, 255, 166, 169, 140, 255, 162, 166, 137, 255, 157, 160, 132, 255, 149, 152, 126, 255, 146, 149, 123, 255, 107, 110, 90, 255, 10, 10, 8, 162, 0, 0, 0, 0, 42, 47, 34, 6, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 170, 173, 149, 255, 143, 147, 121, 255, 138, 142, 116, 255, 136, 140, 115, 255, 134, 138, 113, 255, 133, 137, 112, 255, 129, 132, 109, 255, 125, 128, 105, 255, 117, 120, 99, 255, 113, 116, 96, 255, 109, 112, 92, 255, 67, 69, 56, 255, 10, 10, 8, 162, 51, 51, 39, 33, 37, 37, 27, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 20, 87, 9, 10, 7, 158, 10, 10, 8, 161, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 161, 9, 10, 7, 159, 33, 34, 26, 63, 47, 47, 37, 9, 21, 21, 21, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 49, 49, 38, 26, 48, 48, 36, 23, 45, 45, 32, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(24, 24, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_iupgtk_close(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 3, 31, 31, 31, 3, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 6, 6, 4, 36, 0, 0, 0, 201, 0, 0, 0, 228, 0, 0, 0, 239, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 6, 6, 5, 53, 21, 21, 21, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 33, 33, 21, 8, 1, 1, 0, 204, 181, 184, 165, 255, 228, 231, 210, 255, 228, 231, 210, 255, 228, 231, 210, 255, 228, 231, 210, 255, 228, 231, 210, 255, 135, 138, 118, 255, 51, 52, 43, 255, 33, 33, 27, 14, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 46, 47, 37, 88, 11, 11, 11, 232, 226, 229, 207, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 206, 211, 174, 255, 206, 211, 174, 255, 178, 182, 150, 255, 45, 45, 37, 255, 12, 12, 9, 75, 42, 42, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 35, 36, 29, 169, 157, 159, 144, 255, 226, 229, 207, 255, 198, 202, 166, 255, 196, 201, 165, 255, 198, 203, 167, 255, 199, 204, 168, 255, 201, 206, 169, 255, 201, 206, 169, 255, 85, 88, 71, 255, 26, 27, 21, 168, 45, 45, 37, 13, 25, 25, 25, 4, 31, 31, 31, 3, 31, 31, 31, 3, 31, 31, 31, 3, 28, 28, 28, 3, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 32, 26, 240, 21, 22, 18, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 1, 1, 1, 219, 1, 1, 1, 198, 4, 4, 2, 88, 28, 28, 28, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 35, 36, 29, 252, 218, 221, 200, 255, 235, 237, 221, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 231, 234, 216, 255, 227, 230, 212, 255, 222, 225, 208, 255, 218, 220, 204, 255, 218, 220, 209, 255, 0, 0, 0, 255, 47, 47, 39, 12, 0, 0, 0, 1, 20, 20, 15, 0, 0, 0, 0, 0,
+ 12, 12, 9, 255, 244, 244, 236, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 206, 211, 174, 255, 206, 211, 174, 255, 206, 211, 174, 255, 202, 207, 171, 255, 198, 203, 168, 255, 194, 198, 164, 255, 187, 192, 158, 255, 171, 176, 145, 255, 0, 0, 0, 255, 51, 52, 41, 68, 31, 31, 31, 6, 20, 20, 15, 0, 20, 20, 15, 0,
+ 12, 12, 9, 255, 244, 244, 236, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 206, 211, 174, 255, 206, 211, 174, 255, 206, 211, 174, 255, 202, 207, 171, 255, 198, 203, 168, 255, 194, 198, 164, 255, 187, 192, 158, 255, 171, 176, 145, 255, 0, 0, 0, 255, 51, 52, 41, 68, 0, 0, 0, 0, 20, 20, 15, 0, 20, 20, 15, 0,
+ 0, 0, 0, 255, 234, 236, 221, 255, 205, 210, 173, 255, 206, 211, 174, 255, 206, 211, 174, 255, 205, 210, 173, 255, 206, 211, 174, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 204, 209, 172, 255, 202, 207, 170, 255, 198, 203, 168, 255, 194, 198, 164, 255, 186, 191, 157, 255, 181, 185, 153, 255, 157, 158, 132, 255, 0, 0, 0, 255, 51, 52, 41, 68, 0, 0, 0, 0, 20, 20, 15, 0, 20, 20, 15, 0,
+ 0, 0, 0, 255, 234, 236, 221, 255, 205, 210, 173, 255, 206, 211, 174, 255, 206, 211, 174, 255, 205, 210, 173, 255, 206, 211, 174, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 204, 209, 172, 255, 202, 207, 170, 255, 198, 203, 168, 255, 194, 198, 164, 255, 186, 191, 157, 255, 181, 185, 153, 255, 157, 158, 132, 255, 0, 0, 0, 255, 51, 52, 41, 68, 0, 0, 0, 0, 20, 20, 15, 0, 20, 20, 15, 0,
+ 0, 0, 0, 255, 242, 242, 234, 255, 202, 207, 171, 255, 202, 207, 170, 255, 202, 207, 171, 255, 202, 207, 170, 255, 201, 206, 170, 255, 202, 207, 170, 255, 201, 206, 170, 255, 199, 204, 168, 255, 200, 205, 169, 255, 200, 205, 169, 255, 198, 203, 168, 255, 196, 201, 166, 255, 193, 197, 163, 255, 188, 192, 159, 255, 182, 187, 154, 255, 176, 180, 148, 255, 149, 153, 126, 255, 0, 0, 0, 255, 51, 52, 41, 68, 20, 20, 15, 0, 20, 20, 15, 0, 20, 20, 15, 0,
+ 0, 0, 0, 255, 242, 242, 234, 255, 202, 207, 171, 255, 202, 207, 170, 255, 202, 207, 171, 255, 202, 207, 170, 255, 201, 206, 170, 255, 202, 207, 170, 255, 201, 206, 170, 255, 199, 204, 168, 255, 200, 205, 169, 255, 200, 205, 169, 255, 198, 203, 168, 255, 196, 201, 166, 255, 193, 197, 163, 255, 188, 192, 159, 255, 182, 187, 154, 255, 176, 180, 148, 255, 149, 153, 126, 255, 0, 0, 0, 255, 51, 52, 41, 68, 20, 20, 15, 0, 20, 20, 15, 0, 20, 20, 15, 0,
+ 0, 0, 0, 255, 236, 236, 226, 255, 195, 200, 165, 255, 194, 199, 164, 255, 194, 199, 164, 255, 194, 198, 164, 255, 192, 197, 162, 255, 194, 198, 164, 255, 191, 196, 161, 255, 189, 194, 160, 255, 192, 197, 162, 255, 189, 194, 160, 255, 185, 189, 156, 255, 185, 190, 157, 255, 179, 183, 151, 255, 176, 181, 149, 255, 169, 173, 143, 255, 163, 167, 138, 255, 124, 127, 105, 255, 0, 0, 0, 255, 51, 52, 41, 68, 20, 20, 15, 0, 20, 20, 15, 0, 20, 20, 15, 0,
+ 0, 0, 0, 255, 220, 220, 212, 255, 184, 188, 155, 255, 184, 188, 155, 255, 181, 185, 153, 255, 179, 183, 151, 255, 179, 183, 151, 255, 176, 181, 149, 255, 176, 181, 149, 255, 175, 179, 148, 255, 175, 179, 148, 255, 175, 179, 148, 255, 172, 176, 145, 255, 168, 172, 142, 255, 166, 170, 140, 255, 159, 162, 134, 255, 155, 159, 131, 255, 154, 157, 130, 255, 113, 116, 95, 255, 0, 0, 0, 255, 51, 52, 41, 68, 20, 20, 15, 0, 20, 20, 15, 0, 20, 20, 15, 0,
+ 0, 0, 0, 255, 229, 230, 218, 255, 173, 177, 146, 255, 169, 173, 143, 255, 166, 170, 140, 255, 165, 169, 140, 255, 163, 167, 138, 255, 163, 167, 138, 255, 161, 165, 136, 255, 159, 163, 135, 255, 159, 162, 134, 255, 155, 159, 131, 255, 153, 157, 129, 255, 149, 152, 126, 255, 146, 149, 123, 255, 140, 143, 118, 255, 138, 141, 116, 255, 138, 141, 116, 255, 102, 104, 86, 255, 0, 0, 0, 255, 51, 52, 41, 68, 20, 20, 15, 0, 45, 50, 35, 19, 28, 28, 28, 3,
+ 0, 0, 0, 255, 192, 195, 175, 255, 148, 152, 124, 255, 143, 147, 121, 255, 139, 143, 117, 255, 138, 142, 116, 255, 136, 140, 115, 255, 136, 140, 115, 255, 133, 137, 112, 255, 134, 137, 113, 255, 130, 134, 110, 255, 128, 131, 108, 255, 125, 128, 105, 255, 121, 124, 102, 255, 114, 117, 96, 255, 113, 116, 96, 255, 113, 116, 95, 255, 106, 109, 89, 255, 67, 69, 56, 255, 0, 0, 0, 255, 51, 52, 41, 68, 51, 51, 39, 33, 42, 42, 31, 9, 0, 0, 0, 1,
+ 20, 20, 15, 136, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 20, 20, 15, 136, 51, 52, 41, 68, 47, 47, 37, 18, 28, 28, 28, 3, 0, 0, 0, 0,
+ 50, 50, 40, 37, 50, 52, 40, 56, 51, 52, 41, 66, 50, 51, 40, 67, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 50, 51, 40, 67, 51, 52, 40, 62, 50, 52, 40, 47, 20, 20, 15, 0, 20, 20, 15, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 51, 51, 30, 9, 48, 48, 38, 20, 49, 49, 38, 25, 48, 48, 36, 25, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 48, 48, 36, 25, 49, 49, 37, 23, 47, 47, 35, 16, 42, 42, 28, 7, 20, 20, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 42, 42, 0, 2, 31, 31, 0, 3, 31, 31, 0, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 31, 31, 31, 3, 36, 36, 0, 3, 51, 51, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(24, 24, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_iupgtk_tile(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 185, 195, 205, 255, 103, 124, 146, 255, 103, 124, 146, 255, 100, 121, 143, 255, 102, 124, 145, 255, 102, 123, 145, 255, 95, 115, 135, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 185, 195, 205, 255, 103, 124, 146, 255, 103, 124, 146, 255, 102, 123, 145, 255, 102, 124, 145, 255, 102, 123, 145, 255, 95, 115, 135, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 178, 189, 200, 255, 98, 119, 141, 255, 98, 119, 141, 255, 95, 116, 138, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 178, 189, 200, 255, 98, 119, 141, 255, 98, 119, 141, 255, 97, 118, 140, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 255, 247, 247, 247, 255, 228, 228, 228, 255, 225, 225, 225, 255, 218, 218, 218, 255, 216, 216, 216, 255, 212, 212, 212, 255, 171, 171, 171, 255, 0, 0, 0, 255, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 255, 244, 244, 244, 255, 225, 225, 225, 255, 223, 223, 223, 255, 219, 219, 219, 255, 216, 216, 216, 255, 214, 214, 214, 255, 172, 172, 172, 255, 0, 0, 0, 255, 0, 0, 0, 3, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 228, 228, 255, 224, 224, 224, 255, 216, 216, 216, 255, 217, 217, 217, 255, 213, 213, 213, 255, 172, 172, 172, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 213, 213, 213, 255, 172, 172, 172, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 224, 224, 224, 255, 220, 220, 220, 255, 212, 212, 212, 255, 213, 213, 213, 255, 209, 209, 209, 255, 169, 169, 169, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 213, 213, 213, 255, 209, 209, 209, 255, 169, 169, 169, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 207, 207, 207, 255, 181, 181, 181, 255, 178, 178, 178, 255, 171, 171, 171, 255, 172, 172, 172, 255, 169, 169, 169, 255, 158, 158, 158, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 207, 207, 207, 255, 181, 181, 181, 255, 178, 178, 178, 255, 175, 175, 175, 255, 172, 172, 172, 255, 169, 169, 169, 255, 158, 158, 158, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 185, 195, 205, 255, 103, 124, 146, 255, 103, 124, 146, 255, 100, 121, 143, 255, 102, 124, 145, 255, 102, 123, 145, 255, 95, 115, 135, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 185, 195, 205, 255, 103, 124, 146, 255, 103, 124, 146, 255, 102, 123, 145, 255, 102, 124, 145, 255, 102, 123, 145, 255, 95, 115, 135, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 178, 189, 200, 255, 98, 119, 141, 255, 98, 119, 141, 255, 95, 116, 138, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 178, 189, 200, 255, 98, 119, 141, 255, 98, 119, 141, 255, 97, 118, 140, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 250, 250, 250, 255, 231, 231, 231, 255, 228, 228, 228, 255, 221, 221, 221, 255, 220, 220, 220, 255, 217, 217, 217, 255, 175, 175, 175, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 250, 250, 250, 255, 231, 231, 231, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 175, 175, 175, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 228, 228, 255, 224, 224, 224, 255, 217, 217, 217, 255, 217, 217, 217, 255, 213, 213, 213, 255, 172, 172, 172, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 213, 213, 213, 255, 172, 172, 172, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 224, 224, 224, 255, 220, 220, 220, 255, 214, 214, 214, 255, 213, 213, 213, 255, 209, 209, 209, 255, 169, 169, 169, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 213, 213, 213, 255, 209, 209, 209, 255, 169, 169, 169, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 255, 207, 207, 207, 255, 181, 181, 181, 255, 178, 178, 178, 255, 172, 172, 172, 255, 172, 172, 172, 255, 169, 169, 169, 255, 158, 158, 158, 255, 0, 0, 0, 255, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 255, 207, 207, 207, 255, 181, 181, 181, 255, 178, 178, 178, 255, 175, 175, 175, 255, 172, 172, 172, 255, 169, 169, 169, 255, 158, 158, 158, 255, 0, 0, 0, 255, 0, 0, 0, 3, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(24, 24, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_iupgtk_save_all(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 238, 0, 0, 0, 89, 0, 0, 0, 13, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 159, 190, 215, 255, 162, 129, 127, 255, 229, 153, 137, 255, 226, 145, 129, 255, 225, 146, 133, 255, 220, 148, 135, 255, 215, 138, 126, 255, 215, 139, 127, 255, 207, 131, 121, 255, 120, 130, 142, 255, 100, 125, 145, 255, 0, 0, 0, 255, 0, 0, 0, 24, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 148, 179, 204, 255, 159, 135, 137, 255, 219, 164, 159, 255, 219, 164, 158, 255, 219, 165, 158, 255, 214, 157, 151, 255, 213, 154, 148, 255, 213, 150, 143, 255, 209, 151, 148, 255, 115, 125, 138, 255, 74, 99, 118, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 146, 176, 201, 255, 181, 181, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 131, 140, 255, 71, 94, 111, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 15, 15, 15, 255, 153, 153, 153, 255, 233, 233, 233, 255, 122, 132, 141, 255, 63, 85, 102, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 159, 190, 215, 255, 162, 129, 127, 255, 229, 153, 137, 255, 226, 145, 129, 255, 225, 146, 133, 255, 220, 148, 135, 255, 215, 138, 126, 255, 215, 139, 127, 255, 207, 131, 121, 255, 120, 130, 142, 255, 100, 125, 145, 255, 0, 0, 0, 255, 239, 239, 239, 255, 122, 132, 141, 255, 65, 83, 96, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 148, 179, 204, 255, 159, 135, 137, 255, 219, 164, 159, 255, 219, 164, 158, 255, 219, 165, 158, 255, 214, 157, 151, 255, 213, 154, 148, 255, 213, 150, 143, 255, 209, 151, 148, 255, 115, 125, 138, 255, 74, 99, 118, 255, 0, 0, 0, 255, 251, 251, 251, 255, 120, 131, 140, 255, 72, 82, 90, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 146, 176, 201, 255, 181, 181, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 131, 140, 255, 71, 94, 111, 255, 0, 0, 0, 255, 125, 141, 155, 255, 127, 151, 170, 255, 49, 68, 81, 255, 0, 0, 0, 255, 0, 0, 0, 11, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 15, 15, 15, 255, 153, 153, 153, 255, 233, 233, 233, 255, 122, 132, 141, 255, 63, 85, 102, 255, 0, 0, 0, 255, 63, 79, 91, 255, 130, 158, 183, 255, 48, 64, 73, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 255, 159, 190, 215, 255, 162, 129, 127, 255, 229, 153, 137, 255, 226, 145, 129, 255, 225, 146, 133, 255, 220, 148, 135, 255, 215, 138, 126, 255, 215, 139, 127, 255, 207, 131, 121, 255, 120, 130, 142, 255, 100, 125, 145, 255, 0, 0, 0, 255, 239, 239, 239, 255, 122, 132, 141, 255, 65, 83, 96, 255, 0, 0, 0, 255, 73, 94, 111, 255, 115, 144, 164, 255, 44, 56, 65, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 255, 148, 179, 204, 255, 159, 135, 137, 255, 219, 164, 159, 255, 219, 164, 158, 255, 219, 165, 158, 255, 214, 157, 151, 255, 213, 154, 148, 255, 213, 150, 143, 255, 209, 151, 148, 255, 115, 125, 138, 255, 74, 99, 118, 255, 0, 0, 0, 255, 251, 251, 251, 255, 120, 131, 140, 255, 72, 82, 90, 255, 0, 0, 0, 255, 76, 96, 111, 255, 112, 142, 162, 255, 47, 56, 62, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 255, 146, 176, 201, 255, 181, 181, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 131, 140, 255, 71, 94, 111, 255, 0, 0, 0, 255, 125, 141, 155, 255, 127, 151, 170, 255, 49, 68, 81, 255, 0, 0, 0, 255, 70, 89, 103, 255, 106, 134, 154, 255, 49, 53, 57, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 255, 144, 174, 199, 255, 167, 167, 167, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 233, 233, 233, 255, 122, 132, 141, 255, 63, 85, 102, 255, 0, 0, 0, 255, 63, 79, 91, 255, 130, 158, 183, 255, 48, 64, 73, 255, 0, 0, 0, 255, 7, 9, 10, 255, 24, 30, 36, 255, 5, 6, 6, 240, 0, 0, 0, 110, 0, 0, 0, 30, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 255, 140, 172, 196, 255, 174, 174, 174, 255, 240, 240, 240, 255, 240, 240, 240, 255, 240, 240, 240, 255, 240, 240, 240, 255, 240, 240, 240, 255, 240, 240, 240, 255, 239, 239, 239, 255, 122, 132, 141, 255, 65, 83, 96, 255, 0, 0, 0, 255, 73, 94, 111, 255, 115, 144, 164, 255, 44, 56, 65, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 142, 173, 194, 255, 179, 167, 167, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 251, 251, 251, 255, 120, 131, 140, 255, 72, 82, 90, 255, 0, 0, 0, 255, 76, 96, 111, 255, 112, 142, 162, 255, 47, 56, 62, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 255, 132, 164, 189, 255, 126, 148, 165, 255, 125, 142, 156, 255, 122, 140, 155, 255, 123, 140, 155, 255, 119, 138, 153, 255, 125, 142, 156, 255, 126, 143, 157, 255, 125, 141, 155, 255, 127, 151, 170, 255, 49, 68, 81, 255, 0, 0, 0, 255, 70, 89, 103, 255, 106, 134, 154, 255, 49, 53, 57, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 255, 128, 160, 186, 255, 107, 137, 161, 255, 91, 97, 98, 255, 119, 125, 130, 255, 132, 141, 148, 255, 127, 136, 141, 255, 118, 126, 131, 255, 102, 108, 112, 255, 63, 79, 91, 255, 130, 158, 183, 255, 48, 64, 73, 255, 0, 0, 0, 255, 7, 9, 10, 255, 24, 30, 36, 255, 5, 6, 6, 240, 0, 0, 0, 110, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255, 124, 157, 181, 255, 87, 107, 123, 255, 216, 214, 209, 255, 119, 117, 111, 255, 94, 91, 84, 255, 211, 209, 205, 255, 192, 188, 181, 255, 200, 199, 193, 255, 73, 94, 111, 255, 115, 144, 164, 255, 44, 56, 65, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 255, 121, 155, 179, 255, 87, 104, 119, 255, 227, 225, 222, 255, 98, 95, 88, 255, 80, 77, 69, 255, 197, 194, 188, 255, 201, 197, 191, 255, 226, 224, 222, 255, 76, 96, 111, 255, 112, 142, 162, 255, 47, 56, 62, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 208, 100, 121, 139, 255, 79, 97, 110, 255, 204, 201, 196, 255, 108, 104, 97, 255, 106, 103, 96, 255, 204, 200, 195, 255, 231, 230, 227, 255, 220, 219, 215, 255, 70, 89, 103, 255, 106, 134, 154, 255, 49, 53, 57, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 85, 7, 9, 10, 208, 8, 10, 11, 255, 17, 17, 16, 255, 19, 18, 18, 255, 21, 21, 20, 255, 23, 23, 22, 255, 24, 24, 24, 255, 19, 19, 18, 255, 7, 9, 10, 255, 24, 30, 36, 255, 5, 6, 6, 240, 0, 0, 0, 110, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
+
+ Ihandle* image = IupImageRGBA(24, 24, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_iupgtk_text(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 88, 88, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 246, 0, 0, 0, 242, 14, 14, 14, 255, 40, 40, 40, 255, 97, 97, 97, 219, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 211, 211, 211, 255, 246, 246, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 249, 255, 249, 249, 248, 255, 249, 249, 248, 255, 231, 231, 231, 255, 228, 228, 228, 255, 205, 205, 205, 255, 31, 31, 31, 228, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 246, 246, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 248, 255, 239, 239, 238, 255, 175, 175, 174, 255, 233, 233, 233, 255, 255, 255, 255, 255, 179, 179, 179, 255, 56, 56, 56, 253, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 194, 194, 255, 194, 194, 194, 255, 194, 194, 194, 255, 194, 194, 194, 255, 194, 194, 194, 255, 193, 193, 193, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 189, 189, 188, 255, 181, 181, 181, 255, 164, 164, 163, 255, 240, 240, 240, 255, 255, 255, 255, 255, 244, 244, 244, 255, 171, 171, 171, 255, 5, 5, 5, 153, 0, 0, 0, 11, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 253, 253, 253, 255, 252, 252, 251, 255, 253, 253, 253, 255, 252, 252, 251, 255, 251, 251, 251, 255, 249, 249, 248, 255, 242, 242, 242, 255, 158, 158, 158, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 191, 191, 190, 255, 190, 190, 190, 255, 190, 190, 189, 255, 190, 190, 190, 255, 190, 190, 189, 255, 189, 189, 188, 255, 189, 189, 188, 255, 185, 185, 185, 255, 161, 161, 160, 255, 161, 161, 160, 255, 130, 130, 128, 255, 130, 130, 128, 255, 130, 130, 128, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 10,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 254, 254, 254, 255, 253, 253, 253, 255, 252, 252, 251, 255, 251, 251, 251, 255, 250, 250, 249, 255, 249, 249, 248, 255, 248, 248, 247, 255, 249, 249, 248, 255, 248, 248, 247, 255, 248, 247, 246, 255, 248, 248, 247, 255, 248, 248, 247, 255, 242, 242, 242, 255, 224, 224, 223, 255, 224, 224, 223, 255, 224, 224, 223, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 252, 252, 251, 255, 190, 190, 190, 255, 190, 190, 189, 255, 189, 189, 188, 255, 188, 188, 187, 255, 188, 187, 187, 255, 187, 187, 186, 255, 188, 187, 187, 255, 187, 187, 186, 255, 187, 187, 185, 255, 185, 184, 184, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 229, 228, 227, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 28,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 250, 250, 249, 255, 249, 249, 248, 255, 248, 248, 247, 255, 248, 247, 246, 255, 247, 246, 245, 255, 246, 246, 244, 255, 245, 244, 243, 255, 246, 246, 244, 255, 245, 244, 243, 255, 244, 243, 242, 255, 244, 243, 242, 255, 243, 242, 241, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 229, 228, 227, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 27,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 248, 248, 247, 255, 188, 187, 187, 255, 187, 187, 186, 255, 187, 187, 185, 255, 186, 185, 184, 255, 185, 184, 184, 255, 184, 184, 183, 255, 185, 184, 184, 255, 184, 184, 183, 255, 184, 184, 182, 255, 180, 180, 179, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 229, 228, 227, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 19,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 246, 245, 244, 255, 245, 245, 243, 255, 244, 243, 242, 255, 244, 243, 242, 255, 243, 243, 241, 255, 242, 242, 240, 255, 241, 241, 239, 255, 242, 242, 240, 255, 241, 241, 239, 255, 240, 239, 237, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 229, 228, 227, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 12,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 244, 243, 242, 255, 184, 184, 183, 255, 184, 184, 182, 255, 182, 182, 181, 255, 181, 181, 180, 255, 183, 182, 181, 255, 182, 181, 180, 255, 183, 182, 181, 255, 181, 180, 179, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 229, 228, 227, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 244, 243, 242, 255, 243, 242, 241, 255, 242, 242, 240, 255, 240, 240, 238, 255, 239, 239, 237, 255, 241, 240, 238, 255, 240, 239, 237, 255, 240, 239, 237, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 229, 228, 227, 255, 229, 228, 227, 255, 158, 153, 142, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 240, 240, 238, 255, 181, 181, 180, 255, 181, 181, 180, 255, 181, 181, 179, 255, 181, 180, 178, 255, 180, 179, 178, 255, 179, 178, 177, 255, 174, 173, 172, 255, 174, 173, 172, 255, 174, 173, 172, 255, 174, 173, 172, 255, 174, 173, 172, 255, 174, 173, 172, 255, 174, 173, 172, 255, 174, 173, 172, 255, 218, 217, 213, 255, 159, 154, 142, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 237, 237, 235, 255, 237, 236, 234, 255, 236, 235, 233, 255, 236, 235, 233, 255, 236, 235, 233, 255, 236, 235, 233, 255, 236, 235, 233, 255, 236, 235, 233, 255, 236, 235, 233, 255, 236, 235, 233, 255, 229, 228, 227, 255, 229, 228, 227, 255, 229, 228, 227, 255, 218, 217, 213, 255, 218, 217, 213, 255, 219, 218, 214, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 235, 234, 232, 255, 177, 176, 174, 255, 177, 176, 174, 255, 176, 175, 174, 255, 176, 175, 173, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 220, 219, 215, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 231, 230, 227, 255, 230, 229, 226, 255, 230, 229, 226, 255, 230, 229, 226, 255, 229, 228, 225, 255, 228, 226, 223, 255, 224, 223, 219, 255, 221, 219, 217, 255, 222, 221, 217, 255, 213, 212, 209, 255, 218, 217, 213, 255, 217, 216, 212, 255, 219, 218, 214, 255, 218, 217, 213, 255, 219, 217, 213, 255, 217, 215, 211, 255, 159, 153, 141, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 227, 224, 255, 227, 226, 223, 255, 227, 226, 222, 255, 228, 226, 223, 255, 228, 227, 223, 255, 224, 223, 219, 255, 222, 221, 217, 255, 218, 217, 213, 255, 216, 215, 211, 255, 218, 217, 213, 255, 221, 220, 216, 255, 220, 219, 215, 255, 220, 218, 214, 255, 220, 218, 214, 255, 217, 215, 211, 255, 216, 214, 210, 255, 158, 152, 141, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 237, 237, 237, 255, 225, 224, 221, 255, 225, 223, 220, 255, 225, 224, 220, 255, 224, 223, 219, 255, 226, 225, 221, 255, 223, 222, 218, 255, 223, 222, 218, 255, 219, 218, 214, 255, 220, 219, 215, 255, 221, 220, 216, 255, 222, 220, 216, 255, 220, 218, 214, 255, 220, 218, 214, 255, 217, 215, 211, 255, 216, 214, 209, 255, 215, 213, 209, 255, 157, 151, 139, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 209, 209, 209, 255, 225, 223, 219, 255, 224, 222, 218, 255, 223, 222, 218, 255, 222, 221, 217, 255, 224, 223, 219, 255, 222, 221, 217, 255, 223, 221, 217, 255, 220, 219, 215, 255, 222, 220, 216, 255, 221, 219, 215, 255, 222, 220, 216, 255, 220, 218, 214, 255, 220, 218, 214, 255, 216, 214, 210, 255, 215, 214, 209, 255, 213, 211, 206, 255, 155, 149, 138, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 153, 152, 145, 255, 163, 158, 146, 255, 164, 158, 147, 255, 163, 157, 146, 255, 163, 157, 145, 255, 163, 157, 146, 255, 161, 156, 144, 255, 162, 156, 144, 255, 161, 156, 144, 255, 162, 156, 144, 255, 161, 155, 143, 255, 161, 155, 144, 255, 159, 153, 141, 255, 159, 153, 141, 255, 157, 151, 140, 255, 157, 151, 140, 255, 155, 150, 138, 255, 103, 99, 89, 255, 0, 0, 0, 255, 0, 0, 0, 46, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 125, 0, 0, 0, 42, 0, 0, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 23, 0, 0, 0, 42, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 42, 0, 0, 0, 23, 0, 0, 0, 4};
+
+ Ihandle* image = IupImageRGBA(24, 24, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_iupgtk_zoom(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 73, 73, 78, 52, 52, 52, 163, 45, 45, 45, 221, 41, 41, 41, 251, 38, 38, 38, 251, 38, 38, 38, 221, 38, 38, 38, 163, 53, 53, 53, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 93, 93, 50, 46, 46, 46, 192, 48, 48, 48, 255, 115, 115, 115, 255, 161, 161, 161, 255, 180, 180, 180, 255, 178, 178, 178, 255, 157, 157, 157, 255, 103, 103, 103, 255, 32, 32, 32, 255, 28, 28, 28, 192, 55, 55, 55, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 78, 39, 39, 39, 251, 97, 97, 97, 255, 180, 180, 180, 255, 202, 202, 202, 255, 207, 207, 207, 255, 208, 208, 208, 255, 206, 206, 206, 255, 201, 201, 201, 255, 193, 193, 193, 255, 167, 167, 167, 255, 76, 76, 76, 255, 19, 19, 19, 251, 35, 35, 35, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 79, 50, 34, 34, 34, 251, 117, 117, 117, 255, 202, 202, 202, 255, 211, 211, 211, 255, 219, 219, 219, 255, 231, 231, 231, 255, 239, 239, 239, 255, 243, 243, 243, 255, 241, 241, 241, 255, 229, 229, 229, 255, 210, 210, 210, 255, 188, 188, 188, 255, 94, 94, 94, 255, 16, 16, 16, 251, 36, 36, 36, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 33, 33, 33, 192, 91, 91, 91, 255, 204, 204, 204, 255, 215, 215, 215, 255, 229, 229, 229, 255, 245, 245, 245, 255, 250, 250, 250, 255, 251, 251, 251, 255, 250, 250, 250, 255, 248, 248, 248, 255, 245, 245, 245, 255, 240, 240, 240, 255, 225, 225, 225, 255, 194, 194, 194, 255, 67, 67, 67, 255, 15, 15, 15, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 48, 48, 78, 31, 31, 31, 255, 185, 185, 185, 255, 214, 214, 214, 255, 231, 231, 231, 255, 249, 249, 249, 255, 251, 251, 251, 255, 253, 253, 253, 255, 253, 253, 253, 255, 252, 252, 252, 255, 251, 251, 251, 255, 248, 248, 248, 255, 242, 242, 242, 255, 236, 236, 236, 255, 228, 228, 228, 255, 171, 171, 171, 255, 14, 14, 14, 255, 18, 18, 18, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 27, 27, 27, 163, 109, 109, 109, 255, 210, 210, 210, 255, 225, 225, 225, 255, 245, 245, 245, 255, 250, 250, 250, 255, 253, 253, 253, 255, 254, 254, 254, 255, 254, 254, 254, 255, 253, 253, 253, 255, 252, 252, 252, 255, 249, 249, 249, 255, 245, 245, 245, 255, 238, 238, 238, 255, 230, 230, 230, 255, 219, 219, 219, 255, 87, 87, 87, 255, 9, 9, 9, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 20, 20, 20, 221, 168, 168, 168, 255, 216, 216, 216, 255, 238, 238, 238, 255, 246, 246, 246, 255, 249, 249, 249, 255, 252, 252, 252, 255, 254, 254, 254, 255, 254, 254, 254, 255, 253, 253, 253, 255, 251, 251, 251, 255, 248, 248, 248, 255, 244, 244, 244, 255, 238, 238, 238, 255, 230, 230, 230, 255, 220, 220, 220, 255, 155, 155, 155, 255, 6, 6, 6, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 17, 17, 17, 251, 197, 197, 197, 255, 223, 223, 223, 255, 239, 239, 239, 255, 245, 245, 245, 255, 246, 246, 246, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 246, 246, 246, 255, 237, 237, 237, 255, 229, 229, 229, 255, 219, 219, 219, 255, 191, 191, 191, 255, 6, 6, 6, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 14, 14, 14, 251, 198, 198, 198, 255, 227, 227, 227, 255, 236, 236, 236, 255, 242, 242, 242, 255, 246, 246, 246, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 246, 246, 246, 255, 234, 234, 234, 255, 224, 224, 224, 255, 215, 215, 215, 255, 186, 186, 186, 255, 5, 5, 5, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 11, 11, 11, 221, 165, 165, 165, 255, 225, 225, 225, 255, 231, 231, 231, 255, 237, 237, 237, 255, 241, 241, 241, 255, 244, 244, 244, 255, 246, 246, 246, 255, 246, 246, 246, 255, 245, 245, 245, 255, 243, 243, 243, 255, 239, 239, 239, 255, 236, 236, 236, 255, 228, 228, 228, 255, 219, 219, 219, 255, 209, 209, 209, 255, 147, 147, 147, 255, 2, 2, 2, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 10, 10, 10, 163, 95, 95, 95, 255, 217, 217, 217, 255, 225, 225, 225, 255, 230, 230, 230, 255, 235, 235, 235, 255, 238, 238, 238, 255, 239, 239, 239, 255, 239, 239, 239, 255, 238, 238, 238, 255, 237, 237, 237, 255, 233, 233, 233, 255, 228, 228, 228, 255, 219, 219, 219, 255, 212, 212, 212, 255, 202, 202, 202, 255, 76, 76, 76, 255, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12, 12, 12, 78, 10, 10, 10, 255, 180, 180, 180, 255, 216, 216, 216, 255, 220, 220, 220, 255, 226, 226, 226, 255, 229, 229, 229, 255, 230, 230, 230, 255, 230, 230, 230, 255, 231, 231, 231, 255, 227, 227, 227, 255, 223, 223, 223, 255, 218, 218, 218, 255, 212, 212, 212, 255, 203, 203, 203, 255, 161, 161, 161, 255, 2, 2, 2, 255, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 31, 6, 6, 6, 192, 59, 59, 59, 255, 204, 204, 204, 255, 210, 210, 210, 255, 212, 212, 212, 255, 218, 218, 218, 255, 219, 219, 219, 255, 218, 218, 218, 255, 219, 219, 219, 255, 216, 216, 216, 255, 213, 213, 213, 255, 208, 208, 208, 255, 200, 200, 200, 255, 189, 189, 189, 255, 46, 46, 46, 255, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 50, 5, 5, 5, 251, 81, 81, 81, 255, 194, 194, 194, 255, 199, 199, 199, 255, 203, 203, 203, 255, 204, 204, 204, 255, 205, 205, 205, 255, 203, 203, 203, 255, 203, 203, 203, 255, 200, 200, 200, 255, 194, 194, 194, 255, 184, 184, 184, 255, 69, 69, 69, 255, 0, 0, 0, 251, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 3, 3, 3, 78, 3, 3, 3, 251, 49, 49, 49, 255, 153, 153, 153, 255, 187, 187, 187, 255, 189, 189, 189, 255, 188, 188, 188, 255, 188, 188, 188, 255, 188, 188, 188, 255, 182, 182, 182, 255, 144, 144, 144, 255, 43, 43, 43, 255, 0, 0, 0, 251, 0, 0, 0, 241, 0, 0, 0, 242, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 50, 1, 1, 1, 192, 3, 3, 3, 255, 65, 65, 65, 255, 122, 122, 122, 255, 154, 154, 154, 255, 154, 154, 154, 255, 119, 119, 119, 255, 60, 60, 60, 255, 0, 0, 0, 255, 0, 0, 0, 192, 0, 0, 0, 50, 0, 0, 0, 223, 0, 0, 0, 240, 0, 0, 0, 243, 0, 0, 0, 223, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 78, 0, 0, 0, 163, 0, 0, 0, 221, 0, 0, 0, 251, 0, 0, 0, 251, 0, 0, 0, 221, 0, 0, 0, 163, 0, 0, 0, 78, 0, 0, 0, 58, 0, 0, 0, 31, 0, 0, 0, 31, 32, 32, 32, 243, 32, 32, 32, 244, 0, 0, 0, 246, 0, 0, 0, 241, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 236, 104, 104, 104, 251, 52, 52, 52, 247, 0, 0, 0, 242, 0, 0, 0, 246, 0, 0, 0, 31, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 243, 121, 121, 121, 253, 58, 58, 58, 252, 0, 0, 0, 243, 0, 0, 0, 244, 0, 0, 0, 31,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 248, 104, 104, 104, 251, 31, 31, 31, 251, 0, 0, 0, 244, 0, 0, 0, 31,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 231, 0, 0, 0, 253, 0, 0, 0, 63, 0, 0, 0, 31,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(24, 24, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_iupgtk_cascade(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 185, 195, 205, 255, 102, 123, 145, 255, 102, 123, 144, 255, 101, 122, 143, 255, 101, 123, 143, 255, 100, 121, 143, 255, 93, 113, 133, 255, 0, 0, 0, 255, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 177, 188, 199, 255, 98, 119, 141, 255, 98, 119, 141, 255, 97, 118, 140, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 231, 231, 231, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 175, 175, 175, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 247, 247, 247, 255, 228, 228, 228, 255, 224, 224, 224, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 245, 245, 245, 255, 224, 224, 224, 255, 220, 220, 220, 255, 0, 0, 0, 255, 185, 195, 205, 255, 103, 124, 146, 255, 103, 124, 146, 255, 102, 123, 145, 255, 102, 124, 145, 255, 102, 123, 145, 255, 95, 115, 135, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 204, 204, 204, 255, 181, 181, 181, 255, 178, 178, 178, 255, 0, 0, 0, 255, 178, 189, 200, 255, 98, 119, 141, 255, 98, 119, 141, 255, 97, 118, 140, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 250, 250, 250, 255, 231, 231, 231, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 175, 175, 175, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 228, 228, 255, 224, 224, 224, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 224, 224, 224, 255, 220, 220, 220, 255, 0, 0, 0, 255, 185, 195, 205, 255, 103, 124, 146, 255, 103, 124, 146, 255, 102, 123, 145, 255, 102, 124, 145, 255, 102, 123, 145, 255, 95, 115, 135, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 207, 207, 207, 255, 181, 181, 181, 255, 178, 178, 178, 255, 0, 0, 0, 255, 178, 189, 200, 255, 98, 119, 141, 255, 98, 119, 141, 255, 97, 118, 140, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 250, 250, 250, 255, 231, 231, 231, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 175, 175, 175, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 213, 213, 213, 255, 172, 172, 172, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 213, 213, 213, 255, 209, 209, 209, 255, 169, 169, 169, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 207, 207, 207, 255, 181, 181, 181, 255, 178, 178, 178, 255, 175, 175, 175, 255, 172, 172, 172, 255, 169, 169, 169, 255, 158, 158, 158, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1};
+
+ Ihandle* image = IupImageRGBA(24, 24, imgdata);
+ return image;
+}
+
diff --git a/iup/srcimglib/iup_imglib_icons.h b/iup/srcimglib/iup_imglib_icons.h
new file mode 100755
index 0000000..f369eb6
--- /dev/null
+++ b/iup/srcimglib/iup_imglib_icons.h
@@ -0,0 +1,240 @@
+static Ihandle* load_image_Tecgraf(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 95, 108, 1, 90, 100, 117, 99, 123, 138, 166, 126, 137, 152, 181, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 105, 123, 147, 122, 137, 165, 255, 136, 152, 183, 255, 132, 149, 179, 250, 133, 149, 178, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 100, 115, 43, 111, 125, 150, 253, 140, 158, 190, 255, 135, 151, 182, 255, 132, 149, 179, 255, 131, 147, 177, 217, 153, 164, 188, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 113, 134, 148, 134, 151, 182, 255, 137, 154, 185, 255, 115, 129, 154, 252, 114, 128, 155, 255, 130, 146, 175, 255, 132, 147, 175, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 159, 162, 3, 108, 121, 145, 230, 144, 162, 195, 255, 137, 154, 185, 197, 74, 79, 86, 45, 41, 46, 55, 246, 120, 134, 162, 255, 129, 145, 174, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 101, 113, 48, 124, 139, 167, 255, 144, 161, 194, 255, 138, 155, 186, 67, 0, 0, 0, 0, 49, 54, 62, 150, 87, 98, 118, 255, 128, 144, 173, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 113, 132, 105, 137, 154, 185, 255, 139, 156, 188, 231, 143, 159, 187, 3, 0, 0, 0, 0, 64, 68, 76, 61, 70, 79, 95, 255, 127, 143, 172, 254, 134, 149, 175, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 121, 142, 153, 141, 159, 191, 255, 139, 156, 188, 164, 0, 0, 0, 0, 0, 0, 0, 0, 79, 82, 87, 3, 69, 77, 92, 241, 122, 137, 165, 255, 127, 142, 170, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 122, 146, 191, 145, 163, 196, 255, 139, 156, 188, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 86, 101, 190, 115, 129, 156, 255, 126, 141, 170, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 125, 149, 227, 150, 168, 201, 255, 141, 157, 188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 91, 107, 144, 113, 127, 153, 255, 125, 140, 169, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 165, 167, 2, 112, 125, 150, 252, 155, 173, 203, 255, 143, 159, 189, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 94, 110, 109, 114, 128, 155, 255, 125, 140, 168, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 167, 181, 1, 120, 130, 149, 33, 48, 53, 59, 69, 43, 46, 52, 100, 50, 54, 59, 137, 116, 130, 156, 255, 155, 171, 201, 255, 105, 118, 142, 155, 104, 117, 141, 151, 105, 118, 141, 151, 105, 118, 142, 151, 101, 113, 136, 185, 111, 124, 150, 255, 116, 130, 156, 220, 112, 125, 148, 95, 115, 127, 150, 67, 123, 134, 156, 33, 168, 176, 190, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 129, 147, 5, 109, 121, 142, 71, 106, 118, 140, 140, 105, 117, 140, 197, 107, 120, 144, 242, 120, 135, 162, 255, 123, 137, 163, 255, 44, 49, 58, 255, 28, 32, 39, 255, 125, 139, 164, 255, 150, 167, 197, 255, 138, 155, 186, 255, 131, 148, 178, 255, 125, 141, 170, 255, 119, 134, 162, 255, 114, 128, 154, 255, 108, 122, 147, 255, 104, 117, 141, 255, 102, 115, 138, 255, 103, 116, 139, 255, 107, 120, 145, 255, 111, 124, 149, 245, 113, 126, 151, 200, 113, 127, 152, 140, 116, 129, 154, 71, 122, 135, 158, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 118, 128, 145, 14, 106, 118, 140, 130, 104, 116, 139, 234, 105, 118, 142, 255, 128, 144, 173, 255, 147, 165, 199, 255, 157, 177, 213, 255, 150, 168, 202, 255, 140, 156, 187, 229, 41, 45, 52, 196, 39, 43, 51, 183, 130, 143, 168, 255, 144, 161, 192, 233, 109, 122, 145, 109, 105, 116, 138, 109, 99, 110, 130, 109, 92, 103, 123, 109, 91, 100, 117, 145, 97, 109, 131, 255, 95, 106, 128, 248, 74, 83, 97, 193, 64, 72, 85, 227, 56, 63, 75, 255, 55, 62, 75, 255, 65, 73, 88, 255, 90, 101, 121, 255, 111, 125, 150, 255, 114, 128, 154, 236, 116, 129, 155, 130, 127, 140, 165, 16, 0, 0, 0, 0,
+ 95, 101, 113, 22, 103, 115, 137, 220, 103, 116, 140, 255, 110, 123, 148, 255, 146, 165, 198, 255, 147, 165, 197, 232, 142, 158, 188, 147, 131, 144, 169, 78, 115, 123, 139, 20, 0, 0, 0, 0, 0, 0, 0, 0, 91, 97, 108, 68, 128, 142, 167, 255, 144, 162, 193, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 100, 107, 31, 120, 135, 163, 255, 133, 150, 180, 231, 0, 0, 0, 0, 0, 0, 0, 0, 86, 89, 93, 20, 50, 54, 61, 73, 37, 40, 46, 141, 33, 36, 42, 230, 46, 52, 63, 255, 107, 120, 144, 255, 116, 130, 157, 255, 118, 133, 159, 223, 132, 147, 174, 24,
+ 76, 83, 95, 114, 104, 117, 140, 255, 105, 117, 141, 255, 118, 133, 160, 253, 139, 155, 184, 116, 134, 143, 161, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 100, 110, 74, 122, 137, 163, 255, 143, 160, 191, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 114, 120, 31, 123, 138, 166, 255, 136, 153, 183, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 93, 97, 5, 42, 45, 51, 111, 86, 97, 117, 253, 118, 133, 160, 255, 119, 133, 161, 255, 133, 149, 180, 116,
+ 46, 50, 56, 109, 67, 76, 91, 255, 105, 118, 142, 255, 107, 120, 145, 254, 112, 125, 149, 131, 127, 139, 161, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 98, 109, 74, 116, 130, 156, 255, 142, 159, 190, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 122, 31, 128, 143, 172, 255, 141, 157, 185, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 137, 163, 7, 122, 136, 162, 122, 120, 135, 162, 254, 121, 136, 164, 255, 136, 152, 184, 255, 126, 141, 168, 116,
+ 71, 74, 79, 17, 31, 35, 41, 206, 42, 47, 57, 255, 77, 87, 105, 255, 103, 116, 140, 255, 110, 124, 149, 239, 112, 125, 150, 157, 115, 128, 153, 89, 122, 134, 158, 30, 147, 158, 177, 2, 0, 0, 0, 0, 81, 87, 96, 65, 109, 123, 148, 255, 141, 158, 190, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 103, 112, 31, 135, 151, 180, 255, 141, 156, 183, 231, 0, 0, 0, 0, 153, 164, 183, 1, 134, 147, 171, 30, 124, 138, 165, 84, 123, 138, 165, 154, 122, 137, 164, 235, 127, 143, 172, 255, 140, 157, 189, 255, 144, 162, 195, 255, 129, 144, 172, 218, 126, 138, 161, 22,
+ 0, 0, 0, 0, 64, 68, 73, 7, 39, 43, 49, 118, 32, 36, 42, 225, 30, 35, 42, 255, 50, 57, 68, 255, 72, 81, 97, 255, 91, 102, 123, 255, 105, 118, 142, 255, 113, 127, 152, 240, 115, 129, 155, 204, 111, 124, 149, 196, 111, 125, 150, 255, 126, 141, 170, 234, 119, 133, 159, 120, 120, 134, 160, 116, 121, 135, 161, 117, 121, 135, 162, 119, 116, 130, 155, 152, 127, 142, 170, 255, 125, 140, 168, 248, 123, 138, 166, 199, 130, 145, 173, 235, 140, 155, 183, 255, 143, 160, 190, 255, 143, 161, 193, 255, 147, 165, 199, 255, 145, 164, 197, 255, 132, 148, 177, 230, 127, 140, 166, 126, 124, 134, 151, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 141, 144, 3, 55, 58, 63, 58, 37, 40, 46, 126, 34, 38, 44, 184, 34, 38, 44, 235, 35, 39, 47, 254, 49, 55, 66, 255, 64, 72, 87, 255, 77, 87, 104, 255, 88, 98, 118, 255, 96, 108, 130, 255, 103, 116, 139, 255, 108, 122, 147, 255, 113, 127, 153, 255, 118, 133, 160, 255, 124, 140, 168, 255, 133, 148, 176, 255, 141, 156, 183, 255, 146, 161, 187, 255, 144, 159, 186, 255, 131, 146, 174, 254, 127, 141, 168, 237, 126, 141, 168, 188, 123, 137, 162, 131, 112, 123, 143, 61, 128, 132, 140, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 94, 98, 19, 64, 68, 73, 56, 53, 57, 65, 82, 62, 67, 76, 116, 66, 74, 89, 255, 95, 107, 129, 255, 80, 88, 103, 155, 81, 90, 105, 151, 86, 95, 112, 151, 95, 104, 122, 151, 98, 109, 128, 180, 124, 139, 166, 255, 109, 122, 146, 218, 100, 110, 128, 84, 96, 104, 118, 56, 105, 109, 117, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 2, 74, 83, 98, 252, 131, 147, 178, 255, 140, 155, 184, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 134, 157, 114, 151, 169, 203, 255, 123, 138, 165, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 76, 90, 224, 122, 137, 165, 255, 136, 152, 182, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 139, 165, 147, 146, 164, 198, 255, 122, 137, 165, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 69, 81, 191, 110, 124, 149, 255, 134, 151, 181, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 170, 193, 142, 160, 192, 255, 122, 137, 164, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 63, 74, 150, 94, 105, 127, 255, 133, 149, 179, 166, 0, 0, 0, 0, 0, 0, 0, 0, 115, 119, 128, 5, 130, 145, 174, 242, 137, 154, 186, 255, 125, 139, 166, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 58, 66, 102, 72, 81, 97, 255, 132, 148, 178, 236, 148, 161, 187, 5, 0, 0, 0, 0, 110, 121, 140, 64, 140, 157, 189, 255, 127, 142, 171, 254, 131, 144, 169, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 65, 71, 43, 47, 52, 63, 255, 127, 143, 172, 255, 132, 148, 177, 75, 0, 0, 0, 0, 121, 134, 158, 160, 139, 156, 188, 255, 123, 138, 165, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 1, 36, 39, 46, 227, 106, 119, 143, 255, 130, 145, 175, 203, 114, 125, 147, 51, 123, 138, 166, 247, 131, 147, 177, 255, 123, 138, 165, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 41, 47, 143, 68, 77, 93, 255, 128, 144, 174, 255, 126, 141, 170, 252, 129, 145, 174, 255, 123, 138, 166, 255, 127, 141, 167, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 68, 73, 40, 34, 38, 46, 250, 117, 131, 158, 255, 126, 142, 171, 255, 124, 140, 168, 255, 125, 139, 166, 214, 140, 152, 172, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 44, 50, 134, 58, 66, 79, 255, 123, 138, 166, 255, 123, 138, 166, 250, 127, 140, 165, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 1, 46, 50, 55, 83, 82, 89, 102, 123, 106, 116, 136, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(32, 32, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_PUC_Rio(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 70, 47, 28, 103, 97, 66, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 99, 63, 107, 119, 112, 74, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, 139, 94, 94, 94, 162, 93, 93, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 83, 55, 59, 148, 138, 82, 117, 126, 120, 89, 189, 142, 136, 102, 254, 147, 140, 102, 255, 122, 117, 91, 197, 151, 141, 83, 130, 86, 80, 52, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 106, 66, 133, 137, 129, 84, 228, 144, 136, 91, 255, 136, 129, 88, 255, 143, 134, 90, 255, 138, 131, 90, 255, 142, 133, 86, 241, 112, 104, 64, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 34, 104, 104, 104, 122, 79, 79, 79, 12, 0, 0, 0, 0, 126, 118, 72, 126, 151, 141, 91, 255, 150, 140, 100, 255, 147, 139, 102, 255, 146, 137, 98, 255, 151, 141, 102, 255, 150, 141, 90, 255, 128, 119, 73, 142, 0, 0, 0, 0, 50, 50, 50, 6, 99, 99, 99, 109, 84, 84, 84, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 42, 36, 119, 119, 119, 255, 74, 74, 74, 108, 49, 48, 39, 27, 137, 131, 98, 234, 152, 145, 106, 255, 155, 147, 102, 255, 157, 149, 104, 255, 166, 156, 101, 255, 147, 140, 105, 255, 161, 152, 103, 255, 133, 128, 102, 234, 100, 94, 60, 50, 69, 69, 69, 81, 116, 116, 116, 255, 75, 75, 75, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 103, 126, 123, 123, 123, 242, 34, 34, 34, 11, 54, 54, 54, 6, 139, 131, 88, 252, 128, 121, 84, 255, 145, 133, 89, 255, 141, 133, 89, 255, 148, 137, 90, 255, 137, 127, 86, 255, 140, 132, 86, 255, 139, 132, 92, 255, 50, 48, 37, 26, 64, 64, 64, 1, 118, 118, 118, 225, 109, 109, 109, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 39, 4, 104, 97, 61, 53, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 118, 226, 104, 104, 104, 140, 0, 0, 0, 0, 0, 0, 0, 0, 134, 127, 93, 226, 140, 134, 102, 255, 127, 124, 109, 255, 123, 121, 107, 255, 125, 122, 105, 255, 126, 123, 111, 255, 139, 133, 101, 255, 136, 130, 95, 243, 83, 83, 83, 1, 0, 0, 0, 0, 98, 98, 98, 114, 123, 123, 123, 246, 24, 24, 24, 7, 0, 0, 0, 0, 74, 74, 74, 46, 52, 52, 52, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 42, 8, 159, 148, 87, 169, 161, 149, 88, 177, 100, 94, 59, 36, 94, 43, 44, 162, 127, 10, 11, 254, 101, 101, 101, 139, 73, 73, 73, 5, 129, 123, 89, 234, 161, 152, 104, 255, 163, 153, 99, 255, 152, 143, 95, 255, 160, 150, 94, 255, 154, 146, 99, 255, 168, 158, 102, 255, 132, 126, 96, 247, 33, 32, 28, 13, 99, 99, 99, 122, 126, 16, 17, 252, 98, 41, 41, 178, 61, 61, 61, 29, 106, 106, 106, 161, 105, 105, 105, 184, 53, 53, 53, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 32, 22, 162, 151, 87, 247, 165, 154, 89, 248, 158, 147, 87, 138, 87, 65, 64, 179, 92, 83, 83, 219, 0, 0, 0, 0, 111, 105, 76, 152, 130, 123, 84, 255, 132, 121, 80, 255, 137, 118, 77, 255, 140, 116, 77, 255, 127, 116, 77, 255, 139, 130, 86, 255, 109, 104, 77, 177, 0, 0, 0, 0, 91, 83, 83, 201, 88, 65, 66, 190, 100, 100, 100, 123, 107, 107, 107, 243, 110, 110, 110, 255, 48, 48, 48, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 154, 91, 205, 153, 142, 84, 199, 151, 140, 83, 197, 148, 137, 80, 253, 100, 87, 81, 255, 93, 86, 73, 168, 45, 45, 45, 2, 90, 83, 52, 37, 104, 19, 14, 180, 157, 0, 2, 254, 129, 4, 5, 190, 138, 3, 5, 188, 149, 1, 3, 250, 111, 14, 11, 194, 95, 86, 54, 46, 72, 72, 72, 0, 76, 73, 73, 148, 96, 82, 82, 255, 94, 94, 94, 253, 103, 103, 103, 215, 94, 94, 94, 181, 111, 111, 111, 230, 54, 54, 54, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 99, 62, 71, 169, 157, 92, 225, 135, 126, 76, 177, 187, 173, 101, 240, 104, 101, 82, 169, 68, 88, 139, 255, 43, 78, 160, 255, 24, 64, 166, 223, 28, 69, 176, 207, 52, 62, 153, 238, 60, 60, 145, 250, 39, 78, 179, 207, 39, 78, 179, 207, 57, 62, 149, 244, 56, 60, 149, 243, 28, 70, 176, 207, 21, 63, 169, 218, 31, 68, 163, 255, 60, 83, 142, 255, 90, 90, 90, 159, 120, 120, 120, 240, 90, 90, 90, 177, 112, 112, 112, 233, 77, 77, 77, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 0, 70, 66, 46, 36, 134, 125, 76, 150, 156, 145, 86, 169, 79, 78, 75, 73, 47, 80, 163, 254, 26, 81, 221, 255, 39, 96, 243, 255, 57, 90, 172, 255, 65, 102, 193, 255, 59, 98, 197, 255, 59, 104, 217, 255, 61, 109, 231, 255, 62, 101, 201, 255, 61, 95, 176, 255, 57, 91, 172, 255, 40, 97, 243, 255, 27, 81, 221, 255, 41, 79, 175, 255, 86, 86, 86, 80, 93, 93, 93, 149, 97, 97, 97, 172, 53, 53, 53, 40, 54, 54, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 34, 30, 5, 98, 92, 59, 46, 0, 0, 0, 0, 25, 66, 171, 188, 58, 96, 188, 255, 67, 108, 208, 255, 93, 112, 149, 255, 94, 114, 154, 255, 95, 116, 157, 255, 86, 130, 243, 255, 87, 132, 246, 255, 95, 115, 155, 255, 94, 114, 153, 255, 94, 113, 149, 255, 63, 107, 221, 255, 65, 98, 176, 255, 27, 69, 178, 208, 0, 0, 0, 0, 68, 68, 68, 39, 39, 39, 39, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 75, 174, 184, 60, 108, 232, 255, 111, 122, 134, 255, 104, 124, 161, 255, 116, 125, 131, 255, 100, 111, 126, 255, 101, 135, 223, 255, 104, 140, 234, 255, 102, 113, 127, 255, 112, 122, 132, 255, 106, 123, 154, 255, 111, 123, 136, 255, 61, 107, 225, 255, 39, 79, 181, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 84, 175, 184, 81, 108, 170, 255, 100, 125, 182, 255, 127, 130, 116, 255, 187, 175, 106, 255, 188, 175, 101, 255, 126, 156, 235, 255, 133, 165, 248, 255, 175, 164, 101, 255, 187, 175, 106, 255, 132, 133, 114, 255, 103, 127, 178, 255, 84, 108, 162, 255, 50, 87, 182, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 91, 175, 184, 81, 114, 197, 255, 124, 133, 139, 255, 152, 152, 128, 255, 182, 174, 122, 255, 154, 159, 152, 255, 156, 182, 250, 255, 156, 182, 250, 255, 153, 160, 162, 255, 177, 171, 125, 255, 158, 156, 125, 255, 128, 135, 135, 255, 82, 113, 192, 255, 61, 95, 182, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 28, 6, 101, 101, 101, 141, 103, 103, 103, 160, 65, 65, 65, 24, 42, 42, 42, 8, 66, 94, 167, 198, 101, 132, 211, 255, 113, 126, 148, 255, 194, 181, 107, 255, 160, 168, 172, 255, 171, 194, 251, 255, 178, 199, 251, 255, 178, 199, 251, 255, 172, 194, 251, 255, 158, 167, 178, 255, 202, 187, 108, 255, 115, 126, 143, 255, 101, 130, 203, 255, 71, 100, 176, 216, 33, 32, 30, 11, 70, 67, 49, 14, 156, 145, 86, 151, 156, 145, 86, 153, 72, 69, 47, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 94, 94, 94, 97, 97, 97, 119, 69, 69, 69, 72, 105, 105, 105, 189, 99, 99, 99, 251, 80, 102, 158, 243, 106, 135, 204, 255, 124, 134, 149, 255, 186, 171, 102, 255, 181, 175, 166, 255, 205, 209, 241, 255, 210, 213, 241, 255, 208, 211, 240, 255, 206, 210, 241, 255, 182, 175, 164, 255, 199, 182, 110, 255, 121, 130, 140, 255, 107, 133, 196, 255, 90, 113, 169, 240, 156, 145, 84, 250, 144, 134, 79, 192, 131, 122, 73, 98, 127, 118, 73, 93, 157, 146, 86, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 15, 105, 105, 105, 194, 103, 103, 103, 201, 98, 98, 98, 170, 119, 119, 119, 242, 85, 85, 85, 148, 75, 101, 166, 198, 115, 145, 224, 255, 123, 134, 152, 255, 186, 168, 105, 255, 223, 223, 223, 255, 122, 122, 122, 255, 231, 231, 231, 255, 221, 214, 214, 255, 122, 122, 122, 255, 188, 188, 188, 255, 205, 188, 127, 255, 124, 133, 144, 255, 114, 143, 216, 255, 82, 110, 183, 206, 117, 109, 67, 135, 180, 168, 97, 243, 152, 141, 83, 175, 156, 145, 86, 199, 165, 153, 90, 204, 97, 91, 58, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 84, 101, 101, 101, 118, 44, 44, 44, 30, 105, 105, 105, 171, 48, 48, 48, 37, 107, 107, 107, 165, 81, 108, 176, 187, 113, 137, 194, 255, 137, 142, 137, 255, 181, 165, 109, 255, 219, 219, 219, 255, 40, 40, 40, 255, 226, 226, 226, 255, 143, 136, 136, 255, 253, 253, 253, 255, 130, 130, 130, 255, 196, 180, 126, 255, 140, 144, 135, 255, 114, 135, 185, 255, 84, 111, 183, 204, 164, 153, 90, 137, 106, 99, 61, 65, 164, 153, 90, 143, 98, 92, 59, 58, 137, 127, 76, 89, 154, 144, 85, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 91, 118, 104, 104, 104, 203, 102, 103, 106, 198, 121, 133, 153, 241, 188, 179, 120, 227, 156, 157, 137, 147, 79, 105, 171, 182, 122, 152, 228, 255, 128, 137, 148, 255, 175, 160, 112, 255, 117, 117, 117, 255, 171, 171, 171, 255, 118, 118, 118, 255, 149, 142, 142, 255, 223, 223, 223, 255, 127, 127, 127, 255, 192, 177, 130, 255, 130, 137, 143, 255, 122, 150, 222, 255, 82, 109, 178, 201, 154, 156, 137, 114, 189, 180, 120, 231, 150, 154, 144, 238, 151, 144, 96, 205, 158, 147, 87, 202, 139, 130, 78, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 29, 29, 5, 29, 62, 171, 38, 87, 110, 171, 255, 90, 102, 126, 255, 166, 163, 128, 174, 71, 95, 155, 155, 118, 151, 235, 255, 126, 139, 164, 255, 169, 155, 106, 255, 233, 231, 230, 255, 255, 255, 255, 255, 241, 241, 241, 255, 236, 229, 229, 255, 241, 240, 240, 255, 226, 225, 225, 255, 186, 171, 123, 255, 128, 139, 157, 255, 117, 149, 230, 255, 76, 101, 165, 174, 177, 173, 134, 139, 175, 167, 113, 255, 130, 141, 158, 255, 18, 61, 201, 53, 24, 24, 24, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 82, 242, 8, 69, 101, 197, 194, 134, 137, 127, 255, 134, 138, 129, 236, 40, 54, 93, 89, 112, 146, 236, 255, 115, 137, 187, 255, 152, 149, 116, 255, 178, 164, 110, 255, 184, 166, 110, 255, 173, 162, 128, 255, 172, 160, 132, 255, 180, 163, 108, 255, 178, 163, 111, 255, 160, 155, 114, 255, 116, 135, 178, 255, 114, 149, 238, 255, 48, 63, 102, 102, 131, 136, 132, 208, 128, 132, 126, 255, 86, 109, 174, 200, 19, 71, 241, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 106, 212, 11, 150, 147, 114, 237, 186, 176, 114, 255, 125, 134, 147, 103, 66, 87, 140, 171, 115, 147, 228, 255, 124, 148, 207, 255, 133, 153, 201, 255, 136, 153, 197, 255, 171, 192, 247, 255, 173, 195, 250, 255, 136, 154, 199, 255, 134, 153, 199, 255, 123, 146, 203, 255, 118, 150, 232, 255, 70, 92, 148, 186, 126, 135, 145, 72, 124, 129, 126, 255, 149, 148, 121, 252, 117, 135, 177, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 142, 137, 115, 128, 133, 131, 255, 135, 136, 119, 238, 128, 141, 167, 36, 28, 33, 45, 58, 63, 76, 111, 104, 89, 106, 150, 150, 121, 143, 202, 240, 151, 178, 250, 255, 151, 179, 250, 255, 124, 147, 207, 244, 91, 108, 154, 156, 64, 78, 114, 105, 30, 36, 50, 63, 101, 121, 173, 20, 109, 119, 134, 220, 121, 125, 119, 255, 146, 148, 132, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 87, 235, 3, 130, 132, 120, 192, 126, 130, 125, 255, 180, 175, 130, 211, 52, 97, 243, 3, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 23, 22, 91, 112, 168, 198, 96, 119, 179, 209, 27, 30, 36, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 169, 138, 183, 191, 178, 105, 255, 165, 159, 115, 222, 98, 123, 190, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 128, 187, 19, 155, 159, 146, 235, 184, 178, 128, 248, 157, 161, 148, 111, 162, 164, 144, 134, 117, 135, 178, 42, 0, 0, 0, 0, 22, 25, 33, 25, 28, 34, 49, 32, 0, 0, 0, 0, 107, 129, 184, 33, 161, 161, 138, 130, 156, 160, 148, 128, 184, 178, 128, 250, 162, 163, 142, 248, 130, 143, 168, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 96, 227, 12, 170, 169, 137, 206, 209, 194, 112, 255, 189, 181, 124, 255, 120, 127, 132, 255, 166, 158, 105, 255, 112, 121, 134, 230, 173, 169, 129, 196, 153, 153, 126, 195, 133, 136, 129, 224, 120, 125, 124, 255, 142, 137, 101, 255, 190, 181, 124, 255, 209, 194, 112, 255, 173, 171, 135, 195, 37, 83, 231, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 111, 205, 10, 172, 170, 138, 141, 140, 149, 156, 217, 138, 139, 124, 198, 145, 144, 118, 254, 61, 84, 148, 255, 164, 156, 104, 255, 106, 115, 129, 255, 126, 130, 122, 255, 188, 178, 113, 255, 112, 121, 135, 207, 137, 147, 158, 204, 168, 168, 139, 124, 51, 92, 222, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 76, 242, 3, 0, 0, 0, 0, 96, 122, 193, 28, 148, 153, 149, 78, 139, 142, 129, 101, 147, 149, 132, 101, 154, 158, 150, 80, 100, 124, 190, 31, 0, 0, 0, 0, 89, 125, 246, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(32, 32, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_BR(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 254, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 255, 254, 255,
+ 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255,
+ 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255,
+ 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255,
+ 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255,
+ 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255,
+ 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255,
+ 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255,
+ 255, 254, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 249, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 251, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 253, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, 252, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 255, 255, 255, 255,
+ 240, 248, 244, 255, 1, 140, 79, 255, 1, 140, 79, 255, 1, 140, 79, 255, 1, 140, 79, 255, 1, 140, 79, 255, 111, 189, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 218, 238, 229, 255, 109, 188, 154, 255, 1, 140, 79, 255, 1, 140, 79, 255, 1, 140, 79, 255, 15, 146, 89, 255, 250, 252, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 251, 250, 255, 174, 218, 198, 255, 22, 150, 94, 255, 1, 140, 79, 255, 1, 140, 79, 255, 1, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 183, 222, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 88, 179, 139, 255, 0, 140, 79, 255, 0, 140, 79, 255, 82, 177, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 218, 199, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 10, 144, 86, 255, 247, 251, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 182, 144, 255, 53, 164, 116, 255, 54, 164, 116, 255, 145, 205, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 153, 209, 185, 255, 0, 140, 79, 255, 0, 140, 79, 255, 156, 210, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 217, 196, 255, 58, 165, 118, 255, 58, 165, 118, 255, 82, 176, 135, 255, 243, 249, 246, 255, 255, 255, 255, 255, 245, 250, 248, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 75, 173, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 248, 244, 255, 4, 142, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 96, 182, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 195, 163, 255, 0, 140, 79, 255, 1, 140, 80, 255, 228, 243, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 177, 137, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 222, 240, 232, 255, 255, 255, 255, 255, 225, 241, 234, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 149, 207, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 248, 244, 255, 189, 224, 208, 255, 189, 224, 208, 255, 194, 227, 212, 255, 249, 252, 251, 255, 255, 255, 255, 255, 225, 241, 234, 255, 20, 149, 93, 255, 0, 140, 79, 255, 48, 161, 111, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 180, 141, 255, 73, 173, 130, 255, 78, 175, 132, 255, 162, 212, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 193, 161, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 222, 240, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 253, 255, 58, 165, 118, 255, 0, 140, 79, 255, 0, 140, 79, 255, 121, 194, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 254, 255, 144, 204, 178, 255, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 41, 158, 106, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 118, 193, 160, 255, 111, 190, 155, 255, 114, 191, 157, 255, 206, 233, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 229, 215, 255, 0, 140, 79, 255, 0, 140, 79, 255, 195, 227, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 249, 245, 255, 233, 245, 240, 255, 242, 249, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 242, 236, 255, 38, 157, 105, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 114, 191, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 234, 223, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 103, 186, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, 252, 255, 1, 140, 80, 255, 17, 147, 91, 255, 251, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 164, 116, 255, 0, 140, 79, 255, 1, 141, 80, 255, 170, 216, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 124, 195, 164, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 187, 224, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 213, 190, 255, 46, 160, 110, 255, 46, 160, 110, 255, 69, 171, 126, 255, 216, 237, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 239, 231, 255, 0, 140, 79, 255, 87, 179, 139, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 246, 241, 255, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 129, 198, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 201, 173, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 145, 87, 255, 249, 252, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 108, 188, 153, 255, 0, 140, 79, 255, 161, 212, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, 214, 193, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 120, 194, 161, 255, 255, 255, 255, 255, 255, 255, 255, 255, 146, 206, 180, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 79, 175, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 241, 233, 255, 103, 186, 150, 255, 0, 140, 79, 255, 2, 141, 80, 255, 232, 244, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 182, 143, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 111, 190, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 210, 187, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 147, 91, 255, 36, 156, 104, 255, 36, 156, 104, 255, 36, 156, 104, 255, 36, 156, 104, 255, 36, 156, 104, 255, 36, 156, 104, 255, 35, 155, 102, 255, 18, 148, 91, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 255, 43, 158, 108, 255, 43, 158, 108, 255, 43, 158, 108, 255, 9, 144, 85, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 27, 152, 97, 255, 65, 168, 123, 255, 65, 168, 123, 255, 41, 158, 107, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255,
+ 253, 254, 253, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 252, 254, 253, 255};
+
+ Ihandle* image = IupImageRGBA(32, 32, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_Lua(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 138, 13, 6, 6, 130, 84, 9, 9, 131, 105, 12, 12, 133, 56, 102, 102, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 131, 68, 1, 1, 128, 234, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 3, 3, 129, 183, 18, 18, 136, 14, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 135, 27, 1, 1, 128, 242, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 164, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 130, 122, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 127, 252, 25, 25, 140, 19,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 140, 18, 8, 8, 131, 73, 5, 5, 129, 111, 3, 3, 129, 129, 3, 3, 128, 128, 4, 4, 129, 109, 9, 9, 132, 72, 24, 24, 139, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 129, 154, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 50,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 154, 3, 8, 8, 131, 88, 4, 4, 129, 192, 1, 1, 127, 252, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 127, 251, 4, 4, 129, 186, 8, 8, 131, 82, 52, 52, 153, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 130, 120, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 127, 251, 23, 23, 138, 18,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 131, 59, 3, 3, 128, 211, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 2, 2, 128, 205, 9, 9, 132, 53, 0, 0, 0, 0, 18, 18, 136, 25, 1, 1, 128, 240, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 159, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 45, 150, 0, 7, 7, 130, 120, 1, 1, 127, 252, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 127, 250, 7, 7, 130, 110, 0, 0, 0, 0, 12, 12, 133, 64, 2, 2, 128, 231, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 177, 25, 25, 140, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 204, 0, 3, 3, 129, 139, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 27, 27, 141, 255, 122, 122, 188, 255, 155, 155, 205, 255, 121, 121, 188, 255, 26, 26, 140, 255, 0, 0, 127, 255, 9, 9, 132, 132, 0, 0, 0, 0, 33, 33, 144, 10, 8, 8, 131, 77, 5, 5, 129, 96, 15, 15, 135, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 130, 111, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 67, 67, 160, 255, 242, 242, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 241, 248, 255, 64, 64, 159, 255, 0, 0, 127, 255, 7, 7, 131, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 132, 47, 1, 1, 127, 250, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 12, 12, 133, 255, 234, 234, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 232, 243, 255, 11, 11, 132, 255, 1, 1, 127, 246, 10, 10, 132, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 97, 97, 176, 0, 3, 3, 128, 193, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 81, 81, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 78, 166, 255, 0, 0, 127, 255, 3, 3, 129, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12, 12, 133, 63, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 101, 101, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 97, 176, 255, 0, 0, 127, 255, 0, 0, 127, 255, 13, 13, 133, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 4, 129, 162, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 52, 52, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 49, 152, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 67, 67, 161, 2, 2, 2, 128, 236, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 179, 179, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 176, 215, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 3, 3, 128, 225, 130, 130, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 14, 14, 134, 37, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 130, 255, 73, 73, 164, 255, 3, 3, 129, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 12, 12, 133, 255, 160, 160, 207, 255, 251, 251, 253, 255, 255, 255, 255, 255, 251, 251, 253, 255, 158, 158, 206, 255, 11, 11, 132, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 22, 22, 138, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 9, 9, 131, 72, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 135, 255, 46, 46, 150, 255, 16, 16, 135, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 10, 10, 132, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 4, 129, 86, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6, 6, 130, 82, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 123, 123, 189, 255, 84, 84, 169, 255, 0, 0, 127, 255, 0, 0, 127, 255, 120, 120, 187, 255, 87, 87, 171, 255, 0, 0, 127, 255, 66, 66, 160, 255, 211, 211, 233, 255, 238, 238, 246, 255, 227, 227, 241, 255, 97, 97, 176, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 130, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 12, 12, 133, 61, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 151, 151, 203, 255, 103, 103, 179, 255, 0, 0, 127, 255, 0, 0, 127, 255, 147, 147, 201, 255, 107, 107, 181, 255, 0, 0, 127, 255, 214, 214, 235, 255, 82, 82, 168, 255, 0, 0, 127, 255, 55, 55, 154, 255, 235, 235, 245, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 11, 11, 133, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 139, 19, 1, 1, 127, 254, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 151, 151, 203, 255, 103, 103, 179, 255, 0, 0, 127, 255, 0, 0, 127, 255, 147, 147, 201, 255, 107, 107, 181, 255, 0, 0, 127, 255, 7, 7, 130, 255, 4, 4, 129, 255, 32, 32, 143, 255, 92, 92, 173, 255, 243, 243, 249, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 251, 30, 30, 142, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 3, 129, 210, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 151, 151, 203, 255, 103, 103, 179, 255, 0, 0, 127, 255, 0, 0, 127, 255, 147, 147, 201, 255, 107, 107, 181, 255, 0, 0, 127, 255, 135, 135, 195, 255, 219, 219, 237, 255, 172, 172, 214, 255, 133, 133, 194, 255, 243, 243, 249, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 3, 3, 129, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6, 6, 130, 126, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 151, 151, 203, 255, 104, 104, 179, 255, 0, 0, 127, 255, 0, 0, 127, 255, 175, 175, 215, 255, 107, 107, 181, 255, 36, 36, 145, 255, 234, 234, 244, 255, 10, 10, 132, 255, 0, 0, 127, 255, 17, 17, 135, 255, 243, 243, 249, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 6, 6, 130, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 16, 135, 25, 1, 1, 127, 247, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 141, 141, 198, 255, 135, 135, 195, 255, 135, 135, 195, 255, 135, 135, 195, 255, 49, 49, 151, 255, 127, 127, 191, 255, 193, 193, 224, 255, 49, 49, 152, 255, 100, 100, 177, 255, 234, 234, 244, 255, 107, 107, 181, 255, 23, 23, 139, 255, 241, 241, 248, 255, 73, 73, 163, 255, 54, 54, 154, 255, 169, 169, 212, 255, 247, 247, 251, 255, 31, 31, 142, 255, 0, 0, 127, 255, 2, 2, 128, 243, 22, 22, 138, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 129, 137, 0, 0, 127, 255, 8, 8, 131, 255, 115, 115, 185, 255, 115, 115, 185, 255, 115, 115, 185, 255, 115, 115, 185, 255, 115, 115, 185, 255, 42, 42, 148, 255, 12, 12, 133, 255, 138, 138, 196, 255, 180, 180, 217, 255, 121, 121, 188, 255, 60, 60, 157, 255, 48, 48, 151, 255, 0, 0, 127, 255, 76, 76, 165, 255, 174, 174, 214, 255, 162, 162, 208, 255, 53, 53, 153, 255, 138, 138, 196, 255, 124, 124, 189, 255, 0, 0, 127, 255, 6, 6, 130, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 137, 11, 2, 2, 128, 217, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 2, 2, 128, 209, 24, 24, 139, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 132, 43, 2, 2, 128, 240, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 235, 11, 11, 133, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 132, 56, 2, 2, 128, 237, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 233, 4, 4, 129, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 133, 37, 3, 3, 128, 206, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 3, 3, 129, 200, 13, 13, 134, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 142, 5, 6, 6, 130, 113, 2, 2, 128, 233, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 2, 2, 128, 230, 6, 6, 130, 106, 20, 20, 137, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 138, 8, 9, 9, 131, 90, 4, 4, 129, 170, 3, 3, 128, 228, 0, 0, 127, 254, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 127, 254, 3, 3, 128, 225, 4, 4, 129, 167, 8, 8, 131, 86, 38, 38, 146, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 147, 11, 16, 16, 135, 29, 18, 18, 136, 28, 41, 41, 148, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(32, 32, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_TecgrafPUC_Rio(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 167, 173, 184, 80, 176, 185, 202, 166, 177, 185, 202, 166, 177, 186, 202, 166, 177, 186, 202, 166, 177, 186, 202, 166, 177, 186, 203, 166, 178, 186, 203, 166, 178, 186, 203, 166, 178, 186, 203, 166, 178, 186, 203, 166, 178, 186, 203, 166, 178, 186, 203, 166, 178, 186, 203, 166, 178, 186, 204, 166, 178, 187, 204, 166, 178, 187, 204, 166, 178, 187, 204, 166, 178, 187, 204, 166, 179, 187, 204, 166, 179, 188, 204, 166, 179, 188, 205, 166, 204, 210, 221, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 218, 225, 5, 188, 196, 210, 81, 158, 171, 195, 81, 180, 191, 212, 142, 189, 199, 218, 166, 189, 199, 218, 166, 189, 199, 219, 166, 189, 199, 219, 166, 176, 187, 207, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 100, 102, 107, 168, 106, 119, 143, 255, 122, 137, 165, 255, 122, 137, 166, 255, 122, 137, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 169, 255, 125, 141, 169, 255, 138, 155, 187, 255, 201, 209, 224, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 158, 169, 64, 135, 148, 173, 227, 139, 156, 188, 255, 142, 159, 192, 255, 143, 161, 193, 255, 144, 162, 195, 255, 144, 162, 195, 255, 144, 162, 195, 255, 145, 163, 196, 255, 140, 155, 181, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 97, 99, 103, 168, 91, 102, 123, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 135, 152, 182, 255, 201, 209, 224, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 177, 180, 45, 116, 126, 144, 253, 128, 144, 173, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 142, 166, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 97, 99, 103, 168, 91, 102, 123, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 135, 151, 182, 255, 201, 209, 224, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 121, 127, 130, 106, 120, 144, 255, 128, 144, 174, 255, 128, 144, 174, 255, 129, 144, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 175, 255, 129, 145, 175, 255, 118, 130, 151, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 97, 99, 103, 168, 91, 102, 123, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 134, 151, 181, 255, 201, 209, 224, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 227, 232, 31, 226, 229, 234, 70, 228, 231, 236, 70, 227, 230, 236, 70, 227, 230, 235, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 220, 226, 43, 182, 189, 204, 70, 159, 170, 192, 70, 157, 170, 194, 70, 161, 174, 198, 70, 182, 192, 211, 70, 205, 211, 225, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 231, 236, 14, 213, 218, 227, 70, 205, 211, 223, 70, 207, 214, 226, 70, 208, 214, 225, 70, 227, 231, 237, 46, 229, 232, 238, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 121, 192, 113, 127, 152, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 129, 144, 174, 255, 129, 145, 174, 255, 127, 143, 172, 255, 118, 133, 160, 255, 121, 135, 163, 255, 107, 116, 135, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 97, 99, 103, 168, 76, 85, 103, 255, 91, 101, 122, 255, 91, 102, 122, 255, 91, 102, 122, 255, 91, 102, 122, 255, 91, 102, 123, 255, 92, 103, 125, 255, 111, 124, 150, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 111, 125, 151, 255, 94, 106, 127, 255, 92, 103, 124, 255, 92, 103, 125, 255, 92, 103, 125, 255, 92, 103, 125, 255, 92, 103, 125, 255, 116, 131, 157, 255, 181, 192, 213, 77, 0, 0, 0, 0, 0, 0, 0, 0, 171, 176, 185, 32, 152, 160, 176, 136, 149, 160, 180, 221, 143, 156, 180, 239, 133, 148, 176, 246, 137, 152, 180, 255, 140, 156, 185, 255, 141, 157, 187, 255, 146, 162, 193, 243, 163, 178, 206, 239, 174, 189, 215, 204, 179, 193, 219, 119, 215, 221, 234, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 157, 170, 66, 138, 149, 170, 150, 142, 154, 178, 236, 132, 146, 174, 249, 134, 149, 178, 255, 134, 150, 179, 255, 134, 151, 181, 255, 137, 154, 184, 255, 141, 158, 189, 255, 148, 165, 197, 251, 166, 183, 213, 239, 179, 195, 224, 191, 187, 201, 226, 77, 226, 231, 240, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 166, 181, 67, 150, 162, 183, 153, 155, 168, 193, 222, 154, 168, 195, 239, 152, 168, 198, 239, 165, 181, 209, 239, 172, 188, 218, 201, 185, 199, 225, 145, 161, 166, 177, 111, 158, 169, 189, 239, 174, 186, 210, 239, 174, 187, 210, 239, 174, 187, 210, 239, 174, 187, 210, 239, 175, 187, 211, 239, 175, 187, 211, 239, 182, 191, 209, 203, 0, 0, 0, 0, 131, 136, 143, 55, 164, 175, 196, 239, 176, 188, 211, 239, 176, 188, 211, 239, 176, 188, 212, 239, 176, 189, 212, 239, 176, 189, 212, 239, 176, 189, 212, 239, 176, 187, 207, 140, 171, 177, 189, 64, 148, 160, 183, 149, 162, 176, 203, 234, 201, 213, 233, 239, 213, 224, 243, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 199, 208, 38, 157, 168, 188, 115, 151, 165, 192, 171, 157, 171, 198, 239, 147, 164, 195, 242, 149, 166, 197, 255, 148, 164, 196, 255, 149, 167, 199, 255, 152, 169, 201, 255, 155, 172, 206, 250, 159, 177, 210, 247, 165, 182, 214, 239, 181, 197, 225, 227, 179, 195, 226, 142, 190, 203, 227, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 217, 226, 51, 204, 210, 222, 67, 101, 106, 113, 208, 117, 131, 158, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 111, 124, 149, 255, 101, 106, 114, 255, 111, 116, 125, 255, 130, 135, 145, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 128, 131, 134, 96, 110, 113, 117, 191, 110, 113, 118, 191, 110, 113, 118, 191, 110, 113, 118, 191, 110, 113, 118, 191, 110, 113, 118, 191, 56, 61, 69, 251, 108, 121, 146, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 119, 133, 161, 255, 111, 120, 135, 241, 111, 113, 118, 191, 111, 113, 118, 191, 111, 113, 118, 191, 111, 113, 118, 191, 111, 113, 118, 191, 118, 121, 127, 191, 184, 189, 197, 61, 182, 185, 190, 45, 136, 144, 159, 192, 117, 129, 152, 245, 117, 131, 157, 255, 115, 130, 157, 255, 115, 130, 156, 255, 115, 130, 156, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 130, 157, 255, 116, 130, 157, 255, 117, 132, 159, 255, 124, 140, 167, 255, 142, 159, 190, 255, 171, 188, 219, 248, 183, 200, 230, 142, 211, 220, 236, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 180, 186, 70, 132, 141, 158, 206, 118, 132, 157, 255, 119, 134, 162, 255, 119, 133, 160, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 161, 255, 122, 136, 164, 255, 134, 150, 180, 255, 162, 180, 209, 255, 185, 202, 230, 220, 195, 208, 233, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 157, 167, 46, 138, 147, 164, 221, 123, 138, 164, 252, 124, 139, 168, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 123, 138, 167, 255, 128, 144, 173, 255, 147, 165, 195, 255, 136, 152, 179, 255, 104, 117, 141, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 130, 146, 176, 255, 167, 179, 202, 248, 0, 0, 0, 0, 114, 117, 120, 89, 88, 99, 119, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 133, 149, 179, 255, 142, 153, 170, 250, 122, 136, 161, 254, 127, 143, 172, 255, 126, 142, 170, 255, 169, 181, 199, 255, 219, 229, 245, 104, 0, 0, 0, 0, 0, 0, 0, 0, 143, 150, 165, 127, 126, 140, 167, 247, 130, 146, 175, 255, 129, 145, 174, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 171, 255, 127, 143, 172, 255, 127, 143, 173, 255, 128, 144, 173, 255, 134, 150, 179, 255, 151, 168, 196, 255, 176, 192, 220, 253, 186, 203, 232, 158, 191, 204, 227, 14, 0, 0, 0, 0, 111, 118, 131, 195, 148, 164, 196, 255, 132, 147, 177, 255, 122, 137, 165, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 129, 145, 174, 255, 166, 181, 205, 255, 180, 195, 217, 255, 163, 180, 212, 255, 149, 163, 189, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 73, 80, 240, 108, 121, 146, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 119, 134, 161, 255, 168, 181, 205, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 114, 121, 44, 100, 109, 125, 229, 110, 124, 149, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 120, 134, 160, 255, 158, 173, 196, 255, 189, 205, 233, 205, 203, 214, 236, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 110, 120, 69, 104, 115, 134, 247, 116, 129, 156, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 120, 134, 162, 255, 139, 153, 178, 255, 186, 201, 226, 251, 190, 205, 233, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 140, 148, 60, 111, 121, 139, 244, 118, 133, 159, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 167, 179, 201, 248, 0, 0, 0, 0, 114, 117, 120, 89, 84, 94, 114, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 135, 151, 177, 255, 141, 154, 178, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 148, 165, 192, 255, 201, 215, 237, 104, 0, 0, 0, 0, 141, 146, 157, 106, 104, 118, 145, 253, 121, 137, 167, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 129, 144, 173, 255, 163, 178, 204, 255, 182, 198, 228, 184, 0, 0, 0, 0, 81, 87, 95, 195, 120, 135, 162, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 129, 144, 174, 255, 141, 154, 181, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 73, 80, 240, 108, 121, 146, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 119, 134, 161, 255, 171, 185, 209, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 126, 130, 24, 84, 92, 105, 228, 108, 121, 146, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 157, 255, 146, 159, 182, 255, 192, 208, 234, 212, 210, 219, 237, 18, 0, 0, 0, 0, 0, 0, 0, 0, 150, 152, 156, 68, 91, 101, 118, 247, 115, 129, 155, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 130, 144, 169, 255, 185, 200, 224, 250, 188, 203, 231, 52, 0, 0, 0, 0, 143, 145, 148, 25, 96, 104, 118, 229, 115, 129, 156, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 167, 179, 201, 248, 0, 0, 0, 0, 114, 117, 120, 89, 84, 94, 114, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 139, 167, 255, 126, 142, 170, 255, 125, 140, 168, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 134, 149, 179, 255, 182, 194, 216, 104, 222, 222, 223, 15, 115, 124, 140, 230, 118, 134, 163, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 128, 143, 172, 255, 156, 174, 206, 252, 177, 190, 213, 72, 81, 87, 95, 195, 120, 135, 162, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 141, 154, 181, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 73, 80, 240, 108, 121, 145, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 119, 134, 161, 255, 171, 185, 209, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 112, 118, 167, 94, 105, 127, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 110, 123, 149, 255, 89, 101, 122, 255, 72, 82, 98, 255, 74, 83, 100, 255, 97, 109, 132, 255, 114, 128, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 160, 173, 195, 255, 193, 208, 234, 174, 0, 0, 0, 0, 137, 139, 142, 1, 87, 93, 104, 218, 110, 124, 149, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 113, 127, 154, 255, 91, 102, 122, 255, 73, 82, 98, 255, 70, 78, 94, 255, 92, 104, 125, 255, 116, 131, 157, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 140, 154, 179, 255, 179, 197, 226, 208, 205, 213, 227, 8, 102, 106, 113, 140, 98, 110, 133, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 119, 133, 161, 255, 116, 131, 157, 255, 120, 135, 162, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 166, 178, 200, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 114, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 130, 145, 173, 255, 188, 195, 209, 152, 184, 184, 185, 63, 115, 127, 149, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 123, 138, 166, 255, 103, 116, 139, 255, 82, 93, 112, 255, 75, 84, 100, 255, 73, 82, 98, 255, 91, 103, 124, 255, 122, 136, 164, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 135, 152, 183, 255, 165, 178, 204, 143, 81, 87, 95, 195, 120, 134, 162, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 141, 154, 181, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 73, 80, 240, 108, 121, 145, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 119, 134, 160, 255, 171, 185, 209, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 158, 161, 39, 80, 86, 98, 250, 111, 124, 150, 255, 113, 127, 153, 255, 113, 127, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 111, 125, 151, 255, 97, 106, 123, 255, 126, 131, 141, 189, 160, 165, 173, 169, 136, 141, 148, 177, 84, 89, 96, 255, 72, 81, 97, 255, 114, 128, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 119, 133, 158, 255, 176, 193, 222, 252, 217, 223, 237, 44, 134, 136, 139, 96, 79, 89, 107, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 114, 129, 154, 255, 93, 101, 116, 240, 123, 126, 131, 149, 156, 157, 160, 93, 145, 147, 150, 109, 79, 83, 88, 179, 70, 79, 93, 255, 116, 131, 158, 255, 118, 133, 160, 255, 118, 132, 159, 255, 117, 131, 158, 255, 117, 131, 159, 255, 118, 133, 160, 255, 137, 153, 182, 255, 176, 184, 199, 94, 82, 89, 100, 224, 115, 129, 155, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 119, 134, 161, 255, 95, 106, 127, 255, 80, 87, 98, 249, 69, 74, 83, 225, 71, 77, 88, 255, 89, 100, 120, 255, 120, 135, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 126, 141, 171, 255, 166, 178, 200, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 113, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 127, 141, 169, 255, 184, 189, 198, 190, 162, 164, 170, 63, 107, 117, 137, 255, 98, 110, 133, 255, 97, 109, 131, 255, 96, 108, 130, 255, 95, 107, 129, 255, 95, 106, 128, 255, 98, 110, 132, 255, 113, 121, 134, 255, 160, 166, 178, 255, 165, 173, 189, 211, 156, 163, 177, 241, 100, 107, 120, 255, 91, 102, 123, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 130, 146, 176, 255, 167, 178, 199, 219, 75, 80, 87, 195, 73, 82, 99, 255, 79, 89, 108, 255, 120, 135, 163, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 119, 133, 161, 255, 77, 86, 104, 255, 79, 89, 107, 255, 123, 135, 158, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 73, 80, 240, 108, 121, 145, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 119, 133, 160, 255, 171, 185, 209, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 140, 143, 119, 77, 87, 104, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 121, 136, 164, 255, 128, 143, 171, 255, 134, 149, 177, 255, 132, 146, 173, 255, 126, 140, 166, 255, 117, 130, 155, 255, 92, 103, 124, 255, 112, 126, 152, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 144, 161, 192, 255, 174, 189, 217, 97, 90, 94, 99, 173, 101, 114, 137, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 124, 136, 159, 255, 158, 163, 169, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 210, 211, 8, 86, 90, 95, 190, 70, 78, 91, 255, 81, 89, 103, 255, 88, 96, 109, 255, 88, 95, 106, 244, 81, 89, 101, 204, 98, 104, 115, 204, 115, 121, 131, 204, 159, 163, 169, 174, 80, 88, 102, 255, 119, 134, 160, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 117, 131, 157, 255, 126, 131, 140, 166, 163, 165, 167, 29, 207, 208, 209, 14, 131, 133, 136, 40, 77, 81, 87, 205, 96, 108, 130, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 126, 141, 170, 255, 166, 178, 200, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 113, 255, 122, 137, 165, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 121, 136, 164, 255, 100, 113, 136, 255, 84, 95, 114, 255, 78, 88, 106, 255, 98, 110, 131, 255, 165, 170, 178, 144, 201, 202, 205, 29, 139, 142, 146, 118, 124, 128, 135, 184, 103, 111, 126, 255, 96, 108, 131, 255, 112, 126, 152, 255, 119, 134, 161, 255, 129, 145, 175, 255, 138, 155, 187, 255, 135, 151, 182, 255, 134, 150, 181, 255, 132, 148, 178, 255, 128, 144, 173, 255, 123, 138, 166, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 128, 144, 173, 255, 165, 176, 197, 229, 176, 177, 179, 91, 159, 161, 163, 118, 84, 89, 96, 221, 117, 131, 157, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 134, 150, 181, 255, 130, 135, 143, 160, 159, 161, 163, 118, 178, 181, 185, 78, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 108, 121, 145, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 119, 133, 160, 255, 171, 184, 209, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 97, 101, 130, 86, 96, 116, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 128, 144, 173, 255, 173, 187, 213, 166, 66, 70, 77, 189, 109, 122, 147, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 120, 135, 163, 255, 148, 161, 185, 192, 220, 222, 226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 188, 189, 41, 103, 106, 110, 43, 121, 123, 126, 35, 169, 171, 173, 35, 208, 209, 210, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 90, 94, 47, 78, 86, 102, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 142, 157, 185, 255, 214, 217, 223, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 129, 133, 108, 79, 89, 107, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 141, 170, 255, 166, 178, 199, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 113, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 105, 117, 138, 255, 93, 96, 104, 156, 135, 137, 140, 121, 156, 158, 160, 121, 140, 143, 147, 121, 183, 185, 188, 49, 228, 229, 231, 12, 148, 155, 170, 147, 129, 142, 167, 252, 127, 142, 172, 255, 126, 141, 170, 255, 124, 140, 169, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 128, 144, 173, 255, 165, 176, 197, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 116, 131, 157, 255, 127, 142, 171, 255, 127, 142, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 136, 152, 183, 255, 133, 142, 161, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 108, 120, 145, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 118, 133, 160, 255, 171, 184, 208, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 95, 100, 130, 84, 95, 114, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 114, 128, 153, 255, 114, 128, 153, 255, 114, 127, 154, 255, 113, 127, 154, 255, 113, 128, 154, 255, 120, 135, 163, 255, 156, 171, 200, 169, 93, 96, 102, 255, 112, 125, 151, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 124, 139, 168, 255, 167, 181, 208, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 189, 197, 41, 207, 211, 218, 46, 228, 231, 236, 46, 229, 233, 239, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 114, 117, 47, 76, 83, 98, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 160, 177, 207, 255, 190, 204, 229, 69, 0, 0, 0, 0, 0, 0, 0, 0, 183, 186, 190, 4, 110, 115, 124, 163, 101, 113, 137, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 140, 170, 255, 166, 177, 199, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 113, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 138, 166, 255, 124, 140, 168, 255, 135, 148, 171, 192, 186, 188, 191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 139, 149, 107, 117, 131, 155, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 122, 137, 164, 255, 121, 135, 163, 255, 119, 133, 160, 255, 117, 131, 158, 255, 119, 134, 161, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 128, 143, 173, 255, 166, 176, 197, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 116, 130, 157, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 143, 172, 255, 127, 143, 172, 255, 136, 152, 183, 255, 136, 147, 167, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 107, 120, 145, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 118, 133, 160, 255, 171, 184, 208, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 131, 134, 116, 70, 79, 95, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 154, 255, 107, 120, 144, 255, 91, 99, 113, 255, 93, 101, 114, 255, 92, 100, 113, 255, 91, 99, 112, 255, 90, 97, 110, 255, 83, 90, 103, 255, 79, 87, 99, 255, 80, 87, 99, 255, 84, 90, 102, 255, 82, 89, 100, 255, 81, 87, 98, 255, 79, 85, 95, 255, 79, 85, 96, 255, 145, 153, 167, 224, 67, 71, 77, 186, 105, 118, 142, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 121, 136, 164, 255, 175, 193, 224, 219, 216, 225, 239, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 124, 132, 66, 122, 134, 155, 251, 137, 150, 175, 255, 148, 163, 189, 255, 160, 176, 205, 246, 186, 202, 230, 215, 204, 216, 236, 215, 212, 223, 241, 215, 176, 186, 203, 214, 67, 73, 84, 248, 117, 131, 158, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 137, 151, 176, 255, 182, 198, 224, 237, 176, 193, 223, 176, 157, 172, 199, 138, 146, 157, 179, 219, 114, 127, 152, 255, 119, 134, 162, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 140, 169, 255, 165, 177, 199, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 113, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 152, 165, 189, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 201, 203, 11, 100, 108, 121, 224, 121, 136, 164, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 108, 121, 146, 255, 82, 91, 106, 255, 78, 84, 95, 247, 65, 71, 82, 212, 74, 79, 88, 212, 72, 78, 87, 248, 99, 111, 134, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 128, 143, 173, 255, 166, 177, 198, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 116, 130, 157, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 172, 255, 136, 152, 183, 255, 136, 147, 167, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 107, 120, 145, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 133, 160, 255, 171, 183, 208, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 119, 45, 66, 72, 84, 255, 112, 125, 150, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 158, 171, 193, 255, 185, 196, 215, 207, 207, 211, 217, 66, 209, 210, 211, 43, 210, 211, 212, 46, 185, 189, 194, 119, 126, 136, 153, 233, 126, 139, 163, 255, 134, 147, 170, 255, 157, 170, 194, 255, 179, 192, 213, 255, 196, 206, 221, 255, 210, 218, 230, 255, 207, 215, 228, 255, 200, 209, 223, 194, 110, 112, 116, 160, 83, 93, 112, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 163, 177, 199, 255, 193, 208, 235, 176, 205, 215, 232, 45, 227, 232, 239, 3, 222, 225, 229, 10, 148, 154, 167, 62, 103, 112, 128, 229, 113, 127, 154, 255, 118, 132, 159, 255, 118, 132, 159, 255, 119, 133, 161, 255, 122, 137, 164, 255, 126, 141, 167, 255, 143, 159, 186, 255, 179, 191, 212, 166, 83, 87, 93, 202, 100, 112, 135, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 125, 139, 166, 255, 133, 149, 178, 255, 130, 146, 176, 255, 123, 139, 166, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 125, 140, 169, 255, 165, 177, 199, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 112, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 141, 170, 255, 153, 165, 190, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 157, 160, 65, 87, 97, 114, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 125, 140, 169, 255, 130, 144, 168, 238, 147, 151, 159, 74, 209, 211, 214, 56, 192, 198, 210, 55, 150, 160, 178, 141, 120, 133, 156, 248, 123, 138, 166, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 127, 143, 173, 255, 166, 177, 198, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 116, 130, 156, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 135, 152, 182, 255, 136, 147, 167, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 107, 120, 144, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 133, 159, 255, 171, 183, 208, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 8, 82, 85, 91, 209, 93, 104, 125, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 117, 130, 156, 255, 158, 173, 196, 255, 164, 182, 213, 235, 161, 175, 202, 209, 143, 157, 181, 213, 122, 134, 158, 255, 113, 127, 153, 255, 114, 128, 155, 255, 114, 128, 155, 255, 116, 131, 157, 255, 119, 133, 160, 255, 124, 138, 164, 255, 130, 144, 168, 255, 156, 171, 198, 254, 186, 197, 216, 84, 144, 146, 149, 46, 58, 64, 74, 255, 114, 128, 154, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 119, 133, 159, 255, 155, 169, 193, 255, 166, 184, 214, 255, 156, 172, 203, 212, 144, 159, 185, 221, 125, 138, 164, 255, 116, 131, 157, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 127, 141, 166, 255, 171, 179, 193, 53, 122, 125, 128, 82, 63, 70, 82, 249, 115, 129, 155, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 125, 140, 168, 255, 165, 176, 198, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 93, 112, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 141, 170, 255, 153, 166, 190, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 121, 124, 65, 82, 92, 109, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 140, 168, 255, 162, 177, 203, 255, 169, 187, 218, 231, 157, 174, 204, 233, 146, 161, 190, 255, 129, 145, 175, 255, 125, 141, 169, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 127, 143, 172, 255, 166, 177, 198, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 116, 130, 156, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 135, 152, 182, 255, 136, 147, 166, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 107, 120, 144, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 118, 133, 159, 255, 171, 183, 208, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 138, 142, 82, 58, 64, 75, 249, 105, 118, 142, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 116, 130, 157, 255, 118, 133, 160, 255, 116, 131, 157, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 110, 124, 149, 255, 145, 154, 171, 197, 0, 0, 0, 0, 173, 174, 176, 0, 97, 100, 104, 175, 75, 85, 102, 255, 115, 129, 155, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 117, 132, 159, 255, 120, 135, 162, 255, 119, 133, 160, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 110, 124, 149, 255, 130, 138, 152, 175, 226, 227, 230, 7, 0, 0, 0, 0, 107, 110, 114, 162, 70, 77, 92, 255, 113, 127, 153, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 119, 134, 161, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 125, 140, 168, 255, 164, 176, 198, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 93, 112, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 141, 170, 255, 153, 166, 191, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 190, 192, 56, 72, 79, 91, 252, 121, 136, 164, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 126, 141, 169, 255, 126, 141, 171, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 127, 143, 172, 255, 166, 178, 198, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 116, 130, 156, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 135, 151, 182, 255, 136, 147, 166, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 107, 120, 144, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 118, 133, 159, 255, 171, 183, 207, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 85, 89, 99, 58, 64, 76, 249, 102, 114, 138, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 113, 127, 154, 255, 100, 113, 136, 255, 100, 107, 122, 199, 139, 143, 152, 16, 0, 0, 0, 0, 0, 0, 0, 0, 182, 183, 185, 17, 82, 86, 91, 205, 72, 81, 97, 255, 113, 127, 152, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 116, 131, 158, 255, 102, 115, 138, 255, 114, 120, 133, 221, 194, 196, 200, 36, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 9, 99, 102, 106, 136, 64, 70, 80, 249, 90, 100, 121, 255, 113, 127, 153, 255, 118, 133, 160, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 117, 132, 159, 255, 112, 125, 151, 255, 88, 98, 119, 255, 95, 107, 129, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 124, 139, 168, 255, 164, 176, 198, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 93, 112, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 126, 141, 170, 255, 154, 167, 191, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 87, 93, 195, 95, 107, 128, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 123, 138, 166, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 128, 143, 172, 255, 170, 182, 205, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 115, 130, 156, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 135, 151, 182, 255, 136, 147, 166, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 107, 120, 144, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 118, 132, 159, 255, 170, 183, 207, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 105, 109, 99, 69, 73, 81, 240, 75, 83, 100, 255, 104, 117, 140, 255, 111, 125, 151, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 111, 124, 149, 255, 97, 109, 131, 255, 84, 92, 108, 254, 118, 123, 130, 190, 142, 144, 148, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 18, 98, 100, 105, 167, 63, 70, 81, 255, 89, 100, 120, 255, 112, 126, 151, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 115, 129, 155, 255, 104, 117, 141, 255, 84, 93, 109, 249, 112, 116, 125, 179, 192, 193, 196, 36, 0, 0, 0, 0, 200, 201, 204, 21, 164, 172, 188, 188, 158, 175, 206, 129, 173, 185, 207, 187, 157, 166, 181, 246, 88, 97, 112, 255, 82, 91, 105, 255, 92, 101, 117, 255, 94, 104, 122, 255, 77, 85, 101, 255, 77, 85, 99, 255, 71, 78, 89, 242, 85, 91, 99, 217, 98, 102, 106, 188, 85, 95, 115, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 123, 139, 167, 255, 147, 161, 187, 180, 0, 0, 0, 0, 114, 117, 120, 89, 83, 93, 112, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 126, 141, 170, 255, 154, 167, 191, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 160, 162, 53, 74, 79, 86, 235, 92, 103, 124, 255, 120, 135, 163, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 123, 138, 166, 255, 114, 128, 154, 255, 91, 102, 123, 255, 74, 83, 100, 255, 122, 137, 165, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 169, 255, 127, 143, 172, 255, 159, 175, 206, 241, 187, 195, 210, 37, 0, 0, 0, 0, 80, 85, 93, 192, 115, 130, 156, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 134, 150, 181, 255, 136, 146, 166, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 75, 81, 240, 71, 79, 93, 255, 73, 80, 95, 255, 73, 80, 95, 255, 73, 80, 95, 255, 73, 81, 95, 255, 73, 81, 95, 255, 79, 88, 103, 255, 160, 170, 190, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 171, 173, 27, 93, 96, 100, 138, 75, 79, 86, 228, 62, 69, 79, 250, 72, 81, 97, 255, 83, 93, 112, 255, 90, 101, 122, 255, 93, 105, 126, 255, 91, 102, 123, 255, 85, 96, 115, 255, 79, 88, 106, 255, 76, 84, 98, 255, 78, 84, 94, 235, 97, 100, 107, 166, 158, 160, 162, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 155, 158, 83, 81, 84, 89, 169, 65, 70, 79, 245, 70, 78, 92, 255, 80, 89, 108, 255, 93, 104, 126, 255, 97, 109, 131, 255, 100, 113, 135, 255, 100, 112, 135, 255, 96, 108, 130, 255, 86, 97, 117, 255, 80, 89, 106, 255, 74, 81, 93, 240, 84, 89, 96, 181, 150, 152, 155, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 228, 229, 10, 82, 87, 96, 225, 120, 135, 163, 255, 132, 148, 178, 255, 137, 154, 183, 255, 145, 161, 186, 255, 151, 164, 186, 255, 154, 166, 187, 255, 177, 188, 207, 255, 154, 162, 175, 165, 134, 137, 140, 56, 185, 187, 188, 32, 217, 219, 222, 3, 131, 135, 141, 152, 94, 106, 128, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 123, 139, 167, 255, 142, 154, 177, 162, 0, 0, 0, 0, 120, 122, 126, 89, 62, 69, 81, 255, 77, 86, 101, 255, 77, 86, 101, 255, 77, 86, 101, 255, 77, 86, 101, 255, 77, 86, 101, 255, 80, 89, 105, 255, 139, 150, 168, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 145, 147, 33, 88, 91, 96, 183, 67, 74, 85, 252, 80, 90, 108, 255, 94, 105, 126, 255, 102, 114, 138, 255, 101, 114, 137, 255, 96, 108, 130, 255, 84, 94, 113, 255, 75, 83, 97, 250, 80, 85, 94, 214, 108, 111, 116, 128, 77, 82, 88, 220, 81, 90, 106, 255, 87, 97, 114, 255, 91, 101, 120, 255, 94, 105, 124, 255, 97, 108, 128, 255, 100, 111, 132, 255, 107, 119, 140, 255, 135, 144, 160, 183, 0, 0, 0, 0, 83, 87, 93, 192, 76, 84, 99, 255, 79, 88, 104, 255, 79, 88, 104, 255, 79, 88, 104, 255, 80, 88, 104, 255, 80, 88, 104, 255, 93, 103, 122, 255, 137, 147, 165, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 139, 142, 56, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 166, 170, 176, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 159, 162, 47, 135, 137, 141, 127, 108, 110, 114, 145, 85, 88, 93, 145, 69, 73, 79, 145, 88, 92, 97, 145, 114, 117, 121, 145, 118, 121, 124, 110, 147, 149, 152, 59, 219, 219, 220, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 202, 204, 38, 112, 115, 119, 59, 120, 122, 126, 141, 83, 86, 91, 145, 62, 66, 71, 145, 58, 62, 69, 145, 58, 62, 68, 145, 77, 81, 87, 145, 117, 120, 124, 145, 98, 101, 104, 67, 178, 179, 182, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 83, 88, 150, 91, 102, 123, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 135, 149, 174, 255, 183, 199, 225, 228, 182, 197, 222, 196, 179, 190, 212, 196, 154, 167, 189, 202, 118, 131, 154, 255, 117, 131, 158, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 121, 136, 163, 255, 147, 155, 171, 125, 0, 0, 0, 0, 171, 172, 174, 21, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 148, 151, 155, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 157, 159, 53, 131, 133, 136, 136, 98, 101, 105, 145, 65, 70, 75, 145, 75, 79, 84, 145, 100, 103, 108, 145, 109, 112, 116, 100, 161, 162, 165, 49, 0, 0, 0, 0, 0, 0, 0, 0, 151, 153, 155, 49, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 140, 143, 149, 53, 0, 0, 0, 0, 142, 144, 147, 44, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 118, 121, 124, 59, 162, 166, 173, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 146, 149, 90, 64, 71, 83, 252, 115, 129, 155, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 125, 140, 166, 255, 133, 148, 178, 255, 129, 144, 175, 255, 123, 139, 167, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 119, 134, 161, 255, 116, 127, 147, 251, 197, 200, 206, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 103, 108, 173, 72, 80, 96, 255, 115, 129, 155, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 118, 132, 160, 255, 98, 109, 130, 254, 140, 145, 154, 141, 0, 0, 0, 0, 0, 0, 0, 0, 188, 196, 211, 7, 164, 176, 196, 19, 165, 176, 197, 19, 165, 176, 197, 19, 165, 176, 197, 19, 188, 197, 211, 19, 209, 215, 225, 0, 197, 204, 217, 12, 165, 176, 197, 19, 170, 181, 200, 13, 0, 0, 0, 0, 0, 0, 0, 0, 180, 189, 207, 18, 164, 175, 196, 19, 188, 196, 212, 8, 0, 0, 0, 0, 223, 227, 234, 4, 195, 203, 216, 38, 192, 200, 214, 105, 190, 198, 213, 105, 201, 208, 220, 58, 195, 203, 216, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 178, 197, 15, 165, 176, 197, 19, 165, 176, 197, 19, 165, 176, 197, 19, 167, 178, 198, 19, 204, 210, 222, 17, 0, 0, 0, 0, 179, 188, 206, 8, 164, 175, 196, 19, 167, 178, 198, 11, 0, 0, 0, 0, 0, 0, 0, 0, 185, 194, 210, 14, 202, 208, 220, 81, 201, 208, 220, 105, 195, 203, 216, 43, 202, 208, 220, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 11, 107, 110, 114, 181, 62, 69, 81, 252, 101, 113, 136, 255, 117, 131, 158, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 117, 132, 159, 255, 104, 117, 141, 255, 84, 93, 108, 249, 124, 128, 135, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 177, 197, 89, 137, 152, 178, 255, 137, 152, 179, 255, 138, 153, 179, 255, 138, 152, 179, 255, 143, 157, 182, 255, 153, 166, 189, 108, 180, 190, 207, 162, 137, 152, 179, 255, 145, 159, 184, 182, 0, 0, 0, 0, 0, 0, 0, 0, 158, 170, 192, 238, 137, 151, 178, 255, 168, 179, 199, 106, 162, 173, 194, 4, 152, 165, 188, 158, 138, 153, 179, 255, 131, 146, 175, 255, 131, 147, 175, 255, 135, 150, 177, 255, 151, 164, 187, 180, 195, 202, 216, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 154, 180, 210, 137, 152, 179, 255, 138, 153, 179, 255, 138, 153, 179, 255, 138, 152, 179, 255, 150, 163, 187, 247, 185, 194, 209, 75, 157, 169, 192, 112, 137, 151, 178, 255, 164, 175, 196, 210, 200, 207, 219, 1, 167, 178, 198, 115, 141, 156, 181, 237, 132, 147, 175, 255, 132, 147, 175, 255, 135, 150, 177, 255, 149, 162, 186, 204, 181, 191, 208, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 111, 115, 71, 84, 88, 94, 226, 63, 70, 82, 252, 80, 89, 108, 255, 97, 109, 132, 255, 107, 120, 144, 255, 110, 124, 149, 255, 110, 124, 150, 255, 107, 121, 145, 255, 104, 117, 140, 255, 96, 108, 130, 255, 81, 90, 108, 255, 73, 80, 93, 250, 86, 91, 98, 174, 105, 108, 112, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 172, 193, 89, 127, 143, 172, 255, 153, 165, 188, 255, 149, 162, 186, 70, 166, 177, 197, 158, 127, 143, 172, 255, 150, 163, 187, 255, 176, 186, 204, 169, 127, 143, 172, 255, 137, 152, 179, 182, 0, 0, 0, 0, 0, 0, 0, 0, 151, 164, 187, 238, 127, 143, 172, 255, 162, 174, 195, 106, 159, 171, 193, 128, 128, 144, 173, 255, 141, 155, 181, 233, 177, 186, 204, 79, 185, 193, 210, 70, 145, 159, 184, 191, 157, 169, 191, 242, 192, 200, 215, 86, 228, 232, 238, 7, 229, 232, 238, 13, 229, 232, 238, 13, 230, 233, 239, 2, 131, 147, 175, 210, 127, 143, 172, 255, 142, 156, 182, 109, 148, 161, 186, 70, 148, 161, 186, 188, 127, 143, 172, 255, 154, 166, 189, 170, 150, 163, 187, 112, 127, 143, 172, 255, 165, 176, 196, 233, 190, 198, 213, 83, 133, 149, 176, 255, 132, 147, 175, 248, 153, 165, 189, 93, 181, 190, 207, 70, 140, 154, 180, 169, 127, 143, 172, 255, 148, 161, 186, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 166, 59, 118, 120, 124, 141, 77, 81, 86, 158, 91, 94, 100, 226, 95, 98, 104, 244, 93, 96, 102, 244, 88, 92, 98, 207, 65, 69, 75, 158, 99, 101, 106, 158, 130, 132, 135, 94, 199, 199, 201, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 172, 193, 89, 127, 143, 172, 255, 142, 156, 182, 255, 157, 170, 192, 183, 146, 160, 185, 206, 127, 143, 172, 255, 151, 164, 188, 225, 176, 186, 204, 167, 127, 143, 172, 255, 137, 152, 179, 182, 0, 0, 0, 0, 0, 0, 0, 0, 151, 164, 187, 238, 127, 143, 172, 255, 162, 174, 195, 106, 162, 174, 195, 233, 127, 143, 172, 255, 163, 174, 195, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 174, 195, 193, 156, 168, 191, 255, 158, 170, 192, 255, 164, 176, 196, 43, 131, 147, 175, 210, 127, 143, 172, 255, 145, 158, 183, 221, 137, 152, 178, 183, 138, 152, 179, 240, 128, 144, 173, 255, 161, 172, 194, 138, 150, 163, 187, 112, 127, 143, 172, 255, 165, 176, 196, 233, 159, 171, 193, 139, 127, 143, 172, 255, 154, 167, 189, 206, 0, 0, 0, 0, 0, 0, 0, 0, 197, 204, 217, 64, 127, 143, 172, 255, 132, 147, 175, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 172, 193, 89, 127, 143, 172, 255, 136, 151, 178, 255, 160, 172, 194, 247, 160, 172, 194, 247, 158, 170, 192, 191, 186, 194, 210, 54, 175, 185, 203, 162, 127, 143, 172, 255, 137, 151, 178, 185, 182, 191, 207, 0, 220, 225, 233, 2, 148, 162, 186, 239, 127, 143, 172, 255, 168, 179, 198, 106, 157, 169, 191, 201, 127, 143, 172, 255, 162, 174, 195, 174, 209, 215, 225, 1, 0, 0, 0, 0, 157, 169, 191, 53, 165, 177, 197, 94, 188, 196, 212, 45, 171, 182, 201, 182, 168, 179, 199, 247, 169, 180, 199, 247, 173, 184, 202, 41, 131, 147, 175, 210, 127, 143, 172, 255, 150, 163, 187, 208, 141, 155, 181, 234, 127, 143, 172, 255, 149, 162, 186, 176, 218, 222, 231, 16, 150, 163, 187, 112, 127, 143, 172, 255, 165, 176, 196, 233, 162, 173, 195, 131, 127, 143, 172, 255, 146, 159, 184, 214, 190, 198, 213, 2, 0, 0, 0, 0, 174, 184, 202, 74, 127, 143, 172, 255, 139, 153, 180, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 172, 193, 89, 127, 143, 172, 255, 161, 172, 194, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 196, 212, 101, 130, 146, 174, 255, 132, 147, 175, 255, 160, 172, 194, 181, 163, 175, 195, 198, 130, 146, 174, 255, 135, 150, 177, 254, 183, 192, 208, 46, 172, 182, 201, 86, 133, 149, 176, 254, 134, 149, 176, 255, 161, 172, 194, 186, 160, 172, 193, 177, 132, 148, 176, 245, 134, 149, 177, 254, 184, 193, 209, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 147, 175, 210, 127, 143, 172, 255, 127, 143, 172, 48, 176, 186, 204, 88, 131, 146, 175, 254, 137, 152, 179, 246, 183, 192, 208, 41, 150, 163, 187, 112, 127, 143, 172, 255, 164, 176, 196, 233, 188, 197, 212, 39, 136, 150, 178, 230, 129, 145, 173, 255, 152, 165, 188, 198, 170, 180, 200, 177, 139, 153, 180, 233, 128, 144, 173, 255, 166, 177, 197, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 175, 195, 58, 134, 149, 176, 166, 165, 176, 196, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 185, 203, 132, 155, 167, 190, 220, 151, 164, 188, 252, 152, 165, 188, 252, 151, 164, 188, 201, 173, 183, 202, 95, 0, 0, 0, 0, 0, 0, 0, 0, 182, 191, 208, 93, 148, 161, 186, 186, 152, 165, 188, 252, 153, 166, 189, 252, 157, 170, 192, 206, 172, 182, 201, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 151, 178, 137, 134, 149, 177, 166, 134, 149, 177, 32, 0, 0, 0, 0, 150, 163, 186, 132, 134, 149, 176, 166, 171, 182, 201, 121, 154, 166, 189, 73, 134, 149, 176, 166, 168, 179, 198, 152, 0, 0, 0, 0, 171, 182, 201, 39, 151, 164, 188, 172, 156, 168, 191, 252, 151, 164, 187, 252, 154, 166, 189, 220, 171, 182, 201, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(138, 32, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_Petrobras(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 21, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 4, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 1, 0, 0, 0, 0, 217, 231, 222, 18, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 21, 0, 0, 0, 0, 0, 0, 0, 0, 218, 232, 223, 27, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 205, 185, 9, 56, 160, 112, 55, 65, 165, 120, 95, 61, 164, 118, 91, 86, 170, 129, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 16, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 18, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 7, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 180, 144, 41, 52, 160, 111, 79, 61, 163, 116, 96, 60, 163, 116, 74, 135, 191, 162, 19, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 3, 141, 81, 255, 3, 141, 81, 255, 3, 141, 81, 255, 3, 141, 81, 255, 3, 141, 81, 255, 164, 212, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 242, 236, 255, 119, 191, 159, 255, 4, 142, 82, 255, 3, 141, 81, 255, 3, 141, 81, 255, 22, 149, 93, 255, 251, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 254, 255, 206, 231, 219, 255, 49, 161, 112, 255, 3, 141, 81, 255, 3, 141, 81, 255, 3, 141, 81, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 146, 90, 224, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 7, 142, 83, 252, 20, 147, 91, 221, 36, 152, 99, 118, 192, 219, 204, 6, 0, 0, 0, 0, 0, 0, 0, 0, 52, 159, 111, 91, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 16, 146, 89, 246, 153, 200, 175, 8, 0, 0, 0, 0, 21, 148, 91, 202, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 27, 150, 95, 177, 0, 0, 0, 0, 110, 180, 145, 23, 9, 143, 85, 252, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 3, 141, 81, 255, 6, 142, 82, 251, 22, 148, 93, 235, 21, 147, 91, 158, 100, 177, 139, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 171, 130, 22, 28, 149, 95, 148, 11, 144, 86, 242, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 23, 148, 92, 203, 84, 172, 131, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 148, 91, 203, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 3, 141, 81, 252, 19, 147, 90, 239, 25, 149, 93, 168, 82, 171, 129, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 148, 93, 214, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 2, 141, 80, 252, 17, 146, 89, 242, 26, 149, 94, 189, 57, 160, 113, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 150, 96, 161, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 36, 154, 102, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 204, 185, 1, 51, 159, 109, 94, 21, 147, 91, 219, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 9, 143, 84, 245, 43, 156, 105, 111, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 255, 232, 244, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 178, 138, 255, 0, 140, 79, 255, 0, 140, 79, 255, 88, 178, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 237, 228, 255, 3, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 166, 122, 43, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 37, 153, 100, 114, 0, 0, 0, 0, 0, 0, 0, 0, 29, 151, 96, 164, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 149, 93, 181, 0, 0, 0, 0, 113, 182, 148, 22, 6, 142, 82, 253, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 40, 154, 102, 104, 0, 0, 0, 0, 48, 158, 108, 93, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 148, 93, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 162, 116, 66, 11, 144, 85, 233, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 19, 147, 90, 224, 143, 191, 164, 9, 0, 0, 0, 0, 0, 0, 0, 0, 115, 182, 148, 25, 5, 141, 82, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 90, 164, 0, 0, 0, 0, 0, 0, 0, 0, 111, 181, 146, 32, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 16, 146, 89, 233, 222, 234, 226, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 160, 112, 72, 2, 141, 80, 253, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 13, 144, 86, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 151, 98, 136, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 142, 82, 253, 80, 170, 127, 41,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 54, 163, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 254, 255, 76, 172, 130, 255, 56, 164, 116, 255, 56, 164, 117, 255, 165, 213, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 146, 206, 180, 255, 0, 140, 79, 255, 0, 140, 79, 255, 162, 212, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 222, 205, 255, 56, 164, 116, 255, 56, 164, 116, 255, 76, 173, 130, 255, 234, 245, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 32, 153, 100, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 152, 99, 117, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 84, 185, 16, 146, 89, 173, 14, 145, 87, 223, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 27, 149, 95, 183, 0, 0, 0, 0, 180, 208, 190, 4, 17, 146, 89, 233, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 83, 239, 0, 140, 79, 160, 0, 140, 79, 160, 0, 140, 79, 160, 0, 140, 79, 160, 0, 140, 79, 160, 32, 151, 98, 76, 0, 0, 0, 0, 65, 163, 117, 95, 13, 144, 86, 255, 13, 144, 86, 255, 11, 143, 85, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 142, 82, 255, 13, 144, 86, 255, 13, 144, 86, 255, 16, 145, 87, 253, 95, 174, 136, 31, 0, 0, 0, 0, 29, 151, 97, 168, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 7, 143, 83, 169, 0, 140, 79, 160, 18, 147, 90, 214, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 149, 93, 191, 0, 0, 0, 0, 0, 0, 0, 0, 66, 163, 117, 53, 8, 142, 83, 244, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 83, 245, 23, 148, 93, 155, 25, 148, 93, 145, 9, 143, 85, 248, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 46, 157, 106, 84, 0, 0, 0, 0, 0, 0, 0, 0, 43, 155, 104, 94, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 83, 194, 0, 140, 79, 160, 24, 149, 94, 205, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 178, 0, 0, 0, 0, 0, 0, 0, 0, 43, 156, 105, 104, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 191, 0, 140, 79, 160, 23, 149, 93, 194, 2, 140, 80, 254, 0, 140, 79, 255, 0, 140, 79, 255, 10, 144, 85, 249, 217, 231, 222, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 173, 134, 11, 13, 145, 87, 222, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 29, 151, 97, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 157, 107, 55, 2, 141, 80, 254, 0, 140, 79, 255, 0, 140, 79, 255, 26, 149, 94, 168, 46, 155, 104, 94, 16, 145, 88, 176, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 50, 156, 107, 88,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 128, 196, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 236, 226, 255, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 126, 195, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 192, 160, 255, 0, 140, 79, 255, 4, 142, 82, 255, 232, 243, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 102, 185, 148, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 204, 230, 218, 255, 255, 255, 255, 255, 251, 253, 252, 255, 17, 146, 89, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 147, 91, 190, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 254, 113, 181, 146, 24, 0, 0, 0, 0, 101, 174, 137, 28, 4, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 31, 152, 98, 161, 0, 0, 0, 0, 81, 170, 128, 54, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 27, 150, 95, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 189, 162, 3, 117, 174, 140, 5, 117, 174, 140, 5, 59, 161, 114, 89, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 35, 153, 100, 131, 117, 174, 140, 5, 117, 174, 140, 5, 117, 174, 140, 5, 0, 0, 0, 0, 185, 211, 194, 2, 15, 145, 88, 234, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 88, 222, 207, 224, 213, 0, 0, 0, 0, 0, 116, 183, 149, 25, 2, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 26, 149, 94, 124, 0, 0, 0, 0, 167, 205, 184, 8, 16, 146, 88, 215, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 84, 246, 65, 165, 119, 55, 0, 0, 0, 0, 0, 0, 0, 0, 31, 151, 97, 131, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 46, 158, 108, 129, 0, 0, 0, 0, 0, 0, 0, 0, 23, 148, 92, 166, 0, 140, 79, 255, 0, 140, 79, 255, 2, 140, 80, 255, 73, 166, 123, 45, 0, 0, 0, 0, 68, 165, 119, 42, 1, 140, 80, 255, 0, 140, 79, 255, 1, 140, 79, 255, 49, 157, 107, 91, 0, 0, 0, 0, 0, 0, 0, 0, 24, 149, 94, 177, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 89, 172, 132, 35, 0, 0, 0, 0, 0, 0, 0, 0, 24, 149, 93, 219, 0, 140, 79, 255, 0, 140, 79, 255, 19, 147, 90, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 153, 100, 146, 0, 140, 79, 255, 0, 140, 79, 255, 19, 147, 91, 248, 0, 140, 79, 255, 0, 140, 79, 255, 15, 146, 88, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 150, 96, 151, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 35, 152, 99, 137, 112, 181, 146, 21, 47, 154, 104, 23, 0, 140, 79, 72, 0, 140, 79, 72, 0, 140, 79, 72, 59, 161, 114, 25,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 201, 229, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 245, 240, 255, 194, 226, 211, 255, 194, 226, 211, 255, 203, 230, 217, 255, 252, 253, 253, 255, 255, 255, 255, 255, 224, 240, 232, 255, 20, 148, 92, 255, 0, 140, 79, 255, 55, 163, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 185, 148, 255, 72, 172, 129, 255, 78, 174, 132, 255, 153, 207, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 163, 212, 190, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 185, 154, 13, 8, 143, 84, 249, 0, 140, 79, 255, 0, 140, 79, 255, 18, 147, 90, 205, 0, 0, 0, 0, 135, 191, 163, 3, 37, 152, 99, 132, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 47, 156, 106, 75, 0, 0, 0, 0, 29, 150, 96, 122, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 87, 229, 19, 146, 89, 205, 19, 146, 89, 205, 19, 146, 89, 205, 33, 151, 97, 197, 180, 208, 190, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 151, 98, 158, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 77, 168, 125, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 164, 119, 54, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 21, 147, 91, 171, 0, 140, 79, 39, 53, 160, 112, 59, 33, 152, 98, 172, 0, 140, 79, 255, 0, 140, 79, 255, 12, 144, 86, 232, 78, 166, 123, 19, 0, 0, 0, 0, 41, 154, 102, 95, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 150, 96, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 154, 103, 108, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 41, 155, 104, 116, 0, 0, 0, 0, 158, 201, 178, 1, 16, 146, 88, 238, 0, 140, 79, 255, 0, 140, 79, 255, 8, 142, 83, 250, 31, 149, 96, 141, 22, 147, 91, 142, 13, 144, 86, 223, 0, 140, 79, 255, 1, 140, 79, 254, 31, 150, 96, 145, 173, 204, 185, 1, 0, 0, 0, 0, 135, 192, 163, 7, 14, 145, 87, 243, 0, 140, 79, 255, 0, 140, 79, 255, 13, 145, 87, 227, 3, 141, 81, 39, 40, 156, 105, 48, 33, 151, 97, 117, 4, 141, 81, 254, 0, 140, 79, 255, 6, 142, 82, 254, 54, 159, 111, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 159, 111, 54, 4, 141, 81, 252, 0, 140, 79, 255, 7, 142, 83, 246, 54, 162, 113, 139, 0, 140, 79, 255, 0, 140, 79, 255, 21, 148, 92, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 154, 101, 178, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 83, 251, 22, 148, 92, 204, 36, 153, 100, 123, 112, 182, 147, 19, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 149, 94, 255, 252, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 252, 255, 57, 163, 116, 255, 0, 140, 79, 255, 0, 140, 79, 255, 129, 197, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 219, 200, 255, 13, 145, 87, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 155, 104, 80, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 245, 0, 140, 79, 227, 8, 143, 84, 241, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 149, 93, 195, 147, 189, 163, 2, 0, 0, 0, 0, 17, 146, 89, 194, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 211, 194, 1, 16, 146, 88, 224, 0, 140, 79, 255, 0, 140, 79, 255, 16, 146, 88, 236, 127, 187, 156, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 151, 97, 126, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 19, 147, 90, 199, 79, 170, 128, 49, 0, 0, 0, 0, 0, 0, 0, 0, 20, 147, 90, 186, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 255, 107, 178, 142, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 152, 98, 157, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 70, 166, 121, 63, 0, 0, 0, 0, 75, 168, 124, 59, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 18, 146, 89, 229, 91, 173, 133, 40, 0, 0, 0, 0, 0, 0, 0, 0, 60, 162, 115, 65, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 14, 145, 88, 227, 53, 159, 110, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 194, 167, 7, 18, 146, 90, 212, 0, 140, 79, 255, 0, 140, 79, 255, 28, 149, 95, 131, 0, 140, 79, 83, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 248, 208, 225, 214, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 162, 115, 81, 7, 142, 83, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 88, 231, 88, 171, 131, 30, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 95, 181, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 250, 247, 255, 122, 192, 160, 255, 122, 192, 160, 255, 127, 196, 165, 255, 226, 241, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 224, 209, 255, 0, 140, 79, 255, 0, 140, 79, 255, 203, 230, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 251, 249, 255, 239, 248, 244, 255, 245, 250, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 248, 245, 255, 62, 166, 120, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 149, 94, 154, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 195, 58, 155, 107, 17, 0, 0, 0, 0, 117, 183, 150, 18, 7, 143, 83, 251, 0, 140, 79, 255, 0, 140, 79, 255, 11, 144, 86, 250, 24, 149, 94, 239, 24, 149, 94, 239, 24, 149, 94, 239, 24, 149, 94, 239, 50, 158, 108, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 167, 124, 43, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 148, 93, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 147, 90, 198, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 149, 94, 201, 139, 193, 165, 13, 0, 0, 0, 0, 196, 218, 204, 5, 14, 145, 87, 243, 0, 140, 79, 255, 0, 140, 79, 255, 18, 146, 90, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 189, 158, 8, 12, 144, 86, 230, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 87, 226, 198, 218, 205, 5, 0, 0, 0, 0, 33, 152, 99, 132, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 36, 155, 102, 193, 42, 157, 106, 173, 24, 148, 93, 181, 3, 141, 80, 252, 0, 140, 79, 255, 0, 140, 79, 255, 21, 147, 91, 164, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 95, 138, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 88, 232, 56, 159, 111, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 150, 96, 123, 0, 140, 79, 255, 0, 140, 79, 255, 10, 143, 84, 229, 128, 189, 158, 16, 0, 140, 79, 83, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 255, 112, 177, 142, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 166, 122, 58, 26, 150, 95, 169, 15, 145, 88, 240, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 42, 157, 106, 124, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 169, 214, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 220, 202, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 133, 199, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 248, 245, 255, 5, 141, 82, 255, 24, 150, 95, 255, 252, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 70, 170, 126, 255, 0, 140, 79, 255, 7, 142, 83, 255, 164, 212, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 211, 189, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 221, 209, 2, 15, 145, 88, 225, 0, 140, 79, 255, 0, 140, 79, 255, 9, 143, 84, 249, 26, 150, 95, 218, 26, 150, 95, 218, 20, 148, 91, 200, 27, 150, 95, 162, 57, 161, 113, 84, 117, 174, 140, 2, 0, 0, 0, 0, 0, 0, 0, 0, 49, 157, 108, 87, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 38, 154, 102, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 151, 97, 116, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 44, 155, 105, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 179, 144, 18, 8, 143, 83, 253, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 211, 61, 166, 119, 118, 49, 159, 110, 122, 14, 145, 87, 227, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 28, 148, 93, 49, 0, 0, 0, 0, 131, 181, 151, 15, 9, 143, 84, 255, 0, 140, 79, 255, 0, 140, 79, 255, 21, 147, 91, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 155, 103, 130, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 46, 157, 106, 112, 0, 0, 0, 0, 0, 0, 0, 0, 22, 148, 92, 204, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 250, 135, 191, 162, 17, 0, 0, 0, 0, 147, 189, 163, 0, 16, 145, 88, 227, 0, 140, 79, 255, 0, 140, 79, 255, 17, 146, 89, 169, 0, 0, 0, 0, 0, 0, 0, 0, 18, 146, 90, 210, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 83, 245, 61, 165, 119, 118, 56, 162, 115, 118, 18, 146, 90, 192, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 46, 158, 108, 130, 0, 0, 0, 0, 0, 0, 0, 0, 79, 170, 128, 47, 8, 143, 83, 249, 0, 140, 79, 255, 0, 140, 79, 255, 27, 151, 96, 222, 42, 158, 107, 171, 25, 150, 95, 198, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 115, 186, 153, 46, 0, 0, 0, 0, 163, 206, 184, 8, 81, 170, 129, 71, 81, 170, 129, 71, 81, 170, 129, 71, 98, 177, 140, 40, 179, 208, 190, 6, 62, 162, 115, 55, 23, 149, 93, 194, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 154, 101, 102, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 255, 236, 246, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 198, 169, 255, 41, 156, 105, 255, 42, 157, 106, 255, 75, 172, 129, 255, 229, 242, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 237, 227, 255, 0, 140, 79, 255, 97, 182, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 249, 247, 255, 10, 144, 85, 255, 0, 140, 79, 255, 0, 140, 79, 255, 111, 190, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 217, 197, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 167, 123, 45, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 149, 94, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 149, 94, 160, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 52, 160, 112, 160, 57, 164, 117, 126, 57, 164, 117, 126, 57, 164, 117, 126, 57, 164, 117, 126, 67, 168, 123, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 146, 89, 188, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 251, 118, 184, 150, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 158, 109, 91, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 155, 103, 123, 0, 0, 0, 0, 0, 0, 0, 0, 32, 152, 98, 162, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 253, 114, 181, 147, 27, 0, 0, 0, 0, 185, 211, 194, 8, 14, 145, 87, 246, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 33, 151, 98, 120, 48, 156, 106, 65, 34, 152, 99, 148, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 148, 93, 194, 153, 197, 171, 4, 0, 0, 0, 0, 114, 181, 147, 24, 7, 142, 83, 253, 0, 140, 79, 255, 0, 140, 79, 255, 20, 148, 91, 234, 57, 164, 117, 126, 55, 163, 115, 126, 23, 148, 92, 171, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 48, 158, 108, 100, 0, 0, 0, 0, 106, 178, 141, 30, 3, 141, 81, 253, 0, 140, 79, 255, 0, 140, 79, 255, 22, 148, 92, 184, 0, 0, 0, 0, 0, 0, 0, 0, 32, 152, 99, 89, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 46, 157, 106, 93, 0, 0, 0, 0, 211, 228, 218, 4, 19, 146, 89, 197, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 48, 154, 104, 53, 0, 0, 0, 0, 107, 176, 140, 44, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 21, 148, 92, 207, 100, 175, 137, 36, 96, 175, 136, 41, 23, 148, 93, 183, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 243, 93, 173, 134, 22, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 61, 166, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 188, 153, 255, 0, 140, 79, 255, 170, 215, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 220, 203, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 105, 186, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 221, 203, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 151, 97, 117, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 43, 155, 105, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 194, 168, 2, 16, 146, 88, 231, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 28, 150, 96, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 180, 145, 13, 9, 143, 84, 249, 0, 140, 79, 255, 0, 140, 79, 255, 21, 148, 92, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 150, 95, 164, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 81, 169, 127, 49, 0, 0, 0, 0, 0, 0, 0, 0, 20, 147, 91, 217, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 96, 172, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 203, 85, 168, 128, 18, 0, 0, 0, 0, 0, 0, 0, 0, 49, 158, 109, 96, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 28, 150, 95, 198, 107, 173, 136, 3, 0, 0, 0, 0, 38, 153, 101, 100, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 154, 102, 112, 0, 0, 0, 0, 0, 0, 0, 0, 25, 149, 94, 149, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 254, 115, 183, 150, 26, 0, 0, 0, 0, 46, 157, 107, 113, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 80, 253, 0, 140, 79, 207, 0, 140, 79, 207, 0, 140, 79, 207, 0, 140, 79, 223, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 70, 167, 123, 85, 0, 0, 0, 0, 156, 202, 179, 17, 13, 145, 87, 246, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 80, 255, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 255, 53, 160, 111, 108, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 135, 200, 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 245, 240, 255, 114, 189, 155, 255, 1, 140, 80, 255, 6, 142, 83, 255, 238, 246, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 110, 188, 153, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 99, 183, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 226, 212, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 146, 90, 190, 0, 140, 79, 255, 0, 140, 79, 255, 5, 141, 81, 251, 116, 183, 149, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 169, 127, 50, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 49, 158, 108, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 157, 108, 81, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 33, 152, 99, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 218, 204, 5, 15, 145, 88, 232, 0, 140, 79, 255, 0, 140, 79, 255, 19, 147, 91, 235, 0, 0, 0, 0, 0, 0, 0, 0, 159, 197, 174, 17, 5, 141, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 148, 93, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 160, 114, 22, 16, 145, 88, 206, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 10, 143, 85, 247, 38, 154, 102, 140, 102, 173, 136, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 149, 93, 165, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 14, 145, 87, 242, 36, 153, 101, 146, 99, 173, 134, 11, 0, 0, 0, 0, 0, 0, 0, 0, 22, 148, 92, 173, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 255, 98, 177, 139, 39, 0, 0, 0, 0, 0, 0, 0, 0, 19, 147, 91, 209, 0, 140, 79, 255, 0, 140, 79, 255, 19, 147, 90, 226, 227, 237, 231, 4, 75, 167, 123, 31, 8, 143, 83, 241, 0, 140, 79, 255, 0, 140, 79, 255, 27, 149, 95, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 79, 83, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 35, 153, 100, 96, 0, 0, 0, 0, 0, 0, 0, 0, 52, 160, 111, 101, 5, 142, 82, 249, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 146, 89, 231, 47, 156, 106, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 41, 158, 106, 255, 59, 165, 119, 255, 59, 165, 119, 255, 59, 165, 119, 255, 59, 165, 119, 255, 59, 165, 119, 255, 59, 165, 119, 255, 55, 163, 116, 255, 36, 155, 102, 255, 4, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 84, 255, 59, 165, 119, 255, 59, 165, 119, 255, 59, 165, 119, 255, 15, 146, 89, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 32, 153, 99, 255, 86, 177, 137, 255, 86, 177, 137, 255, 68, 169, 124, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 173, 132, 87, 75, 171, 128, 97, 75, 171, 128, 97, 86, 175, 135, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 189, 156, 40, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 124, 190, 157, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 178, 139, 47, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 81, 170, 127, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 179, 143, 6, 77, 172, 129, 97, 75, 171, 128, 97, 75, 171, 128, 97, 80, 172, 130, 66, 0, 0, 0, 0, 0, 0, 0, 0, 99, 177, 138, 12, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 88, 176, 136, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 207, 187, 7, 57, 161, 113, 87, 29, 151, 97, 143, 35, 153, 101, 163, 27, 150, 95, 145, 42, 155, 104, 96, 124, 186, 154, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 177, 138, 81, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 49, 159, 110, 78, 86, 171, 130, 51, 202, 222, 210, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 178, 139, 85, 75, 171, 128, 97, 75, 171, 128, 97, 83, 174, 133, 91, 227, 237, 231, 1, 0, 0, 0, 0, 0, 0, 0, 0, 88, 177, 137, 87, 75, 171, 128, 97, 75, 171, 128, 97, 80, 173, 131, 96, 0, 0, 0, 0, 101, 182, 145, 47, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 80, 169, 126, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 171, 128, 32, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 102, 183, 146, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 160, 113, 32, 31, 151, 97, 121, 38, 154, 103, 163, 38, 155, 103, 163, 26, 149, 94, 127, 55, 159, 110, 72, 148, 191, 164, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(158, 32, imgdata);
+ return image;
+}
+
diff --git a/iup/srcimglib/iup_imglib_icons8.h b/iup/srcimglib/iup_imglib_icons8.h
new file mode 100755
index 0000000..b4e7b15
--- /dev/null
+++ b/iup/srcimglib/iup_imglib_icons8.h
@@ -0,0 +1,1788 @@
+static Ihandle* load_image_Petrobras8(void)
+{
+ unsigned char imgdata[] = {
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 61, 60, 61, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 60, 61, 60, 61, 60, 61, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 61, 61, 61, 61, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 61, 61, 61, 61, 61, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 61, 60, 61, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 60, 61, 60, 61, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 61, 61, 61, 61, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 61, 61, 61, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 61, 60, 61, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 60, 61, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 61, 60, 61, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 89, 89, 89, 89, 93, 102, 121, 123, 121, 123, 117, 95, 93, 89, 89, 89, 89, 89, 116, 122, 122, 123, 122, 116, 93, 89, 89, 89, 89, 89, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 76, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 108, 84, 79, 92, 255, 255, 255, 255,
+ 124, 5, 2, 5, 5, 2, 50, 123, 123, 122, 123, 122, 122, 89, 52, 2, 5, 1, 11, 110, 121, 123, 121, 121, 121, 115, 74, 25, 5, 2, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 20, 19, 22, 19, 21, 18, 31, 53, 105, 255, 255, 255, 25, 20, 23, 18, 23, 20, 19, 20, 23, 94, 255, 64, 18, 23, 18, 23, 18, 21, 18, 23, 20, 56, 255, 111, 22, 19, 20, 19, 20, 19, 23, 40, 65, 255, 255, 255, 255, 255, 97, 52, 20, 4, 2, 5, 18, 68, 255, 255, 255, 255, 88, 23, 21, 18, 22, 18, 20, 24, 46, 89, 255, 255, 255, 71, 19, 20, 19, 20, 19, 20, 26, 49, 87, 255, 255, 255, 255, 255, 255, 66, 18, 22, 19, 64, 255, 255, 255, 255, 255, 255, 72, 36, 5, 5, 2, 5, 29, 96, 255, 255,
+ 124, 5, 4, 2, 4, 5, 66, 122, 121, 120, 122, 118, 122, 122, 123, 48, 5, 4, 42, 123, 121, 118, 119, 122, 122, 122, 118, 75, 4, 4, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 5, 2, 4, 1, 4, 5, 5, 5, 32, 255, 255, 81, 5, 5, 2, 4, 2, 4, 5, 4, 25, 255, 255, 27, 2, 4, 2, 5, 2, 4, 2, 4, 5, 68, 255, 66, 5, 5, 5, 4, 5, 5, 1, 5, 5, 66, 255, 255, 255, 79, 17, 5, 5, 4, 5, 4, 5, 5, 68, 255, 255, 255, 56, 4, 5, 2, 5, 5, 5, 5, 5, 17, 113, 255, 255, 38, 5, 5, 4, 5, 4, 5, 5, 5, 18, 109, 255, 255, 255, 255, 93, 10, 5, 2, 5, 53, 255, 255, 255, 255, 255, 55, 5, 4, 2, 4, 5, 5, 2, 29, 255, 255,
+ 124, 5, 5, 5, 5, 2, 102, 123, 123, 45, 21, 21, 64, 123, 121, 66, 5, 2, 64, 122, 123, 69, 23, 20, 36, 98, 122, 108, 2, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, 5, 4, 24, 53, 42, 2, 5, 4, 2, 115, 255, 57, 5, 1, 5, 44, 53, 52, 53, 52, 81, 255, 94, 4, 5, 5, 5, 4, 5, 5, 5, 5, 5, 99, 255, 53, 5, 4, 8, 51, 53, 25, 5, 5, 1, 56, 255, 255, 78, 5, 2, 5, 25, 53, 41, 4, 2, 4, 27, 255, 255, 255, 36, 5, 5, 17, 52, 48, 18, 2, 5, 5, 255, 255, 108, 10, 4, 2, 25, 51, 50, 8, 5, 1, 5, 97, 255, 255, 255, 255, 32, 5, 2, 5, 5, 45, 255, 255, 255, 255, 84, 5, 1, 5, 53, 66, 30, 5, 5, 5, 255, 255,
+ 124, 4, 5, 1, 5, 38, 118, 118, 110, 10, 4, 2, 49, 118, 122, 56, 5, 4, 93, 123, 122, 45, 1, 5, 2, 88, 118, 89, 5, 2, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 4, 2, 5, 57, 255, 255, 50, 2, 5, 13, 255, 255, 36, 5, 5, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 2, 5, 2, 55, 255, 255, 255, 255, 255, 15, 5, 5, 38, 255, 255, 80, 1, 5, 5, 78, 255, 98, 17, 5, 4, 30, 113, 255, 255, 27, 5, 5, 4, 255, 255, 102, 5, 5, 5, 54, 255, 255, 44, 4, 5, 42, 255, 255, 71, 5, 2, 5, 70, 255, 255, 53, 5, 5, 25, 255, 255, 255, 255, 66, 2, 1, 7, 5, 5, 39, 255, 255, 255, 255, 52, 5, 5, 5, 74, 255, 94, 72, 72, 72, 255, 255,
+ 124, 5, 2, 5, 5, 58, 122, 122, 105, 75, 77, 82, 111, 122, 96, 14, 5, 29, 117, 122, 123, 57, 52, 53, 77, 122, 122, 47, 4, 4, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 2, 5, 4, 79, 255, 101, 23, 5, 5, 48, 255, 103, 4, 5, 2, 18, 45, 45, 45, 45, 107, 255, 255, 255, 255, 255, 63, 5, 4, 5, 79, 255, 255, 255, 255, 89, 2, 5, 4, 45, 93, 83, 34, 5, 5, 31, 255, 255, 56, 5, 5, 5, 89, 255, 255, 255, 42, 5, 4, 8, 255, 255, 70, 5, 2, 5, 31, 59, 50, 1, 4, 29, 101, 255, 255, 53, 5, 4, 5, 72, 91, 74, 24, 5, 5, 71, 255, 255, 255, 101, 14, 5, 11, 48, 2, 5, 21, 255, 255, 255, 255, 48, 5, 5, 2, 5, 16, 45, 76, 255, 255, 255, 255,
+ 124, 5, 5, 4, 5, 86, 118, 121, 122, 122, 122, 123, 118, 117, 39, 5, 5, 54, 122, 123, 122, 121, 122, 123, 121, 110, 48, 5, 2, 5, 2, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 45, 5, 5, 5, 18, 19, 6, 2, 5, 11, 93, 255, 68, 1, 5, 5, 4, 5, 1, 5, 20, 255, 255, 255, 255, 255, 255, 43, 5, 5, 16, 255, 255, 255, 255, 255, 59, 4, 5, 5, 5, 1, 5, 4, 11, 50, 101, 255, 255, 15, 1, 5, 36, 255, 255, 255, 255, 18, 2, 5, 37, 255, 255, 49, 4, 5, 4, 2, 4, 5, 2, 5, 68, 255, 255, 255, 21, 5, 2, 5, 4, 5, 5, 5, 19, 68, 255, 255, 255, 255, 36, 5, 5, 57, 72, 5, 1, 17, 255, 255, 255, 255, 79, 4, 5, 4, 5, 4, 5, 5, 36, 255, 255, 255,
+ 124, 5, 1, 5, 19, 116, 122, 119, 54, 52, 50, 85, 122, 122, 86, 4, 5, 76, 121, 118, 101, 88, 95, 122, 123, 96, 25, 5, 4, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 8, 4, 5, 4, 5, 5, 4, 5, 18, 87, 255, 255, 52, 5, 5, 2, 18, 23, 23, 20, 59, 255, 255, 255, 255, 255, 112, 8, 4, 5, 45, 255, 255, 255, 255, 255, 39, 2, 5, 1, 5, 5, 5, 2, 1, 52, 255, 255, 93, 5, 5, 5, 54, 255, 255, 255, 79, 5, 5, 4, 63, 255, 255, 18, 5, 2, 28, 56, 53, 25, 5, 4, 12, 255, 255, 88, 5, 4, 5, 5, 2, 5, 1, 5, 17, 85, 255, 255, 255, 74, 5, 5, 21, 255, 72, 5, 4, 2, 255, 255, 255, 255, 255, 89, 49, 19, 5, 5, 2, 4, 2, 84, 255, 255,
+ 124, 5, 5, 5, 52, 121, 123, 87, 1, 5, 5, 50, 121, 122, 118, 5, 8, 111, 122, 121, 33, 2, 5, 64, 118, 121, 56, 5, 5, 2, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 5, 5, 2, 32, 48, 45, 53, 64, 105, 255, 255, 255, 17, 2, 5, 39, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 2, 5, 5, 66, 255, 255, 255, 255, 111, 6, 4, 4, 35, 66, 63, 24, 5, 5, 5, 255, 255, 76, 5, 1, 5, 56, 255, 255, 111, 31, 5, 5, 24, 111, 255, 83, 5, 2, 4, 58, 255, 255, 62, 5, 5, 9, 115, 255, 63, 5, 1, 5, 48, 65, 45, 5, 5, 5, 53, 255, 255, 102, 21, 5, 2, 24, 52, 32, 2, 1, 5, 102, 255, 111, 78, 76, 76, 100, 255, 86, 29, 5, 2, 5, 104, 255, 255,
+ 124, 5, 1, 5, 67, 123, 121, 84, 45, 45, 49, 93, 118, 119, 93, 1, 46, 122, 117, 97, 5, 4, 5, 54, 122, 122, 58, 4, 2, 4, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 5, 4, 5, 96, 255, 255, 255, 255, 255, 255, 255, 85, 4, 2, 4, 31, 66, 64, 66, 64, 66, 255, 255, 255, 255, 255, 55, 4, 5, 2, 96, 255, 255, 255, 255, 71, 4, 2, 6, 69, 255, 255, 48, 5, 5, 23, 255, 255, 95, 2, 5, 5, 21, 66, 70, 32, 2, 5, 4, 80, 255, 255, 57, 5, 5, 5, 41, 66, 56, 21, 5, 4, 41, 255, 255, 42, 5, 5, 18, 255, 255, 101, 2, 4, 4, 58, 255, 255, 43, 5, 5, 5, 5, 5, 5, 5, 5, 5, 89, 255, 88, 3, 5, 5, 38, 88, 82, 29, 5, 5, 39, 255, 255, 255,
+ 124, 5, 5, 8, 108, 122, 123, 123, 123, 123, 123, 122, 122, 117, 44, 5, 63, 123, 121, 64, 5, 2, 5, 54, 117, 122, 64, 5, 5, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 27, 5, 5, 27, 255, 255, 255, 255, 255, 255, 255, 255, 56, 5, 4, 5, 1, 5, 4, 2, 4, 35, 255, 255, 255, 255, 255, 28, 2, 5, 36, 255, 255, 255, 255, 255, 53, 2, 5, 4, 103, 255, 255, 17, 1, 5, 52, 255, 255, 255, 29, 5, 4, 2, 5, 2, 5, 5, 14, 71, 255, 255, 255, 37, 4, 1, 5, 1, 5, 2, 4, 5, 18, 93, 255, 108, 10, 2, 5, 45, 255, 255, 71, 5, 2, 5, 84, 255, 79, 5, 5, 4, 42, 45, 48, 29, 5, 1, 5, 76, 255, 108, 10, 4, 5, 1, 5, 4, 5, 4, 18, 93, 255, 255, 255,
+ 124, 5, 4, 36, 122, 121, 122, 122, 122, 121, 122, 104, 78, 36, 4, 1, 97, 122, 122, 50, 5, 4, 5, 49, 122, 123, 66, 5, 1, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 1, 4, 5, 56, 255, 255, 255, 255, 255, 255, 255, 255, 36, 5, 5, 5, 5, 5, 5, 5, 5, 56, 255, 255, 255, 255, 90, 5, 5, 4, 57, 255, 255, 255, 255, 255, 23, 5, 4, 36, 255, 255, 93, 4, 5, 6, 63, 255, 255, 255, 96, 25, 5, 5, 5, 5, 5, 34, 88, 255, 255, 255, 110, 1, 5, 5, 5, 5, 5, 4, 11, 49, 96, 255, 255, 74, 5, 5, 5, 66, 255, 255, 55, 5, 4, 2, 107, 112, 25, 4, 5, 42, 255, 255, 255, 73, 5, 5, 5, 66, 255, 255, 84, 11, 4, 5, 5, 2, 5, 39, 97, 255, 255, 255, 255,
+ 124, 5, 2, 5, 5, 5, 5, 2, 5, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 11, 19, 23, 14, 5, 5, 4, 2, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 76, 77, 78, 101, 255, 255, 255, 255, 255, 255, 255, 255, 78, 77, 78, 77, 76, 79, 76, 77, 78, 101, 255, 255, 255, 255, 105, 78, 77, 76, 102, 255, 255, 255, 255, 255, 78, 77, 77, 94, 255, 255, 110, 77, 78, 77, 96, 255, 255, 255, 255, 255, 78, 63, 59, 66, 88, 255, 255, 255, 255, 255, 110, 76, 77, 78, 77, 76, 84, 93, 255, 255, 255, 255, 255, 96, 76, 77, 76, 110, 255, 255, 94, 77, 77, 78, 114, 106, 76, 79, 76, 105, 255, 255, 255, 106, 76, 77, 78, 101, 255, 255, 255, 101, 66, 62, 59, 70, 101, 255, 255, 255, 255, 255, 255,
+ 124, 5, 4, 5, 1, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 5, 4, 1, 5, 5, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 5, 2, 5, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 1, 5, 1, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 4, 2, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 5, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(157, 32, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "4 130 92");
+ IupSetAttribute(image, "2", "4 134 92");
+ IupSetAttribute(image, "3", "4 138 92");
+ IupSetAttribute(image, "4", "4 130 100");
+ IupSetAttribute(image, "5", "4 134 100");
+ IupSetAttribute(image, "6", "4 138 100");
+ IupSetAttribute(image, "7", "12 134 108");
+ IupSetAttribute(image, "8", "12 138 100");
+ IupSetAttribute(image, "9", "12 142 100");
+ IupSetAttribute(image, "10", "12 138 108");
+ IupSetAttribute(image, "11", "12 142 108");
+ IupSetAttribute(image, "12", "20 138 100");
+ IupSetAttribute(image, "13", "20 138 108");
+ IupSetAttribute(image, "14", "20 142 108");
+ IupSetAttribute(image, "15", "28 142 108");
+ IupSetAttribute(image, "16", "28 146 108");
+ IupSetAttribute(image, "17", "20 146 116");
+ IupSetAttribute(image, "18", "28 146 116");
+ IupSetAttribute(image, "19", "28 150 116");
+ IupSetAttribute(image, "20", "36 146 116");
+ IupSetAttribute(image, "21", "36 150 116");
+ IupSetAttribute(image, "22", "36 146 124");
+ IupSetAttribute(image, "23", "36 150 124");
+ IupSetAttribute(image, "24", "36 154 124");
+ IupSetAttribute(image, "25", "44 154 124");
+ IupSetAttribute(image, "26", "44 158 124");
+ IupSetAttribute(image, "27", "52 154 124");
+ IupSetAttribute(image, "28", "44 158 132");
+ IupSetAttribute(image, "29", "52 158 132");
+ IupSetAttribute(image, "30", "60 158 132");
+ IupSetAttribute(image, "31", "60 162 132");
+ IupSetAttribute(image, "32", "60 162 140");
+ IupSetAttribute(image, "33", "60 166 140");
+ IupSetAttribute(image, "34", "68 166 132");
+ IupSetAttribute(image, "35", "68 162 140");
+ IupSetAttribute(image, "36", "68 166 140");
+ IupSetAttribute(image, "37", "68 170 140");
+ IupSetAttribute(image, "38", "76 166 140");
+ IupSetAttribute(image, "39", "76 170 148");
+ IupSetAttribute(image, "40", "76 174 148");
+ IupSetAttribute(image, "41", "84 170 148");
+ IupSetAttribute(image, "42", "84 174 148");
+ IupSetAttribute(image, "43", "92 174 148");
+ IupSetAttribute(image, "44", "84 178 156");
+ IupSetAttribute(image, "45", "92 178 156");
+ IupSetAttribute(image, "46", "92 182 156");
+ IupSetAttribute(image, "47", "100 174 156");
+ IupSetAttribute(image, "48", "100 178 156");
+ IupSetAttribute(image, "49", "100 182 156");
+ IupSetAttribute(image, "50", "100 182 164");
+ IupSetAttribute(image, "51", "100 186 164");
+ IupSetAttribute(image, "52", "108 182 164");
+ IupSetAttribute(image, "53", "108 186 164");
+ IupSetAttribute(image, "54", "116 186 164");
+ IupSetAttribute(image, "55", "116 186 172");
+ IupSetAttribute(image, "56", "116 190 172");
+ IupSetAttribute(image, "57", "124 190 172");
+ IupSetAttribute(image, "58", "124 194 172");
+ IupSetAttribute(image, "59", "124 194 180");
+ IupSetAttribute(image, "60", "244 190 4");
+ IupSetAttribute(image, "61", "244 194 4");
+ IupSetAttribute(image, "62", "132 194 172");
+ IupSetAttribute(image, "63", "132 194 180");
+ IupSetAttribute(image, "64", "132 198 180");
+ IupSetAttribute(image, "65", "140 194 180");
+ IupSetAttribute(image, "66", "140 198 180");
+ IupSetAttribute(image, "67", "140 202 180");
+ IupSetAttribute(image, "68", "140 202 188");
+ IupSetAttribute(image, "69", "148 198 180");
+ IupSetAttribute(image, "70", "148 198 188");
+ IupSetAttribute(image, "71", "148 202 188");
+ IupSetAttribute(image, "72", "148 206 188");
+ IupSetAttribute(image, "73", "156 198 188");
+ IupSetAttribute(image, "74", "156 202 188");
+ IupSetAttribute(image, "75", "156 206 188");
+ IupSetAttribute(image, "76", "156 206 196");
+ IupSetAttribute(image, "77", "156 210 196");
+ IupSetAttribute(image, "78", "164 206 196");
+ IupSetAttribute(image, "79", "164 210 196");
+ IupSetAttribute(image, "80", "164 210 204");
+ IupSetAttribute(image, "81", "164 214 204");
+ IupSetAttribute(image, "82", "172 210 196");
+ IupSetAttribute(image, "83", "172 210 204");
+ IupSetAttribute(image, "84", "172 214 204");
+ IupSetAttribute(image, "85", "180 214 204");
+ IupSetAttribute(image, "86", "180 218 204");
+ IupSetAttribute(image, "87", "180 218 212");
+ IupSetAttribute(image, "88", "188 218 212");
+ IupSetAttribute(image, "89", "188 222 212");
+ IupSetAttribute(image, "90", "188 222 220");
+ IupSetAttribute(image, "91", "188 226 212");
+ IupSetAttribute(image, "92", "188 226 220");
+ IupSetAttribute(image, "93", "196 222 212");
+ IupSetAttribute(image, "94", "196 226 220");
+ IupSetAttribute(image, "95", "196 230 220");
+ IupSetAttribute(image, "96", "204 226 220");
+ IupSetAttribute(image, "97", "204 230 220");
+ IupSetAttribute(image, "98", "212 230 220");
+ IupSetAttribute(image, "99", "204 230 228");
+ IupSetAttribute(image, "100", "204 234 228");
+ IupSetAttribute(image, "101", "212 230 228");
+ IupSetAttribute(image, "102", "212 234 228");
+ IupSetAttribute(image, "103", "212 234 236");
+ IupSetAttribute(image, "104", "212 238 236");
+ IupSetAttribute(image, "105", "220 230 228");
+ IupSetAttribute(image, "106", "220 234 228");
+ IupSetAttribute(image, "107", "220 234 236");
+ IupSetAttribute(image, "108", "220 238 236");
+ IupSetAttribute(image, "109", "220 242 236");
+ IupSetAttribute(image, "110", "228 234 236");
+ IupSetAttribute(image, "111", "228 238 236");
+ IupSetAttribute(image, "112", "228 242 236");
+ IupSetAttribute(image, "113", "236 242 236");
+ IupSetAttribute(image, "114", "228 242 244");
+ IupSetAttribute(image, "115", "228 246 244");
+ IupSetAttribute(image, "116", "244 246 244");
+ IupSetAttribute(image, "117", "244 250 244");
+ IupSetAttribute(image, "118", "244 250 252");
+ IupSetAttribute(image, "119", "244 254 252");
+ IupSetAttribute(image, "120", "252 246 244");
+ IupSetAttribute(image, "121", "252 250 244");
+ IupSetAttribute(image, "122", "252 250 252");
+ IupSetAttribute(image, "123", "252 254 252");
+ IupSetAttribute(image, "124", "255 255 255");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_Lua8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 23, 19, 19, 23, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 19, 1, 1, 1, 1, 20, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 26, 1, 1, 1, 1, 1, 1, 23, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 19, 1, 1, 1, 1, 1, 1, 19, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 25, 21, 17, 17, 17, 17, 20, 23, 255, 255, 255, 255, 255, 19, 1, 1, 1, 1, 1, 1, 19, 255,
+ 255, 255, 255, 255, 255, 255, 255, 23, 18, 6, 1, 1, 1, 1, 1, 1, 1, 2, 1, 16, 25, 255, 255, 24, 1, 1, 1, 1, 1, 1, 23, 255,
+ 255, 255, 255, 255, 255, 255, 23, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 23, 255, 14, 1, 1, 1, 1, 14, 255, 255,
+ 255, 255, 255, 255, 255, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 11, 5, 1, 9, 23, 255, 23, 15, 17, 24, 255, 255, 255,
+ 255, 255, 255, 255, 23, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 17, 28, 28, 28, 18, 1, 9, 23, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 26, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 28, 28, 28, 28, 28, 19, 1, 15, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 28, 28, 28, 28, 28, 28, 28, 9, 1, 23, 255, 255, 255, 255, 255, 255,
+ 255, 255, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 28, 28, 28, 28, 28, 28, 28, 17, 1, 15, 255, 255, 255, 255, 255, 255,
+ 255, 255, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 28, 28, 28, 28, 28, 28, 28, 11, 1, 1, 23, 255, 255, 255, 255, 255,
+ 255, 255, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 28, 28, 28, 28, 28, 23, 1, 1, 1, 22, 255, 255, 255, 255, 255,
+ 255, 24, 1, 1, 1, 7, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 21, 28, 28, 28, 22, 4, 1, 1, 1, 18, 255, 255, 255, 255, 255,
+ 255, 23, 1, 1, 1, 16, 27, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 9, 4, 1, 1, 1, 1, 1, 14, 255, 255, 255, 255, 255,
+ 255, 17, 1, 1, 1, 16, 27, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 255, 255, 255, 255, 255,
+ 255, 17, 1, 1, 1, 16, 27, 1, 1, 1, 1, 11, 21, 1, 1, 8, 17, 1, 13, 27, 27, 27, 11, 1, 1, 1, 11, 255, 255, 255, 255, 255,
+ 255, 17, 1, 1, 1, 16, 27, 1, 1, 1, 1, 16, 27, 1, 1, 11, 27, 1, 27, 8, 1, 14, 27, 1, 1, 1, 16, 255, 255, 255, 255, 255,
+ 255, 24, 1, 1, 1, 16, 27, 1, 1, 1, 1, 16, 27, 1, 1, 11, 27, 1, 3, 1, 6, 19, 27, 1, 1, 1, 19, 255, 255, 255, 255, 255,
+ 255, 255, 8, 1, 1, 16, 27, 1, 1, 1, 1, 16, 27, 1, 1, 11, 27, 1, 20, 27, 27, 27, 27, 1, 1, 1, 23, 255, 255, 255, 255, 255,
+ 255, 255, 19, 1, 1, 16, 27, 1, 1, 1, 1, 16, 27, 1, 1, 15, 27, 4, 27, 1, 1, 15, 27, 1, 1, 1, 23, 255, 255, 255, 255, 255,
+ 255, 255, 24, 1, 1, 16, 27, 19, 19, 19, 13, 10, 27, 15, 14, 21, 27, 3, 27, 13, 13, 21, 27, 8, 1, 14, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 10, 1, 16, 27, 27, 27, 27, 11, 1, 11, 27, 27, 27, 11, 1, 12, 27, 27, 27, 21, 27, 5, 23, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 23, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 23, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 23, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 25, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 23, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 24, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 23, 17, 5, 1, 1, 1, 1, 1, 1, 1, 13, 21, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 23, 20, 17, 17, 17, 20, 22, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(32, 32, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 123");
+ IupSetAttribute(image, "2", "0 0 132");
+ IupSetAttribute(image, "3", "8 8 132");
+ IupSetAttribute(image, "4", "16 16 132");
+ IupSetAttribute(image, "5", "24 24 140");
+ IupSetAttribute(image, "6", "33 33 140");
+ IupSetAttribute(image, "7", "33 33 148");
+ IupSetAttribute(image, "8", "41 41 148");
+ IupSetAttribute(image, "9", "49 49 148");
+ IupSetAttribute(image, "10", "57 57 156");
+ IupSetAttribute(image, "11", "66 66 156");
+ IupSetAttribute(image, "12", "66 66 165");
+ IupSetAttribute(image, "13", "74 74 165");
+ IupSetAttribute(image, "14", "82 82 165");
+ IupSetAttribute(image, "15", "90 90 173");
+ IupSetAttribute(image, "16", "99 99 173");
+ IupSetAttribute(image, "17", "107 107 181");
+ IupSetAttribute(image, "18", "115 115 181");
+ IupSetAttribute(image, "19", "123 123 189");
+ IupSetAttribute(image, "20", "132 132 189");
+ IupSetAttribute(image, "21", "140 140 198");
+ IupSetAttribute(image, "22", "148 148 198");
+ IupSetAttribute(image, "23", "156 156 206");
+ IupSetAttribute(image, "24", "165 165 206");
+ IupSetAttribute(image, "25", "173 173 214");
+ IupSetAttribute(image, "26", "189 189 222");
+ IupSetAttribute(image, "27", "214 214 231");
+ IupSetAttribute(image, "28", "255 255 255");
+ IupSetAttribute(image, "29", "0 0 0");
+ IupSetAttribute(image, "30", "0 0 0");
+ IupSetAttribute(image, "31", "0 0 0");
+ IupSetAttribute(image, "32", "0 0 0");
+ IupSetAttribute(image, "33", "0 0 0");
+ IupSetAttribute(image, "34", "0 0 0");
+ IupSetAttribute(image, "35", "0 0 0");
+ IupSetAttribute(image, "36", "0 0 0");
+ IupSetAttribute(image, "37", "0 0 0");
+ IupSetAttribute(image, "38", "0 0 0");
+ IupSetAttribute(image, "39", "0 0 0");
+ IupSetAttribute(image, "40", "0 0 0");
+ IupSetAttribute(image, "41", "0 0 0");
+ IupSetAttribute(image, "42", "0 0 0");
+ IupSetAttribute(image, "43", "0 0 0");
+ IupSetAttribute(image, "44", "0 0 0");
+ IupSetAttribute(image, "45", "0 0 0");
+ IupSetAttribute(image, "46", "0 0 0");
+ IupSetAttribute(image, "47", "0 0 0");
+ IupSetAttribute(image, "48", "0 0 0");
+ IupSetAttribute(image, "49", "0 0 0");
+ IupSetAttribute(image, "50", "0 0 0");
+ IupSetAttribute(image, "51", "0 0 0");
+ IupSetAttribute(image, "52", "0 0 0");
+ IupSetAttribute(image, "53", "0 0 0");
+ IupSetAttribute(image, "54", "0 0 0");
+ IupSetAttribute(image, "55", "0 0 0");
+ IupSetAttribute(image, "56", "0 0 0");
+ IupSetAttribute(image, "57", "0 0 0");
+ IupSetAttribute(image, "58", "0 0 0");
+ IupSetAttribute(image, "59", "0 0 0");
+ IupSetAttribute(image, "60", "0 0 0");
+ IupSetAttribute(image, "61", "0 0 0");
+ IupSetAttribute(image, "62", "0 0 0");
+ IupSetAttribute(image, "63", "0 0 0");
+ IupSetAttribute(image, "64", "0 0 0");
+ IupSetAttribute(image, "65", "0 0 0");
+ IupSetAttribute(image, "66", "0 0 0");
+ IupSetAttribute(image, "67", "0 0 0");
+ IupSetAttribute(image, "68", "0 0 0");
+ IupSetAttribute(image, "69", "0 0 0");
+ IupSetAttribute(image, "70", "0 0 0");
+ IupSetAttribute(image, "71", "0 0 0");
+ IupSetAttribute(image, "72", "0 0 0");
+ IupSetAttribute(image, "73", "0 0 0");
+ IupSetAttribute(image, "74", "0 0 0");
+ IupSetAttribute(image, "75", "0 0 0");
+ IupSetAttribute(image, "76", "0 0 0");
+ IupSetAttribute(image, "77", "0 0 0");
+ IupSetAttribute(image, "78", "0 0 0");
+ IupSetAttribute(image, "79", "0 0 0");
+ IupSetAttribute(image, "80", "0 0 0");
+ IupSetAttribute(image, "81", "0 0 0");
+ IupSetAttribute(image, "82", "0 0 0");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_TecgrafPUC_Rio8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 154, 150, 150, 150, 150, 155, 150, 150, 155, 150, 150, 155, 150, 150, 150, 152, 155, 150, 152, 155, 150, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 167, 191, 191, 171, 169, 171, 181, 168, 255,
+ 255, 39, 66, 67, 61, 67, 60, 67, 67, 61, 67, 66, 61, 71, 67, 71, 71, 71, 71, 71, 71, 71, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 81, 108, 104, 104, 104, 104, 104, 104, 101, 255,
+ 255, 39, 59, 60, 66, 59, 67, 60, 59, 67, 60, 67, 60, 67, 61, 66, 61, 66, 61, 66, 61, 70, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, 98, 81, 98, 81, 103, 81, 103, 81, 79, 255,
+ 255, 38, 66, 59, 66, 59, 59, 66, 67, 59, 67, 60, 67, 59, 66, 60, 67, 61, 66, 61, 67, 61, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 61, 81, 103, 81, 98, 81, 96, 98, 96, 75, 255,
+ 255, 39, 59, 60, 66, 59, 66, 60, 59, 60, 66, 59, 61, 66, 61, 67, 60, 66, 67, 66, 60, 67, 106, 255, 255, 255, 255, 255, 255, 189, 162, 150, 160, 160, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 150, 152, 153, 160, 165, 168, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 167, 166, 165, 168, 168, 169, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 71, 96, 81, 98, 81, 98, 81, 29, 22, 34, 255,
+ 255, 28, 4, 3, 2, 3, 2, 3, 9, 66, 61, 59, 67, 60, 66, 72, 15, 3, 2, 3, 2, 3, 27, 255, 255, 190, 122, 112, 76, 72, 76, 78, 76, 78, 78, 98, 109, 153, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 129, 102, 77, 76, 78, 77, 77, 77, 78, 96, 104, 137, 152, 194, 255, 255, 255, 255, 255, 255, 255, 255, 154, 107, 98, 81, 98, 98, 108, 143, 168, 97, 71, 105, 104, 104, 104, 108, 109, 184, 255, 86, 96, 104, 105, 105, 105, 106, 109, 150, 121, 106, 104, 182, 255, 255, 255, 255, 148, 139, 101, 103, 104, 104, 103, 103, 104, 105, 108, 108, 139, 153, 195, 255, 255, 255, 179, 168, 56, 71, 81, 98, 81, 103, 81, 108, 120, 146, 123, 255,
+ 255, 255, 255, 255, 255, 255, 255, 117, 1, 60, 66, 66, 60, 67, 61, 80, 155, 255, 255, 255, 255, 255, 255, 255, 175, 57, 71, 71, 67, 71, 67, 71, 71, 71, 71, 61, 71, 79, 151, 194, 255, 255, 255, 255, 255, 255, 255, 255, 100, 71, 71, 76, 75, 71, 76, 72, 76, 71, 76, 77, 77, 78, 151, 172, 255, 255, 255, 255, 255, 255, 115, 72, 77, 76, 78, 76, 78, 78, 76, 98, 105, 67, 76, 78, 78, 78, 76, 105, 182, 255, 65, 67, 78, 80, 78, 81, 80, 81, 101, 76, 78, 81, 156, 255, 255, 255, 112, 76, 81, 79, 81, 81, 78, 96, 81, 81, 96, 79, 81, 81, 96, 145, 192, 255, 255, 82, 104, 109, 81, 96, 81, 98, 81, 98, 109, 150, 146, 116, 255,
+ 255, 255, 255, 255, 255, 255, 255, 130, 1, 66, 61, 59, 67, 60, 66, 81, 193, 255, 255, 255, 255, 255, 255, 185, 51, 71, 60, 67, 71, 61, 71, 71, 61, 66, 71, 71, 71, 67, 71, 143, 198, 255, 255, 255, 255, 255, 255, 110, 60, 71, 76, 71, 76, 71, 77, 71, 72, 77, 71, 72, 76, 71, 76, 144, 194, 255, 255, 255, 255, 128, 56, 78, 76, 77, 72, 78, 76, 77, 76, 78, 72, 78, 78, 78, 76, 78, 80, 104, 184, 255, 64, 60, 80, 78, 78, 76, 78, 98, 124, 78, 81, 78, 143, 255, 255, 158, 58, 78, 80, 81, 78, 96, 81, 79, 96, 78, 80, 81, 96, 81, 96, 81, 143, 198, 255, 65, 71, 81, 98, 81, 98, 81, 98, 81, 98, 96, 81, 101, 255,
+ 255, 255, 255, 255, 255, 255, 255, 130, 2, 60, 66, 66, 59, 67, 60, 81, 184, 255, 255, 255, 255, 255, 189, 34, 61, 70, 67, 71, 60, 71, 67, 71, 67, 71, 67, 71, 71, 71, 71, 71, 124, 255, 255, 255, 255, 255, 91, 59, 71, 76, 71, 71, 71, 71, 71, 76, 71, 76, 72, 71, 77, 71, 77, 71, 119, 198, 255, 255, 158, 36, 77, 76, 76, 77, 76, 75, 77, 76, 78, 76, 77, 76, 78, 76, 78, 77, 76, 101, 182, 255, 65, 60, 78, 78, 80, 79, 80, 81, 79, 80, 78, 80, 106, 255, 255, 74, 76, 81, 79, 80, 81, 78, 80, 81, 80, 81, 96, 78, 81, 79, 81, 79, 96, 139, 255, 65, 72, 81, 81, 96, 81, 96, 81, 98, 81, 81, 98, 99, 255,
+ 255, 255, 255, 255, 255, 255, 255, 130, 2, 59, 59, 61, 60, 60, 66, 81, 191, 255, 255, 255, 255, 255, 45, 56, 60, 67, 71, 60, 71, 67, 60, 35, 25, 24, 36, 61, 71, 71, 67, 71, 71, 146, 255, 255, 255, 161, 35, 71, 71, 71, 71, 76, 71, 71, 49, 24, 23, 33, 67, 72, 76, 72, 76, 77, 71, 143, 255, 255, 44, 71, 76, 75, 77, 72, 77, 76, 76, 67, 71, 76, 78, 76, 77, 78, 76, 78, 78, 104, 182, 255, 64, 60, 80, 78, 76, 78, 78, 80, 76, 79, 80, 78, 98, 255, 255, 66, 78, 80, 78, 80, 78, 76, 54, 33, 27, 24, 33, 61, 96, 80, 81, 96, 81, 104, 255, 65, 71, 96, 81, 81, 98, 81, 96, 81, 98, 98, 81, 103, 255,
+ 255, 255, 255, 255, 255, 255, 255, 130, 2, 60, 66, 59, 67, 59, 60, 81, 184, 255, 255, 255, 255, 178, 26, 61, 67, 60, 71, 67, 70, 61, 41, 85, 162, 132, 25, 14, 60, 71, 71, 71, 67, 71, 153, 255, 255, 39, 61, 71, 72, 71, 76, 71, 71, 57, 126, 255, 255, 90, 17, 67, 71, 76, 71, 71, 71, 78, 146, 136, 29, 72, 77, 76, 76, 77, 76, 57, 34, 47, 37, 20, 36, 77, 76, 78, 76, 78, 77, 104, 181, 255, 65, 60, 78, 78, 80, 78, 76, 78, 78, 78, 78, 79, 81, 187, 183, 51, 36, 36, 35, 36, 35, 35, 40, 122, 181, 167, 86, 27, 80, 79, 81, 78, 81, 96, 167, 48, 23, 25, 78, 81, 81, 81, 81, 96, 81, 49, 27, 55, 255,
+ 255, 255, 255, 255, 255, 255, 255, 130, 1, 66, 60, 60, 59, 67, 66, 80, 193, 255, 255, 255, 255, 69, 36, 67, 70, 61, 70, 61, 71, 71, 81, 81, 78, 76, 71, 51, 59, 71, 61, 71, 71, 71, 139, 196, 255, 12, 71, 71, 71, 71, 71, 71, 71, 187, 255, 255, 255, 255, 125, 18, 31, 40, 62, 86, 89, 87, 91, 92, 51, 76, 72, 76, 75, 76, 78, 88, 255, 255, 255, 255, 31, 59, 76, 78, 78, 76, 78, 104, 184, 255, 65, 59, 80, 76, 78, 80, 78, 78, 76, 50, 25, 23, 35, 176, 255, 174, 87, 36, 49, 71, 81, 109, 109, 108, 104, 104, 98, 81, 79, 80, 96, 81, 81, 81, 166, 255, 255, 42, 71, 96, 81, 96, 79, 81, 103, 147, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 131, 1, 59, 59, 66, 61, 60, 59, 81, 184, 255, 255, 255, 255, 47, 52, 61, 66, 61, 67, 67, 60, 71, 61, 70, 61, 71, 66, 71, 71, 71, 67, 71, 71, 67, 104, 151, 178, 19, 71, 71, 71, 72, 71, 71, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 56, 72, 77, 76, 72, 77, 104, 255, 255, 255, 255, 255, 133, 35, 77, 76, 76, 78, 76, 104, 180, 255, 65, 59, 78, 78, 78, 76, 78, 78, 71, 114, 255, 255, 255, 255, 255, 129, 78, 81, 78, 81, 78, 81, 78, 78, 81, 79, 80, 81, 80, 79, 80, 81, 78, 96, 163, 255, 255, 47, 71, 81, 81, 81, 81, 96, 104, 156, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 130, 1, 66, 60, 66, 59, 66, 60, 80, 193, 255, 255, 255, 255, 47, 51, 67, 60, 67, 70, 60, 67, 71, 70, 67, 71, 61, 71, 61, 67, 60, 66, 60, 66, 60, 76, 141, 173, 22, 67, 71, 71, 71, 71, 71, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 49, 77, 76, 72, 77, 76, 106, 255, 255, 255, 255, 255, 88, 66, 76, 78, 77, 76, 77, 104, 181, 255, 65, 60, 78, 76, 77, 78, 78, 80, 147, 255, 255, 255, 255, 255, 134, 71, 81, 78, 80, 78, 81, 78, 81, 77, 67, 59, 54, 56, 78, 81, 81, 95, 81, 81, 166, 255, 255, 46, 71, 81, 81, 96, 81, 81, 103, 160, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 130, 2, 59, 59, 60, 61, 60, 66, 80, 182, 255, 255, 255, 255, 84, 33, 67, 61, 66, 61, 61, 66, 76, 74, 113, 93, 111, 111, 68, 62, 69, 88, 86, 86, 86, 82, 129, 185, 11, 71, 71, 71, 71, 71, 71, 143, 255, 255, 255, 255, 255, 255, 62, 71, 76, 98, 138, 152, 164, 195, 62, 25, 76, 76, 77, 71, 76, 77, 139, 171, 196, 168, 107, 71, 76, 75, 76, 77, 78, 77, 104, 179, 255, 65, 59, 78, 78, 76, 78, 76, 81, 155, 255, 255, 255, 255, 255, 55, 76, 79, 78, 78, 80, 78, 33, 39, 65, 92, 91, 47, 33, 81, 80, 79, 81, 80, 79, 166, 255, 255, 47, 71, 81, 95, 80, 79, 96, 103, 156, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 130, 1, 59, 66, 59, 66, 59, 60, 80, 196, 255, 255, 255, 255, 173, 18, 60, 67, 60, 67, 66, 67, 99, 181, 255, 255, 255, 183, 95, 67, 72, 99, 140, 150, 186, 199, 197, 255, 13, 71, 71, 71, 71, 71, 71, 102, 194, 255, 255, 255, 183, 63, 67, 71, 77, 76, 71, 72, 76, 141, 255, 19, 71, 73, 76, 77, 76, 71, 75, 78, 81, 80, 75, 76, 77, 76, 77, 72, 78, 76, 104, 181, 255, 65, 60, 76, 78, 77, 78, 78, 78, 159, 255, 255, 255, 255, 176, 29, 78, 80, 78, 80, 78, 81, 149, 255, 255, 255, 163, 97, 77, 81, 78, 81, 78, 81, 81, 166, 255, 255, 47, 71, 81, 81, 81, 96, 81, 98, 160, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 132, 1, 60, 59, 59, 59, 67, 59, 80, 182, 255, 255, 255, 255, 255, 28, 53, 66, 67, 61, 66, 61, 66, 98, 119, 143, 106, 66, 67, 61, 71, 66, 71, 61, 71, 120, 255, 255, 93, 25, 71, 71, 71, 71, 71, 71, 98, 137, 138, 108, 76, 71, 71, 76, 71, 71, 77, 71, 71, 147, 255, 91, 24, 76, 76, 73, 76, 77, 76, 76, 77, 71, 77, 72, 76, 76, 78, 76, 77, 75, 104, 179, 255, 65, 59, 77, 76, 78, 78, 76, 81, 150, 255, 255, 255, 255, 175, 27, 80, 76, 78, 79, 78, 81, 139, 139, 137, 104, 103, 78, 81, 78, 80, 78, 80, 81, 78, 166, 255, 255, 47, 67, 81, 78, 81, 81, 81, 103, 156, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 130, 1, 59, 59, 66, 59, 66, 60, 78, 193, 255, 255, 255, 255, 255, 177, 9, 58, 66, 61, 70, 67, 60, 71, 61, 66, 71, 71, 61, 70, 71, 61, 71, 67, 52, 189, 255, 255, 255, 28, 49, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 76, 71, 72, 71, 76, 71, 71, 73, 255, 255, 255, 47, 23, 71, 76, 72, 76, 71, 77, 72, 77, 76, 76, 71, 75, 76, 72, 78, 76, 104, 181, 255, 65, 59, 78, 76, 78, 78, 77, 79, 159, 255, 255, 255, 255, 255, 24, 78, 78, 80, 76, 80, 78, 80, 78, 78, 78, 80, 78, 80, 79, 80, 79, 80, 78, 81, 166, 255, 255, 47, 71, 81, 81, 96, 81, 81, 98, 160, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 130, 1, 60, 59, 59, 59, 59, 66, 78, 191, 255, 255, 255, 255, 255, 255, 174, 8, 51, 60, 67, 61, 66, 61, 66, 61, 66, 61, 70, 61, 71, 71, 59, 29, 157, 255, 255, 255, 255, 255, 30, 27, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 76, 72, 71, 56, 51, 255, 255, 255, 255, 255, 125, 9, 27, 59, 75, 76, 72, 67, 54, 35, 9, 49, 77, 76, 77, 76, 75, 104, 179, 255, 65, 59, 76, 78, 76, 78, 76, 81, 155, 255, 255, 255, 255, 255, 84, 29, 78, 78, 78, 76, 78, 80, 78, 80, 78, 80, 78, 76, 78, 80, 78, 81, 79, 80, 166, 255, 255, 47, 67, 79, 80, 79, 81, 79, 103, 155, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 131, 1, 59, 59, 66, 59, 66, 59, 80, 191, 255, 255, 255, 255, 255, 255, 255, 188, 43, 4, 18, 52, 61, 66, 61, 70, 61, 67, 71, 67, 49, 19, 46, 255, 255, 255, 255, 255, 255, 255, 255, 87, 7, 27, 60, 71, 71, 71, 71, 72, 71, 71, 71, 67, 51, 24, 91, 255, 255, 255, 158, 118, 164, 153, 146, 113, 122, 129, 31, 31, 69, 127, 135, 125, 51, 76, 72, 77, 72, 76, 98, 186, 255, 65, 59, 78, 77, 76, 78, 77, 78, 160, 255, 255, 255, 255, 255, 255, 47, 18, 71, 78, 80, 78, 78, 78, 79, 77, 52, 17, 16, 67, 78, 81, 78, 80, 78, 137, 255, 255, 46, 71, 81, 80, 81, 81, 80, 103, 160, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 173, 21, 31, 31, 31, 31, 31, 31, 37, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 158, 84, 10, 4, 7, 11, 9, 5, 6, 45, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 42, 8, 7, 12, 17, 17, 12, 7, 16, 47, 132, 255, 255, 255, 255, 255, 255, 12, 77, 76, 80, 78, 78, 96, 169, 255, 255, 255, 255, 85, 59, 75, 76, 78, 76, 78, 76, 255, 255, 93, 31, 31, 37, 31, 31, 37, 31, 126, 255, 255, 255, 255, 255, 255, 255, 177, 37, 5, 9, 18, 12, 11, 7, 43, 130, 255, 136, 31, 39, 39, 44, 45, 45, 55, 114, 255, 90, 31, 37, 31, 37, 31, 37, 32, 127, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 173, 133, 173, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 130, 125, 126, 132, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 26, 71, 76, 73, 76, 77, 72, 164, 170, 166, 155, 118, 71, 76, 76, 77, 76, 75, 76, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 126, 134, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 52, 71, 76, 72, 71, 76, 78, 139, 109, 108, 81, 77, 72, 77, 71, 76, 77, 72, 121, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 18, 56, 76, 71, 77, 76, 71, 77, 71, 76, 77, 72, 76, 72, 77, 76, 71, 56, 183, 255, 255, 148, 96, 98, 99, 98, 81, 155, 255, 81, 149, 255, 255, 144, 81, 255, 255, 141, 96, 107, 106, 81, 166, 255, 255, 255, 255, 255, 181, 98, 81, 103, 98, 98, 255, 186, 81, 160, 255, 182, 81, 98, 106, 104, 98, 182, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 19, 36, 71, 71, 72, 72, 72, 76, 75, 71, 77, 76, 77, 72, 56, 36, 173, 255, 255, 255, 149, 81, 255, 255, 141, 96, 107, 255, 81, 149, 255, 255, 144, 81, 255, 156, 81, 156, 255, 255, 160, 158, 255, 255, 255, 255, 255, 179, 81, 166, 255, 179, 81, 163, 184, 81, 156, 255, 81, 108, 255, 255, 255, 106, 98, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 19, 25, 50, 59, 61, 71, 61, 60, 56, 51, 29, 27, 82, 255, 255, 255, 255, 255, 148, 96, 120, 144, 98, 81, 142, 255, 81, 148, 255, 255, 144, 96, 255, 145, 96, 255, 255, 255, 255, 255, 255, 255, 81, 81, 167, 179, 81, 98, 106, 98, 98, 255, 186, 81, 156, 156, 96, 167, 255, 255, 255, 166, 81, 167, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 125, 65, 47, 43, 42, 43, 64, 68, 82, 136, 255, 255, 255, 255, 255, 255, 255, 149, 81, 147, 166, 167, 255, 255, 255, 81, 142, 255, 255, 119, 81, 255, 150, 81, 179, 255, 255, 182, 182, 255, 255, 179, 181, 255, 182, 96, 129, 149, 81, 150, 255, 186, 81, 156, 255, 81, 124, 255, 255, 255, 120, 96, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 81, 255, 255, 255, 255, 255, 255, 116, 81, 144, 124, 81, 141, 255, 255, 116, 81, 147, 120, 96, 149, 255, 255, 255, 255, 255, 179, 81, 166, 255, 123, 81, 255, 184, 96, 160, 255, 145, 81, 101, 147, 124, 96, 160, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 255, 255, 255, 255, 255, 255, 255, 182, 167, 167, 184, 255, 255, 255, 255, 182, 167, 167, 255, 255, 255, 255, 255, 255, 255, 255, 181, 255, 255, 255, 181, 255, 255, 181, 255, 255, 255, 255, 169, 167, 167, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(139, 32, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "44 46 60");
+ IupSetAttribute(image, "2", "44 50 60");
+ IupSetAttribute(image, "3", "44 54 68");
+ IupSetAttribute(image, "4", "52 54 68");
+ IupSetAttribute(image, "5", "52 58 68");
+ IupSetAttribute(image, "6", "52 62 68");
+ IupSetAttribute(image, "7", "52 62 76");
+ IupSetAttribute(image, "8", "60 62 76");
+ IupSetAttribute(image, "9", "60 66 76");
+ IupSetAttribute(image, "10", "60 70 76");
+ IupSetAttribute(image, "11", "60 66 84");
+ IupSetAttribute(image, "12", "60 70 84");
+ IupSetAttribute(image, "13", "68 70 76");
+ IupSetAttribute(image, "14", "68 70 84");
+ IupSetAttribute(image, "15", "68 74 84");
+ IupSetAttribute(image, "16", "68 78 84");
+ IupSetAttribute(image, "17", "68 74 92");
+ IupSetAttribute(image, "18", "68 78 92");
+ IupSetAttribute(image, "19", "76 78 92");
+ IupSetAttribute(image, "20", "76 82 92");
+ IupSetAttribute(image, "21", "84 86 92");
+ IupSetAttribute(image, "22", "68 82 100");
+ IupSetAttribute(image, "23", "76 82 100");
+ IupSetAttribute(image, "24", "76 86 100");
+ IupSetAttribute(image, "25", "76 90 108");
+ IupSetAttribute(image, "26", "84 86 100");
+ IupSetAttribute(image, "27", "84 90 108");
+ IupSetAttribute(image, "28", "92 94 100");
+ IupSetAttribute(image, "29", "84 94 116");
+ IupSetAttribute(image, "30", "92 98 100");
+ IupSetAttribute(image, "31", "92 98 108");
+ IupSetAttribute(image, "32", "92 102 108");
+ IupSetAttribute(image, "33", "84 98 116");
+ IupSetAttribute(image, "34", "92 98 116");
+ IupSetAttribute(image, "35", "92 102 124");
+ IupSetAttribute(image, "36", "92 106 124");
+ IupSetAttribute(image, "37", "100 102 108");
+ IupSetAttribute(image, "38", "100 106 108");
+ IupSetAttribute(image, "39", "100 106 116");
+ IupSetAttribute(image, "40", "100 106 124");
+ IupSetAttribute(image, "41", "100 110 124");
+ IupSetAttribute(image, "42", "108 106 116");
+ IupSetAttribute(image, "43", "108 110 116");
+ IupSetAttribute(image, "44", "108 110 124");
+ IupSetAttribute(image, "45", "108 114 124");
+ IupSetAttribute(image, "46", "108 118 124");
+ IupSetAttribute(image, "47", "116 118 124");
+ IupSetAttribute(image, "48", "116 122 124");
+ IupSetAttribute(image, "49", "92 106 132");
+ IupSetAttribute(image, "50", "100 106 132");
+ IupSetAttribute(image, "51", "100 110 132");
+ IupSetAttribute(image, "52", "100 114 132");
+ IupSetAttribute(image, "53", "100 114 140");
+ IupSetAttribute(image, "54", "100 118 140");
+ IupSetAttribute(image, "55", "108 118 132");
+ IupSetAttribute(image, "56", "108 118 140");
+ IupSetAttribute(image, "57", "108 122 140");
+ IupSetAttribute(image, "58", "100 118 148");
+ IupSetAttribute(image, "59", "108 122 148");
+ IupSetAttribute(image, "60", "108 126 148");
+ IupSetAttribute(image, "61", "108 126 156");
+ IupSetAttribute(image, "62", "116 122 132");
+ IupSetAttribute(image, "63", "116 126 140");
+ IupSetAttribute(image, "64", "124 122 132");
+ IupSetAttribute(image, "65", "124 126 132");
+ IupSetAttribute(image, "66", "116 126 148");
+ IupSetAttribute(image, "67", "116 126 156");
+ IupSetAttribute(image, "68", "124 130 132");
+ IupSetAttribute(image, "69", "124 130 140");
+ IupSetAttribute(image, "70", "116 130 148");
+ IupSetAttribute(image, "71", "116 130 156");
+ IupSetAttribute(image, "72", "116 134 156");
+ IupSetAttribute(image, "73", "124 130 148");
+ IupSetAttribute(image, "74", "124 134 148");
+ IupSetAttribute(image, "75", "124 134 156");
+ IupSetAttribute(image, "76", "116 134 164");
+ IupSetAttribute(image, "77", "124 134 164");
+ IupSetAttribute(image, "78", "124 138 164");
+ IupSetAttribute(image, "79", "124 142 164");
+ IupSetAttribute(image, "80", "124 138 172");
+ IupSetAttribute(image, "81", "124 142 172");
+ IupSetAttribute(image, "82", "132 134 140");
+ IupSetAttribute(image, "83", "132 138 140");
+ IupSetAttribute(image, "84", "140 138 140");
+ IupSetAttribute(image, "85", "132 134 148");
+ IupSetAttribute(image, "86", "132 138 148");
+ IupSetAttribute(image, "87", "140 142 148");
+ IupSetAttribute(image, "88", "140 142 156");
+ IupSetAttribute(image, "89", "140 146 156");
+ IupSetAttribute(image, "90", "148 146 148");
+ IupSetAttribute(image, "91", "148 150 156");
+ IupSetAttribute(image, "92", "148 154 156");
+ IupSetAttribute(image, "93", "156 154 156");
+ IupSetAttribute(image, "94", "156 158 156");
+ IupSetAttribute(image, "95", "132 142 164");
+ IupSetAttribute(image, "96", "132 142 172");
+ IupSetAttribute(image, "97", "132 146 164");
+ IupSetAttribute(image, "98", "132 146 172");
+ IupSetAttribute(image, "99", "132 150 172");
+ IupSetAttribute(image, "100", "140 146 164");
+ IupSetAttribute(image, "101", "140 150 172");
+ IupSetAttribute(image, "102", "140 154 172");
+ IupSetAttribute(image, "103", "132 146 180");
+ IupSetAttribute(image, "104", "132 150 180");
+ IupSetAttribute(image, "105", "132 154 180");
+ IupSetAttribute(image, "106", "140 154 180");
+ IupSetAttribute(image, "107", "140 158 180");
+ IupSetAttribute(image, "108", "140 154 188");
+ IupSetAttribute(image, "109", "140 158 188");
+ IupSetAttribute(image, "110", "148 150 164");
+ IupSetAttribute(image, "111", "148 154 164");
+ IupSetAttribute(image, "112", "148 154 172");
+ IupSetAttribute(image, "113", "148 158 172");
+ IupSetAttribute(image, "114", "156 158 164");
+ IupSetAttribute(image, "115", "156 158 172");
+ IupSetAttribute(image, "116", "148 158 188");
+ IupSetAttribute(image, "117", "156 162 164");
+ IupSetAttribute(image, "118", "148 162 180");
+ IupSetAttribute(image, "119", "148 162 188");
+ IupSetAttribute(image, "120", "148 166 188");
+ IupSetAttribute(image, "121", "156 162 180");
+ IupSetAttribute(image, "122", "156 166 180");
+ IupSetAttribute(image, "123", "156 166 188");
+ IupSetAttribute(image, "124", "156 170 188");
+ IupSetAttribute(image, "125", "164 166 164");
+ IupSetAttribute(image, "126", "164 166 172");
+ IupSetAttribute(image, "127", "172 170 172");
+ IupSetAttribute(image, "128", "164 170 180");
+ IupSetAttribute(image, "129", "164 174 188");
+ IupSetAttribute(image, "130", "172 174 180");
+ IupSetAttribute(image, "131", "172 178 188");
+ IupSetAttribute(image, "132", "180 178 180");
+ IupSetAttribute(image, "133", "180 182 180");
+ IupSetAttribute(image, "134", "180 182 188");
+ IupSetAttribute(image, "135", "180 186 188");
+ IupSetAttribute(image, "136", "188 186 188");
+ IupSetAttribute(image, "137", "140 162 196");
+ IupSetAttribute(image, "138", "148 162 196");
+ IupSetAttribute(image, "139", "148 166 196");
+ IupSetAttribute(image, "140", "156 166 196");
+ IupSetAttribute(image, "141", "156 170 196");
+ IupSetAttribute(image, "142", "156 174 196");
+ IupSetAttribute(image, "143", "156 174 204");
+ IupSetAttribute(image, "144", "164 174 196");
+ IupSetAttribute(image, "145", "164 178 196");
+ IupSetAttribute(image, "146", "164 178 204");
+ IupSetAttribute(image, "147", "172 178 196");
+ IupSetAttribute(image, "148", "172 182 196");
+ IupSetAttribute(image, "149", "172 182 204");
+ IupSetAttribute(image, "150", "172 186 204");
+ IupSetAttribute(image, "151", "164 182 212");
+ IupSetAttribute(image, "152", "172 186 212");
+ IupSetAttribute(image, "153", "172 190 220");
+ IupSetAttribute(image, "154", "180 182 196");
+ IupSetAttribute(image, "155", "180 186 204");
+ IupSetAttribute(image, "156", "180 190 204");
+ IupSetAttribute(image, "157", "188 186 196");
+ IupSetAttribute(image, "158", "188 190 196");
+ IupSetAttribute(image, "159", "180 186 212");
+ IupSetAttribute(image, "160", "180 190 212");
+ IupSetAttribute(image, "161", "188 194 196");
+ IupSetAttribute(image, "162", "188 194 204");
+ IupSetAttribute(image, "163", "180 194 212");
+ IupSetAttribute(image, "164", "180 194 220");
+ IupSetAttribute(image, "165", "180 198 220");
+ IupSetAttribute(image, "166", "188 194 212");
+ IupSetAttribute(image, "167", "188 198 212");
+ IupSetAttribute(image, "168", "188 198 220");
+ IupSetAttribute(image, "169", "188 202 220");
+ IupSetAttribute(image, "170", "180 198 228");
+ IupSetAttribute(image, "171", "188 202 228");
+ IupSetAttribute(image, "172", "188 206 236");
+ IupSetAttribute(image, "173", "196 194 196");
+ IupSetAttribute(image, "174", "196 198 196");
+ IupSetAttribute(image, "175", "196 198 204");
+ IupSetAttribute(image, "176", "196 202 204");
+ IupSetAttribute(image, "177", "204 202 204");
+ IupSetAttribute(image, "178", "204 206 204");
+ IupSetAttribute(image, "179", "196 202 212");
+ IupSetAttribute(image, "180", "196 206 212");
+ IupSetAttribute(image, "181", "196 202 220");
+ IupSetAttribute(image, "182", "196 206 220");
+ IupSetAttribute(image, "183", "204 206 212");
+ IupSetAttribute(image, "184", "204 206 220");
+ IupSetAttribute(image, "185", "204 210 212");
+ IupSetAttribute(image, "186", "204 210 220");
+ IupSetAttribute(image, "187", "212 210 212");
+ IupSetAttribute(image, "188", "212 214 212");
+ IupSetAttribute(image, "189", "212 214 220");
+ IupSetAttribute(image, "190", "212 218 220");
+ IupSetAttribute(image, "191", "196 206 228");
+ IupSetAttribute(image, "192", "196 206 236");
+ IupSetAttribute(image, "193", "196 210 228");
+ IupSetAttribute(image, "194", "196 210 236");
+ IupSetAttribute(image, "195", "196 214 236");
+ IupSetAttribute(image, "196", "204 210 228");
+ IupSetAttribute(image, "197", "204 214 228");
+ IupSetAttribute(image, "198", "204 214 236");
+ IupSetAttribute(image, "199", "212 222 236");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_PUC_Rio8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 218, 167, 118, 123, 166, 216, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 123, 113, 110, 110, 110, 113, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 243, 195, 249, 255, 194, 113, 123, 123, 123, 123, 113, 187, 255, 252, 197, 236, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 243, 14, 195, 246, 124, 126, 125, 126, 133, 124, 133, 122, 241, 225, 14, 233, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 195, 155, 249, 252, 110, 101, 111, 110, 113, 102, 109, 110, 246, 252, 155, 189, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 252, 235, 255, 255, 155, 191, 255, 255, 124, 117, 13, 13, 13, 13, 117, 117, 252, 255, 197, 17, 252, 255, 236, 249, 255, 255, 255, 255,
+ 255, 255, 255, 255, 252, 184, 183, 245, 106, 2, 191, 252, 117, 134, 133, 114, 131, 125, 135, 116, 249, 195, 3, 105, 246, 189, 169, 249, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 246, 132, 132, 216, 104, 12, 255, 179, 101, 101, 100, 100, 7, 109, 166, 255, 15, 103, 195, 14, 9, 236, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 146, 140, 140, 112, 6, 164, 252, 243, 99, 97, 107, 108, 96, 98, 242, 255, 169, 6, 4, 17, 158, 17, 252, 255, 255, 255, 255,
+ 255, 255, 255, 255, 231, 142, 176, 148, 168, 40, 22, 26, 44, 39, 18, 61, 61, 38, 38, 44, 27, 19, 20, 170, 17, 158, 17, 225, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 243, 185, 183, 228, 24, 30, 34, 25, 60, 31, 33, 36, 32, 28, 25, 35, 30, 23, 228, 189, 169, 236, 252, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 252, 242, 255, 63, 29, 62, 41, 42, 42, 78, 78, 42, 42, 41, 33, 43, 60, 255, 243, 249, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 65, 37, 49, 57, 52, 10, 83, 91, 11, 52, 51, 50, 36, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 46, 58, 66, 145, 144, 95, 201, 138, 145, 119, 58, 45, 64, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 63, 68, 167, 146, 170, 203, 203, 173, 146, 130, 155, 63, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 252, 191, 170, 246, 252, 71, 82, 55, 150, 190, 207, 208, 208, 207, 175, 151, 53, 79, 59, 249, 249, 212, 212, 249, 255, 255, 255, 255,
+ 255, 255, 255, 255, 225, 195, 228, 158, 8, 47, 81, 69, 144, 193, 237, 238, 238, 237, 193, 150, 68, 80, 56, 115, 140, 220, 223, 221, 255, 255, 255, 255,
+ 255, 255, 255, 249, 158, 155, 169, 17, 170, 74, 92, 70, 145, 236, 17, 243, 234, 17, 197, 153, 69, 87, 84, 186, 142, 183, 146, 146, 246, 255, 255, 255,
+ 255, 255, 255, 228, 195, 243, 170, 243, 170, 88, 84, 158, 141, 236, 1, 243, 158, 252, 155, 152, 161, 74, 84, 217, 232, 216, 235, 230, 222, 255, 255, 255,
+ 255, 255, 255, 195, 155, 158, 160, 210, 219, 198, 94, 159, 139, 14, 191, 14, 165, 236, 17, 209, 156, 90, 84, 231, 210, 172, 140, 146, 212, 255, 255, 255,
+ 255, 255, 255, 255, 252, 240, 46, 5, 215, 198, 93, 72, 136, 244, 252, 249, 244, 249, 243, 147, 160, 92, 198, 224, 139, 160, 237, 252, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 252, 86, 121, 162, 205, 93, 75, 129, 141, 143, 176, 176, 141, 141, 137, 73, 93, 204, 170, 120, 77, 247, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 251, 130, 149, 229, 171, 92, 89, 198, 198, 206, 207, 198, 198, 89, 93, 76, 236, 67, 128, 247, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 228, 155, 157, 247, 228, 205, 200, 198, 202, 202, 199, 200, 205, 226, 250, 159, 16, 196, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 252, 178, 67, 211, 252, 255, 255, 246, 77, 85, 243, 255, 255, 255, 215, 148, 180, 250, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 250, 178, 182, 233, 227, 247, 255, 246, 243, 255, 247, 227, 228, 182, 177, 247, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 250, 188, 154, 149, 54, 134, 69, 188, 186, 169, 17, 118, 149, 154, 213, 250, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 224, 174, 178, 127, 21, 134, 48, 67, 149, 163, 192, 230, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 248, 236, 231, 231, 239, 247, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(32, 32, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "40 40 40");
+ IupSetAttribute(image, "2", "127 10 11");
+ IupSetAttribute(image, "3", "127 18 19");
+ IupSetAttribute(image, "4", "95 95 95");
+ IupSetAttribute(image, "5", "90 102 126");
+ IupSetAttribute(image, "6", "98 84 81");
+ IupSetAttribute(image, "7", "127 116 77");
+ IupSetAttribute(image, "8", "101 101 101");
+ IupSetAttribute(image, "9", "110 110 110");
+ IupSetAttribute(image, "10", "100 111 126");
+ IupSetAttribute(image, "11", "102 113 127");
+ IupSetAttribute(image, "12", "115 107 107");
+ IupSetAttribute(image, "13", "125 122 108");
+ IupSetAttribute(image, "14", "116 116 116");
+ IupSetAttribute(image, "15", "125 119 119");
+ IupSetAttribute(image, "16", "121 125 119");
+ IupSetAttribute(image, "17", "124 125 124");
+ IupSetAttribute(image, "18", "63 63 147");
+ IupSetAttribute(image, "19", "31 68 163");
+ IupSetAttribute(image, "20", "60 83 142");
+ IupSetAttribute(image, "21", "61 84 148");
+ IupSetAttribute(image, "22", "43 78 160");
+ IupSetAttribute(image, "23", "41 79 175");
+ IupSetAttribute(image, "24", "47 80 163");
+ IupSetAttribute(image, "25", "57 90 172");
+ IupSetAttribute(image, "26", "52 87 177");
+ IupSetAttribute(image, "27", "54 90 181");
+ IupSetAttribute(image, "28", "61 95 176");
+ IupSetAttribute(image, "29", "58 96 188");
+ IupSetAttribute(image, "30", "26 81 221");
+ IupSetAttribute(image, "31", "59 98 197");
+ IupSetAttribute(image, "32", "62 101 201");
+ IupSetAttribute(image, "33", "61 105 219");
+ IupSetAttribute(image, "34", "39 96 243");
+ IupSetAttribute(image, "35", "40 97 243");
+ IupSetAttribute(image, "36", "61 108 228");
+ IupSetAttribute(image, "37", "60 108 232");
+ IupSetAttribute(image, "38", "65 69 153");
+ IupSetAttribute(image, "39", "65 74 159");
+ IupSetAttribute(image, "40", "68 88 139");
+ IupSetAttribute(image, "41", "93 112 149");
+ IupSetAttribute(image, "42", "94 114 154");
+ IupSetAttribute(image, "43", "65 98 176");
+ IupSetAttribute(image, "44", "70 104 190");
+ IupSetAttribute(image, "45", "84 108 162");
+ IupSetAttribute(image, "46", "84 109 170");
+ IupSetAttribute(image, "47", "88 109 162");
+ IupSetAttribute(image, "48", "106 115 129");
+ IupSetAttribute(image, "49", "111 122 134");
+ IupSetAttribute(image, "50", "111 123 136");
+ IupSetAttribute(image, "51", "106 123 154");
+ IupSetAttribute(image, "52", "114 123 131");
+ IupSetAttribute(image, "53", "115 126 143");
+ IupSetAttribute(image, "54", "120 127 132");
+ IupSetAttribute(image, "55", "113 126 148");
+ IupSetAttribute(image, "56", "99 121 174");
+ IupSetAttribute(image, "57", "104 124 161");
+ IupSetAttribute(image, "58", "101 126 180");
+ IupSetAttribute(image, "59", "99 123 188");
+ IupSetAttribute(image, "60", "67 102 192");
+ IupSetAttribute(image, "61", "79 111 193");
+ IupSetAttribute(image, "62", "67 108 208");
+ IupSetAttribute(image, "63", "82 114 194");
+ IupSetAttribute(image, "64", "91 120 196");
+ IupSetAttribute(image, "65", "98 126 196");
+ IupSetAttribute(image, "66", "127 130 116");
+ IupSetAttribute(image, "67", "125 129 124");
+ IupSetAttribute(image, "68", "122 131 139");
+ IupSetAttribute(image, "69", "124 133 146");
+ IupSetAttribute(image, "70", "123 134 152");
+ IupSetAttribute(image, "71", "108 129 186");
+ IupSetAttribute(image, "72", "126 139 164");
+ IupSetAttribute(image, "73", "116 135 178");
+ IupSetAttribute(image, "74", "114 135 185");
+ IupSetAttribute(image, "75", "115 137 187");
+ IupSetAttribute(image, "76", "120 136 176");
+ IupSetAttribute(image, "77", "124 141 189");
+ IupSetAttribute(image, "78", "86 131 244");
+ IupSetAttribute(image, "79", "101 130 203");
+ IupSetAttribute(image, "80", "106 132 196");
+ IupSetAttribute(image, "81", "106 135 204");
+ IupSetAttribute(image, "82", "101 132 211");
+ IupSetAttribute(image, "83", "101 135 223");
+ IupSetAttribute(image, "84", "115 137 195");
+ IupSetAttribute(image, "85", "124 143 192");
+ IupSetAttribute(image, "86", "113 137 210");
+ IupSetAttribute(image, "87", "114 143 216");
+ IupSetAttribute(image, "88", "127 147 197");
+ IupSetAttribute(image, "89", "123 147 205");
+ IupSetAttribute(image, "90", "122 150 222");
+ IupSetAttribute(image, "91", "104 140 234");
+ IupSetAttribute(image, "92", "115 147 227");
+ IupSetAttribute(image, "93", "115 149 235");
+ IupSetAttribute(image, "94", "122 152 228");
+ IupSetAttribute(image, "95", "126 156 235");
+ IupSetAttribute(image, "96", "151 5 7");
+ IupSetAttribute(image, "97", "157 1 2");
+ IupSetAttribute(image, "98", "145 71 69");
+ IupSetAttribute(image, "99", "148 88 84");
+ IupSetAttribute(image, "100", "138 117 77");
+ IupSetAttribute(image, "101", "130 121 82");
+ IupSetAttribute(image, "102", "137 127 86");
+ IupSetAttribute(image, "103", "130 113 114");
+ IupSetAttribute(image, "104", "137 121 120");
+ IupSetAttribute(image, "105", "145 105 105");
+ IupSetAttribute(image, "106", "152 120 120");
+ IupSetAttribute(image, "107", "161 67 68");
+ IupSetAttribute(image, "108", "168 69 70");
+ IupSetAttribute(image, "109", "139 131 86");
+ IupSetAttribute(image, "110", "139 131 89");
+ IupSetAttribute(image, "111", "145 133 89");
+ IupSetAttribute(image, "112", "148 137 81");
+ IupSetAttribute(image, "113", "148 138 91");
+ IupSetAttribute(image, "114", "152 143 95");
+ IupSetAttribute(image, "115", "157 147 87");
+ IupSetAttribute(image, "116", "135 130 100");
+ IupSetAttribute(image, "117", "139 133 101");
+ IupSetAttribute(image, "118", "142 136 101");
+ IupSetAttribute(image, "119", "132 133 114");
+ IupSetAttribute(image, "120", "128 132 126");
+ IupSetAttribute(image, "121", "134 137 127");
+ IupSetAttribute(image, "122", "143 138 114");
+ IupSetAttribute(image, "123", "148 139 101");
+ IupSetAttribute(image, "124", "146 140 108");
+ IupSetAttribute(image, "125", "154 146 100");
+ IupSetAttribute(image, "126", "154 147 105");
+ IupSetAttribute(image, "127", "145 144 118");
+ IupSetAttribute(image, "128", "150 149 122");
+ IupSetAttribute(image, "129", "152 149 116");
+ IupSetAttribute(image, "130", "157 155 124");
+ IupSetAttribute(image, "131", "160 150 94");
+ IupSetAttribute(image, "132", "165 155 92");
+ IupSetAttribute(image, "133", "163 153 101");
+ IupSetAttribute(image, "134", "163 155 104");
+ IupSetAttribute(image, "135", "168 158 102");
+ IupSetAttribute(image, "136", "169 155 106");
+ IupSetAttribute(image, "137", "160 155 114");
+ IupSetAttribute(image, "138", "175 164 101");
+ IupSetAttribute(image, "139", "175 163 112");
+ IupSetAttribute(image, "140", "172 165 123");
+ IupSetAttribute(image, "141", "179 163 109");
+ IupSetAttribute(image, "142", "181 170 107");
+ IupSetAttribute(image, "143", "184 166 110");
+ IupSetAttribute(image, "144", "187 173 101");
+ IupSetAttribute(image, "145", "186 172 105");
+ IupSetAttribute(image, "146", "180 171 122");
+ IupSetAttribute(image, "147", "186 171 123");
+ IupSetAttribute(image, "148", "191 177 107");
+ IupSetAttribute(image, "149", "188 179 118");
+ IupSetAttribute(image, "150", "196 181 108");
+ IupSetAttribute(image, "151", "202 187 108");
+ IupSetAttribute(image, "152", "196 180 126");
+ IupSetAttribute(image, "153", "205 188 127");
+ IupSetAttribute(image, "154", "209 194 112");
+ IupSetAttribute(image, "155", "131 132 132");
+ IupSetAttribute(image, "156", "130 137 143");
+ IupSetAttribute(image, "157", "143 143 128");
+ IupSetAttribute(image, "158", "139 139 139");
+ IupSetAttribute(image, "159", "128 137 149");
+ IupSetAttribute(image, "160", "128 139 157");
+ IupSetAttribute(image, "161", "140 144 135");
+ IupSetAttribute(image, "162", "143 146 138");
+ IupSetAttribute(image, "163", "138 146 157");
+ IupSetAttribute(image, "164", "148 143 135");
+ IupSetAttribute(image, "165", "149 142 142");
+ IupSetAttribute(image, "166", "152 149 129");
+ IupSetAttribute(image, "167", "155 153 129");
+ IupSetAttribute(image, "168", "154 152 140");
+ IupSetAttribute(image, "169", "148 148 147");
+ IupSetAttribute(image, "170", "154 156 154");
+ IupSetAttribute(image, "171", "128 142 177");
+ IupSetAttribute(image, "172", "157 160 151");
+ IupSetAttribute(image, "173", "153 160 162");
+ IupSetAttribute(image, "174", "157 164 170");
+ IupSetAttribute(image, "175", "158 167 178");
+ IupSetAttribute(image, "176", "172 162 130");
+ IupSetAttribute(image, "177", "164 165 145");
+ IupSetAttribute(image, "178", "162 164 153");
+ IupSetAttribute(image, "179", "169 165 148");
+ IupSetAttribute(image, "180", "176 171 133");
+ IupSetAttribute(image, "181", "179 175 153");
+ IupSetAttribute(image, "182", "185 179 130");
+ IupSetAttribute(image, "183", "187 179 139");
+ IupSetAttribute(image, "184", "191 184 143");
+ IupSetAttribute(image, "185", "183 178 149");
+ IupSetAttribute(image, "186", "180 177 156");
+ IupSetAttribute(image, "187", "184 179 153");
+ IupSetAttribute(image, "188", "188 186 158");
+ IupSetAttribute(image, "189", "163 163 163");
+ IupSetAttribute(image, "190", "160 168 172");
+ IupSetAttribute(image, "191", "170 170 170");
+ IupSetAttribute(image, "192", "160 168 177");
+ IupSetAttribute(image, "193", "181 175 165");
+ IupSetAttribute(image, "194", "191 187 164");
+ IupSetAttribute(image, "195", "180 180 180");
+ IupSetAttribute(image, "196", "188 189 179");
+ IupSetAttribute(image, "197", "186 186 186");
+ IupSetAttribute(image, "198", "133 151 197");
+ IupSetAttribute(image, "199", "129 151 209");
+ IupSetAttribute(image, "200", "155 166 193");
+ IupSetAttribute(image, "201", "133 165 248");
+ IupSetAttribute(image, "202", "151 178 250");
+ IupSetAttribute(image, "203", "156 182 250");
+ IupSetAttribute(image, "204", "172 178 193");
+ IupSetAttribute(image, "205", "177 182 196");
+ IupSetAttribute(image, "206", "171 192 247");
+ IupSetAttribute(image, "207", "172 194 250");
+ IupSetAttribute(image, "208", "178 199 251");
+ IupSetAttribute(image, "209", "192 177 130");
+ IupSetAttribute(image, "210", "195 187 133");
+ IupSetAttribute(image, "211", "192 188 151");
+ IupSetAttribute(image, "212", "194 188 155");
+ IupSetAttribute(image, "213", "192 190 163");
+ IupSetAttribute(image, "214", "192 189 174");
+ IupSetAttribute(image, "215", "194 192 169");
+ IupSetAttribute(image, "216", "202 196 164");
+ IupSetAttribute(image, "217", "206 200 166");
+ IupSetAttribute(image, "218", "205 201 175");
+ IupSetAttribute(image, "219", "197 198 186");
+ IupSetAttribute(image, "220", "207 203 185");
+ IupSetAttribute(image, "221", "208 203 175");
+ IupSetAttribute(image, "222", "210 205 179");
+ IupSetAttribute(image, "223", "208 205 188");
+ IupSetAttribute(image, "224", "210 209 189");
+ IupSetAttribute(image, "225", "194 194 194");
+ IupSetAttribute(image, "226", "199 200 204");
+ IupSetAttribute(image, "227", "206 207 195");
+ IupSetAttribute(image, "228", "202 203 202");
+ IupSetAttribute(image, "229", "202 206 211");
+ IupSetAttribute(image, "230", "212 211 195");
+ IupSetAttribute(image, "231", "210 211 203");
+ IupSetAttribute(image, "232", "217 215 205");
+ IupSetAttribute(image, "233", "211 212 209");
+ IupSetAttribute(image, "234", "218 214 210");
+ IupSetAttribute(image, "235", "221 219 212");
+ IupSetAttribute(image, "236", "220 221 221");
+ IupSetAttribute(image, "237", "205 211 241");
+ IupSetAttribute(image, "238", "209 212 240");
+ IupSetAttribute(image, "239", "223 224 222");
+ IupSetAttribute(image, "240", "221 226 242");
+ IupSetAttribute(image, "241", "224 223 216");
+ IupSetAttribute(image, "242", "227 225 220");
+ IupSetAttribute(image, "243", "227 227 226");
+ IupSetAttribute(image, "244", "234 230 229");
+ IupSetAttribute(image, "245", "233 232 227");
+ IupSetAttribute(image, "246", "234 234 233");
+ IupSetAttribute(image, "247", "234 237 244");
+ IupSetAttribute(image, "248", "237 240 248");
+ IupSetAttribute(image, "249", "243 243 243");
+ IupSetAttribute(image, "250", "243 245 250");
+ IupSetAttribute(image, "251", "247 248 253");
+ IupSetAttribute(image, "252", "251 251 251");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_BR8(void)
+{
+ unsigned char imgdata[] = {
+ 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+ 155, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 155,
+ 155, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 155,
+ 155, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 155,
+ 155, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 155,
+ 155, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 155,
+ 155, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 155,
+ 155, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 77, 155,
+ 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+ 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+ 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+ 155, 145, 145, 145, 145, 142, 136, 155, 155, 155, 155, 151, 139, 142, 138, 145, 145, 149, 154, 152, 153, 155, 155, 153, 152, 134, 138, 154, 154, 145, 145, 155,
+ 155, 3, 3, 3, 3, 3, 55, 155, 155, 155, 155, 151, 112, 95, 46, 3, 3, 9, 27, 131, 154, 155, 155, 154, 131, 109, 72, 20, 7, 3, 3, 155,
+ 155, 4, 4, 4, 4, 10, 87, 155, 155, 148, 146, 132, 150, 154, 130, 41, 11, 11, 56, 155, 155, 154, 149, 150, 149, 154, 153, 66, 8, 4, 4, 155,
+ 155, 4, 4, 4, 4, 21, 114, 155, 155, 57, 37, 47, 94, 153, 154, 76, 0, 6, 86, 155, 155, 96, 51, 52, 70, 130, 154, 92, 19, 4, 4, 155,
+ 155, 4, 4, 4, 4, 44, 147, 144, 111, 9, 7, 12, 61, 154, 153, 63, 8, 13, 117, 137, 152, 40, 1, 2, 25, 123, 152, 85, 7, 4, 4, 155,
+ 155, 4, 4, 4, 4, 74, 147, 142, 115, 91, 89, 90, 121, 137, 108, 23, 4, 43, 140, 154, 125, 52, 53, 54, 103, 152, 126, 45, 16, 4, 4, 155,
+ 155, 4, 4, 3, 9, 101, 149, 152, 141, 142, 151, 137, 142, 124, 36, 4, 4, 75, 141, 153, 154, 149, 150, 155, 155, 118, 50, 4, 4, 4, 4, 155,
+ 155, 4, 4, 9, 29, 141, 153, 129, 67, 60, 65, 108, 137, 135, 92, 4, 4, 105, 138, 142, 113, 106, 116, 155, 155, 104, 30, 4, 4, 4, 4, 155,
+ 155, 4, 4, 5, 71, 155, 155, 99, 6, 18, 17, 64, 149, 137, 107, 8, 31, 155, 155, 128, 35, 4, 9, 102, 137, 141, 58, 4, 4, 4, 4, 155,
+ 155, 4, 4, 7, 84, 155, 155, 93, 39, 38, 48, 110, 133, 150, 97, 5, 69, 155, 155, 100, 2, 4, 4, 82, 152, 154, 59, 4, 4, 4, 4, 155,
+ 155, 4, 4, 15, 119, 155, 155, 155, 155, 155, 155, 141, 140, 127, 46, 10, 88, 155, 155, 73, 5, 4, 4, 83, 149, 141, 62, 4, 4, 4, 4, 155,
+ 155, 4, 4, 49, 143, 155, 155, 155, 155, 155, 155, 122, 98, 46, 3, 14, 120, 155, 155, 42, 5, 4, 4, 81, 149, 140, 68, 4, 4, 4, 4, 155,
+ 155, 4, 4, 22, 34, 33, 33, 33, 33, 33, 26, 4, 4, 4, 4, 15, 28, 33, 33, 9, 4, 4, 4, 24, 32, 32, 24, 4, 4, 4, 4, 155,
+ 155, 4, 4, 3, 3, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 8, 3, 4, 4, 4, 4, 4, 4, 3, 8, 8, 3, 4, 4, 4, 4, 155,
+ 155, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 155,
+ 155, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 155,
+ 155, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 155,
+ 155, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 155,
+ 155, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 155,
+ 155, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 155,
+ 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155};
+
+ Ihandle* image = IupImage(32, 32, imgdata);
+
+ IupSetAttribute(image, "0", "1 132 95");
+ IupSetAttribute(image, "1", "2 131 97");
+ IupSetAttribute(image, "2", "2 132 96");
+ IupSetAttribute(image, "3", "1 132 97");
+ IupSetAttribute(image, "4", "0 132 98");
+ IupSetAttribute(image, "5", "2 133 99");
+ IupSetAttribute(image, "6", "1 134 96");
+ IupSetAttribute(image, "7", "1 134 97");
+ IupSetAttribute(image, "8", "1 134 98");
+ IupSetAttribute(image, "9", "1 134 99");
+ IupSetAttribute(image, "10", "2 132 100");
+ IupSetAttribute(image, "11", "2 135 100");
+ IupSetAttribute(image, "12", "5 133 96");
+ IupSetAttribute(image, "13", "7 133 97");
+ IupSetAttribute(image, "14", "5 134 98");
+ IupSetAttribute(image, "15", "6 134 99");
+ IupSetAttribute(image, "16", "5 134 102");
+ IupSetAttribute(image, "17", "0 136 96");
+ IupSetAttribute(image, "18", "0 136 97");
+ IupSetAttribute(image, "19", "1 136 98");
+ IupSetAttribute(image, "20", "2 136 99");
+ IupSetAttribute(image, "21", "7 136 99");
+ IupSetAttribute(image, "22", "12 138 105");
+ IupSetAttribute(image, "23", "14 140 108");
+ IupSetAttribute(image, "24", "15 142 108");
+ IupSetAttribute(image, "25", "17 139 108");
+ IupSetAttribute(image, "26", "18 141 109");
+ IupSetAttribute(image, "27", "31 151 111");
+ IupSetAttribute(image, "28", "27 149 116");
+ IupSetAttribute(image, "29", "31 150 112");
+ IupSetAttribute(image, "30", "33 146 115");
+ IupSetAttribute(image, "31", "34 148 116");
+ IupSetAttribute(image, "32", "32 149 118");
+ IupSetAttribute(image, "33", "32 148 119");
+ IupSetAttribute(image, "34", "32 151 119");
+ IupSetAttribute(image, "35", "37 146 115");
+ IupSetAttribute(image, "36", "60 157 125");
+ IupSetAttribute(image, "37", "78 167 126");
+ IupSetAttribute(image, "38", "83 165 126");
+ IupSetAttribute(image, "39", "82 166 127");
+ IupSetAttribute(image, "40", "60 162 130");
+ IupSetAttribute(image, "41", "61 161 132");
+ IupSetAttribute(image, "42", "75 164 137");
+ IupSetAttribute(image, "43", "72 166 139");
+ IupSetAttribute(image, "44", "75 166 140");
+ IupSetAttribute(image, "45", "76 166 140");
+ IupSetAttribute(image, "46", "78 168 140");
+ IupSetAttribute(image, "47", "82 165 136");
+ IupSetAttribute(image, "48", "93 171 141");
+ IupSetAttribute(image, "49", "80 165 145");
+ IupSetAttribute(image, "50", "92 171 146");
+ IupSetAttribute(image, "51", "94 178 155");
+ IupSetAttribute(image, "52", "93 178 156");
+ IupSetAttribute(image, "53", "94 179 157");
+ IupSetAttribute(image, "54", "102 179 156");
+ IupSetAttribute(image, "55", "104 182 159");
+ IupSetAttribute(image, "56", "109 182 158");
+ IupSetAttribute(image, "57", "117 186 148");
+ IupSetAttribute(image, "58", "102 180 160");
+ IupSetAttribute(image, "59", "106 181 162");
+ IupSetAttribute(image, "60", "105 182 162");
+ IupSetAttribute(image, "61", "109 183 164");
+ IupSetAttribute(image, "62", "104 184 163");
+ IupSetAttribute(image, "63", "107 185 164");
+ IupSetAttribute(image, "64", "110 184 164");
+ IupSetAttribute(image, "65", "111 186 164");
+ IupSetAttribute(image, "66", "112 183 160");
+ IupSetAttribute(image, "67", "113 185 163");
+ IupSetAttribute(image, "68", "114 186 161");
+ IupSetAttribute(image, "69", "114 186 162");
+ IupSetAttribute(image, "70", "112 185 167");
+ IupSetAttribute(image, "71", "113 186 164");
+ IupSetAttribute(image, "72", "121 189 160");
+ IupSetAttribute(image, "73", "121 190 169");
+ IupSetAttribute(image, "74", "122 191 172");
+ IupSetAttribute(image, "75", "124 191 171");
+ IupSetAttribute(image, "76", "124 192 172");
+ IupSetAttribute(image, "77", "239 194 8");
+ IupSetAttribute(image, "78", "243 193 6");
+ IupSetAttribute(image, "79", "244 194 4");
+ IupSetAttribute(image, "80", "242 194 8");
+ IupSetAttribute(image, "81", "129 196 178");
+ IupSetAttribute(image, "82", "137 197 182");
+ IupSetAttribute(image, "83", "137 198 182");
+ IupSetAttribute(image, "84", "149 199 182");
+ IupSetAttribute(image, "85", "148 199 184");
+ IupSetAttribute(image, "86", "147 201 182");
+ IupSetAttribute(image, "87", "146 202 186");
+ IupSetAttribute(image, "88", "150 201 186");
+ IupSetAttribute(image, "89", "152 203 183");
+ IupSetAttribute(image, "90", "155 205 182");
+ IupSetAttribute(image, "91", "152 204 183");
+ IupSetAttribute(image, "92", "157 202 189");
+ IupSetAttribute(image, "93", "169 209 186");
+ IupSetAttribute(image, "94", "158 209 194");
+ IupSetAttribute(image, "95", "163 208 195");
+ IupSetAttribute(image, "96", "162 210 194");
+ IupSetAttribute(image, "97", "160 210 197");
+ IupSetAttribute(image, "98", "167 209 195");
+ IupSetAttribute(image, "99", "171 210 197");
+ IupSetAttribute(image, "100", "174 209 199");
+ IupSetAttribute(image, "101", "171 213 201");
+ IupSetAttribute(image, "102", "174 213 200");
+ IupSetAttribute(image, "103", "170 216 199");
+ IupSetAttribute(image, "104", "189 218 207");
+ IupSetAttribute(image, "105", "189 222 207");
+ IupSetAttribute(image, "106", "190 222 215");
+ IupSetAttribute(image, "107", "189 224 216");
+ IupSetAttribute(image, "108", "194 220 213");
+ IupSetAttribute(image, "109", "194 226 214");
+ IupSetAttribute(image, "110", "198 225 218");
+ IupSetAttribute(image, "111", "211 230 222");
+ IupSetAttribute(image, "112", "221 227 223");
+ IupSetAttribute(image, "113", "212 230 226");
+ IupSetAttribute(image, "114", "215 233 227");
+ IupSetAttribute(image, "115", "216 232 225");
+ IupSetAttribute(image, "116", "219 235 228");
+ IupSetAttribute(image, "117", "216 237 233");
+ IupSetAttribute(image, "118", "221 239 234");
+ IupSetAttribute(image, "119", "229 239 236");
+ IupSetAttribute(image, "120", "225 240 236");
+ IupSetAttribute(image, "121", "227 242 239");
+ IupSetAttribute(image, "122", "241 245 238");
+ IupSetAttribute(image, "123", "245 246 238");
+ IupSetAttribute(image, "124", "240 245 244");
+ IupSetAttribute(image, "125", "240 247 244");
+ IupSetAttribute(image, "126", "247 247 244");
+ IupSetAttribute(image, "127", "241 250 243");
+ IupSetAttribute(image, "128", "243 249 245");
+ IupSetAttribute(image, "129", "242 250 244");
+ IupSetAttribute(image, "130", "247 248 242");
+ IupSetAttribute(image, "131", "249 249 247");
+ IupSetAttribute(image, "132", "251 250 248");
+ IupSetAttribute(image, "133", "248 251 249");
+ IupSetAttribute(image, "134", "251 250 250");
+ IupSetAttribute(image, "135", "251 251 251");
+ IupSetAttribute(image, "136", "249 249 252");
+ IupSetAttribute(image, "137", "250 251 252");
+ IupSetAttribute(image, "138", "249 251 253");
+ IupSetAttribute(image, "139", "248 252 250");
+ IupSetAttribute(image, "140", "249 252 251");
+ IupSetAttribute(image, "141", "249 252 252");
+ IupSetAttribute(image, "142", "250 252 253");
+ IupSetAttribute(image, "143", "250 254 252");
+ IupSetAttribute(image, "144", "250 254 253");
+ IupSetAttribute(image, "145", "251 254 254");
+ IupSetAttribute(image, "146", "253 251 250");
+ IupSetAttribute(image, "147", "252 251 251");
+ IupSetAttribute(image, "148", "254 248 252");
+ IupSetAttribute(image, "149", "252 250 252");
+ IupSetAttribute(image, "150", "252 251 253");
+ IupSetAttribute(image, "151", "252 252 251");
+ IupSetAttribute(image, "152", "253 252 252");
+ IupSetAttribute(image, "153", "252 252 253");
+ IupSetAttribute(image, "154", "253 252 254");
+ IupSetAttribute(image, "155", "255 255 255");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_Tecgraf8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 70, 76, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 33, 44, 43, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 32, 55, 44, 43, 52, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 43, 44, 40, 19, 42, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 44, 67, 255, 12, 23, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 36, 58, 76, 255, 50, 15, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 44, 58, 76, 255, 76, 9, 39, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 44, 77, 255, 255, 255, 34, 31, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 44, 76, 255, 255, 255, 59, 29, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 44, 76, 255, 255, 255, 63, 31, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 74, 40, 52, 66, 73, 73, 73, 48, 31, 60, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 76, 78, 70, 59, 30, 4, 1, 9, 55, 39, 32, 29, 29, 28, 28, 28, 28, 36, 53, 71, 79, 76, 255, 255, 255, 255, 255,
+ 255, 255, 76, 73, 53, 29, 42, 43, 58, 75, 21, 10, 17, 57, 76, 76, 71, 70, 40, 22, 21, 14, 7, 9, 9, 14, 27, 51, 73, 76, 255, 255,
+ 255, 76, 40, 27, 31, 55, 65, 76, 76, 255, 255, 255, 28, 58, 255, 255, 255, 255, 82, 43, 65, 255, 76, 69, 46, 11, 3, 16, 30, 41, 76, 255,
+ 255, 70, 27, 27, 43, 81, 255, 255, 255, 255, 255, 255, 22, 58, 255, 255, 255, 255, 82, 44, 65, 255, 255, 255, 255, 255, 69, 12, 32, 32, 62, 255,
+ 255, 47, 13, 28, 38, 76, 255, 255, 255, 255, 255, 255, 21, 55, 255, 255, 255, 255, 82, 57, 67, 255, 255, 255, 255, 255, 76, 52, 32, 42, 62, 255,
+ 255, 76, 5, 5, 14, 28, 54, 76, 76, 255, 255, 255, 21, 44, 255, 255, 255, 255, 82, 65, 67, 255, 255, 255, 80, 71, 39, 44, 44, 44, 76, 255,
+ 255, 255, 76, 35, 5, 3, 6, 8, 16, 28, 53, 66, 28, 39, 71, 76, 76, 76, 60, 43, 43, 67, 64, 57, 44, 44, 56, 55, 76, 76, 255, 255,
+ 255, 255, 255, 255, 255, 72, 47, 25, 5, 2, 4, 9, 15, 19, 22, 27, 29, 30, 33, 43, 52, 57, 39, 38, 66, 76, 76, 76, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 50, 18, 15, 40, 59, 63, 63, 48, 37, 48, 79, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 28, 76, 255, 255, 255, 80, 55, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 22, 76, 255, 255, 255, 80, 44, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 20, 76, 255, 255, 255, 67, 44, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 13, 57, 255, 255, 76, 52, 44, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 5, 39, 76, 255, 79, 55, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24, 22, 68, 255, 60, 43, 71, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 45, 9, 42, 64, 42, 39, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 3, 32, 39, 39, 43, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24, 7, 39, 39, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 26, 40, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(32, 32, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "8 16 24");
+ IupSetAttribute(image, "2", "33 33 41");
+ IupSetAttribute(image, "3", "33 33 49");
+ IupSetAttribute(image, "4", "41 49 66");
+ IupSetAttribute(image, "5", "49 57 66");
+ IupSetAttribute(image, "6", "49 57 74");
+ IupSetAttribute(image, "7", "57 66 82");
+ IupSetAttribute(image, "8", "57 74 90");
+ IupSetAttribute(image, "9", "66 74 90");
+ IupSetAttribute(image, "10", "74 74 82");
+ IupSetAttribute(image, "11", "74 82 82");
+ IupSetAttribute(image, "12", "74 82 90");
+ IupSetAttribute(image, "13", "66 74 99");
+ IupSetAttribute(image, "14", "74 82 99");
+ IupSetAttribute(image, "15", "74 82 107");
+ IupSetAttribute(image, "16", "74 90 107");
+ IupSetAttribute(image, "17", "82 90 107");
+ IupSetAttribute(image, "18", "90 90 107");
+ IupSetAttribute(image, "19", "82 90 115");
+ IupSetAttribute(image, "20", "82 99 115");
+ IupSetAttribute(image, "21", "90 99 115");
+ IupSetAttribute(image, "22", "90 99 123");
+ IupSetAttribute(image, "23", "90 107 123");
+ IupSetAttribute(image, "24", "99 99 107");
+ IupSetAttribute(image, "25", "107 107 115");
+ IupSetAttribute(image, "26", "123 123 123");
+ IupSetAttribute(image, "27", "90 107 132");
+ IupSetAttribute(image, "28", "99 107 132");
+ IupSetAttribute(image, "29", "99 115 140");
+ IupSetAttribute(image, "30", "107 115 140");
+ IupSetAttribute(image, "31", "107 115 148");
+ IupSetAttribute(image, "32", "107 123 148");
+ IupSetAttribute(image, "33", "107 123 156");
+ IupSetAttribute(image, "34", "115 123 132");
+ IupSetAttribute(image, "35", "123 123 132");
+ IupSetAttribute(image, "36", "115 123 148");
+ IupSetAttribute(image, "37", "115 123 156");
+ IupSetAttribute(image, "38", "115 132 148");
+ IupSetAttribute(image, "39", "115 132 156");
+ IupSetAttribute(image, "40", "123 132 148");
+ IupSetAttribute(image, "41", "123 132 156");
+ IupSetAttribute(image, "42", "115 132 165");
+ IupSetAttribute(image, "43", "123 140 165");
+ IupSetAttribute(image, "44", "123 140 173");
+ IupSetAttribute(image, "45", "132 132 140");
+ IupSetAttribute(image, "46", "132 140 140");
+ IupSetAttribute(image, "47", "140 140 140");
+ IupSetAttribute(image, "48", "132 140 156");
+ IupSetAttribute(image, "49", "148 148 156");
+ IupSetAttribute(image, "50", "156 156 156");
+ IupSetAttribute(image, "51", "132 140 165");
+ IupSetAttribute(image, "52", "132 148 173");
+ IupSetAttribute(image, "53", "140 148 165");
+ IupSetAttribute(image, "54", "140 156 173");
+ IupSetAttribute(image, "55", "132 148 181");
+ IupSetAttribute(image, "56", "132 156 189");
+ IupSetAttribute(image, "57", "140 156 181");
+ IupSetAttribute(image, "58", "140 156 189");
+ IupSetAttribute(image, "59", "148 156 165");
+ IupSetAttribute(image, "60", "148 156 173");
+ IupSetAttribute(image, "61", "156 156 165");
+ IupSetAttribute(image, "62", "148 156 181");
+ IupSetAttribute(image, "63", "156 165 173");
+ IupSetAttribute(image, "64", "148 165 181");
+ IupSetAttribute(image, "65", "148 165 189");
+ IupSetAttribute(image, "66", "156 165 181");
+ IupSetAttribute(image, "67", "156 165 189");
+ IupSetAttribute(image, "68", "156 173 189");
+ IupSetAttribute(image, "69", "165 165 173");
+ IupSetAttribute(image, "70", "165 173 181");
+ IupSetAttribute(image, "71", "165 173 189");
+ IupSetAttribute(image, "72", "173 173 181");
+ IupSetAttribute(image, "73", "173 181 189");
+ IupSetAttribute(image, "74", "189 189 189");
+ IupSetAttribute(image, "75", "148 165 198");
+ IupSetAttribute(image, "76", "173 181 198");
+ IupSetAttribute(image, "77", "173 189 206");
+ IupSetAttribute(image, "78", "181 181 198");
+ IupSetAttribute(image, "79", "181 189 198");
+ IupSetAttribute(image, "80", "181 189 206");
+ IupSetAttribute(image, "81", "189 198 214");
+ IupSetAttribute(image, "82", "198 198 198");
+ IupSetAttribute(image, "83", "0 0 0");
+ IupSetAttribute(image, "84", "0 0 0");
+ IupSetAttribute(image, "85", "0 0 0");
+ IupSetAttribute(image, "86", "0 0 0");
+ IupSetAttribute(image, "87", "0 0 0");
+ IupSetAttribute(image, "88", "0 0 0");
+ IupSetAttribute(image, "89", "0 0 0");
+ IupSetAttribute(image, "90", "0 0 0");
+ IupSetAttribute(image, "91", "0 0 0");
+ IupSetAttribute(image, "92", "0 0 0");
+ IupSetAttribute(image, "93", "0 0 0");
+ IupSetAttribute(image, "94", "0 0 0");
+ IupSetAttribute(image, "95", "0 0 0");
+ IupSetAttribute(image, "96", "0 0 0");
+ IupSetAttribute(image, "97", "0 0 0");
+ IupSetAttribute(image, "98", "0 0 0");
+ IupSetAttribute(image, "99", "0 0 0");
+ IupSetAttribute(image, "100", "0 0 0");
+ IupSetAttribute(image, "101", "0 0 0");
+ IupSetAttribute(image, "102", "0 0 0");
+ IupSetAttribute(image, "103", "0 0 0");
+ IupSetAttribute(image, "104", "0 0 0");
+ IupSetAttribute(image, "105", "0 0 0");
+ IupSetAttribute(image, "106", "0 0 0");
+ IupSetAttribute(image, "107", "0 0 0");
+ IupSetAttribute(image, "108", "0 0 0");
+ IupSetAttribute(image, "109", "0 0 0");
+ IupSetAttribute(image, "110", "0 0 0");
+ IupSetAttribute(image, "111", "0 0 0");
+ IupSetAttribute(image, "112", "0 0 0");
+ IupSetAttribute(image, "113", "0 0 0");
+ IupSetAttribute(image, "114", "0 0 0");
+ IupSetAttribute(image, "115", "0 0 0");
+ IupSetAttribute(image, "116", "0 0 0");
+ IupSetAttribute(image, "117", "0 0 0");
+ IupSetAttribute(image, "118", "0 0 0");
+ IupSetAttribute(image, "119", "0 0 0");
+ IupSetAttribute(image, "120", "0 0 0");
+ IupSetAttribute(image, "121", "0 0 0");
+ IupSetAttribute(image, "122", "0 0 0");
+ IupSetAttribute(image, "123", "0 0 0");
+ IupSetAttribute(image, "124", "0 0 0");
+ IupSetAttribute(image, "125", "0 0 0");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
diff --git a/iup/srcimglib/iup_imglib_logos.h b/iup/srcimglib/iup_imglib_logos.h
new file mode 100755
index 0000000..9d527f3
--- /dev/null
+++ b/iup/srcimglib/iup_imglib_logos.h
@@ -0,0 +1,1319 @@
+static Ihandle* load_image_LogoBR(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 26, 150, 95, 255, 252, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 233, 243, 238, 255, 176, 217, 198, 255, 73, 171, 127, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 124, 194, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 231, 242, 237, 255, 159, 210, 186, 255, 35, 154, 101, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 89, 179, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 123, 194, 162, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 192, 226, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 244, 238, 255, 31, 154, 100, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 163, 213, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 253, 255, 36, 156, 103, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 16, 146, 89, 255, 250, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 163, 213, 191, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 255, 234, 245, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 246, 242, 255, 90, 181, 141, 255, 90, 181, 141, 255, 90, 181, 141, 255, 92, 181, 142, 255, 155, 209, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 185, 147, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 85, 177, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, 214, 193, 255, 98, 183, 145, 255, 98, 183, 145, 255, 98, 183, 145, 255, 111, 189, 155, 255, 216, 237, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 245, 240, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 55, 164, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 167, 215, 193, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 230, 243, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 184, 147, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 158, 211, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 164, 116, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 66, 169, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 249, 247, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 129, 197, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 182, 144, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 38, 157, 105, 255, 250, 253, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, 159, 108, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 231, 243, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 246, 241, 255, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 90, 180, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 229, 215, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 202, 231, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, 213, 192, 255, 147, 205, 179, 255, 147, 205, 179, 255, 147, 205, 179, 255, 159, 211, 188, 255, 238, 247, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 216, 195, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 51, 162, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 215, 194, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 61, 166, 120, 255, 229, 243, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 183, 145, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 150, 94, 255, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 224, 208, 255, 12, 145, 87, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 125, 196, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 249, 247, 255, 230, 244, 238, 255, 230, 244, 238, 255, 230, 244, 238, 255, 239, 247, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 217, 197, 255, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 95, 182, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 252, 250, 255, 67, 169, 124, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 199, 229, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 254, 253, 255, 146, 205, 179, 255, 5, 142, 83, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 169, 215, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 222, 204, 255, 170, 216, 196, 255, 170, 216, 196, 255, 171, 216, 196, 255, 201, 230, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 248, 245, 255, 25, 151, 96, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 149, 92, 255, 252, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 226, 211, 255, 19, 148, 92, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 142, 82, 255, 238, 247, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 247, 243, 255, 4, 142, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 177, 219, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 187, 151, 255, 0, 140, 79, 255, 0, 140, 79, 255, 92, 180, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 218, 198, 255, 99, 185, 147, 255, 99, 185, 147, 255, 104, 186, 150, 255, 168, 215, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 207, 182, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 61, 167, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 169, 215, 195, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 157, 210, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 125, 196, 164, 255, 0, 140, 79, 255, 0, 140, 79, 255, 165, 214, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 168, 122, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 219, 238, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 226, 210, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 135, 200, 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 182, 144, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 56, 164, 117, 255, 244, 250, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 182, 143, 255, 0, 140, 79, 255, 4, 141, 81, 255, 236, 246, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 248, 245, 255, 5, 142, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 195, 227, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 231, 218, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 208, 233, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 233, 221, 255, 195, 227, 213, 255, 195, 227, 213, 255, 195, 227, 213, 255, 213, 235, 225, 255, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 251, 250, 255, 22, 149, 94, 255, 0, 140, 79, 255, 58, 165, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 218, 199, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 186, 223, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 235, 225, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 28, 152, 98, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, 194, 162, 255, 0, 140, 79, 255, 0, 140, 79, 255, 132, 199, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, 186, 149, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 178, 219, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 240, 232, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 101, 185, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 251, 249, 255, 110, 189, 154, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 205, 232, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 31, 153, 100, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 169, 215, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 244, 239, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 115, 191, 157, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 178, 220, 201, 255, 169, 215, 195, 255, 145, 205, 178, 255, 98, 184, 146, 255, 22, 149, 93, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 145, 87, 255, 188, 223, 207, 255, 189, 224, 208, 255, 189, 224, 208, 255, 189, 224, 208, 255, 165, 213, 191, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 140, 202, 174, 255, 221, 239, 231, 255, 221, 239, 231, 255, 221, 239, 231, 255, 210, 233, 222, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_DeviceFax(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 221, 232, 47, 149, 150, 184, 146, 89, 89, 145, 238, 89, 89, 149, 246, 104, 105, 168, 248, 112, 114, 184, 255, 117, 120, 198, 255, 123, 126, 209, 255, 121, 124, 209, 255, 114, 116, 202, 255, 108, 110, 190, 255, 99, 101, 168, 244, 80, 80, 141, 249, 84, 85, 143, 242, 162, 162, 182, 109, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 209, 225, 63, 114, 115, 162, 204, 92, 93, 151, 245, 127, 129, 196, 255, 152, 157, 234, 255, 168, 173, 255, 255, 166, 171, 255, 255, 164, 168, 255, 255, 161, 165, 255, 255, 158, 162, 255, 255, 150, 154, 248, 255, 144, 147, 243, 255, 139, 143, 243, 255, 133, 136, 243, 255, 128, 132, 248, 255, 113, 117, 238, 255, 85, 85, 148, 250, 124, 124, 143, 157, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, 250, 11, 118, 119, 165, 196, 98, 99, 155, 245, 145, 148, 209, 255, 181, 186, 254, 255, 183, 187, 255, 255, 180, 184, 255, 255, 171, 175, 251, 255, 143, 146, 219, 255, 130, 132, 202, 255, 135, 138, 205, 255, 136, 140, 205, 255, 147, 151, 213, 255, 153, 157, 218, 255, 152, 157, 218, 255, 152, 157, 218, 255, 146, 150, 213, 255, 130, 134, 205, 255, 110, 112, 194, 255, 81, 81, 147, 254, 119, 119, 135, 153, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 238, 238, 244, 23, 98, 99, 152, 224, 131, 133, 186, 255, 197, 203, 255, 255, 196, 201, 255, 255, 191, 195, 255, 255, 173, 176, 241, 255, 133, 136, 202, 255, 141, 145, 207, 255, 179, 186, 237, 255, 203, 211, 255, 255, 202, 210, 255, 255, 201, 209, 255, 255, 199, 207, 255, 255, 199, 206, 255, 255, 198, 206, 255, 255, 198, 205, 255, 255, 198, 206, 255, 255, 199, 207, 255, 255, 199, 207, 255, 255, 172, 179, 240, 255, 81, 82, 139, 251, 68, 68, 71, 105, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, 158, 221, 148, 150, 200, 255, 208, 213, 255, 255, 206, 210, 255, 255, 185, 189, 243, 255, 137, 140, 202, 255, 152, 156, 213, 255, 201, 208, 252, 255, 203, 211, 255, 255, 201, 209, 255, 255, 200, 208, 255, 255, 200, 207, 255, 255, 199, 207, 255, 255, 199, 206, 255, 255, 198, 206, 255, 255, 198, 205, 255, 255, 196, 204, 255, 255, 195, 202, 255, 255, 191, 198, 249, 255, 188, 194, 242, 255, 182, 187, 231, 255, 133, 136, 182, 255, 116, 116, 142, 229, 142, 142, 142, 102, 207, 207, 207, 70, 212, 212, 212, 68, 178, 178, 178, 21, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 253, 253, 254, 3, 91, 91, 147, 237, 169, 173, 222, 255, 217, 222, 255, 255, 188, 192, 240, 255, 134, 137, 197, 255, 201, 209, 252, 255, 205, 212, 255, 255, 203, 211, 255, 255, 203, 210, 255, 255, 202, 210, 255, 255, 201, 209, 255, 255, 200, 208, 255, 255, 197, 205, 255, 255, 187, 193, 234, 255, 175, 179, 207, 255, 167, 169, 187, 255, 159, 160, 168, 255, 153, 154, 156, 255, 154, 154, 157, 255, 157, 158, 163, 255, 163, 165, 175, 255, 161, 164, 176, 255, 161, 164, 174, 254, 159, 162, 172, 249, 160, 164, 174, 247, 161, 164, 175, 247, 156, 156, 159, 246, 178, 178, 177, 158, 153, 153, 153, 37, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 164, 164, 182, 102, 83, 84, 145, 253, 165, 169, 219, 255, 150, 154, 208, 255, 204, 212, 254, 255, 206, 213, 255, 255, 205, 212, 255, 255, 204, 212, 255, 255, 203, 211, 255, 255, 200, 208, 255, 255, 190, 196, 237, 255, 171, 175, 195, 255, 156, 157, 161, 255, 161, 162, 165, 255, 183, 187, 193, 255, 197, 203, 211, 255, 210, 218, 232, 255, 221, 232, 251, 255, 221, 233, 255, 255, 216, 229, 255, 255, 212, 225, 255, 255, 208, 221, 255, 255, 203, 217, 255, 255, 195, 211, 255, 255, 192, 208, 255, 255, 185, 202, 255, 255, 175, 191, 246, 255, 167, 174, 196, 255, 152, 153, 155, 250, 172, 172, 172, 159, 129, 129, 129, 29, 234, 234, 234, 32, 222, 222, 222, 42, 204, 204, 204, 23, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 102, 102, 150, 221, 88, 89, 157, 255, 209, 217, 254, 255, 207, 215, 255, 255, 207, 214, 255, 255, 206, 214, 255, 255, 202, 211, 255, 255, 190, 197, 236, 255, 167, 170, 183, 255, 158, 158, 160, 255, 198, 202, 203, 255, 231, 238, 239, 255, 243, 252, 255, 255, 240, 249, 255, 255, 237, 246, 255, 255, 232, 242, 255, 255, 229, 238, 255, 255, 225, 235, 255, 255, 222, 233, 255, 255, 220, 231, 255, 255, 215, 227, 255, 255, 209, 222, 255, 255, 202, 215, 249, 255, 188, 198, 229, 255, 177, 185, 211, 255, 166, 172, 191, 255, 159, 163, 177, 255, 154, 155, 160, 255, 150, 150, 150, 255, 155, 156, 158, 250, 159, 160, 162, 247, 162, 164, 169, 247, 156, 157, 160, 246, 179, 179, 178, 134, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 152, 161, 73, 71, 71, 133, 255, 149, 154, 214, 255, 212, 220, 255, 255, 207, 215, 255, 255, 201, 210, 254, 255, 176, 180, 199, 255, 158, 159, 160, 255, 208, 209, 209, 255, 252, 252, 252, 255, 250, 255, 255, 255, 248, 255, 255, 255, 245, 253, 255, 255, 241, 250, 255, 255, 238, 247, 255, 255, 237, 246, 255, 255, 235, 244, 255, 255, 231, 241, 255, 255, 225, 235, 252, 255, 200, 207, 222, 255, 179, 183, 194, 255, 171, 174, 180, 255, 174, 177, 181, 255, 178, 182, 189, 255, 194, 202, 211, 255, 208, 216, 223, 255, 203, 217, 232, 255, 201, 218, 239, 255, 216, 233, 248, 255, 223, 238, 255, 255, 213, 233, 255, 255, 207, 227, 255, 255, 191, 210, 241, 255, 163, 166, 172, 251, 159, 159, 161, 213, 118, 118, 118, 48, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 120, 120, 157, 184, 84, 84, 152, 255, 199, 207, 249, 255, 200, 209, 251, 255, 168, 170, 180, 255, 177, 177, 178, 255, 249, 249, 249, 255, 255, 255, 255, 255, 253, 255, 255, 255, 251, 255, 255, 255, 250, 255, 255, 255, 248, 255, 255, 255, 246, 254, 255, 255, 244, 252, 255, 255, 242, 250, 255, 255, 216, 222, 229, 255, 187, 191, 196, 255, 190, 194, 196, 255, 206, 212, 215, 255, 231, 240, 244, 255, 250, 255, 255, 255, 236, 246, 252, 255, 226, 237, 244, 255, 243, 253, 255, 255, 244, 253, 255, 255, 164, 218, 249, 255, 125, 186, 248, 255, 118, 167, 238, 255, 162, 191, 236, 255, 228, 242, 255, 255, 216, 234, 255, 255, 211, 230, 255, 255, 201, 222, 253, 255, 168, 176, 195, 255, 154, 155, 157, 246, 152, 152, 152, 106, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 252, 252, 252, 7, 221, 221, 221, 76, 172, 172, 176, 169, 150, 150, 150, 255, 152, 152, 158, 255, 158, 159, 161, 255, 150, 150, 150, 255, 196, 196, 195, 255, 241, 241, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 253, 255, 255, 255, 252, 255, 255, 255, 251, 255, 255, 255, 221, 227, 228, 255, 197, 200, 202, 255, 213, 217, 219, 255, 251, 254, 250, 255, 255, 255, 255, 255, 254, 255, 254, 255, 255, 255, 255, 255, 240, 254, 255, 255, 146, 205, 250, 255, 119, 172, 241, 255, 128, 169, 232, 255, 203, 218, 242, 255, 229, 250, 251, 255, 187, 236, 247, 255, 154, 209, 253, 255, 156, 188, 240, 255, 227, 239, 252, 255, 228, 242, 255, 255, 226, 241, 255, 255, 215, 233, 255, 255, 207, 227, 255, 255, 187, 203, 228, 255, 154, 155, 158, 251, 159, 158, 158, 169, 35, 35, 35, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 247, 247, 247, 19, 167, 167, 167, 229, 174, 174, 174, 248, 205, 205, 204, 255, 227, 227, 224, 255, 242, 242, 242, 255, 242, 242, 242, 255, 230, 230, 229, 255, 197, 198, 199, 255, 157, 157, 158, 255, 180, 180, 181, 255, 229, 229, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 251, 251, 255, 203, 205, 206, 255, 222, 227, 229, 255, 248, 254, 255, 255, 255, 255, 255, 255, 212, 238, 254, 255, 136, 186, 243, 255, 133, 173, 232, 255, 174, 199, 233, 255, 247, 254, 251, 255, 204, 245, 247, 255, 167, 229, 253, 255, 128, 189, 252, 255, 176, 201, 246, 255, 255, 255, 255, 255, 250, 254, 255, 255, 241, 249, 255, 255, 170, 214, 249, 255, 132, 180, 243, 255, 132, 171, 231, 255, 184, 206, 239, 255, 226, 241, 255, 255, 214, 232, 255, 255, 210, 229, 255, 255, 193, 212, 245, 255, 166, 171, 180, 252, 157, 158, 159, 228, 123, 123, 123, 61, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 212, 212, 212, 104, 190, 190, 190, 255, 250, 250, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 255, 207, 207, 210, 255, 164, 164, 165, 255, 170, 170, 171, 255, 216, 216, 216, 255, 213, 215, 216, 255, 244, 252, 253, 255, 249, 255, 255, 255, 250, 255, 255, 255, 255, 255, 255, 255, 222, 249, 251, 255, 168, 233, 253, 255, 139, 207, 255, 255, 107, 165, 247, 255, 222, 233, 250, 255, 255, 255, 255, 255, 248, 254, 253, 255, 222, 237, 247, 255, 166, 204, 246, 255, 144, 181, 234, 255, 169, 196, 232, 255, 234, 242, 250, 255, 217, 253, 255, 255, 170, 232, 253, 255, 130, 194, 253, 255, 143, 182, 244, 255, 237, 247, 255, 255, 230, 244, 255, 255, 222, 238, 255, 255, 212, 230, 255, 255, 201, 222, 255, 255, 172, 182, 206, 255, 152, 152, 154, 250, 155, 155, 155, 123, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 205, 205, 205, 101, 191, 191, 191, 254, 215, 215, 215, 255, 218, 218, 218, 255, 250, 250, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 220, 255, 162, 163, 163, 255, 181, 182, 183, 255, 235, 239, 239, 255, 250, 255, 255, 255, 250, 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 247, 254, 250, 255, 223, 243, 247, 255, 199, 222, 247, 255, 186, 209, 240, 255, 188, 210, 235, 255, 237, 245, 247, 255, 255, 255, 255, 255, 176, 236, 252, 255, 146, 213, 255, 255, 111, 174, 252, 255, 157, 187, 238, 255, 255, 255, 255, 255, 237, 248, 251, 255, 216, 232, 244, 255, 183, 214, 247, 255, 157, 191, 238, 255, 162, 190, 231, 255, 209, 225, 246, 255, 226, 241, 255, 255, 213, 231, 255, 255, 205, 225, 255, 255, 185, 202, 234, 255, 156, 158, 162, 251, 158, 158, 159, 191, 84, 84, 84, 33, 0, 0, 0, 1, 0, 0, 0, 0,
+ 251, 251, 251, 11, 193, 193, 193, 140, 179, 179, 179, 251, 230, 230, 230, 255, 247, 247, 247, 255, 217, 217, 217, 255, 217, 217, 217, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 255, 197, 197, 200, 255, 159, 159, 160, 255, 210, 213, 213, 255, 252, 255, 255, 255, 251, 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 246, 255, 255, 138, 209, 255, 255, 121, 181, 254, 255, 109, 160, 237, 255, 229, 238, 249, 255, 252, 255, 250, 255, 214, 241, 243, 255, 197, 226, 246, 255, 186, 209, 240, 255, 200, 218, 240, 255, 218, 231, 244, 255, 253, 255, 255, 255, 202, 249, 255, 255, 148, 216, 255, 255, 121, 183, 254, 255, 119, 164, 235, 255, 219, 234, 252, 255, 220, 236, 255, 255, 215, 232, 255, 255, 211, 230, 255, 255, 199, 219, 251, 255, 171, 177, 187, 255, 163, 164, 165, 230, 18, 18, 18, 42, 0, 0, 0, 1,
+ 201, 201, 201, 147, 175, 175, 175, 255, 165, 165, 166, 255, 231, 231, 231, 255, 212, 212, 212, 255, 225, 225, 225, 255, 247, 247, 247, 255, 213, 213, 213, 255, 229, 229, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 238, 239, 255, 166, 166, 167, 255, 186, 188, 189, 255, 252, 254, 254, 255, 253, 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 251, 254, 252, 255, 217, 250, 251, 255, 172, 224, 245, 255, 155, 195, 244, 255, 226, 235, 246, 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 158, 222, 255, 255, 123, 184, 252, 255, 109, 162, 239, 255, 161, 188, 234, 255, 248, 255, 255, 255, 214, 242, 246, 255, 179, 219, 242, 255, 180, 208, 246, 255, 233, 246, 255, 255, 231, 246, 255, 255, 225, 240, 249, 255, 200, 212, 224, 255, 182, 190, 210, 255, 158, 169, 211, 255, 153, 154, 159, 253, 52, 52, 52, 143, 0, 0, 0, 24,
+ 183, 183, 183, 172, 208, 208, 209, 255, 210, 210, 210, 255, 168, 168, 168, 255, 193, 194, 196, 255, 234, 234, 233, 255, 182, 182, 182, 255, 186, 186, 188, 255, 229, 229, 227, 255, 213, 213, 213, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 249, 250, 255, 179, 180, 182, 255, 178, 179, 180, 255, 250, 251, 251, 255, 253, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 215, 238, 252, 255, 134, 189, 247, 255, 119, 165, 234, 255, 148, 180, 228, 255, 245, 249, 249, 255, 236, 255, 255, 255, 189, 241, 251, 255, 143, 201, 250, 255, 159, 192, 243, 255, 247, 255, 255, 255, 246, 253, 255, 255, 248, 255, 255, 255, 242, 247, 247, 255, 210, 218, 223, 255, 189, 197, 214, 255, 172, 181, 214, 255, 146, 161, 229, 255, 127, 145, 234, 255, 110, 130, 232, 255, 150, 151, 154, 253, 28, 28, 28, 170, 0, 0, 0, 40,
+ 180, 180, 180, 169, 213, 213, 213, 255, 255, 255, 255, 255, 248, 248, 248, 255, 202, 202, 202, 255, 170, 170, 170, 255, 182, 185, 188, 255, 151, 151, 151, 255, 157, 157, 159, 255, 222, 222, 222, 255, 209, 209, 209, 255, 247, 247, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 189, 189, 190, 255, 179, 180, 181, 255, 251, 251, 251, 255, 255, 255, 255, 255, 254, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 237, 255, 255, 255, 178, 242, 255, 255, 147, 216, 255, 255, 101, 165, 249, 255, 189, 209, 242, 255, 255, 255, 255, 255, 254, 255, 254, 255, 249, 255, 250, 255, 255, 255, 255, 255, 247, 247, 247, 255, 213, 219, 220, 255, 194, 201, 212, 255, 183, 192, 216, 255, 152, 166, 230, 255, 137, 152, 233, 255, 136, 152, 233, 255, 135, 152, 234, 255, 134, 151, 235, 255, 115, 135, 233, 255, 150, 150, 150, 255, 0, 0, 0, 166, 0, 0, 0, 35,
+ 188, 188, 188, 143, 203, 203, 203, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 243, 243, 255, 206, 207, 208, 255, 176, 176, 179, 255, 187, 189, 199, 255, 157, 157, 158, 255, 200, 200, 201, 255, 209, 209, 209, 255, 243, 243, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 190, 191, 195, 255, 183, 183, 184, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 253, 255, 228, 247, 251, 255, 214, 229, 245, 255, 255, 255, 253, 255, 255, 255, 255, 255, 247, 247, 247, 255, 221, 222, 222, 255, 197, 201, 212, 255, 184, 192, 214, 255, 160, 173, 230, 255, 147, 161, 234, 255, 144, 158, 233, 255, 145, 161, 234, 255, 145, 160, 234, 255, 143, 158, 235, 255, 138, 155, 235, 255, 134, 151, 235, 255, 114, 134, 233, 255, 150, 150, 150, 255, 0, 0, 0, 166, 0, 0, 0, 25,
+ 192, 192, 192, 134, 203, 203, 203, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 240, 240, 255, 211, 211, 212, 255, 211, 215, 230, 255, 165, 165, 168, 255, 187, 187, 188, 255, 207, 207, 207, 255, 243, 243, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 184, 185, 255, 190, 190, 191, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 244, 244, 255, 218, 218, 218, 255, 197, 200, 211, 255, 182, 189, 215, 255, 171, 185, 239, 255, 151, 166, 233, 255, 154, 168, 233, 255, 154, 167, 233, 255, 153, 168, 234, 255, 151, 166, 235, 255, 148, 164, 235, 255, 146, 161, 235, 255, 142, 157, 235, 255, 137, 154, 235, 255, 134, 151, 235, 255, 118, 136, 223, 255, 149, 150, 152, 250, 0, 0, 0, 166, 0, 0, 0, 24,
+ 196, 196, 196, 125, 192, 193, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 248, 255, 207, 208, 209, 255, 221, 224, 236, 255, 167, 168, 172, 255, 182, 182, 183, 255, 207, 207, 207, 255, 245, 245, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 250, 255, 164, 165, 168, 255, 178, 179, 179, 255, 244, 244, 244, 255, 255, 255, 255, 255, 244, 244, 244, 255, 218, 218, 218, 255, 198, 201, 209, 255, 187, 194, 218, 255, 171, 184, 234, 255, 158, 172, 233, 255, 158, 171, 232, 255, 161, 174, 234, 255, 161, 174, 234, 255, 159, 173, 235, 255, 157, 171, 234, 255, 155, 169, 235, 255, 151, 166, 235, 255, 148, 163, 235, 255, 145, 160, 235, 255, 142, 158, 235, 255, 138, 155, 237, 255, 127, 145, 234, 255, 109, 127, 219, 255, 149, 150, 152, 250, 0, 0, 0, 158, 0, 0, 0, 22,
+ 202, 202, 202, 102, 179, 179, 181, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 253, 255, 210, 211, 212, 255, 219, 221, 230, 255, 168, 169, 173, 255, 182, 182, 183, 255, 206, 206, 206, 255, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 241, 241, 255, 157, 158, 160, 255, 197, 200, 202, 255, 196, 199, 211, 255, 184, 191, 217, 255, 171, 184, 234, 255, 161, 174, 233, 255, 163, 176, 233, 255, 166, 178, 234, 255, 167, 179, 234, 255, 166, 178, 235, 255, 164, 176, 235, 255, 162, 175, 235, 255, 159, 173, 235, 255, 157, 171, 234, 255, 154, 169, 235, 255, 152, 166, 235, 255, 149, 164, 237, 255, 141, 157, 234, 255, 130, 147, 234, 255, 126, 139, 207, 255, 140, 146, 175, 254, 150, 150, 153, 253, 113, 113, 113, 221, 0, 0, 0, 145, 0, 0, 0, 22,
+ 162, 162, 162, 23, 160, 160, 160, 236, 179, 179, 181, 253, 235, 236, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 249, 255, 255, 255, 215, 219, 219, 255, 212, 214, 222, 255, 172, 172, 177, 255, 186, 186, 187, 255, 213, 213, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 249, 255, 211, 213, 216, 255, 164, 165, 170, 255, 179, 184, 191, 255, 175, 185, 231, 255, 168, 180, 233, 255, 170, 181, 234, 255, 170, 182, 235, 255, 169, 182, 235, 255, 169, 181, 234, 255, 167, 180, 234, 255, 166, 178, 235, 255, 164, 176, 235, 255, 162, 175, 235, 255, 159, 173, 235, 255, 158, 171, 236, 255, 152, 167, 236, 255, 140, 156, 231, 255, 132, 146, 212, 255, 141, 148, 180, 255, 149, 150, 156, 253, 145, 145, 148, 246, 107, 107, 107, 217, 36, 36, 36, 183, 0, 0, 0, 154, 0, 0, 0, 91, 0, 0, 0, 11,
+ 0, 0, 0, 1, 42, 42, 42, 42, 127, 127, 127, 191, 151, 151, 152, 252, 177, 177, 179, 255, 242, 243, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, 247, 255, 255, 255, 241, 255, 255, 255, 220, 230, 232, 255, 204, 206, 210, 255, 160, 160, 161, 255, 204, 204, 204, 255, 227, 227, 227, 255, 249, 249, 249, 255, 237, 237, 237, 255, 220, 220, 220, 255, 198, 200, 209, 255, 179, 184, 204, 255, 153, 159, 185, 255, 156, 157, 159, 255, 193, 196, 198, 255, 180, 190, 232, 255, 171, 182, 234, 255, 172, 184, 235, 255, 170, 182, 235, 255, 170, 182, 235, 255, 169, 181, 234, 255, 167, 180, 234, 255, 166, 178, 235, 255, 164, 177, 236, 255, 161, 175, 236, 255, 152, 166, 233, 255, 141, 155, 218, 255, 143, 151, 186, 255, 147, 149, 156, 252, 148, 148, 150, 250, 120, 120, 119, 224, 53, 53, 53, 192, 0, 0, 0, 164, 0, 0, 0, 139, 0, 0, 0, 88, 0, 0, 0, 44, 0, 0, 0, 14, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 35, 46, 46, 46, 103, 134, 135, 135, 214, 151, 152, 153, 253, 196, 197, 202, 255, 254, 254, 254, 255, 255, 255, 255, 255, 253, 255, 255, 255, 247, 255, 255, 255, 241, 255, 255, 255, 234, 251, 255, 255, 226, 237, 242, 255, 184, 185, 186, 255, 159, 159, 160, 255, 195, 196, 196, 255, 194, 197, 212, 255, 171, 177, 204, 255, 145, 153, 189, 255, 144, 149, 173, 255, 152, 153, 159, 255, 162, 163, 165, 255, 204, 205, 205, 255, 189, 190, 190, 255, 178, 189, 233, 255, 172, 183, 234, 255, 172, 184, 235, 255, 170, 182, 235, 255, 170, 182, 235, 255, 169, 182, 235, 255, 167, 180, 235, 255, 160, 173, 234, 255, 151, 164, 227, 255, 146, 154, 193, 255, 148, 151, 162, 252, 149, 150, 151, 253, 130, 130, 130, 230, 73, 73, 73, 199, 0, 0, 0, 167, 0, 0, 0, 148, 0, 0, 0, 100, 0, 0, 0, 52, 0, 0, 0, 25, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 44, 72, 72, 72, 129, 145, 145, 146, 231, 156, 156, 157, 252, 208, 210, 215, 255, 255, 255, 255, 255, 252, 255, 255, 255, 241, 255, 255, 255, 235, 251, 255, 255, 227, 245, 255, 255, 225, 239, 248, 255, 187, 188, 189, 255, 172, 172, 173, 255, 159, 161, 171, 255, 155, 156, 158, 255, 157, 157, 158, 255, 168, 168, 169, 255, 183, 183, 184, 255, 192, 196, 211, 255, 190, 198, 226, 255, 177, 187, 236, 255, 170, 182, 234, 255, 173, 184, 235, 255, 172, 184, 235, 255, 171, 183, 236, 255, 167, 180, 235, 255, 157, 170, 229, 255, 149, 159, 201, 255, 151, 155, 171, 253, 150, 151, 152, 254, 138, 139, 140, 237, 88, 88, 88, 207, 10, 10, 10, 172, 0, 0, 0, 154, 0, 0, 0, 112, 0, 0, 0, 61, 0, 0, 0, 28, 0, 0, 0, 13, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 18, 0, 0, 0, 56, 96, 96, 96, 158, 149, 149, 151, 244, 162, 163, 167, 253, 214, 222, 224, 255, 243, 255, 255, 255, 237, 253, 255, 255, 229, 246, 255, 255, 220, 239, 255, 255, 217, 237, 254, 255, 198, 201, 203, 255, 193, 193, 193, 255, 201, 201, 201, 255, 194, 197, 210, 255, 196, 202, 229, 255, 180, 191, 236, 255, 172, 183, 232, 255, 176, 187, 234, 255, 175, 185, 234, 255, 176, 187, 237, 255, 171, 183, 235, 255, 164, 177, 234, 255, 154, 165, 211, 255, 154, 158, 179, 255, 150, 151, 153, 253, 144, 144, 145, 243, 103, 103, 103, 214, 26, 26, 26, 180, 0, 0, 0, 160, 0, 0, 0, 124, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 25, 11, 11, 11, 71, 115, 114, 115, 183, 149, 150, 150, 250, 178, 183, 185, 254, 220, 236, 242, 255, 229, 246, 255, 255, 225, 243, 255, 255, 213, 234, 255, 255, 209, 233, 255, 255, 187, 193, 205, 255, 176, 186, 233, 255, 173, 184, 232, 255, 178, 189, 234, 255, 178, 189, 234, 255, 180, 190, 235, 255, 177, 188, 236, 255, 172, 183, 236, 255, 158, 169, 216, 255, 154, 160, 185, 255, 152, 153, 158, 252, 148, 148, 150, 248, 114, 114, 113, 221, 44, 44, 44, 189, 0, 0, 0, 163, 0, 0, 0, 134, 0, 0, 0, 83, 0, 0, 0, 40, 0, 0, 0, 19, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 31, 40, 40, 40, 93, 130, 130, 130, 205, 151, 152, 152, 252, 172, 179, 187, 255, 209, 228, 246, 255, 217, 237, 255, 255, 215, 237, 255, 255, 189, 195, 210, 255, 177, 186, 233, 255, 182, 192, 236, 255, 181, 191, 236, 255, 175, 186, 233, 255, 165, 176, 223, 255, 157, 164, 192, 255, 153, 155, 163, 252, 150, 150, 150, 252, 124, 124, 124, 227, 66, 66, 66, 196, 0, 0, 0, 166, 0, 0, 0, 144, 0, 0, 0, 94, 0, 0, 0, 48, 0, 0, 0, 22, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 40, 64, 64, 64, 118, 141, 141, 141, 223, 151, 152, 154, 253, 174, 187, 208, 255, 204, 227, 255, 255, 188, 195, 212, 255, 176, 185, 233, 255, 171, 181, 228, 255, 160, 167, 200, 255, 154, 157, 168, 253, 150, 150, 151, 253, 136, 136, 136, 234, 83, 83, 83, 204, 5, 5, 5, 170, 0, 0, 0, 152, 0, 0, 0, 107, 0, 0, 0, 58, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 16, 0, 0, 0, 51, 88, 88, 88, 145, 148, 148, 150, 238, 154, 157, 163, 253, 169, 174, 186, 255, 159, 162, 178, 254, 151, 152, 153, 253, 142, 142, 143, 240, 97, 97, 97, 211, 16, 16, 16, 176, 0, 0, 0, 157, 0, 0, 0, 119, 0, 0, 0, 67, 0, 0, 0, 31, 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 22, 0, 0, 0, 64, 110, 110, 110, 173, 142, 142, 142, 227, 111, 111, 111, 215, 35, 35, 35, 185, 0, 0, 0, 162, 0, 0, 0, 130, 0, 0, 0, 78, 0, 0, 0, 36, 0, 0, 0, 17, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 28, 0, 0, 0, 72, 0, 0, 0, 108, 0, 0, 0, 85, 0, 0, 0, 44, 0, 0, 0, 21, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 16, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_LogoTecgraf(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 107, 121, 49, 89, 100, 121, 62, 131, 145, 171, 46, 152, 163, 184, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 111, 120, 5, 92, 101, 119, 171, 101, 113, 136, 255, 135, 152, 182, 255, 135, 151, 182, 255, 134, 150, 179, 173, 134, 149, 178, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 103, 120, 139, 101, 114, 137, 255, 141, 158, 191, 255, 135, 152, 183, 255, 134, 150, 181, 255, 132, 148, 179, 255, 133, 149, 178, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 94, 106, 34, 100, 111, 133, 250, 133, 150, 180, 255, 137, 154, 186, 255, 135, 152, 183, 255, 133, 150, 180, 255, 132, 148, 178, 255, 131, 147, 177, 254, 136, 151, 179, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 107, 125, 151, 112, 126, 152, 255, 146, 164, 198, 255, 136, 153, 185, 255, 135, 152, 182, 255, 133, 150, 180, 255, 132, 148, 178, 255, 130, 146, 176, 255, 131, 147, 176, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 109, 115, 5, 103, 114, 136, 239, 133, 150, 180, 255, 140, 158, 190, 255, 136, 153, 184, 255, 120, 134, 160, 248, 78, 88, 105, 255, 117, 132, 159, 255, 130, 146, 176, 255, 130, 146, 175, 246, 142, 155, 181, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 93, 106, 74, 113, 127, 153, 255, 146, 164, 197, 255, 138, 155, 186, 255, 137, 153, 184, 209, 141, 148, 161, 29, 36, 40, 46, 200, 48, 54, 65, 255, 123, 138, 167, 255, 128, 144, 174, 255, 133, 148, 175, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 112, 130, 152, 121, 135, 163, 255, 150, 168, 203, 255, 138, 154, 186, 255, 137, 153, 184, 53, 0, 0, 0, 0, 70, 73, 78, 56, 36, 41, 49, 254, 89, 100, 120, 255, 128, 144, 173, 255, 129, 144, 173, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 119, 140, 216, 133, 149, 179, 255, 145, 163, 196, 255, 139, 155, 186, 204, 157, 170, 193, 1, 0, 0, 0, 0, 0, 0, 0, 0, 51, 56, 65, 198, 61, 69, 83, 255, 126, 142, 171, 255, 128, 144, 172, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 121, 20, 110, 123, 147, 250, 143, 161, 194, 255, 140, 157, 189, 255, 139, 155, 186, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 67, 75, 113, 58, 65, 78, 255, 114, 128, 154, 255, 126, 142, 171, 253, 133, 147, 174, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 95, 106, 67, 118, 133, 160, 255, 148, 167, 201, 255, 139, 156, 187, 254, 144, 159, 188, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 74, 80, 29, 62, 70, 83, 255, 99, 112, 135, 255, 126, 142, 171, 255, 132, 147, 174, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 105, 120, 115, 122, 137, 165, 255, 152, 171, 206, 255, 139, 156, 188, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 138, 141, 1, 69, 76, 89, 223, 90, 101, 121, 255, 128, 143, 173, 255, 127, 142, 170, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 111, 130, 151, 125, 140, 169, 255, 153, 172, 207, 255, 140, 157, 188, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 78, 92, 167, 85, 96, 115, 255, 128, 144, 174, 255, 127, 142, 170, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 115, 136, 187, 132, 148, 177, 255, 151, 169, 203, 255, 140, 157, 188, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 83, 95, 125, 87, 98, 118, 255, 126, 142, 171, 255, 125, 140, 169, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 117, 139, 218, 143, 160, 188, 255, 145, 163, 196, 255, 140, 157, 188, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 74, 83, 77, 91, 102, 123, 255, 123, 139, 167, 255, 125, 140, 169, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 120, 142, 250, 152, 169, 196, 255, 141, 158, 191, 255, 143, 159, 189, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 79, 85, 41, 91, 103, 124, 255, 122, 137, 165, 255, 125, 140, 169, 251, 136, 150, 175, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 145, 148, 22, 106, 119, 143, 253, 158, 173, 200, 255, 139, 156, 188, 255, 141, 158, 188, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 151, 153, 13, 90, 101, 121, 253, 122, 137, 165, 255, 124, 140, 168, 255, 141, 154, 178, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 167, 181, 1, 125, 134, 154, 39, 86, 93, 106, 81, 43, 47, 52, 111, 50, 54, 59, 150, 42, 45, 51, 169, 42, 46, 51, 197, 110, 124, 149, 255, 160, 176, 202, 255, 137, 154, 186, 255, 105, 118, 142, 228, 104, 117, 141, 227, 104, 117, 141, 227, 105, 117, 141, 227, 105, 118, 142, 227, 105, 118, 142, 227, 108, 120, 144, 227, 104, 116, 140, 255, 109, 123, 148, 255, 111, 125, 150, 255, 109, 122, 147, 170, 115, 127, 150, 138, 115, 128, 151, 111, 116, 128, 152, 75, 124, 136, 157, 39, 168, 176, 190, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 175, 186, 1, 120, 130, 149, 35, 110, 121, 143, 97, 105, 117, 140, 152, 106, 118, 141, 206, 105, 117, 140, 248, 103, 115, 139, 255, 105, 118, 142, 255, 91, 103, 123, 255, 43, 49, 58, 255, 26, 30, 36, 255, 29, 33, 40, 255, 113, 127, 153, 255, 160, 175, 202, 255, 139, 156, 188, 255, 144, 161, 192, 255, 138, 155, 186, 255, 134, 150, 181, 255, 130, 146, 176, 255, 126, 142, 171, 255, 122, 138, 166, 255, 119, 134, 162, 255, 116, 131, 158, 255, 114, 128, 154, 255, 113, 127, 152, 255, 112, 126, 151, 255, 111, 125, 151, 255, 110, 124, 149, 255, 109, 122, 148, 255, 109, 122, 147, 255, 112, 125, 149, 251, 113, 126, 151, 210, 114, 127, 151, 158, 116, 129, 153, 97, 123, 135, 158, 35, 156, 165, 182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 129, 148, 32, 106, 118, 140, 129, 105, 117, 140, 214, 103, 116, 139, 255, 102, 115, 138, 255, 108, 121, 146, 255, 127, 142, 171, 255, 142, 160, 193, 255, 154, 172, 207, 255, 161, 181, 217, 255, 164, 183, 215, 255, 57, 64, 75, 255, 26, 30, 36, 255, 31, 36, 43, 255, 113, 128, 154, 255, 161, 177, 203, 255, 137, 154, 185, 255, 126, 142, 171, 255, 121, 136, 164, 255, 116, 131, 157, 255, 112, 126, 152, 255, 109, 122, 147, 255, 105, 118, 143, 255, 102, 115, 138, 255, 98, 111, 133, 255, 94, 106, 128, 255, 89, 100, 120, 255, 83, 94, 113, 255, 79, 89, 108, 255, 78, 88, 106, 255, 79, 89, 107, 255, 84, 94, 113, 255, 92, 103, 124, 255, 103, 116, 139, 255, 110, 123, 148, 255, 111, 125, 150, 255, 112, 126, 151, 255, 114, 127, 153, 214, 115, 129, 154, 129, 127, 139, 162, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 118, 128, 145, 31, 106, 118, 140, 164, 103, 116, 139, 252, 102, 115, 139, 255, 103, 116, 139, 255, 120, 135, 162, 255, 147, 165, 198, 255, 160, 179, 216, 255, 157, 176, 212, 255, 153, 172, 207, 255, 147, 165, 199, 255, 139, 156, 187, 241, 132, 146, 173, 211, 43, 47, 53, 174, 46, 50, 55, 144, 45, 50, 59, 153, 113, 127, 153, 255, 160, 176, 203, 255, 136, 152, 183, 205, 58, 65, 78, 35, 89, 94, 103, 35, 83, 88, 95, 35, 81, 85, 93, 35, 83, 87, 94, 35, 47, 53, 62, 35, 98, 102, 110, 64, 84, 93, 110, 198, 100, 113, 136, 255, 103, 116, 139, 255, 84, 93, 109, 187, 70, 77, 89, 168, 65, 72, 84, 205, 59, 65, 77, 241, 50, 56, 68, 255, 45, 51, 61, 255, 40, 45, 54, 255, 47, 53, 63, 255, 71, 80, 96, 255, 100, 113, 136, 255, 113, 127, 153, 255, 113, 127, 154, 255, 114, 128, 154, 252, 116, 130, 156, 164, 127, 140, 165, 37, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 110, 118, 133, 72, 103, 115, 138, 239, 103, 116, 139, 255, 103, 116, 140, 255, 106, 119, 143, 255, 141, 158, 191, 255, 154, 174, 209, 255, 150, 169, 203, 255, 143, 160, 191, 234, 137, 153, 182, 162, 127, 140, 163, 102, 113, 122, 138, 40, 126, 131, 140, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 93, 104, 97, 112, 125, 151, 255, 158, 174, 201, 255, 140, 156, 187, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 114, 134, 175, 126, 141, 170, 255, 136, 153, 184, 255, 125, 140, 167, 94, 0, 0, 0, 0, 0, 0, 0, 0, 124, 126, 129, 6, 80, 84, 88, 40, 56, 60, 66, 96, 43, 47, 54, 157, 33, 36, 42, 227, 26, 30, 36, 255, 31, 35, 42, 255, 66, 75, 90, 255, 112, 125, 151, 255, 115, 130, 156, 255, 116, 130, 156, 255, 118, 132, 158, 245, 125, 139, 166, 73, 0, 0, 0, 0,
+ 98, 101, 105, 10, 94, 104, 124, 232, 103, 116, 140, 255, 104, 117, 140, 255, 104, 117, 141, 255, 129, 145, 174, 255, 144, 162, 195, 255, 142, 158, 187, 191, 131, 144, 167, 77, 140, 145, 154, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 105, 115, 111, 109, 123, 148, 255, 154, 171, 200, 255, 142, 158, 188, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 120, 139, 175, 128, 144, 173, 255, 138, 155, 187, 255, 122, 137, 165, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 120, 123, 2, 62, 65, 70, 71, 40, 44, 50, 180, 28, 32, 38, 255, 72, 82, 98, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 122, 137, 164, 236, 142, 159, 190, 10,
+ 106, 108, 112, 55, 81, 92, 110, 255, 104, 117, 141, 255, 105, 118, 142, 255, 105, 118, 142, 255, 122, 137, 165, 250, 136, 151, 180, 85, 151, 158, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 97, 107, 111, 107, 120, 145, 255, 147, 165, 197, 255, 139, 156, 186, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 120, 140, 175, 131, 147, 177, 255, 142, 159, 190, 255, 122, 137, 165, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 0, 52, 56, 61, 79, 75, 84, 100, 250, 118, 133, 160, 255, 119, 133, 161, 255, 119, 134, 161, 255, 127, 142, 172, 255, 138, 154, 185, 61,
+ 100, 103, 106, 50, 40, 45, 54, 255, 97, 109, 131, 255, 106, 119, 143, 255, 106, 119, 143, 255, 107, 121, 145, 253, 115, 128, 153, 111, 134, 146, 167, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 97, 108, 111, 104, 117, 141, 255, 143, 160, 193, 255, 138, 155, 186, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 122, 143, 175, 134, 151, 181, 255, 146, 163, 192, 255, 122, 137, 165, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 144, 165, 0, 124, 137, 160, 99, 119, 134, 160, 253, 120, 135, 162, 255, 120, 135, 163, 255, 125, 140, 169, 255, 139, 156, 188, 255, 117, 130, 154, 61,
+ 110, 112, 116, 7, 36, 40, 45, 224, 35, 39, 47, 255, 77, 87, 105, 255, 105, 118, 141, 255, 107, 121, 145, 255, 108, 121, 146, 255, 112, 126, 150, 208, 117, 130, 153, 95, 121, 133, 157, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 100, 110, 111, 102, 114, 137, 255, 140, 157, 188, 255, 141, 157, 187, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 127, 148, 175, 139, 155, 185, 255, 148, 164, 192, 255, 122, 137, 164, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 153, 174, 11, 126, 140, 166, 83, 121, 136, 163, 191, 121, 136, 163, 255, 121, 136, 164, 255, 123, 139, 167, 255, 140, 157, 189, 255, 145, 163, 197, 255, 123, 138, 165, 232, 120, 133, 155, 10,
+ 0, 0, 0, 0, 51, 55, 60, 47, 32, 36, 42, 227, 26, 30, 36, 255, 39, 45, 54, 255, 71, 80, 96, 255, 97, 110, 132, 255, 108, 121, 146, 255, 109, 123, 148, 255, 111, 124, 149, 242, 114, 127, 152, 184, 116, 129, 154, 117, 122, 135, 158, 61, 130, 142, 164, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 80, 89, 92, 98, 110, 133, 255, 136, 153, 184, 255, 138, 155, 185, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 125, 148, 175, 145, 161, 190, 255, 146, 162, 189, 255, 124, 139, 166, 94, 0, 0, 0, 0, 0, 0, 0, 0, 136, 149, 172, 10, 134, 147, 172, 61, 124, 138, 165, 109, 124, 138, 165, 174, 123, 137, 165, 242, 121, 136, 164, 255, 123, 138, 166, 255, 133, 150, 180, 255, 147, 165, 199, 255, 152, 170, 205, 255, 139, 156, 188, 255, 127, 142, 170, 235, 129, 140, 161, 71, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 68, 73, 16, 42, 46, 51, 145, 31, 35, 41, 247, 26, 30, 36, 255, 29, 33, 40, 255, 45, 51, 61, 255, 68, 76, 92, 255, 89, 100, 120, 255, 104, 117, 140, 255, 110, 124, 149, 255, 112, 126, 151, 255, 114, 128, 153, 253, 115, 129, 154, 222, 117, 131, 156, 190, 116, 130, 155, 153, 105, 117, 138, 175, 104, 117, 141, 255, 127, 142, 171, 255, 130, 146, 175, 209, 128, 141, 165, 61, 133, 146, 168, 52, 118, 132, 159, 36, 118, 132, 159, 36, 137, 149, 172, 58, 128, 141, 166, 55, 124, 138, 164, 74, 115, 129, 154, 204, 135, 151, 179, 255, 131, 146, 174, 255, 120, 135, 162, 187, 122, 137, 164, 180, 122, 137, 164, 216, 122, 137, 164, 249, 121, 136, 164, 255, 126, 141, 170, 255, 136, 152, 183, 255, 145, 163, 196, 255, 150, 168, 203, 255, 153, 172, 207, 255, 148, 166, 200, 255, 140, 157, 189, 255, 130, 146, 175, 247, 127, 140, 164, 163, 124, 134, 151, 26, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 94, 98, 20, 49, 53, 58, 111, 39, 43, 48, 195, 30, 34, 40, 250, 26, 30, 36, 255, 26, 30, 36, 255, 32, 36, 43, 255, 44, 49, 60, 255, 61, 69, 83, 255, 77, 86, 104, 255, 90, 101, 121, 255, 100, 112, 135, 255, 108, 121, 146, 255, 112, 126, 152, 255, 116, 130, 157, 255, 117, 132, 159, 255, 119, 133, 160, 255, 119, 134, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 121, 136, 164, 255, 122, 137, 165, 255, 123, 139, 167, 255, 125, 141, 170, 255, 130, 146, 175, 255, 136, 152, 181, 255, 145, 160, 187, 255, 153, 168, 193, 255, 157, 172, 198, 255, 160, 175, 201, 255, 162, 177, 203, 255, 162, 178, 207, 255, 157, 175, 205, 255, 147, 165, 197, 255, 139, 157, 188, 255, 138, 155, 186, 255, 130, 146, 175, 250, 125, 139, 166, 201, 118, 130, 153, 117, 115, 122, 134, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 95, 99, 18, 52, 56, 61, 77, 45, 49, 54, 137, 39, 43, 48, 188, 38, 42, 48, 236, 32, 36, 43, 253, 37, 41, 50, 255, 44, 49, 59, 255, 50, 56, 67, 255, 56, 63, 76, 255, 63, 71, 86, 255, 71, 80, 96, 255, 78, 88, 106, 255, 85, 96, 116, 255, 92, 103, 124, 255, 97, 109, 132, 255, 102, 115, 138, 255, 107, 120, 144, 255, 111, 124, 150, 255, 115, 129, 155, 255, 119, 133, 160, 255, 122, 137, 165, 255, 125, 140, 166, 255, 125, 140, 167, 255, 124, 139, 167, 255, 125, 140, 169, 255, 127, 143, 172, 255, 126, 142, 171, 255, 121, 136, 164, 254, 121, 135, 160, 236, 120, 133, 157, 194, 117, 129, 151, 143, 105, 115, 132, 83, 115, 121, 130, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 118, 20, 77, 80, 85, 60, 58, 61, 67, 90, 45, 50, 57, 111, 61, 66, 74, 148, 56, 61, 71, 169, 58, 65, 79, 255, 69, 78, 94, 255, 76, 85, 103, 255, 79, 87, 101, 228, 82, 90, 105, 227, 80, 89, 105, 227, 83, 92, 109, 227, 92, 102, 119, 227, 96, 105, 123, 227, 99, 109, 127, 216, 97, 109, 131, 254, 113, 126, 150, 255, 102, 115, 138, 255, 107, 117, 136, 170, 95, 105, 123, 115, 95, 103, 118, 90, 94, 100, 111, 60, 122, 125, 130, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 152, 154, 22, 71, 79, 95, 253, 109, 122, 147, 255, 135, 152, 183, 255, 146, 161, 188, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 153, 157, 18, 126, 141, 169, 253, 160, 179, 211, 255, 122, 137, 165, 255, 136, 149, 172, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 81, 95, 250, 98, 110, 133, 255, 136, 152, 184, 255, 137, 153, 182, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 105, 115, 47, 134, 151, 181, 255, 155, 174, 208, 255, 123, 138, 165, 251, 141, 153, 175, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 72, 84, 212, 87, 97, 117, 255, 136, 153, 184, 255, 137, 153, 182, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 112, 129, 83, 139, 156, 188, 255, 150, 169, 203, 255, 123, 137, 165, 227, 170, 179, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 71, 82, 187, 75, 84, 102, 255, 134, 150, 181, 255, 136, 152, 181, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 125, 147, 125, 140, 158, 190, 255, 146, 164, 197, 255, 122, 137, 164, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 67, 77, 151, 65, 73, 88, 255, 128, 144, 173, 255, 134, 150, 180, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 133, 157, 173, 143, 161, 194, 255, 138, 155, 187, 255, 123, 137, 164, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 64, 71, 109, 58, 65, 78, 255, 116, 130, 157, 255, 133, 149, 179, 231, 149, 163, 188, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 142, 147, 2, 124, 138, 164, 227, 149, 167, 202, 255, 128, 143, 173, 255, 125, 139, 166, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 78, 83, 67, 50, 57, 68, 255, 99, 111, 134, 255, 132, 148, 179, 255, 134, 149, 179, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 116, 128, 41, 129, 145, 174, 255, 150, 168, 202, 255, 122, 137, 165, 255, 127, 141, 166, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 99, 103, 14, 46, 52, 61, 250, 78, 88, 106, 255, 132, 148, 178, 255, 135, 150, 179, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 122, 143, 113, 133, 150, 180, 255, 145, 162, 196, 255, 122, 136, 164, 253, 133, 146, 170, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 52, 59, 210, 55, 62, 75, 255, 129, 145, 174, 255, 131, 147, 177, 212, 134, 149, 178, 1, 0, 0, 0, 0, 168, 171, 174, 1, 119, 132, 157, 210, 139, 157, 188, 255, 132, 148, 178, 255, 125, 139, 166, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 49, 55, 141, 38, 42, 51, 255, 115, 129, 156, 255, 130, 146, 176, 255, 132, 148, 177, 70, 0, 0, 0, 0, 116, 126, 142, 70, 121, 136, 163, 255, 144, 161, 195, 255, 122, 138, 166, 255, 124, 139, 166, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 64, 69, 68, 28, 32, 39, 255, 86, 96, 116, 255, 130, 146, 175, 255, 129, 145, 174, 215, 122, 135, 160, 29, 111, 124, 147, 213, 132, 148, 178, 255, 131, 147, 177, 255, 122, 137, 165, 255, 125, 139, 166, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 129, 133, 5, 34, 38, 43, 233, 50, 57, 69, 255, 127, 143, 172, 255, 128, 144, 173, 255, 126, 142, 170, 248, 127, 143, 172, 255, 131, 147, 177, 255, 123, 138, 166, 255, 123, 138, 165, 240, 144, 156, 176, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 47, 52, 139, 28, 33, 39, 255, 105, 118, 143, 255, 128, 144, 173, 255, 127, 142, 171, 255, 125, 141, 169, 255, 124, 139, 168, 255, 123, 138, 166, 255, 126, 140, 166, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 97, 101, 34, 30, 34, 40, 244, 58, 65, 79, 255, 126, 142, 170, 255, 126, 142, 171, 255, 125, 140, 169, 255, 124, 139, 167, 255, 123, 138, 166, 249, 138, 150, 172, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 51, 56, 121, 27, 32, 38, 255, 91, 102, 123, 255, 126, 141, 170, 255, 125, 140, 169, 255, 124, 139, 167, 255, 127, 140, 165, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 120, 124, 3, 47, 50, 56, 149, 34, 39, 46, 252, 85, 96, 115, 255, 113, 126, 152, 253, 118, 131, 154, 160, 127, 135, 151, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 97, 101, 28, 112, 115, 118, 62, 102, 106, 112, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_LogoPUC_Rio(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 163, 163, 2, 92, 88, 66, 92, 106, 100, 67, 116, 85, 85, 85, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 136, 136, 19, 122, 114, 67, 227, 151, 141, 82, 233, 46, 45, 41, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 88, 82, 161, 94, 92, 83, 193, 143, 143, 143, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 101, 101, 220, 104, 104, 104, 247, 107, 107, 107, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 7, 53, 51, 40, 52, 57, 57, 57, 11, 90, 90, 90, 145, 104, 102, 89, 252, 106, 103, 87, 255, 100, 100, 100, 181, 57, 57, 57, 28, 56, 54, 42, 47, 70, 70, 68, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 93, 63, 102, 69, 66, 52, 41, 113, 106, 67, 108, 198, 184, 106, 255, 86, 84, 75, 227, 125, 124, 121, 255, 164, 154, 95, 255, 173, 161, 96, 255, 124, 123, 117, 255, 96, 95, 89, 237, 186, 172, 100, 254, 133, 124, 77, 138, 60, 60, 60, 24, 99, 94, 64, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 100, 66, 100, 121, 114, 77, 142, 155, 145, 86, 234, 209, 194, 112, 255, 193, 179, 103, 255, 111, 107, 83, 255, 207, 192, 111, 255, 208, 193, 111, 255, 130, 124, 92, 255, 174, 161, 94, 255, 209, 194, 112, 255, 169, 157, 92, 243, 100, 94, 63, 128, 111, 104, 66, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 81, 57, 75, 117, 110, 71, 183, 110, 105, 78, 246, 141, 132, 83, 255, 96, 94, 81, 255, 102, 98, 78, 255, 115, 109, 79, 255, 126, 119, 82, 255, 101, 98, 77, 255, 98, 96, 86, 255, 136, 127, 79, 255, 118, 113, 84, 254, 105, 99, 69, 184, 110, 103, 67, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 87, 87, 72, 109, 109, 109, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 41, 36, 50, 153, 143, 86, 227, 179, 166, 98, 255, 180, 158, 92, 255, 183, 170, 98, 255, 169, 158, 93, 255, 158, 145, 89, 255, 155, 139, 86, 255, 168, 156, 93, 255, 180, 167, 96, 255, 181, 159, 92, 255, 174, 162, 96, 255, 159, 148, 87, 227, 84, 80, 57, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 89, 39, 98, 98, 98, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 82, 82, 119, 108, 108, 108, 254, 81, 81, 81, 179, 109, 109, 109, 40, 0, 0, 0, 0, 133, 133, 133, 2, 74, 74, 74, 32, 132, 125, 88, 255, 121, 117, 94, 255, 107, 102, 77, 255, 119, 119, 119, 255, 134, 134, 134, 255, 129, 125, 102, 255, 134, 128, 94, 255, 135, 135, 135, 255, 127, 127, 127, 255, 104, 100, 81, 255, 116, 112, 88, 255, 143, 136, 97, 255, 50, 49, 44, 58, 95, 95, 95, 3, 0, 0, 0, 0, 83, 83, 83, 23, 94, 94, 94, 153, 95, 95, 95, 251, 99, 99, 99, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 67, 67, 95, 125, 125, 125, 255, 92, 92, 92, 255, 77, 77, 77, 110, 0, 0, 0, 0, 51, 51, 46, 55, 149, 138, 82, 247, 125, 125, 125, 255, 117, 114, 97, 255, 209, 194, 112, 255, 125, 120, 90, 255, 120, 118, 110, 255, 175, 163, 98, 255, 187, 174, 101, 255, 127, 124, 106, 255, 123, 119, 99, 255, 192, 178, 103, 255, 133, 126, 92, 255, 135, 135, 135, 255, 131, 123, 79, 243, 99, 94, 64, 101, 0, 0, 0, 0, 58, 58, 58, 62, 96, 96, 96, 255, 115, 115, 115, 255, 90, 90, 90, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 170, 135, 135, 135, 255, 105, 105, 105, 217, 79, 79, 79, 5, 0, 0, 0, 0, 58, 58, 58, 23, 178, 165, 96, 255, 130, 125, 97, 255, 161, 151, 92, 255, 208, 193, 111, 255, 180, 167, 97, 255, 98, 95, 79, 255, 170, 158, 94, 255, 179, 167, 98, 255, 119, 114, 88, 255, 153, 143, 87, 255, 204, 190, 110, 255, 194, 180, 104, 255, 108, 105, 88, 255, 191, 177, 103, 255, 73, 70, 51, 67, 0, 0, 0, 0, 119, 119, 119, 0, 95, 95, 95, 173, 135, 135, 135, 255, 104, 104, 104, 216, 167, 167, 167, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 35, 119, 119, 119, 251, 135, 135, 135, 255, 86, 86, 86, 137, 0, 0, 0, 0, 0, 0, 0, 0, 178, 178, 178, 3, 135, 127, 79, 246, 110, 107, 93, 255, 95, 92, 74, 255, 124, 114, 74, 255, 113, 109, 88, 255, 133, 126, 86, 255, 143, 134, 93, 255, 151, 134, 88, 255, 135, 128, 87, 255, 118, 115, 95, 255, 124, 113, 71, 255, 96, 93, 77, 255, 100, 98, 85, 255, 144, 135, 86, 255, 51, 51, 51, 33, 0, 0, 0, 0, 0, 0, 0, 0, 67, 67, 67, 90, 132, 132, 132, 255, 130, 130, 130, 255, 63, 63, 63, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 89, 143, 135, 135, 135, 255, 114, 114, 114, 242, 47, 47, 47, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 144, 87, 219, 155, 145, 90, 255, 167, 156, 93, 255, 146, 133, 90, 255, 140, 133, 98, 255, 135, 130, 103, 255, 131, 126, 103, 255, 129, 125, 102, 255, 134, 129, 103, 255, 141, 135, 101, 255, 141, 128, 89, 255, 164, 153, 94, 255, 161, 150, 91, 255, 152, 142, 86, 251, 126, 126, 126, 5, 0, 0, 0, 0, 0, 0, 0, 0, 123, 123, 123, 4, 103, 103, 103, 213, 135, 135, 135, 255, 101, 101, 101, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 62, 50, 32, 126, 118, 73, 133, 63, 62, 55, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, 106, 213, 135, 135, 135, 255, 93, 93, 93, 165, 49, 49, 49, 12, 0, 0, 0, 0, 0, 0, 0, 0, 93, 93, 93, 1, 94, 91, 79, 189, 117, 117, 115, 255, 123, 122, 118, 255, 140, 133, 96, 255, 127, 127, 126, 255, 135, 135, 135, 255, 134, 128, 94, 255, 140, 132, 88, 255, 135, 135, 135, 255, 134, 134, 134, 255, 132, 126, 95, 255, 124, 122, 111, 255, 120, 120, 118, 255, 101, 98, 87, 219, 115, 115, 115, 2, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 9, 78, 78, 78, 122, 135, 135, 135, 255, 111, 111, 111, 252, 119, 119, 119, 7, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 15, 82, 82, 82, 123, 73, 73, 73, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 69, 54, 45, 171, 159, 94, 238, 178, 165, 97, 244, 114, 107, 68, 126, 82, 82, 82, 10, 0, 0, 0, 0, 65, 51, 51, 166, 121, 45, 46, 255, 133, 6, 7, 255, 92, 40, 41, 228, 60, 60, 60, 55, 0, 0, 0, 0, 89, 89, 89, 7, 122, 114, 70, 240, 123, 123, 123, 255, 124, 119, 95, 255, 209, 194, 112, 255, 141, 133, 90, 255, 116, 114, 99, 255, 186, 173, 101, 255, 194, 181, 105, 255, 128, 124, 99, 255, 130, 124, 92, 255, 198, 184, 106, 255, 138, 131, 91, 255, 131, 131, 131, 255, 119, 112, 73, 254, 56, 56, 55, 34, 0, 0, 0, 0, 61, 61, 61, 40, 83, 50, 50, 214, 136, 3, 4, 255, 122, 41, 41, 255, 73, 53, 53, 200, 121, 121, 121, 3, 128, 128, 128, 2, 72, 72, 72, 99, 109, 109, 109, 232, 118, 118, 118, 249, 76, 76, 76, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 48, 20, 120, 113, 70, 185, 184, 171, 99, 255, 161, 150, 89, 224, 95, 90, 62, 87, 75, 75, 75, 8, 99, 14, 15, 140, 153, 2, 3, 253, 113, 82, 83, 255, 120, 120, 120, 250, 49, 49, 49, 49, 0, 0, 0, 0, 150, 140, 86, 163, 138, 131, 95, 255, 159, 148, 90, 255, 193, 179, 103, 255, 155, 146, 91, 255, 93, 91, 81, 255, 154, 145, 93, 255, 164, 154, 95, 255, 106, 103, 86, 255, 140, 132, 88, 255, 185, 172, 100, 255, 186, 173, 100, 255, 111, 106, 84, 255, 160, 149, 91, 204, 0, 0, 0, 0, 52, 52, 52, 24, 110, 110, 110, 242, 111, 99, 99, 255, 155, 0, 2, 255, 107, 12, 13, 163, 61, 59, 59, 16, 63, 63, 63, 60, 100, 100, 100, 204, 123, 123, 123, 255, 87, 87, 87, 215, 55, 55, 55, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 105, 68, 127, 173, 161, 93, 255, 152, 141, 81, 255, 191, 177, 102, 255, 146, 137, 83, 192, 73, 70, 54, 49, 64, 43, 43, 115, 101, 92, 92, 255, 93, 87, 88, 254, 49, 49, 49, 28, 0, 0, 0, 0, 92, 87, 61, 78, 93, 91, 80, 255, 105, 101, 79, 255, 131, 115, 75, 255, 135, 127, 92, 255, 158, 148, 91, 255, 159, 148, 94, 255, 161, 142, 88, 255, 158, 148, 92, 255, 141, 134, 97, 255, 133, 115, 72, 255, 104, 101, 84, 255, 92, 90, 80, 255, 96, 90, 58, 119, 0, 0, 0, 0, 109, 109, 109, 8, 93, 93, 93, 244, 98, 83, 83, 255, 69, 53, 53, 148, 54, 54, 54, 29, 92, 92, 92, 165, 123, 123, 123, 254, 101, 101, 101, 255, 107, 107, 107, 255, 91, 91, 91, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 104, 69, 99, 140, 131, 80, 190, 201, 186, 107, 255, 163, 151, 90, 230, 143, 133, 77, 255, 160, 148, 86, 255, 186, 173, 100, 252, 97, 96, 89, 233, 57, 20, 20, 255, 93, 93, 93, 196, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 8, 120, 109, 65, 241, 160, 111, 64, 255, 133, 74, 43, 255, 136, 50, 30, 255, 120, 33, 20, 255, 143, 26, 16, 255, 142, 24, 15, 255, 121, 31, 19, 255, 136, 47, 28, 255, 135, 69, 40, 255, 153, 105, 61, 255, 137, 121, 71, 254, 57, 56, 49, 35, 0, 0, 0, 0, 0, 0, 0, 0, 95, 95, 95, 166, 61, 24, 24, 255, 87, 87, 87, 234, 113, 113, 113, 244, 109, 109, 109, 255, 96, 96, 96, 255, 96, 96, 96, 228, 130, 130, 130, 255, 101, 101, 101, 205, 83, 83, 83, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 133, 133, 4, 157, 146, 87, 233, 206, 192, 111, 255, 83, 79, 55, 169, 67, 64, 52, 110, 190, 176, 102, 255, 193, 179, 103, 255, 115, 108, 66, 255, 106, 102, 102, 255, 93, 76, 76, 255, 81, 78, 61, 158, 79, 79, 79, 5, 0, 0, 0, 0, 0, 0, 0, 0, 47, 42, 42, 33, 80, 25, 25, 119, 145, 0, 2, 255, 168, 0, 2, 255, 110, 10, 11, 217, 132, 11, 12, 199, 132, 10, 12, 199, 103, 11, 12, 203, 165, 0, 2, 255, 163, 0, 2, 255, 76, 16, 17, 150, 40, 30, 30, 40, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 118, 0, 62, 62, 62, 123, 95, 85, 85, 255, 101, 91, 91, 255, 74, 74, 74, 255, 118, 118, 118, 255, 133, 133, 133, 255, 60, 60, 60, 130, 57, 57, 57, 145, 122, 122, 122, 255, 117, 117, 117, 254, 57, 57, 57, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 61, 47, 63, 135, 126, 78, 190, 209, 194, 112, 255, 131, 123, 78, 166, 114, 107, 68, 158, 158, 147, 88, 234, 103, 97, 64, 146, 86, 86, 86, 198, 104, 105, 109, 255, 68, 72, 77, 255, 115, 110, 75, 255, 52, 53, 47, 215, 18, 26, 44, 121, 20, 28, 46, 119, 21, 28, 46, 119, 57, 14, 26, 189, 118, 5, 15, 255, 96, 7, 16, 254, 27, 32, 47, 140, 22, 29, 46, 119, 22, 29, 46, 119, 24, 30, 47, 122, 81, 11, 20, 245, 118, 5, 15, 255, 75, 12, 23, 216, 21, 28, 46, 119, 20, 28, 46, 119, 19, 27, 46, 119, 29, 34, 46, 192, 71, 75, 84, 255, 65, 69, 79, 255, 96, 98, 103, 255, 96, 96, 96, 226, 48, 48, 48, 107, 111, 111, 111, 252, 83, 83, 83, 167, 70, 70, 70, 139, 133, 133, 133, 255, 103, 103, 103, 226, 48, 48, 48, 73, 141, 141, 141, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 7, 131, 123, 76, 197, 154, 144, 87, 232, 172, 160, 94, 242, 98, 93, 62, 141, 207, 192, 111, 255, 209, 194, 112, 255, 141, 132, 81, 184, 109, 109, 109, 230, 51, 73, 131, 255, 6, 72, 241, 255, 13, 77, 242, 255, 19, 82, 242, 255, 25, 86, 243, 255, 29, 87, 235, 255, 35, 93, 241, 255, 39, 97, 243, 255, 42, 98, 241, 255, 45, 101, 244, 255, 47, 102, 244, 255, 48, 103, 244, 255, 48, 103, 244, 255, 47, 102, 244, 255, 45, 101, 244, 255, 42, 98, 241, 255, 40, 97, 243, 255, 36, 94, 243, 255, 30, 87, 233, 255, 26, 87, 243, 255, 20, 82, 242, 255, 14, 78, 242, 255, 7, 73, 241, 255, 36, 67, 148, 255, 112, 112, 112, 254, 83, 83, 83, 145, 135, 135, 135, 255, 135, 135, 135, 255, 92, 92, 92, 170, 103, 103, 103, 215, 105, 105, 105, 231, 99, 99, 99, 219, 51, 51, 51, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 221, 221, 1, 91, 91, 91, 7, 66, 64, 50, 124, 131, 122, 73, 241, 190, 177, 102, 254, 129, 120, 75, 152, 77, 73, 53, 50, 101, 101, 101, 195, 55, 76, 131, 255, 17, 80, 242, 255, 24, 85, 242, 255, 31, 90, 243, 255, 37, 95, 243, 255, 51, 82, 157, 255, 42, 91, 215, 255, 52, 105, 243, 255, 50, 74, 130, 255, 58, 110, 244, 255, 47, 84, 179, 255, 61, 112, 244, 255, 61, 112, 244, 255, 50, 88, 187, 255, 56, 107, 237, 255, 54, 80, 142, 255, 49, 100, 230, 255, 48, 103, 243, 255, 47, 72, 130, 255, 38, 95, 243, 255, 32, 91, 243, 255, 25, 86, 242, 255, 18, 81, 242, 255, 40, 71, 148, 255, 107, 107, 107, 227, 55, 55, 55, 22, 86, 86, 86, 145, 116, 116, 116, 243, 101, 101, 101, 254, 52, 52, 52, 128, 49, 49, 49, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 96, 13, 82, 82, 82, 22, 152, 142, 83, 246, 85, 80, 56, 83, 0, 0, 0, 0, 63, 63, 63, 54, 41, 63, 118, 244, 27, 88, 243, 255, 40, 75, 161, 255, 40, 90, 219, 255, 49, 103, 244, 255, 89, 111, 156, 255, 61, 96, 184, 255, 57, 98, 200, 255, 100, 115, 140, 255, 70, 104, 187, 255, 82, 106, 160, 255, 74, 122, 245, 255, 74, 122, 245, 255, 68, 102, 186, 255, 84, 108, 160, 255, 85, 111, 167, 255, 73, 103, 174, 255, 54, 99, 215, 255, 97, 109, 124, 255, 50, 104, 244, 255, 42, 97, 237, 255, 40, 70, 143, 255, 28, 88, 243, 255, 35, 64, 139, 252, 71, 71, 71, 78, 0, 0, 0, 0, 48, 48, 48, 41, 106, 106, 106, 248, 60, 60, 60, 60, 78, 78, 78, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 63, 54, 35, 54, 53, 48, 24, 0, 0, 0, 0, 0, 0, 0, 0, 31, 57, 123, 194, 38, 95, 243, 255, 46, 88, 193, 255, 88, 106, 139, 255, 60, 112, 244, 255, 84, 110, 165, 255, 95, 116, 159, 255, 82, 110, 174, 255, 103, 122, 157, 255, 113, 125, 139, 255, 75, 109, 194, 255, 87, 131, 246, 255, 87, 131, 246, 255, 80, 122, 229, 255, 109, 113, 104, 255, 82, 111, 178, 255, 104, 121, 152, 255, 73, 105, 181, 255, 108, 123, 143, 255, 61, 112, 244, 255, 71, 100, 165, 255, 65, 96, 167, 255, 39, 96, 243, 255, 31, 62, 141, 229, 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 69, 5, 53, 53, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 60, 123, 194, 48, 103, 244, 255, 56, 108, 242, 255, 119, 120, 99, 255, 68, 107, 205, 255, 70, 105, 192, 255, 124, 131, 126, 255, 98, 120, 167, 255, 111, 127, 156, 255, 117, 118, 98, 255, 92, 131, 230, 255, 100, 141, 247, 255, 100, 141, 247, 255, 99, 140, 247, 255, 113, 111, 86, 255, 90, 115, 173, 255, 118, 130, 144, 255, 109, 124, 151, 255, 88, 113, 168, 255, 67, 112, 226, 255, 125, 123, 93, 255, 54, 102, 227, 255, 49, 103, 244, 255, 36, 66, 141, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 63, 123, 194, 57, 110, 244, 255, 63, 111, 234, 255, 78, 107, 176, 255, 136, 135, 108, 255, 84, 126, 232, 255, 121, 118, 87, 255, 99, 118, 155, 255, 128, 136, 138, 255, 114, 111, 82, 255, 78, 102, 162, 255, 113, 151, 247, 255, 113, 151, 248, 255, 84, 110, 174, 255, 122, 122, 101, 255, 97, 110, 129, 255, 123, 133, 144, 255, 125, 125, 100, 255, 80, 118, 216, 255, 118, 126, 125, 255, 95, 114, 150, 255, 66, 115, 240, 255, 57, 108, 238, 255, 41, 69, 142, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 65, 124, 194, 66, 116, 245, 255, 61, 79, 121, 255, 82, 125, 238, 255, 121, 127, 125, 255, 119, 126, 127, 255, 121, 131, 139, 255, 122, 121, 95, 255, 180, 169, 103, 255, 183, 171, 100, 255, 111, 128, 164, 255, 126, 160, 248, 255, 126, 160, 248, 255, 105, 129, 190, 255, 184, 171, 100, 255, 172, 161, 98, 255, 130, 128, 100, 255, 132, 134, 116, 255, 105, 121, 148, 255, 138, 137, 108, 255, 82, 125, 237, 255, 62, 81, 123, 255, 65, 113, 236, 255, 46, 73, 142, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 68, 124, 194, 75, 123, 245, 255, 85, 113, 178, 255, 118, 123, 115, 255, 92, 127, 219, 255, 140, 139, 112, 255, 151, 145, 98, 255, 209, 194, 112, 255, 209, 194, 112, 255, 209, 194, 112, 255, 117, 137, 185, 255, 139, 170, 249, 255, 139, 170, 249, 255, 120, 146, 215, 255, 195, 181, 105, 255, 209, 194, 112, 255, 209, 194, 112, 255, 159, 152, 102, 255, 152, 146, 102, 255, 94, 128, 213, 255, 108, 119, 134, 255, 95, 113, 149, 255, 76, 124, 245, 255, 50, 76, 142, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 71, 124, 194, 81, 125, 239, 255, 89, 129, 234, 255, 108, 122, 147, 255, 144, 141, 106, 255, 97, 120, 175, 255, 160, 152, 99, 255, 208, 193, 111, 255, 176, 164, 95, 255, 167, 156, 94, 255, 138, 163, 227, 255, 152, 179, 250, 255, 152, 180, 250, 255, 149, 177, 247, 255, 150, 143, 98, 255, 175, 162, 94, 255, 205, 190, 110, 255, 182, 169, 98, 255, 91, 113, 168, 255, 135, 137, 118, 255, 119, 126, 125, 255, 92, 133, 238, 255, 79, 121, 231, 255, 54, 79, 142, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 73, 124, 194, 90, 133, 244, 255, 73, 87, 115, 255, 100, 126, 189, 255, 112, 129, 165, 255, 186, 173, 102, 255, 208, 193, 111, 255, 146, 146, 122, 255, 147, 172, 237, 255, 147, 170, 230, 255, 163, 188, 250, 255, 165, 189, 250, 255, 165, 189, 250, 255, 164, 188, 250, 255, 150, 173, 233, 255, 148, 174, 239, 255, 135, 140, 139, 255, 209, 194, 112, 255, 195, 181, 105, 255, 118, 129, 143, 255, 99, 128, 201, 255, 80, 91, 112, 255, 87, 127, 232, 255, 58, 82, 143, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 40, 2, 80, 80, 80, 124, 105, 105, 105, 206, 101, 101, 101, 184, 66, 66, 66, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 75, 124, 194, 98, 139, 247, 255, 105, 142, 238, 255, 110, 122, 142, 255, 119, 121, 106, 255, 178, 167, 105, 255, 209, 194, 112, 255, 146, 151, 148, 255, 166, 189, 250, 255, 172, 194, 251, 255, 176, 197, 251, 255, 178, 199, 251, 255, 178, 199, 251, 255, 176, 197, 251, 255, 172, 194, 251, 255, 167, 190, 251, 255, 142, 150, 159, 255, 209, 194, 112, 255, 189, 176, 103, 255, 127, 129, 115, 255, 111, 119, 126, 255, 102, 137, 227, 255, 99, 140, 247, 255, 61, 84, 142, 229, 153, 153, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 66, 54, 33, 141, 132, 81, 167, 158, 148, 90, 210, 131, 122, 77, 149, 46, 45, 44, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 82, 82, 129, 118, 118, 118, 245, 87, 87, 87, 135, 97, 97, 97, 187, 114, 114, 114, 244, 56, 56, 56, 31, 87, 87, 87, 160, 79, 79, 79, 162, 62, 76, 113, 252, 104, 144, 247, 255, 78, 96, 139, 255, 111, 131, 177, 255, 104, 125, 179, 255, 178, 166, 100, 255, 209, 194, 112, 255, 156, 154, 129, 255, 177, 197, 251, 255, 183, 203, 251, 255, 188, 206, 252, 255, 191, 208, 252, 255, 191, 208, 252, 255, 189, 207, 252, 255, 184, 203, 252, 255, 178, 198, 251, 255, 156, 154, 127, 255, 209, 194, 112, 255, 196, 182, 105, 255, 101, 118, 160, 255, 110, 132, 183, 255, 82, 97, 131, 255, 102, 141, 240, 255, 70, 88, 129, 255, 134, 125, 77, 182, 132, 124, 77, 165, 57, 56, 47, 36, 154, 144, 86, 219, 157, 146, 86, 207, 125, 116, 71, 127, 170, 158, 93, 227, 138, 129, 78, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, 106, 218, 88, 88, 88, 133, 0, 0, 0, 0, 78, 78, 78, 6, 110, 110, 110, 241, 77, 77, 77, 184, 104, 104, 104, 255, 100, 100, 100, 254, 62, 76, 114, 238, 109, 148, 247, 255, 117, 151, 240, 255, 120, 135, 162, 255, 140, 137, 108, 255, 185, 172, 100, 255, 195, 175, 109, 255, 162, 146, 122, 255, 197, 197, 232, 255, 210, 207, 233, 255, 216, 211, 233, 255, 208, 205, 232, 255, 206, 206, 235, 255, 216, 211, 233, 255, 212, 208, 233, 255, 199, 199, 233, 255, 163, 145, 117, 255, 196, 174, 112, 255, 198, 183, 106, 255, 138, 134, 99, 255, 127, 138, 152, 255, 114, 147, 230, 255, 110, 149, 247, 255, 68, 87, 133, 246, 139, 130, 77, 240, 184, 171, 99, 255, 98, 92, 59, 189, 181, 168, 97, 255, 53, 52, 49, 39, 0, 0, 0, 0, 81, 77, 55, 84, 172, 160, 93, 253, 112, 112, 112, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 67, 67, 56, 112, 112, 112, 238, 106, 106, 106, 212, 73, 73, 73, 95, 56, 56, 56, 43, 119, 119, 119, 251, 127, 127, 127, 255, 80, 80, 80, 194, 97, 97, 97, 246, 62, 78, 119, 213, 113, 151, 247, 255, 124, 158, 245, 255, 116, 140, 200, 255, 138, 143, 140, 255, 193, 179, 105, 255, 205, 186, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 255, 253, 253, 253, 255, 255, 254, 254, 255, 248, 235, 235, 255, 254, 254, 254, 255, 210, 210, 210, 255, 218, 218, 218, 255, 255, 255, 255, 255, 224, 207, 176, 255, 201, 187, 108, 255, 143, 144, 128, 255, 116, 138, 190, 255, 123, 156, 241, 255, 114, 152, 248, 255, 69, 90, 143, 229, 136, 127, 78, 203, 121, 113, 70, 200, 184, 170, 99, 254, 202, 187, 108, 255, 83, 79, 55, 86, 89, 84, 59, 68, 144, 134, 81, 193, 185, 172, 100, 255, 96, 91, 63, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 35, 115, 115, 115, 246, 100, 100, 100, 198, 95, 95, 95, 164, 117, 117, 117, 252, 105, 105, 105, 249, 105, 105, 105, 199, 115, 115, 115, 240, 94, 94, 94, 196, 163, 163, 163, 6, 64, 81, 125, 194, 116, 153, 248, 255, 110, 139, 212, 255, 120, 135, 166, 255, 118, 133, 165, 255, 164, 153, 95, 255, 205, 186, 142, 255, 255, 255, 255, 255, 37, 37, 37, 255, 1, 1, 1, 255, 120, 120, 120, 255, 255, 255, 255, 255, 248, 236, 236, 255, 82, 82, 82, 255, 77, 77, 77, 255, 33, 33, 33, 255, 165, 165, 165, 255, 224, 207, 176, 255, 184, 171, 99, 255, 110, 123, 150, 255, 125, 140, 168, 255, 105, 131, 197, 255, 117, 154, 248, 255, 71, 91, 143, 229, 180, 180, 180, 4, 124, 116, 73, 149, 181, 168, 98, 250, 155, 145, 89, 197, 159, 148, 87, 242, 181, 169, 98, 252, 145, 135, 81, 181, 145, 136, 83, 179, 182, 169, 98, 253, 89, 84, 57, 73, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 84, 84, 84, 120, 108, 108, 108, 231, 69, 69, 69, 6, 0, 0, 0, 0, 92, 92, 92, 153, 102, 102, 102, 198, 0, 0, 0, 0, 60, 60, 60, 54, 119, 119, 119, 255, 46, 46, 46, 56, 64, 81, 125, 194, 117, 154, 248, 255, 123, 154, 234, 255, 124, 139, 169, 255, 160, 153, 106, 255, 188, 174, 101, 255, 205, 186, 142, 255, 255, 255, 255, 255, 104, 104, 104, 255, 35, 35, 35, 255, 177, 177, 177, 255, 255, 255, 255, 255, 203, 192, 192, 255, 100, 100, 100, 255, 255, 255, 255, 255, 222, 222, 222, 255, 60, 60, 60, 255, 224, 207, 176, 255, 193, 179, 103, 255, 166, 157, 100, 255, 128, 140, 159, 255, 120, 150, 225, 255, 119, 155, 248, 255, 71, 92, 143, 229, 88, 88, 88, 10, 171, 159, 93, 252, 92, 87, 59, 102, 0, 0, 0, 0, 138, 129, 81, 153, 154, 144, 88, 202, 153, 153, 153, 0, 221, 221, 221, 0, 150, 139, 84, 190, 144, 135, 81, 165, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 79, 150, 112, 112, 112, 240, 50, 50, 50, 20, 136, 136, 136, 1, 95, 96, 97, 177, 91, 100, 127, 204, 83, 120, 235, 47, 63, 88, 167, 69, 103, 109, 131, 255, 49, 50, 53, 56, 61, 78, 121, 194, 118, 154, 248, 255, 98, 113, 145, 255, 135, 144, 156, 255, 123, 140, 179, 255, 155, 150, 112, 255, 205, 186, 142, 255, 243, 243, 243, 255, 18, 18, 18, 255, 63, 63, 63, 255, 65, 65, 65, 255, 255, 255, 255, 255, 210, 199, 199, 255, 120, 120, 120, 255, 255, 255, 255, 255, 241, 241, 241, 255, 77, 77, 77, 255, 224, 207, 176, 255, 171, 161, 105, 255, 120, 136, 176, 255, 134, 144, 160, 255, 105, 117, 139, 255, 114, 149, 237, 255, 68, 88, 138, 226, 93, 93, 93, 10, 153, 147, 107, 251, 65, 79, 118, 108, 83, 120, 235, 47, 114, 118, 117, 164, 150, 142, 93, 216, 90, 90, 90, 8, 56, 56, 56, 5, 155, 145, 88, 209, 140, 130, 79, 195, 95, 95, 95, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 134, 134, 134, 6, 92, 92, 92, 240, 110, 110, 110, 242, 111, 111, 111, 233, 105, 105, 105, 215, 91, 107, 158, 255, 160, 162, 142, 255, 206, 192, 114, 255, 206, 192, 114, 255, 187, 179, 126, 255, 66, 106, 237, 20, 53, 70, 111, 180, 117, 154, 248, 255, 130, 163, 248, 255, 123, 144, 193, 255, 139, 135, 101, 255, 162, 154, 105, 255, 205, 186, 142, 255, 148, 148, 148, 255, 114, 114, 114, 255, 206, 206, 206, 255, 49, 49, 49, 255, 206, 206, 206, 255, 245, 234, 234, 255, 59, 59, 59, 255, 250, 250, 250, 255, 172, 172, 172, 255, 136, 136, 136, 255, 224, 207, 176, 255, 170, 161, 106, 255, 142, 137, 96, 255, 123, 140, 176, 255, 131, 164, 247, 255, 119, 155, 248, 255, 61, 81, 131, 211, 0, 0, 0, 0, 171, 169, 140, 219, 206, 192, 114, 255, 206, 192, 114, 255, 203, 190, 116, 255, 119, 133, 161, 255, 161, 150, 89, 224, 161, 150, 90, 223, 177, 165, 97, 247, 158, 147, 87, 248, 38, 38, 35, 42, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 146, 146, 146, 6, 47, 47, 47, 22, 83, 83, 83, 122, 91, 91, 91, 139, 23, 63, 194, 182, 128, 138, 149, 255, 121, 118, 89, 255, 152, 146, 100, 255, 182, 173, 114, 255, 66, 106, 234, 42, 47, 60, 93, 160, 116, 153, 248, 255, 106, 133, 202, 255, 118, 131, 157, 255, 130, 151, 205, 255, 151, 149, 120, 255, 205, 185, 142, 255, 126, 126, 126, 255, 183, 183, 183, 255, 255, 255, 255, 255, 158, 158, 158, 255, 180, 180, 180, 255, 236, 225, 225, 255, 94, 94, 94, 255, 216, 216, 216, 255, 140, 140, 140, 255, 144, 144, 144, 255, 224, 207, 176, 255, 166, 159, 110, 255, 128, 150, 203, 255, 122, 137, 165, 255, 101, 125, 184, 255, 117, 154, 248, 255, 57, 74, 118, 191, 163, 183, 250, 0, 176, 173, 136, 234, 209, 194, 112, 255, 155, 150, 113, 255, 186, 179, 126, 255, 17, 62, 211, 193, 127, 119, 75, 130, 129, 121, 76, 134, 64, 62, 48, 39, 130, 130, 130, 5, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 62, 240, 146, 101, 123, 178, 255, 104, 112, 122, 255, 67, 90, 156, 255, 183, 173, 113, 255, 114, 134, 184, 82, 28, 33, 45, 121, 111, 149, 245, 255, 125, 160, 248, 255, 119, 142, 199, 255, 131, 129, 103, 255, 149, 143, 101, 255, 203, 182, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 202, 171, 255, 158, 151, 103, 255, 135, 130, 95, 255, 119, 138, 183, 255, 126, 160, 247, 255, 114, 152, 248, 255, 42, 54, 82, 152, 70, 110, 242, 22, 190, 182, 124, 255, 209, 194, 112, 255, 154, 150, 113, 255, 149, 154, 149, 255, 8, 62, 240, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 241, 134, 52, 90, 208, 255, 151, 147, 112, 255, 207, 193, 111, 255, 151, 146, 107, 255, 154, 159, 152, 148, 36, 36, 36, 56, 85, 115, 192, 255, 118, 153, 242, 255, 104, 126, 182, 255, 125, 150, 214, 255, 150, 148, 118, 255, 201, 185, 107, 255, 206, 181, 122, 255, 215, 191, 142, 255, 211, 188, 135, 255, 206, 182, 122, 255, 208, 185, 137, 255, 209, 180, 138, 255, 203, 179, 121, 255, 207, 184, 130, 255, 211, 188, 140, 255, 210, 186, 129, 255, 203, 184, 108, 255, 163, 156, 107, 255, 124, 148, 211, 255, 107, 130, 185, 255, 113, 146, 231, 255, 99, 133, 221, 255, 24, 25, 27, 87, 119, 137, 182, 88, 178, 167, 102, 255, 209, 194, 112, 255, 136, 133, 101, 255, 102, 123, 177, 255, 10, 64, 241, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 81, 242, 50, 37, 84, 237, 91, 141, 142, 122, 254, 60, 85, 156, 255, 105, 119, 147, 255, 157, 155, 127, 231, 82, 119, 237, 6, 55, 71, 113, 207, 115, 152, 248, 255, 117, 149, 230, 255, 94, 101, 108, 255, 131, 140, 149, 255, 145, 140, 102, 255, 144, 145, 128, 255, 172, 161, 96, 255, 132, 131, 109, 255, 158, 152, 110, 255, 150, 160, 181, 255, 151, 161, 181, 255, 153, 151, 123, 255, 137, 135, 111, 255, 185, 172, 100, 255, 129, 132, 123, 255, 154, 145, 89, 255, 124, 136, 157, 255, 105, 109, 104, 255, 110, 139, 213, 255, 116, 153, 248, 255, 60, 81, 132, 230, 66, 66, 66, 8, 161, 163, 147, 177, 91, 105, 136, 255, 63, 87, 156, 255, 118, 123, 118, 255, 100, 125, 192, 122, 31, 80, 242, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 148, 142, 188, 149, 142, 98, 255, 205, 191, 110, 255, 198, 184, 107, 255, 124, 140, 178, 99, 32, 33, 34, 54, 73, 97, 159, 246, 119, 155, 247, 255, 129, 162, 247, 255, 116, 141, 207, 255, 117, 134, 171, 255, 121, 140, 190, 255, 129, 140, 158, 255, 114, 128, 163, 255, 160, 179, 228, 255, 177, 198, 251, 255, 178, 198, 251, 255, 169, 189, 241, 255, 108, 120, 151, 255, 139, 152, 181, 255, 113, 129, 167, 255, 127, 146, 191, 255, 107, 129, 185, 255, 131, 164, 248, 255, 120, 155, 246, 255, 82, 110, 180, 253, 27, 29, 36, 77, 95, 123, 207, 42, 112, 121, 132, 251, 156, 153, 121, 255, 205, 190, 110, 255, 149, 148, 123, 240, 65, 106, 241, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 132, 190, 70, 168, 161, 112, 255, 169, 163, 115, 255, 63, 87, 156, 255, 145, 145, 123, 229, 70, 108, 230, 17, 34, 34, 35, 56, 58, 74, 113, 207, 87, 112, 176, 255, 117, 146, 221, 255, 135, 165, 241, 255, 147, 176, 249, 255, 154, 181, 250, 255, 159, 184, 250, 255, 162, 187, 250, 255, 164, 189, 250, 255, 165, 189, 250, 255, 163, 187, 250, 255, 159, 185, 250, 255, 154, 181, 250, 255, 148, 176, 249, 255, 137, 167, 243, 255, 120, 149, 225, 255, 91, 117, 183, 255, 61, 78, 123, 216, 30, 32, 36, 74, 119, 149, 247, 1, 140, 145, 142, 186, 152, 144, 95, 255, 105, 119, 147, 255, 80, 95, 129, 255, 146, 154, 159, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 202, 251, 0, 130, 137, 139, 184, 77, 96, 145, 255, 188, 176, 110, 255, 137, 137, 115, 255, 140, 147, 148, 173, 143, 168, 248, 3, 170, 170, 170, 0, 43, 43, 43, 35, 27, 27, 27, 82, 21, 22, 24, 103, 53, 61, 84, 156, 85, 101, 142, 237, 136, 163, 231, 255, 150, 178, 250, 255, 152, 179, 250, 255, 152, 179, 250, 255, 150, 178, 250, 255, 141, 168, 238, 255, 90, 107, 151, 243, 57, 67, 92, 165, 24, 25, 29, 108, 25, 25, 25, 85, 43, 43, 43, 43, 96, 96, 96, 1, 0, 0, 0, 0, 128, 142, 170, 116, 133, 136, 128, 255, 92, 102, 117, 255, 162, 157, 118, 255, 170, 165, 125, 237, 70, 109, 231, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 117, 207, 34, 162, 158, 121, 241, 137, 134, 101, 255, 92, 110, 154, 255, 140, 135, 97, 255, 139, 149, 162, 147, 132, 159, 248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46, 9, 38, 43, 54, 125, 97, 118, 172, 248, 138, 169, 249, 255, 138, 169, 249, 255, 106, 129, 188, 253, 40, 46, 62, 141, 43, 43, 43, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 144, 180, 95, 175, 167, 113, 253, 98, 105, 116, 255, 137, 139, 125, 255, 149, 148, 120, 255, 125, 141, 178, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 138, 176, 87, 113, 115, 104, 254, 120, 128, 136, 255, 208, 193, 112, 255, 196, 186, 121, 254, 96, 125, 212, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 29, 61, 85, 108, 165, 244, 95, 120, 185, 251, 32, 34, 40, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 98, 241, 17, 172, 170, 137, 236, 209, 194, 112, 255, 209, 194, 112, 255, 139, 133, 90, 255, 142, 149, 155, 162, 197, 210, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 147, 169, 120, 202, 190, 116, 255, 197, 186, 119, 255, 161, 163, 143, 249, 127, 143, 177, 99, 204, 216, 252, 0, 80, 114, 217, 55, 91, 127, 245, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 35, 47, 98, 41, 49, 68, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 149, 247, 0, 78, 112, 218, 55, 159, 180, 249, 3, 132, 146, 171, 117, 162, 164, 142, 251, 182, 176, 129, 255, 209, 194, 112, 255, 158, 162, 149, 190, 77, 116, 244, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 75, 241, 20, 69, 102, 201, 231, 170, 168, 136, 255, 209, 194, 112, 255, 202, 190, 116, 255, 146, 154, 158, 174, 183, 177, 130, 246, 169, 167, 138, 220, 145, 153, 162, 125, 77, 111, 218, 44, 132, 159, 248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 229, 253, 1, 70, 108, 232, 32, 134, 147, 168, 107, 131, 138, 142, 200, 193, 183, 119, 255, 141, 150, 161, 206, 206, 192, 114, 255, 209, 194, 112, 255, 173, 171, 134, 255, 105, 126, 177, 252, 28, 78, 241, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 113, 204, 62, 185, 178, 130, 248, 209, 194, 112, 255, 209, 194, 112, 255, 209, 194, 112, 255, 174, 171, 133, 255, 128, 135, 136, 255, 104, 112, 124, 255, 128, 126, 100, 255, 165, 158, 109, 255, 129, 134, 131, 243, 166, 165, 138, 202, 168, 168, 143, 185, 163, 163, 141, 182, 153, 154, 136, 199, 151, 151, 129, 235, 145, 141, 107, 255, 104, 114, 130, 255, 110, 111, 94, 255, 192, 179, 106, 255, 176, 172, 132, 255, 209, 194, 112, 255, 209, 194, 112, 255, 209, 194, 112, 255, 184, 178, 129, 238, 88, 118, 210, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 132, 189, 59, 180, 176, 133, 231, 209, 194, 112, 255, 209, 194, 112, 255, 173, 170, 134, 255, 82, 100, 144, 255, 184, 171, 103, 255, 148, 145, 109, 255, 133, 139, 135, 255, 107, 113, 119, 255, 100, 114, 147, 255, 206, 191, 110, 255, 84, 97, 129, 255, 170, 163, 114, 255, 81, 100, 152, 255, 160, 150, 94, 255, 168, 162, 116, 255, 55, 79, 149, 255, 138, 133, 97, 255, 181, 175, 129, 255, 204, 191, 115, 255, 209, 194, 112, 255, 172, 171, 139, 217, 102, 128, 201, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 115, 225, 23, 154, 159, 154, 162, 195, 185, 121, 253, 71, 103, 201, 218, 144, 148, 141, 210, 123, 125, 111, 255, 151, 150, 124, 255, 89, 107, 153, 255, 63, 84, 144, 255, 165, 159, 112, 255, 154, 145, 94, 255, 67, 86, 137, 255, 170, 164, 115, 255, 109, 120, 141, 255, 150, 145, 108, 255, 206, 191, 111, 255, 107, 115, 122, 255, 139, 141, 128, 224, 78, 109, 197, 209, 181, 176, 131, 246, 143, 152, 162, 135, 70, 110, 241, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 121, 206, 44, 91, 120, 204, 62, 164, 184, 250, 1, 87, 118, 209, 52, 149, 156, 159, 133, 133, 138, 137, 190, 141, 143, 130, 236, 132, 136, 132, 255, 137, 135, 109, 255, 158, 154, 119, 255, 126, 133, 135, 255, 172, 170, 135, 238, 159, 160, 139, 195, 152, 158, 155, 140, 94, 122, 201, 62, 131, 158, 248, 4, 52, 94, 227, 41, 80, 116, 227, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 195, 250, 7, 71, 112, 244, 21, 70, 111, 244, 22, 165, 185, 250, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 146, 146, 86, 137, 137, 137, 132, 135, 135, 135, 139, 135, 135, 135, 139, 135, 135, 135, 139, 140, 140, 140, 137, 141, 141, 141, 108, 150, 150, 150, 38, 0, 0, 0, 0, 0, 0, 0, 0, 144, 144, 144, 59, 140, 140, 140, 123, 135, 135, 135, 139, 135, 135, 135, 139, 138, 138, 138, 128, 147, 147, 147, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 71, 138, 138, 138, 128, 135, 135, 135, 139, 138, 138, 138, 128, 140, 140, 140, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 148, 148, 64, 139, 139, 139, 158, 141, 141, 141, 191, 141, 141, 141, 177, 141, 141, 141, 168, 143, 143, 143, 88, 161, 161, 161, 21, 146, 146, 146, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 68, 135, 135, 135, 255, 139, 139, 139, 208, 146, 146, 146, 69, 146, 146, 146, 82, 138, 138, 138, 193, 136, 136, 136, 253, 142, 142, 142, 131, 231, 231, 231, 0, 0, 0, 0, 0, 156, 156, 156, 16, 137, 137, 137, 244, 135, 135, 135, 255, 150, 150, 150, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 157, 157, 38, 137, 137, 137, 252, 152, 152, 152, 34, 0, 0, 0, 0, 0, 0, 0, 0, 157, 157, 157, 10, 140, 140, 140, 168, 137, 137, 137, 226, 145, 145, 145, 76, 198, 198, 198, 3, 0, 0, 0, 0, 161, 161, 161, 11, 140, 140, 140, 116, 137, 137, 137, 250, 139, 139, 139, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, 173, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 161, 161, 161, 8, 137, 137, 137, 221, 135, 135, 135, 255, 146, 146, 146, 79, 0, 0, 0, 0, 0, 0, 0, 0, 137, 137, 137, 214, 135, 135, 135, 248, 217, 217, 217, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 141, 141, 228, 0, 0, 0, 0, 0, 0, 0, 0, 171, 171, 171, 1, 140, 140, 140, 177, 136, 136, 136, 245, 146, 146, 146, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 143, 143, 106, 140, 140, 140, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 141, 141, 144, 135, 135, 135, 255, 140, 140, 140, 156, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 135, 207, 135, 135, 135, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 227, 0, 0, 0, 0, 0, 0, 0, 0, 143, 143, 143, 87, 135, 135, 135, 255, 140, 140, 140, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 189, 189, 2, 144, 144, 144, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 139, 135, 135, 135, 255, 140, 140, 140, 153, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 135, 207, 135, 135, 135, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 227, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 139, 197, 135, 135, 135, 255, 148, 148, 148, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 151, 151, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 167, 167, 167, 5, 137, 137, 137, 211, 135, 135, 135, 255, 144, 144, 144, 73, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 135, 207, 135, 135, 135, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 227, 0, 0, 0, 0, 172, 172, 172, 11, 136, 136, 136, 252, 135, 135, 135, 255, 177, 177, 177, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 139, 139, 139, 212, 146, 146, 146, 84, 147, 147, 147, 83, 139, 139, 139, 187, 136, 136, 136, 251, 141, 141, 141, 129, 215, 215, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 135, 207, 135, 135, 135, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 227, 0, 0, 0, 0, 160, 160, 160, 41, 135, 135, 135, 255, 138, 138, 138, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 141, 141, 141, 194, 143, 143, 143, 69, 144, 144, 144, 97, 144, 144, 144, 86, 153, 153, 153, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 135, 207, 135, 135, 135, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 227, 0, 0, 0, 0, 160, 160, 160, 36, 135, 135, 135, 255, 137, 137, 137, 255, 215, 215, 215, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 137, 137, 207, 136, 136, 136, 250, 212, 212, 212, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 223, 223, 1, 141, 141, 141, 225, 0, 0, 0, 0, 175, 175, 175, 5, 137, 137, 137, 246, 135, 135, 135, 255, 157, 157, 157, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 139, 193, 135, 135, 135, 255, 165, 165, 165, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 169, 169, 23, 139, 139, 139, 204, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 139, 175, 135, 135, 135, 255, 142, 142, 142, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 9, 190, 190, 190, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 140, 140, 145, 135, 135, 135, 255, 144, 144, 144, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 143, 143, 87, 139, 139, 139, 149, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 49, 136, 136, 136, 251, 137, 137, 137, 216, 157, 157, 157, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 188, 188, 6, 146, 146, 146, 138, 188, 188, 188, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 152, 152, 40, 135, 135, 135, 255, 138, 138, 138, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 149, 149, 34, 137, 137, 137, 242, 138, 138, 138, 202, 156, 156, 156, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 53, 138, 138, 138, 217, 150, 150, 150, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 108, 136, 136, 136, 254, 138, 138, 138, 188, 149, 149, 149, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 154, 154, 17, 146, 146, 146, 158, 150, 150, 150, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 159, 159, 96, 146, 146, 146, 186, 141, 141, 141, 255, 142, 142, 142, 250, 150, 150, 150, 130, 158, 158, 158, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 147, 147, 56, 138, 138, 138, 211, 137, 137, 137, 235, 141, 141, 141, 165, 141, 141, 141, 154, 139, 139, 139, 196, 139, 139, 139, 208, 145, 145, 145, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 73, 139, 139, 139, 208, 137, 137, 137, 249, 139, 139, 139, 187, 139, 139, 139, 156, 140, 140, 140, 174, 140, 140, 140, 161, 147, 147, 147, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 223, 223, 1, 223, 223, 223, 1, 223, 223, 223, 1, 223, 223, 223, 1, 223, 223, 223, 1, 224, 224, 224, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 180, 180, 0, 159, 159, 159, 35, 148, 148, 148, 66, 148, 148, 148, 68, 159, 159, 159, 36, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 202, 202, 0, 158, 158, 158, 30, 147, 147, 147, 63, 150, 150, 150, 62, 162, 162, 162, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 75, 241, 115, 15, 68, 241, 141, 14, 67, 241, 133, 36, 84, 242, 38, 0, 0, 0, 0, 0, 0, 0, 0, 29, 78, 242, 75, 37, 85, 242, 45, 0, 0, 0, 0, 0, 0, 0, 0, 23, 74, 241, 38, 19, 71, 241, 140, 19, 71, 241, 138, 44, 90, 243, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 72, 241, 190, 96, 131, 246, 30, 61, 104, 244, 47, 12, 65, 241, 165, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64, 241, 116, 0, 56, 240, 59, 0, 0, 0, 0, 87, 124, 245, 7, 13, 66, 241, 187, 46, 92, 243, 14, 60, 103, 244, 17, 16, 69, 241, 189, 128, 156, 248, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 66, 241, 190, 20, 72, 241, 147, 11, 65, 241, 223, 41, 88, 242, 54, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64, 241, 116, 0, 56, 240, 59, 0, 0, 0, 0, 57, 100, 243, 22, 12, 66, 241, 167, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64, 241, 171, 57, 101, 243, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 72, 241, 194, 115, 146, 247, 4, 32, 81, 242, 72, 18, 70, 241, 134, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64, 241, 120, 9, 63, 241, 64, 0, 0, 0, 0, 0, 0, 0, 0, 23, 74, 241, 150, 18, 70, 241, 124, 18, 70, 241, 125, 20, 72, 241, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 128, 245, 36, 91, 127, 245, 5, 134, 161, 248, 5, 88, 125, 245, 36, 0, 0, 0, 0, 0, 0, 0, 0, 92, 128, 245, 25, 95, 130, 246, 16, 0, 0, 0, 0, 0, 0, 0, 0, 153, 176, 249, 0, 43, 90, 243, 31, 45, 92, 243, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 79, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_LogoLua(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 12, 64, 64, 64, 35, 64, 64, 64, 8, 0, 0, 0, 0, 64, 64, 64, 25, 64, 64, 64, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 60, 64, 64, 64, 130, 64, 64, 64, 27, 0, 0, 0, 0, 64, 64, 64, 96, 64, 64, 64, 100, 64, 64, 64, 16, 0, 0, 0, 0, 64, 64, 64, 86, 64, 64, 64, 127, 64, 64, 64, 22, 0, 0, 0, 0, 64, 64, 64, 107, 64, 64, 64, 63, 64, 64, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 149, 5, 7, 7, 131, 108, 4, 4, 129, 199, 5, 5, 129, 236, 4, 4, 129, 222, 6, 6, 130, 158, 13, 13, 134, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 43, 64, 64, 64, 45, 0, 0, 0, 0, 64, 64, 64, 44, 64, 64, 64, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 13, 64, 64, 64, 77, 64, 64, 64, 6, 64, 64, 64, 3, 64, 64, 64, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 138, 15, 4, 4, 129, 199, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 247, 8, 8, 131, 82, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 66, 64, 64, 64, 106, 64, 64, 64, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 7, 64, 64, 64, 111, 64, 64, 64, 119, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 130, 171, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 247, 13, 13, 134, 39, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 9, 64, 64, 64, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 136, 41, 1, 1, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 6, 6, 130, 158, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 130, 64, 64, 64, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 132, 107, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 222, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 138, 42, 7, 7, 130, 100, 5, 5, 130, 143, 5, 5, 129, 172, 2, 2, 128, 183, 1, 1, 128, 182, 5, 5, 129, 171, 5, 5, 129, 141, 9, 9, 132, 99, 21, 21, 138, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 129, 118, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 129, 236, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 85, 64, 64, 64, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 138, 28, 8, 8, 131, 132, 4, 4, 129, 223, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 220, 7, 7, 131, 128, 21, 21, 138, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 132, 83, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 199, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 138, 19, 7, 7, 130, 149, 1, 1, 128, 250, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 247, 6, 6, 130, 143, 18, 18, 136, 16, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 149, 12, 2, 2, 128, 236, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 7, 7, 131, 108, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 132, 79, 2, 2, 128, 234, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 2, 2, 128, 230, 10, 10, 132, 73, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 133, 89, 0, 0, 127, 254, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 199, 43, 43, 149, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 11, 64, 64, 64, 154, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 153, 1, 9, 9, 131, 134, 0, 0, 127, 254, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 254, 7, 7, 131, 124, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 133, 89, 2, 2, 128, 236, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 127, 255, 6, 6, 130, 171, 21, 21, 138, 15, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 55, 64, 64, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 153, 1, 3, 3, 129, 150, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 49, 49, 152, 255, 118, 118, 186, 255, 134, 134, 194, 255, 100, 100, 177, 255, 22, 22, 138, 255, 0, 0, 127, 255, 0, 0, 127, 255, 13, 13, 134, 149, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 149, 12, 10, 10, 132, 83, 4, 4, 129, 118, 9, 9, 132, 107, 19, 19, 136, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 131, 135, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 15, 15, 135, 255, 175, 175, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 246, 250, 255, 113, 113, 184, 255, 0, 0, 127, 255, 0, 0, 127, 255, 7, 7, 131, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 133, 83, 0, 0, 127, 254, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 255, 195, 195, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, 113, 184, 255, 0, 0, 127, 255, 1, 1, 128, 254, 10, 10, 132, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 47, 64, 64, 64, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 137, 21, 2, 2, 128, 236, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 99, 99, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 246, 250, 255, 22, 22, 138, 255, 0, 0, 127, 255, 2, 2, 128, 230, 18, 18, 136, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 112, 64, 64, 64, 39, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 4, 64, 64, 64, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 129, 152, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 186, 186, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 100, 177, 255, 0, 0, 127, 255, 0, 0, 127, 255, 6, 6, 130, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 14, 64, 64, 64, 49, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 64, 64, 4, 64, 64, 64, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 139, 33, 1, 1, 128, 251, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 220, 220, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 134, 134, 194, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 247, 21, 21, 138, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 64, 64, 75, 64, 64, 64, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 130, 138, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 203, 203, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 118, 118, 186, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 7, 7, 131, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 42, 64, 64, 64, 54, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 64, 64, 114, 64, 64, 64, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 191, 2, 3, 3, 129, 229, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 135, 135, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 49, 152, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 12, 64, 64, 64, 128, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 135, 49, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 23, 23, 139, 255, 237, 237, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 175, 215, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 21, 21, 138, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 35, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 64, 64, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 131, 109, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 60, 60, 157, 255, 237, 237, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 195, 225, 255, 15, 15, 135, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 9, 9, 132, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 64, 64, 64, 23, 64, 64, 64, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 129, 152, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 15, 15, 134, 255, 195, 195, 225, 255, 80, 80, 167, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 23, 23, 139, 255, 135, 135, 195, 255, 203, 203, 229, 255, 220, 220, 237, 255, 186, 186, 220, 255, 99, 99, 177, 255, 4, 4, 129, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 129, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 94, 64, 64, 64, 11,
+ 64, 64, 64, 34, 64, 64, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 129, 181, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 129, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 100, 64, 64, 64, 35,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 128, 195, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 21, 64, 64, 64, 11,
+ 64, 64, 64, 9, 64, 64, 64, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 128, 195, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 53, 53, 154, 255, 106, 106, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 11, 11, 132, 255, 120, 120, 187, 255, 28, 28, 141, 255, 0, 0, 127, 255, 0, 0, 127, 255, 38, 38, 146, 255, 138, 138, 196, 255, 176, 176, 216, 255, 169, 169, 212, 255, 112, 112, 183, 255, 9, 9, 131, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 2, 2, 128, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 64, 64, 64, 43, 64, 64, 64, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 129, 182, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 113, 113, 184, 255, 225, 225, 240, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 23, 23, 139, 255, 255, 255, 255, 255, 60, 60, 157, 255, 0, 0, 127, 255, 42, 42, 148, 255, 244, 244, 250, 255, 206, 206, 230, 255, 140, 140, 197, 255, 159, 159, 207, 255, 245, 245, 250, 255, 168, 168, 211, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 129, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 79, 64, 64, 64, 25,
+ 64, 64, 64, 20, 64, 64, 64, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 130, 154, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 113, 113, 184, 255, 225, 225, 240, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 23, 23, 139, 255, 255, 255, 255, 255, 60, 60, 157, 255, 0, 0, 127, 255, 125, 125, 190, 255, 228, 228, 241, 255, 7, 7, 130, 255, 0, 0, 127, 255, 0, 0, 127, 255, 116, 116, 185, 255, 237, 237, 246, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 130, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 122, 64, 64, 64, 12,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 131, 110, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 113, 113, 184, 255, 225, 225, 240, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 23, 23, 139, 255, 255, 255, 255, 255, 60, 60, 157, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 6, 6, 130, 255, 145, 145, 200, 255, 240, 240, 247, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 7, 7, 130, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 28, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 64, 64, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 136, 52, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 113, 113, 184, 255, 225, 225, 240, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 23, 23, 139, 255, 255, 255, 255, 255, 60, 60, 157, 255, 0, 0, 127, 255, 4, 4, 129, 255, 105, 105, 180, 255, 181, 181, 218, 255, 220, 220, 237, 255, 249, 249, 252, 255, 234, 234, 244, 255, 240, 240, 247, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 22, 22, 138, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 64, 64, 136, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 85, 170, 2, 4, 4, 129, 232, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 113, 113, 184, 255, 225, 225, 240, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 27, 27, 141, 255, 255, 255, 255, 255, 60, 60, 157, 255, 0, 0, 127, 255, 145, 145, 200, 255, 240, 240, 248, 255, 115, 115, 185, 255, 53, 53, 154, 255, 15, 15, 135, 255, 98, 98, 176, 255, 240, 240, 247, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 9, 64, 64, 64, 104, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 64, 64, 65, 64, 64, 64, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 130, 141, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 113, 113, 184, 255, 229, 229, 242, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 76, 76, 165, 255, 255, 255, 255, 255, 60, 60, 157, 255, 0, 0, 127, 255, 227, 227, 241, 255, 132, 132, 193, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 111, 111, 183, 255, 240, 240, 247, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 8, 8, 131, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 73, 64, 64, 64, 69, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 136, 35, 1, 1, 127, 251, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 169, 169, 212, 255, 109, 109, 182, 255, 109, 109, 182, 255, 109, 109, 182, 255, 109, 109, 182, 255, 109, 109, 182, 255, 18, 18, 136, 255, 93, 93, 174, 255, 255, 255, 255, 255, 79, 79, 167, 255, 0, 0, 127, 255, 34, 34, 144, 255, 208, 208, 231, 255, 253, 253, 254, 255, 60, 60, 157, 255, 0, 0, 127, 255, 205, 205, 230, 255, 188, 188, 221, 255, 11, 11, 132, 255, 1, 1, 128, 255, 71, 71, 163, 255, 233, 233, 244, 255, 245, 245, 250, 255, 5, 5, 129, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 250, 22, 22, 138, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 12, 64, 64, 64, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 50, 64, 64, 64, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 130, 159, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 135, 255, 225, 225, 240, 255, 225, 225, 240, 255, 225, 225, 240, 255, 225, 225, 240, 255, 225, 225, 240, 255, 225, 225, 240, 255, 225, 225, 240, 255, 36, 36, 145, 255, 9, 9, 132, 255, 190, 190, 223, 255, 255, 255, 255, 255, 242, 242, 248, 255, 242, 242, 248, 255, 87, 87, 171, 255, 219, 219, 237, 255, 53, 53, 154, 255, 0, 0, 127, 255, 65, 65, 160, 255, 238, 238, 246, 255, 249, 249, 252, 255, 244, 244, 250, 255, 212, 212, 233, 255, 99, 99, 177, 255, 253, 253, 254, 255, 227, 227, 241, 255, 0, 0, 127, 255, 0, 0, 127, 255, 7, 7, 130, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 4, 64, 64, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 53, 64, 64, 64, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 135, 24, 1, 1, 128, 238, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 40, 40, 147, 255, 56, 56, 155, 255, 13, 13, 134, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 10, 10, 132, 255, 54, 54, 154, 255, 43, 43, 149, 255, 1, 1, 128, 255, 0, 0, 127, 255, 36, 36, 145, 255, 46, 46, 150, 255, 0, 0, 127, 255, 2, 2, 128, 234, 22, 22, 138, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 106, 64, 64, 64, 41, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 133, 90, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 254, 9, 9, 132, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 130, 143, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 9, 9, 131, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 106, 64, 64, 64, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 68, 161, 3, 6, 6, 130, 162, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 3, 3, 129, 150, 51, 51, 153, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 33, 64, 64, 64, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 12, 64, 64, 64, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 68, 161, 3, 7, 7, 130, 143, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 254, 8, 8, 131, 135, 51, 51, 153, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 4, 64, 64, 64, 154, 64, 64, 64, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 133, 90, 1, 1, 128, 238, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 2, 2, 128, 236, 11, 11, 133, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 2, 64, 64, 64, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 19, 64, 64, 64, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 135, 24, 6, 6, 130, 159, 1, 1, 127, 251, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 251, 5, 5, 129, 152, 20, 20, 137, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 92, 64, 64, 64, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 136, 35, 6, 6, 130, 141, 4, 4, 129, 232, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 3, 3, 129, 229, 6, 6, 130, 138, 23, 23, 139, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 109, 64, 64, 64, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 1, 64, 64, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 85, 170, 2, 17, 17, 136, 52, 7, 7, 131, 110, 5, 5, 130, 154, 5, 5, 129, 182, 2, 2, 128, 195, 3, 3, 128, 195, 5, 5, 129, 181, 5, 5, 129, 152, 8, 8, 131, 109, 16, 16, 135, 49, 128, 128, 191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 25, 64, 64, 64, 153, 64, 64, 64, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 32, 64, 64, 64, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 12, 64, 64, 64, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 108, 64, 64, 64, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 118, 64, 64, 64, 97, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 9, 64, 64, 64, 103, 64, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 49, 64, 64, 64, 2, 64, 64, 64, 11, 64, 64, 64, 63, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 6, 64, 64, 64, 35, 0, 0, 0, 0, 64, 64, 64, 54, 64, 64, 64, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 6, 64, 64, 64, 78, 64, 64, 64, 110, 0, 0, 0, 0, 64, 64, 64, 28, 64, 64, 64, 112, 64, 64, 64, 71, 0, 0, 0, 0, 64, 64, 64, 18, 64, 64, 64, 92, 64, 64, 64, 86, 0, 0, 0, 0, 64, 64, 64, 35, 64, 64, 64, 134, 64, 64, 64, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 23, 64, 64, 64, 33, 0, 0, 0, 0, 64, 64, 64, 11, 64, 64, 64, 42, 64, 64, 64, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_LogoPetrobras(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 15, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 25, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 5, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 16, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 3, 0, 0, 0, 0, 0, 0, 0, 0, 222, 234, 226, 18, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 196, 172, 25, 76, 167, 124, 83, 52, 161, 113, 125, 60, 162, 116, 144, 68, 167, 122, 144, 60, 162, 115, 100, 105, 179, 142, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 24, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 8, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 32, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 212, 195, 16, 91, 174, 135, 73, 41, 154, 103, 104, 64, 165, 119, 144, 61, 163, 116, 144, 50, 160, 111, 120, 95, 174, 135, 79, 188, 213, 197, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 111, 187, 152, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 251, 250, 255, 195, 225, 211, 255, 82, 174, 133, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 164, 211, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 252, 255, 194, 224, 210, 255, 59, 164, 118, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 155, 104, 137, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 2, 141, 81, 252, 27, 149, 95, 249, 30, 151, 97, 199, 55, 158, 109, 107, 185, 211, 194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 156, 104, 215, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 14, 145, 88, 255, 127, 189, 158, 38, 0, 0, 0, 0, 0, 0, 0, 0, 43, 156, 105, 143, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 16, 146, 89, 255, 131, 190, 160, 29, 0, 0, 0, 0, 0, 0, 0, 0, 42, 155, 104, 142, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 2, 141, 80, 251, 15, 144, 87, 249, 33, 153, 100, 236, 36, 153, 101, 175, 56, 160, 113, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 165, 120, 78, 33, 152, 99, 194, 9, 143, 84, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 253, 38, 154, 101, 195, 104, 178, 141, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 150, 96, 206, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 1, 141, 80, 250, 28, 149, 95, 249, 32, 152, 98, 209, 44, 155, 104, 127, 153, 197, 171, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 159, 111, 115, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 3, 141, 81, 253, 10, 143, 84, 249, 29, 151, 97, 237, 34, 152, 98, 186, 72, 166, 122, 101, 217, 231, 222, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 172, 131, 46, 15, 146, 88, 250, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 17, 147, 90, 251, 209, 226, 215, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 179, 143, 51, 41, 155, 103, 172, 15, 145, 88, 248, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 19, 146, 89, 234, 65, 164, 118, 100, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 180, 219, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 118, 190, 157, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 142, 82, 255, 230, 242, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 250, 248, 255, 55, 163, 115, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 149, 94, 209, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 38, 153, 100, 205, 116, 176, 142, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 190, 163, 26, 7, 142, 83, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 148, 92, 213, 227, 237, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 95, 215, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 148, 92, 204, 217, 231, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 153, 101, 223, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 63, 163, 117, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 175, 137, 32, 34, 151, 98, 190, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 146, 89, 246, 104, 178, 141, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 180, 145, 27, 6, 142, 83, 251, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 149, 94, 215, 136, 185, 157, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 151, 96, 187, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 43, 155, 104, 169, 196, 218, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 218, 204, 6, 29, 149, 95, 198, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 11, 144, 85, 255, 148, 190, 165, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 166, 127, 0, 55, 159, 111, 122, 8, 143, 83, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 82, 255, 72, 167, 123, 92, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 10, 143, 84, 255, 245, 249, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 250, 247, 255, 24, 149, 94, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 54, 162, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 223, 208, 255, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 180, 145, 29, 6, 142, 82, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 51, 159, 109, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 167, 123, 103, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 51, 159, 110, 150, 0, 0, 0, 0, 0, 0, 0, 0, 124, 186, 155, 34, 6, 142, 82, 253, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 52, 159, 110, 142, 0, 0, 0, 0, 0, 0, 0, 0, 141, 190, 162, 32, 5, 141, 82, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 146, 88, 242, 152, 193, 168, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 177, 140, 67, 14, 145, 87, 234, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 33, 152, 99, 219, 192, 218, 202, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 166, 122, 104, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 66, 161, 116, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 217, 202, 18, 18, 146, 89, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 83, 255, 138, 197, 169, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 160, 113, 114, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 42, 152, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 160, 112, 125, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 29, 151, 96, 212, 212, 228, 218, 1,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 72, 170, 126, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 227, 213, 255, 83, 176, 135, 255, 83, 176, 135, 255, 83, 176, 135, 255, 85, 177, 137, 255, 183, 220, 203, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 66, 169, 124, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 127, 195, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 206, 182, 255, 83, 176, 135, 255, 83, 176, 135, 255, 83, 176, 135, 255, 103, 185, 149, 255, 214, 235, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 250, 248, 255, 8, 143, 84, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 163, 117, 105, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 243, 0, 140, 79, 240, 10, 144, 85, 253, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 41, 155, 104, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 155, 103, 174, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 254, 0, 140, 79, 240, 0, 140, 79, 240, 0, 140, 79, 240, 0, 140, 79, 240, 0, 140, 79, 240, 0, 140, 79, 240, 0, 140, 79, 240, 1, 140, 79, 240, 76, 167, 124, 69, 0, 0, 0, 0, 0, 0, 0, 0, 73, 167, 123, 111, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 140, 80, 255, 84, 170, 129, 62, 0, 0, 0, 0, 0, 0, 0, 0, 65, 165, 120, 110, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 242, 0, 140, 79, 240, 0, 140, 79, 240, 6, 142, 83, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 18, 146, 89, 255, 136, 184, 155, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 164, 120, 46, 15, 145, 87, 242, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 21, 148, 92, 233, 20, 145, 89, 190, 20, 147, 91, 236, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 105, 179, 143, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 150, 96, 167, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 254, 0, 140, 79, 240, 0, 140, 79, 240, 6, 143, 83, 248, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 63, 161, 114, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 166, 122, 76, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 245, 0, 140, 79, 240, 0, 140, 79, 240, 8, 143, 84, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 134, 196, 167, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 167, 125, 30, 15, 146, 88, 245, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 121, 188, 156, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 161, 115, 37, 7, 142, 83, 249, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 32, 152, 99, 202, 48, 156, 106, 141, 34, 151, 98, 152, 10, 143, 84, 242, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 148, 93, 255, 139, 186, 157, 6,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 146, 203, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 109, 187, 152, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 37, 153, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 168, 122, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 200, 228, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 254, 255, 44, 158, 107, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 74, 172, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 252, 251, 255, 9, 144, 85, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 149, 94, 170, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 88, 247, 170, 203, 182, 13, 0, 0, 0, 0, 190, 215, 200, 32, 58, 159, 112, 95, 6, 142, 82, 251, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 43, 155, 105, 186, 0, 0, 0, 0, 0, 0, 0, 0, 215, 230, 221, 10, 21, 148, 92, 238, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 34, 153, 100, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 165, 122, 83, 43, 153, 102, 135, 43, 153, 102, 135, 43, 153, 102, 135, 43, 153, 102, 135, 27, 150, 95, 237, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 144, 86, 242, 44, 153, 102, 136, 43, 153, 102, 135, 43, 153, 102, 135, 43, 153, 102, 135, 52, 156, 107, 130, 176, 206, 187, 8, 0, 0, 0, 0, 0, 0, 0, 0, 39, 154, 102, 181, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 146, 89, 243, 157, 197, 172, 12, 0, 0, 0, 0, 0, 0, 0, 0, 119, 184, 152, 44, 16, 146, 89, 218, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 149, 93, 229, 214, 229, 220, 5, 0, 0, 0, 0, 0, 0, 0, 0, 158, 202, 178, 17, 29, 150, 96, 225, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 9, 144, 85, 252, 63, 162, 116, 111, 201, 221, 208, 7, 0, 0, 0, 0, 155, 200, 176, 12, 35, 152, 99, 194, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 44, 157, 107, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 208, 189, 7, 22, 148, 92, 238, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 151, 97, 197, 0, 0, 0, 0, 0, 0, 0, 0, 207, 225, 214, 18, 50, 157, 108, 137, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 8, 142, 83, 252, 115, 184, 151, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 158, 108, 154, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 253, 113, 181, 146, 35, 0, 0, 0, 0, 0, 0, 0, 0, 160, 203, 180, 42, 27, 148, 93, 194, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 144, 86, 248, 131, 187, 157, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 189, 163, 1, 33, 151, 98, 181, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 71, 162, 117, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 153, 100, 151, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 147, 91, 230, 164, 202, 179, 3, 0, 0, 0, 0, 0, 0, 0, 0, 37, 151, 98, 113, 0, 140, 79, 235, 0, 140, 79, 235, 0, 140, 79, 235, 0, 140, 79, 235, 23, 148, 92, 235, 135, 184, 154, 5,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 220, 237, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 253, 255, 39, 156, 104, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 106, 184, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 249, 247, 255, 20, 148, 91, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 149, 93, 255, 252, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 240, 232, 255, 5, 142, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 107, 186, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 234, 224, 255, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 201, 180, 8, 20, 147, 90, 239, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 34, 153, 100, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 218, 204, 3, 23, 148, 92, 241, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 47, 158, 108, 137, 0, 0, 0, 0, 0, 0, 0, 0, 94, 174, 135, 61, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 49, 158, 108, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 203, 181, 13, 16, 145, 88, 243, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 40, 155, 103, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 211, 194, 4, 19, 147, 90, 242, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 151, 97, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 151, 98, 179, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 150, 96, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 156, 105, 139, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 68, 165, 120, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 165, 122, 85, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 57, 161, 114, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 171, 130, 61, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 38, 153, 100, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 155, 103, 137, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 42, 155, 104, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 151, 97, 225, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 22, 147, 91, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 162, 114, 153, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 150, 96, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 168, 124, 100, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 45, 157, 106, 240, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 50, 161, 112, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 235, 228, 2, 28, 150, 96, 226, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 255, 43, 156, 105, 148, 99, 174, 136, 45, 217, 231, 222, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 155, 104, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 251, 250, 255, 167, 212, 191, 255, 164, 211, 190, 255, 164, 211, 190, 255, 164, 211, 190, 255, 187, 222, 206, 255, 251, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 199, 171, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 94, 179, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 158, 209, 186, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 144, 86, 255, 82, 174, 132, 255, 236, 245, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, 188, 154, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 167, 123, 63, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 47, 156, 106, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 163, 118, 91, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 80, 253, 99, 175, 137, 57, 0, 0, 0, 0, 0, 0, 0, 0, 37, 153, 101, 127, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 35, 151, 98, 205, 32, 149, 96, 180, 32, 149, 96, 180, 32, 149, 96, 180, 32, 149, 96, 180, 32, 149, 96, 180, 37, 151, 98, 179, 180, 208, 190, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 174, 134, 78, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 57, 161, 113, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 171, 131, 67, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 50, 157, 108, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 178, 140, 88, 11, 144, 85, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 11, 143, 85, 240, 83, 168, 126, 30, 0, 0, 0, 0, 0, 0, 0, 0, 110, 174, 137, 16, 15, 145, 88, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 32, 151, 97, 192, 161, 197, 174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 181, 148, 69, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 59, 163, 117, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 159, 110, 137, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 74, 163, 119, 125, 73, 161, 117, 80, 50, 154, 105, 80, 38, 154, 102, 145, 10, 143, 85, 253, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 145, 89, 203, 119, 181, 149, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 191, 161, 47, 5, 142, 82, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 42, 156, 105, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 168, 126, 49, 16, 146, 89, 237, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 252, 83, 170, 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 178, 142, 21, 13, 144, 86, 231, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 219, 79, 173, 131, 155, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 67, 165, 120, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 232, 223, 8, 35, 155, 102, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 142, 82, 255, 28, 151, 96, 233, 34, 151, 98, 157, 77, 169, 126, 83, 174, 206, 186, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 111, 188, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 254, 255, 163, 210, 188, 255, 7, 142, 83, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 167, 213, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 250, 248, 255, 235, 246, 241, 255, 235, 246, 241, 255, 235, 246, 241, 255, 243, 249, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 221, 205, 255, 6, 142, 83, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 157, 106, 140, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 30, 151, 98, 128, 0, 140, 79, 85, 11, 145, 86, 90, 41, 155, 104, 151, 8, 142, 83, 245, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 148, 93, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 150, 96, 202, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 148, 93, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 156, 105, 148, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 255, 121, 183, 150, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 153, 100, 135, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 13, 145, 88, 207, 0, 140, 79, 185, 0, 140, 79, 185, 30, 151, 98, 233, 4, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 10, 144, 85, 252, 76, 170, 127, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 157, 107, 113, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 71, 165, 121, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 165, 121, 96, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 60, 161, 114, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 149, 94, 203, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 45, 156, 106, 178, 129, 187, 157, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 159, 110, 112, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 141, 81, 209, 0, 140, 79, 185, 0, 140, 79, 185, 28, 151, 96, 222, 4, 141, 81, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 253, 72, 166, 121, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 1, 41, 154, 103, 166, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 71, 165, 120, 86, 8, 144, 85, 99, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 147, 91, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 237, 231, 1, 28, 150, 96, 200, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 25, 149, 93, 226, 76, 169, 125, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 184, 221, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 246, 243, 255, 53, 161, 112, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 255, 236, 245, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 253, 255, 159, 209, 186, 255, 13, 144, 86, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 147, 91, 205, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 11, 143, 85, 244, 110, 180, 145, 52, 0, 0, 0, 0, 0, 0, 0, 0, 117, 182, 148, 23, 8, 143, 84, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 41, 155, 103, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 211, 194, 1, 26, 149, 95, 216, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 27, 150, 95, 217, 207, 225, 214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 95, 209, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 255, 28, 150, 95, 195, 91, 173, 133, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 150, 96, 196, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 18, 146, 89, 239, 156, 197, 172, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 155, 103, 156, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 255, 142, 192, 165, 34, 0, 0, 0, 0, 0, 0, 0, 0, 130, 190, 160, 28, 12, 144, 86, 253, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 28, 150, 95, 224, 117, 183, 149, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 96, 180, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 27, 149, 95, 210, 75, 168, 124, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 170, 128, 78, 5, 142, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 147, 92, 188, 117, 174, 140, 1, 0, 140, 79, 95, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 46, 159, 109, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 177, 139, 69, 18, 146, 89, 249, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 9, 143, 84, 253, 86, 171, 130, 71, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 14, 145, 87, 255, 244, 249, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 251, 249, 255, 182, 219, 201, 255, 182, 219, 201, 255, 182, 219, 201, 255, 186, 220, 204, 255, 228, 241, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 239, 231, 255, 12, 144, 86, 255, 0, 140, 79, 255, 0, 140, 79, 255, 60, 165, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 230, 219, 255, 27, 150, 96, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 184, 151, 30, 10, 143, 85, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 144, 86, 245, 48, 152, 102, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 166, 121, 97, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 78, 166, 123, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 186, 155, 35, 6, 142, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 44, 155, 104, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 184, 152, 28, 8, 142, 83, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 30, 150, 96, 202, 116, 188, 155, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 147, 91, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 149, 94, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 174, 137, 5, 20, 147, 90, 231, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 28, 150, 95, 199, 198, 218, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 165, 121, 99, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 33, 153, 100, 255, 39, 156, 105, 255, 37, 155, 103, 255, 18, 146, 89, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 40, 154, 102, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 197, 174, 11, 16, 145, 88, 242, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 29, 150, 96, 224, 63, 159, 112, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 182, 152, 9, 17, 146, 88, 222, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 250, 97, 176, 138, 60, 0, 0, 0, 0, 0, 140, 79, 95, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 40, 154, 102, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 180, 143, 45, 44, 156, 106, 178, 13, 144, 86, 251, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 36, 153, 101, 174, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 78, 172, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 221, 205, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 88, 255, 233, 244, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 171, 127, 255, 0, 140, 79, 255, 0, 140, 79, 255, 132, 197, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 216, 195, 255, 104, 187, 151, 255, 104, 187, 151, 255, 118, 191, 158, 255, 189, 223, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 161, 210, 188, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 160, 112, 101, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 82, 255, 37, 154, 102, 188, 105, 178, 141, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 150, 96, 160, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 11, 144, 85, 251, 90, 174, 135, 112, 83, 171, 130, 104, 83, 171, 130, 104, 83, 171, 130, 104, 83, 171, 130, 104, 83, 171, 130, 104, 83, 171, 130, 104, 178, 208, 189, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 158, 109, 105, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 89, 173, 133, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 166, 121, 105, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 1, 140, 80, 255, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 32, 151, 98, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 206, 187, 44, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 49, 158, 109, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 163, 117, 102, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 76, 168, 124, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 154, 101, 170, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 11, 143, 85, 255, 172, 205, 185, 24, 217, 231, 222, 4, 208, 225, 214, 4, 150, 197, 171, 9, 40, 153, 101, 165, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 80, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 163, 117, 69, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 1, 140, 80, 255, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 155, 103, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 157, 107, 148, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 41, 154, 103, 168, 217, 231, 222, 1, 217, 231, 222, 1, 1, 141, 80, 96, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 147, 90, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 199, 175, 20, 67, 164, 119, 91, 42, 156, 105, 160, 23, 148, 92, 223, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 36, 155, 102, 197, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 152, 206, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 188, 154, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 219, 237, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 180, 142, 255, 0, 140, 79, 255, 0, 140, 79, 255, 206, 231, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 163, 115, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 141, 81, 255, 238, 245, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 231, 219, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 152, 98, 173, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 13, 145, 87, 254, 43, 156, 106, 199, 43, 156, 106, 199, 43, 156, 106, 199, 46, 158, 108, 194, 27, 148, 94, 149, 59, 162, 115, 113, 109, 180, 145, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 214, 198, 5, 24, 149, 94, 235, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 35, 154, 101, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 150, 96, 177, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 16, 145, 88, 240, 128, 183, 151, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 150, 95, 168, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 14, 145, 87, 246, 202, 223, 210, 56, 217, 231, 222, 49, 194, 217, 202, 49, 81, 170, 128, 110, 6, 142, 82, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 175, 141, 45, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 33, 152, 98, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 185, 151, 38, 18, 147, 90, 239, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 34, 152, 99, 217, 144, 191, 163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 171, 204, 184, 6, 23, 148, 93, 235, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 151, 97, 204, 227, 237, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 150, 96, 150, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 33, 152, 99, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 157, 106, 150, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 253, 159, 202, 179, 73, 217, 231, 222, 49, 203, 222, 210, 49, 68, 163, 117, 81, 15, 145, 88, 246, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 37, 154, 102, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 180, 143, 67, 8, 143, 83, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 32, 153, 99, 255, 42, 157, 106, 255, 42, 157, 106, 255, 26, 151, 96, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 42, 157, 106, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 229, 219, 10, 82, 170, 129, 106, 81, 170, 129, 106, 81, 170, 129, 106, 81, 170, 129, 106, 81, 170, 129, 106, 116, 186, 153, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 175, 136, 111, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 49, 157, 108, 146, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 222, 238, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 253, 255, 40, 156, 105, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 102, 183, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 166, 120, 255, 0, 140, 79, 255, 29, 151, 97, 255, 252, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 243, 237, 255, 6, 142, 83, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 205, 233, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 235, 225, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 191, 163, 7, 18, 146, 89, 236, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 33, 152, 98, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 174, 136, 56, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 73, 168, 124, 163, 177, 214, 195, 61, 177, 214, 195, 61, 177, 214, 195, 61, 177, 214, 195, 61, 177, 214, 195, 61, 177, 214, 195, 61, 177, 214, 195, 61, 178, 214, 196, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 205, 184, 3, 17, 146, 89, 247, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 154, 102, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 213, 196, 7, 23, 149, 93, 240, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 37, 154, 102, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 151, 97, 243, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 37, 153, 101, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 211, 194, 34, 3, 141, 81, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 10, 143, 85, 250, 76, 166, 122, 67, 196, 218, 204, 1, 185, 211, 194, 4, 90, 173, 133, 71, 22, 148, 92, 229, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 82, 246, 84, 171, 129, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 178, 140, 59, 2, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 75, 169, 125, 170, 177, 214, 195, 61, 177, 214, 195, 61, 154, 201, 177, 61, 45, 155, 104, 114, 9, 143, 84, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 60, 162, 116, 115, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 1, 23, 147, 92, 212, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 31, 151, 97, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 146, 88, 198, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 31, 151, 98, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 210, 191, 9, 24, 148, 92, 210, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 147, 92, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 188, 160, 47, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 52, 159, 110, 159, 185, 211, 194, 1, 0, 0, 0, 0, 0, 0, 0, 0, 88, 173, 133, 84, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 254, 89, 172, 132, 53, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 45, 158, 108, 255, 253, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, 252, 255, 191, 222, 206, 255, 190, 222, 206, 255, 190, 222, 206, 255, 192, 223, 208, 255, 219, 237, 228, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 243, 238, 255, 10, 144, 85, 255, 0, 140, 79, 255, 99, 182, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 213, 192, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 200, 229, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 239, 231, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 169, 127, 62, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 53, 159, 111, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 158, 108, 130, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 34, 153, 100, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 172, 133, 73, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 52, 158, 109, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 173, 134, 63, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 48, 156, 106, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 194, 166, 35, 7, 142, 83, 253, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 64, 163, 117, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 149, 94, 227, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 255, 17, 145, 88, 219, 17, 146, 89, 231, 3, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 142, 82, 253, 67, 165, 121, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 162, 115, 138, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 145, 88, 228, 173, 206, 186, 17, 0, 0, 0, 0, 0, 0, 0, 0, 118, 184, 151, 37, 9, 143, 84, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 43, 156, 105, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 209, 191, 8, 20, 147, 91, 241, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 44, 156, 105, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 158, 109, 129, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 10, 144, 86, 242, 217, 231, 222, 12, 0, 0, 0, 0, 0, 0, 0, 0, 172, 204, 184, 44, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 255, 27, 149, 94, 193, 48, 157, 108, 167, 30, 151, 97, 196, 9, 143, 85, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 40, 154, 102, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 116, 190, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 106, 185, 149, 255, 0, 140, 79, 255, 0, 140, 79, 255, 173, 216, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 180, 142, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 195, 226, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 242, 236, 255, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 157, 107, 140, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 113, 181, 147, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 95, 198, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 47, 156, 106, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 151, 98, 138, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 84, 255, 114, 181, 147, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 158, 109, 138, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 254, 120, 185, 152, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 165, 119, 102, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 250, 136, 191, 162, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 164, 118, 129, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 83, 249, 65, 164, 118, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 237, 231, 1, 29, 150, 96, 202, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 15, 146, 88, 251, 89, 173, 132, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 159, 111, 107, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 73, 165, 121, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 171, 130, 65, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 103, 177, 140, 66, 0, 0, 0, 0, 0, 0, 0, 0, 105, 180, 144, 50, 12, 144, 86, 249, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 254, 6, 142, 82, 191, 0, 140, 79, 183, 0, 140, 79, 183, 0, 140, 79, 183, 0, 140, 79, 183, 0, 140, 79, 210, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 16, 146, 89, 255, 171, 203, 183, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 153, 101, 224, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 154, 102, 224, 103, 175, 137, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 191, 224, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 250, 247, 255, 109, 186, 151, 255, 1, 140, 80, 255, 0, 140, 79, 255, 9, 143, 84, 255, 238, 246, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 252, 251, 255, 29, 151, 96, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 190, 223, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 246, 242, 255, 10, 143, 84, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 224, 213, 1, 22, 148, 92, 204, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 29, 151, 96, 233, 178, 209, 190, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 190, 160, 22, 13, 145, 87, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 123, 186, 154, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 95, 215, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 148, 92, 214, 217, 231, 222, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 149, 95, 205, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 148, 92, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 153, 100, 153, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 26, 149, 94, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 202, 182, 6, 27, 148, 93, 176, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 151, 97, 220, 77, 168, 125, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 198, 173, 25, 13, 145, 87, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 31, 151, 98, 217, 80, 168, 126, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 153, 101, 183, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 18, 146, 89, 248, 212, 228, 218, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 159, 110, 125, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 246, 196, 218, 204, 4, 0, 0, 0, 0, 133, 182, 152, 3, 29, 149, 95, 194, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 36, 153, 100, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 79, 95, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 255, 59, 157, 110, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 170, 127, 68, 13, 145, 87, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 255, 37, 153, 100, 180, 106, 177, 140, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 11, 144, 86, 255, 205, 230, 218, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 212, 233, 223, 255, 202, 228, 215, 255, 169, 215, 194, 255, 120, 191, 159, 255, 33, 153, 100, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 49, 160, 111, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 179, 218, 200, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 172, 213, 193, 255, 245, 249, 246, 255, 245, 249, 246, 255, 245, 249, 246, 255, 235, 243, 238, 255, 13, 145, 87, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 192, 163, 20, 38, 155, 103, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 54, 161, 113, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 181, 145, 95, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 47, 158, 108, 239, 149, 196, 171, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 200, 176, 32, 32, 153, 100, 254, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 56, 160, 112, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 193, 165, 23, 38, 155, 103, 253, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 58, 162, 115, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 158, 109, 187, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 41, 156, 105, 234, 180, 208, 190, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 190, 164, 6, 57, 160, 112, 129, 25, 149, 93, 238, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 144, 86, 255, 27, 149, 95, 202, 73, 167, 123, 106, 153, 196, 171, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 173, 133, 85, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 151, 97, 254, 12, 143, 85, 223, 34, 153, 100, 209, 46, 156, 106, 158, 88, 172, 131, 80, 173, 205, 185, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 212, 195, 9, 45, 158, 108, 240, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 55, 161, 113, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 166, 120, 160, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 39, 155, 104, 252, 132, 190, 160, 38, 0, 0, 0, 0, 96, 178, 139, 108, 29, 152, 98, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 26, 150, 95, 247, 91, 172, 132, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 152, 97, 95, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 142, 199, 172, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 176, 138, 61, 20, 146, 90, 189, 7, 142, 83, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 14, 144, 86, 242, 35, 153, 100, 180, 92, 174, 135, 78, 217, 231, 222, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 84, 255, 12, 144, 86, 255, 12, 144, 86, 255, 12, 144, 86, 255, 12, 144, 86, 255, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 1, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 234, 226, 8, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 219, 232, 224, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 3, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 2, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 13, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 192, 165, 8, 105, 178, 141, 61, 66, 166, 121, 103, 73, 167, 124, 118, 79, 171, 129, 118, 56, 158, 110, 69, 134, 192, 163, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 234, 226, 8, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 219, 232, 224, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 237, 231, 1, 218, 232, 223, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 220, 233, 225, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 9, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 227, 237, 231, 3, 0, 0, 0, 0, 217, 231, 222, 9, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 7, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 218, 204, 1, 128, 189, 159, 41, 73, 168, 124, 92, 74, 167, 124, 118, 73, 167, 124, 118, 67, 168, 123, 99, 106, 178, 142, 58, 131, 183, 152, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(236, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_LogoMessageInfo(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 212, 237, 31, 204, 220, 235, 169, 215, 225, 233, 227, 226, 230, 235, 248, 233, 234, 235, 254, 235, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 235, 234, 236, 255, 232, 234, 236, 254, 226, 230, 236, 249, 214, 226, 237, 228, 199, 215, 234, 174, 136, 161, 191, 44, 21, 42, 85, 12, 21, 42, 85, 7, 21, 42, 85, 3, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 208, 223, 238, 184, 227, 233, 237, 244, 235, 236, 237, 255, 236, 236, 236, 255, 238, 238, 238, 255, 241, 241, 241, 255, 243, 242, 243, 255, 243, 243, 243, 255, 242, 242, 243, 255, 242, 243, 243, 255, 243, 243, 243, 255, 243, 243, 244, 255, 242, 243, 244, 255, 242, 243, 244, 255, 241, 243, 244, 255, 239, 241, 242, 255, 238, 239, 241, 255, 234, 237, 240, 255, 222, 231, 239, 246, 197, 214, 231, 193, 21, 42, 85, 22, 21, 42, 85, 13, 21, 42, 85, 6, 21, 42, 85, 2, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 182, 211, 5, 213, 224, 237, 207, 231, 234, 236, 252, 237, 237, 237, 255, 238, 237, 238, 255, 239, 240, 240, 255, 241, 242, 242, 255, 244, 244, 245, 255, 247, 248, 248, 255, 250, 251, 252, 255, 252, 253, 254, 255, 253, 254, 255, 255, 252, 254, 255, 255, 252, 254, 255, 255, 252, 253, 255, 255, 252, 254, 255, 255, 250, 253, 254, 255, 247, 249, 251, 255, 244, 245, 248, 255, 242, 243, 245, 255, 238, 241, 243, 255, 237, 239, 242, 255, 236, 239, 241, 255, 226, 233, 239, 253, 198, 215, 231, 217, 40, 61, 103, 35, 21, 42, 85, 16, 21, 42, 85, 7, 21, 42, 85, 2, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 220, 235, 177, 228, 231, 234, 251, 235, 236, 236, 255, 237, 238, 238, 255, 240, 240, 241, 255, 242, 243, 244, 255, 245, 247, 247, 255, 247, 248, 249, 255, 251, 252, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 226, 231, 255, 207, 211, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 245, 249, 252, 255, 243, 246, 250, 255, 240, 244, 247, 255, 237, 241, 244, 255, 234, 238, 242, 255, 233, 236, 241, 255, 220, 229, 237, 252, 182, 201, 223, 195, 21, 42, 85, 33, 21, 42, 85, 16, 21, 42, 85, 6, 21, 42, 85, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, 207, 234, 21, 214, 223, 231, 230, 231, 231, 233, 255, 234, 234, 235, 255, 237, 238, 239, 255, 241, 241, 243, 255, 244, 246, 247, 255, 248, 250, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 197, 209, 255, 77, 94, 127, 255, 0, 26, 78, 255, 0, 27, 81, 255, 29, 53, 102, 255, 158, 168, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 249, 254, 255, 241, 246, 250, 255, 238, 242, 247, 255, 233, 238, 244, 255, 230, 235, 241, 255, 225, 232, 238, 255, 198, 213, 228, 239, 64, 88, 128, 73, 21, 42, 85, 28, 21, 42, 85, 10, 21, 42, 85, 3, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 214, 236, 90, 217, 223, 229, 246, 227, 229, 230, 255, 231, 233, 234, 255, 237, 239, 240, 255, 243, 244, 246, 255, 246, 249, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 253, 255, 255, 44, 67, 113, 255, 0, 32, 96, 255, 0, 36, 110, 255, 0, 38, 114, 255, 0, 35, 105, 255, 0, 31, 95, 255, 216, 224, 235, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 249, 254, 255, 237, 243, 250, 255, 233, 239, 245, 255, 227, 233, 240, 255, 223, 230, 237, 255, 204, 217, 232, 251, 122, 148, 182, 142, 21, 42, 85, 39, 21, 42, 85, 15, 21, 42, 85, 4, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 214, 237, 101, 218, 224, 229, 249, 225, 227, 228, 255, 228, 230, 232, 255, 235, 237, 239, 255, 241, 244, 246, 255, 249, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 249, 252, 255, 255, 247, 251, 255, 255, 184, 195, 214, 255, 0, 33, 99, 255, 0, 39, 118, 255, 0, 50, 151, 255, 0, 50, 151, 255, 0, 48, 144, 255, 0, 39, 118, 255, 105, 129, 174, 255, 244, 249, 255, 255, 244, 250, 255, 255, 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 235, 243, 250, 255, 229, 237, 245, 255, 224, 231, 239, 255, 219, 227, 236, 255, 204, 217, 231, 253, 121, 147, 181, 159, 21, 42, 85, 50, 21, 42, 85, 20, 21, 42, 85, 6, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 211, 237, 59, 214, 222, 229, 248, 224, 226, 228, 255, 226, 229, 232, 255, 233, 236, 238, 255, 239, 242, 245, 255, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 253, 255, 255, 247, 251, 255, 255, 246, 251, 255, 255, 245, 250, 255, 255, 245, 250, 255, 255, 183, 196, 216, 255, 0, 36, 110, 255, 0, 42, 127, 255, 0, 50, 151, 255, 0, 51, 152, 255, 6, 55, 154, 255, 10, 56, 149, 255, 89, 120, 179, 255, 241, 247, 255, 255, 240, 247, 255, 255, 240, 248, 255, 255, 240, 247, 255, 255, 242, 250, 255, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 241, 250, 255, 226, 235, 244, 255, 221, 229, 238, 255, 217, 226, 236, 255, 197, 213, 230, 253, 83, 109, 147, 144, 21, 42, 85, 57, 21, 42, 85, 21, 21, 42, 85, 5, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 217, 227, 239, 221, 225, 227, 255, 225, 227, 231, 255, 231, 234, 238, 255, 237, 241, 245, 255, 248, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 253, 255, 255, 245, 250, 255, 255, 244, 250, 255, 255, 244, 249, 255, 255, 244, 249, 255, 255, 243, 249, 255, 255, 242, 249, 255, 255, 242, 249, 255, 255, 27, 64, 136, 255, 1, 45, 135, 255, 54, 101, 196, 255, 135, 183, 255, 255, 118, 167, 255, 255, 5, 54, 152, 255, 209, 222, 241, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 237, 245, 255, 255, 236, 245, 255, 255, 236, 245, 255, 255, 239, 249, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 239, 250, 255, 223, 234, 244, 255, 217, 228, 238, 255, 213, 225, 235, 255, 185, 205, 226, 250, 21, 42, 85, 114, 21, 42, 85, 55, 21, 42, 85, 18, 21, 42, 85, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 195, 211, 227, 202, 217, 221, 225, 255, 221, 225, 229, 255, 228, 232, 237, 255, 235, 239, 244, 255, 245, 250, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 245, 250, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 242, 248, 255, 255, 242, 248, 255, 255, 241, 248, 255, 255, 240, 248, 255, 255, 240, 247, 255, 255, 180, 196, 223, 255, 42, 81, 160, 255, 20, 69, 168, 255, 63, 113, 214, 255, 41, 87, 178, 255, 132, 159, 208, 255, 236, 246, 255, 255, 236, 245, 255, 255, 235, 245, 255, 255, 235, 245, 255, 255, 234, 245, 255, 255, 234, 245, 255, 255, 234, 244, 255, 255, 233, 244, 255, 255, 234, 246, 255, 255, 246, 255, 255, 255, 255, 255, 255, 255, 250, 255, 255, 255, 225, 238, 249, 255, 219, 231, 243, 255, 212, 225, 237, 255, 206, 220, 233, 255, 155, 180, 209, 238, 21, 42, 85, 104, 21, 42, 85, 44, 21, 42, 85, 12, 21, 42, 85, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 181, 207, 234, 66, 206, 214, 221, 253, 216, 220, 224, 255, 222, 227, 233, 255, 231, 236, 242, 255, 241, 246, 251, 255, 255, 255, 255, 255, 252, 255, 255, 255, 244, 249, 255, 255, 241, 248, 255, 255, 241, 248, 255, 255, 241, 248, 255, 255, 240, 248, 255, 255, 239, 247, 255, 255, 239, 248, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 246, 255, 255, 237, 247, 255, 255, 237, 246, 255, 255, 211, 225, 245, 255, 194, 215, 247, 255, 235, 245, 255, 255, 235, 245, 255, 255, 234, 245, 255, 255, 233, 243, 255, 255, 233, 243, 255, 255, 232, 243, 255, 255, 232, 243, 255, 255, 231, 244, 255, 255, 231, 243, 255, 255, 230, 243, 255, 255, 230, 242, 255, 255, 230, 243, 255, 255, 243, 255, 255, 255, 255, 255, 255, 255, 239, 252, 255, 255, 220, 234, 247, 255, 213, 227, 240, 255, 207, 220, 233, 255, 190, 209, 227, 255, 72, 98, 138, 184, 21, 42, 85, 88, 21, 42, 85, 32, 21, 42, 85, 7, 21, 42, 85, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 190, 205, 222, 223, 211, 216, 221, 255, 216, 221, 227, 255, 224, 231, 237, 255, 233, 240, 245, 255, 252, 255, 255, 255, 249, 255, 255, 255, 241, 248, 255, 255, 240, 248, 255, 255, 240, 247, 255, 255, 239, 247, 255, 255, 239, 247, 255, 255, 238, 247, 255, 255, 237, 246, 255, 255, 237, 246, 255, 255, 236, 246, 255, 255, 236, 245, 255, 255, 236, 245, 255, 255, 235, 245, 255, 255, 234, 243, 255, 255, 234, 243, 255, 255, 234, 243, 255, 255, 233, 243, 255, 255, 232, 243, 255, 255, 232, 243, 255, 255, 231, 243, 255, 255, 230, 243, 255, 255, 229, 243, 255, 255, 229, 242, 255, 255, 229, 242, 255, 255, 229, 242, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 228, 242, 255, 255, 240, 255, 255, 255, 255, 255, 255, 255, 223, 238, 252, 255, 214, 229, 243, 255, 206, 220, 235, 255, 202, 216, 231, 255, 156, 183, 211, 249, 21, 42, 85, 140, 21, 42, 85, 66, 21, 42, 85, 20, 21, 42, 85, 4, 0, 0, 0, 0,
+ 161, 191, 223, 9, 201, 209, 219, 253, 210, 216, 222, 255, 217, 224, 231, 255, 226, 233, 241, 255, 238, 245, 253, 255, 248, 255, 255, 255, 241, 248, 255, 255, 237, 246, 255, 255, 237, 247, 255, 255, 237, 246, 255, 255, 237, 246, 255, 255, 236, 246, 255, 255, 235, 246, 255, 255, 235, 245, 255, 255, 234, 243, 255, 255, 234, 243, 255, 255, 234, 243, 255, 255, 233, 243, 255, 255, 232, 243, 255, 255, 232, 243, 255, 255, 231, 243, 255, 255, 230, 243, 255, 255, 230, 243, 255, 255, 229, 242, 255, 255, 229, 242, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 226, 240, 255, 255, 226, 240, 255, 255, 225, 240, 255, 255, 225, 240, 255, 255, 224, 239, 255, 255, 224, 239, 255, 255, 226, 242, 255, 255, 242, 255, 255, 255, 235, 252, 255, 255, 213, 230, 246, 255, 206, 222, 238, 255, 199, 216, 231, 255, 183, 203, 225, 255, 27, 49, 92, 186, 21, 42, 85, 107, 21, 42, 85, 40, 21, 42, 85, 9, 21, 42, 85, 1,
+ 178, 201, 222, 177, 205, 212, 219, 255, 209, 217, 224, 255, 219, 226, 235, 255, 228, 235, 244, 255, 243, 252, 255, 255, 241, 250, 255, 255, 236, 245, 255, 255, 236, 245, 255, 255, 235, 245, 255, 255, 234, 244, 255, 255, 234, 243, 255, 255, 233, 243, 255, 255, 233, 243, 255, 255, 232, 243, 255, 255, 231, 243, 255, 255, 202, 216, 233, 255, 143, 160, 185, 255, 114, 133, 164, 255, 113, 133, 167, 255, 113, 133, 168, 255, 112, 133, 168, 255, 84, 107, 147, 255, 54, 79, 125, 255, 54, 79, 125, 255, 141, 160, 191, 255, 226, 241, 255, 255, 225, 240, 255, 255, 225, 239, 255, 255, 224, 240, 255, 255, 223, 239, 255, 255, 222, 238, 255, 255, 223, 239, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 237, 255, 255, 220, 238, 255, 255, 227, 244, 255, 255, 240, 255, 255, 255, 215, 233, 251, 255, 206, 224, 242, 255, 198, 216, 233, 255, 194, 211, 228, 255, 123, 152, 187, 242, 21, 42, 85, 148, 21, 42, 85, 66, 21, 42, 85, 18, 21, 42, 85, 3,
+ 180, 197, 214, 236, 200, 208, 216, 255, 208, 217, 225, 255, 219, 228, 237, 255, 230, 239, 249, 255, 240, 251, 255, 255, 235, 246, 255, 255, 234, 244, 255, 255, 233, 243, 255, 255, 232, 244, 255, 255, 232, 243, 255, 255, 232, 243, 255, 255, 230, 243, 255, 255, 230, 243, 255, 255, 230, 242, 255, 255, 229, 242, 255, 255, 113, 136, 177, 255, 0, 35, 105, 255, 0, 37, 111, 255, 0, 42, 128, 255, 0, 41, 124, 255, 0, 40, 121, 255, 0, 40, 121, 255, 0, 37, 112, 255, 0, 35, 107, 255, 111, 136, 178, 255, 223, 239, 255, 255, 223, 238, 255, 255, 222, 238, 255, 255, 222, 238, 255, 255, 221, 238, 255, 255, 220, 238, 255, 255, 220, 237, 255, 255, 219, 237, 255, 255, 219, 237, 255, 255, 218, 236, 255, 255, 218, 236, 255, 255, 219, 238, 255, 255, 231, 250, 255, 255, 222, 242, 255, 255, 206, 224, 243, 255, 197, 215, 234, 255, 189, 208, 226, 255, 152, 180, 210, 253, 21, 42, 85, 180, 21, 42, 85, 96, 21, 42, 85, 33, 21, 42, 85, 6,
+ 182, 195, 208, 252, 195, 203, 212, 255, 206, 215, 224, 255, 217, 227, 238, 255, 231, 241, 253, 255, 236, 248, 255, 255, 232, 243, 255, 255, 231, 243, 255, 255, 230, 242, 255, 255, 230, 242, 255, 255, 229, 243, 255, 255, 229, 242, 255, 255, 227, 242, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 226, 241, 255, 255, 198, 215, 239, 255, 111, 140, 192, 255, 26, 67, 147, 255, 0, 48, 142, 255, 0, 50, 151, 255, 0, 50, 152, 255, 0, 50, 152, 255, 0, 50, 151, 255, 0, 41, 125, 255, 109, 137, 185, 255, 220, 237, 255, 255, 220, 237, 255, 255, 219, 237, 255, 255, 219, 237, 255, 255, 218, 236, 255, 255, 218, 236, 255, 255, 217, 236, 255, 255, 216, 236, 255, 255, 216, 235, 255, 255, 215, 235, 255, 255, 215, 234, 255, 255, 214, 235, 255, 255, 221, 242, 255, 255, 222, 242, 255, 255, 202, 223, 243, 255, 193, 212, 232, 255, 185, 204, 222, 255, 163, 188, 214, 255, 21, 42, 85, 206, 21, 42, 85, 131, 21, 42, 85, 52, 21, 42, 85, 12,
+ 183, 196, 206, 255, 190, 200, 209, 255, 201, 212, 222, 255, 213, 225, 237, 255, 229, 241, 253, 255, 232, 245, 255, 255, 229, 242, 255, 255, 229, 242, 255, 255, 228, 242, 255, 255, 227, 241, 255, 255, 226, 241, 255, 255, 227, 240, 255, 255, 225, 240, 255, 255, 225, 240, 255, 255, 224, 239, 255, 255, 224, 239, 255, 255, 223, 239, 255, 255, 223, 239, 255, 255, 208, 226, 247, 255, 25, 63, 140, 255, 0, 48, 145, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 136, 255, 108, 138, 189, 255, 218, 237, 255, 255, 217, 236, 255, 255, 217, 236, 255, 255, 216, 236, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 214, 235, 255, 255, 214, 235, 255, 255, 213, 235, 255, 255, 213, 234, 255, 255, 213, 233, 255, 255, 212, 234, 255, 255, 215, 237, 255, 255, 216, 239, 255, 255, 200, 221, 242, 255, 190, 211, 231, 255, 180, 201, 219, 255, 169, 192, 215, 255, 21, 42, 85, 223, 21, 42, 85, 157, 21, 42, 85, 68, 21, 42, 85, 17,
+ 184, 195, 207, 255, 187, 197, 208, 255, 198, 210, 221, 255, 211, 223, 236, 255, 226, 239, 253, 255, 228, 242, 255, 255, 226, 240, 255, 255, 226, 240, 255, 255, 225, 240, 255, 255, 224, 239, 255, 255, 224, 240, 255, 255, 224, 239, 255, 255, 223, 238, 255, 255, 222, 239, 255, 255, 222, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 220, 237, 255, 255, 219, 237, 255, 255, 108, 136, 184, 255, 0, 45, 135, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 107, 137, 189, 255, 215, 236, 255, 255, 214, 235, 255, 255, 214, 234, 255, 255, 214, 235, 255, 255, 213, 234, 255, 255, 213, 234, 255, 255, 211, 233, 255, 255, 211, 234, 255, 255, 211, 233, 255, 255, 211, 233, 255, 255, 210, 233, 255, 255, 210, 232, 255, 255, 212, 235, 255, 255, 213, 236, 255, 255, 197, 220, 242, 255, 186, 208, 229, 255, 177, 198, 218, 255, 172, 195, 216, 255, 21, 42, 85, 230, 21, 42, 85, 169, 21, 42, 85, 75, 21, 42, 85, 19,
+ 184, 196, 207, 255, 184, 196, 208, 255, 195, 208, 221, 255, 208, 222, 236, 255, 223, 238, 253, 255, 226, 241, 255, 255, 224, 239, 255, 255, 223, 239, 255, 255, 222, 238, 255, 255, 222, 238, 255, 255, 222, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 220, 238, 255, 255, 219, 237, 255, 255, 218, 237, 255, 255, 218, 236, 255, 255, 218, 236, 255, 255, 216, 236, 255, 255, 107, 134, 180, 255, 0, 43, 130, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 105, 136, 189, 255, 211, 234, 255, 255, 211, 233, 255, 255, 211, 233, 255, 255, 211, 233, 255, 255, 211, 232, 255, 255, 210, 232, 255, 255, 209, 232, 255, 255, 208, 232, 255, 255, 208, 232, 255, 255, 208, 232, 255, 255, 208, 231, 255, 255, 207, 231, 255, 255, 208, 233, 255, 255, 210, 233, 255, 255, 194, 218, 241, 255, 183, 206, 229, 255, 174, 196, 218, 255, 173, 196, 218, 255, 21, 42, 85, 232, 21, 42, 85, 173, 21, 42, 85, 78, 21, 42, 85, 20,
+ 179, 193, 206, 255, 182, 195, 207, 255, 192, 206, 220, 255, 205, 220, 235, 255, 220, 236, 252, 255, 222, 239, 255, 255, 221, 238, 255, 255, 221, 237, 255, 255, 220, 238, 255, 255, 220, 237, 255, 255, 219, 237, 255, 255, 218, 236, 255, 255, 218, 236, 255, 255, 217, 236, 255, 255, 216, 236, 255, 255, 216, 236, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 106, 133, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 104, 136, 189, 255, 210, 232, 255, 255, 209, 232, 255, 255, 209, 232, 255, 255, 208, 231, 255, 255, 208, 231, 255, 255, 207, 231, 255, 255, 207, 231, 255, 255, 206, 231, 255, 255, 206, 231, 255, 255, 206, 230, 255, 255, 206, 230, 255, 255, 205, 230, 255, 255, 206, 232, 255, 255, 207, 231, 255, 255, 191, 216, 241, 255, 182, 205, 229, 255, 172, 194, 218, 255, 167, 192, 216, 255, 21, 42, 85, 233, 21, 42, 85, 174, 21, 42, 85, 79, 21, 42, 85, 20,
+ 171, 187, 204, 255, 179, 193, 207, 255, 190, 204, 219, 255, 202, 217, 234, 255, 217, 233, 251, 255, 220, 238, 255, 255, 218, 236, 255, 255, 218, 237, 255, 255, 218, 236, 255, 255, 217, 236, 255, 255, 216, 236, 255, 255, 216, 235, 255, 255, 215, 235, 255, 255, 214, 235, 255, 255, 214, 234, 255, 255, 214, 235, 255, 255, 213, 234, 255, 255, 211, 233, 255, 255, 211, 233, 255, 255, 104, 133, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 103, 135, 189, 255, 207, 231, 255, 255, 208, 231, 255, 255, 207, 231, 255, 255, 206, 230, 255, 255, 206, 231, 255, 255, 205, 230, 255, 255, 204, 230, 255, 255, 205, 229, 255, 255, 203, 230, 255, 255, 203, 229, 255, 255, 202, 229, 255, 255, 202, 228, 255, 255, 203, 230, 255, 255, 203, 228, 255, 255, 189, 214, 239, 255, 179, 203, 227, 255, 170, 194, 217, 255, 156, 185, 213, 255, 21, 42, 85, 233, 21, 42, 85, 174, 21, 42, 85, 79, 21, 42, 85, 20,
+ 160, 181, 202, 252, 176, 189, 205, 255, 184, 201, 216, 255, 197, 213, 231, 255, 211, 229, 248, 255, 217, 237, 255, 255, 215, 235, 255, 255, 216, 235, 255, 255, 215, 235, 255, 255, 214, 235, 255, 255, 213, 234, 255, 255, 213, 234, 255, 255, 213, 234, 255, 255, 211, 234, 255, 255, 211, 233, 255, 255, 211, 233, 255, 255, 210, 233, 255, 255, 210, 233, 255, 255, 209, 232, 255, 255, 103, 132, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 102, 134, 189, 255, 206, 230, 255, 255, 205, 229, 255, 255, 204, 229, 255, 255, 204, 230, 255, 255, 203, 229, 255, 255, 202, 229, 255, 255, 202, 229, 255, 255, 201, 227, 255, 255, 202, 228, 255, 255, 201, 228, 255, 255, 201, 228, 255, 255, 199, 227, 255, 255, 202, 229, 255, 255, 196, 223, 251, 255, 184, 209, 236, 255, 174, 200, 224, 255, 167, 190, 215, 255, 143, 173, 208, 255, 21, 42, 85, 233, 21, 42, 85, 174, 21, 42, 85, 79, 21, 42, 85, 20,
+ 149, 174, 201, 237, 171, 186, 201, 255, 177, 194, 210, 255, 189, 207, 225, 255, 201, 221, 240, 255, 212, 234, 254, 255, 213, 234, 255, 255, 213, 234, 255, 255, 212, 234, 255, 255, 212, 234, 255, 255, 211, 233, 255, 255, 210, 233, 255, 255, 210, 233, 255, 255, 209, 232, 255, 255, 209, 232, 255, 255, 209, 232, 255, 255, 208, 232, 255, 255, 208, 231, 255, 255, 206, 231, 255, 255, 102, 132, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 101, 134, 189, 255, 203, 229, 255, 255, 203, 229, 255, 255, 202, 229, 255, 255, 201, 227, 255, 255, 201, 227, 255, 255, 200, 227, 255, 255, 200, 227, 255, 255, 199, 227, 255, 255, 199, 227, 255, 255, 198, 226, 255, 255, 198, 226, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 188, 216, 243, 255, 177, 204, 231, 255, 167, 194, 219, 255, 161, 186, 211, 255, 124, 160, 197, 255, 21, 42, 85, 232, 21, 42, 85, 173, 21, 42, 85, 78, 21, 42, 85, 20,
+ 140, 171, 204, 182, 166, 182, 198, 255, 169, 186, 203, 255, 180, 198, 217, 255, 192, 212, 231, 255, 206, 228, 250, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 209, 232, 255, 255, 208, 232, 255, 255, 208, 232, 255, 255, 208, 232, 255, 255, 207, 231, 255, 255, 206, 230, 255, 255, 206, 231, 255, 255, 206, 230, 255, 255, 205, 230, 255, 255, 204, 230, 255, 255, 101, 131, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 100, 133, 189, 255, 201, 227, 255, 255, 201, 227, 255, 255, 200, 227, 255, 255, 199, 227, 255, 255, 199, 227, 255, 255, 198, 226, 255, 255, 198, 227, 255, 255, 197, 226, 255, 255, 197, 225, 255, 255, 196, 226, 255, 255, 196, 225, 255, 255, 196, 226, 255, 255, 192, 222, 252, 255, 178, 207, 236, 255, 169, 197, 224, 255, 160, 186, 212, 255, 157, 181, 207, 255, 94, 129, 172, 253, 21, 42, 85, 230, 21, 42, 85, 169, 21, 42, 85, 75, 21, 42, 85, 19,
+ 65, 93, 135, 24, 146, 169, 192, 254, 162, 180, 197, 255, 172, 190, 209, 255, 184, 204, 224, 255, 196, 218, 240, 255, 207, 230, 253, 255, 208, 232, 255, 255, 208, 231, 255, 255, 206, 231, 255, 255, 206, 230, 255, 255, 206, 230, 255, 255, 205, 230, 255, 255, 205, 230, 255, 255, 204, 230, 255, 255, 203, 229, 255, 255, 203, 229, 255, 255, 203, 229, 255, 255, 203, 229, 255, 255, 100, 130, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 98, 133, 189, 255, 198, 227, 255, 255, 198, 226, 255, 255, 197, 226, 255, 255, 197, 226, 255, 255, 195, 225, 255, 255, 195, 225, 255, 255, 195, 225, 255, 255, 194, 225, 255, 255, 194, 224, 255, 255, 194, 224, 255, 255, 194, 225, 255, 255, 192, 224, 255, 255, 183, 212, 243, 255, 173, 201, 230, 255, 162, 189, 216, 255, 154, 180, 206, 255, 131, 164, 198, 255, 25, 46, 90, 248, 21, 42, 85, 223, 21, 42, 85, 157, 21, 42, 85, 68, 21, 42, 85, 17,
+ 21, 42, 85, 12, 132, 163, 193, 229, 158, 176, 194, 255, 163, 182, 201, 255, 174, 194, 215, 255, 185, 206, 229, 255, 199, 223, 247, 255, 205, 229, 254, 255, 205, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 203, 229, 255, 255, 202, 229, 255, 255, 202, 229, 255, 255, 201, 227, 255, 255, 201, 227, 255, 255, 200, 227, 255, 255, 200, 227, 255, 255, 200, 227, 255, 255, 98, 130, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 96, 132, 189, 255, 195, 226, 255, 255, 195, 225, 255, 255, 195, 224, 255, 255, 194, 225, 255, 255, 194, 224, 255, 255, 193, 224, 255, 255, 192, 224, 255, 255, 192, 224, 255, 255, 191, 223, 255, 255, 190, 223, 255, 255, 190, 223, 255, 255, 185, 217, 248, 255, 173, 203, 233, 255, 164, 193, 221, 255, 154, 181, 209, 255, 149, 177, 203, 255, 105, 145, 186, 255, 21, 42, 85, 242, 21, 42, 85, 206, 21, 42, 85, 131, 21, 42, 85, 52, 21, 42, 85, 12,
+ 21, 42, 85, 6, 109, 144, 187, 90, 140, 165, 189, 254, 156, 175, 194, 255, 163, 183, 204, 255, 174, 196, 218, 255, 183, 207, 230, 255, 198, 223, 248, 255, 203, 229, 254, 255, 202, 229, 255, 255, 202, 228, 255, 255, 201, 227, 255, 255, 201, 228, 255, 255, 200, 228, 255, 255, 199, 227, 255, 255, 199, 227, 255, 255, 199, 227, 255, 255, 198, 226, 255, 255, 197, 226, 255, 255, 97, 129, 179, 255, 0, 43, 130, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 95, 131, 189, 255, 193, 224, 255, 255, 193, 223, 255, 255, 192, 223, 255, 255, 192, 224, 255, 255, 191, 223, 255, 255, 190, 222, 255, 255, 190, 222, 255, 255, 189, 222, 255, 255, 189, 222, 255, 255, 188, 222, 255, 255, 183, 216, 250, 255, 171, 203, 234, 255, 164, 193, 223, 255, 154, 183, 211, 255, 147, 175, 203, 255, 124, 159, 195, 255, 48, 76, 121, 251, 21, 42, 85, 232, 21, 42, 85, 180, 21, 42, 85, 96, 21, 42, 85, 33, 21, 42, 85, 6,
+ 21, 42, 85, 3, 21, 42, 85, 18, 123, 156, 191, 216, 147, 168, 189, 255, 153, 173, 193, 255, 161, 184, 204, 255, 172, 195, 218, 255, 181, 206, 231, 255, 195, 222, 249, 255, 200, 227, 254, 255, 199, 227, 255, 255, 199, 227, 255, 255, 198, 226, 255, 255, 197, 226, 255, 255, 197, 226, 255, 255, 197, 226, 255, 255, 196, 225, 255, 255, 195, 225, 255, 255, 194, 225, 255, 255, 96, 128, 179, 255, 0, 44, 134, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 0, 47, 139, 255, 70, 107, 170, 255, 191, 222, 255, 255, 190, 223, 255, 255, 189, 222, 255, 255, 189, 222, 255, 255, 188, 222, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 186, 221, 255, 255, 186, 220, 255, 255, 182, 216, 250, 255, 170, 202, 234, 255, 162, 192, 223, 255, 152, 181, 211, 255, 144, 173, 201, 255, 136, 167, 198, 255, 93, 134, 178, 254, 21, 42, 85, 244, 21, 42, 85, 214, 21, 42, 85, 148, 21, 42, 85, 66, 21, 42, 85, 18, 21, 42, 85, 3,
+ 21, 42, 85, 1, 21, 42, 85, 9, 21, 42, 85, 40, 122, 153, 185, 246, 146, 168, 188, 255, 150, 171, 192, 255, 159, 182, 204, 255, 169, 194, 218, 255, 179, 204, 230, 255, 192, 220, 248, 255, 196, 225, 254, 255, 196, 225, 255, 255, 195, 226, 255, 255, 195, 225, 255, 255, 195, 224, 255, 255, 194, 225, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 192, 224, 255, 255, 58, 92, 153, 255, 0, 48, 145, 255, 0, 50, 152, 255, 0, 50, 152, 255, 0, 50, 152, 255, 1, 50, 147, 255, 21, 61, 137, 255, 176, 210, 246, 255, 188, 222, 255, 255, 187, 221, 255, 255, 187, 220, 255, 255, 186, 220, 255, 255, 185, 220, 255, 255, 185, 220, 255, 255, 184, 219, 255, 255, 180, 214, 249, 255, 168, 201, 234, 255, 159, 191, 223, 255, 150, 180, 210, 255, 141, 171, 199, 255, 138, 167, 195, 255, 103, 144, 185, 255, 21, 42, 85, 249, 21, 42, 85, 231, 21, 42, 85, 184, 21, 42, 85, 107, 21, 42, 85, 40, 21, 42, 85, 9, 21, 42, 85, 1,
+ 0, 0, 0, 0, 21, 42, 85, 4, 21, 42, 85, 20, 82, 116, 160, 109, 121, 151, 183, 252, 144, 164, 186, 255, 147, 170, 192, 255, 157, 180, 204, 255, 166, 192, 218, 255, 175, 202, 229, 255, 187, 216, 246, 255, 191, 223, 252, 255, 193, 224, 255, 255, 193, 224, 255, 255, 192, 223, 255, 255, 192, 223, 255, 255, 191, 223, 255, 255, 94, 126, 174, 255, 45, 81, 146, 255, 1, 48, 142, 255, 31, 79, 174, 255, 69, 117, 213, 255, 75, 123, 219, 255, 81, 129, 226, 255, 70, 118, 215, 255, 12, 60, 156, 255, 9, 50, 131, 255, 79, 116, 174, 255, 161, 197, 237, 255, 183, 219, 255, 255, 183, 219, 255, 255, 183, 219, 255, 255, 180, 217, 253, 255, 175, 211, 247, 255, 164, 198, 232, 255, 157, 190, 222, 255, 148, 179, 210, 255, 139, 169, 199, 255, 135, 165, 194, 255, 106, 145, 185, 255, 44, 72, 117, 252, 21, 42, 85, 239, 21, 42, 85, 205, 21, 42, 85, 140, 21, 42, 85, 66, 21, 42, 85, 20, 21, 42, 85, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 7, 21, 42, 85, 32, 92, 128, 171, 153, 119, 150, 181, 253, 141, 164, 186, 255, 145, 168, 192, 255, 153, 178, 203, 255, 162, 188, 215, 255, 169, 197, 225, 255, 177, 207, 237, 255, 185, 217, 248, 255, 188, 220, 252, 255, 189, 221, 254, 255, 189, 222, 255, 255, 188, 222, 255, 255, 0, 42, 127, 255, 10, 58, 152, 255, 41, 91, 190, 255, 34, 84, 184, 255, 31, 81, 181, 255, 31, 81, 182, 255, 32, 82, 182, 255, 39, 89, 189, 255, 79, 129, 229, 255, 121, 171, 255, 255, 4, 51, 147, 255, 136, 175, 225, 255, 181, 218, 255, 255, 179, 215, 253, 255, 175, 211, 248, 255, 168, 204, 238, 255, 160, 194, 228, 255, 153, 186, 219, 255, 145, 176, 208, 255, 138, 168, 198, 255, 133, 163, 194, 255, 106, 146, 186, 255, 57, 91, 137, 253, 21, 42, 85, 243, 21, 42, 85, 215, 21, 42, 85, 160, 21, 42, 85, 88, 21, 42, 85, 32, 21, 42, 85, 7, 21, 42, 85, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 2, 21, 42, 85, 12, 21, 42, 85, 44, 81, 116, 161, 157, 113, 147, 181, 252, 139, 163, 186, 255, 141, 165, 190, 255, 147, 173, 199, 255, 154, 181, 208, 255, 160, 189, 218, 255, 166, 195, 226, 255, 173, 204, 235, 255, 178, 212, 245, 255, 181, 215, 249, 255, 183, 217, 251, 255, 184, 218, 253, 255, 184, 218, 254, 255, 183, 220, 255, 255, 184, 219, 255, 255, 182, 219, 255, 255, 182, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 180, 218, 255, 255, 180, 218, 255, 255, 179, 217, 254, 255, 176, 214, 251, 255, 172, 210, 246, 255, 165, 201, 237, 255, 158, 193, 228, 255, 153, 187, 221, 255, 146, 180, 212, 255, 140, 172, 204, 255, 135, 165, 196, 255, 132, 162, 193, 255, 100, 141, 184, 255, 53, 85, 132, 252, 21, 42, 85, 243, 21, 42, 85, 221, 21, 42, 85, 172, 21, 42, 85, 104, 21, 42, 85, 44, 21, 42, 85, 12, 21, 42, 85, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 4, 21, 42, 85, 18, 21, 42, 85, 55, 39, 64, 108, 125, 104, 140, 178, 247, 126, 154, 182, 255, 136, 162, 187, 255, 140, 166, 192, 255, 146, 172, 200, 255, 151, 180, 208, 255, 156, 185, 216, 255, 159, 189, 221, 255, 162, 193, 225, 255, 164, 196, 229, 255, 171, 204, 238, 255, 173, 209, 244, 255, 176, 212, 248, 255, 176, 213, 250, 255, 178, 214, 252, 255, 179, 216, 254, 255, 179, 217, 255, 255, 179, 217, 255, 255, 178, 217, 255, 255, 176, 213, 252, 255, 169, 207, 244, 255, 159, 195, 231, 255, 154, 189, 225, 255, 151, 184, 219, 255, 144, 178, 211, 255, 139, 171, 204, 255, 134, 166, 197, 255, 130, 161, 192, 255, 117, 153, 187, 255, 90, 133, 179, 255, 29, 52, 96, 250, 21, 42, 85, 241, 21, 42, 85, 219, 21, 42, 85, 175, 21, 42, 85, 114, 21, 42, 85, 55, 21, 42, 85, 18, 21, 42, 85, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 5, 21, 42, 85, 21, 21, 42, 85, 57, 21, 42, 85, 111, 90, 129, 171, 228, 109, 143, 177, 254, 133, 158, 184, 255, 134, 160, 187, 255, 137, 164, 191, 255, 140, 168, 197, 255, 142, 172, 201, 255, 145, 175, 205, 255, 145, 178, 211, 255, 146, 181, 216, 255, 150, 186, 220, 255, 155, 189, 223, 255, 157, 192, 226, 255, 160, 195, 231, 255, 169, 205, 244, 255, 173, 213, 251, 255, 175, 214, 254, 255, 172, 211, 251, 255, 162, 200, 238, 255, 154, 189, 226, 255, 147, 181, 216, 255, 140, 174, 207, 255, 135, 168, 201, 255, 132, 163, 195, 255, 129, 160, 191, 255, 127, 158, 189, 255, 99, 139, 180, 255, 75, 116, 163, 254, 21, 42, 85, 248, 21, 42, 85, 237, 21, 42, 85, 212, 21, 42, 85, 167, 21, 42, 85, 111, 21, 42, 85, 57, 21, 42, 85, 21, 21, 42, 85, 5, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 6, 21, 42, 85, 20, 21, 42, 85, 50, 21, 42, 85, 97, 24, 46, 89, 155, 90, 130, 172, 244, 106, 141, 177, 255, 129, 156, 184, 255, 130, 157, 184, 255, 130, 158, 185, 255, 128, 158, 188, 255, 127, 160, 192, 255, 129, 163, 197, 255, 131, 165, 200, 255, 134, 168, 202, 255, 140, 172, 206, 255, 146, 180, 214, 255, 153, 187, 223, 255, 162, 199, 238, 255, 169, 208, 248, 255, 163, 202, 240, 255, 152, 189, 226, 255, 144, 178, 213, 255, 135, 168, 201, 255, 129, 161, 193, 255, 126, 157, 189, 255, 123, 156, 187, 255, 97, 139, 180, 255, 80, 123, 170, 254, 22, 44, 87, 249, 21, 42, 85, 242, 21, 42, 85, 227, 21, 42, 85, 199, 21, 42, 85, 153, 21, 42, 85, 97, 21, 42, 85, 50, 21, 42, 85, 20, 21, 42, 85, 6, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 4, 21, 42, 85, 15, 21, 42, 85, 39, 21, 42, 85, 81, 21, 42, 85, 131, 21, 42, 85, 175, 70, 106, 152, 232, 82, 119, 163, 247, 104, 139, 175, 253, 123, 152, 183, 255, 121, 152, 184, 255, 121, 152, 184, 255, 121, 153, 184, 255, 122, 153, 186, 255, 125, 157, 190, 255, 131, 164, 198, 255, 141, 176, 210, 255, 150, 188, 224, 255, 162, 200, 241, 255, 154, 193, 232, 255, 145, 182, 220, 255, 136, 171, 205, 255, 129, 162, 195, 255, 106, 145, 183, 255, 88, 132, 177, 255, 73, 116, 164, 254, 21, 42, 85, 248, 21, 42, 85, 242, 21, 42, 85, 230, 21, 42, 85, 209, 21, 42, 85, 175, 21, 42, 85, 131, 21, 42, 85, 81, 21, 42, 85, 39, 21, 42, 85, 15, 21, 42, 85, 4, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 3, 21, 42, 85, 10, 21, 42, 85, 28, 21, 42, 85, 58, 21, 42, 85, 95, 21, 42, 85, 139, 21, 42, 85, 176, 25, 47, 90, 207, 52, 82, 128, 234, 83, 116, 159, 247, 97, 129, 167, 251, 101, 131, 169, 253, 110, 141, 176, 254, 120, 151, 183, 255, 125, 157, 190, 255, 132, 166, 200, 255, 144, 180, 217, 255, 156, 197, 238, 255, 153, 192, 232, 255, 143, 180, 218, 255, 113, 153, 194, 255, 74, 115, 163, 254, 32, 57, 102, 249, 21, 42, 85, 243, 21, 42, 85, 236, 21, 42, 85, 225, 21, 42, 85, 206, 21, 42, 85, 176, 21, 42, 85, 139, 21, 42, 85, 95, 21, 42, 85, 58, 21, 42, 85, 28, 21, 42, 85, 10, 21, 42, 85, 3, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 2, 21, 42, 85, 6, 21, 42, 85, 16, 21, 42, 85, 33, 21, 42, 85, 61, 21, 42, 85, 94, 21, 42, 85, 129, 21, 42, 85, 149, 21, 42, 85, 174, 23, 45, 88, 206, 24, 46, 89, 230, 31, 53, 96, 244, 72, 100, 142, 249, 119, 151, 187, 254, 129, 163, 197, 255, 138, 176, 213, 255, 154, 196, 237, 255, 154, 194, 235, 255, 145, 182, 220, 255, 102, 137, 179, 254, 28, 50, 93, 245, 21, 42, 85, 231, 21, 42, 85, 210, 21, 42, 85, 187, 21, 42, 85, 164, 21, 42, 85, 133, 21, 42, 85, 94, 21, 42, 85, 61, 21, 42, 85, 33, 21, 42, 85, 16, 21, 42, 85, 6, 21, 42, 85, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 2, 21, 42, 85, 7, 21, 42, 85, 16, 21, 42, 85, 31, 21, 42, 85, 45, 21, 42, 85, 44, 21, 42, 85, 48, 21, 42, 85, 67, 21, 42, 85, 108, 22, 43, 86, 189, 27, 49, 92, 234, 86, 117, 158, 247, 127, 163, 198, 255, 134, 172, 209, 255, 147, 190, 231, 255, 153, 195, 237, 255, 145, 184, 223, 255, 98, 141, 190, 254, 23, 45, 88, 231, 21, 42, 85, 193, 21, 42, 85, 146, 21, 42, 85, 105, 21, 42, 85, 77, 21, 42, 85, 54, 21, 42, 85, 32, 21, 42, 85, 16, 21, 42, 85, 7, 21, 42, 85, 2, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 2, 21, 42, 85, 6, 21, 42, 85, 10, 21, 42, 85, 9, 21, 42, 85, 6, 21, 42, 85, 7, 21, 42, 85, 15, 21, 42, 85, 78, 22, 44, 87, 198, 48, 78, 124, 238, 126, 162, 198, 254, 130, 168, 205, 255, 142, 183, 224, 255, 152, 195, 239, 255, 144, 185, 226, 255, 82, 129, 181, 253, 21, 42, 85, 216, 21, 42, 85, 154, 21, 42, 85, 87, 21, 42, 85, 42, 21, 42, 85, 22, 21, 42, 85, 13, 21, 42, 85, 6, 21, 42, 85, 2, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 2, 21, 42, 85, 4, 21, 42, 85, 4, 21, 42, 85, 3, 21, 42, 85, 16, 21, 42, 85, 110, 21, 42, 85, 205, 74, 121, 172, 250, 120, 159, 198, 255, 133, 173, 213, 255, 143, 186, 229, 255, 142, 184, 227, 255, 75, 124, 178, 252, 21, 42, 85, 213, 21, 42, 85, 144, 21, 42, 85, 64, 21, 42, 85, 19, 21, 42, 85, 4, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 1, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 24, 21, 42, 85, 130, 21, 42, 85, 208, 61, 103, 154, 243, 122, 162, 201, 255, 134, 177, 218, 255, 138, 181, 225, 255, 72, 121, 177, 252, 21, 42, 85, 216, 21, 42, 85, 146, 21, 42, 85, 62, 21, 42, 85, 15, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 3, 21, 42, 85, 37, 21, 42, 85, 121, 21, 42, 85, 185, 72, 122, 175, 250, 125, 167, 208, 255, 133, 175, 218, 255, 71, 121, 177, 252, 21, 42, 85, 216, 21, 42, 85, 148, 21, 42, 85, 63, 21, 42, 85, 15, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 4, 21, 42, 85, 26, 21, 42, 85, 88, 21, 42, 85, 174, 71, 122, 176, 249, 123, 168, 213, 255, 70, 122, 178, 251, 21, 42, 85, 217, 21, 42, 85, 148, 21, 42, 85, 62, 21, 42, 85, 15, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 2, 21, 42, 85, 17, 21, 42, 85, 68, 21, 42, 85, 149, 55, 96, 148, 223, 51, 89, 141, 232, 21, 42, 85, 207, 21, 42, 85, 144, 21, 42, 85, 60, 21, 42, 85, 14, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 2, 21, 42, 85, 12, 21, 42, 85, 43, 21, 42, 85, 101, 21, 42, 85, 150, 21, 42, 85, 160, 21, 42, 85, 117, 21, 42, 85, 50, 21, 42, 85, 12, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 2, 21, 42, 85, 10, 21, 42, 85, 32, 21, 42, 85, 66, 21, 42, 85, 86, 21, 42, 85, 67, 21, 42, 85, 30, 21, 42, 85, 8, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 2, 21, 42, 85, 8, 21, 42, 85, 19, 21, 42, 85, 29, 21, 42, 85, 25, 21, 42, 85, 12, 21, 42, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_DeviceNetwork(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 129, 165, 50, 117, 117, 156, 54, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 157, 33, 136, 136, 152, 68, 145, 145, 166, 134, 160, 160, 184, 167, 178, 178, 202, 213, 174, 174, 206, 255, 173, 173, 206, 255, 137, 137, 180, 243, 0, 0, 0, 47, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 148, 148, 66, 145, 145, 145, 118, 176, 176, 178, 151, 179, 179, 189, 198, 195, 195, 204, 241, 208, 208, 222, 255, 200, 200, 216, 255, 190, 190, 211, 255, 169, 169, 198, 255, 152, 152, 187, 255, 138, 143, 182, 255, 139, 162, 201, 255, 129, 140, 188, 255, 0, 0, 0, 111, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 149, 149, 115, 217, 217, 217, 255, 229, 229, 230, 255, 199, 199, 205, 255, 182, 182, 193, 255, 162, 162, 178, 255, 146, 150, 168, 255, 154, 168, 189, 255, 171, 197, 211, 255, 182, 217, 229, 255, 175, 230, 245, 255, 169, 237, 255, 255, 159, 232, 255, 255, 128, 155, 204, 255, 36, 36, 53, 165, 0, 0, 0, 51, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 136, 136, 90, 236, 236, 236, 255, 144, 156, 170, 255, 143, 180, 200, 255, 148, 197, 220, 255, 160, 223, 243, 255, 180, 243, 255, 255, 188, 247, 255, 255, 198, 252, 255, 255, 188, 247, 255, 255, 180, 243, 255, 255, 162, 234, 255, 255, 156, 231, 255, 255, 129, 172, 219, 255, 44, 44, 67, 177, 0, 0, 0, 62, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 88, 88, 28, 210, 210, 216, 255, 142, 191, 218, 255, 130, 218, 255, 255, 139, 222, 255, 255, 158, 231, 255, 255, 163, 234, 255, 255, 177, 242, 255, 255, 181, 244, 255, 255, 177, 242, 255, 255, 163, 234, 255, 255, 159, 232, 255, 255, 146, 226, 255, 255, 129, 177, 224, 255, 67, 67, 105, 200, 0, 0, 0, 74, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 188, 188, 197, 217, 165, 190, 212, 255, 117, 212, 255, 255, 136, 221, 255, 255, 143, 224, 255, 255, 158, 231, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 149, 227, 255, 255, 136, 221, 255, 255, 120, 189, 239, 255, 71, 71, 116, 209, 0, 0, 0, 86, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 163, 163, 177, 174, 180, 192, 214, 255, 113, 210, 255, 255, 120, 213, 255, 255, 135, 220, 255, 255, 137, 222, 255, 255, 146, 226, 255, 255, 148, 227, 255, 255, 148, 227, 255, 255, 140, 223, 255, 255, 135, 220, 255, 255, 122, 214, 255, 255, 113, 198, 247, 255, 82, 82, 139, 222, 0, 0, 0, 97, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 121, 140, 113, 201, 201, 220, 255, 102, 204, 255, 255, 113, 210, 255, 255, 114, 211, 255, 255, 123, 215, 255, 255, 130, 218, 255, 255, 130, 218, 255, 255, 130, 218, 255, 255, 123, 215, 255, 255, 114, 211, 255, 255, 113, 210, 255, 255, 103, 205, 255, 255, 91, 91, 159, 234, 0, 0, 0, 107, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, 127, 63, 189, 189, 212, 255, 102, 182, 234, 255, 97, 201, 255, 255, 109, 208, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 109, 208, 255, 255, 97, 201, 255, 255, 91, 198, 255, 255, 91, 106, 177, 241, 0, 0, 0, 118, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 178, 178, 208, 255, 104, 175, 227, 255, 88, 197, 255, 255, 91, 198, 255, 255, 95, 200, 255, 255, 98, 202, 255, 255, 102, 204, 255, 255, 98, 202, 255, 255, 95, 200, 255, 255, 91, 198, 255, 255, 88, 197, 255, 255, 75, 190, 255, 255, 97, 127, 213, 255, 0, 0, 0, 128, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 160, 160, 192, 203, 116, 175, 228, 255, 68, 187, 255, 255, 77, 191, 255, 255, 82, 194, 255, 255, 85, 195, 255, 255, 85, 195, 255, 255, 85, 195, 255, 255, 82, 194, 255, 255, 77, 191, 255, 255, 68, 187, 255, 255, 65, 186, 255, 255, 84, 132, 222, 255, 0, 0, 0, 139, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 175, 145, 131, 164, 215, 255, 54, 180, 255, 255, 61, 184, 255, 255, 67, 186, 255, 255, 68, 187, 255, 255, 68, 187, 255, 255, 68, 187, 255, 255, 67, 186, 255, 255, 61, 184, 255, 255, 92, 178, 241, 255, 114, 155, 220, 255, 111, 111, 194, 251, 0, 0, 0, 142, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 115, 156, 96, 153, 161, 208, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 64, 179, 251, 255, 117, 183, 239, 255, 141, 157, 217, 255, 110, 110, 185, 247, 47, 47, 94, 209, 10, 10, 19, 168, 0, 0, 0, 110, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 128, 45, 154, 154, 202, 255, 31, 162, 251, 255, 31, 169, 255, 255, 34, 170, 255, 255, 102, 192, 250, 255, 148, 189, 236, 255, 156, 156, 214, 255, 111, 111, 198, 255, 81, 81, 181, 255, 0, 0, 0, 176, 0, 0, 0, 134, 0, 0, 0, 87, 0, 0, 0, 46, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 148, 148, 197, 230, 69, 161, 238, 255, 135, 206, 254, 255, 173, 191, 232, 255, 155, 155, 211, 255, 110, 110, 199, 255, 103, 103, 203, 255, 100, 100, 202, 255, 96, 96, 198, 255, 27, 27, 55, 175, 0, 0, 0, 77, 0, 0, 0, 22, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 183, 17, 179, 179, 207, 147, 169, 169, 210, 255, 149, 149, 205, 255, 147, 147, 205, 255, 182, 182, 214, 255, 165, 165, 207, 255, 155, 155, 205, 255, 113, 113, 193, 255, 109, 109, 197, 255, 106, 106, 200, 255, 138, 138, 194, 249, 87, 87, 116, 136, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 202, 178, 238, 238, 238, 255, 231, 231, 240, 255, 223, 223, 237, 255, 239, 239, 239, 255, 228, 228, 228, 255, 185, 185, 208, 255, 175, 175, 212, 255, 132, 132, 191, 255, 119, 119, 187, 255, 116, 116, 190, 255, 154, 154, 203, 255, 160, 160, 204, 255, 83, 83, 113, 134, 0, 0, 0, 26, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 177, 50, 199, 199, 215, 255, 239, 239, 239, 255, 249, 249, 249, 255, 249, 249, 249, 255, 239, 239, 239, 255, 228, 228, 228, 255, 206, 206, 216, 255, 171, 171, 205, 255, 162, 162, 197, 255, 129, 129, 178, 255, 128, 128, 179, 255, 157, 157, 200, 255, 164, 164, 206, 255, 116, 116, 159, 227, 0, 0, 0, 72, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 109, 154, 54, 199, 199, 212, 255, 233, 233, 233, 255, 239, 239, 239, 255, 239, 239, 239, 255, 234, 234, 234, 255, 226, 226, 226, 255, 212, 212, 219, 255, 174, 174, 204, 255, 187, 187, 203, 255, 140, 140, 166, 255, 138, 138, 168, 255, 160, 160, 198, 255, 163, 163, 206, 255, 107, 107, 149, 235, 0, 0, 0, 109, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 147, 147, 177, 218, 224, 224, 224, 255, 228, 228, 228, 255, 228, 228, 228, 255, 226, 226, 226, 255, 216, 216, 220, 255, 207, 207, 218, 255, 162, 162, 194, 255, 209, 209, 212, 255, 141, 141, 155, 255, 126, 126, 164, 255, 159, 159, 200, 255, 152, 152, 198, 255, 62, 62, 89, 210, 0, 0, 0, 112, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 36, 36, 52, 50, 133, 133, 160, 219, 201, 201, 211, 255, 214, 214, 220, 255, 212, 212, 219, 255, 207, 207, 218, 255, 199, 199, 216, 255, 189, 189, 211, 255, 146, 146, 185, 255, 151, 151, 189, 255, 172, 172, 209, 255, 143, 143, 187, 255, 68, 68, 97, 220, 0, 0, 0, 151, 0, 0, 0, 80, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 129, 165, 50, 117, 117, 156, 54, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 52, 59, 59, 89, 165, 118, 118, 144, 223, 151, 151, 180, 250, 173, 173, 199, 255, 171, 171, 199, 255, 168, 168, 198, 255, 151, 151, 189, 255, 123, 123, 157, 243, 75, 75, 106, 222, 18, 18, 28, 179, 0, 0, 0, 141, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 129, 165, 50, 117, 117, 156, 54, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 157, 33, 136, 136, 152, 68, 145, 145, 166, 134, 160, 160, 184, 167, 178, 178, 202, 213, 174, 174, 206, 255, 173, 173, 206, 255, 137, 137, 180, 243, 0, 0, 0, 47, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 39, 0, 0, 0, 79, 0, 0, 0, 112, 0, 0, 0, 133, 0, 0, 0, 142, 38, 38, 38, 255, 0, 0, 0, 167, 0, 0, 0, 151, 0, 0, 0, 124, 0, 0, 0, 97, 0, 0, 0, 61, 0, 0, 0, 26, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 157, 33, 136, 136, 152, 68, 145, 145, 166, 134, 160, 160, 184, 167, 178, 178, 202, 213, 174, 174, 206, 255, 173, 173, 206, 255, 137, 137, 180, 243, 0, 0, 0, 47, 0, 0, 0, 15, 0, 0, 0, 0,
+ 0, 0, 0, 0, 148, 148, 148, 66, 145, 145, 145, 118, 176, 176, 178, 151, 179, 179, 189, 198, 195, 195, 204, 241, 208, 208, 222, 255, 200, 200, 216, 255, 190, 190, 211, 255, 169, 169, 198, 255, 152, 152, 187, 255, 138, 143, 182, 255, 139, 162, 201, 255, 129, 140, 188, 255, 0, 0, 0, 111, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 31, 0, 0, 0, 42, 0, 0, 0, 46, 38, 38, 38, 255, 0, 0, 0, 119, 0, 0, 0, 81, 0, 0, 0, 37, 0, 0, 0, 24, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 148, 148, 148, 66, 145, 145, 145, 118, 176, 176, 178, 151, 179, 179, 189, 198, 195, 195, 204, 241, 208, 208, 222, 255, 200, 200, 216, 255, 190, 190, 211, 255, 169, 169, 198, 255, 152, 152, 187, 255, 138, 143, 182, 255, 139, 162, 201, 255, 129, 140, 188, 255, 0, 0, 0, 111, 0, 0, 0, 36, 0, 0, 0, 0,
+ 149, 149, 149, 115, 217, 217, 217, 255, 229, 229, 230, 255, 199, 199, 205, 255, 182, 182, 193, 255, 162, 162, 178, 255, 146, 150, 168, 255, 154, 168, 189, 255, 171, 197, 211, 255, 182, 217, 229, 255, 175, 230, 245, 255, 169, 237, 255, 255, 159, 232, 255, 255, 128, 155, 204, 255, 36, 36, 53, 165, 0, 0, 0, 51, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, 38, 255, 0, 0, 0, 95, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 149, 149, 115, 217, 217, 217, 255, 229, 229, 230, 255, 199, 199, 205, 255, 182, 182, 193, 255, 162, 162, 178, 255, 146, 150, 168, 255, 154, 168, 189, 255, 171, 197, 211, 255, 182, 217, 229, 255, 175, 230, 245, 255, 169, 237, 255, 255, 159, 232, 255, 255, 128, 155, 204, 255, 36, 36, 53, 165, 0, 0, 0, 51, 0, 0, 0, 2,
+ 136, 136, 136, 90, 236, 236, 236, 255, 144, 156, 170, 255, 143, 180, 200, 255, 148, 197, 220, 255, 160, 223, 243, 255, 180, 243, 255, 255, 188, 247, 255, 255, 198, 252, 255, 255, 188, 247, 255, 255, 180, 243, 255, 255, 162, 234, 255, 255, 156, 231, 255, 255, 129, 172, 219, 255, 44, 44, 67, 177, 0, 0, 0, 62, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 0, 0, 0, 71, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 136, 136, 90, 236, 236, 236, 255, 144, 156, 170, 255, 143, 180, 200, 255, 148, 197, 220, 255, 160, 223, 243, 255, 180, 243, 255, 255, 188, 247, 255, 255, 198, 252, 255, 255, 188, 247, 255, 255, 180, 243, 255, 255, 162, 234, 255, 255, 156, 231, 255, 255, 129, 172, 219, 255, 44, 44, 67, 177, 0, 0, 0, 62, 0, 0, 0, 7,
+ 88, 88, 88, 28, 210, 210, 216, 255, 142, 191, 218, 255, 130, 218, 255, 255, 139, 222, 255, 255, 158, 231, 255, 255, 163, 234, 255, 255, 177, 242, 255, 255, 181, 244, 255, 255, 177, 242, 255, 255, 163, 234, 255, 255, 159, 232, 255, 255, 146, 226, 255, 255, 129, 177, 224, 255, 67, 67, 105, 200, 0, 0, 0, 74, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 255, 224, 241, 255, 255, 38, 38, 38, 255, 0, 0, 0, 119, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 88, 88, 28, 210, 210, 216, 255, 142, 191, 218, 255, 130, 218, 255, 255, 139, 222, 255, 255, 158, 231, 255, 255, 163, 234, 255, 255, 177, 242, 255, 255, 181, 244, 255, 255, 177, 242, 255, 255, 163, 234, 255, 255, 159, 232, 255, 255, 146, 226, 255, 255, 129, 177, 224, 255, 67, 67, 105, 200, 0, 0, 0, 74, 0, 0, 0, 13,
+ 0, 0, 0, 5, 188, 188, 197, 217, 165, 190, 212, 255, 117, 212, 255, 255, 136, 221, 255, 255, 143, 224, 255, 255, 158, 231, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 149, 227, 255, 255, 136, 221, 255, 255, 120, 189, 239, 255, 71, 71, 116, 209, 0, 0, 0, 86, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 255, 224, 241, 255, 255, 38, 38, 38, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 188, 188, 197, 217, 165, 190, 212, 255, 117, 212, 255, 255, 136, 221, 255, 255, 143, 224, 255, 255, 158, 231, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 149, 227, 255, 255, 136, 221, 255, 255, 120, 189, 239, 255, 71, 71, 116, 209, 0, 0, 0, 86, 0, 0, 0, 19,
+ 0, 0, 0, 1, 163, 163, 177, 174, 180, 192, 214, 255, 113, 210, 255, 255, 120, 213, 255, 255, 135, 220, 255, 255, 137, 222, 255, 255, 146, 226, 255, 255, 148, 227, 255, 255, 148, 227, 255, 255, 140, 223, 255, 255, 135, 220, 255, 255, 122, 214, 255, 255, 113, 198, 247, 255, 82, 82, 139, 222, 0, 0, 0, 97, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 255, 224, 241, 255, 255, 38, 38, 38, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 163, 163, 177, 174, 180, 192, 214, 255, 113, 210, 255, 255, 120, 213, 255, 255, 135, 220, 255, 255, 137, 222, 255, 255, 146, 226, 255, 255, 148, 227, 255, 255, 148, 227, 255, 255, 140, 223, 255, 255, 135, 220, 255, 255, 122, 214, 255, 255, 113, 198, 247, 255, 82, 82, 139, 222, 0, 0, 0, 97, 0, 0, 0, 24,
+ 0, 0, 0, 0, 121, 121, 140, 113, 201, 201, 220, 255, 102, 204, 255, 255, 113, 210, 255, 255, 114, 211, 255, 255, 123, 215, 255, 255, 130, 218, 255, 255, 130, 218, 255, 255, 130, 218, 255, 255, 123, 215, 255, 255, 114, 211, 255, 255, 113, 210, 255, 255, 103, 205, 255, 255, 91, 91, 159, 234, 0, 0, 0, 107, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 255, 224, 241, 255, 255, 38, 38, 38, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 121, 140, 113, 201, 201, 220, 255, 102, 204, 255, 255, 113, 210, 255, 255, 114, 211, 255, 255, 123, 215, 255, 255, 130, 218, 255, 255, 130, 218, 255, 255, 130, 218, 255, 255, 123, 215, 255, 255, 114, 211, 255, 255, 113, 210, 255, 255, 103, 205, 255, 255, 91, 91, 159, 234, 0, 0, 0, 107, 0, 0, 0, 29,
+ 0, 0, 0, 0, 106, 106, 127, 63, 189, 189, 212, 255, 102, 182, 234, 255, 97, 201, 255, 255, 109, 208, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 109, 208, 255, 255, 97, 201, 255, 255, 91, 198, 255, 255, 91, 106, 177, 241, 0, 0, 0, 118, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 255, 224, 241, 255, 255, 38, 38, 38, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, 127, 63, 189, 189, 212, 255, 102, 182, 234, 255, 97, 201, 255, 255, 109, 208, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 109, 208, 255, 255, 97, 201, 255, 255, 91, 198, 255, 255, 91, 106, 177, 241, 0, 0, 0, 118, 0, 0, 0, 34,
+ 0, 0, 0, 0, 0, 0, 0, 9, 178, 178, 208, 255, 104, 175, 227, 255, 88, 197, 255, 255, 91, 198, 255, 255, 95, 200, 255, 255, 98, 202, 255, 255, 102, 204, 255, 255, 98, 202, 255, 255, 95, 200, 255, 255, 91, 198, 255, 255, 88, 197, 255, 255, 75, 190, 255, 255, 97, 127, 213, 255, 0, 0, 0, 128, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 167, 37, 255, 217, 178, 64, 255, 219, 183, 75, 255, 213, 171, 46, 255, 210, 174, 71, 255, 0, 0, 0, 71, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 178, 178, 208, 255, 104, 175, 227, 255, 88, 197, 255, 255, 91, 198, 255, 255, 95, 200, 255, 255, 98, 202, 255, 255, 102, 204, 255, 255, 98, 202, 255, 255, 95, 200, 255, 255, 91, 198, 255, 255, 88, 197, 255, 255, 75, 190, 255, 255, 97, 127, 213, 255, 0, 0, 0, 128, 0, 0, 0, 40,
+ 0, 0, 0, 0, 0, 0, 0, 2, 160, 160, 192, 203, 116, 175, 228, 255, 68, 187, 255, 255, 77, 191, 255, 255, 82, 194, 255, 255, 85, 195, 255, 255, 85, 195, 255, 255, 85, 195, 255, 255, 82, 194, 255, 255, 77, 191, 255, 255, 68, 187, 255, 255, 65, 186, 255, 255, 84, 132, 222, 255, 0, 0, 0, 139, 0, 0, 0, 45, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 216, 182, 77, 255, 239, 235, 218, 255, 255, 255, 255, 255, 245, 238, 212, 255, 190, 144, 21, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 0, 0, 0, 37, 157, 157, 189, 206, 116, 175, 228, 255, 68, 187, 255, 255, 77, 191, 255, 255, 82, 194, 255, 255, 85, 195, 255, 255, 85, 195, 255, 255, 85, 195, 255, 255, 82, 194, 255, 255, 77, 191, 255, 255, 68, 187, 255, 255, 65, 186, 255, 255, 84, 132, 222, 255, 0, 0, 0, 139, 0, 0, 0, 45,
+ 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 175, 145, 131, 164, 215, 255, 54, 180, 255, 255, 61, 184, 255, 255, 67, 186, 255, 255, 68, 187, 255, 255, 68, 187, 255, 255, 68, 187, 255, 255, 67, 186, 255, 255, 61, 184, 255, 255, 92, 178, 241, 255, 114, 155, 220, 255, 111, 111, 194, 255, 38, 38, 38, 255, 38, 38, 38, 255, 153, 153, 153, 255, 223, 241, 255, 255, 223, 241, 255, 255, 224, 241, 255, 255, 224, 241, 255, 255, 213, 173, 50, 255, 239, 229, 187, 255, 255, 247, 205, 255, 242, 228, 175, 255, 189, 143, 25, 255, 223, 241, 255, 255, 223, 241, 255, 255, 223, 241, 255, 255, 223, 241, 255, 255, 38, 38, 38, 255, 38, 38, 38, 255, 98, 98, 118, 255, 131, 164, 215, 255, 54, 180, 255, 255, 61, 184, 255, 255, 67, 186, 255, 255, 68, 187, 255, 255, 68, 187, 255, 255, 68, 187, 255, 255, 67, 186, 255, 255, 61, 184, 255, 255, 92, 178, 241, 255, 114, 155, 220, 255, 111, 111, 194, 251, 0, 0, 0, 142, 0, 0, 0, 46,
+ 0, 0, 0, 0, 0, 0, 0, 0, 115, 115, 156, 96, 153, 161, 208, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 64, 179, 251, 255, 117, 183, 239, 255, 141, 157, 217, 255, 110, 110, 185, 247, 47, 47, 94, 209, 10, 10, 19, 169, 0, 0, 0, 137, 0, 0, 0, 108, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 217, 173, 21, 255, 235, 193, 43, 255, 223, 184, 42, 255, 234, 192, 40, 255, 175, 126, 5, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 0, 0, 0, 167, 64, 64, 87, 171, 153, 161, 208, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 64, 179, 251, 255, 117, 183, 239, 255, 141, 157, 217, 255, 110, 110, 185, 247, 47, 47, 94, 209, 10, 10, 19, 168, 0, 0, 0, 110, 0, 0, 0, 34,
+ 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 128, 45, 154, 154, 202, 255, 31, 162, 251, 255, 31, 169, 255, 255, 34, 170, 255, 255, 102, 192, 250, 255, 148, 189, 236, 255, 156, 156, 214, 255, 111, 111, 198, 255, 81, 81, 181, 255, 0, 0, 0, 176, 0, 0, 0, 134, 0, 0, 0, 88, 0, 0, 0, 59, 0, 0, 0, 49, 0, 0, 0, 71, 0, 0, 0, 119, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 143, 169, 118, 1, 255, 163, 113, 1, 255, 163, 113, 1, 255, 168, 117, 2, 255, 162, 111, 1, 255, 0, 0, 0, 179, 0, 0, 0, 155, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 119, 39, 39, 57, 102, 154, 154, 202, 255, 31, 162, 251, 255, 31, 169, 255, 255, 34, 170, 255, 255, 102, 192, 250, 255, 148, 189, 236, 255, 156, 156, 214, 255, 111, 111, 198, 255, 81, 81, 181, 255, 0, 0, 0, 176, 0, 0, 0, 134, 0, 0, 0, 87, 0, 0, 0, 46, 0, 0, 0, 12,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 148, 148, 197, 230, 69, 161, 238, 255, 135, 206, 254, 255, 173, 191, 232, 255, 155, 155, 211, 255, 110, 110, 199, 255, 103, 103, 203, 255, 100, 100, 202, 255, 96, 96, 198, 255, 27, 27, 55, 175, 0, 0, 0, 77, 0, 0, 0, 22, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 11, 0, 0, 0, 35, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 71, 0, 0, 0, 119, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 119, 0, 0, 0, 71, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 35, 0, 0, 0, 18, 148, 148, 197, 230, 69, 161, 238, 255, 135, 206, 254, 255, 173, 191, 232, 255, 155, 155, 211, 255, 110, 110, 199, 255, 103, 103, 203, 255, 100, 100, 202, 255, 96, 96, 198, 255, 27, 27, 55, 175, 0, 0, 0, 77, 0, 0, 0, 22, 0, 0, 0, 6, 0, 0, 0, 1,
+ 0, 0, 0, 0, 135, 135, 183, 17, 179, 179, 207, 147, 169, 169, 210, 255, 149, 149, 205, 255, 147, 147, 205, 255, 182, 182, 214, 255, 165, 165, 207, 255, 155, 155, 205, 255, 113, 113, 193, 255, 109, 109, 197, 255, 106, 106, 200, 255, 138, 138, 194, 249, 87, 87, 116, 136, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 35, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 35, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 183, 17, 179, 179, 207, 147, 169, 169, 210, 255, 149, 149, 205, 255, 147, 147, 205, 255, 182, 182, 214, 255, 165, 165, 207, 255, 155, 155, 205, 255, 113, 113, 193, 255, 109, 109, 197, 255, 106, 106, 200, 255, 138, 138, 194, 249, 87, 87, 116, 136, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 170, 202, 178, 238, 238, 238, 255, 231, 231, 240, 255, 223, 223, 237, 255, 239, 239, 239, 255, 228, 228, 228, 255, 185, 185, 208, 255, 175, 175, 212, 255, 132, 132, 191, 255, 119, 119, 187, 255, 116, 116, 190, 255, 154, 154, 203, 255, 160, 160, 204, 255, 83, 83, 113, 134, 0, 0, 0, 26, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 202, 178, 238, 238, 238, 255, 231, 231, 240, 255, 223, 223, 237, 255, 239, 239, 239, 255, 228, 228, 228, 255, 185, 185, 208, 255, 175, 175, 212, 255, 132, 132, 191, 255, 119, 119, 187, 255, 116, 116, 190, 255, 154, 154, 203, 255, 160, 160, 204, 255, 83, 83, 113, 134, 0, 0, 0, 26, 0, 0, 0, 4,
+ 128, 128, 177, 50, 199, 199, 215, 255, 239, 239, 239, 255, 249, 249, 249, 255, 249, 249, 249, 255, 239, 239, 239, 255, 228, 228, 228, 255, 206, 206, 216, 255, 171, 171, 205, 255, 162, 162, 197, 255, 129, 129, 178, 255, 128, 128, 179, 255, 157, 157, 200, 255, 164, 164, 206, 255, 116, 116, 159, 227, 0, 0, 0, 72, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 177, 50, 199, 199, 215, 255, 239, 239, 239, 255, 249, 249, 249, 255, 249, 249, 249, 255, 239, 239, 239, 255, 228, 228, 228, 255, 206, 206, 216, 255, 171, 171, 205, 255, 162, 162, 197, 255, 129, 129, 178, 255, 128, 128, 179, 255, 157, 157, 200, 255, 164, 164, 206, 255, 116, 116, 159, 227, 0, 0, 0, 72, 0, 0, 0, 16,
+ 109, 109, 154, 54, 199, 199, 212, 255, 233, 233, 233, 255, 239, 239, 239, 255, 239, 239, 239, 255, 234, 234, 234, 255, 226, 226, 226, 255, 212, 212, 219, 255, 174, 174, 204, 255, 187, 187, 203, 255, 140, 140, 166, 255, 138, 138, 168, 255, 160, 160, 198, 255, 163, 163, 206, 255, 107, 107, 149, 235, 0, 0, 0, 109, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 109, 154, 54, 199, 199, 212, 255, 233, 233, 233, 255, 239, 239, 239, 255, 239, 239, 239, 255, 234, 234, 234, 255, 226, 226, 226, 255, 212, 212, 219, 255, 174, 174, 204, 255, 187, 187, 203, 255, 140, 140, 166, 255, 138, 138, 168, 255, 160, 160, 198, 255, 163, 163, 206, 255, 107, 107, 149, 235, 0, 0, 0, 109, 0, 0, 0, 30,
+ 0, 0, 0, 7, 147, 147, 177, 218, 224, 224, 224, 255, 228, 228, 228, 255, 228, 228, 228, 255, 226, 226, 226, 255, 216, 216, 220, 255, 207, 207, 218, 255, 162, 162, 194, 255, 209, 209, 212, 255, 141, 141, 155, 255, 126, 126, 164, 255, 159, 159, 200, 255, 152, 152, 198, 255, 62, 62, 89, 210, 0, 0, 0, 112, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 147, 147, 177, 218, 224, 224, 224, 255, 228, 228, 228, 255, 228, 228, 228, 255, 226, 226, 226, 255, 216, 216, 220, 255, 207, 207, 218, 255, 162, 162, 194, 255, 209, 209, 212, 255, 141, 141, 155, 255, 126, 126, 164, 255, 159, 159, 200, 255, 152, 152, 198, 255, 62, 62, 89, 210, 0, 0, 0, 112, 0, 0, 0, 31,
+ 0, 0, 0, 2, 36, 36, 52, 50, 133, 133, 160, 219, 201, 201, 211, 255, 214, 214, 220, 255, 212, 212, 219, 255, 207, 207, 218, 255, 199, 199, 216, 255, 189, 189, 211, 255, 146, 146, 185, 255, 151, 151, 189, 255, 172, 172, 209, 255, 143, 143, 187, 255, 68, 68, 97, 220, 0, 0, 0, 151, 0, 0, 0, 80, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 36, 36, 52, 50, 133, 133, 160, 219, 201, 201, 211, 255, 214, 214, 220, 255, 212, 212, 219, 255, 207, 207, 218, 255, 199, 199, 216, 255, 189, 189, 211, 255, 146, 146, 185, 255, 151, 151, 189, 255, 172, 172, 209, 255, 143, 143, 187, 255, 68, 68, 97, 220, 0, 0, 0, 151, 0, 0, 0, 80, 0, 0, 0, 19,
+ 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 52, 59, 59, 89, 165, 118, 118, 144, 223, 151, 151, 180, 250, 173, 173, 199, 255, 171, 171, 199, 255, 168, 168, 198, 255, 151, 151, 189, 255, 123, 123, 157, 243, 75, 75, 106, 222, 18, 18, 28, 179, 0, 0, 0, 141, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 52, 59, 59, 89, 165, 118, 118, 144, 223, 151, 151, 180, 250, 173, 173, 199, 255, 171, 171, 199, 255, 168, 168, 198, 255, 151, 151, 189, 255, 123, 123, 157, 243, 75, 75, 106, 222, 18, 18, 28, 179, 0, 0, 0, 141, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 39, 0, 0, 0, 79, 0, 0, 0, 112, 0, 0, 0, 133, 0, 0, 0, 142, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 139, 0, 0, 0, 124, 0, 0, 0, 97, 0, 0, 0, 61, 0, 0, 0, 26, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 39, 0, 0, 0, 79, 0, 0, 0, 112, 0, 0, 0, 133, 0, 0, 0, 142, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 139, 0, 0, 0, 124, 0, 0, 0, 97, 0, 0, 0, 61, 0, 0, 0, 26, 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 31, 0, 0, 0, 42, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 45, 0, 0, 0, 37, 0, 0, 0, 24, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 31, 0, 0, 0, 42, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 45, 0, 0, 0, 37, 0, 0, 0, 24, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_DeviceCamera(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 4, 0, 0, 85, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 51, 20, 42, 45, 51, 68, 30, 35, 52, 43, 19, 28, 47, 27, 23, 35, 46, 22, 15, 30, 60, 17, 20, 39, 59, 13, 28, 28, 57, 9, 0, 51, 51, 5, 0, 0, 128, 2, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 43, 51, 54, 43, 45, 51, 90, 46, 48, 51, 152, 47, 48, 51, 182, 49, 50, 51, 220, 51, 51, 51, 255, 74, 74, 74, 255, 85, 85, 85, 255, 49, 50, 51, 234, 46, 47, 51, 189, 42, 45, 51, 151, 39, 43, 52, 107, 24, 30, 53, 43, 18, 35, 53, 29, 26, 26, 51, 20, 16, 32, 48, 16, 20, 39, 59, 13, 28, 28, 57, 9, 0, 64, 64, 4, 0, 0, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 41, 46, 50, 88, 47, 48, 51, 151, 47, 48, 51, 182, 48, 49, 51, 208, 51, 51, 51, 255, 74, 74, 74, 255, 98, 98, 98, 255, 144, 144, 144, 255, 167, 167, 167, 255, 188, 188, 188, 255, 209, 209, 209, 255, 192, 192, 192, 255, 167, 167, 167, 255, 191, 191, 191, 255, 169, 169, 169, 255, 162, 162, 162, 255, 128, 128, 128, 255, 95, 95, 95, 255, 47, 49, 51, 214, 45, 47, 51, 177, 41, 45, 50, 138, 40, 44, 51, 105, 19, 31, 50, 41, 20, 29, 49, 26, 20, 39, 59, 13, 0, 51, 51, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 51, 51, 51, 64, 46, 48, 51, 137, 47, 48, 51, 168, 48, 49, 51, 208, 50, 51, 51, 244, 75, 75, 75, 255, 99, 99, 99, 255, 147, 147, 147, 255, 169, 169, 169, 255, 193, 193, 193, 255, 239, 239, 239, 255, 221, 221, 221, 255, 178, 178, 178, 255, 152, 152, 152, 255, 135, 135, 135, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 110, 110, 110, 255, 133, 133, 133, 255, 164, 164, 164, 255, 209, 209, 209, 255, 191, 191, 191, 255, 158, 158, 158, 255, 125, 125, 125, 255, 61, 61, 62, 246, 38, 43, 52, 136, 21, 31, 52, 49, 23, 35, 46, 22,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 64, 51, 51, 51, 96, 46, 48, 51, 155, 49, 49, 51, 207, 50, 51, 51, 244, 76, 76, 76, 255, 100, 100, 100, 255, 149, 149, 149, 255, 173, 173, 173, 255, 197, 197, 197, 255, 244, 244, 244, 255, 243, 243, 243, 255, 242, 242, 242, 255, 241, 241, 241, 255, 240, 240, 240, 255, 239, 239, 239, 255, 237, 237, 237, 255, 220, 220, 220, 255, 186, 186, 186, 255, 152, 152, 152, 255, 118, 118, 118, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 134, 134, 134, 255, 157, 157, 157, 255, 172, 172, 172, 255, 194, 194, 194, 255, 203, 203, 203, 255, 170, 170, 170, 255, 149, 149, 149, 255, 126, 126, 126, 255, 123, 123, 123, 255, 102, 102, 102, 255, 57, 57, 57, 255, 29, 37, 51, 141, 22, 30, 48, 59,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 51, 51, 51, 80, 51, 51, 51, 128, 49, 50, 51, 207, 50, 50, 51, 232, 64, 64, 64, 255, 101, 101, 101, 255, 151, 151, 151, 255, 176, 176, 176, 255, 200, 200, 200, 255, 249, 249, 249, 255, 248, 248, 248, 255, 247, 247, 247, 255, 246, 246, 246, 255, 245, 245, 245, 255, 244, 244, 244, 255, 243, 243, 243, 255, 242, 242, 242, 255, 241, 241, 241, 255, 240, 240, 240, 255, 239, 239, 239, 255, 237, 237, 237, 255, 237, 237, 237, 255, 236, 236, 236, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 215, 215, 215, 255, 198, 198, 198, 255, 214, 214, 214, 255, 195, 195, 195, 255, 172, 172, 172, 255, 146, 146, 146, 255, 121, 121, 121, 255, 114, 114, 114, 255, 122, 122, 122, 255, 115, 115, 115, 255, 115, 115, 115, 255, 96, 96, 96, 255, 77, 77, 77, 255, 154, 154, 154, 255, 109, 109, 109, 255, 43, 46, 51, 230, 19, 29, 51, 106,
+ 0, 0, 0, 0, 0, 0, 0, 0, 46, 48, 50, 96, 78, 79, 79, 229, 128, 128, 128, 255, 77, 77, 77, 255, 115, 115, 115, 255, 204, 204, 204, 255, 241, 241, 241, 255, 253, 253, 253, 255, 214, 214, 214, 255, 176, 176, 176, 255, 177, 177, 177, 255, 164, 164, 164, 255, 202, 202, 202, 255, 151, 151, 151, 255, 200, 200, 200, 255, 172, 172, 172, 255, 220, 220, 220, 255, 243, 243, 243, 255, 242, 242, 242, 255, 241, 241, 241, 255, 240, 240, 240, 255, 239, 239, 239, 255, 237, 237, 237, 255, 237, 237, 237, 255, 236, 236, 236, 255, 234, 234, 234, 255, 234, 234, 234, 255, 199, 199, 199, 255, 164, 164, 164, 255, 137, 137, 137, 255, 123, 123, 123, 255, 104, 104, 104, 255, 124, 124, 124, 255, 123, 123, 123, 255, 110, 110, 110, 255, 90, 90, 90, 255, 71, 71, 71, 255, 51, 51, 51, 255, 51, 51, 51, 255, 54, 54, 54, 255, 64, 64, 64, 255, 61, 61, 61, 255, 157, 157, 157, 255, 130, 130, 130, 255, 43, 46, 51, 244, 18, 30, 51, 145,
+ 0, 0, 0, 0, 46, 47, 51, 97, 127, 127, 127, 255, 242, 242, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 216, 216, 255, 178, 178, 178, 255, 165, 165, 165, 255, 101, 101, 101, 255, 87, 87, 87, 255, 234, 234, 234, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 234, 234, 234, 255, 75, 75, 75, 255, 159, 159, 159, 255, 241, 241, 241, 255, 240, 240, 240, 255, 239, 239, 239, 255, 237, 237, 237, 255, 190, 190, 190, 255, 155, 155, 155, 255, 120, 120, 120, 255, 125, 125, 125, 255, 99, 99, 99, 255, 126, 126, 126, 255, 146, 146, 146, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 78, 78, 78, 255, 57, 57, 57, 255, 67, 67, 67, 255, 77, 77, 77, 255, 86, 86, 86, 255, 96, 96, 96, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 160, 160, 160, 255, 133, 133, 133, 255, 43, 46, 51, 248, 19, 28, 52, 163,
+ 51, 51, 51, 16, 63, 63, 64, 243, 240, 240, 240, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 64, 64, 64, 255, 63, 63, 63, 255, 131, 131, 131, 255, 174, 174, 174, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 174, 174, 174, 255, 120, 120, 120, 255, 51, 51, 51, 255, 86, 86, 86, 255, 157, 157, 157, 255, 122, 122, 122, 255, 115, 115, 115, 255, 100, 100, 100, 255, 121, 121, 121, 255, 142, 142, 142, 255, 163, 163, 163, 255, 163, 163, 163, 255, 147, 147, 147, 255, 136, 136, 136, 255, 128, 128, 128, 255, 128, 128, 128, 255, 163, 163, 163, 255, 163, 163, 163, 255, 163, 163, 163, 255, 125, 125, 125, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 163, 163, 163, 255, 135, 135, 135, 255, 43, 46, 51, 249, 18, 29, 52, 168,
+ 51, 51, 51, 96, 126, 126, 126, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 227, 227, 227, 255, 139, 139, 139, 255, 89, 89, 89, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 73, 73, 73, 255, 102, 102, 102, 255, 123, 123, 123, 255, 144, 144, 144, 255, 166, 166, 166, 255, 166, 166, 166, 255, 166, 166, 166, 255, 166, 166, 166, 255, 166, 166, 166, 255, 166, 166, 166, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 118, 118, 118, 255, 166, 166, 166, 255, 166, 166, 166, 255, 166, 166, 166, 255, 134, 134, 134, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 96, 96, 96, 255, 86, 86, 86, 255, 77, 77, 77, 255, 74, 74, 74, 255, 87, 87, 87, 255, 166, 166, 166, 255, 137, 137, 137, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 175, 157, 157, 157, 255, 244, 244, 244, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 225, 225, 225, 255, 98, 98, 98, 255, 153, 153, 153, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 102, 102, 102, 255, 102, 102, 102, 255, 114, 114, 114, 255, 123, 123, 123, 255, 143, 143, 143, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 122, 122, 122, 255, 73, 73, 73, 255, 78, 78, 78, 255, 91, 91, 91, 255, 110, 110, 110, 255, 131, 131, 131, 255, 153, 153, 153, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 139, 139, 139, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 191, 152, 152, 152, 255, 153, 153, 153, 255, 177, 177, 177, 255, 207, 207, 207, 255, 237, 237, 237, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 88, 88, 88, 255, 156, 156, 156, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 154, 154, 154, 255, 171, 171, 171, 255, 197, 197, 197, 255, 224, 224, 224, 255, 239, 239, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 239, 239, 255, 209, 209, 209, 255, 185, 185, 185, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 141, 141, 141, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 191, 174, 174, 174, 255, 229, 229, 229, 255, 194, 194, 194, 255, 165, 165, 165, 255, 153, 153, 153, 255, 171, 171, 171, 255, 206, 206, 206, 255, 229, 229, 229, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 186, 186, 186, 255, 82, 82, 82, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 193, 193, 193, 255, 241, 241, 241, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 231, 231, 231, 255, 184, 184, 184, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 143, 143, 143, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 191, 149, 149, 149, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 229, 229, 229, 255, 200, 200, 200, 255, 170, 170, 170, 255, 153, 153, 153, 255, 165, 165, 165, 255, 229, 229, 229, 255, 246, 246, 246, 255, 246, 246, 246, 255, 149, 149, 149, 255, 67, 67, 67, 255, 114, 114, 114, 255, 153, 153, 153, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 216, 216, 216, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 235, 235, 235, 255, 198, 198, 198, 255, 235, 235, 235, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 242, 242, 242, 255, 190, 190, 190, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 146, 146, 146, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 191, 148, 148, 148, 255, 245, 245, 245, 255, 245, 245, 245, 255, 182, 182, 182, 255, 233, 233, 233, 255, 245, 245, 245, 255, 245, 245, 245, 255, 233, 233, 233, 255, 153, 153, 153, 255, 222, 222, 222, 255, 245, 245, 245, 255, 245, 245, 245, 255, 199, 199, 199, 255, 170, 170, 170, 255, 170, 170, 170, 255, 147, 147, 147, 255, 110, 110, 110, 255, 140, 140, 140, 255, 180, 180, 180, 255, 180, 180, 180, 255, 180, 180, 180, 255, 180, 180, 180, 255, 180, 180, 180, 255, 180, 180, 180, 255, 218, 218, 218, 255, 242, 242, 242, 255, 242, 242, 242, 255, 242, 242, 242, 255, 230, 230, 230, 255, 147, 147, 147, 255, 75, 75, 75, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 75, 75, 75, 255, 147, 147, 147, 255, 242, 242, 242, 255, 242, 242, 242, 255, 238, 238, 238, 255, 188, 188, 188, 255, 180, 180, 180, 255, 180, 180, 180, 255, 180, 180, 180, 255, 180, 180, 180, 255, 148, 148, 148, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 191, 147, 147, 147, 255, 243, 243, 243, 255, 243, 243, 243, 255, 153, 153, 153, 255, 221, 221, 221, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 153, 153, 153, 255, 221, 221, 221, 255, 243, 243, 243, 255, 243, 243, 243, 255, 198, 198, 198, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 169, 169, 169, 255, 113, 113, 113, 255, 183, 183, 183, 255, 183, 183, 183, 255, 183, 183, 183, 255, 183, 183, 183, 255, 207, 207, 207, 255, 237, 237, 237, 255, 237, 237, 237, 255, 237, 237, 237, 255, 191, 191, 191, 255, 63, 63, 63, 255, 51, 51, 51, 255, 70, 70, 70, 255, 96, 96, 96, 255, 102, 102, 102, 255, 96, 96, 96, 255, 64, 64, 64, 255, 51, 51, 51, 255, 86, 86, 86, 255, 226, 226, 226, 255, 237, 237, 237, 255, 223, 223, 223, 255, 183, 183, 183, 255, 183, 183, 183, 255, 183, 183, 183, 255, 183, 183, 183, 255, 150, 150, 150, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 191, 146, 146, 146, 255, 242, 242, 242, 255, 242, 242, 242, 255, 153, 153, 153, 255, 219, 219, 219, 255, 242, 242, 242, 255, 242, 242, 242, 255, 242, 242, 242, 255, 153, 153, 153, 255, 219, 219, 219, 255, 242, 242, 242, 255, 242, 242, 242, 255, 197, 197, 197, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 191, 191, 191, 255, 119, 119, 119, 255, 186, 186, 186, 255, 186, 186, 186, 255, 192, 192, 192, 255, 233, 233, 233, 255, 233, 233, 233, 255, 233, 233, 233, 255, 188, 188, 188, 255, 51, 51, 51, 255, 63, 63, 63, 255, 127, 127, 127, 255, 152, 152, 152, 255, 152, 152, 152, 255, 152, 152, 152, 255, 152, 152, 152, 255, 152, 152, 152, 255, 107, 107, 107, 255, 57, 57, 57, 255, 85, 85, 85, 255, 222, 222, 222, 255, 233, 233, 233, 255, 204, 204, 204, 255, 186, 186, 186, 255, 186, 186, 186, 255, 186, 186, 186, 255, 152, 152, 152, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 191, 146, 146, 146, 255, 240, 240, 240, 255, 240, 240, 240, 255, 153, 153, 153, 255, 218, 218, 218, 255, 240, 240, 240, 255, 240, 240, 240, 255, 240, 240, 240, 255, 153, 153, 153, 255, 218, 218, 218, 255, 240, 240, 240, 255, 240, 240, 240, 255, 197, 197, 197, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 85, 85, 85, 255, 188, 188, 188, 255, 188, 188, 188, 255, 218, 218, 218, 255, 228, 228, 228, 255, 228, 228, 228, 255, 206, 206, 206, 255, 62, 62, 62, 255, 69, 69, 69, 255, 142, 142, 142, 255, 136, 136, 136, 255, 88, 88, 88, 255, 57, 57, 57, 255, 51, 51, 51, 255, 63, 63, 63, 255, 100, 100, 100, 255, 148, 148, 148, 255, 124, 124, 124, 255, 51, 51, 51, 255, 140, 140, 140, 255, 228, 228, 228, 255, 221, 221, 221, 255, 188, 188, 188, 255, 188, 188, 188, 255, 188, 188, 188, 255, 154, 154, 154, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 191, 145, 145, 145, 255, 239, 239, 239, 255, 239, 239, 239, 255, 153, 153, 153, 255, 217, 217, 217, 255, 239, 239, 239, 255, 239, 239, 239, 255, 239, 239, 239, 255, 153, 153, 153, 255, 217, 217, 217, 255, 239, 239, 239, 255, 239, 239, 239, 255, 196, 196, 196, 255, 170, 170, 170, 255, 181, 181, 181, 255, 179, 179, 179, 255, 217, 217, 217, 255, 242, 242, 242, 255, 255, 255, 255, 255, 86, 86, 86, 255, 191, 191, 191, 255, 197, 197, 197, 255, 225, 225, 225, 255, 225, 225, 225, 255, 225, 225, 225, 255, 106, 106, 106, 255, 57, 57, 57, 255, 139, 139, 139, 255, 127, 127, 127, 255, 57, 57, 57, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 69, 69, 69, 255, 145, 145, 145, 255, 98, 98, 98, 255, 62, 62, 62, 255, 214, 214, 214, 255, 225, 225, 225, 255, 195, 195, 195, 255, 191, 191, 191, 255, 191, 191, 191, 255, 156, 156, 156, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 191, 144, 144, 144, 255, 237, 237, 237, 255, 237, 237, 237, 255, 153, 153, 153, 255, 216, 216, 216, 255, 237, 237, 237, 255, 237, 237, 237, 255, 237, 237, 237, 255, 153, 153, 153, 255, 216, 216, 216, 255, 237, 237, 237, 255, 237, 237, 237, 255, 195, 195, 195, 255, 170, 170, 170, 255, 172, 172, 172, 255, 153, 153, 153, 255, 204, 204, 204, 255, 242, 242, 242, 255, 255, 255, 255, 255, 87, 87, 87, 255, 194, 194, 194, 255, 209, 209, 209, 255, 221, 221, 221, 255, 221, 221, 221, 255, 200, 200, 200, 255, 51, 51, 51, 255, 107, 107, 107, 255, 135, 135, 135, 255, 57, 57, 57, 255, 51, 51, 51, 255, 67, 67, 67, 255, 96, 96, 96, 255, 102, 102, 102, 255, 89, 89, 89, 255, 61, 61, 61, 255, 51, 51, 51, 255, 96, 96, 96, 255, 130, 130, 130, 255, 51, 51, 51, 255, 157, 157, 157, 255, 221, 221, 221, 255, 204, 204, 204, 255, 194, 194, 194, 255, 194, 194, 194, 255, 158, 158, 158, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 191, 143, 143, 143, 255, 236, 236, 236, 255, 236, 236, 236, 255, 153, 153, 153, 255, 215, 215, 215, 255, 236, 236, 236, 255, 236, 236, 236, 255, 220, 220, 220, 255, 153, 153, 153, 255, 215, 215, 215, 255, 236, 236, 236, 255, 236, 236, 236, 255, 194, 194, 194, 255, 170, 170, 170, 255, 185, 185, 185, 255, 191, 191, 191, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 88, 88, 88, 255, 197, 197, 197, 255, 213, 213, 213, 255, 216, 216, 216, 255, 216, 216, 216, 255, 133, 133, 133, 255, 56, 56, 56, 255, 137, 137, 137, 255, 83, 83, 83, 255, 51, 51, 51, 255, 70, 70, 70, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 99, 99, 99, 255, 54, 54, 54, 255, 56, 56, 56, 255, 137, 137, 137, 255, 73, 73, 73, 255, 133, 133, 133, 255, 216, 216, 216, 255, 206, 206, 206, 255, 197, 197, 197, 255, 197, 197, 197, 255, 161, 161, 161, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 191, 143, 143, 143, 255, 234, 234, 234, 255, 234, 234, 234, 255, 153, 153, 153, 255, 214, 214, 214, 255, 234, 234, 234, 255, 234, 234, 234, 255, 214, 214, 214, 255, 153, 153, 153, 255, 214, 214, 214, 255, 234, 234, 234, 255, 234, 234, 234, 255, 194, 194, 194, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 88, 88, 88, 255, 201, 201, 201, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 91, 91, 91, 255, 77, 77, 77, 255, 133, 133, 133, 255, 56, 56, 56, 255, 54, 54, 54, 255, 99, 99, 99, 255, 89, 107, 120, 255, 13, 140, 230, 255, 0, 147, 249, 255, 51, 123, 174, 255, 102, 102, 102, 255, 73, 73, 73, 255, 51, 51, 51, 255, 118, 118, 118, 255, 82, 82, 82, 255, 91, 91, 91, 255, 211, 211, 211, 255, 206, 206, 206, 255, 200, 200, 200, 255, 200, 200, 200, 255, 163, 163, 163, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 143, 142, 142, 142, 255, 233, 233, 233, 255, 233, 233, 233, 255, 153, 153, 153, 255, 213, 213, 213, 255, 233, 233, 233, 255, 233, 233, 233, 255, 213, 213, 213, 255, 153, 153, 153, 255, 213, 213, 213, 255, 233, 233, 233, 255, 233, 233, 233, 255, 193, 193, 193, 255, 170, 170, 170, 255, 187, 187, 187, 255, 194, 194, 194, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 89, 89, 89, 255, 204, 204, 204, 255, 207, 207, 207, 255, 207, 207, 207, 255, 207, 207, 207, 255, 61, 61, 61, 255, 90, 90, 90, 255, 114, 114, 114, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 38, 113, 177, 255, 0, 122, 224, 255, 0, 122, 224, 255, 0, 122, 224, 255, 102, 102, 102, 255, 77, 77, 77, 255, 51, 51, 51, 255, 110, 110, 110, 255, 90, 90, 90, 255, 90, 90, 90, 255, 207, 207, 207, 255, 205, 205, 205, 255, 203, 203, 203, 255, 203, 203, 203, 255, 165, 165, 165, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 128, 141, 141, 141, 255, 231, 231, 231, 255, 231, 231, 231, 255, 153, 153, 153, 255, 212, 212, 212, 255, 231, 231, 231, 255, 231, 231, 231, 255, 212, 212, 212, 255, 153, 153, 153, 255, 212, 212, 212, 255, 231, 231, 231, 255, 231, 231, 231, 255, 192, 192, 192, 255, 170, 170, 170, 255, 172, 172, 172, 255, 153, 153, 153, 255, 208, 208, 208, 255, 242, 242, 242, 255, 255, 255, 255, 255, 90, 90, 90, 255, 205, 205, 205, 255, 203, 203, 203, 255, 203, 203, 203, 255, 203, 203, 203, 255, 51, 51, 51, 255, 89, 89, 89, 255, 108, 108, 108, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 26, 93, 169, 255, 0, 90, 192, 255, 0, 90, 192, 255, 0, 90, 192, 255, 102, 102, 102, 255, 77, 77, 77, 255, 51, 51, 51, 255, 113, 113, 113, 255, 80, 80, 80, 255, 108, 108, 108, 255, 203, 203, 203, 255, 204, 204, 204, 255, 206, 206, 206, 255, 206, 206, 206, 255, 167, 167, 167, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 128, 140, 140, 140, 255, 230, 230, 230, 255, 230, 230, 230, 255, 153, 153, 153, 255, 211, 211, 211, 255, 230, 230, 230, 255, 230, 230, 230, 255, 211, 211, 211, 255, 153, 153, 153, 255, 211, 211, 211, 255, 230, 230, 230, 255, 230, 230, 230, 255, 191, 191, 191, 255, 170, 170, 170, 255, 181, 181, 181, 255, 175, 175, 175, 255, 217, 217, 217, 255, 242, 242, 242, 255, 255, 255, 255, 255, 90, 90, 90, 255, 206, 206, 206, 255, 198, 198, 198, 255, 198, 198, 198, 255, 198, 198, 198, 255, 51, 51, 51, 255, 87, 87, 87, 255, 109, 109, 109, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 64, 86, 124, 255, 0, 58, 160, 255, 0, 58, 160, 255, 45, 78, 136, 255, 102, 102, 102, 255, 67, 67, 67, 255, 55, 55, 55, 255, 123, 123, 123, 255, 65, 65, 65, 255, 125, 125, 125, 255, 198, 198, 198, 255, 204, 204, 204, 255, 209, 209, 209, 255, 209, 209, 209, 255, 169, 169, 169, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 128, 140, 140, 140, 255, 229, 229, 229, 255, 229, 229, 229, 255, 153, 153, 153, 255, 210, 210, 210, 255, 229, 229, 229, 255, 229, 229, 229, 255, 210, 210, 210, 255, 153, 153, 153, 255, 210, 210, 210, 255, 229, 229, 229, 255, 229, 229, 229, 255, 191, 191, 191, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 91, 91, 91, 255, 207, 207, 207, 255, 194, 194, 194, 255, 194, 194, 194, 255, 194, 194, 194, 255, 78, 78, 78, 255, 81, 81, 81, 255, 119, 119, 119, 255, 55, 55, 55, 255, 51, 51, 51, 255, 96, 96, 96, 255, 102, 102, 102, 255, 83, 92, 112, 255, 77, 89, 115, 255, 102, 102, 102, 255, 89, 89, 89, 255, 51, 51, 51, 255, 76, 76, 76, 255, 111, 111, 111, 255, 51, 51, 51, 255, 167, 167, 167, 255, 194, 194, 194, 255, 207, 207, 207, 255, 212, 212, 212, 255, 212, 212, 212, 255, 171, 171, 171, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 128, 139, 139, 139, 255, 227, 227, 227, 255, 227, 227, 227, 255, 153, 153, 153, 255, 208, 208, 208, 255, 227, 227, 227, 255, 227, 227, 227, 255, 208, 208, 208, 255, 153, 153, 153, 255, 222, 222, 222, 255, 227, 227, 227, 255, 227, 227, 227, 255, 190, 190, 190, 255, 170, 170, 170, 255, 187, 187, 187, 255, 191, 191, 191, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 92, 92, 92, 255, 210, 210, 210, 255, 189, 189, 189, 255, 189, 189, 189, 255, 189, 189, 189, 255, 103, 103, 103, 255, 59, 59, 59, 255, 115, 115, 115, 255, 79, 79, 79, 255, 51, 51, 51, 255, 61, 61, 61, 255, 92, 92, 92, 255, 102, 102, 102, 255, 102, 102, 102, 255, 83, 83, 83, 255, 54, 54, 54, 255, 55, 55, 55, 255, 107, 107, 107, 255, 83, 83, 83, 255, 68, 68, 68, 255, 189, 189, 189, 255, 191, 191, 191, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 174, 174, 174, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 128, 138, 138, 138, 255, 226, 226, 226, 255, 226, 226, 226, 255, 153, 153, 153, 255, 207, 207, 207, 255, 226, 226, 226, 255, 226, 226, 226, 255, 207, 207, 207, 255, 153, 153, 153, 255, 226, 226, 226, 255, 226, 226, 226, 255, 226, 226, 226, 255, 189, 189, 189, 255, 170, 170, 170, 255, 176, 176, 176, 255, 153, 153, 153, 255, 204, 204, 204, 255, 242, 242, 242, 255, 255, 255, 255, 255, 93, 93, 93, 255, 218, 218, 218, 255, 186, 186, 186, 255, 184, 184, 184, 255, 184, 184, 184, 255, 151, 151, 151, 255, 51, 51, 51, 255, 93, 93, 93, 255, 108, 108, 108, 255, 62, 62, 62, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 89, 89, 89, 255, 105, 105, 105, 255, 55, 55, 55, 255, 142, 142, 142, 255, 184, 184, 184, 255, 197, 197, 197, 255, 218, 218, 218, 255, 218, 218, 218, 255, 218, 218, 218, 255, 176, 176, 176, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 128, 137, 137, 137, 255, 224, 224, 224, 255, 224, 224, 224, 255, 153, 153, 153, 255, 206, 206, 206, 255, 224, 224, 224, 255, 224, 224, 224, 255, 206, 206, 206, 255, 153, 153, 153, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 188, 188, 188, 255, 170, 170, 170, 255, 183, 183, 183, 255, 179, 179, 179, 255, 217, 217, 217, 255, 242, 242, 242, 255, 255, 255, 255, 255, 93, 93, 93, 255, 221, 221, 221, 255, 196, 196, 196, 255, 181, 181, 181, 255, 181, 181, 181, 255, 181, 181, 181, 255, 84, 84, 84, 255, 58, 58, 58, 255, 105, 105, 105, 255, 104, 104, 104, 255, 72, 72, 72, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 65, 65, 65, 255, 97, 97, 97, 255, 105, 105, 105, 255, 62, 62, 62, 255, 92, 92, 92, 255, 181, 181, 181, 255, 181, 181, 181, 255, 213, 213, 213, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 178, 178, 178, 255, 43, 46, 51, 249, 18, 29, 51, 169,
+ 51, 51, 51, 128, 137, 137, 137, 255, 223, 223, 223, 255, 223, 223, 223, 255, 153, 153, 153, 255, 205, 205, 205, 255, 223, 223, 223, 255, 223, 223, 223, 255, 205, 205, 205, 255, 153, 153, 153, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 188, 188, 188, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 94, 94, 94, 255, 223, 223, 223, 255, 211, 211, 211, 255, 176, 176, 176, 255, 176, 176, 176, 255, 176, 176, 176, 255, 160, 160, 160, 255, 59, 59, 59, 255, 61, 61, 61, 255, 94, 94, 94, 255, 104, 104, 104, 255, 104, 104, 104, 255, 104, 104, 104, 255, 104, 104, 104, 255, 104, 104, 104, 255, 91, 91, 91, 255, 58, 58, 58, 255, 74, 74, 74, 255, 168, 168, 168, 255, 176, 176, 176, 255, 191, 191, 191, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 169, 169, 169, 255, 43, 46, 51, 249, 18, 29, 52, 167,
+ 51, 51, 51, 128, 136, 136, 136, 255, 221, 221, 221, 255, 221, 221, 221, 255, 153, 153, 153, 255, 204, 204, 204, 255, 221, 221, 221, 255, 221, 221, 221, 255, 204, 204, 204, 255, 153, 153, 153, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 187, 187, 187, 255, 170, 170, 170, 255, 187, 187, 187, 255, 191, 191, 191, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 95, 95, 95, 255, 226, 226, 226, 255, 226, 226, 226, 255, 186, 186, 186, 255, 172, 172, 172, 255, 172, 172, 172, 255, 172, 172, 172, 255, 149, 149, 149, 255, 66, 66, 66, 255, 51, 51, 51, 255, 67, 67, 67, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 64, 64, 64, 255, 51, 51, 51, 255, 89, 89, 89, 255, 164, 164, 164, 255, 172, 172, 172, 255, 176, 176, 176, 255, 222, 222, 222, 255, 226, 226, 226, 255, 226, 226, 226, 255, 226, 226, 226, 255, 226, 226, 226, 255, 127, 127, 127, 255, 35, 40, 51, 240, 19, 29, 51, 159,
+ 51, 51, 51, 128, 106, 106, 106, 255, 219, 219, 219, 255, 219, 219, 219, 255, 203, 203, 203, 255, 211, 211, 211, 255, 219, 219, 219, 255, 219, 219, 219, 255, 203, 203, 203, 255, 153, 153, 153, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 186, 186, 186, 255, 170, 170, 170, 255, 174, 174, 174, 255, 153, 153, 153, 255, 204, 204, 204, 255, 242, 242, 242, 255, 217, 217, 217, 255, 95, 95, 95, 255, 229, 229, 229, 255, 229, 229, 229, 255, 217, 217, 217, 255, 171, 171, 171, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 160, 160, 160, 255, 109, 109, 109, 255, 73, 73, 73, 255, 51, 51, 51, 255, 51, 51, 51, 255, 58, 58, 58, 255, 87, 87, 87, 255, 138, 138, 138, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 214, 214, 214, 255, 229, 229, 229, 255, 229, 229, 229, 255, 229, 229, 229, 255, 229, 229, 229, 255, 218, 218, 218, 255, 62, 62, 62, 255, 21, 31, 51, 216, 18, 30, 50, 138,
+ 51, 51, 51, 128, 96, 96, 96, 255, 161, 161, 161, 255, 194, 194, 194, 255, 218, 218, 218, 255, 218, 218, 218, 255, 218, 218, 218, 255, 218, 218, 218, 255, 202, 202, 202, 255, 153, 153, 153, 255, 218, 218, 218, 255, 218, 218, 218, 255, 218, 218, 218, 255, 186, 186, 186, 255, 170, 170, 170, 255, 183, 183, 183, 255, 172, 172, 172, 255, 217, 217, 217, 255, 242, 242, 242, 255, 204, 204, 204, 255, 96, 96, 96, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 206, 206, 206, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 167, 167, 167, 255, 206, 206, 206, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 220, 220, 220, 255, 164, 164, 164, 255, 85, 85, 85, 255, 34, 40, 51, 241, 17, 28, 51, 179, 20, 30, 50, 103,
+ 51, 51, 51, 128, 88, 88, 88, 255, 177, 177, 177, 255, 153, 153, 153, 255, 161, 161, 161, 255, 188, 188, 188, 255, 212, 212, 212, 255, 216, 216, 216, 255, 200, 200, 200, 255, 153, 153, 153, 255, 216, 216, 216, 255, 216, 216, 216, 255, 216, 216, 216, 255, 185, 185, 185, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 204, 204, 204, 255, 97, 97, 97, 255, 235, 235, 235, 255, 235, 235, 235, 255, 235, 235, 235, 255, 235, 235, 235, 255, 211, 211, 211, 255, 163, 163, 163, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 168, 168, 168, 255, 221, 221, 221, 255, 235, 235, 235, 255, 223, 223, 223, 255, 165, 165, 165, 255, 108, 108, 108, 255, 49, 50, 51, 254, 38, 42, 51, 247, 25, 34, 52, 227, 17, 28, 51, 185, 18, 30, 51, 129, 20, 28, 49, 63,
+ 51, 51, 51, 128, 92, 92, 92, 255, 215, 215, 215, 255, 211, 211, 211, 255, 184, 184, 184, 255, 157, 157, 157, 255, 157, 157, 157, 255, 184, 184, 184, 255, 196, 196, 196, 255, 153, 153, 153, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 184, 184, 184, 255, 170, 170, 170, 255, 187, 187, 187, 255, 194, 194, 194, 255, 221, 221, 221, 255, 242, 242, 242, 255, 204, 204, 204, 255, 144, 144, 144, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 233, 233, 233, 255, 185, 185, 185, 255, 158, 158, 158, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 164, 164, 164, 255, 206, 206, 206, 255, 214, 214, 214, 255, 167, 167, 167, 255, 109, 109, 109, 255, 49, 50, 51, 254, 38, 42, 51, 247, 27, 35, 51, 232, 15, 28, 50, 202, 16, 28, 51, 179, 17, 29, 51, 151, 18, 29, 52, 113, 23, 30, 49, 67, 19, 28, 47, 27,
+ 51, 51, 51, 96, 92, 92, 92, 255, 213, 213, 213, 255, 213, 213, 213, 255, 213, 213, 213, 255, 209, 209, 209, 255, 183, 183, 183, 255, 157, 157, 157, 255, 153, 153, 153, 255, 153, 153, 153, 255, 213, 213, 213, 255, 213, 213, 213, 255, 213, 213, 213, 255, 183, 183, 183, 255, 170, 170, 170, 255, 174, 174, 174, 255, 153, 153, 153, 255, 204, 204, 204, 255, 242, 242, 242, 255, 204, 204, 204, 255, 146, 146, 146, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 219, 219, 219, 255, 219, 219, 219, 255, 214, 214, 214, 255, 219, 219, 219, 255, 206, 206, 206, 255, 157, 157, 157, 255, 86, 86, 86, 255, 49, 50, 51, 254, 38, 42, 51, 247, 27, 35, 51, 232, 15, 28, 50, 202, 16, 28, 51, 180, 16, 28, 51, 155, 16, 29, 51, 125, 16, 30, 52, 93, 19, 30, 53, 68, 23, 29, 52, 44, 23, 35, 58, 22, 32, 32, 64, 8,
+ 51, 51, 51, 32, 71, 71, 71, 255, 212, 212, 212, 255, 212, 212, 212, 255, 212, 212, 212, 255, 212, 212, 212, 255, 212, 212, 212, 255, 209, 209, 209, 255, 183, 183, 183, 255, 157, 157, 157, 255, 212, 212, 212, 255, 212, 212, 212, 255, 212, 212, 212, 255, 183, 183, 183, 255, 170, 170, 170, 255, 183, 183, 183, 255, 172, 172, 172, 255, 217, 217, 217, 255, 242, 242, 242, 255, 204, 204, 204, 255, 147, 147, 147, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 219, 219, 219, 255, 159, 159, 159, 255, 87, 87, 87, 255, 51, 51, 51, 255, 40, 44, 51, 249, 30, 37, 51, 236, 15, 27, 51, 205, 15, 28, 51, 181, 16, 28, 51, 155, 16, 29, 51, 125, 16, 30, 52, 94, 18, 30, 52, 69, 21, 31, 52, 49, 17, 34, 51, 30, 14, 28, 57, 18, 26, 26, 51, 10, 0, 64, 64, 4, 0, 0, 0, 1,
+ 0, 0, 0, 0, 47, 48, 51, 222, 111, 111, 111, 255, 201, 201, 201, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 182, 182, 182, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 166, 166, 166, 255, 185, 185, 185, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 222, 222, 222, 255, 161, 161, 161, 255, 88, 88, 88, 255, 51, 51, 51, 255, 40, 44, 51, 249, 30, 37, 51, 236, 18, 29, 51, 210, 15, 28, 51, 185, 17, 29, 51, 161, 18, 30, 51, 129, 16, 29, 50, 96, 18, 29, 51, 70, 21, 31, 52, 49, 17, 34, 51, 30, 14, 28, 57, 18, 23, 23, 46, 11, 0, 51, 51, 5, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 26, 33, 49, 89, 44, 46, 51, 221, 71, 71, 71, 255, 160, 160, 160, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 181, 181, 181, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 230, 230, 230, 255, 101, 101, 101, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 212, 212, 212, 255, 138, 138, 138, 255, 76, 76, 76, 255, 51, 51, 51, 255, 40, 44, 51, 249, 30, 37, 51, 236, 18, 29, 51, 210, 15, 28, 51, 185, 17, 29, 51, 161, 17, 29, 50, 132, 18, 30, 50, 101, 20, 31, 51, 75, 20, 29, 49, 52, 16, 33, 49, 31, 13, 27, 54, 19, 23, 23, 46, 11, 0, 51, 51, 5, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 28, 48, 37, 20, 32, 52, 89, 32, 39, 51, 183, 47, 49, 51, 248, 90, 90, 90, 255, 188, 188, 188, 255, 208, 208, 208, 255, 208, 208, 208, 255, 208, 208, 208, 255, 208, 208, 208, 255, 208, 208, 208, 255, 208, 208, 208, 255, 170, 170, 170, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 134, 134, 134, 255, 214, 214, 214, 255, 252, 252, 252, 255, 214, 214, 214, 255, 139, 139, 139, 255, 76, 76, 76, 255, 51, 51, 51, 255, 40, 44, 51, 249, 30, 37, 51, 236, 18, 29, 51, 210, 15, 28, 51, 185, 17, 29, 51, 161, 17, 29, 50, 132, 18, 30, 50, 101, 20, 31, 51, 75, 19, 33, 52, 54, 23, 30, 53, 34, 24, 36, 49, 21, 21, 43, 43, 12, 0, 43, 43, 6, 0, 0, 128, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 20, 20, 39, 13, 21, 34, 48, 37, 20, 29, 52, 78, 18, 28, 51, 126, 37, 42, 51, 213, 49, 50, 51, 252, 129, 129, 129, 255, 197, 197, 197, 255, 206, 206, 206, 255, 206, 206, 206, 255, 206, 206, 206, 255, 206, 206, 206, 255, 166, 166, 166, 255, 170, 170, 170, 255, 187, 187, 187, 255, 194, 194, 194, 255, 166, 166, 166, 255, 179, 179, 179, 255, 140, 140, 140, 255, 77, 77, 77, 255, 51, 51, 51, 255, 40, 44, 51, 249, 30, 37, 51, 236, 18, 29, 51, 210, 15, 28, 51, 185, 17, 29, 51, 161, 17, 29, 50, 132, 18, 30, 50, 101, 20, 31, 51, 75, 19, 33, 52, 54, 23, 30, 53, 34, 24, 36, 49, 21, 20, 39, 59, 13, 36, 36, 36, 7, 0, 0, 85, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 26, 26, 51, 10, 19, 28, 47, 27, 19, 28, 52, 54, 19, 30, 52, 93, 20, 31, 51, 147, 40, 44, 51, 228, 70, 70, 70, 255, 148, 148, 148, 255, 205, 205, 205, 255, 205, 205, 205, 255, 205, 205, 205, 255, 166, 166, 166, 255, 163, 163, 163, 255, 128, 128, 128, 255, 61, 61, 61, 255, 51, 51, 51, 255, 51, 51, 51, 255, 40, 44, 51, 249, 30, 37, 51, 236, 18, 29, 51, 210, 15, 28, 51, 185, 17, 29, 51, 161, 17, 29, 50, 132, 18, 30, 50, 101, 20, 31, 51, 75, 19, 33, 52, 54, 23, 30, 53, 34, 24, 36, 49, 21, 20, 39, 59, 13, 36, 36, 36, 7, 0, 0, 85, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 51, 51, 5, 18, 36, 55, 14, 15, 31, 54, 33, 20, 28, 52, 64, 17, 29, 51, 104, 27, 35, 51, 171, 44, 46, 51, 239, 70, 70, 70, 255, 118, 118, 118, 255, 128, 128, 128, 255, 80, 80, 80, 255, 51, 51, 51, 255, 49, 50, 51, 254, 38, 42, 51, 247, 30, 37, 51, 235, 18, 29, 51, 209, 15, 28, 51, 185, 17, 29, 51, 161, 17, 29, 50, 132, 18, 30, 50, 101, 20, 31, 51, 75, 19, 33, 52, 54, 23, 30, 53, 34, 24, 36, 49, 21, 20, 39, 59, 13, 36, 36, 36, 7, 0, 0, 85, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 36, 36, 36, 7, 13, 27, 54, 19, 19, 32, 51, 40, 21, 31, 52, 74, 18, 29, 51, 116, 23, 32, 51, 168, 27, 35, 52, 200, 27, 34, 51, 211, 26, 34, 51, 214, 23, 33, 52, 209, 15, 27, 51, 190, 16, 28, 51, 175, 16, 28, 51, 156, 18, 29, 51, 131, 18, 30, 50, 101, 20, 31, 51, 75, 19, 33, 52, 54, 23, 30, 53, 34, 24, 36, 49, 21, 20, 39, 59, 13, 36, 36, 36, 7, 0, 0, 85, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 85, 3, 28, 28, 57, 9, 22, 33, 55, 23, 22, 33, 50, 46, 17, 28, 52, 73, 18, 29, 50, 97, 18, 29, 52, 113, 19, 30, 51, 119, 18, 29, 51, 116, 17, 29, 51, 104, 18, 30, 50, 86, 18, 30, 52, 69, 20, 29, 49, 52, 23, 30, 53, 34, 24, 36, 49, 21, 20, 39, 59, 13, 36, 36, 36, 7, 0, 0, 85, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 64, 64, 4, 23, 23, 46, 11, 24, 24, 49, 21, 24, 32, 48, 32, 25, 31, 50, 41, 23, 34, 51, 45, 24, 30, 47, 43, 21, 28, 50, 36, 20, 31, 51, 25, 14, 28, 43, 18, 21, 21, 43, 12, 36, 36, 36, 7, 0, 0, 85, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_DeviceMP3(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 50, 50, 50, 65, 50, 50, 50, 115, 49, 49, 49, 133, 45, 45, 45, 73, 46, 46, 46, 53, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 51, 51, 51, 143, 51, 51, 51, 255, 49, 49, 49, 214, 45, 45, 45, 180, 41, 41, 41, 176, 46, 46, 46, 211, 49, 49, 49, 230, 50, 50, 50, 242, 48, 48, 48, 169, 44, 44, 44, 75, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 207, 48, 48, 48, 187, 14, 14, 14, 115, 0, 0, 0, 133, 0, 0, 0, 122, 0, 0, 0, 103, 0, 0, 0, 98, 0, 0, 0, 112, 11, 11, 11, 144, 34, 34, 34, 192, 50, 50, 50, 245, 47, 47, 47, 206, 31, 31, 31, 53, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 80, 50, 50, 50, 226, 0, 0, 0, 116, 0, 0, 0, 101, 0, 0, 0, 52, 0, 0, 0, 22, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 24, 0, 0, 0, 46, 8, 8, 8, 98, 37, 37, 37, 199, 50, 50, 50, 246, 38, 38, 38, 128, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 146, 41, 41, 41, 160, 0, 0, 0, 122, 0, 0, 0, 37, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 13, 0, 0, 0, 42, 24, 24, 24, 135, 49, 49, 49, 247, 36, 36, 36, 157, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 115, 115, 115, 255, 72, 72, 72, 255, 18, 18, 18, 134, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 19, 24, 24, 24, 104, 49, 49, 49, 247, 33, 33, 33, 150, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 67, 162, 162, 162, 255, 88, 88, 88, 255, 18, 18, 18, 184, 0, 0, 0, 48, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 25, 25, 25, 99, 51, 51, 51, 255, 21, 21, 21, 115, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 129, 129, 129, 255, 77, 77, 77, 255, 17, 17, 17, 194, 0, 0, 0, 58, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 39, 39, 39, 148, 46, 46, 46, 230, 0, 0, 0, 61, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 32, 49, 49, 49, 66, 50, 50, 50, 115, 49, 49, 49, 165, 101, 101, 101, 255, 68, 68, 68, 255, 51, 51, 51, 255, 100, 100, 100, 255, 98, 98, 98, 255, 78, 78, 78, 241, 49, 49, 49, 167, 27, 27, 27, 30, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 49, 49, 49, 234, 29, 29, 29, 166, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 32, 49, 49, 49, 66, 49, 49, 49, 100, 49, 49, 49, 132, 49, 49, 49, 164, 85, 85, 85, 195, 90, 90, 90, 225, 111, 111, 111, 255, 118, 118, 118, 255, 141, 141, 141, 255, 147, 147, 147, 255, 67, 67, 67, 255, 70, 70, 70, 255, 57, 57, 57, 255, 65, 65, 65, 255, 140, 140, 140, 255, 158, 158, 158, 255, 156, 156, 156, 255, 136, 136, 136, 255, 68, 68, 68, 218, 0, 0, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 43, 115, 48, 48, 48, 238, 0, 0, 0, 78, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 102, 102, 102, 159, 98, 98, 98, 225, 123, 123, 123, 255, 132, 132, 132, 255, 160, 160, 160, 255, 167, 167, 167, 255, 193, 193, 193, 255, 199, 199, 199, 255, 196, 196, 196, 255, 191, 191, 191, 255, 186, 186, 186, 255, 183, 183, 183, 255, 177, 177, 177, 255, 174, 174, 174, 255, 167, 167, 167, 255, 163, 163, 163, 255, 159, 159, 159, 255, 153, 153, 153, 255, 153, 153, 153, 255, 155, 155, 155, 255, 157, 157, 157, 255, 160, 160, 160, 255, 106, 106, 106, 255, 17, 17, 17, 146, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 50, 50, 50, 244, 16, 16, 16, 149, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 159, 118, 118, 118, 255, 135, 135, 135, 255, 159, 159, 159, 255, 170, 170, 170, 255, 205, 205, 205, 255, 200, 200, 200, 255, 195, 195, 195, 255, 190, 190, 190, 255, 186, 186, 186, 255, 181, 181, 181, 255, 177, 177, 177, 255, 174, 174, 174, 255, 170, 170, 170, 255, 165, 165, 165, 255, 161, 161, 161, 255, 158, 158, 158, 255, 153, 153, 153, 255, 153, 153, 153, 255, 129, 129, 129, 255, 73, 128, 61, 255, 91, 100, 90, 255, 162, 162, 162, 255, 107, 107, 107, 255, 17, 17, 17, 188, 0, 0, 0, 48, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 171, 34, 34, 34, 193, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 63, 63, 195, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 135, 135, 135, 255, 197, 197, 197, 255, 193, 193, 193, 255, 189, 189, 189, 255, 186, 186, 186, 255, 181, 181, 181, 255, 177, 177, 177, 255, 174, 174, 174, 255, 170, 170, 170, 255, 165, 165, 165, 255, 161, 161, 161, 255, 158, 158, 158, 255, 153, 153, 153, 255, 153, 153, 153, 255, 155, 155, 155, 255, 140, 155, 133, 255, 200, 255, 171, 255, 41, 96, 38, 255, 164, 164, 164, 255, 108, 108, 108, 255, 17, 17, 17, 194, 0, 0, 0, 58, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 105, 45, 45, 45, 217, 0, 0, 0, 85, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 196, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 160, 160, 160, 255, 193, 193, 193, 255, 189, 189, 189, 255, 186, 186, 186, 255, 181, 181, 181, 255, 177, 177, 177, 255, 174, 174, 174, 255, 170, 170, 170, 255, 165, 165, 165, 255, 161, 161, 161, 255, 158, 158, 158, 255, 153, 153, 153, 255, 153, 153, 153, 255, 155, 155, 155, 255, 157, 157, 157, 255, 147, 152, 145, 255, 94, 139, 77, 255, 93, 102, 92, 255, 166, 166, 166, 255, 109, 109, 109, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 45, 45, 55, 49, 49, 49, 232, 0, 0, 0, 113, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 158, 158, 158, 255, 189, 189, 189, 255, 186, 186, 186, 255, 181, 181, 181, 255, 177, 177, 177, 255, 174, 174, 174, 255, 170, 170, 170, 255, 165, 165, 165, 255, 161, 161, 161, 255, 158, 158, 158, 255, 153, 153, 153, 255, 153, 153, 153, 255, 155, 155, 155, 255, 157, 157, 157, 255, 160, 160, 160, 255, 162, 162, 162, 255, 164, 164, 164, 255, 166, 166, 166, 255, 168, 168, 168, 255, 111, 111, 111, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 51, 51, 51, 255, 0, 0, 0, 130, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 154, 154, 154, 255, 186, 186, 186, 255, 181, 181, 181, 255, 177, 177, 177, 255, 174, 174, 174, 255, 170, 170, 170, 255, 165, 165, 165, 255, 161, 161, 161, 255, 158, 158, 158, 255, 153, 153, 153, 255, 147, 147, 147, 255, 142, 142, 142, 255, 133, 133, 133, 255, 131, 131, 131, 255, 117, 117, 117, 255, 117, 117, 117, 255, 122, 122, 122, 255, 143, 143, 143, 255, 171, 171, 171, 255, 112, 112, 112, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 255, 0, 0, 0, 140, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 152, 152, 152, 255, 181, 181, 181, 255, 177, 177, 177, 255, 162, 162, 162, 255, 155, 155, 155, 255, 137, 137, 137, 255, 135, 135, 135, 255, 121, 121, 121, 255, 117, 117, 117, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 156, 156, 156, 255, 113, 113, 113, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 255, 0, 0, 0, 143, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 116, 116, 116, 255, 119, 119, 119, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 112, 112, 112, 255, 112, 112, 112, 255, 114, 114, 114, 255, 115, 115, 115, 255, 110, 110, 110, 255, 157, 157, 157, 255, 114, 114, 114, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 255, 0, 0, 0, 143, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 86, 86, 86, 255, 117, 117, 117, 255, 121, 121, 121, 255, 121, 121, 121, 255, 121, 121, 121, 255, 103, 103, 103, 255, 94, 94, 94, 255, 117, 117, 117, 255, 121, 121, 121, 255, 121, 121, 121, 255, 121, 121, 121, 255, 121, 121, 121, 255, 117, 117, 117, 255, 140, 140, 140, 255, 173, 173, 173, 255, 155, 155, 155, 255, 161, 161, 161, 255, 125, 125, 125, 255, 109, 109, 109, 255, 160, 160, 160, 255, 115, 115, 115, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 255, 0, 0, 0, 143, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 127, 127, 127, 255, 127, 127, 127, 255, 127, 127, 127, 255, 108, 108, 108, 255, 137, 137, 137, 255, 117, 117, 117, 255, 100, 100, 100, 255, 127, 127, 127, 255, 127, 127, 127, 255, 127, 127, 127, 255, 127, 127, 127, 255, 130, 130, 130, 255, 189, 189, 189, 255, 126, 126, 126, 255, 155, 155, 155, 255, 186, 186, 186, 255, 177, 177, 177, 255, 110, 110, 110, 255, 150, 150, 150, 255, 116, 116, 116, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 64, 50, 50, 50, 213, 0, 0, 0, 139, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 98, 98, 98, 255, 133, 133, 133, 255, 133, 133, 133, 255, 131, 131, 131, 255, 113, 113, 113, 255, 189, 189, 189, 255, 149, 149, 149, 255, 122, 122, 122, 255, 133, 133, 133, 255, 133, 133, 133, 255, 133, 133, 133, 255, 123, 123, 123, 255, 178, 178, 178, 255, 133, 133, 133, 255, 155, 155, 155, 255, 186, 186, 186, 255, 217, 217, 217, 255, 247, 247, 247, 255, 114, 114, 114, 255, 148, 148, 148, 255, 117, 117, 117, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 84, 48, 48, 48, 204, 0, 0, 0, 125, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 196, 102, 102, 102, 255, 99, 99, 99, 255, 112, 112, 112, 255, 140, 140, 140, 255, 140, 140, 140, 255, 140, 140, 140, 255, 113, 113, 113, 255, 119, 119, 119, 255, 112, 112, 112, 255, 137, 137, 137, 255, 115, 115, 115, 255, 98, 98, 98, 255, 111, 111, 111, 255, 121, 121, 121, 255, 178, 178, 178, 255, 155, 155, 155, 255, 186, 186, 186, 255, 217, 217, 217, 255, 247, 247, 247, 255, 245, 245, 245, 255, 118, 118, 118, 255, 151, 151, 151, 255, 118, 118, 118, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 131, 41, 41, 41, 161, 0, 0, 0, 110, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 89, 89, 89, 255, 134, 134, 134, 255, 136, 136, 136, 255, 107, 107, 107, 255, 95, 95, 95, 255, 127, 127, 127, 255, 161, 161, 161, 255, 159, 159, 159, 255, 125, 125, 125, 255, 197, 197, 197, 255, 143, 143, 143, 255, 115, 115, 115, 255, 124, 124, 124, 255, 160, 160, 160, 255, 186, 186, 186, 255, 217, 217, 217, 255, 247, 247, 247, 255, 245, 245, 245, 255, 216, 216, 216, 255, 121, 121, 121, 255, 154, 154, 154, 255, 119, 119, 119, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 194, 30, 30, 30, 138, 0, 0, 0, 85, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 83, 83, 83, 255, 154, 154, 154, 255, 109, 109, 109, 255, 205, 205, 205, 255, 169, 169, 169, 255, 106, 106, 106, 255, 154, 154, 154, 255, 152, 152, 152, 255, 106, 106, 106, 255, 126, 126, 126, 255, 116, 116, 116, 255, 146, 146, 146, 255, 144, 144, 144, 255, 121, 121, 121, 255, 201, 201, 201, 255, 247, 247, 247, 255, 245, 245, 245, 255, 228, 228, 228, 255, 157, 157, 157, 255, 125, 125, 125, 255, 157, 157, 157, 255, 120, 120, 120, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 255, 7, 7, 7, 124, 0, 0, 0, 61, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 84, 84, 84, 255, 153, 153, 153, 255, 115, 115, 115, 255, 162, 162, 162, 255, 145, 145, 145, 255, 134, 134, 134, 255, 148, 148, 148, 255, 147, 147, 147, 255, 139, 139, 139, 255, 154, 154, 154, 255, 176, 176, 176, 255, 164, 164, 164, 255, 160, 160, 160, 255, 139, 139, 139, 255, 116, 116, 116, 255, 175, 175, 175, 255, 175, 175, 175, 255, 172, 172, 172, 255, 137, 137, 137, 255, 129, 129, 129, 255, 159, 159, 159, 255, 121, 121, 121, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 50, 50, 50, 227, 0, 0, 0, 136, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 105, 105, 105, 255, 167, 167, 167, 255, 140, 140, 140, 255, 129, 129, 129, 255, 140, 140, 140, 255, 147, 147, 147, 255, 157, 157, 157, 255, 152, 152, 152, 255, 137, 137, 137, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 149, 149, 149, 255, 132, 132, 132, 255, 162, 162, 162, 255, 122, 122, 122, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 83, 48, 48, 48, 203, 0, 0, 0, 130, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 107, 107, 107, 255, 173, 173, 173, 255, 173, 173, 173, 255, 182, 182, 182, 255, 176, 176, 176, 255, 116, 116, 116, 255, 165, 165, 165, 255, 158, 158, 158, 255, 155, 155, 155, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 154, 154, 154, 255, 135, 135, 135, 255, 165, 165, 165, 255, 124, 124, 124, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 131, 41, 41, 41, 160, 0, 0, 0, 112, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 108, 108, 108, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 138, 138, 138, 255, 106, 106, 106, 255, 130, 130, 130, 255, 189, 189, 189, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 166, 166, 166, 255, 138, 138, 138, 255, 167, 167, 167, 255, 124, 124, 124, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 39, 39, 39, 167, 0, 0, 0, 90, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 110, 110, 110, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 189, 189, 189, 255, 211, 211, 211, 255, 209, 209, 209, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 159, 159, 159, 255, 176, 176, 176, 255, 185, 185, 185, 255, 185, 185, 185, 255, 180, 180, 180, 255, 142, 142, 142, 255, 171, 171, 171, 255, 125, 125, 125, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 194, 29, 29, 29, 142, 0, 0, 0, 79, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 112, 112, 112, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 173, 173, 173, 255, 147, 147, 147, 255, 121, 121, 121, 255, 86, 86, 86, 255, 51, 51, 51, 255, 51, 51, 51, 255, 156, 156, 156, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 152, 152, 152, 255, 173, 173, 173, 255, 127, 127, 127, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 22, 22, 22, 146, 0, 0, 0, 66, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 86, 86, 86, 255, 198, 198, 198, 255, 198, 198, 198, 255, 198, 198, 198, 255, 179, 179, 179, 255, 151, 151, 151, 255, 124, 124, 124, 255, 87, 87, 87, 255, 60, 60, 60, 255, 50, 62, 51, 255, 49, 72, 50, 255, 48, 83, 50, 255, 47, 94, 50, 255, 46, 108, 49, 255, 49, 80, 50, 255, 133, 133, 133, 255, 198, 198, 198, 255, 198, 198, 198, 255, 198, 198, 198, 255, 170, 170, 170, 255, 176, 176, 176, 255, 128, 128, 128, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 22, 22, 22, 149, 0, 0, 0, 55, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 89, 89, 89, 255, 204, 204, 204, 255, 204, 204, 204, 255, 127, 127, 127, 255, 54, 61, 54, 255, 57, 75, 59, 255, 61, 89, 64, 255, 66, 108, 70, 255, 70, 122, 74, 255, 71, 127, 76, 255, 71, 127, 76, 255, 71, 127, 76, 255, 71, 127, 76, 255, 71, 127, 76, 255, 64, 99, 67, 255, 79, 79, 79, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 197, 197, 197, 255, 180, 180, 180, 255, 129, 129, 129, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 151, 36, 36, 36, 182, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 89, 89, 89, 255, 190, 190, 190, 255, 210, 210, 210, 255, 130, 130, 130, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 92, 139, 100, 255, 51, 51, 51, 255, 190, 190, 190, 255, 210, 210, 210, 255, 210, 210, 210, 255, 210, 210, 210, 255, 201, 201, 201, 255, 130, 130, 130, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 37, 37, 37, 175, 0, 0, 0, 79, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 165, 165, 165, 255, 217, 217, 217, 255, 165, 165, 165, 255, 115, 157, 125, 255, 119, 164, 130, 255, 119, 164, 130, 255, 119, 164, 130, 255, 119, 164, 130, 255, 119, 164, 130, 255, 119, 164, 130, 255, 102, 136, 110, 255, 96, 118, 101, 255, 125, 139, 128, 255, 139, 142, 139, 255, 176, 176, 176, 255, 206, 206, 206, 255, 212, 212, 212, 255, 211, 211, 211, 255, 209, 209, 209, 255, 210, 210, 210, 255, 131, 131, 131, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46, 88, 46, 46, 46, 211, 0, 0, 0, 90, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 147, 147, 147, 255, 223, 223, 223, 255, 202, 202, 202, 255, 115, 142, 124, 255, 144, 183, 157, 255, 132, 167, 144, 255, 109, 134, 117, 255, 136, 154, 142, 255, 145, 152, 148, 255, 170, 170, 170, 255, 202, 202, 202, 255, 221, 221, 221, 255, 215, 215, 215, 255, 210, 210, 210, 255, 206, 206, 206, 255, 202, 202, 202, 255, 205, 205, 205, 255, 208, 208, 208, 255, 210, 210, 210, 255, 212, 212, 212, 255, 132, 132, 132, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 35, 23, 51, 51, 51, 255, 7, 7, 7, 124, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 116, 116, 116, 255, 234, 234, 234, 255, 234, 234, 234, 255, 167, 172, 169, 255, 173, 175, 174, 255, 200, 200, 200, 255, 234, 234, 234, 255, 225, 225, 225, 255, 216, 216, 216, 255, 207, 207, 207, 255, 201, 201, 201, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 205, 205, 205, 255, 208, 208, 208, 255, 210, 210, 210, 255, 212, 212, 212, 255, 214, 214, 214, 255, 133, 133, 133, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 48, 48, 48, 187, 34, 34, 34, 194, 0, 0, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 83, 83, 83, 255, 238, 238, 238, 255, 242, 242, 242, 255, 228, 228, 228, 255, 216, 216, 216, 255, 201, 201, 201, 255, 191, 191, 191, 255, 190, 190, 190, 255, 192, 192, 192, 255, 194, 194, 194, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 205, 205, 205, 255, 208, 208, 208, 255, 210, 210, 210, 255, 212, 212, 212, 255, 214, 214, 214, 255, 216, 216, 216, 255, 135, 135, 135, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 42, 77, 50, 50, 50, 246, 8, 8, 8, 98, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 147, 147, 147, 255, 182, 182, 182, 255, 184, 184, 184, 255, 186, 186, 186, 255, 188, 188, 188, 255, 190, 190, 190, 255, 192, 192, 192, 255, 194, 194, 194, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 205, 205, 205, 255, 208, 208, 208, 255, 210, 210, 210, 255, 212, 212, 212, 255, 214, 214, 214, 255, 187, 187, 187, 255, 167, 167, 167, 255, 135, 135, 135, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 43, 43, 43, 171, 44, 44, 44, 222, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 149, 149, 149, 255, 184, 184, 184, 255, 186, 186, 186, 255, 188, 188, 188, 255, 190, 190, 190, 255, 192, 192, 192, 255, 194, 194, 194, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 205, 205, 205, 255, 208, 208, 208, 255, 210, 210, 210, 255, 212, 212, 212, 255, 214, 214, 214, 255, 216, 216, 216, 255, 167, 167, 167, 255, 132, 132, 132, 255, 115, 115, 115, 255, 9, 9, 9, 183, 0, 0, 0, 57, 50, 50, 50, 131, 51, 51, 51, 225, 51, 51, 51, 255, 50, 50, 50, 212, 49, 49, 49, 166, 45, 45, 45, 90, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 34, 47, 47, 47, 225, 41, 41, 41, 199, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 151, 151, 151, 255, 186, 186, 186, 255, 188, 188, 188, 255, 190, 190, 190, 255, 192, 192, 192, 255, 194, 194, 194, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 147, 147, 147, 255, 90, 90, 90, 255, 91, 91, 91, 255, 91, 91, 91, 255, 163, 163, 163, 255, 216, 216, 216, 255, 218, 218, 218, 255, 210, 210, 210, 255, 147, 147, 147, 255, 41, 41, 41, 239, 25, 25, 25, 198, 50, 50, 50, 229, 49, 49, 49, 214, 25, 25, 25, 130, 0, 0, 0, 125, 24, 24, 24, 173, 48, 48, 48, 239, 51, 51, 51, 255, 49, 49, 49, 232, 49, 49, 49, 198, 50, 50, 50, 196, 45, 45, 45, 108, 13, 13, 13, 61, 46, 46, 46, 228, 47, 47, 47, 225, 26, 26, 26, 62, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 152, 152, 152, 255, 188, 188, 188, 255, 190, 190, 190, 255, 192, 192, 192, 255, 194, 194, 194, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 118, 118, 118, 255, 51, 51, 51, 255, 51, 51, 51, 255, 80, 80, 80, 255, 75, 75, 75, 255, 51, 51, 51, 255, 114, 114, 114, 255, 83, 83, 83, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 45, 45, 45, 236, 31, 31, 31, 156, 6, 6, 6, 129, 0, 0, 0, 118, 24, 24, 24, 100, 50, 50, 50, 242, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 45, 45, 45, 200, 28, 28, 28, 116, 37, 37, 37, 195, 50, 50, 50, 246, 35, 35, 35, 117, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 171, 171, 171, 255, 157, 157, 157, 255, 169, 169, 169, 255, 194, 194, 194, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 205, 205, 205, 255, 61, 61, 61, 255, 58, 58, 58, 255, 171, 171, 171, 255, 202, 202, 202, 255, 157, 157, 157, 255, 123, 123, 123, 255, 51, 51, 51, 255, 49, 49, 49, 251, 51, 51, 51, 255, 51, 51, 51, 255, 46, 46, 46, 247, 33, 33, 33, 221, 49, 49, 49, 247, 51, 51, 51, 255, 50, 50, 50, 243, 50, 50, 50, 213, 51, 51, 51, 255, 45, 45, 45, 235, 27, 27, 27, 214, 17, 17, 17, 197, 17, 17, 17, 191, 17, 17, 17, 189, 28, 28, 28, 206, 49, 49, 49, 249, 48, 48, 48, 238, 40, 40, 40, 184, 22, 22, 22, 150, 50, 50, 50, 246, 22, 22, 22, 109, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 190, 190, 190, 255, 130, 130, 130, 255, 137, 137, 137, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 164, 164, 164, 255, 128, 128, 128, 255, 90, 90, 90, 255, 49, 49, 49, 251, 80, 80, 80, 255, 133, 133, 133, 255, 112, 112, 112, 255, 106, 106, 106, 255, 142, 142, 142, 255, 43, 43, 43, 243, 51, 51, 51, 255, 61, 61, 61, 255, 101, 101, 101, 255, 99, 99, 99, 255, 61, 61, 61, 255, 23, 23, 23, 176, 0, 0, 0, 143, 15, 15, 15, 163, 45, 45, 45, 233, 51, 51, 51, 255, 41, 41, 41, 236, 32, 32, 32, 205, 36, 36, 36, 179, 39, 39, 39, 166, 44, 44, 44, 186, 50, 50, 50, 244, 38, 38, 38, 194, 32, 32, 32, 203, 43, 43, 43, 225, 0, 0, 0, 112, 49, 49, 49, 233, 28, 28, 28, 176, 0, 0, 0, 49, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46, 107, 76, 76, 76, 247, 99, 99, 99, 255, 92, 92, 92, 255, 192, 192, 192, 255, 194, 194, 194, 255, 160, 160, 160, 255, 124, 124, 124, 255, 88, 88, 88, 255, 41, 41, 41, 239, 30, 30, 30, 220, 16, 16, 16, 198, 0, 0, 0, 173, 17, 17, 17, 188, 49, 49, 49, 249, 92, 92, 92, 255, 70, 70, 70, 255, 80, 80, 80, 255, 74, 74, 74, 239, 49, 49, 49, 250, 61, 61, 61, 255, 181, 181, 181, 255, 205, 205, 205, 255, 147, 147, 147, 255, 97, 97, 97, 255, 17, 17, 17, 187, 0, 0, 0, 82, 0, 0, 0, 36, 19, 19, 19, 84, 49, 49, 49, 247, 49, 49, 49, 250, 47, 47, 47, 242, 50, 50, 50, 246, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 47, 47, 47, 240, 32, 32, 32, 180, 47, 47, 47, 227, 48, 48, 48, 219, 0, 0, 0, 134, 0, 0, 0, 61, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 17, 17, 17, 98, 42, 42, 42, 215, 66, 66, 66, 246, 85, 85, 85, 251, 41, 41, 41, 239, 30, 30, 30, 220, 16, 16, 16, 198, 0, 0, 0, 173, 0, 0, 0, 161, 0, 0, 0, 131, 0, 0, 0, 96, 0, 0, 0, 60, 0, 0, 0, 36, 10, 10, 10, 81, 19, 19, 19, 173, 17, 17, 17, 193, 13, 13, 13, 188, 0, 0, 0, 166, 51, 51, 51, 255, 80, 80, 80, 255, 154, 154, 154, 255, 120, 120, 120, 255, 92, 92, 92, 255, 80, 80, 80, 251, 0, 0, 0, 172, 0, 0, 0, 55, 0, 0, 0, 6, 0, 0, 0, 7, 27, 27, 27, 92, 41, 41, 41, 220, 51, 51, 51, 255, 44, 44, 44, 238, 39, 39, 39, 227, 31, 31, 31, 213, 31, 31, 31, 213, 39, 39, 39, 231, 44, 44, 44, 239, 49, 49, 49, 248, 37, 37, 37, 197, 6, 6, 6, 129, 0, 0, 0, 119, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 49, 0, 0, 0, 107, 0, 0, 0, 145, 0, 0, 0, 152, 0, 0, 0, 130, 0, 0, 0, 96, 0, 0, 0, 60, 0, 0, 0, 30, 0, 0, 0, 18, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 58, 0, 0, 0, 48, 50, 50, 50, 242, 65, 65, 65, 255, 128, 128, 128, 255, 77, 77, 77, 255, 68, 68, 68, 255, 25, 25, 25, 214, 0, 0, 0, 146, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 57, 0, 0, 0, 116, 18, 18, 18, 178, 26, 26, 26, 187, 34, 34, 34, 193, 35, 35, 35, 184, 33, 33, 33, 175, 20, 20, 20, 162, 0, 0, 0, 143, 0, 0, 0, 133, 0, 0, 0, 97, 0, 0, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 15, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 18, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 4, 37, 37, 37, 66, 41, 41, 41, 220, 41, 41, 41, 237, 38, 38, 38, 233, 16, 16, 16, 202, 0, 0, 0, 158, 0, 0, 0, 82, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 30, 0, 0, 0, 52, 0, 0, 0, 70, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 76, 0, 0, 0, 54, 0, 0, 0, 28, 0, 0, 0, 13, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 61, 0, 0, 0, 128, 0, 0, 0, 146, 0, 0, 0, 130, 0, 0, 0, 70, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 10, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_LogoMessageSecurity(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 204, 127, 255, 229, 204, 127, 255, 229, 204, 127, 255, 229, 204, 127, 255, 102, 77, 0, 64, 0, 0, 0, 14, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 144, 0, 17, 199, 149, 0, 131, 206, 159, 10, 240, 223, 191, 57, 255, 230, 204, 77, 255, 233, 210, 86, 255, 230, 204, 77, 255, 214, 172, 29, 255, 186, 139, 0, 210, 129, 97, 0, 76, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 148, 0, 83, 206, 159, 10, 240, 236, 217, 96, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 242, 230, 115, 255, 205, 162, 19, 246, 143, 107, 0, 137, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 150, 0, 146, 220, 185, 48, 255, 252, 249, 143, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 252, 249, 143, 255, 206, 167, 30, 248, 87, 65, 0, 112, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 150, 0, 162, 223, 191, 57, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 236, 217, 96, 255, 217, 179, 38, 255, 188, 144, 10, 247, 201, 159, 19, 251, 223, 191, 57, 255, 249, 242, 134, 255, 255, 255, 153, 255, 255, 255, 153, 255, 245, 236, 124, 255, 173, 130, 0, 226, 0, 0, 0, 65, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 150, 0, 98, 220, 185, 48, 255, 255, 255, 153, 255, 255, 255, 153, 255, 252, 249, 143, 255, 214, 172, 29, 255, 118, 89, 0, 220, 19, 14, 0, 173, 0, 0, 0, 148, 0, 0, 0, 136, 78, 58, 0, 169, 199, 154, 10, 249, 249, 239, 131, 255, 255, 249, 147, 255, 255, 248, 146, 255, 220, 182, 45, 255, 70, 52, 0, 140, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 144, 0, 17, 206, 159, 10, 240, 252, 249, 143, 255, 255, 253, 151, 255, 252, 246, 141, 255, 204, 165, 30, 251, 66, 49, 0, 200, 0, 0, 0, 148, 0, 0, 0, 100, 0, 0, 0, 61, 0, 0, 0, 45, 0, 0, 0, 50, 103, 77, 0, 127, 220, 180, 43, 255, 255, 239, 137, 255, 255, 236, 135, 255, 236, 204, 83, 255, 130, 97, 0, 202, 0, 0, 0, 65, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 150, 0, 162, 236, 209, 88, 255, 255, 242, 140, 255, 255, 242, 140, 255, 217, 175, 35, 255, 80, 60, 0, 204, 0, 0, 0, 142, 0, 0, 0, 79, 0, 0, 0, 30, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 22, 190, 143, 0, 222, 252, 224, 119, 255, 255, 226, 125, 255, 245, 212, 101, 255, 146, 110, 0, 221, 0, 0, 0, 91, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 144, 0, 17, 210, 163, 16, 255, 255, 232, 131, 255, 255, 232, 131, 255, 236, 201, 80, 255, 130, 97, 0, 225, 0, 0, 0, 151, 0, 0, 0, 82, 0, 0, 0, 24, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 175, 131, 0, 149, 214, 172, 48, 255, 255, 217, 115, 255, 255, 215, 113, 255, 166, 125, 0, 234, 0, 0, 0, 107, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 148, 0, 116, 233, 193, 69, 255, 255, 223, 122, 255, 255, 222, 121, 255, 201, 154, 15, 251, 19, 14, 0, 173, 0, 0, 0, 103, 0, 0, 0, 33, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 139, 0, 141, 214, 172, 48, 255, 255, 204, 102, 255, 255, 204, 102, 255, 165, 124, 0, 236, 0, 0, 0, 116, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 148, 0, 181, 249, 207, 98, 255, 255, 214, 112, 255, 239, 194, 76, 255, 130, 98, 0, 224, 0, 0, 0, 138, 0, 0, 0, 57, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 140, 0, 140, 214, 172, 48, 255, 253, 202, 98, 255, 252, 201, 95, 255, 165, 124, 0, 236, 0, 0, 0, 119, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, 155, 7, 227, 255, 204, 102, 255, 255, 204, 102, 255, 226, 175, 45, 255, 68, 51, 0, 192, 0, 0, 0, 103, 0, 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 140, 0, 140, 214, 172, 48, 255, 248, 197, 87, 255, 248, 197, 86, 255, 165, 124, 0, 236, 0, 0, 0, 119, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 165, 25, 255, 252, 201, 95, 255, 252, 201, 95, 255, 216, 165, 24, 255, 0, 0, 0, 156, 0, 0, 0, 73, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 148, 0, 66, 194, 145, 0, 118, 193, 145, 0, 151, 197, 148, 0, 198, 198, 148, 0, 230, 214, 172, 48, 255, 240, 189, 73, 255, 240, 189, 73, 255, 204, 153, 0, 255, 190, 142, 0, 240, 182, 137, 0, 196, 117, 88, 0, 56, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, 164, 22, 255, 247, 196, 85, 255, 246, 195, 84, 255, 215, 164, 21, 255, 0, 0, 0, 146, 0, 0, 0, 53, 192, 144, 0, 85, 196, 147, 0, 149, 198, 148, 0, 197, 204, 153, 0, 255, 217, 177, 37, 255, 226, 192, 61, 255, 233, 197, 73, 255, 242, 208, 94, 255, 223, 178, 44, 255, 214, 172, 48, 255, 235, 184, 62, 255, 235, 184, 62, 255, 214, 163, 19, 255, 242, 191, 77, 255, 228, 177, 48, 255, 201, 151, 3, 245, 103, 77, 0, 95, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 162, 18, 255, 240, 189, 73, 255, 240, 189, 73, 255, 213, 162, 18, 255, 150, 113, 0, 216, 200, 150, 0, 244, 220, 185, 48, 255, 233, 210, 86, 255, 245, 236, 124, 255, 255, 249, 147, 255, 255, 240, 138, 255, 255, 231, 130, 255, 255, 223, 122, 255, 255, 215, 113, 255, 230, 181, 53, 255, 214, 172, 48, 255, 230, 179, 53, 255, 230, 179, 51, 255, 213, 162, 18, 255, 232, 182, 58, 255, 229, 179, 51, 255, 221, 170, 34, 255, 190, 143, 0, 239, 0, 0, 0, 65, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 161, 15, 255, 235, 184, 62, 255, 233, 182, 58, 255, 211, 160, 15, 255, 236, 217, 96, 255, 252, 249, 143, 255, 255, 255, 153, 255, 255, 253, 151, 255, 255, 244, 142, 255, 255, 236, 134, 255, 255, 227, 126, 255, 255, 219, 117, 255, 255, 211, 109, 255, 255, 204, 102, 255, 207, 158, 38, 255, 214, 172, 48, 255, 226, 175, 43, 255, 224, 173, 40, 255, 193, 144, 10, 255, 217, 168, 47, 255, 221, 170, 34, 255, 217, 166, 26, 255, 208, 157, 8, 255, 85, 64, 0, 154, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 150, 0, 98, 210, 159, 13, 255, 230, 179, 51, 255, 228, 177, 48, 255, 210, 159, 12, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 249, 147, 255, 255, 240, 139, 255, 255, 231, 130, 255, 255, 224, 122, 255, 255, 216, 114, 255, 255, 207, 105, 255, 255, 204, 102, 255, 217, 169, 78, 255, 171, 125, 17, 255, 215, 164, 22, 255, 219, 168, 29, 255, 218, 167, 27, 255, 187, 139, 9, 255, 197, 149, 28, 255, 216, 165, 24, 255, 210, 159, 11, 255, 204, 153, 0, 255, 204, 153, 0, 255, 0, 0, 0, 82, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 148, 0, 66, 202, 152, 0, 225, 230, 204, 77, 255, 209, 158, 10, 255, 224, 173, 40, 255, 224, 173, 39, 255, 209, 158, 9, 255, 255, 253, 151, 255, 255, 245, 143, 255, 255, 236, 135, 255, 255, 228, 127, 255, 255, 220, 118, 255, 255, 211, 109, 255, 255, 205, 103, 255, 254, 203, 100, 255, 246, 195, 85, 255, 196, 149, 58, 255, 158, 114, 23, 255, 206, 155, 4, 255, 210, 159, 11, 255, 205, 154, 3, 255, 162, 117, 21, 255, 204, 154, 21, 255, 206, 155, 3, 255, 210, 166, 32, 255, 233, 210, 143, 255, 204, 153, 0, 255, 0, 0, 0, 125, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 150, 0, 146, 217, 179, 38, 255, 249, 242, 134, 255, 255, 255, 153, 255, 208, 157, 7, 255, 219, 168, 29, 255, 219, 168, 29, 255, 207, 156, 6, 255, 255, 241, 139, 255, 255, 232, 131, 255, 255, 224, 122, 255, 255, 216, 114, 255, 255, 207, 105, 255, 255, 204, 102, 255, 251, 200, 94, 255, 243, 192, 79, 255, 241, 190, 75, 255, 227, 178, 58, 255, 160, 117, 38, 255, 141, 100, 32, 255, 154, 110, 26, 255, 150, 108, 29, 255, 185, 137, 14, 255, 204, 153, 0, 255, 226, 197, 107, 255, 251, 247, 231, 255, 242, 228, 184, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 151, 0, 177, 226, 198, 67, 255, 255, 255, 153, 255, 255, 255, 153, 255, 211, 195, 108, 255, 206, 155, 5, 255, 211, 160, 15, 255, 211, 160, 15, 255, 206, 155, 4, 255, 181, 145, 68, 255, 255, 220, 118, 255, 255, 211, 109, 255, 255, 205, 103, 255, 254, 203, 100, 255, 246, 195, 85, 255, 242, 191, 77, 255, 238, 187, 69, 255, 230, 180, 53, 255, 228, 178, 49, 255, 222, 172, 37, 255, 207, 157, 27, 255, 197, 148, 18, 255, 206, 155, 3, 255, 223, 191, 92, 255, 248, 241, 214, 255, 254, 253, 243, 255, 254, 252, 241, 255, 242, 229, 176, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 153, 0, 255, 223, 191, 57, 255, 255, 255, 153, 255, 255, 255, 153, 255, 152, 116, 49, 255, 205, 154, 2, 255, 206, 155, 5, 255, 206, 155, 4, 255, 200, 150, 3, 255, 167, 125, 53, 255, 255, 207, 105, 255, 255, 204, 102, 255, 251, 200, 94, 255, 243, 192, 79, 255, 241, 190, 75, 255, 235, 184, 62, 255, 229, 179, 51, 255, 226, 176, 45, 255, 215, 164, 23, 255, 209, 158, 10, 255, 211, 166, 31, 255, 232, 209, 136, 255, 248, 239, 210, 255, 254, 251, 239, 255, 254, 251, 238, 255, 254, 253, 229, 255, 255, 255, 218, 255, 242, 230, 163, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 175, 35, 255, 223, 185, 52, 255, 223, 191, 57, 255, 252, 248, 143, 255, 167, 133, 61, 255, 158, 114, 23, 255, 171, 125, 17, 255, 171, 125, 17, 255, 157, 113, 32, 255, 218, 170, 81, 255, 254, 203, 100, 255, 246, 195, 85, 255, 242, 191, 77, 255, 239, 188, 71, 255, 226, 176, 45, 255, 218, 168, 29, 255, 215, 167, 31, 255, 220, 184, 76, 255, 232, 208, 134, 255, 248, 239, 208, 255, 254, 251, 238, 255, 254, 251, 238, 255, 254, 251, 236, 255, 254, 252, 224, 255, 255, 255, 210, 255, 255, 255, 207, 255, 255, 255, 207, 255, 242, 230, 155, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 174, 34, 255, 255, 236, 134, 255, 236, 204, 83, 255, 214, 169, 26, 255, 229, 196, 78, 255, 191, 150, 53, 255, 193, 152, 67, 255, 196, 150, 68, 255, 228, 178, 68, 255, 241, 190, 75, 255, 227, 176, 46, 255, 221, 170, 34, 255, 223, 181, 64, 255, 223, 190, 89, 255, 232, 208, 134, 255, 245, 233, 193, 255, 254, 251, 238, 255, 254, 251, 237, 255, 254, 251, 236, 255, 253, 250, 234, 255, 253, 251, 227, 255, 254, 253, 211, 255, 255, 254, 201, 255, 255, 255, 198, 255, 255, 255, 198, 255, 255, 255, 198, 255, 255, 255, 198, 255, 242, 230, 148, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 172, 32, 255, 255, 229, 128, 255, 255, 229, 128, 255, 249, 220, 112, 255, 223, 186, 70, 255, 242, 228, 184, 255, 235, 216, 153, 255, 229, 203, 122, 255, 232, 209, 136, 255, 242, 227, 180, 255, 242, 227, 179, 255, 254, 251, 238, 255, 254, 251, 238, 255, 254, 251, 237, 255, 254, 251, 235, 255, 253, 250, 233, 255, 253, 250, 231, 255, 254, 251, 217, 255, 254, 253, 208, 255, 255, 254, 195, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 188, 255, 242, 230, 141, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 170, 30, 255, 255, 221, 119, 255, 255, 221, 119, 255, 255, 221, 119, 255, 229, 195, 90, 255, 254, 252, 241, 255, 254, 252, 235, 255, 254, 251, 238, 255, 254, 251, 238, 255, 254, 251, 236, 255, 254, 251, 234, 255, 254, 251, 226, 255, 254, 251, 218, 255, 254, 252, 208, 255, 254, 253, 201, 255, 255, 254, 189, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 249, 169, 255, 255, 239, 155, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 242, 230, 134, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 169, 29, 255, 255, 217, 115, 255, 255, 217, 115, 255, 255, 217, 115, 255, 229, 193, 88, 255, 254, 251, 236, 255, 254, 253, 200, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 250, 159, 255, 255, 232, 136, 255, 255, 218, 118, 255, 255, 212, 110, 255, 255, 222, 124, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 242, 230, 125, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 167, 27, 255, 255, 211, 109, 255, 255, 211, 109, 255, 255, 211, 109, 255, 229, 192, 85, 255, 253, 250, 230, 255, 254, 252, 192, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 247, 147, 255, 220, 195, 119, 255, 155, 143, 113, 255, 129, 122, 105, 255, 225, 204, 122, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 242, 230, 117, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 166, 26, 255, 255, 204, 102, 255, 255, 204, 102, 255, 255, 204, 102, 255, 229, 190, 82, 255, 253, 248, 223, 255, 254, 252, 188, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 249, 147, 255, 189, 175, 120, 255, 129, 122, 105, 255, 139, 124, 94, 255, 228, 209, 122, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 242, 230, 115, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 165, 25, 255, 254, 203, 100, 255, 254, 203, 100, 255, 254, 203, 100, 255, 229, 189, 80, 255, 252, 247, 218, 255, 254, 250, 183, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 248, 146, 255, 193, 180, 120, 255, 139, 124, 94, 255, 149, 126, 81, 255, 230, 210, 120, 255, 255, 249, 147, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 242, 227, 113, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 165, 23, 255, 250, 199, 93, 255, 250, 199, 93, 255, 250, 199, 93, 255, 228, 188, 77, 255, 252, 247, 213, 255, 254, 248, 180, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 248, 145, 255, 190, 177, 115, 255, 147, 126, 84, 255, 156, 127, 70, 255, 199, 172, 88, 255, 255, 244, 142, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 242, 225, 110, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, 164, 21, 255, 246, 195, 83, 255, 246, 195, 83, 255, 246, 195, 83, 255, 227, 187, 73, 255, 252, 246, 209, 255, 254, 246, 175, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 248, 145, 255, 233, 230, 142, 255, 147, 126, 84, 255, 156, 127, 70, 255, 163, 128, 56, 255, 173, 136, 58, 255, 246, 236, 136, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 242, 223, 107, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 163, 20, 255, 244, 193, 79, 255, 244, 193, 79, 255, 244, 193, 79, 255, 226, 186, 70, 255, 252, 245, 203, 255, 254, 244, 172, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 249, 147, 255, 196, 183, 112, 255, 156, 127, 70, 255, 163, 128, 56, 255, 173, 136, 58, 255, 182, 142, 60, 255, 250, 246, 146, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 242, 220, 105, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 162, 18, 255, 240, 189, 72, 255, 240, 189, 72, 255, 240, 189, 72, 255, 225, 185, 67, 255, 252, 243, 197, 255, 254, 241, 166, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 243, 141, 255, 193, 172, 97, 255, 163, 128, 56, 255, 173, 136, 58, 255, 182, 142, 60, 255, 214, 182, 88, 255, 255, 243, 141, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 242, 217, 102, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 161, 16, 255, 236, 185, 65, 255, 236, 185, 65, 255, 236, 185, 65, 255, 224, 183, 65, 255, 252, 243, 192, 255, 253, 239, 162, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 236, 134, 255, 238, 216, 120, 255, 183, 147, 67, 255, 182, 142, 60, 255, 196, 152, 63, 255, 245, 218, 116, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 242, 215, 100, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, 160, 15, 255, 233, 182, 58, 255, 233, 182, 58, 255, 233, 182, 58, 255, 224, 185, 55, 255, 255, 253, 157, 255, 255, 244, 142, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 235, 191, 92, 255, 196, 152, 63, 255, 208, 161, 65, 255, 245, 218, 116, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 242, 213, 98, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 159, 13, 255, 230, 179, 51, 255, 230, 179, 51, 255, 230, 179, 51, 255, 223, 185, 53, 255, 255, 255, 163, 255, 255, 242, 147, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 228, 127, 255, 235, 191, 92, 255, 206, 160, 65, 255, 218, 169, 67, 255, 249, 212, 109, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 242, 210, 96, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 159, 11, 255, 226, 175, 44, 255, 226, 175, 44, 255, 226, 175, 44, 255, 222, 184, 55, 255, 255, 255, 174, 255, 255, 240, 151, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 222, 120, 255, 235, 191, 92, 255, 215, 167, 66, 255, 235, 183, 74, 255, 251, 211, 108, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 249, 216, 108, 255, 214, 167, 23, 255, 79, 59, 0, 206, 0, 0, 0, 127, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 158, 9, 255, 223, 172, 37, 255, 223, 172, 37, 255, 223, 172, 37, 255, 222, 183, 56, 255, 255, 255, 187, 255, 255, 239, 156, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 218, 116, 255, 250, 203, 101, 255, 250, 203, 101, 255, 255, 212, 110, 255, 255, 218, 116, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 233, 192, 68, 255, 188, 143, 8, 247, 51, 38, 0, 192, 0, 0, 0, 142, 0, 0, 0, 76, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 157, 8, 255, 219, 168, 30, 255, 219, 168, 30, 255, 219, 168, 30, 255, 221, 182, 58, 255, 255, 255, 204, 255, 255, 237, 161, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 217, 115, 255, 255, 212, 110, 255, 255, 216, 114, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 242, 203, 88, 255, 210, 162, 15, 255, 130, 97, 0, 225, 19, 14, 0, 172, 0, 0, 0, 126, 0, 0, 0, 70, 0, 0, 0, 23, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 149, 2, 215, 214, 163, 20, 255, 216, 165, 24, 255, 216, 165, 24, 255, 220, 181, 59, 255, 255, 255, 216, 255, 255, 236, 166, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 252, 212, 107, 255, 236, 193, 72, 255, 210, 161, 14, 255, 142, 106, 0, 229, 36, 27, 0, 182, 0, 0, 0, 143, 0, 0, 0, 100, 0, 0, 0, 51, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 55, 0, 45, 186, 139, 0, 228, 210, 159, 12, 255, 213, 162, 19, 255, 219, 181, 61, 255, 255, 255, 228, 255, 255, 234, 170, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 239, 194, 76, 255, 223, 176, 42, 255, 188, 142, 7, 247, 119, 89, 0, 219, 37, 28, 0, 178, 0, 0, 0, 143, 0, 0, 0, 106, 0, 0, 0, 63, 0, 0, 0, 28, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 49, 37, 0, 67, 176, 132, 0, 221, 206, 155, 4, 255, 218, 180, 62, 255, 255, 255, 240, 255, 255, 232, 174, 255, 255, 208, 106, 255, 255, 208, 106, 255, 255, 208, 106, 255, 255, 208, 106, 255, 255, 208, 106, 255, 255, 208, 106, 255, 252, 205, 99, 255, 242, 194, 80, 255, 230, 181, 53, 255, 217, 167, 27, 255, 174, 130, 0, 243, 131, 98, 0, 222, 53, 40, 0, 185, 0, 0, 0, 151, 0, 0, 0, 127, 0, 0, 0, 95, 0, 0, 0, 61, 0, 0, 0, 31, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 52, 161, 121, 0, 202, 214, 172, 48, 255, 249, 242, 223, 255, 249, 224, 167, 255, 245, 196, 85, 255, 242, 193, 79, 255, 242, 193, 79, 255, 230, 181, 53, 255, 223, 174, 40, 255, 214, 163, 20, 255, 164, 123, 0, 238, 131, 98, 0, 222, 83, 62, 0, 196, 20, 15, 0, 164, 0, 0, 0, 144, 0, 0, 0, 124, 0, 0, 0, 98, 0, 0, 0, 68, 0, 0, 0, 43, 0, 0, 0, 23, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 45, 134, 101, 0, 170, 129, 97, 0, 203, 167, 125, 0, 233, 155, 116, 0, 230, 122, 91, 0, 215, 123, 92, 0, 212, 98, 73, 0, 200, 55, 41, 0, 178, 0, 0, 0, 152, 0, 0, 0, 139, 0, 0, 0, 121, 0, 0, 0, 100, 0, 0, 0, 77, 0, 0, 0, 55, 0, 0, 0, 39, 0, 0, 0, 25, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 37, 0, 0, 0, 76, 0, 0, 0, 100, 0, 0, 0, 112, 0, 0, 0, 110, 0, 0, 0, 100, 0, 0, 0, 92, 0, 0, 0, 82, 0, 0, 0, 65, 0, 0, 0, 49, 0, 0, 0, 36, 0, 0, 0, 25, 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 16, 0, 0, 0, 25, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 25, 0, 0, 0, 22, 0, 0, 0, 17, 0, 0, 0, 9, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_DevicePrinter(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 22, 0, 0, 0, 27, 46, 46, 69, 71, 59, 59, 88, 111, 58, 58, 86, 113, 55, 55, 83, 118, 73, 73, 109, 179, 72, 72, 107, 182, 72, 72, 107, 182, 74, 74, 112, 196, 86, 86, 129, 227, 86, 86, 128, 228, 117, 117, 150, 229, 130, 130, 160, 238, 140, 140, 179, 255, 140, 140, 179, 255, 140, 140, 179, 255, 79, 79, 118, 206, 30, 30, 44, 55, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 67, 67, 100, 98, 99, 99, 148, 247, 140, 140, 179, 255, 177, 178, 204, 255, 177, 178, 204, 255, 187, 187, 210, 255, 215, 216, 230, 255, 215, 216, 230, 255, 215, 216, 230, 255, 234, 235, 242, 255, 254, 254, 255, 255, 254, 254, 255, 255, 254, 254, 255, 255, 254, 254, 255, 255, 254, 254, 255, 255, 254, 254, 255, 255, 254, 254, 255, 255, 254, 254, 255, 255, 225, 226, 236, 255, 101, 102, 145, 231, 31, 31, 46, 53, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 49, 49, 73, 100, 111, 111, 159, 255, 221, 224, 236, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 202, 204, 223, 255, 78, 78, 116, 188, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 74, 74, 111, 176, 129, 130, 172, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 137, 139, 179, 255, 42, 42, 64, 77, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 94, 94, 142, 241, 187, 193, 217, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 204, 211, 230, 255, 81, 81, 122, 200, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 75, 75, 112, 175, 118, 120, 166, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 114, 116, 160, 249, 32, 32, 48, 51, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 30, 44, 55, 102, 102, 153, 255, 204, 215, 236, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 172, 180, 210, 255, 68, 68, 101, 145, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 84, 84, 126, 213, 154, 162, 198, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 199, 213, 236, 255, 84, 84, 126, 213, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 68, 68, 101, 145, 116, 119, 166, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 116, 119, 166, 255, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 31, 31, 46, 53, 102, 102, 153, 255, 197, 216, 242, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 143, 151, 191, 255, 60, 60, 90, 109, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 87, 87, 130, 224, 159, 174, 210, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 159, 174, 210, 255, 74, 74, 111, 176, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 74, 74, 111, 176, 132, 141, 185, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 174, 196, 230, 255, 87, 87, 130, 224, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 60, 60, 90, 109, 113, 117, 166, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 98, 98, 147, 249, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 102, 102, 153, 255, 182, 214, 249, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 113, 117, 166, 255, 47, 47, 71, 69, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 87, 87, 130, 224, 161, 189, 230, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 178, 216, 255, 255, 174, 215, 255, 255, 120, 130, 179, 255, 54, 54, 82, 120, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 76, 76, 115, 191, 139, 159, 204, 255, 176, 215, 255, 255, 176, 215, 255, 255, 176, 215, 255, 255, 176, 215, 255, 255, 176, 215, 255, 255, 176, 215, 255, 255, 176, 215, 255, 255, 170, 209, 255, 255, 167, 206, 255, 255, 165, 203, 255, 255, 160, 201, 255, 255, 157, 200, 255, 255, 153, 198, 255, 255, 153, 198, 255, 255, 153, 198, 255, 255, 137, 159, 210, 255, 140, 140, 159, 255, 116, 116, 116, 224, 77, 77, 77, 170, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 53, 53, 53, 93, 75, 75, 100, 195, 123, 137, 185, 255, 167, 207, 255, 255, 166, 205, 255, 255, 162, 196, 255, 255, 159, 192, 255, 255, 157, 188, 255, 255, 154, 183, 255, 255, 153, 182, 255, 255, 153, 182, 255, 255, 153, 182, 255, 255, 159, 187, 255, 255, 179, 201, 255, 255, 198, 215, 255, 255, 210, 225, 255, 255, 230, 239, 255, 255, 242, 244, 248, 255, 242, 242, 242, 255, 232, 232, 232, 255, 204, 204, 204, 255, 87, 87, 87, 224, 0, 0, 0, 33, 0, 0, 0, 12, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 100, 100, 100, 219, 159, 159, 159, 255, 179, 179, 185, 255, 151, 155, 198, 255, 159, 172, 255, 255, 153, 166, 255, 255, 153, 166, 255, 255, 153, 166, 255, 255, 179, 188, 255, 255, 191, 199, 255, 255, 204, 211, 255, 255, 230, 233, 255, 255, 249, 249, 255, 255, 237, 237, 237, 255, 229, 229, 229, 255, 218, 218, 218, 255, 209, 209, 209, 255, 201, 201, 201, 255, 202, 202, 202, 255, 206, 206, 206, 255, 211, 211, 211, 255, 215, 215, 215, 255, 102, 102, 102, 255, 80, 80, 80, 204, 75, 75, 75, 175, 65, 65, 65, 126, 33, 33, 33, 50, 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 87, 87, 87, 223, 223, 223, 223, 255, 251, 251, 251, 255, 252, 252, 252, 255, 254, 254, 254, 255, 249, 249, 255, 255, 242, 242, 255, 255, 243, 243, 243, 255, 232, 232, 232, 255, 211, 211, 211, 255, 198, 198, 198, 255, 191, 191, 191, 255, 180, 180, 180, 255, 184, 184, 184, 255, 189, 189, 189, 255, 192, 192, 192, 255, 197, 197, 197, 255, 202, 202, 202, 255, 206, 206, 206, 255, 211, 211, 211, 255, 215, 215, 215, 255, 220, 220, 220, 255, 124, 124, 124, 255, 158, 158, 158, 255, 173, 173, 173, 255, 160, 160, 160, 255, 106, 106, 106, 249, 80, 80, 80, 200, 43, 43, 43, 75, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 80, 80, 80, 203, 207, 207, 207, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 180, 180, 180, 255, 161, 161, 161, 255, 166, 166, 166, 255, 172, 172, 172, 255, 176, 176, 176, 255, 180, 180, 180, 255, 184, 184, 184, 255, 189, 189, 189, 255, 192, 192, 192, 255, 197, 197, 197, 255, 202, 202, 202, 255, 206, 206, 206, 255, 211, 211, 211, 255, 187, 187, 187, 255, 168, 168, 168, 255, 147, 147, 147, 255, 109, 109, 109, 255, 196, 196, 196, 255, 198, 198, 198, 255, 173, 173, 173, 255, 207, 207, 207, 255, 173, 173, 173, 255, 104, 104, 104, 248, 68, 68, 68, 161, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 24, 27, 27, 27, 58, 78, 78, 78, 206, 185, 185, 185, 255, 234, 234, 234, 255, 234, 234, 234, 255, 234, 234, 234, 255, 234, 234, 234, 255, 198, 198, 198, 255, 166, 166, 166, 255, 172, 172, 172, 255, 176, 176, 176, 255, 180, 180, 180, 255, 184, 184, 184, 255, 189, 189, 189, 255, 192, 192, 192, 255, 179, 179, 179, 255, 164, 164, 164, 255, 147, 147, 147, 255, 122, 122, 122, 255, 119, 119, 119, 255, 144, 144, 144, 255, 169, 169, 169, 255, 202, 202, 202, 255, 226, 226, 226, 255, 234, 234, 234, 255, 233, 233, 233, 255, 227, 227, 227, 255, 187, 187, 187, 255, 182, 182, 182, 255, 216, 216, 216, 255, 122, 122, 122, 255, 78, 78, 78, 199, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 29, 29, 29, 53, 73, 73, 73, 187, 93, 93, 93, 248, 103, 103, 103, 255, 106, 106, 106, 255, 133, 133, 133, 255, 164, 164, 164, 255, 164, 164, 164, 255, 194, 194, 194, 255, 223, 223, 223, 255, 195, 195, 195, 255, 172, 172, 172, 255, 176, 176, 176, 255, 170, 170, 170, 255, 158, 158, 158, 255, 145, 145, 145, 255, 124, 124, 124, 255, 111, 111, 111, 255, 137, 137, 137, 255, 171, 171, 171, 255, 196, 196, 196, 255, 221, 221, 221, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 231, 231, 231, 255, 231, 231, 231, 255, 230, 230, 230, 255, 201, 201, 201, 255, 172, 172, 172, 255, 219, 219, 219, 255, 121, 121, 121, 255, 77, 77, 77, 199, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 39, 39, 39, 77, 87, 87, 87, 240, 132, 132, 132, 255, 183, 183, 183, 255, 205, 205, 205, 255, 203, 203, 203, 255, 210, 210, 210, 255, 202, 202, 202, 255, 174, 174, 174, 255, 146, 146, 146, 255, 123, 123, 123, 255, 149, 149, 149, 255, 124, 124, 124, 255, 107, 107, 107, 255, 138, 138, 138, 255, 164, 164, 164, 255, 190, 190, 190, 255, 225, 225, 225, 255, 241, 241, 241, 255, 241, 241, 241, 255, 239, 239, 239, 255, 238, 238, 238, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 231, 231, 231, 255, 231, 231, 231, 255, 230, 230, 230, 255, 229, 229, 229, 255, 228, 228, 228, 255, 190, 190, 190, 255, 189, 189, 189, 255, 217, 217, 217, 255, 102, 102, 102, 255, 65, 65, 65, 161, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 83, 83, 83, 231, 141, 141, 141, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 213, 213, 213, 255, 241, 241, 241, 255, 225, 225, 225, 255, 182, 182, 182, 255, 146, 146, 146, 255, 219, 219, 219, 255, 245, 245, 245, 255, 244, 244, 244, 255, 243, 243, 243, 255, 242, 242, 242, 255, 241, 241, 241, 255, 241, 241, 241, 255, 239, 239, 239, 255, 238, 238, 238, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 231, 231, 231, 255, 231, 231, 231, 255, 230, 230, 230, 255, 229, 229, 229, 255, 228, 228, 228, 255, 219, 219, 219, 255, 199, 199, 199, 255, 153, 153, 153, 255, 220, 220, 220, 255, 175, 175, 175, 255, 89, 89, 89, 248, 38, 38, 38, 77, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 58, 58, 58, 125, 99, 99, 99, 255, 215, 215, 215, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 207, 207, 207, 255, 239, 239, 239, 255, 247, 247, 247, 255, 205, 205, 205, 255, 176, 176, 176, 255, 239, 239, 239, 255, 243, 243, 243, 255, 242, 242, 242, 255, 241, 241, 241, 255, 241, 241, 241, 255, 239, 239, 239, 255, 238, 238, 238, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 231, 231, 231, 255, 231, 231, 231, 255, 225, 225, 225, 255, 205, 205, 205, 255, 181, 181, 181, 255, 162, 162, 162, 255, 171, 171, 171, 255, 189, 189, 189, 255, 211, 211, 211, 255, 224, 224, 224, 255, 222, 222, 222, 255, 107, 107, 107, 255, 74, 74, 74, 211, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 65, 65, 65, 173, 123, 123, 123, 255, 227, 227, 227, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 207, 207, 207, 255, 238, 238, 238, 255, 245, 245, 245, 255, 210, 210, 210, 255, 170, 170, 170, 255, 237, 237, 237, 255, 241, 241, 241, 255, 241, 241, 241, 255, 239, 239, 239, 255, 238, 238, 238, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 228, 228, 228, 255, 207, 207, 207, 255, 187, 187, 187, 255, 167, 167, 167, 255, 167, 167, 167, 255, 191, 191, 191, 255, 209, 209, 209, 255, 226, 226, 226, 255, 225, 225, 225, 255, 225, 225, 225, 255, 224, 224, 224, 255, 222, 222, 222, 255, 221, 221, 221, 255, 150, 150, 150, 255, 88, 88, 88, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 63, 63, 63, 176, 122, 122, 122, 255, 229, 229, 229, 255, 227, 227, 227, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 207, 207, 207, 255, 237, 237, 237, 255, 243, 243, 243, 255, 209, 209, 209, 255, 170, 170, 170, 255, 235, 235, 235, 255, 239, 239, 239, 255, 238, 238, 238, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 214, 214, 214, 255, 194, 194, 194, 255, 173, 173, 173, 255, 168, 168, 168, 255, 187, 187, 187, 255, 206, 206, 206, 255, 224, 224, 224, 255, 228, 228, 228, 255, 228, 228, 228, 255, 226, 226, 226, 255, 225, 225, 225, 255, 225, 225, 225, 255, 216, 216, 216, 255, 204, 204, 204, 255, 193, 193, 193, 255, 185, 185, 185, 255, 137, 137, 137, 255, 87, 87, 87, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 62, 62, 62, 176, 122, 122, 122, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 212, 212, 212, 255, 240, 240, 240, 255, 241, 241, 241, 255, 202, 202, 202, 255, 185, 185, 185, 255, 238, 238, 238, 255, 222, 222, 222, 255, 200, 200, 200, 255, 174, 174, 174, 255, 163, 163, 163, 255, 183, 183, 183, 255, 208, 208, 208, 255, 226, 226, 226, 255, 231, 231, 231, 255, 230, 230, 230, 255, 229, 229, 229, 255, 228, 228, 228, 255, 228, 228, 228, 255, 223, 223, 223, 255, 210, 210, 210, 255, 196, 196, 196, 255, 185, 185, 185, 255, 181, 181, 181, 255, 183, 183, 183, 255, 185, 185, 185, 255, 187, 187, 187, 255, 137, 137, 137, 255, 85, 85, 85, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 60, 60, 60, 176, 121, 121, 121, 255, 234, 234, 234, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 221, 221, 221, 255, 241, 241, 241, 255, 239, 239, 239, 255, 174, 174, 174, 255, 169, 169, 169, 255, 184, 184, 184, 255, 204, 204, 204, 255, 224, 224, 224, 255, 234, 234, 234, 255, 233, 233, 233, 255, 231, 231, 231, 255, 231, 231, 231, 255, 230, 230, 230, 255, 229, 229, 229, 255, 218, 218, 218, 255, 200, 200, 200, 255, 184, 184, 184, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 181, 181, 181, 255, 183, 183, 183, 255, 180, 180, 180, 255, 155, 155, 155, 255, 129, 129, 129, 255, 93, 93, 93, 255, 83, 83, 83, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 59, 59, 59, 176, 92, 92, 92, 255, 127, 127, 127, 255, 184, 184, 184, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 231, 231, 231, 255, 238, 238, 238, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 231, 231, 231, 255, 222, 222, 222, 255, 206, 206, 206, 255, 191, 191, 191, 255, 173, 173, 173, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 171, 171, 171, 255, 148, 148, 148, 255, 123, 123, 123, 255, 102, 102, 102, 255, 113, 113, 113, 255, 142, 142, 142, 255, 126, 126, 126, 255, 81, 81, 81, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 59, 59, 59, 173, 111, 111, 111, 255, 171, 171, 171, 255, 111, 111, 111, 255, 118, 118, 118, 255, 182, 182, 182, 255, 221, 221, 221, 255, 227, 227, 227, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 214, 214, 214, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 215, 215, 215, 255, 193, 193, 193, 255, 176, 176, 176, 255, 165, 165, 165, 255, 167, 167, 167, 255, 169, 169, 169, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 163, 163, 163, 255, 141, 141, 141, 255, 117, 117, 117, 255, 102, 102, 102, 255, 118, 118, 118, 255, 145, 145, 145, 255, 147, 147, 147, 255, 85, 111, 72, 255, 94, 120, 82, 255, 119, 119, 119, 255, 79, 79, 79, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 44, 44, 44, 113, 78, 78, 78, 255, 242, 242, 242, 255, 231, 231, 231, 255, 178, 178, 178, 255, 119, 119, 119, 255, 110, 110, 110, 255, 165, 165, 165, 255, 219, 219, 219, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 226, 226, 226, 255, 226, 226, 226, 255, 200, 200, 200, 255, 182, 182, 182, 255, 164, 164, 164, 255, 162, 162, 162, 255, 164, 164, 164, 255, 165, 165, 165, 255, 167, 167, 167, 255, 169, 169, 169, 255, 172, 172, 172, 255, 151, 151, 151, 255, 134, 134, 134, 255, 111, 111, 111, 255, 102, 102, 102, 255, 117, 117, 117, 255, 148, 148, 148, 255, 175, 175, 175, 255, 187, 187, 187, 255, 189, 189, 189, 255, 107, 120, 101, 255, 153, 255, 102, 255, 128, 204, 89, 255, 101, 101, 101, 255, 78, 78, 78, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 45, 45, 45, 109, 76, 76, 76, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 185, 185, 185, 255, 118, 118, 118, 255, 102, 102, 102, 255, 148, 148, 148, 255, 209, 209, 209, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 182, 182, 182, 255, 156, 156, 156, 255, 158, 158, 158, 255, 160, 160, 160, 255, 162, 162, 162, 255, 164, 164, 164, 255, 165, 165, 165, 255, 163, 163, 163, 255, 148, 148, 148, 255, 128, 128, 128, 255, 106, 106, 106, 255, 102, 102, 102, 255, 126, 126, 126, 255, 151, 151, 151, 255, 176, 176, 176, 255, 183, 183, 183, 255, 185, 185, 185, 255, 187, 187, 187, 255, 189, 189, 189, 255, 192, 192, 192, 255, 111, 117, 107, 255, 128, 204, 89, 255, 111, 162, 86, 255, 119, 119, 119, 255, 76, 76, 76, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 44, 44, 44, 109, 74, 74, 74, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 183, 183, 183, 255, 134, 134, 134, 255, 102, 102, 102, 255, 148, 148, 148, 255, 191, 191, 191, 255, 218, 218, 218, 255, 215, 215, 215, 255, 184, 184, 184, 255, 158, 158, 158, 255, 160, 160, 160, 255, 162, 162, 162, 255, 160, 160, 160, 255, 141, 141, 141, 255, 122, 122, 122, 255, 102, 102, 102, 255, 106, 106, 106, 255, 125, 125, 125, 255, 148, 148, 148, 255, 173, 173, 173, 255, 180, 180, 180, 255, 181, 181, 181, 255, 183, 183, 183, 255, 185, 185, 185, 255, 187, 187, 187, 255, 189, 189, 189, 255, 192, 192, 192, 255, 194, 194, 194, 255, 187, 187, 187, 255, 161, 161, 161, 255, 181, 181, 181, 255, 137, 137, 137, 255, 74, 74, 74, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 42, 42, 42, 109, 72, 72, 72, 255, 250, 250, 250, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 231, 231, 231, 255, 197, 197, 197, 255, 134, 134, 134, 255, 102, 102, 102, 255, 132, 132, 132, 255, 181, 181, 181, 255, 187, 187, 187, 255, 152, 152, 152, 255, 136, 136, 136, 255, 113, 113, 113, 255, 102, 102, 102, 255, 106, 106, 106, 255, 128, 128, 128, 255, 150, 150, 150, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 181, 181, 181, 255, 183, 183, 183, 255, 185, 185, 185, 255, 187, 187, 187, 255, 189, 189, 189, 255, 192, 192, 192, 255, 194, 194, 194, 255, 187, 187, 187, 255, 142, 142, 142, 255, 181, 181, 181, 255, 201, 201, 201, 255, 137, 137, 137, 255, 72, 72, 72, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 41, 41, 41, 109, 70, 70, 70, 255, 253, 253, 253, 255, 250, 250, 250, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 231, 231, 231, 255, 229, 229, 229, 255, 204, 204, 204, 255, 148, 148, 148, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 110, 110, 110, 255, 130, 130, 130, 255, 147, 147, 147, 255, 169, 169, 169, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 181, 181, 181, 255, 183, 183, 183, 255, 185, 185, 185, 255, 187, 187, 187, 255, 189, 189, 189, 255, 182, 182, 182, 255, 159, 159, 159, 255, 101, 101, 101, 255, 51, 51, 51, 255, 51, 51, 51, 255, 164, 164, 164, 255, 203, 203, 203, 255, 128, 128, 128, 255, 70, 70, 70, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 41, 41, 41, 107, 68, 68, 68, 255, 255, 255, 255, 255, 253, 253, 253, 255, 250, 250, 250, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 209, 209, 209, 255, 147, 147, 147, 255, 152, 152, 152, 255, 165, 165, 165, 255, 167, 167, 167, 255, 169, 169, 169, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 181, 181, 181, 255, 183, 183, 183, 255, 185, 185, 185, 255, 176, 176, 176, 255, 152, 152, 152, 255, 127, 127, 127, 255, 122, 122, 122, 255, 131, 131, 131, 255, 143, 143, 143, 255, 129, 129, 129, 255, 102, 102, 102, 255, 103, 103, 103, 255, 74, 74, 74, 255, 62, 62, 62, 255, 62, 62, 62, 249, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 36, 36, 36, 87, 66, 66, 66, 255, 113, 113, 113, 255, 220, 220, 220, 255, 253, 253, 253, 255, 250, 250, 250, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 194, 194, 194, 255, 165, 165, 165, 255, 167, 167, 167, 255, 169, 169, 169, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 181, 181, 181, 255, 171, 171, 171, 255, 140, 140, 140, 255, 111, 111, 111, 255, 100, 100, 100, 255, 112, 112, 112, 255, 122, 122, 122, 255, 131, 131, 131, 255, 143, 143, 143, 255, 153, 153, 153, 255, 165, 165, 165, 255, 176, 176, 176, 255, 187, 187, 187, 255, 179, 179, 179, 255, 149, 149, 149, 255, 108, 108, 108, 255, 38, 38, 38, 170, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 27, 27, 27, 77, 54, 54, 54, 211, 65, 65, 65, 255, 136, 136, 136, 255, 241, 241, 241, 255, 250, 250, 250, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 231, 231, 231, 255, 229, 229, 229, 255, 197, 197, 197, 255, 167, 167, 167, 255, 169, 169, 169, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 164, 164, 164, 255, 131, 131, 131, 255, 91, 91, 91, 255, 81, 81, 81, 255, 91, 91, 91, 255, 100, 100, 100, 255, 112, 112, 112, 255, 122, 122, 122, 255, 131, 131, 131, 255, 143, 143, 143, 255, 153, 153, 153, 255, 165, 165, 165, 255, 176, 176, 176, 255, 187, 187, 187, 255, 196, 196, 196, 255, 224, 224, 224, 255, 244, 244, 244, 255, 255, 255, 255, 255, 38, 38, 38, 174, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 22, 35, 35, 35, 116, 59, 59, 59, 240, 74, 74, 74, 255, 157, 157, 157, 255, 250, 250, 250, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 231, 231, 231, 255, 198, 198, 198, 255, 169, 169, 169, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 99, 99, 99, 255, 60, 60, 60, 255, 69, 69, 69, 255, 81, 81, 81, 255, 91, 91, 91, 255, 100, 100, 100, 255, 112, 112, 112, 255, 122, 122, 122, 255, 131, 131, 131, 255, 143, 143, 143, 255, 153, 153, 153, 255, 165, 165, 165, 255, 176, 176, 176, 255, 195, 195, 195, 255, 227, 227, 227, 255, 252, 252, 252, 255, 255, 255, 255, 255, 230, 230, 230, 255, 153, 153, 153, 255, 35, 35, 35, 141, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 31, 42, 42, 42, 161, 59, 59, 59, 248, 84, 84, 84, 255, 179, 179, 179, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 201, 201, 201, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 92, 92, 92, 255, 69, 69, 69, 255, 81, 81, 81, 255, 91, 91, 91, 255, 100, 100, 100, 255, 112, 112, 112, 255, 122, 122, 122, 255, 131, 131, 131, 255, 143, 143, 143, 255, 153, 153, 153, 255, 170, 170, 170, 255, 205, 205, 205, 255, 241, 241, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 204, 204, 255, 114, 114, 114, 249, 39, 39, 39, 188, 22, 22, 22, 75, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 17, 17, 17, 56, 47, 47, 47, 200, 59, 59, 59, 255, 106, 106, 106, 255, 200, 200, 200, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 204, 204, 204, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 181, 181, 181, 255, 136, 136, 177, 255, 108, 108, 127, 255, 91, 91, 91, 255, 100, 100, 100, 255, 112, 112, 112, 255, 122, 122, 122, 255, 131, 131, 131, 255, 143, 143, 143, 255, 171, 171, 171, 255, 219, 219, 219, 255, 250, 250, 250, 255, 255, 255, 255, 255, 242, 242, 242, 255, 166, 166, 166, 255, 74, 74, 74, 241, 37, 37, 37, 175, 15, 15, 15, 53, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 19, 28, 28, 28, 97, 49, 49, 49, 222, 57, 57, 57, 255, 128, 128, 128, 255, 221, 221, 221, 255, 242, 242, 242, 255, 239, 239, 239, 255, 206, 206, 206, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 165, 165, 165, 255, 119, 119, 119, 255, 128, 128, 166, 255, 153, 153, 204, 255, 146, 146, 191, 255, 127, 127, 146, 255, 122, 122, 122, 255, 138, 138, 138, 255, 192, 192, 192, 255, 241, 241, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 217, 217, 255, 128, 128, 128, 255, 60, 60, 60, 232, 34, 34, 34, 145, 0, 0, 0, 30, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 27, 37, 37, 37, 147, 51, 51, 51, 241, 67, 67, 67, 255, 149, 149, 149, 255, 231, 231, 231, 255, 208, 208, 208, 255, 170, 170, 170, 255, 133, 133, 133, 255, 87, 87, 87, 255, 55, 55, 55, 255, 55, 55, 55, 255, 52, 52, 52, 255, 86, 86, 102, 255, 140, 140, 185, 255, 153, 153, 204, 255, 150, 150, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 179, 179, 255, 102, 102, 102, 255, 42, 42, 42, 212, 29, 29, 29, 112, 0, 0, 0, 25, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 17, 17, 17, 53, 39, 39, 39, 176, 54, 54, 54, 255, 65, 65, 65, 255, 116, 116, 116, 255, 61, 61, 61, 255, 54, 54, 54, 255, 54, 54, 54, 255, 44, 44, 44, 213, 34, 34, 34, 128, 0, 0, 0, 40, 33, 33, 33, 147, 47, 47, 47, 241, 89, 89, 108, 255, 140, 140, 185, 255, 236, 236, 236, 255, 153, 153, 153, 255, 77, 77, 77, 255, 41, 41, 41, 200, 21, 21, 21, 77, 0, 0, 0, 19, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 15, 22, 22, 22, 77, 43, 43, 43, 211, 52, 52, 52, 255, 48, 48, 48, 241, 36, 36, 36, 161, 16, 16, 16, 53, 0, 0, 0, 18, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 33, 37, 37, 37, 175, 49, 49, 49, 248, 49, 49, 49, 248, 37, 37, 37, 176, 15, 15, 15, 55, 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 19, 26, 26, 26, 63, 0, 0, 0, 24, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 19, 19, 19, 42, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_DeviceCD(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 48, 100, 100, 100, 98, 99, 99, 99, 132, 99, 99, 99, 164, 100, 100, 100, 195, 99, 99, 99, 196, 99, 99, 99, 196, 98, 98, 98, 166, 97, 97, 97, 135, 95, 95, 95, 103, 89, 89, 89, 55, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 64, 101, 101, 101, 161, 101, 101, 101, 225, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 99, 99, 99, 229, 96, 96, 96, 168, 87, 87, 87, 75, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 96, 102, 102, 102, 224, 102, 102, 102, 255, 102, 102, 102, 255, 129, 129, 131, 255, 165, 165, 169, 255, 201, 201, 207, 255, 226, 226, 236, 255, 242, 242, 255, 255, 241, 241, 255, 255, 239, 239, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 217, 217, 236, 255, 200, 200, 217, 255, 166, 166, 179, 255, 126, 126, 131, 255, 102, 102, 102, 255, 102, 102, 102, 255, 98, 98, 98, 231, 87, 87, 87, 113, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 64, 102, 102, 102, 224, 102, 102, 102, 255, 112, 112, 112, 255, 168, 168, 169, 255, 230, 230, 236, 255, 247, 247, 255, 255, 246, 246, 255, 255, 244, 244, 255, 255, 242, 242, 255, 255, 241, 241, 255, 255, 239, 239, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 210, 210, 236, 255, 163, 163, 179, 255, 110, 110, 112, 255, 102, 102, 102, 255, 95, 95, 95, 222, 77, 77, 77, 85, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 143, 102, 102, 102, 255, 102, 102, 102, 255, 179, 179, 179, 255, 245, 245, 245, 255, 254, 254, 255, 255, 247, 247, 255, 255, 246, 246, 255, 255, 244, 244, 255, 255, 242, 242, 255, 255, 241, 241, 255, 255, 239, 239, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 213, 213, 245, 255, 161, 161, 179, 255, 109, 109, 112, 255, 102, 102, 102, 255, 85, 85, 85, 172, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 16, 102, 102, 102, 207, 102, 102, 102, 255, 131, 131, 131, 255, 226, 226, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 255, 255, 244, 244, 255, 255, 242, 242, 255, 255, 241, 241, 255, 255, 239, 239, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 202, 202, 236, 255, 130, 130, 140, 255, 102, 102, 102, 255, 94, 94, 94, 226, 35, 35, 35, 47, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 16, 102, 102, 102, 208, 102, 102, 102, 255, 159, 159, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 255, 255, 242, 242, 255, 255, 241, 241, 255, 255, 239, 239, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 157, 157, 179, 255, 102, 102, 102, 255, 92, 92, 92, 231, 28, 28, 28, 58, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 16, 102, 102, 102, 208, 102, 102, 102, 255, 188, 188, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 242, 255, 255, 239, 239, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 168, 168, 198, 255, 102, 102, 102, 255, 92, 92, 92, 231, 28, 28, 28, 58, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 207, 102, 102, 102, 255, 188, 188, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 166, 166, 198, 255, 102, 102, 102, 255, 92, 92, 92, 231, 0, 0, 0, 45, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 143, 102, 102, 102, 255, 159, 159, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 236, 236, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 161, 161, 188, 255, 102, 102, 102, 255, 73, 73, 73, 199, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 64, 102, 102, 102, 255, 131, 131, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 243, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 135, 135, 150, 255, 102, 102, 102, 255, 47, 47, 47, 140, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 224, 102, 102, 102, 255, 226, 226, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 205, 205, 245, 255, 109, 109, 112, 255, 94, 94, 94, 243, 0, 0, 0, 69, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 96, 102, 102, 102, 255, 179, 179, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 237, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 165, 165, 188, 255, 102, 102, 102, 255, 54, 54, 54, 181, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 224, 112, 112, 112, 255, 245, 245, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 117, 117, 121, 255, 93, 93, 93, 245, 0, 0, 0, 81, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 80, 102, 102, 102, 255, 163, 163, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 228, 255, 255, 237, 218, 255, 255, 240, 212, 255, 255, 246, 209, 255, 255, 239, 214, 255, 255, 233, 217, 255, 255, 219, 215, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 168, 168, 188, 255, 102, 102, 102, 255, 46, 46, 46, 176, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 162, 102, 102, 102, 255, 191, 191, 236, 255, 207, 207, 255, 255, 226, 226, 255, 255, 249, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 238, 255, 255, 255, 221, 255, 255, 255, 213, 255, 255, 255, 206, 255, 255, 255, 206, 255, 255, 255, 212, 255, 255, 255, 219, 255, 255, 255, 225, 255, 255, 239, 224, 255, 255, 213, 211, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 215, 215, 245, 255, 102, 102, 102, 255, 78, 78, 78, 229, 0, 0, 0, 70, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 240, 121, 121, 131, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 217, 217, 255, 255, 236, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 236, 255, 255, 255, 228, 255, 255, 255, 221, 255, 255, 255, 213, 255, 255, 255, 206, 255, 255, 255, 206, 255, 255, 255, 212, 255, 255, 255, 219, 255, 255, 255, 225, 255, 255, 255, 232, 255, 255, 252, 235, 255, 255, 215, 213, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 140, 140, 150, 255, 102, 102, 102, 255, 0, 0, 0, 121, 0, 0, 0, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 102, 102, 102, 48, 102, 102, 102, 255, 153, 153, 179, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 207, 207, 255, 255, 226, 226, 255, 255, 249, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 255, 255, 255, 235, 255, 255, 255, 228, 255, 255, 255, 228, 255, 255, 241, 228, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 225, 214, 255, 255, 247, 222, 255, 255, 255, 232, 255, 255, 255, 238, 255, 255, 252, 241, 255, 255, 207, 207, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 173, 173, 188, 255, 102, 102, 102, 255, 36, 36, 36, 184, 0, 0, 0, 30, 0, 0, 0, 0,
+ 0, 0, 0, 0, 100, 100, 100, 98, 102, 102, 102, 255, 179, 179, 217, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 217, 217, 255, 255, 236, 236, 255, 255, 255, 255, 255, 255, 255, 251, 255, 255, 255, 242, 255, 255, 255, 235, 255, 255, 255, 239, 255, 255, 255, 255, 255, 255, 231, 231, 236, 255, 152, 152, 169, 255, 130, 130, 140, 255, 150, 150, 169, 255, 183, 183, 217, 255, 208, 208, 255, 255, 237, 223, 255, 255, 255, 238, 255, 255, 255, 244, 255, 255, 237, 233, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 206, 206, 226, 255, 102, 102, 102, 255, 55, 55, 55, 209, 0, 0, 0, 58, 0, 0, 0, 6,
+ 0, 0, 0, 0, 99, 99, 99, 132, 102, 102, 102, 255, 198, 198, 245, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 214, 214, 255, 255, 255, 250, 255, 255, 255, 242, 255, 255, 255, 239, 255, 255, 255, 255, 255, 255, 198, 198, 198, 255, 112, 112, 112, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 167, 167, 198, 255, 204, 204, 255, 255, 245, 232, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 215, 215, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 102, 102, 102, 255, 66, 66, 66, 221, 0, 0, 0, 85, 0, 0, 0, 10,
+ 0, 0, 0, 0, 100, 100, 100, 179, 102, 102, 102, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 226, 226, 255, 255, 255, 250, 255, 255, 255, 242, 255, 255, 226, 221, 255, 255, 220, 220, 236, 255, 112, 112, 112, 255, 87, 87, 87, 243, 32, 32, 32, 204, 0, 0, 0, 173, 18, 18, 18, 178, 88, 88, 88, 239, 102, 102, 102, 255, 179, 179, 217, 255, 221, 217, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 231, 231, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 110, 110, 112, 255, 82, 82, 82, 236, 0, 0, 0, 106, 0, 0, 0, 13,
+ 0, 0, 0, 0, 100, 100, 100, 195, 108, 108, 112, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 236, 236, 255, 255, 255, 250, 255, 255, 255, 242, 255, 255, 204, 204, 255, 255, 153, 153, 179, 255, 102, 102, 102, 255, 24, 24, 24, 200, 0, 0, 0, 136, 0, 0, 0, 67, 0, 0, 0, 33, 24, 24, 24, 68, 102, 102, 102, 255, 141, 141, 159, 255, 208, 208, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 240, 240, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 136, 136, 140, 255, 82, 82, 82, 237, 0, 0, 0, 127, 0, 0, 0, 18,
+ 0, 0, 0, 0, 99, 99, 99, 196, 130, 130, 140, 255, 213, 213, 255, 255, 212, 212, 255, 255, 212, 212, 255, 255, 211, 211, 255, 255, 211, 211, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 210, 210, 255, 255, 209, 209, 255, 255, 209, 209, 255, 255, 209, 209, 255, 255, 208, 208, 255, 255, 243, 243, 255, 255, 255, 250, 255, 255, 249, 238, 255, 255, 206, 206, 255, 255, 147, 147, 169, 255, 102, 102, 102, 255, 0, 0, 0, 172, 0, 0, 0, 61, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 4, 96, 96, 96, 203, 128, 128, 140, 255, 207, 207, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 244, 244, 255, 255, 210, 210, 255, 255, 211, 211, 255, 255, 212, 212, 255, 255, 213, 213, 255, 255, 214, 214, 255, 255, 214, 214, 255, 255, 216, 216, 255, 255, 217, 217, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 219, 219, 255, 255, 220, 220, 255, 255, 132, 132, 140, 255, 82, 82, 82, 237, 0, 0, 0, 131, 0, 0, 0, 18,
+ 0, 0, 0, 0, 99, 99, 99, 196, 119, 119, 121, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 243, 243, 255, 255, 255, 250, 255, 255, 255, 242, 255, 255, 213, 213, 255, 255, 143, 143, 159, 255, 102, 102, 102, 255, 10, 10, 10, 173, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 16, 102, 102, 102, 255, 134, 134, 150, 255, 204, 204, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 236, 236, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 128, 128, 140, 255, 82, 82, 82, 237, 0, 0, 0, 131, 0, 0, 0, 18,
+ 0, 0, 0, 0, 99, 99, 99, 196, 102, 102, 102, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 236, 236, 255, 255, 255, 250, 255, 255, 255, 242, 255, 255, 222, 218, 255, 255, 183, 183, 217, 255, 102, 102, 102, 255, 78, 78, 78, 228, 28, 28, 28, 59, 0, 0, 0, 3, 102, 102, 102, 16, 102, 102, 102, 192, 102, 102, 102, 255, 185, 185, 198, 255, 226, 222, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 226, 226, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 128, 128, 140, 255, 82, 82, 82, 237, 0, 0, 0, 131, 0, 0, 0, 18,
+ 0, 0, 0, 0, 95, 95, 95, 137, 102, 102, 102, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 219, 219, 255, 255, 255, 250, 255, 255, 255, 242, 255, 255, 244, 229, 255, 255, 208, 208, 255, 255, 141, 141, 159, 255, 102, 102, 102, 255, 99, 99, 99, 246, 96, 96, 96, 202, 102, 102, 102, 240, 102, 102, 102, 255, 159, 159, 159, 255, 255, 255, 255, 255, 255, 242, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 210, 210, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 108, 108, 112, 255, 71, 71, 71, 229, 0, 0, 0, 128, 0, 0, 0, 18,
+ 0, 0, 0, 0, 96, 96, 96, 119, 102, 102, 102, 255, 200, 200, 217, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 244, 239, 255, 255, 255, 242, 255, 255, 255, 235, 255, 255, 237, 220, 255, 255, 204, 204, 255, 255, 172, 172, 207, 255, 135, 135, 150, 255, 129, 129, 140, 255, 129, 129, 140, 255, 187, 187, 198, 255, 255, 255, 255, 255, 255, 241, 255, 255, 255, 238, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 252, 252, 255, 255, 233, 233, 255, 255, 210, 210, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 198, 198, 245, 255, 102, 102, 102, 255, 60, 60, 60, 219, 0, 0, 0, 113, 0, 0, 0, 15,
+ 0, 0, 0, 0, 88, 88, 88, 56, 102, 102, 102, 255, 175, 175, 188, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 216, 215, 255, 255, 252, 240, 255, 255, 255, 235, 255, 255, 255, 228, 255, 255, 242, 217, 255, 255, 218, 208, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 229, 220, 255, 255, 255, 233, 255, 255, 255, 232, 255, 255, 255, 238, 255, 255, 255, 244, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 242, 255, 255, 223, 223, 255, 255, 207, 207, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 172, 172, 207, 255, 102, 102, 102, 255, 33, 33, 33, 198, 0, 0, 0, 93, 0, 0, 0, 12,
+ 0, 0, 0, 0, 0, 0, 0, 4, 101, 101, 101, 242, 142, 142, 150, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 215, 212, 255, 255, 252, 233, 255, 255, 255, 228, 255, 255, 255, 221, 255, 255, 255, 213, 255, 255, 255, 206, 255, 255, 244, 207, 255, 255, 255, 212, 255, 255, 255, 219, 255, 255, 255, 225, 255, 255, 255, 232, 255, 255, 255, 238, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 255, 255, 236, 236, 255, 255, 214, 214, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 147, 147, 169, 255, 102, 102, 102, 255, 9, 9, 9, 178, 0, 0, 0, 61, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 96, 169, 102, 102, 102, 255, 218, 218, 245, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 211, 208, 255, 255, 243, 222, 255, 255, 255, 221, 255, 255, 255, 213, 255, 255, 255, 206, 255, 255, 255, 206, 255, 255, 255, 212, 255, 255, 255, 219, 255, 255, 255, 225, 255, 255, 255, 237, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 245, 255, 255, 223, 223, 255, 255, 207, 207, 255, 255, 204, 204, 255, 255, 115, 115, 121, 255, 82, 82, 82, 239, 0, 0, 0, 163, 0, 0, 0, 36, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 91, 90, 102, 102, 102, 255, 171, 171, 188, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 218, 211, 255, 255, 234, 213, 255, 255, 242, 208, 255, 255, 245, 208, 255, 255, 243, 213, 255, 255, 237, 219, 255, 255, 227, 221, 255, 255, 247, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 255, 255, 194, 194, 207, 255, 102, 102, 102, 255, 46, 46, 46, 211, 0, 0, 0, 128, 0, 0, 0, 19, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 98, 98, 98, 232, 117, 117, 121, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 235, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 140, 140, 140, 255, 97, 97, 97, 251, 9, 9, 9, 180, 0, 0, 0, 79, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 87, 87, 113, 102, 102, 102, 255, 175, 175, 198, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 217, 217, 255, 102, 102, 102, 255, 58, 58, 58, 223, 0, 0, 0, 151, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 98, 98, 98, 233, 109, 109, 112, 255, 209, 209, 245, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 242, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 131, 131, 255, 97, 97, 97, 251, 9, 9, 9, 183, 0, 0, 0, 96, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 81, 81, 101, 102, 102, 102, 255, 137, 137, 150, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 233, 233, 255, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 179, 179, 255, 102, 102, 102, 255, 52, 52, 52, 219, 0, 0, 0, 149, 0, 0, 0, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 87, 87, 87, 187, 102, 102, 102, 255, 170, 170, 198, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 247, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 217, 217, 255, 102, 102, 102, 255, 82, 82, 82, 239, 0, 0, 0, 172, 0, 0, 0, 88, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 44, 37, 93, 93, 93, 228, 102, 102, 102, 255, 181, 181, 217, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 239, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 226, 226, 255, 112, 112, 112, 255, 97, 97, 97, 251, 9, 9, 9, 188, 0, 0, 0, 121, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 31, 31, 31, 53, 99, 99, 99, 247, 109, 109, 112, 255, 179, 179, 217, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 237, 237, 255, 255, 238, 238, 255, 255, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 226, 226, 255, 112, 112, 112, 255, 97, 97, 97, 251, 24, 24, 24, 201, 0, 0, 0, 143, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 56, 56, 56, 87, 98, 98, 98, 248, 102, 102, 102, 255, 167, 167, 198, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 237, 237, 255, 255, 238, 238, 255, 255, 240, 240, 255, 255, 245, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 217, 217, 255, 112, 112, 112, 255, 97, 97, 97, 251, 24, 24, 24, 201, 0, 0, 0, 146, 0, 0, 0, 63, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 38, 38, 38, 87, 90, 90, 90, 234, 102, 102, 102, 255, 142, 142, 159, 255, 205, 205, 245, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 237, 237, 255, 255, 238, 238, 255, 255, 240, 240, 255, 255, 242, 242, 255, 255, 244, 244, 255, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 179, 179, 255, 102, 102, 102, 255, 97, 97, 97, 251, 24, 24, 24, 201, 0, 0, 0, 146, 0, 0, 0, 63, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 24, 24, 24, 67, 83, 83, 83, 216, 102, 102, 102, 255, 116, 116, 121, 255, 172, 172, 198, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 237, 237, 255, 255, 238, 238, 255, 255, 240, 240, 255, 255, 242, 242, 255, 255, 244, 244, 255, 255, 245, 245, 255, 255, 250, 250, 255, 255, 255, 255, 255, 255, 217, 217, 217, 255, 131, 131, 131, 255, 102, 102, 102, 255, 82, 82, 82, 239, 9, 9, 9, 188, 0, 0, 0, 143, 0, 0, 0, 63, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 42, 51, 51, 51, 159, 93, 93, 93, 244, 102, 102, 102, 255, 117, 117, 121, 255, 176, 176, 198, 255, 215, 215, 245, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 237, 237, 255, 255, 238, 238, 255, 255, 240, 240, 255, 255, 242, 242, 255, 255, 244, 244, 255, 255, 245, 245, 255, 255, 238, 238, 245, 255, 194, 194, 198, 255, 140, 140, 140, 255, 102, 102, 102, 255, 97, 97, 97, 251, 52, 52, 52, 219, 0, 0, 0, 172, 0, 0, 0, 121, 0, 0, 0, 46, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 24, 19, 19, 19, 86, 66, 66, 66, 198, 98, 98, 98, 250, 102, 102, 102, 255, 110, 110, 112, 255, 148, 148, 159, 255, 180, 180, 198, 255, 214, 214, 236, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 237, 237, 255, 255, 238, 238, 255, 255, 240, 240, 255, 255, 242, 242, 255, 255, 226, 226, 236, 255, 191, 191, 198, 255, 156, 156, 159, 255, 111, 111, 112, 255, 102, 102, 102, 255, 97, 97, 97, 251, 58, 58, 58, 223, 9, 9, 9, 183, 0, 0, 0, 149, 0, 0, 0, 88, 0, 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 39, 0, 0, 0, 96, 52, 52, 52, 189, 78, 78, 78, 230, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 127, 127, 131, 255, 136, 136, 140, 255, 136, 136, 140, 255, 137, 137, 140, 255, 128, 128, 131, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 87, 87, 87, 243, 53, 53, 53, 217, 9, 9, 9, 181, 0, 0, 0, 151, 0, 0, 0, 96, 0, 0, 0, 40, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 31, 0, 0, 0, 76, 12, 12, 12, 130, 35, 35, 35, 185, 61, 61, 61, 214, 77, 77, 77, 231, 82, 82, 82, 237, 82, 82, 82, 237, 82, 82, 82, 237, 82, 82, 82, 237, 82, 82, 82, 237, 77, 77, 77, 233, 59, 59, 59, 220, 40, 40, 40, 203, 9, 9, 9, 180, 0, 0, 0, 164, 0, 0, 0, 136, 0, 0, 0, 87, 0, 0, 0, 39, 0, 0, 0, 13, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 36, 0, 0, 0, 61, 0, 0, 0, 94, 0, 0, 0, 119, 0, 0, 0, 130, 0, 0, 0, 131, 0, 0, 0, 131, 0, 0, 0, 131, 0, 0, 0, 130, 0, 0, 0, 119, 0, 0, 0, 96, 0, 0, 0, 67, 0, 0, 0, 37, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_DeviceComputer(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 171, 64, 130, 129, 168, 116, 150, 150, 186, 148, 161, 161, 197, 195, 155, 155, 193, 255, 120, 118, 164, 142, 32, 0, 64, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 140, 166, 32, 136, 136, 165, 82, 144, 143, 172, 132, 162, 161, 189, 179, 177, 177, 204, 225, 180, 180, 208, 255, 186, 186, 215, 255, 184, 184, 214, 255, 165, 165, 200, 255, 151, 151, 191, 255, 138, 138, 182, 255, 125, 124, 172, 250, 26, 4, 57, 110, 32, 0, 64, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 161, 16, 143, 143, 160, 65, 140, 139, 159, 116, 163, 163, 183, 164, 173, 173, 192, 195, 181, 181, 201, 255, 199, 199, 219, 255, 207, 207, 227, 255, 194, 194, 218, 255, 173, 173, 201, 255, 158, 158, 190, 255, 143, 143, 179, 255, 133, 133, 173, 255, 132, 132, 174, 255, 131, 131, 175, 255, 130, 130, 176, 255, 129, 129, 177, 255, 128, 128, 178, 255, 24, 4, 56, 173, 26, 9, 60, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 150, 156, 48, 145, 144, 153, 83, 156, 155, 165, 132, 175, 175, 186, 195, 190, 190, 201, 226, 201, 201, 213, 255, 209, 209, 222, 255, 228, 228, 242, 255, 205, 205, 222, 255, 182, 182, 202, 255, 165, 165, 188, 255, 149, 149, 176, 255, 138, 138, 168, 255, 137, 137, 169, 255, 136, 136, 170, 255, 134, 134, 172, 255, 133, 133, 173, 255, 132, 132, 174, 255, 131, 131, 175, 255, 130, 130, 176, 255, 129, 129, 177, 255, 130, 140, 188, 255, 126, 126, 180, 255, 110, 106, 157, 239, 110, 107, 158, 152, 115, 111, 164, 90, 111, 108, 159, 55, 43, 0, 43, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 153, 153, 153, 16, 152, 152, 153, 113, 168, 168, 170, 164, 190, 189, 193, 195, 200, 200, 204, 255, 216, 216, 221, 255, 232, 232, 238, 255, 241, 241, 247, 255, 215, 215, 225, 255, 196, 196, 208, 255, 177, 177, 193, 255, 159, 159, 178, 255, 142, 142, 164, 255, 141, 141, 165, 255, 140, 140, 166, 255, 139, 139, 167, 255, 138, 138, 168, 255, 137, 137, 169, 255, 136, 136, 170, 255, 134, 134, 172, 255, 133, 133, 173, 255, 142, 154, 189, 255, 149, 173, 205, 255, 154, 197, 225, 255, 155, 214, 240, 255, 153, 229, 255, 255, 136, 176, 218, 255, 125, 125, 181, 255, 163, 163, 207, 255, 176, 176, 215, 255, 165, 165, 206, 255, 158, 158, 201, 255, 147, 147, 192, 255, 136, 135, 183, 213, 120, 118, 169, 168, 113, 111, 163, 136, 105, 101, 153, 74, 90, 80, 135, 23, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 152, 152, 153, 176, 236, 236, 236, 255, 253, 253, 254, 255, 225, 225, 228, 255, 205, 205, 210, 255, 184, 184, 193, 255, 165, 165, 176, 255, 146, 146, 160, 255, 145, 145, 161, 255, 144, 144, 162, 255, 143, 143, 163, 255, 142, 142, 164, 255, 141, 141, 165, 255, 140, 140, 166, 255, 139, 139, 167, 255, 138, 138, 168, 255, 145, 152, 180, 255, 157, 173, 197, 255, 169, 195, 213, 255, 184, 224, 234, 255, 193, 250, 255, 255, 185, 245, 255, 255, 177, 242, 255, 255, 169, 237, 255, 255, 160, 233, 255, 255, 153, 229, 255, 255, 139, 194, 232, 255, 124, 124, 182, 255, 165, 165, 208, 255, 191, 191, 223, 255, 191, 191, 223, 255, 191, 191, 223, 255, 191, 191, 223, 255, 191, 191, 223, 255, 191, 191, 223, 255, 182, 182, 216, 255, 174, 174, 210, 255, 154, 154, 195, 255, 140, 139, 184, 242, 129, 129, 174, 198, 106, 104, 156, 152, 101, 99, 150, 106, 99, 97, 150, 71, 32, 0, 64, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 149, 149, 151, 196, 253, 253, 254, 255, 175, 175, 180, 255, 149, 149, 157, 255, 148, 148, 158, 255, 147, 147, 159, 255, 146, 146, 160, 255, 145, 145, 161, 255, 144, 144, 162, 255, 143, 143, 163, 255, 142, 142, 164, 255, 141, 141, 165, 255, 152, 167, 188, 255, 167, 195, 211, 255, 182, 218, 228, 255, 196, 240, 244, 255, 204, 255, 255, 255, 204, 255, 255, 255, 203, 255, 255, 255, 198, 252, 255, 255, 191, 249, 255, 255, 183, 244, 255, 255, 175, 241, 255, 255, 168, 237, 255, 255, 160, 233, 255, 255, 152, 229, 255, 255, 139, 200, 237, 255, 123, 123, 183, 255, 164, 164, 207, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 188, 188, 218, 255, 170, 170, 204, 255, 158, 158, 195, 255, 133, 133, 176, 227, 109, 108, 157, 183, 97, 95, 147, 137, 32, 0, 64, 14,
+ 143, 142, 149, 152, 238, 238, 240, 255, 186, 186, 192, 255, 148, 148, 158, 255, 147, 147, 159, 255, 146, 146, 160, 255, 145, 145, 161, 255, 145, 160, 179, 255, 148, 181, 203, 255, 155, 200, 221, 255, 165, 220, 238, 255, 177, 242, 255, 255, 185, 245, 255, 255, 191, 249, 255, 255, 197, 251, 255, 255, 201, 253, 255, 255, 203, 254, 255, 255, 202, 254, 255, 255, 198, 252, 255, 255, 193, 250, 255, 255, 187, 246, 255, 255, 180, 243, 255, 255, 172, 239, 255, 255, 165, 235, 255, 255, 157, 232, 255, 255, 150, 228, 255, 255, 141, 224, 255, 255, 122, 122, 184, 255, 157, 157, 204, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 196, 196, 230, 255, 159, 159, 219, 255, 109, 109, 168, 255, 25, 4, 57, 117,
+ 135, 132, 144, 91, 216, 216, 221, 255, 202, 202, 210, 255, 147, 147, 159, 255, 132, 184, 213, 255, 133, 200, 231, 255, 137, 222, 255, 255, 145, 225, 255, 255, 152, 229, 255, 255, 159, 233, 255, 255, 167, 236, 255, 255, 173, 240, 255, 255, 180, 243, 255, 255, 186, 246, 255, 255, 190, 248, 255, 255, 193, 250, 255, 255, 194, 250, 255, 255, 194, 250, 255, 255, 191, 249, 255, 255, 187, 246, 255, 255, 182, 244, 255, 255, 175, 241, 255, 255, 169, 237, 255, 255, 162, 234, 255, 255, 154, 230, 255, 255, 147, 226, 255, 255, 139, 223, 255, 255, 121, 121, 185, 255, 148, 148, 201, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 192, 192, 230, 255, 160, 160, 220, 255, 121, 121, 207, 255, 105, 105, 202, 255, 105, 105, 202, 255, 103, 103, 165, 255, 26, 4, 58, 208,
+ 108, 99, 122, 24, 190, 190, 197, 255, 223, 223, 231, 255, 146, 146, 160, 255, 121, 208, 249, 255, 126, 216, 255, 255, 134, 220, 255, 255, 141, 224, 255, 255, 149, 227, 255, 255, 155, 230, 255, 255, 162, 234, 255, 255, 168, 237, 255, 255, 174, 240, 255, 255, 179, 242, 255, 255, 183, 244, 255, 255, 185, 246, 255, 255, 186, 246, 255, 255, 186, 246, 255, 255, 184, 245, 255, 255, 180, 243, 255, 255, 175, 241, 255, 255, 170, 238, 255, 255, 164, 235, 255, 255, 157, 232, 255, 255, 151, 228, 255, 255, 143, 225, 255, 255, 136, 221, 255, 255, 123, 144, 204, 255, 133, 133, 194, 255, 196, 196, 222, 255, 204, 204, 227, 255, 216, 216, 234, 255, 231, 231, 242, 255, 248, 248, 252, 255, 248, 248, 252, 255, 248, 248, 252, 255, 248, 248, 252, 255, 239, 239, 248, 255, 203, 203, 235, 255, 159, 159, 219, 255, 116, 116, 204, 255, 108, 108, 201, 255, 108, 108, 201, 255, 108, 108, 201, 255, 108, 108, 201, 255, 108, 108, 201, 255, 103, 103, 165, 255, 25, 4, 57, 222,
+ 0, 0, 128, 2, 163, 162, 175, 215, 238, 238, 247, 255, 145, 145, 161, 255, 124, 195, 232, 255, 123, 215, 255, 255, 131, 218, 255, 255, 137, 222, 255, 255, 144, 225, 255, 255, 151, 228, 255, 255, 157, 231, 255, 255, 163, 234, 255, 255, 168, 237, 255, 255, 172, 239, 255, 255, 175, 241, 255, 255, 177, 242, 255, 255, 178, 242, 255, 255, 178, 242, 255, 255, 176, 241, 255, 255, 173, 240, 255, 255, 169, 237, 255, 255, 164, 235, 255, 255, 158, 232, 255, 255, 152, 229, 255, 255, 146, 226, 255, 255, 139, 223, 255, 255, 132, 219, 255, 255, 121, 149, 209, 255, 117, 117, 189, 255, 193, 193, 220, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 194, 194, 223, 255, 203, 203, 230, 255, 156, 156, 217, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 104, 104, 165, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 138, 136, 153, 154, 235, 235, 245, 255, 166, 166, 183, 255, 129, 176, 209, 255, 119, 213, 255, 255, 126, 216, 255, 255, 133, 219, 255, 255, 139, 223, 255, 255, 145, 226, 255, 255, 151, 228, 255, 255, 156, 231, 255, 255, 161, 233, 255, 255, 165, 235, 255, 255, 168, 237, 255, 255, 169, 237, 255, 255, 170, 238, 255, 255, 170, 238, 255, 255, 168, 237, 255, 255, 166, 236, 255, 255, 162, 234, 255, 255, 157, 232, 255, 255, 152, 229, 255, 255, 147, 227, 255, 255, 141, 224, 255, 255, 135, 220, 255, 255, 128, 217, 255, 255, 120, 166, 222, 255, 116, 116, 190, 255, 188, 188, 218, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 162, 162, 210, 255, 112, 112, 199, 255, 112, 112, 199, 255, 112, 112, 199, 255, 112, 112, 199, 255, 112, 112, 199, 255, 112, 112, 199, 255, 112, 112, 199, 255, 111, 111, 193, 255, 107, 107, 176, 255, 110, 110, 190, 255, 105, 105, 164, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 131, 127, 148, 91, 209, 209, 222, 255, 180, 180, 198, 255, 132, 163, 192, 255, 115, 210, 255, 255, 121, 214, 255, 255, 128, 217, 255, 255, 133, 220, 255, 255, 139, 223, 255, 255, 145, 225, 255, 255, 150, 228, 255, 255, 154, 230, 255, 255, 157, 231, 255, 255, 160, 233, 255, 255, 161, 234, 255, 255, 162, 234, 255, 255, 162, 234, 255, 255, 160, 233, 255, 255, 158, 232, 255, 255, 155, 230, 255, 255, 151, 228, 255, 255, 146, 226, 255, 255, 141, 224, 255, 255, 135, 221, 255, 255, 130, 218, 255, 255, 123, 215, 255, 255, 117, 170, 227, 255, 115, 115, 191, 255, 173, 173, 213, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 162, 162, 210, 255, 115, 115, 198, 255, 115, 115, 198, 255, 115, 115, 198, 255, 115, 115, 198, 255, 114, 114, 195, 255, 109, 109, 178, 255, 104, 104, 161, 255, 108, 108, 159, 255, 112, 112, 163, 255, 111, 111, 186, 255, 105, 105, 164, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 120, 115, 140, 40, 185, 185, 202, 255, 194, 194, 212, 255, 137, 149, 176, 255, 110, 208, 255, 255, 116, 211, 255, 255, 122, 214, 255, 255, 128, 217, 255, 255, 133, 220, 255, 255, 138, 222, 255, 255, 142, 224, 255, 255, 146, 226, 255, 255, 149, 227, 255, 255, 152, 229, 255, 255, 153, 229, 255, 255, 154, 230, 255, 255, 153, 229, 255, 255, 152, 229, 255, 255, 150, 228, 255, 255, 147, 227, 255, 255, 144, 225, 255, 255, 139, 223, 255, 255, 135, 220, 255, 255, 130, 218, 255, 255, 123, 215, 255, 255, 118, 212, 255, 255, 113, 186, 239, 255, 114, 114, 192, 255, 173, 173, 213, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 163, 163, 210, 255, 117, 117, 196, 255, 116, 116, 194, 255, 111, 111, 180, 255, 106, 106, 167, 255, 105, 105, 156, 255, 121, 121, 172, 255, 140, 140, 191, 255, 153, 153, 204, 255, 128, 128, 179, 255, 113, 113, 185, 255, 106, 106, 164, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 64, 3, 161, 161, 182, 229, 212, 212, 229, 255, 140, 140, 166, 255, 107, 201, 250, 255, 111, 208, 255, 255, 116, 211, 255, 255, 122, 214, 255, 255, 127, 216, 255, 255, 132, 219, 255, 255, 135, 221, 255, 255, 139, 223, 255, 255, 141, 224, 255, 255, 144, 225, 255, 255, 145, 225, 255, 255, 146, 226, 255, 255, 145, 226, 255, 255, 144, 225, 255, 255, 142, 224, 255, 255, 139, 223, 255, 255, 136, 221, 255, 255, 133, 219, 255, 255, 128, 217, 255, 255, 123, 215, 255, 255, 118, 212, 255, 255, 113, 209, 255, 255, 107, 195, 247, 255, 113, 113, 193, 255, 152, 152, 207, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 164, 164, 210, 255, 119, 119, 195, 255, 106, 106, 164, 255, 115, 115, 166, 255, 134, 134, 185, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 128, 128, 179, 255, 115, 115, 185, 255, 106, 106, 164, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 141, 140, 166, 170, 219, 219, 237, 255, 144, 144, 172, 255, 109, 186, 233, 255, 104, 205, 255, 255, 110, 208, 255, 255, 115, 210, 255, 255, 120, 213, 255, 255, 124, 215, 255, 255, 128, 217, 255, 255, 132, 219, 255, 255, 134, 220, 255, 255, 136, 221, 255, 255, 137, 222, 255, 255, 137, 222, 255, 255, 137, 222, 255, 255, 136, 221, 255, 255, 134, 220, 255, 255, 132, 219, 255, 255, 129, 217, 255, 255, 125, 216, 255, 255, 121, 214, 255, 255, 117, 211, 255, 255, 112, 209, 255, 255, 106, 206, 255, 255, 101, 203, 255, 255, 112, 112, 194, 255, 152, 152, 207, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 164, 164, 209, 255, 122, 122, 194, 255, 107, 107, 163, 255, 140, 140, 191, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 150, 150, 201, 255, 147, 147, 198, 255, 128, 128, 179, 255, 117, 117, 184, 255, 107, 107, 163, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 128, 126, 156, 107, 202, 202, 223, 255, 157, 157, 185, 255, 116, 169, 212, 255, 99, 202, 255, 255, 104, 205, 255, 255, 109, 207, 255, 255, 113, 209, 255, 255, 117, 211, 255, 255, 120, 213, 255, 255, 124, 215, 255, 255, 126, 216, 255, 255, 128, 217, 255, 255, 129, 217, 255, 255, 129, 217, 255, 255, 129, 217, 255, 255, 128, 217, 255, 255, 127, 216, 255, 255, 124, 215, 255, 255, 121, 214, 255, 255, 118, 212, 255, 255, 115, 210, 255, 255, 110, 208, 255, 255, 105, 206, 255, 255, 100, 203, 255, 255, 95, 200, 255, 255, 108, 122, 202, 255, 136, 136, 203, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 124, 124, 193, 255, 108, 108, 163, 255, 140, 140, 191, 255, 153, 153, 204, 255, 137, 137, 188, 255, 121, 121, 172, 255, 102, 102, 153, 255, 131, 131, 182, 255, 128, 128, 179, 255, 119, 119, 183, 255, 108, 108, 163, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 113, 108, 145, 41, 180, 180, 205, 255, 173, 173, 201, 255, 121, 155, 197, 255, 92, 199, 255, 255, 97, 202, 255, 255, 102, 204, 255, 255, 106, 206, 255, 255, 110, 208, 255, 255, 113, 209, 255, 255, 116, 211, 255, 255, 118, 212, 255, 255, 119, 213, 255, 255, 121, 214, 255, 255, 121, 214, 255, 255, 121, 214, 255, 255, 120, 213, 255, 255, 118, 212, 255, 255, 117, 211, 255, 255, 114, 210, 255, 255, 111, 208, 255, 255, 107, 207, 255, 255, 103, 205, 255, 255, 99, 202, 255, 255, 94, 200, 255, 255, 88, 197, 255, 255, 104, 131, 211, 255, 130, 130, 203, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 127, 127, 192, 255, 108, 108, 163, 255, 140, 140, 191, 255, 118, 118, 169, 255, 105, 105, 156, 255, 124, 124, 175, 255, 147, 147, 198, 255, 147, 147, 198, 255, 124, 124, 175, 255, 120, 120, 182, 255, 108, 108, 163, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 3, 164, 163, 192, 230, 185, 185, 212, 255, 128, 142, 182, 255, 86, 196, 255, 255, 90, 198, 255, 255, 95, 200, 255, 255, 99, 202, 255, 255, 102, 204, 255, 255, 105, 206, 255, 255, 108, 207, 255, 255, 110, 208, 255, 255, 112, 209, 255, 255, 112, 209, 255, 255, 113, 209, 255, 255, 113, 209, 255, 255, 112, 209, 255, 255, 111, 208, 255, 255, 108, 207, 255, 255, 106, 206, 255, 255, 103, 205, 255, 255, 100, 203, 255, 255, 96, 201, 255, 255, 91, 199, 255, 255, 87, 197, 255, 255, 82, 194, 255, 255, 96, 145, 223, 255, 113, 113, 200, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 129, 129, 191, 255, 109, 109, 162, 255, 140, 140, 191, 255, 140, 140, 191, 255, 153, 153, 204, 255, 134, 134, 185, 255, 115, 115, 166, 255, 102, 102, 153, 255, 115, 115, 166, 255, 122, 122, 181, 255, 109, 109, 162, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 141, 176, 184, 199, 199, 226, 255, 133, 133, 173, 255, 83, 189, 250, 255, 84, 195, 255, 255, 87, 197, 255, 255, 91, 199, 255, 255, 95, 200, 255, 255, 98, 202, 255, 255, 100, 203, 255, 255, 102, 204, 255, 255, 103, 205, 255, 255, 104, 205, 255, 255, 104, 205, 255, 255, 104, 205, 255, 255, 104, 205, 255, 255, 102, 204, 255, 255, 101, 203, 255, 255, 98, 202, 255, 255, 96, 201, 255, 255, 92, 199, 255, 255, 89, 198, 255, 255, 85, 195, 255, 255, 80, 193, 255, 255, 75, 191, 255, 255, 90, 149, 227, 255, 107, 107, 199, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 131, 131, 189, 255, 109, 109, 162, 255, 134, 134, 185, 255, 121, 121, 172, 255, 105, 105, 156, 255, 105, 105, 156, 255, 124, 124, 175, 255, 147, 147, 198, 255, 128, 128, 179, 255, 124, 124, 180, 255, 109, 109, 162, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 122, 162, 123, 192, 192, 221, 255, 140, 140, 180, 255, 87, 175, 235, 255, 76, 191, 255, 255, 81, 193, 255, 255, 84, 195, 255, 255, 87, 197, 255, 255, 90, 198, 255, 255, 92, 199, 255, 255, 94, 200, 255, 255, 96, 201, 255, 255, 96, 201, 255, 255, 96, 201, 255, 255, 96, 201, 255, 255, 96, 201, 255, 255, 94, 200, 255, 255, 93, 199, 255, 255, 90, 198, 255, 255, 88, 197, 255, 255, 85, 195, 255, 255, 82, 194, 255, 255, 78, 192, 255, 255, 73, 190, 255, 255, 69, 187, 255, 255, 78, 161, 238, 255, 106, 106, 200, 255, 179, 179, 217, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 134, 134, 188, 255, 110, 110, 162, 255, 115, 115, 166, 255, 112, 112, 163, 255, 134, 134, 185, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 128, 128, 179, 255, 126, 126, 179, 255, 110, 110, 162, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 110, 153, 58, 177, 177, 210, 255, 151, 151, 191, 255, 98, 158, 215, 255, 69, 187, 255, 255, 73, 190, 255, 255, 76, 191, 255, 255, 80, 193, 255, 255, 82, 194, 255, 255, 84, 195, 255, 255, 86, 196, 255, 255, 87, 197, 255, 255, 88, 197, 255, 255, 88, 197, 255, 255, 88, 197, 255, 255, 87, 197, 255, 255, 86, 196, 255, 255, 85, 195, 255, 255, 83, 194, 255, 255, 80, 193, 255, 255, 77, 192, 255, 255, 74, 190, 255, 255, 70, 188, 255, 255, 67, 186, 255, 255, 62, 184, 255, 255, 70, 163, 241, 255, 105, 105, 201, 255, 168, 168, 215, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 137, 137, 187, 255, 111, 111, 161, 255, 140, 140, 191, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 128, 128, 179, 255, 128, 128, 178, 255, 111, 111, 161, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 43, 5, 158, 158, 196, 243, 161, 161, 200, 255, 108, 146, 201, 255, 62, 184, 255, 255, 66, 186, 255, 255, 69, 187, 255, 255, 71, 189, 255, 255, 74, 190, 255, 255, 76, 191, 255, 255, 78, 192, 255, 255, 79, 192, 255, 255, 80, 193, 255, 255, 80, 193, 255, 255, 80, 193, 255, 255, 79, 193, 255, 255, 78, 192, 255, 255, 77, 191, 255, 255, 74, 190, 255, 255, 72, 189, 255, 255, 70, 188, 255, 255, 67, 186, 255, 255, 64, 185, 255, 255, 59, 183, 255, 255, 55, 181, 255, 255, 60, 171, 249, 255, 104, 104, 203, 255, 168, 168, 215, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 139, 139, 186, 255, 111, 111, 161, 255, 140, 140, 191, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 128, 128, 179, 255, 130, 130, 177, 255, 111, 111, 161, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 138, 182, 185, 173, 173, 211, 255, 119, 135, 188, 255, 54, 180, 255, 255, 58, 182, 255, 255, 61, 184, 255, 255, 64, 185, 255, 255, 66, 186, 255, 255, 68, 187, 255, 255, 70, 188, 255, 255, 70, 188, 255, 255, 71, 189, 255, 255, 72, 189, 255, 255, 71, 189, 255, 255, 71, 188, 255, 255, 70, 188, 255, 255, 69, 187, 255, 255, 67, 186, 255, 255, 65, 185, 255, 255, 62, 184, 255, 255, 59, 183, 255, 255, 56, 181, 255, 255, 86, 173, 240, 255, 122, 162, 221, 255, 127, 127, 204, 255, 104, 104, 204, 255, 173, 173, 216, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 144, 144, 186, 255, 112, 112, 161, 255, 140, 140, 191, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 140, 140, 191, 255, 118, 118, 169, 255, 117, 117, 165, 255, 139, 139, 183, 255, 112, 112, 161, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 120, 169, 137, 185, 185, 220, 255, 126, 126, 180, 255, 53, 173, 250, 255, 51, 178, 255, 255, 53, 180, 255, 255, 56, 181, 255, 255, 58, 182, 255, 255, 60, 183, 255, 255, 62, 184, 255, 255, 63, 184, 255, 255, 64, 185, 255, 255, 64, 185, 255, 255, 64, 185, 255, 255, 63, 184, 255, 255, 62, 184, 255, 255, 61, 183, 255, 255, 59, 182, 255, 255, 57, 181, 255, 255, 69, 180, 250, 255, 119, 174, 231, 255, 144, 160, 215, 255, 133, 133, 205, 255, 110, 110, 203, 255, 126, 126, 208, 255, 159, 159, 214, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 152, 152, 191, 255, 120, 120, 166, 255, 140, 140, 191, 255, 153, 153, 204, 255, 134, 134, 185, 255, 114, 114, 164, 255, 121, 121, 166, 255, 139, 139, 179, 255, 144, 144, 183, 255, 133, 133, 176, 255, 107, 107, 157, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 164, 74, 168, 168, 208, 255, 135, 135, 188, 255, 61, 161, 237, 255, 43, 175, 255, 255, 46, 176, 255, 255, 48, 177, 255, 255, 51, 178, 255, 255, 52, 179, 255, 255, 54, 180, 255, 255, 54, 180, 255, 255, 55, 181, 255, 255, 55, 181, 255, 255, 55, 181, 255, 255, 54, 180, 255, 255, 54, 180, 255, 255, 52, 179, 255, 255, 103, 182, 242, 255, 149, 181, 227, 255, 155, 155, 211, 255, 126, 126, 205, 255, 105, 105, 201, 255, 122, 122, 203, 255, 172, 172, 215, 255, 195, 195, 221, 255, 193, 193, 220, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 154, 154, 190, 255, 124, 124, 168, 255, 118, 118, 169, 255, 114, 114, 163, 255, 127, 127, 169, 255, 144, 144, 180, 255, 146, 146, 182, 255, 129, 129, 171, 255, 113, 113, 160, 255, 102, 102, 153, 255, 102, 102, 153, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 64, 7, 151, 151, 199, 255, 143, 143, 195, 255, 78, 146, 219, 255, 35, 171, 255, 255, 38, 172, 255, 255, 40, 173, 255, 255, 42, 174, 255, 255, 44, 175, 255, 255, 45, 176, 255, 255, 47, 176, 255, 255, 47, 176, 255, 255, 47, 176, 255, 255, 47, 176, 255, 255, 76, 181, 250, 255, 141, 189, 237, 255, 173, 181, 222, 255, 143, 143, 208, 255, 116, 116, 202, 255, 100, 100, 195, 255, 121, 121, 188, 255, 163, 163, 209, 255, 153, 153, 204, 255, 153, 153, 204, 255, 158, 158, 206, 255, 175, 175, 213, 255, 185, 185, 217, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 156, 156, 189, 255, 134, 134, 172, 255, 132, 132, 170, 255, 149, 149, 181, 255, 149, 149, 181, 255, 131, 131, 171, 255, 108, 108, 157, 255, 102, 102, 153, 255, 105, 105, 155, 255, 126, 126, 167, 255, 111, 111, 158, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 135, 187, 200, 154, 154, 203, 255, 92, 136, 206, 255, 27, 167, 255, 255, 30, 168, 255, 255, 32, 169, 255, 255, 35, 171, 255, 255, 36, 171, 255, 255, 37, 172, 255, 255, 38, 172, 255, 255, 49, 175, 254, 255, 105, 189, 247, 255, 177, 202, 236, 255, 168, 168, 217, 255, 131, 131, 205, 255, 108, 108, 198, 255, 96, 96, 191, 255, 80, 80, 180, 255, 66, 66, 168, 255, 125, 125, 170, 255, 203, 203, 224, 255, 195, 195, 221, 255, 176, 176, 213, 255, 158, 158, 206, 255, 153, 153, 204, 255, 153, 153, 204, 255, 162, 162, 208, 255, 173, 173, 212, 255, 181, 181, 215, 255, 180, 180, 215, 255, 178, 178, 214, 255, 157, 157, 188, 255, 151, 151, 180, 255, 148, 148, 178, 255, 129, 129, 168, 255, 108, 108, 156, 255, 102, 102, 153, 255, 105, 105, 155, 255, 127, 127, 166, 255, 148, 148, 178, 255, 151, 151, 180, 255, 114, 114, 160, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 120, 178, 138, 160, 160, 207, 255, 108, 126, 194, 255, 20, 163, 255, 255, 22, 164, 255, 255, 24, 165, 255, 255, 26, 166, 255, 255, 28, 167, 255, 255, 79, 183, 252, 255, 152, 203, 246, 255, 206, 206, 232, 255, 156, 156, 213, 255, 116, 116, 198, 255, 107, 107, 196, 255, 96, 96, 192, 255, 83, 83, 184, 255, 79, 79, 181, 255, 79, 79, 181, 255, 79, 79, 181, 255, 99, 99, 162, 255, 203, 203, 224, 255, 201, 201, 223, 255, 198, 198, 222, 255, 195, 195, 221, 255, 183, 183, 216, 255, 167, 167, 210, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 163, 163, 208, 255, 170, 170, 211, 255, 156, 156, 186, 255, 128, 128, 166, 255, 105, 105, 155, 255, 102, 102, 153, 255, 105, 105, 155, 255, 128, 128, 166, 255, 150, 150, 177, 255, 154, 154, 179, 255, 153, 198, 145, 255, 153, 166, 169, 255, 115, 115, 159, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 108, 172, 90, 157, 157, 206, 255, 120, 120, 186, 255, 19, 157, 251, 255, 15, 160, 255, 255, 31, 167, 255, 255, 116, 197, 252, 255, 209, 226, 246, 255, 186, 186, 224, 255, 140, 140, 206, 255, 111, 111, 195, 255, 108, 108, 196, 255, 99, 99, 196, 255, 92, 92, 194, 255, 92, 92, 194, 255, 92, 92, 194, 255, 92, 92, 194, 255, 92, 92, 194, 255, 92, 92, 194, 255, 101, 101, 168, 255, 191, 191, 215, 255, 201, 201, 223, 255, 198, 198, 222, 255, 195, 195, 221, 255, 193, 193, 220, 255, 190, 190, 219, 255, 186, 186, 217, 255, 173, 173, 212, 255, 159, 159, 206, 255, 153, 153, 204, 255, 153, 153, 204, 255, 115, 115, 166, 255, 102, 102, 153, 255, 105, 105, 155, 255, 129, 129, 165, 255, 153, 153, 176, 255, 156, 156, 177, 255, 156, 156, 177, 255, 156, 156, 177, 255, 153, 255, 102, 255, 155, 187, 154, 255, 116, 116, 159, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 81, 140, 24, 144, 144, 199, 255, 129, 129, 193, 255, 80, 165, 238, 255, 175, 222, 254, 255, 230, 230, 243, 255, 170, 170, 217, 255, 121, 121, 196, 255, 112, 112, 194, 255, 135, 135, 199, 255, 143, 143, 203, 255, 117, 117, 203, 255, 102, 102, 203, 255, 102, 102, 203, 255, 102, 102, 203, 255, 102, 102, 203, 255, 102, 102, 203, 255, 102, 102, 203, 255, 102, 102, 203, 255, 103, 103, 179, 255, 178, 178, 207, 255, 201, 201, 223, 255, 198, 198, 222, 255, 195, 195, 221, 255, 193, 193, 220, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 177, 177, 214, 255, 164, 164, 209, 255, 120, 120, 168, 255, 130, 130, 165, 255, 155, 155, 175, 255, 158, 158, 176, 255, 158, 158, 176, 255, 158, 158, 176, 255, 158, 158, 176, 255, 158, 158, 176, 255, 157, 176, 162, 255, 158, 158, 176, 255, 116, 116, 159, 255, 25, 4, 57, 222,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 144, 195, 80, 170, 170, 207, 224, 150, 150, 202, 255, 137, 137, 198, 255, 142, 142, 202, 255, 141, 141, 203, 255, 114, 114, 192, 255, 128, 128, 197, 255, 175, 175, 210, 255, 212, 212, 219, 255, 182, 182, 210, 255, 158, 158, 205, 255, 160, 160, 207, 255, 137, 137, 205, 255, 110, 110, 204, 255, 110, 110, 204, 255, 110, 110, 204, 255, 110, 110, 204, 255, 110, 110, 204, 255, 110, 110, 204, 255, 107, 107, 180, 255, 133, 133, 182, 255, 160, 160, 200, 255, 190, 190, 217, 255, 195, 195, 221, 255, 193, 193, 220, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 165, 165, 187, 255, 161, 161, 175, 255, 161, 161, 175, 255, 161, 161, 175, 255, 161, 161, 175, 255, 161, 161, 175, 255, 161, 161, 175, 255, 161, 161, 175, 255, 146, 146, 170, 255, 110, 107, 149, 251, 52, 38, 91, 230, 25, 4, 57, 203,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 193, 159, 195, 195, 217, 255, 238, 238, 238, 255, 176, 176, 214, 255, 142, 142, 200, 255, 115, 115, 191, 255, 154, 154, 207, 255, 198, 198, 222, 255, 231, 231, 231, 255, 226, 226, 226, 255, 221, 221, 221, 255, 208, 208, 217, 255, 152, 152, 200, 255, 169, 169, 210, 255, 161, 161, 209, 255, 120, 120, 204, 255, 120, 120, 204, 255, 120, 120, 204, 255, 120, 120, 204, 255, 120, 120, 204, 255, 120, 120, 204, 255, 116, 116, 192, 255, 132, 132, 179, 255, 147, 147, 196, 255, 123, 121, 172, 251, 144, 143, 186, 253, 176, 176, 209, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 170, 170, 193, 255, 163, 163, 174, 255, 163, 163, 174, 255, 163, 163, 174, 255, 163, 163, 174, 255, 163, 163, 174, 255, 156, 156, 172, 255, 123, 122, 158, 253, 58, 46, 98, 233, 25, 4, 57, 201, 25, 4, 58, 161, 26, 5, 58, 96,
+ 0, 0, 0, 0, 0, 0, 0, 0, 138, 138, 189, 159, 198, 198, 217, 255, 237, 237, 237, 255, 242, 242, 242, 255, 238, 238, 243, 255, 215, 215, 234, 255, 230, 230, 240, 255, 243, 243, 243, 255, 238, 238, 238, 255, 233, 233, 233, 255, 228, 228, 228, 255, 223, 223, 223, 255, 217, 217, 220, 255, 166, 166, 203, 255, 173, 173, 211, 255, 175, 175, 213, 255, 134, 134, 205, 255, 129, 129, 204, 255, 129, 129, 204, 255, 129, 129, 204, 255, 129, 129, 204, 255, 129, 129, 204, 255, 122, 122, 192, 255, 136, 136, 181, 255, 164, 164, 206, 255, 143, 143, 193, 255, 80, 69, 121, 228, 76, 66, 118, 222, 131, 128, 174, 249, 164, 164, 202, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 171, 171, 193, 255, 165, 165, 173, 255, 165, 165, 173, 255, 165, 165, 173, 255, 162, 162, 172, 255, 125, 124, 159, 253, 70, 60, 112, 238, 31, 12, 65, 209, 25, 4, 57, 172, 26, 5, 56, 96, 26, 6, 57, 35, 26, 0, 51, 9,
+ 0, 0, 0, 0, 135, 135, 186, 96, 176, 176, 205, 255, 233, 233, 233, 255, 238, 238, 238, 255, 244, 244, 244, 255, 249, 249, 249, 255, 253, 253, 253, 255, 250, 250, 250, 255, 245, 245, 245, 255, 239, 239, 239, 255, 234, 234, 234, 255, 229, 229, 229, 255, 223, 223, 223, 255, 218, 218, 220, 255, 192, 192, 212, 255, 161, 161, 204, 255, 184, 184, 216, 255, 157, 157, 209, 255, 138, 138, 204, 255, 138, 138, 204, 255, 138, 138, 204, 255, 138, 138, 204, 255, 138, 138, 204, 255, 130, 130, 192, 255, 136, 136, 181, 255, 166, 166, 207, 255, 160, 160, 205, 255, 131, 130, 180, 252, 48, 32, 84, 155, 25, 4, 57, 117, 73, 61, 113, 199, 114, 111, 161, 245, 156, 156, 197, 255, 176, 176, 212, 255, 178, 178, 214, 255, 172, 172, 192, 255, 168, 168, 172, 255, 164, 164, 171, 255, 139, 139, 167, 255, 79, 71, 120, 241, 31, 12, 65, 211, 25, 4, 57, 175, 26, 4, 58, 111, 28, 5, 57, 47, 18, 0, 55, 12, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 131, 131, 182, 209, 216, 216, 222, 255, 233, 233, 233, 255, 238, 238, 238, 255, 243, 243, 243, 255, 248, 248, 248, 255, 252, 252, 252, 255, 250, 250, 250, 255, 245, 245, 245, 255, 239, 239, 239, 255, 234, 234, 234, 255, 229, 229, 229, 255, 223, 223, 223, 255, 218, 218, 220, 255, 213, 213, 219, 255, 152, 152, 197, 255, 193, 193, 220, 255, 177, 177, 214, 255, 149, 149, 204, 255, 149, 149, 204, 255, 149, 149, 204, 255, 149, 149, 204, 255, 149, 149, 204, 255, 149, 149, 204, 255, 128, 128, 174, 255, 166, 166, 207, 255, 161, 161, 206, 255, 142, 142, 192, 255, 95, 87, 139, 220, 26, 7, 56, 68, 23, 6, 58, 38, 24, 5, 55, 92, 58, 45, 97, 181, 104, 100, 150, 240, 144, 144, 189, 255, 165, 165, 186, 255, 146, 146, 168, 255, 87, 79, 128, 243, 38, 20, 73, 217, 25, 4, 57, 185, 26, 4, 58, 119, 27, 5, 59, 49, 28, 0, 57, 16, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 129, 129, 180, 255, 226, 226, 226, 255, 231, 231, 231, 255, 237, 237, 237, 255, 241, 241, 241, 255, 245, 245, 245, 255, 247, 247, 247, 255, 246, 246, 246, 255, 242, 242, 242, 255, 238, 238, 238, 255, 233, 233, 233, 255, 228, 228, 228, 255, 222, 222, 222, 255, 217, 217, 220, 255, 213, 213, 219, 255, 166, 166, 201, 255, 194, 194, 219, 255, 196, 196, 221, 255, 158, 158, 204, 255, 158, 158, 204, 255, 158, 158, 204, 255, 158, 158, 204, 255, 158, 158, 204, 255, 158, 158, 204, 255, 119, 119, 167, 255, 166, 166, 207, 255, 161, 161, 206, 255, 143, 143, 192, 255, 107, 102, 153, 243, 25, 4, 56, 114, 28, 0, 57, 16, 21, 0, 64, 10, 23, 8, 60, 30, 26, 3, 58, 77, 52, 38, 90, 166, 82, 75, 127, 227, 51, 36, 89, 221, 26, 3, 57, 191, 26, 3, 57, 128, 26, 4, 56, 59, 23, 0, 58, 19, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 125, 125, 176, 255, 224, 224, 224, 255, 229, 229, 229, 255, 233, 233, 233, 255, 237, 237, 237, 255, 240, 240, 240, 255, 241, 241, 241, 255, 240, 240, 240, 255, 238, 238, 238, 255, 234, 234, 234, 255, 230, 230, 230, 255, 225, 225, 225, 255, 220, 220, 221, 255, 216, 216, 220, 255, 212, 212, 218, 255, 186, 186, 209, 255, 183, 183, 213, 255, 208, 208, 226, 255, 173, 173, 207, 255, 168, 168, 204, 255, 168, 168, 204, 255, 168, 168, 204, 255, 168, 168, 204, 255, 168, 168, 204, 255, 119, 119, 167, 255, 165, 165, 207, 255, 161, 161, 206, 255, 141, 141, 191, 255, 103, 98, 150, 245, 26, 5, 57, 147, 21, 0, 53, 21, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 64, 7, 26, 9, 60, 26, 24, 3, 59, 64, 26, 4, 57, 102, 25, 3, 56, 71, 27, 0, 55, 24, 0, 0, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 120, 119, 170, 212, 197, 197, 209, 255, 226, 226, 226, 255, 230, 230, 230, 255, 232, 232, 232, 255, 235, 235, 235, 255, 235, 235, 235, 255, 235, 235, 235, 255, 233, 233, 233, 255, 230, 230, 230, 255, 227, 227, 227, 255, 222, 222, 222, 255, 218, 218, 220, 255, 214, 214, 219, 255, 210, 210, 218, 255, 202, 202, 216, 255, 168, 168, 204, 255, 217, 217, 229, 255, 189, 189, 212, 255, 177, 177, 204, 255, 177, 177, 204, 255, 177, 177, 204, 255, 177, 177, 204, 255, 177, 177, 204, 255, 119, 119, 167, 255, 164, 164, 207, 255, 160, 160, 206, 255, 133, 133, 183, 255, 84, 75, 127, 237, 26, 5, 57, 147, 21, 0, 53, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 43, 5, 28, 0, 57, 16, 32, 0, 64, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 104, 99, 152, 96, 144, 144, 182, 255, 222, 222, 222, 255, 225, 225, 225, 255, 228, 228, 228, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 229, 229, 229, 255, 226, 226, 226, 255, 223, 223, 223, 255, 219, 219, 220, 255, 215, 215, 220, 255, 212, 212, 219, 255, 208, 208, 218, 255, 204, 204, 217, 255, 158, 158, 198, 255, 226, 226, 233, 255, 205, 205, 218, 255, 186, 186, 204, 255, 186, 186, 204, 255, 186, 186, 204, 255, 186, 186, 204, 255, 150, 150, 183, 255, 139, 139, 184, 255, 163, 163, 207, 255, 149, 149, 197, 255, 114, 113, 164, 253, 39, 21, 74, 214, 25, 4, 56, 114, 28, 0, 57, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 26, 0, 51, 9, 101, 97, 148, 191, 154, 154, 187, 255, 220, 220, 221, 255, 223, 223, 223, 255, 224, 224, 224, 255, 225, 225, 225, 255, 224, 224, 224, 255, 223, 223, 223, 255, 221, 221, 221, 255, 218, 218, 220, 255, 216, 216, 220, 255, 212, 212, 219, 255, 209, 209, 218, 255, 206, 206, 217, 255, 202, 202, 216, 255, 164, 164, 200, 255, 215, 215, 227, 255, 221, 221, 226, 255, 196, 196, 204, 255, 196, 196, 204, 255, 175, 175, 194, 255, 135, 135, 175, 255, 142, 142, 186, 255, 167, 167, 207, 255, 154, 154, 199, 255, 118, 118, 169, 255, 62, 50, 102, 233, 24, 4, 56, 173, 24, 4, 56, 56, 0, 0, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 60, 26, 88, 82, 134, 197, 138, 138, 177, 255, 204, 204, 213, 255, 219, 219, 220, 255, 219, 219, 221, 255, 219, 219, 221, 255, 218, 218, 220, 255, 216, 216, 220, 255, 214, 214, 219, 255, 212, 212, 219, 255, 209, 209, 218, 255, 206, 206, 217, 255, 203, 203, 217, 255, 200, 200, 215, 255, 189, 189, 211, 255, 151, 151, 193, 255, 195, 195, 211, 255, 158, 158, 187, 255, 138, 138, 179, 255, 142, 142, 186, 255, 165, 165, 203, 255, 169, 169, 208, 255, 145, 145, 190, 255, 110, 109, 160, 253, 61, 49, 101, 233, 25, 5, 57, 187, 26, 5, 56, 96, 32, 0, 64, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 7, 60, 33, 61, 48, 101, 152, 108, 106, 154, 247, 155, 155, 185, 255, 201, 201, 212, 255, 214, 214, 219, 255, 214, 214, 219, 255, 212, 212, 219, 255, 211, 211, 218, 255, 208, 208, 218, 255, 206, 206, 217, 255, 203, 203, 217, 255, 200, 200, 216, 255, 197, 197, 215, 255, 194, 194, 214, 255, 190, 190, 213, 255, 161, 161, 198, 255, 168, 168, 202, 255, 179, 179, 211, 255, 175, 175, 210, 255, 152, 152, 193, 255, 123, 123, 172, 255, 90, 85, 137, 247, 37, 19, 72, 218, 24, 4, 56, 173, 26, 5, 56, 96, 21, 11, 53, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 59, 23, 25, 3, 55, 80, 60, 48, 100, 189, 85, 79, 131, 237, 125, 125, 168, 255, 158, 158, 187, 255, 183, 183, 203, 255, 200, 200, 214, 255, 205, 205, 217, 255, 202, 202, 216, 255, 200, 200, 216, 255, 197, 197, 215, 255, 194, 194, 214, 255, 191, 191, 213, 255, 188, 188, 213, 255, 175, 175, 205, 255, 153, 153, 190, 255, 133, 133, 176, 255, 105, 104, 154, 253, 78, 71, 123, 242, 43, 27, 79, 220, 25, 5, 58, 192, 25, 5, 58, 142, 26, 4, 58, 61, 32, 0, 64, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 64, 7, 27, 7, 60, 33, 24, 3, 57, 82, 34, 16, 68, 147, 55, 42, 94, 208, 69, 60, 111, 229, 86, 81, 133, 243, 85, 80, 132, 245, 127, 127, 169, 255, 126, 126, 169, 255, 125, 125, 168, 255, 125, 125, 168, 255, 109, 108, 155, 253, 85, 80, 132, 246, 81, 75, 126, 242, 68, 58, 110, 234, 48, 33, 86, 220, 24, 4, 57, 199, 25, 4, 57, 177, 26, 3, 57, 128, 27, 3, 57, 66, 26, 9, 60, 26, 0, 0, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 51, 9, 21, 0, 53, 21, 26, 5, 56, 44, 26, 3, 57, 78, 26, 4, 57, 113, 26, 5, 58, 145, 25, 4, 57, 159, 25, 4, 57, 187, 25, 5, 57, 194, 25, 5, 57, 194, 25, 5, 57, 192, 25, 4, 57, 180, 26, 4, 57, 156, 26, 5, 58, 138, 26, 4, 57, 110, 26, 3, 57, 70, 27, 7, 54, 33, 26, 0, 64, 17, 43, 0, 43, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 2, 26, 0, 51, 9, 32, 0, 64, 14, 21, 0, 53, 21, 21, 0, 53, 21, 24, 8, 56, 28, 24, 8, 56, 28, 24, 8, 56, 28, 24, 8, 56, 28, 26, 9, 60, 26, 21, 0, 53, 21, 23, 0, 58, 19, 32, 0, 64, 14, 32, 0, 64, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_DeviceScanner(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 50, 50, 50, 145, 67, 67, 67, 194, 105, 105, 105, 240, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 128, 255, 77, 77, 128, 255, 78, 78, 136, 197, 66, 66, 99, 196, 60, 60, 83, 137, 46, 46, 46, 88, 43, 43, 43, 38, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 70, 70, 176, 230, 230, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 188, 233, 255, 102, 102, 204, 255, 102, 102, 204, 255, 102, 102, 204, 255, 102, 102, 204, 255, 118, 118, 201, 255, 118, 118, 124, 255, 64, 64, 64, 228, 47, 47, 47, 154, 46, 46, 46, 89, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 116, 116, 240, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 220, 220, 239, 255, 175, 175, 226, 255, 175, 175, 226, 255, 202, 202, 234, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 210, 210, 210, 255, 137, 137, 137, 255, 76, 76, 76, 243, 48, 48, 48, 170, 41, 41, 41, 60, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 98, 98, 98, 255, 168, 168, 168, 255, 215, 215, 215, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 203, 203, 203, 255, 133, 133, 133, 255, 62, 62, 62, 218, 44, 44, 44, 111, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, 20, 40, 40, 40, 123, 37, 37, 37, 217, 49, 49, 49, 250, 73, 73, 73, 255, 107, 107, 107, 255, 152, 152, 152, 255, 196, 196, 196, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 163, 163, 163, 255, 74, 74, 74, 233, 43, 43, 43, 115, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 19, 0, 0, 0, 76, 0, 0, 0, 115, 22, 22, 22, 184, 36, 36, 36, 224, 46, 46, 46, 246, 51, 51, 51, 255, 62, 62, 62, 255, 94, 94, 94, 255, 136, 136, 136, 255, 179, 179, 179, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 142, 142, 142, 255, 115, 115, 115, 255, 63, 63, 63, 233, 46, 46, 46, 143, 30, 30, 30, 27, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 15, 0, 0, 0, 30, 0, 0, 0, 69, 0, 0, 0, 112, 15, 15, 15, 167, 34, 34, 34, 217, 44, 44, 44, 241, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 81, 81, 81, 255, 122, 122, 122, 255, 162, 162, 162, 255, 203, 203, 203, 255, 213, 213, 213, 255, 213, 213, 213, 255, 213, 213, 213, 255, 213, 213, 213, 255, 213, 213, 213, 255, 213, 213, 213, 255, 138, 138, 144, 255, 153, 153, 161, 255, 153, 153, 161, 255, 115, 115, 122, 255, 76, 76, 79, 245, 44, 44, 44, 148, 29, 29, 29, 28, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0, 0, 25, 0, 0, 0, 55, 0, 0, 0, 101, 11, 11, 11, 154, 28, 28, 28, 205, 44, 44, 44, 241, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 71, 71, 71, 255, 111, 111, 111, 255, 149, 149, 149, 255, 178, 178, 178, 255, 206, 206, 206, 255, 158, 158, 158, 255, 153, 153, 173, 255, 153, 153, 173, 255, 153, 153, 173, 255, 153, 153, 173, 255, 153, 153, 173, 255, 128, 128, 144, 255, 76, 76, 82, 245, 44, 44, 44, 148, 38, 38, 38, 43, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 22, 0, 0, 0, 46, 0, 0, 0, 88, 6, 6, 6, 143, 25, 25, 25, 198, 39, 39, 39, 230, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 61, 61, 61, 255, 83, 83, 86, 255, 134, 134, 159, 255, 153, 153, 184, 255, 153, 153, 184, 255, 153, 153, 184, 255, 153, 153, 184, 255, 153, 153, 184, 255, 153, 153, 184, 255, 134, 134, 161, 255, 89, 89, 102, 255, 46, 46, 46, 177, 34, 34, 34, 48, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 10, 0, 0, 0, 21, 0, 0, 0, 39, 0, 0, 0, 78, 0, 0, 0, 122, 21, 21, 21, 190, 36, 36, 36, 225, 49, 49, 49, 250, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 70, 70, 77, 255, 108, 108, 131, 255, 147, 147, 186, 255, 153, 153, 195, 255, 153, 153, 195, 255, 153, 153, 195, 255, 153, 153, 195, 255, 153, 153, 195, 255, 140, 140, 178, 255, 89, 89, 106, 255, 55, 55, 59, 178, 34, 34, 34, 48, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 16, 0, 0, 0, 31, 0, 0, 0, 69, 0, 0, 0, 113, 18, 18, 18, 178, 36, 36, 36, 224, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 89, 89, 108, 255, 121, 121, 157, 255, 153, 153, 207, 255, 153, 153, 207, 255, 153, 153, 207, 255, 153, 153, 207, 255, 153, 153, 207, 255, 147, 147, 198, 255, 102, 102, 131, 255, 55, 55, 60, 191, 42, 42, 42, 78, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 69, 60, 60, 60, 138, 96, 96, 96, 215, 113, 113, 113, 255, 141, 141, 141, 255, 136, 136, 136, 255, 114, 114, 114, 255, 99, 99, 99, 255, 72, 72, 72, 255, 51, 51, 51, 255, 51, 51, 51, 255, 64, 64, 71, 255, 102, 102, 133, 255, 140, 140, 197, 255, 153, 153, 218, 255, 153, 153, 218, 255, 153, 153, 218, 255, 153, 153, 218, 255, 147, 147, 208, 255, 108, 108, 147, 255, 63, 63, 73, 207, 40, 40, 40, 82, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 32, 50, 50, 50, 98, 94, 94, 94, 178, 114, 114, 114, 240, 143, 143, 143, 255, 156, 156, 156, 255, 136, 136, 136, 255, 145, 152, 160, 255, 143, 167, 191, 255, 140, 179, 217, 255, 129, 167, 204, 255, 114, 136, 158, 255, 116, 124, 132, 255, 116, 116, 116, 255, 104, 104, 104, 255, 79, 79, 79, 255, 60, 60, 60, 255, 51, 51, 51, 255, 83, 83, 105, 255, 115, 115, 161, 255, 153, 153, 229, 255, 153, 153, 229, 255, 153, 153, 229, 255, 153, 153, 229, 255, 153, 153, 229, 255, 115, 115, 164, 255, 62, 62, 74, 208, 43, 43, 43, 96, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 50, 50, 50, 81, 79, 79, 79, 146, 107, 107, 107, 225, 141, 141, 141, 255, 171, 171, 171, 255, 156, 156, 156, 255, 150, 153, 155, 255, 165, 168, 172, 255, 207, 207, 207, 255, 227, 236, 245, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 105, 160, 213, 255, 98, 137, 177, 255, 102, 121, 139, 255, 114, 114, 114, 255, 105, 105, 105, 255, 90, 90, 90, 255, 68, 68, 68, 255, 57, 57, 62, 255, 96, 96, 132, 255, 134, 134, 205, 255, 153, 153, 241, 255, 153, 153, 241, 255, 153, 153, 241, 255, 153, 153, 241, 255, 102, 102, 148, 255, 28, 28, 28, 118, 0, 0, 0, 13,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 50, 50, 50, 114, 112, 112, 112, 194, 134, 134, 134, 255, 168, 168, 168, 255, 181, 181, 181, 255, 155, 155, 155, 255, 154, 163, 169, 255, 136, 164, 193, 255, 165, 195, 226, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 106, 173, 239, 255, 94, 165, 235, 255, 82, 157, 231, 255, 73, 146, 220, 255, 75, 126, 178, 255, 85, 117, 149, 255, 105, 110, 116, 255, 108, 108, 108, 255, 93, 93, 93, 255, 74, 74, 74, 255, 77, 77, 94, 255, 115, 115, 176, 255, 147, 147, 240, 255, 153, 153, 252, 255, 102, 102, 152, 255, 10, 10, 10, 169, 0, 0, 0, 57,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 50, 50, 50, 97, 100, 100, 100, 162, 127, 127, 127, 240, 162, 162, 162, 255, 209, 209, 209, 255, 179, 179, 179, 255, 161, 163, 164, 255, 187, 187, 187, 255, 197, 201, 204, 255, 213, 231, 243, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 106, 173, 239, 255, 94, 165, 235, 255, 82, 157, 231, 255, 71, 149, 228, 255, 59, 141, 224, 255, 50, 135, 221, 255, 38, 128, 217, 255, 41, 117, 192, 255, 59, 107, 156, 255, 86, 105, 124, 255, 106, 106, 106, 255, 96, 96, 96, 255, 80, 80, 80, 255, 102, 102, 140, 255, 64, 64, 77, 255, 0, 0, 0, 170, 0, 0, 0, 45,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 64, 71, 71, 71, 146, 120, 120, 120, 209, 163, 163, 163, 255, 204, 204, 204, 255, 208, 208, 208, 255, 171, 174, 177, 255, 156, 170, 180, 255, 154, 172, 183, 255, 190, 210, 223, 255, 224, 236, 246, 255, 255, 255, 255, 255, 242, 247, 251, 255, 213, 231, 243, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 106, 173, 239, 255, 94, 165, 235, 255, 82, 157, 231, 255, 71, 149, 228, 255, 59, 141, 224, 255, 50, 135, 221, 255, 38, 128, 217, 255, 27, 120, 213, 255, 22, 113, 204, 255, 60, 110, 160, 255, 105, 112, 118, 255, 110, 110, 110, 255, 106, 106, 106, 255, 121, 121, 159, 255, 77, 77, 96, 255, 0, 0, 0, 167, 0, 0, 0, 27,
+ 51, 51, 51, 16, 51, 51, 51, 113, 103, 103, 103, 178, 149, 149, 149, 255, 196, 196, 196, 255, 240, 240, 240, 255, 211, 211, 211, 255, 168, 178, 187, 255, 140, 162, 185, 255, 140, 179, 217, 255, 153, 204, 255, 255, 160, 206, 243, 255, 181, 215, 234, 255, 202, 225, 240, 255, 224, 236, 246, 255, 255, 255, 255, 255, 242, 247, 251, 255, 213, 231, 243, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 106, 173, 239, 255, 94, 165, 235, 255, 82, 157, 231, 255, 71, 149, 228, 255, 59, 141, 224, 255, 50, 135, 221, 255, 62, 129, 196, 255, 89, 124, 159, 255, 123, 123, 123, 255, 120, 120, 120, 255, 118, 118, 124, 255, 133, 133, 179, 255, 148, 148, 232, 255, 153, 153, 255, 255, 74, 74, 100, 251, 0, 0, 0, 166, 0, 0, 0, 24,
+ 50, 50, 50, 65, 185, 185, 185, 255, 247, 247, 247, 255, 250, 250, 250, 255, 246, 246, 246, 255, 244, 244, 244, 255, 240, 240, 240, 255, 207, 220, 233, 255, 184, 216, 248, 255, 158, 206, 254, 255, 153, 204, 255, 255, 160, 206, 243, 255, 181, 215, 234, 255, 202, 225, 240, 255, 224, 236, 246, 255, 255, 255, 255, 255, 242, 247, 251, 255, 213, 231, 243, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 106, 173, 239, 255, 94, 165, 235, 255, 82, 157, 231, 255, 76, 149, 223, 255, 95, 141, 188, 255, 126, 136, 147, 255, 134, 134, 134, 255, 130, 130, 130, 255, 130, 130, 140, 255, 141, 141, 193, 255, 153, 153, 241, 255, 153, 153, 246, 255, 153, 153, 250, 255, 153, 153, 255, 255, 68, 68, 95, 239, 0, 0, 0, 155, 0, 0, 0, 22,
+ 48, 48, 48, 68, 167, 167, 167, 255, 206, 206, 206, 255, 215, 215, 215, 255, 234, 234, 234, 255, 243, 243, 243, 255, 244, 244, 244, 255, 240, 240, 240, 255, 236, 236, 236, 255, 233, 233, 233, 255, 206, 222, 238, 255, 181, 212, 237, 255, 181, 215, 234, 255, 202, 225, 240, 255, 224, 236, 246, 255, 255, 255, 255, 255, 242, 247, 251, 255, 213, 231, 243, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 106, 173, 239, 255, 106, 159, 212, 255, 125, 153, 181, 255, 147, 147, 147, 255, 144, 144, 144, 255, 140, 140, 140, 255, 140, 140, 158, 255, 148, 148, 204, 255, 153, 153, 232, 255, 153, 153, 236, 255, 153, 153, 241, 255, 153, 153, 246, 255, 153, 153, 250, 255, 153, 153, 255, 255, 62, 62, 82, 237, 0, 0, 0, 136, 0, 0, 0, 18,
+ 48, 48, 48, 68, 141, 141, 141, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 213, 213, 213, 255, 224, 224, 224, 255, 236, 236, 236, 255, 240, 240, 240, 255, 236, 236, 236, 255, 233, 233, 233, 255, 229, 229, 229, 255, 224, 225, 227, 255, 216, 224, 230, 255, 224, 232, 238, 255, 255, 255, 255, 255, 242, 247, 251, 255, 213, 231, 243, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 132, 187, 242, 255, 135, 169, 205, 255, 150, 158, 166, 255, 158, 158, 158, 255, 154, 154, 154, 255, 151, 151, 154, 255, 149, 149, 171, 255, 152, 152, 209, 255, 153, 153, 223, 255, 153, 153, 227, 255, 153, 153, 232, 255, 153, 153, 236, 255, 153, 153, 241, 255, 153, 153, 246, 255, 128, 128, 200, 255, 74, 74, 100, 251, 27, 27, 27, 215, 0, 0, 0, 124, 0, 0, 0, 18,
+ 37, 37, 37, 22, 133, 133, 133, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 219, 219, 219, 255, 228, 228, 228, 255, 234, 234, 234, 255, 233, 233, 233, 255, 229, 229, 229, 255, 226, 226, 226, 255, 223, 223, 223, 255, 221, 221, 221, 255, 225, 227, 229, 255, 212, 225, 233, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 158, 199, 241, 255, 163, 183, 204, 255, 167, 167, 167, 255, 168, 168, 168, 255, 164, 164, 164, 255, 159, 159, 165, 255, 155, 155, 180, 255, 153, 153, 205, 255, 153, 153, 212, 255, 153, 153, 218, 255, 153, 153, 223, 255, 153, 153, 227, 255, 153, 153, 232, 255, 153, 153, 236, 255, 128, 128, 194, 255, 74, 74, 98, 251, 29, 29, 29, 223, 4, 4, 4, 183, 0, 0, 0, 149, 0, 0, 0, 82, 0, 0, 0, 10,
+ 0, 0, 0, 1, 135, 135, 135, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 224, 224, 224, 255, 228, 228, 228, 255, 229, 229, 229, 255, 226, 226, 226, 255, 223, 223, 223, 255, 219, 219, 219, 255, 216, 216, 216, 255, 211, 213, 214, 255, 189, 208, 227, 255, 186, 215, 243, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 234, 242, 251, 255, 195, 213, 230, 255, 183, 190, 197, 255, 182, 182, 182, 255, 179, 179, 179, 255, 175, 175, 175, 255, 167, 167, 174, 255, 158, 158, 184, 255, 153, 153, 198, 255, 153, 153, 203, 255, 153, 153, 208, 255, 153, 153, 212, 255, 153, 153, 218, 255, 153, 153, 223, 255, 153, 153, 227, 255, 128, 128, 187, 255, 77, 77, 97, 255, 35, 35, 35, 231, 4, 4, 4, 186, 0, 0, 0, 151, 0, 0, 0, 96, 0, 0, 0, 40, 0, 0, 0, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 74, 74, 74, 226, 158, 158, 158, 255, 212, 212, 212, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 224, 224, 224, 255, 225, 225, 225, 255, 226, 226, 226, 255, 223, 223, 223, 255, 219, 219, 219, 255, 216, 216, 216, 255, 212, 212, 212, 255, 209, 209, 209, 255, 207, 209, 212, 255, 217, 221, 225, 255, 220, 220, 220, 255, 199, 199, 199, 255, 192, 192, 192, 255, 188, 188, 188, 255, 184, 184, 184, 255, 171, 171, 181, 255, 160, 160, 183, 255, 153, 153, 189, 255, 153, 153, 194, 255, 153, 153, 198, 255, 153, 153, 203, 255, 153, 153, 208, 255, 153, 153, 212, 255, 153, 153, 218, 255, 128, 128, 180, 255, 77, 77, 95, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 109, 0, 0, 0, 43, 0, 0, 0, 13, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 21, 24, 24, 24, 170, 51, 51, 51, 229, 116, 116, 116, 255, 194, 194, 194, 255, 212, 212, 212, 255, 156, 156, 156, 255, 122, 122, 122, 255, 112, 112, 112, 255, 116, 116, 116, 255, 121, 121, 121, 255, 158, 158, 158, 255, 209, 209, 209, 255, 228, 228, 228, 255, 228, 228, 228, 255, 227, 227, 227, 255, 226, 226, 226, 255, 220, 220, 220, 255, 216, 216, 216, 255, 212, 212, 212, 255, 209, 209, 209, 255, 205, 205, 205, 255, 202, 202, 202, 255, 199, 199, 199, 255, 192, 192, 193, 255, 175, 175, 183, 255, 157, 157, 177, 255, 153, 153, 180, 255, 153, 153, 184, 255, 153, 153, 189, 255, 153, 153, 194, 255, 153, 153, 198, 255, 153, 153, 203, 255, 153, 153, 208, 255, 128, 128, 172, 255, 77, 77, 93, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 70, 12, 12, 12, 138, 31, 31, 31, 209, 56, 56, 56, 245, 50, 50, 50, 247, 49, 49, 49, 251, 63, 63, 63, 255, 68, 68, 68, 255, 74, 74, 74, 255, 101, 101, 101, 255, 135, 135, 135, 255, 203, 203, 203, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 228, 228, 228, 255, 222, 222, 222, 255, 212, 212, 212, 255, 209, 209, 209, 255, 198, 198, 199, 255, 174, 174, 179, 255, 156, 156, 168, 255, 153, 153, 171, 255, 153, 153, 175, 255, 153, 153, 180, 255, 153, 153, 184, 255, 153, 153, 189, 255, 153, 153, 194, 255, 153, 153, 198, 255, 134, 134, 174, 255, 77, 77, 90, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 19, 0, 0, 0, 48, 0, 0, 0, 96, 0, 0, 0, 140, 0, 0, 0, 151, 0, 0, 0, 158, 5, 5, 5, 172, 21, 21, 21, 196, 41, 41, 41, 235, 73, 73, 73, 255, 145, 145, 145, 255, 231, 231, 231, 255, 236, 236, 236, 255, 236, 236, 236, 255, 211, 211, 211, 255, 171, 178, 168, 255, 211, 211, 211, 255, 235, 235, 235, 255, 199, 199, 199, 255, 153, 153, 157, 255, 153, 153, 161, 255, 153, 153, 166, 255, 153, 153, 171, 255, 153, 153, 175, 255, 153, 153, 180, 255, 153, 153, 184, 255, 153, 153, 189, 255, 140, 140, 176, 255, 89, 89, 106, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 12, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 25, 0, 0, 0, 37, 0, 0, 0, 73, 28, 28, 28, 175, 70, 70, 70, 255, 202, 202, 202, 255, 241, 241, 241, 255, 241, 241, 241, 255, 158, 184, 145, 255, 153, 255, 102, 255, 138, 177, 119, 255, 241, 241, 241, 255, 197, 197, 197, 255, 153, 153, 157, 255, 153, 153, 161, 255, 153, 153, 166, 255, 153, 153, 171, 255, 153, 153, 175, 255, 153, 153, 180, 255, 140, 140, 167, 255, 89, 89, 103, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 27, 41, 41, 41, 180, 143, 143, 143, 255, 246, 246, 246, 255, 246, 246, 246, 255, 181, 193, 174, 255, 140, 217, 102, 255, 136, 168, 120, 255, 246, 246, 246, 255, 199, 199, 199, 255, 153, 153, 157, 255, 153, 153, 161, 255, 153, 153, 166, 255, 153, 153, 171, 255, 140, 140, 159, 255, 89, 89, 99, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 22, 37, 31, 31, 31, 160, 59, 59, 59, 244, 138, 138, 138, 255, 213, 213, 213, 255, 214, 214, 214, 255, 232, 232, 232, 255, 250, 250, 250, 255, 202, 202, 202, 255, 153, 153, 157, 255, 153, 153, 161, 255, 140, 140, 151, 255, 89, 89, 96, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 82, 19, 19, 19, 169, 36, 36, 36, 223, 89, 89, 89, 255, 178, 178, 178, 255, 241, 241, 241, 255, 204, 204, 204, 255, 140, 140, 143, 255, 89, 89, 92, 255, 38, 38, 38, 235, 8, 8, 8, 193, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 27, 0, 0, 0, 63, 7, 7, 7, 122, 28, 28, 28, 202, 60, 60, 60, 245, 89, 89, 89, 255, 41, 41, 41, 239, 16, 16, 16, 203, 0, 0, 0, 166, 0, 0, 0, 116, 0, 0, 0, 52, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 16, 0, 0, 0, 40, 0, 0, 0, 88, 10, 10, 10, 156, 0, 0, 0, 161, 0, 0, 0, 125, 0, 0, 0, 66, 0, 0, 0, 22, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 24, 0, 0, 0, 36, 0, 0, 0, 21, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_DevicePDA(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 50, 50, 50, 65, 50, 50, 50, 115, 49, 49, 49, 133, 49, 49, 49, 134, 49, 49, 49, 164, 50, 50, 50, 195, 50, 50, 50, 196, 50, 50, 50, 196, 116, 93, 60, 196, 116, 92, 59, 196, 116, 90, 57, 196, 116, 89, 55, 196, 83, 69, 53, 196, 49, 49, 49, 181, 48, 48, 48, 136, 49, 49, 49, 134, 45, 45, 45, 73, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 50, 50, 50, 130, 50, 50, 50, 179, 65, 63, 56, 240, 102, 96, 71, 255, 153, 138, 87, 255, 179, 157, 93, 255, 204, 175, 99, 255, 230, 191, 102, 255, 255, 207, 105, 255, 255, 202, 100, 255, 204, 160, 84, 255, 204, 156, 80, 255, 179, 136, 72, 255, 153, 117, 66, 255, 178, 124, 62, 255, 166, 137, 67, 255, 153, 146, 69, 255, 128, 130, 66, 255, 128, 128, 65, 255, 164, 103, 49, 255, 89, 68, 50, 255, 30, 30, 30, 109, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 64, 50, 50, 50, 177, 105, 105, 78, 240, 140, 138, 94, 255, 191, 185, 115, 255, 230, 217, 128, 255, 255, 236, 134, 255, 230, 209, 120, 255, 204, 182, 105, 255, 153, 136, 85, 255, 164, 126, 72, 255, 151, 108, 62, 255, 161, 96, 48, 255, 161, 91, 44, 255, 198, 106, 43, 255, 223, 117, 42, 255, 248, 128, 41, 255, 248, 130, 42, 255, 150, 91, 47, 255, 102, 153, 77, 255, 153, 255, 102, 255, 153, 255, 102, 255, 102, 153, 77, 255, 202, 119, 47, 255, 202, 119, 47, 255, 32, 32, 32, 205, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 131, 128, 108, 70, 255, 179, 159, 96, 255, 153, 139, 88, 255, 162, 118, 69, 255, 198, 128, 64, 255, 171, 89, 40, 255, 196, 98, 39, 255, 220, 107, 37, 255, 244, 116, 36, 255, 245, 118, 37, 255, 245, 120, 38, 255, 246, 122, 39, 255, 247, 124, 40, 255, 247, 126, 40, 255, 248, 128, 41, 255, 248, 130, 42, 255, 248, 131, 42, 255, 150, 92, 47, 255, 70, 89, 61, 255, 77, 102, 64, 255, 114, 119, 63, 255, 114, 99, 56, 255, 215, 126, 48, 255, 202, 121, 49, 255, 30, 30, 30, 217, 0, 0, 0, 90, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 204, 165, 89, 255, 255, 204, 102, 255, 255, 204, 102, 255, 195, 95, 38, 255, 243, 111, 34, 255, 244, 113, 35, 255, 244, 115, 35, 255, 244, 116, 36, 255, 245, 118, 37, 255, 245, 120, 38, 255, 246, 122, 39, 255, 247, 124, 40, 255, 247, 126, 40, 255, 248, 128, 41, 255, 248, 130, 42, 255, 248, 131, 42, 255, 249, 133, 43, 255, 225, 125, 45, 255, 250, 137, 44, 255, 251, 139, 45, 255, 252, 141, 46, 255, 252, 143, 47, 255, 253, 145, 48, 255, 203, 123, 49, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 204, 164, 87, 255, 255, 201, 100, 255, 255, 201, 100, 255, 195, 96, 38, 255, 244, 113, 35, 255, 244, 115, 35, 255, 244, 116, 36, 255, 233, 114, 41, 255, 197, 103, 54, 255, 173, 95, 63, 255, 149, 87, 71, 255, 125, 79, 79, 255, 100, 70, 87, 255, 211, 115, 53, 255, 248, 131, 42, 255, 249, 133, 43, 255, 250, 135, 44, 255, 250, 137, 44, 255, 239, 134, 45, 255, 202, 119, 47, 255, 164, 102, 48, 255, 139, 92, 50, 255, 177, 111, 50, 255, 203, 124, 50, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 203, 162, 86, 255, 254, 199, 98, 255, 254, 199, 98, 255, 196, 98, 39, 255, 244, 115, 35, 255, 135, 79, 73, 255, 51, 51, 102, 255, 51, 51, 102, 255, 51, 51, 102, 255, 51, 51, 102, 255, 88, 65, 91, 255, 100, 70, 87, 255, 137, 86, 73, 255, 174, 101, 52, 255, 162, 97, 47, 255, 138, 88, 48, 255, 101, 72, 49, 255, 64, 57, 51, 255, 55, 57, 54, 255, 66, 78, 65, 255, 78, 99, 77, 255, 68, 79, 67, 255, 152, 100, 50, 255, 203, 125, 50, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 203, 160, 85, 255, 254, 196, 97, 255, 254, 196, 97, 255, 196, 99, 39, 255, 244, 116, 36, 255, 172, 93, 61, 255, 136, 82, 71, 255, 149, 87, 58, 255, 124, 79, 56, 255, 137, 83, 46, 255, 100, 70, 49, 255, 63, 56, 50, 255, 51, 51, 51, 255, 74, 86, 74, 255, 83, 101, 83, 255, 111, 134, 110, 255, 126, 157, 124, 255, 104, 148, 102, 255, 110, 156, 107, 255, 113, 159, 110, 255, 117, 163, 114, 255, 85, 108, 83, 255, 153, 101, 51, 255, 204, 127, 51, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 203, 158, 84, 255, 254, 194, 95, 255, 254, 194, 95, 255, 196, 100, 40, 255, 245, 118, 37, 255, 100, 68, 48, 255, 51, 51, 51, 255, 88, 101, 88, 255, 102, 121, 102, 255, 119, 141, 119, 255, 160, 187, 159, 255, 186, 211, 186, 255, 206, 236, 206, 255, 209, 238, 208, 255, 229, 255, 229, 255, 223, 255, 223, 255, 219, 255, 219, 255, 110, 156, 107, 255, 113, 159, 110, 255, 117, 163, 114, 255, 120, 166, 117, 255, 87, 110, 86, 255, 153, 102, 51, 255, 204, 128, 51, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 203, 157, 83, 255, 253, 192, 93, 255, 253, 192, 93, 255, 196, 102, 40, 255, 245, 120, 38, 255, 100, 69, 48, 255, 220, 255, 220, 255, 240, 253, 240, 255, 246, 254, 246, 255, 246, 255, 246, 255, 242, 255, 242, 255, 237, 255, 237, 255, 234, 255, 234, 255, 230, 255, 230, 255, 224, 255, 224, 255, 220, 255, 220, 255, 217, 255, 217, 255, 113, 159, 110, 255, 117, 163, 114, 255, 120, 166, 117, 255, 123, 170, 121, 255, 89, 112, 88, 255, 153, 102, 51, 255, 204, 128, 52, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 203, 155, 81, 255, 253, 189, 91, 255, 253, 189, 91, 255, 197, 103, 41, 255, 246, 122, 39, 255, 100, 69, 48, 255, 224, 250, 224, 255, 250, 255, 250, 255, 246, 255, 246, 255, 242, 255, 242, 255, 237, 255, 237, 255, 234, 255, 234, 255, 230, 255, 230, 255, 224, 255, 224, 255, 221, 255, 221, 255, 217, 255, 217, 255, 211, 255, 211, 255, 117, 163, 114, 255, 120, 167, 118, 255, 123, 170, 121, 255, 127, 174, 125, 255, 90, 113, 89, 255, 153, 103, 52, 255, 204, 129, 53, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 203, 153, 80, 255, 253, 187, 90, 255, 253, 187, 90, 255, 197, 104, 42, 255, 247, 124, 40, 255, 100, 70, 48, 255, 218, 245, 217, 255, 246, 255, 246, 255, 242, 255, 242, 255, 237, 255, 237, 255, 234, 255, 234, 255, 230, 255, 230, 255, 224, 255, 224, 255, 221, 255, 221, 255, 217, 255, 217, 255, 211, 255, 211, 255, 197, 244, 197, 255, 121, 167, 118, 255, 123, 170, 121, 255, 127, 174, 125, 255, 130, 177, 128, 255, 92, 115, 91, 255, 153, 104, 53, 255, 204, 131, 55, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 202, 151, 79, 255, 252, 184, 88, 255, 252, 184, 88, 255, 198, 106, 43, 255, 247, 126, 40, 255, 100, 70, 49, 255, 208, 238, 208, 255, 242, 255, 242, 255, 237, 255, 237, 255, 234, 255, 234, 255, 230, 255, 230, 255, 224, 255, 224, 255, 221, 255, 221, 255, 217, 255, 217, 255, 211, 255, 211, 255, 208, 255, 208, 255, 178, 228, 178, 255, 123, 170, 121, 255, 127, 174, 125, 255, 130, 177, 128, 255, 133, 180, 131, 255, 94, 117, 93, 255, 153, 105, 54, 255, 204, 132, 56, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 202, 149, 77, 255, 252, 182, 86, 255, 252, 182, 86, 255, 198, 108, 43, 255, 248, 128, 41, 255, 100, 71, 49, 255, 202, 233, 202, 255, 237, 255, 237, 255, 234, 255, 234, 255, 230, 255, 230, 255, 224, 255, 224, 255, 221, 255, 221, 255, 217, 255, 217, 255, 211, 255, 211, 255, 208, 255, 208, 255, 204, 255, 204, 255, 154, 202, 152, 255, 127, 174, 125, 255, 130, 177, 128, 255, 133, 180, 131, 255, 137, 184, 135, 255, 95, 118, 94, 255, 153, 105, 54, 255, 204, 133, 56, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 202, 147, 76, 255, 252, 179, 84, 255, 252, 179, 84, 255, 199, 109, 44, 255, 248, 130, 42, 255, 100, 71, 49, 255, 193, 227, 193, 255, 235, 255, 235, 255, 230, 255, 230, 255, 226, 255, 226, 255, 222, 255, 222, 255, 217, 255, 217, 255, 212, 255, 212, 255, 209, 255, 209, 255, 204, 255, 204, 255, 203, 254, 203, 255, 131, 179, 130, 255, 130, 177, 128, 255, 133, 180, 131, 255, 137, 184, 135, 255, 140, 187, 138, 255, 97, 120, 96, 255, 153, 106, 55, 255, 204, 135, 58, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 201, 146, 75, 255, 251, 177, 83, 255, 251, 177, 83, 255, 199, 110, 44, 255, 249, 132, 43, 255, 101, 72, 49, 255, 187, 222, 186, 255, 230, 255, 230, 255, 226, 255, 226, 255, 222, 255, 222, 255, 217, 255, 217, 255, 213, 255, 213, 255, 209, 255, 209, 255, 204, 255, 204, 255, 203, 254, 203, 255, 172, 221, 172, 255, 130, 177, 128, 255, 133, 180, 131, 255, 137, 184, 135, 255, 140, 187, 138, 255, 144, 191, 142, 255, 99, 123, 98, 255, 153, 107, 56, 255, 204, 136, 59, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 201, 143, 74, 255, 251, 174, 81, 255, 251, 174, 81, 255, 199, 112, 45, 255, 249, 134, 43, 255, 101, 72, 49, 255, 178, 214, 177, 255, 226, 255, 226, 255, 222, 255, 222, 255, 217, 255, 217, 255, 213, 255, 213, 255, 209, 255, 209, 255, 204, 255, 204, 255, 203, 254, 203, 255, 198, 248, 199, 255, 139, 186, 137, 255, 133, 180, 131, 255, 137, 184, 135, 255, 141, 188, 139, 255, 144, 191, 142, 255, 146, 194, 145, 255, 100, 124, 100, 255, 153, 108, 57, 255, 204, 137, 61, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 201, 142, 72, 255, 251, 172, 79, 255, 251, 172, 79, 255, 200, 113, 45, 255, 250, 136, 44, 255, 101, 72, 49, 255, 171, 210, 170, 255, 222, 255, 222, 255, 217, 255, 217, 255, 213, 255, 213, 255, 209, 255, 209, 255, 204, 255, 204, 255, 203, 254, 203, 255, 198, 248, 199, 255, 164, 213, 164, 255, 133, 180, 131, 255, 137, 184, 135, 255, 141, 188, 139, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 101, 125, 101, 255, 153, 109, 58, 255, 204, 139, 62, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 200, 141, 71, 255, 250, 171, 78, 255, 250, 171, 78, 255, 200, 115, 46, 255, 251, 138, 45, 255, 101, 73, 50, 255, 164, 205, 163, 255, 217, 255, 217, 255, 213, 255, 213, 255, 209, 255, 209, 255, 204, 255, 204, 255, 203, 254, 203, 255, 198, 248, 199, 255, 187, 236, 188, 255, 138, 185, 136, 255, 137, 184, 135, 255, 141, 188, 139, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 153, 201, 152, 255, 104, 128, 103, 255, 153, 110, 59, 255, 204, 140, 63, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 200, 139, 69, 255, 250, 168, 76, 255, 250, 168, 76, 255, 201, 116, 46, 255, 251, 140, 45, 255, 101, 74, 50, 255, 163, 205, 162, 255, 214, 255, 214, 255, 210, 255, 210, 255, 204, 255, 204, 255, 204, 255, 204, 255, 199, 249, 200, 255, 194, 244, 197, 255, 156, 204, 156, 255, 137, 184, 135, 255, 141, 188, 139, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 153, 201, 152, 255, 156, 204, 155, 255, 105, 129, 104, 255, 153, 111, 60, 255, 204, 141, 64, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 200, 137, 68, 255, 250, 166, 74, 255, 250, 166, 74, 255, 201, 118, 47, 255, 252, 142, 46, 255, 101, 74, 50, 255, 163, 207, 161, 255, 210, 255, 210, 255, 205, 255, 205, 255, 204, 255, 204, 255, 199, 249, 200, 255, 195, 244, 197, 255, 188, 236, 191, 255, 141, 188, 139, 255, 141, 188, 139, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 153, 201, 152, 255, 156, 204, 155, 255, 160, 209, 158, 255, 107, 131, 106, 255, 153, 111, 60, 255, 204, 142, 65, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 200, 135, 67, 255, 249, 163, 73, 255, 249, 163, 73, 255, 202, 119, 47, 255, 253, 144, 47, 255, 102, 75, 50, 255, 163, 209, 162, 255, 205, 255, 205, 255, 204, 255, 204, 255, 199, 249, 200, 255, 196, 245, 198, 255, 191, 240, 194, 255, 168, 215, 170, 255, 141, 188, 139, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 153, 201, 152, 255, 157, 205, 156, 255, 160, 209, 158, 255, 164, 213, 162, 255, 109, 133, 108, 255, 153, 112, 61, 255, 204, 143, 67, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 200, 133, 66, 255, 249, 161, 71, 255, 249, 161, 71, 255, 202, 121, 48, 255, 253, 145, 48, 255, 102, 75, 50, 255, 162, 210, 160, 255, 204, 255, 204, 255, 199, 249, 200, 255, 196, 245, 198, 255, 192, 241, 195, 255, 187, 234, 191, 255, 152, 199, 152, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 153, 201, 152, 255, 157, 205, 156, 255, 161, 210, 159, 255, 164, 213, 162, 255, 167, 216, 165, 255, 110, 135, 110, 255, 153, 113, 62, 255, 204, 144, 68, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 200, 131, 64, 255, 249, 158, 69, 255, 249, 158, 69, 255, 203, 122, 49, 255, 253, 147, 49, 255, 102, 75, 51, 255, 163, 212, 162, 255, 199, 249, 200, 255, 196, 245, 198, 255, 192, 241, 195, 255, 187, 235, 191, 255, 180, 227, 184, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 153, 201, 152, 255, 157, 205, 156, 255, 161, 210, 159, 255, 164, 213, 162, 255, 167, 216, 165, 255, 170, 220, 169, 255, 111, 136, 111, 255, 153, 114, 63, 255, 204, 146, 69, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 63, 58, 52, 255, 101, 78, 55, 255, 248, 156, 67, 255, 203, 123, 50, 255, 254, 149, 50, 255, 102, 76, 51, 255, 163, 211, 162, 255, 196, 245, 198, 255, 192, 241, 195, 255, 187, 235, 191, 255, 184, 230, 188, 255, 169, 216, 172, 255, 146, 194, 145, 255, 150, 198, 149, 255, 154, 202, 153, 255, 157, 205, 156, 255, 157, 206, 155, 255, 150, 198, 147, 255, 137, 185, 135, 255, 127, 174, 125, 255, 133, 180, 130, 255, 113, 138, 113, 255, 153, 114, 63, 255, 204, 147, 71, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 174, 114, 60, 255, 199, 127, 62, 255, 248, 153, 66, 255, 203, 125, 50, 255, 254, 151, 50, 255, 102, 76, 51, 255, 163, 211, 163, 255, 192, 241, 195, 255, 187, 235, 191, 255, 184, 230, 188, 255, 180, 226, 185, 255, 160, 206, 162, 255, 139, 187, 138, 255, 133, 180, 131, 255, 126, 173, 124, 255, 114, 161, 112, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 125, 172, 123, 255, 115, 140, 115, 255, 153, 116, 65, 255, 204, 148, 72, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 51, 51, 51, 255, 51, 51, 51, 255, 248, 151, 64, 255, 203, 126, 50, 255, 255, 153, 51, 255, 102, 77, 51, 255, 162, 210, 163, 255, 187, 235, 191, 255, 184, 230, 188, 255, 180, 226, 185, 255, 175, 220, 182, 255, 120, 166, 119, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 126, 173, 124, 255, 117, 142, 117, 255, 153, 116, 65, 255, 204, 149, 73, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 174, 112, 58, 255, 248, 149, 62, 255, 248, 149, 62, 255, 204, 128, 51, 255, 255, 153, 51, 255, 102, 77, 51, 255, 162, 209, 163, 255, 184, 230, 188, 255, 180, 226, 185, 255, 175, 220, 182, 255, 172, 216, 179, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 112, 158, 109, 255, 119, 165, 116, 255, 140, 188, 139, 255, 118, 143, 118, 255, 153, 117, 66, 255, 204, 151, 75, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 63, 57, 52, 255, 63, 57, 52, 255, 247, 146, 61, 255, 204, 128, 51, 255, 255, 155, 53, 255, 102, 77, 52, 255, 161, 208, 163, 255, 180, 226, 185, 255, 175, 220, 182, 255, 172, 216, 179, 255, 153, 198, 158, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 110, 157, 108, 255, 118, 164, 115, 255, 125, 172, 123, 255, 129, 177, 128, 255, 135, 183, 134, 255, 153, 201, 152, 255, 121, 146, 120, 255, 153, 118, 67, 255, 204, 152, 76, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 174, 109, 56, 255, 223, 132, 58, 255, 247, 144, 59, 255, 204, 129, 52, 255, 255, 156, 54, 255, 102, 78, 52, 255, 161, 208, 163, 255, 175, 220, 182, 255, 172, 216, 179, 255, 168, 212, 176, 255, 140, 184, 143, 255, 108, 154, 105, 255, 109, 155, 106, 255, 116, 163, 114, 255, 123, 170, 121, 255, 128, 175, 126, 255, 134, 182, 133, 255, 140, 188, 139, 255, 146, 194, 145, 255, 154, 202, 152, 255, 167, 216, 166, 255, 122, 147, 122, 255, 153, 119, 68, 255, 204, 153, 77, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 51, 51, 51, 255, 76, 62, 52, 255, 222, 130, 56, 255, 204, 130, 54, 255, 255, 158, 56, 255, 102, 78, 53, 255, 160, 207, 163, 255, 172, 216, 179, 255, 168, 212, 176, 255, 163, 206, 172, 255, 139, 184, 143, 255, 121, 168, 119, 255, 127, 174, 125, 255, 133, 180, 131, 255, 139, 187, 138, 255, 146, 194, 145, 255, 152, 201, 151, 255, 159, 207, 157, 255, 165, 214, 163, 255, 170, 219, 168, 255, 180, 230, 179, 255, 123, 148, 123, 255, 153, 119, 68, 255, 204, 154, 78, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 197, 117, 54, 255, 197, 117, 54, 255, 246, 139, 55, 255, 204, 132, 55, 255, 255, 160, 58, 255, 102, 78, 53, 255, 160, 207, 164, 255, 168, 212, 176, 255, 163, 206, 172, 255, 160, 202, 169, 255, 138, 184, 139, 255, 139, 187, 138, 255, 145, 193, 144, 255, 150, 198, 149, 255, 157, 206, 156, 255, 164, 212, 162, 255, 168, 218, 167, 255, 176, 225, 174, 255, 183, 233, 182, 255, 187, 238, 187, 255, 194, 245, 194, 255, 125, 151, 125, 255, 153, 120, 69, 255, 204, 156, 79, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 63, 56, 51, 255, 100, 73, 52, 255, 246, 137, 53, 255, 204, 133, 56, 255, 255, 162, 60, 255, 102, 79, 54, 255, 160, 206, 164, 255, 163, 206, 172, 255, 160, 202, 169, 255, 156, 197, 166, 255, 150, 197, 151, 255, 155, 203, 153, 255, 162, 211, 160, 255, 167, 216, 165, 255, 174, 224, 173, 255, 181, 231, 180, 255, 186, 236, 185, 255, 192, 243, 192, 255, 198, 249, 198, 255, 204, 255, 204, 255, 203, 254, 203, 255, 127, 153, 127, 255, 153, 121, 70, 255, 204, 157, 80, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 185, 108, 51, 255, 209, 118, 51, 255, 246, 134, 52, 255, 204, 134, 58, 255, 255, 163, 61, 255, 102, 79, 54, 255, 159, 205, 163, 255, 160, 202, 169, 255, 156, 197, 166, 255, 151, 191, 163, 255, 167, 216, 165, 255, 173, 223, 172, 255, 179, 229, 178, 255, 185, 235, 184, 255, 191, 241, 190, 255, 195, 246, 195, 255, 200, 251, 200, 255, 198, 249, 198, 255, 162, 200, 162, 255, 125, 151, 125, 255, 89, 102, 89, 255, 77, 69, 56, 255, 179, 140, 76, 255, 204, 158, 82, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 197, 111, 50, 255, 245, 132, 50, 255, 245, 132, 50, 255, 204, 135, 59, 255, 255, 165, 63, 255, 102, 80, 54, 255, 159, 205, 163, 255, 156, 197, 166, 255, 151, 191, 163, 255, 148, 187, 160, 255, 184, 234, 183, 255, 184, 234, 183, 255, 187, 237, 186, 255, 191, 241, 190, 255, 155, 192, 154, 255, 121, 146, 120, 255, 86, 99, 86, 255, 89, 77, 57, 255, 128, 102, 64, 255, 179, 137, 74, 255, 230, 174, 84, 255, 255, 192, 90, 255, 255, 194, 92, 255, 204, 159, 83, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 197, 110, 49, 255, 245, 129, 48, 255, 245, 129, 48, 255, 204, 137, 60, 255, 255, 167, 65, 255, 102, 80, 55, 255, 160, 205, 164, 255, 151, 191, 163, 255, 154, 197, 163, 255, 160, 204, 166, 255, 146, 183, 145, 255, 116, 141, 115, 255, 84, 96, 84, 255, 89, 76, 56, 255, 140, 109, 64, 255, 191, 143, 73, 255, 242, 178, 82, 255, 255, 187, 85, 255, 255, 189, 87, 255, 255, 191, 89, 255, 249, 163, 86, 255, 245, 145, 89, 255, 245, 131, 50, 255, 203, 158, 82, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 196, 108, 48, 255, 245, 127, 47, 255, 245, 127, 47, 255, 204, 138, 62, 255, 255, 168, 66, 255, 102, 81, 55, 255, 136, 172, 136, 255, 111, 136, 110, 255, 81, 94, 81, 255, 102, 83, 57, 255, 153, 115, 64, 255, 204, 148, 71, 255, 242, 173, 78, 255, 250, 157, 64, 255, 251, 172, 78, 255, 255, 186, 84, 255, 253, 172, 75, 255, 246, 146, 81, 255, 244, 125, 52, 255, 236, 147, 71, 255, 190, 182, 177, 255, 191, 191, 191, 255, 221, 171, 118, 255, 202, 158, 85, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 196, 106, 46, 255, 244, 125, 45, 255, 244, 125, 45, 255, 204, 139, 63, 255, 255, 170, 68, 255, 140, 104, 59, 255, 153, 112, 61, 255, 204, 144, 68, 255, 255, 176, 74, 255, 255, 178, 76, 255, 255, 180, 78, 255, 255, 181, 79, 255, 228, 179, 125, 255, 177, 177, 177, 255, 162, 158, 153, 255, 239, 203, 115, 255, 216, 168, 131, 255, 204, 204, 204, 255, 206, 193, 183, 255, 217, 159, 88, 255, 77, 77, 77, 255, 77, 77, 77, 255, 212, 196, 123, 255, 204, 166, 90, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 196, 104, 45, 255, 244, 122, 44, 255, 244, 122, 44, 255, 204, 140, 64, 255, 255, 171, 69, 255, 255, 173, 71, 255, 255, 175, 73, 255, 255, 176, 74, 255, 253, 169, 70, 255, 249, 144, 55, 255, 250, 154, 62, 255, 255, 183, 81, 255, 165, 157, 152, 255, 83, 83, 83, 255, 145, 124, 93, 255, 236, 191, 101, 255, 132, 107, 79, 255, 77, 77, 77, 255, 124, 120, 95, 255, 254, 216, 116, 255, 217, 182, 100, 255, 230, 202, 112, 255, 255, 212, 110, 255, 204, 165, 88, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 196, 102, 44, 255, 244, 120, 42, 255, 244, 120, 42, 255, 204, 141, 65, 255, 254, 168, 68, 255, 249, 146, 55, 255, 249, 142, 53, 255, 251, 156, 62, 255, 237, 173, 134, 255, 239, 206, 187, 255, 240, 152, 87, 255, 252, 175, 79, 255, 231, 176, 93, 255, 192, 158, 107, 255, 166, 150, 124, 255, 229, 171, 96, 255, 242, 191, 96, 255, 204, 178, 101, 255, 242, 210, 114, 255, 255, 198, 96, 255, 255, 199, 97, 255, 255, 201, 99, 255, 255, 203, 101, 255, 204, 166, 89, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 195, 101, 42, 255, 243, 117, 40, 255, 243, 117, 40, 255, 204, 142, 66, 255, 240, 151, 80, 255, 228, 211, 202, 255, 228, 182, 153, 255, 228, 146, 74, 255, 128, 128, 128, 255, 128, 128, 128, 255, 189, 164, 118, 255, 253, 194, 96, 255, 169, 165, 158, 255, 104, 104, 104, 255, 77, 77, 77, 255, 234, 209, 120, 255, 255, 194, 92, 255, 255, 196, 94, 255, 255, 198, 96, 255, 255, 199, 97, 255, 255, 201, 99, 255, 255, 203, 101, 255, 255, 204, 102, 255, 115, 99, 67, 255, 24, 24, 24, 208, 0, 0, 0, 93, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 195, 99, 41, 255, 243, 115, 38, 255, 243, 115, 38, 255, 204, 144, 68, 255, 164, 135, 107, 255, 128, 128, 128, 255, 137, 135, 129, 255, 251, 204, 110, 255, 115, 108, 76, 255, 115, 115, 83, 255, 242, 223, 128, 255, 255, 188, 86, 255, 222, 169, 94, 255, 190, 159, 111, 255, 204, 173, 97, 255, 255, 198, 96, 255, 255, 196, 94, 255, 255, 198, 96, 255, 255, 199, 97, 255, 255, 201, 99, 255, 255, 203, 101, 255, 242, 194, 99, 255, 102, 89, 64, 255, 23, 23, 23, 215, 0, 0, 0, 161, 0, 0, 0, 72, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 195, 97, 40, 255, 243, 112, 37, 255, 207, 101, 39, 255, 204, 145, 69, 255, 216, 164, 84, 255, 127, 125, 87, 255, 204, 195, 118, 255, 255, 197, 95, 255, 255, 185, 83, 255, 255, 187, 85, 255, 255, 188, 86, 255, 255, 189, 87, 255, 255, 191, 89, 255, 255, 193, 91, 255, 255, 194, 92, 255, 255, 196, 94, 255, 255, 198, 96, 255, 255, 199, 97, 255, 255, 201, 99, 255, 255, 203, 101, 255, 230, 185, 96, 255, 88, 78, 58, 251, 19, 19, 19, 210, 0, 0, 0, 160, 0, 0, 0, 84, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 119, 170, 88, 41, 255, 242, 110, 35, 255, 194, 95, 39, 255, 204, 147, 70, 255, 255, 180, 78, 255, 255, 182, 80, 255, 217, 158, 75, 255, 153, 118, 67, 255, 242, 178, 83, 255, 255, 188, 86, 255, 255, 189, 87, 255, 255, 191, 89, 255, 255, 193, 91, 255, 255, 194, 92, 255, 255, 196, 94, 255, 255, 198, 96, 255, 255, 199, 97, 255, 255, 201, 99, 255, 255, 203, 101, 255, 191, 156, 86, 255, 54, 51, 44, 239, 8, 8, 8, 193, 0, 0, 0, 148, 0, 0, 0, 76, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 39, 39, 39, 167, 97, 61, 42, 244, 158, 83, 41, 255, 204, 148, 71, 255, 255, 182, 80, 255, 255, 183, 81, 255, 89, 76, 57, 255, 51, 51, 51, 255, 128, 102, 64, 255, 255, 189, 87, 255, 255, 191, 89, 255, 255, 193, 91, 255, 255, 194, 92, 255, 255, 196, 94, 255, 255, 198, 96, 255, 255, 199, 97, 255, 255, 201, 99, 255, 230, 184, 94, 255, 113, 97, 65, 251, 26, 26, 26, 219, 0, 0, 0, 172, 0, 0, 0, 122, 0, 0, 0, 52, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 93, 26, 26, 26, 185, 99, 80, 54, 245, 153, 117, 66, 255, 204, 152, 75, 255, 51, 51, 51, 255, 51, 51, 51, 255, 102, 86, 60, 255, 255, 191, 89, 255, 255, 193, 91, 255, 255, 194, 92, 255, 255, 196, 94, 255, 255, 198, 96, 255, 255, 199, 97, 255, 191, 154, 84, 255, 127, 106, 68, 251, 29, 29, 29, 223, 4, 4, 4, 183, 0, 0, 0, 149, 0, 0, 0, 88, 0, 0, 0, 28, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 30, 0, 0, 0, 81, 11, 11, 11, 154, 21, 21, 21, 195, 30, 30, 30, 215, 39, 39, 39, 231, 55, 51, 44, 237, 96, 79, 52, 237, 96, 80, 53, 237, 96, 80, 53, 237, 96, 81, 53, 237, 96, 81, 53, 237, 30, 30, 30, 220, 20, 20, 20, 203, 0, 0, 0, 173, 0, 0, 0, 149, 0, 0, 0, 96, 0, 0, 0, 40, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 24, 0, 0, 0, 46, 0, 0, 0, 76, 0, 0, 0, 108, 0, 0, 0, 136, 0, 0, 0, 148, 0, 0, 0, 149, 0, 0, 0, 149, 0, 0, 0, 149, 0, 0, 0, 149, 0, 0, 0, 143, 0, 0, 0, 109, 0, 0, 0, 73, 0, 0, 0, 30, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_DeviceVideo(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 49, 49, 49, 67, 49, 49, 49, 100, 49, 49, 49, 132, 49, 49, 49, 134, 49, 49, 49, 148, 50, 50, 50, 194, 89, 89, 89, 196, 75, 75, 75, 196, 48, 48, 48, 137, 49, 49, 49, 134, 48, 48, 48, 119, 46, 46, 46, 71, 48, 48, 48, 68, 37, 37, 37, 22, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 32, 77, 77, 77, 255, 204, 204, 204, 255, 200, 200, 200, 255, 223, 223, 223, 255, 226, 226, 226, 255, 222, 222, 222, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 205, 205, 205, 255, 203, 203, 203, 255, 164, 164, 164, 255, 161, 161, 161, 255, 133, 133, 133, 255, 123, 123, 123, 255, 103, 103, 103, 255, 92, 92, 92, 212, 60, 60, 60, 196, 48, 48, 48, 151, 49, 49, 49, 134, 45, 45, 45, 73, 44, 44, 44, 37, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 192, 128, 128, 128, 255, 206, 206, 206, 255, 126, 126, 126, 255, 189, 189, 189, 255, 242, 242, 242, 255, 245, 245, 245, 255, 243, 243, 243, 255, 236, 236, 236, 255, 229, 229, 229, 255, 219, 219, 219, 255, 213, 213, 213, 255, 207, 207, 207, 255, 196, 196, 196, 255, 194, 194, 194, 255, 192, 192, 192, 255, 190, 190, 190, 255, 188, 188, 188, 255, 186, 186, 186, 255, 184, 184, 184, 255, 148, 148, 148, 255, 131, 131, 131, 255, 106, 106, 106, 255, 83, 83, 83, 242, 49, 49, 49, 183, 47, 47, 47, 121, 33, 33, 33, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 96, 92, 92, 92, 240, 64, 64, 64, 255, 134, 134, 134, 255, 157, 157, 157, 255, 85, 85, 85, 255, 128, 128, 128, 255, 166, 166, 166, 255, 175, 175, 175, 255, 191, 191, 191, 255, 204, 204, 204, 255, 212, 212, 212, 255, 222, 222, 222, 255, 229, 229, 229, 255, 230, 230, 230, 255, 227, 227, 227, 255, 218, 218, 218, 255, 210, 210, 210, 255, 202, 202, 202, 255, 192, 192, 192, 255, 184, 184, 184, 255, 181, 181, 181, 255, 179, 179, 179, 255, 177, 177, 177, 255, 175, 175, 175, 255, 172, 172, 172, 255, 163, 163, 163, 255, 109, 109, 109, 255, 58, 58, 58, 244, 43, 43, 43, 134, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 51, 51, 51, 32, 113, 113, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 204, 204, 255, 166, 166, 166, 255, 155, 155, 155, 255, 138, 138, 138, 255, 123, 123, 123, 255, 148, 148, 148, 255, 173, 173, 173, 255, 176, 176, 176, 255, 180, 180, 180, 255, 184, 184, 184, 255, 187, 187, 187, 255, 192, 192, 192, 255, 202, 202, 202, 255, 209, 209, 209, 255, 212, 212, 212, 255, 215, 215, 215, 255, 217, 217, 217, 255, 212, 212, 212, 255, 202, 202, 202, 255, 189, 189, 189, 255, 175, 175, 175, 255, 172, 172, 172, 255, 170, 170, 170, 255, 168, 168, 168, 255, 166, 166, 166, 255, 156, 156, 156, 255, 99, 99, 99, 255, 46, 46, 46, 213, 19, 19, 19, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 50, 50, 50, 82, 136, 136, 136, 255, 229, 229, 229, 255, 235, 235, 235, 255, 241, 241, 241, 255, 248, 248, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 204, 204, 255, 166, 166, 166, 255, 159, 159, 159, 255, 146, 146, 146, 255, 142, 142, 142, 255, 170, 170, 170, 255, 190, 190, 190, 255, 193, 193, 193, 255, 197, 197, 197, 255, 200, 200, 200, 255, 203, 203, 203, 255, 188, 188, 188, 255, 51, 51, 51, 255, 142, 142, 142, 255, 209, 209, 209, 255, 200, 200, 200, 255, 174, 174, 174, 255, 168, 168, 168, 255, 166, 166, 166, 255, 163, 163, 163, 255, 162, 162, 162, 255, 160, 160, 160, 255, 130, 130, 130, 255, 55, 55, 55, 238, 29, 29, 29, 85, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 50, 50, 50, 131, 178, 178, 178, 255, 219, 219, 219, 255, 217, 217, 217, 255, 185, 185, 185, 255, 215, 215, 215, 255, 213, 213, 213, 255, 223, 223, 223, 255, 230, 230, 230, 255, 238, 238, 238, 255, 246, 246, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 201, 201, 201, 255, 170, 170, 170, 255, 159, 159, 159, 255, 160, 160, 160, 255, 153, 153, 153, 255, 184, 184, 184, 255, 207, 207, 207, 255, 150, 150, 150, 255, 204, 204, 204, 255, 215, 215, 215, 255, 207, 207, 207, 255, 195, 195, 195, 255, 166, 166, 166, 255, 163, 163, 163, 255, 162, 162, 162, 255, 160, 160, 160, 255, 157, 157, 157, 255, 155, 155, 155, 255, 115, 115, 115, 255, 49, 49, 49, 248, 33, 33, 33, 122, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 50, 50, 50, 194, 198, 198, 198, 255, 207, 207, 207, 255, 72, 97, 69, 255, 54, 121, 45, 255, 144, 152, 142, 255, 212, 212, 212, 255, 211, 211, 211, 255, 209, 209, 209, 255, 209, 209, 209, 255, 207, 207, 207, 255, 206, 206, 206, 255, 217, 217, 217, 255, 223, 223, 223, 255, 230, 230, 230, 255, 237, 237, 237, 255, 244, 244, 244, 255, 242, 242, 242, 255, 239, 239, 239, 255, 202, 202, 202, 255, 175, 175, 175, 255, 170, 170, 170, 255, 177, 177, 177, 255, 165, 165, 165, 255, 194, 194, 194, 255, 194, 194, 194, 255, 107, 107, 107, 255, 107, 107, 107, 255, 78, 78, 78, 255, 78, 78, 78, 255, 51, 51, 51, 255, 54, 54, 54, 255, 64, 64, 64, 255, 64, 64, 64, 255, 57, 57, 57, 255, 37, 37, 37, 155, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 32, 49, 49, 49, 50, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 50, 50, 50, 210, 217, 217, 217, 255, 175, 175, 175, 255, 80, 169, 61, 255, 211, 255, 188, 255, 162, 182, 151, 255, 211, 211, 211, 255, 209, 209, 209, 255, 209, 209, 209, 255, 207, 207, 207, 255, 206, 206, 206, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 207, 207, 207, 255, 213, 213, 213, 255, 218, 218, 218, 255, 222, 222, 222, 255, 230, 230, 230, 255, 228, 228, 228, 255, 225, 225, 225, 255, 190, 190, 190, 255, 51, 51, 51, 255, 65, 65, 65, 255, 78, 78, 78, 255, 84, 84, 84, 255, 80, 80, 80, 255, 89, 89, 89, 255, 89, 89, 89, 255, 93, 93, 93, 255, 103, 103, 103, 255, 97, 97, 97, 255, 51, 51, 51, 255, 0, 0, 0, 90, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 80, 142, 142, 142, 177, 168, 168, 168, 255, 175, 175, 175, 255, 79, 79, 79, 202, 0, 0, 0, 22, 0, 0, 0, 0,
+ 0, 0, 0, 0, 72, 72, 72, 255, 216, 216, 216, 255, 205, 205, 205, 255, 111, 124, 107, 255, 162, 188, 149, 255, 201, 201, 201, 255, 209, 209, 209, 255, 209, 209, 209, 255, 207, 207, 207, 255, 206, 206, 206, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 196, 196, 196, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 190, 190, 190, 255, 189, 189, 189, 255, 195, 195, 195, 255, 200, 200, 200, 255, 178, 178, 178, 255, 87, 87, 87, 255, 108, 108, 108, 255, 93, 93, 93, 255, 58, 58, 58, 255, 62, 62, 62, 255, 89, 89, 89, 255, 88, 88, 88, 255, 51, 51, 51, 255, 62, 62, 62, 255, 97, 97, 97, 255, 51, 51, 51, 255, 0, 0, 0, 154, 21, 21, 21, 38, 74, 74, 74, 113, 147, 147, 147, 224, 200, 200, 200, 255, 213, 213, 213, 255, 187, 187, 187, 255, 169, 169, 169, 255, 100, 100, 100, 244, 0, 0, 0, 116, 0, 0, 0, 18,
+ 0, 0, 0, 0, 92, 92, 92, 255, 215, 215, 215, 255, 213, 213, 213, 255, 212, 212, 212, 255, 211, 211, 211, 255, 209, 209, 209, 255, 208, 208, 208, 255, 207, 207, 207, 255, 206, 206, 206, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 196, 196, 196, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 190, 190, 190, 255, 189, 189, 189, 255, 188, 188, 188, 255, 186, 186, 186, 255, 185, 185, 185, 255, 83, 83, 83, 255, 111, 111, 111, 255, 89, 89, 89, 255, 62, 62, 62, 255, 157, 157, 157, 255, 201, 201, 201, 255, 166, 166, 166, 255, 156, 156, 156, 255, 143, 143, 143, 255, 111, 111, 111, 255, 55, 55, 55, 255, 51, 51, 51, 255, 35, 35, 35, 211, 139, 139, 139, 255, 210, 210, 210, 255, 204, 204, 204, 255, 179, 179, 179, 255, 162, 162, 162, 255, 166, 166, 166, 255, 170, 170, 170, 255, 112, 112, 112, 255, 0, 0, 0, 149, 0, 0, 0, 21,
+ 51, 51, 51, 32, 92, 92, 92, 255, 213, 213, 213, 255, 212, 212, 212, 255, 211, 211, 211, 255, 209, 209, 209, 255, 208, 208, 208, 255, 207, 207, 207, 255, 206, 206, 206, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 196, 196, 196, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 190, 190, 190, 255, 189, 189, 189, 255, 188, 188, 188, 255, 186, 186, 186, 255, 185, 185, 185, 255, 142, 142, 142, 255, 100, 100, 100, 255, 96, 96, 96, 255, 83, 83, 83, 255, 210, 210, 210, 255, 153, 153, 153, 255, 61, 61, 61, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 65, 65, 65, 255, 96, 96, 96, 255, 51, 51, 51, 255, 58, 58, 58, 241, 102, 102, 102, 255, 122, 122, 122, 255, 160, 160, 160, 255, 164, 164, 164, 255, 167, 167, 167, 255, 171, 171, 171, 255, 174, 174, 174, 255, 114, 114, 114, 255, 0, 0, 0, 164, 0, 0, 0, 24,
+ 49, 49, 49, 66, 112, 112, 112, 255, 212, 212, 212, 255, 211, 211, 211, 255, 209, 209, 209, 255, 199, 199, 199, 255, 178, 178, 178, 255, 206, 206, 206, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 196, 196, 196, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 190, 190, 190, 255, 189, 189, 189, 255, 188, 188, 188, 255, 186, 186, 186, 255, 185, 185, 185, 255, 184, 184, 184, 255, 109, 109, 109, 255, 116, 116, 116, 255, 68, 68, 68, 255, 196, 196, 196, 255, 134, 134, 134, 255, 48, 54, 61, 255, 38, 64, 89, 255, 27, 76, 126, 255, 20, 82, 145, 255, 27, 75, 123, 255, 49, 53, 58, 255, 57, 57, 57, 255, 86, 86, 86, 255, 64, 64, 64, 255, 102, 102, 102, 255, 104, 104, 104, 255, 165, 165, 165, 255, 168, 168, 168, 255, 172, 172, 172, 255, 176, 176, 176, 255, 180, 180, 180, 255, 117, 117, 117, 255, 13, 13, 13, 184, 0, 0, 0, 28,
+ 48, 48, 48, 68, 131, 131, 131, 255, 211, 211, 211, 255, 209, 209, 209, 255, 208, 208, 208, 255, 168, 168, 168, 255, 204, 204, 204, 255, 174, 174, 174, 255, 172, 172, 172, 255, 171, 171, 171, 255, 180, 180, 180, 255, 189, 189, 189, 255, 197, 197, 197, 255, 196, 196, 196, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 190, 190, 190, 255, 189, 189, 189, 255, 188, 188, 188, 255, 186, 186, 186, 255, 185, 185, 185, 255, 184, 184, 184, 255, 182, 182, 182, 255, 99, 99, 99, 255, 92, 92, 92, 255, 153, 153, 153, 255, 255, 255, 255, 255, 46, 56, 65, 255, 44, 58, 72, 255, 39, 63, 87, 255, 34, 69, 104, 255, 25, 78, 130, 255, 13, 89, 166, 255, 15, 87, 159, 255, 51, 51, 51, 255, 82, 82, 82, 255, 64, 64, 64, 255, 102, 102, 102, 255, 106, 106, 106, 255, 170, 170, 170, 255, 173, 173, 173, 255, 177, 177, 177, 255, 181, 181, 181, 255, 186, 186, 186, 255, 154, 154, 154, 255, 17, 17, 17, 193, 0, 0, 0, 52,
+ 48, 48, 48, 68, 131, 131, 131, 255, 209, 209, 209, 255, 208, 208, 208, 255, 207, 207, 207, 255, 196, 196, 196, 255, 202, 202, 202, 255, 200, 200, 200, 255, 196, 196, 196, 255, 194, 194, 194, 255, 191, 191, 191, 255, 170, 170, 170, 255, 161, 161, 161, 255, 162, 162, 162, 255, 162, 162, 162, 255, 165, 165, 165, 255, 190, 190, 190, 255, 189, 189, 189, 255, 188, 188, 188, 255, 186, 186, 186, 255, 185, 185, 185, 255, 184, 184, 184, 255, 182, 182, 182, 255, 181, 181, 181, 255, 104, 104, 104, 255, 70, 70, 70, 255, 182, 182, 182, 255, 139, 141, 143, 255, 40, 62, 84, 255, 51, 51, 51, 255, 43, 59, 75, 255, 35, 67, 99, 255, 26, 77, 128, 255, 13, 89, 166, 255, 7, 96, 185, 255, 32, 70, 108, 255, 67, 67, 67, 255, 60, 60, 60, 255, 102, 102, 102, 255, 113, 113, 113, 255, 174, 174, 174, 255, 179, 179, 179, 255, 182, 182, 182, 255, 187, 187, 187, 255, 191, 191, 191, 255, 158, 158, 158, 255, 17, 17, 17, 194, 0, 0, 0, 64,
+ 48, 48, 48, 68, 130, 130, 130, 255, 208, 208, 208, 255, 207, 207, 207, 255, 205, 205, 205, 255, 165, 165, 165, 255, 200, 200, 200, 255, 196, 196, 196, 255, 194, 194, 194, 255, 191, 191, 191, 255, 187, 187, 187, 255, 185, 185, 185, 255, 182, 182, 182, 255, 178, 178, 178, 255, 176, 176, 176, 255, 173, 173, 173, 255, 140, 140, 140, 255, 150, 150, 150, 255, 152, 152, 152, 255, 157, 157, 157, 255, 184, 184, 184, 255, 182, 182, 182, 255, 181, 181, 181, 255, 148, 148, 148, 255, 112, 112, 112, 255, 51, 51, 51, 255, 203, 203, 203, 255, 51, 70, 89, 255, 95, 135, 174, 255, 139, 195, 250, 255, 84, 142, 200, 255, 30, 73, 116, 255, 24, 79, 133, 255, 13, 89, 166, 255, 4, 98, 192, 255, 16, 88, 159, 255, 51, 51, 51, 255, 87, 87, 87, 255, 102, 102, 102, 255, 89, 89, 89, 255, 180, 180, 180, 255, 184, 184, 184, 255, 187, 187, 187, 255, 192, 192, 192, 255, 196, 196, 196, 255, 163, 163, 163, 255, 17, 17, 17, 194, 0, 0, 0, 66,
+ 48, 48, 48, 68, 129, 129, 129, 255, 207, 207, 207, 255, 205, 205, 205, 255, 204, 204, 204, 255, 164, 164, 164, 255, 196, 196, 196, 255, 194, 194, 194, 255, 191, 191, 191, 255, 187, 187, 187, 255, 185, 185, 185, 255, 182, 182, 182, 255, 178, 178, 178, 255, 176, 176, 176, 255, 173, 173, 173, 255, 170, 170, 170, 255, 167, 167, 167, 255, 164, 164, 164, 255, 161, 161, 161, 255, 157, 157, 157, 255, 182, 182, 182, 255, 181, 181, 181, 255, 180, 180, 180, 255, 147, 147, 147, 255, 115, 115, 115, 255, 88, 88, 88, 255, 190, 190, 190, 255, 33, 70, 106, 255, 123, 179, 234, 255, 101, 169, 238, 255, 50, 136, 221, 255, 26, 77, 128, 255, 16, 86, 157, 255, 12, 90, 168, 255, 1, 101, 202, 255, 13, 106, 182, 255, 51, 51, 51, 255, 90, 90, 90, 255, 102, 102, 102, 255, 89, 89, 89, 255, 186, 186, 186, 255, 189, 189, 189, 255, 194, 194, 194, 255, 198, 198, 198, 255, 201, 201, 201, 255, 166, 166, 166, 255, 17, 17, 17, 194, 0, 0, 0, 66,
+ 48, 48, 48, 68, 129, 129, 129, 255, 205, 205, 205, 255, 204, 204, 204, 255, 202, 202, 202, 255, 162, 162, 162, 255, 194, 194, 194, 255, 191, 191, 191, 255, 162, 162, 162, 255, 176, 176, 176, 255, 182, 182, 182, 255, 178, 178, 178, 255, 176, 176, 176, 255, 173, 173, 173, 255, 170, 170, 170, 255, 167, 167, 167, 255, 164, 164, 164, 255, 161, 161, 161, 255, 158, 158, 158, 255, 162, 162, 162, 255, 181, 181, 181, 255, 180, 180, 180, 255, 178, 178, 178, 255, 146, 146, 146, 255, 119, 119, 119, 255, 77, 77, 77, 255, 181, 181, 181, 255, 23, 79, 135, 255, 72, 142, 212, 255, 50, 136, 221, 255, 11, 103, 195, 255, 15, 88, 161, 255, 12, 90, 168, 255, 2, 100, 197, 255, 0, 110, 212, 255, 13, 125, 202, 255, 62, 62, 62, 255, 57, 57, 57, 255, 102, 102, 102, 255, 89, 89, 89, 255, 191, 191, 191, 255, 194, 194, 194, 255, 199, 199, 199, 255, 202, 202, 202, 255, 206, 206, 206, 255, 169, 169, 169, 255, 27, 27, 27, 209, 0, 0, 0, 70,
+ 48, 48, 48, 68, 128, 128, 128, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 161, 161, 161, 255, 191, 191, 191, 255, 181, 181, 181, 255, 181, 181, 181, 255, 194, 194, 194, 255, 178, 178, 178, 255, 165, 165, 165, 255, 167, 167, 167, 255, 170, 170, 170, 255, 167, 167, 167, 255, 164, 164, 164, 255, 161, 161, 161, 255, 158, 158, 158, 255, 155, 155, 155, 255, 159, 159, 159, 255, 180, 180, 180, 255, 178, 178, 178, 255, 177, 177, 177, 255, 160, 160, 160, 255, 121, 121, 121, 255, 57, 57, 57, 255, 170, 170, 170, 255, 33, 82, 132, 255, 12, 94, 176, 255, 15, 96, 177, 255, 12, 90, 168, 255, 8, 94, 180, 255, 2, 100, 199, 255, 0, 104, 206, 255, 0, 140, 242, 255, 29, 90, 135, 255, 83, 83, 83, 255, 64, 64, 64, 255, 102, 102, 102, 255, 89, 89, 89, 255, 196, 196, 196, 255, 201, 201, 201, 255, 204, 204, 204, 255, 207, 207, 207, 255, 211, 211, 211, 255, 184, 184, 184, 255, 30, 30, 30, 217, 0, 0, 0, 94,
+ 48, 48, 48, 68, 127, 127, 127, 255, 202, 202, 202, 255, 201, 201, 201, 255, 200, 200, 200, 255, 159, 159, 159, 255, 187, 187, 187, 255, 185, 185, 185, 255, 195, 195, 195, 255, 192, 192, 192, 255, 176, 176, 176, 255, 178, 178, 178, 255, 219, 219, 219, 255, 171, 171, 171, 255, 164, 164, 164, 255, 159, 159, 159, 255, 176, 176, 176, 255, 155, 155, 155, 255, 152, 152, 152, 255, 158, 158, 158, 255, 178, 178, 178, 255, 177, 177, 177, 255, 176, 176, 176, 255, 174, 174, 174, 255, 118, 118, 118, 255, 82, 82, 82, 255, 124, 124, 124, 255, 77, 102, 128, 255, 0, 102, 204, 255, 0, 102, 204, 255, 0, 102, 204, 255, 0, 102, 204, 255, 0, 118, 220, 255, 0, 145, 247, 255, 3, 130, 226, 255, 48, 56, 62, 255, 72, 72, 72, 255, 64, 64, 64, 255, 102, 102, 102, 255, 89, 89, 89, 255, 183, 183, 183, 255, 205, 205, 205, 255, 208, 208, 208, 255, 213, 213, 213, 255, 216, 216, 216, 255, 221, 221, 221, 255, 30, 30, 30, 217, 0, 0, 0, 106,
+ 48, 48, 48, 68, 126, 126, 126, 255, 200, 200, 200, 255, 200, 200, 200, 255, 198, 198, 198, 255, 158, 158, 158, 255, 185, 185, 185, 255, 182, 182, 182, 255, 178, 178, 178, 255, 176, 176, 176, 255, 173, 173, 173, 255, 173, 173, 173, 255, 181, 181, 181, 255, 164, 164, 164, 255, 161, 161, 161, 255, 183, 183, 183, 255, 212, 212, 212, 255, 152, 152, 152, 255, 149, 149, 149, 255, 154, 154, 154, 255, 177, 177, 177, 255, 176, 176, 176, 255, 174, 174, 174, 255, 173, 173, 173, 255, 125, 125, 125, 255, 128, 128, 128, 255, 77, 77, 77, 255, 143, 143, 143, 255, 26, 112, 175, 255, 0, 137, 239, 255, 0, 136, 238, 255, 0, 146, 248, 255, 0, 140, 242, 255, 3, 124, 220, 255, 35, 73, 105, 255, 83, 83, 83, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 99, 99, 99, 255, 168, 168, 168, 255, 210, 210, 210, 255, 214, 214, 214, 255, 218, 218, 218, 255, 221, 221, 221, 255, 189, 189, 190, 255, 30, 30, 30, 217, 0, 0, 0, 108,
+ 48, 48, 48, 68, 116, 116, 116, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 157, 157, 157, 255, 182, 182, 182, 255, 178, 178, 178, 255, 176, 176, 176, 255, 173, 173, 173, 255, 170, 170, 170, 255, 167, 167, 167, 255, 164, 164, 164, 255, 161, 161, 161, 255, 158, 158, 158, 255, 155, 155, 155, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 152, 152, 152, 255, 176, 176, 176, 255, 174, 174, 174, 255, 173, 173, 173, 255, 172, 172, 172, 255, 129, 129, 129, 255, 157, 157, 157, 255, 84, 84, 84, 255, 109, 109, 109, 255, 152, 152, 152, 255, 34, 101, 152, 255, 13, 110, 187, 255, 13, 107, 184, 255, 19, 96, 160, 255, 41, 63, 82, 255, 104, 104, 104, 255, 75, 75, 75, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 102, 102, 102, 255, 172, 172, 172, 255, 215, 215, 215, 255, 220, 220, 220, 255, 221, 221, 221, 255, 220, 220, 223, 255, 176, 176, 183, 255, 27, 27, 27, 212, 0, 0, 0, 106,
+ 46, 46, 46, 53, 88, 88, 88, 255, 198, 198, 198, 255, 197, 197, 197, 255, 196, 196, 196, 255, 155, 155, 155, 255, 178, 178, 178, 255, 171, 171, 171, 255, 163, 163, 163, 255, 170, 170, 170, 255, 167, 167, 167, 255, 164, 164, 164, 255, 161, 161, 161, 255, 158, 158, 158, 255, 155, 155, 155, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 144, 144, 144, 255, 150, 150, 150, 255, 174, 174, 174, 255, 173, 173, 173, 255, 172, 172, 172, 255, 170, 170, 170, 255, 131, 131, 131, 255, 162, 162, 162, 255, 155, 155, 155, 255, 79, 79, 79, 255, 91, 91, 91, 255, 157, 157, 157, 255, 144, 144, 144, 255, 130, 130, 130, 255, 125, 125, 125, 255, 104, 104, 104, 255, 72, 72, 72, 255, 155, 155, 155, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 102, 102, 102, 255, 176, 176, 176, 255, 221, 221, 221, 255, 221, 221, 221, 255, 219, 219, 225, 255, 218, 218, 228, 255, 174, 174, 187, 255, 17, 17, 17, 197, 0, 0, 0, 94,
+ 0, 0, 0, 4, 88, 88, 88, 255, 197, 197, 197, 255, 196, 196, 196, 255, 194, 194, 194, 255, 154, 154, 154, 255, 176, 176, 176, 255, 174, 174, 174, 255, 215, 215, 215, 255, 193, 193, 193, 255, 164, 164, 164, 255, 155, 155, 155, 255, 153, 153, 153, 255, 155, 155, 155, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 143, 143, 143, 255, 141, 141, 141, 255, 147, 147, 147, 255, 173, 173, 173, 255, 172, 172, 172, 255, 170, 170, 170, 255, 168, 168, 168, 255, 152, 152, 152, 255, 130, 130, 130, 255, 166, 166, 166, 255, 166, 166, 166, 255, 123, 123, 123, 255, 80, 80, 80, 255, 51, 51, 51, 255, 51, 51, 51, 255, 80, 80, 80, 255, 123, 123, 123, 255, 166, 166, 166, 255, 166, 166, 166, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 102, 102, 102, 255, 179, 179, 179, 255, 221, 221, 222, 255, 219, 219, 227, 255, 217, 217, 230, 255, 214, 214, 235, 255, 173, 173, 190, 255, 17, 17, 17, 194, 0, 0, 0, 70,
+ 0, 0, 0, 0, 87, 87, 87, 255, 196, 196, 196, 255, 194, 194, 194, 255, 193, 193, 193, 255, 152, 152, 152, 255, 173, 173, 173, 255, 170, 170, 170, 255, 173, 173, 173, 255, 164, 164, 164, 255, 161, 161, 161, 255, 169, 169, 169, 255, 227, 227, 227, 255, 157, 157, 157, 255, 149, 149, 149, 255, 153, 153, 153, 255, 167, 167, 167, 255, 141, 141, 141, 255, 137, 137, 137, 255, 144, 144, 144, 255, 172, 172, 172, 255, 170, 170, 170, 255, 168, 168, 168, 255, 167, 167, 167, 255, 165, 165, 165, 255, 109, 109, 109, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 96, 96, 96, 255, 199, 199, 202, 255, 218, 218, 228, 255, 216, 216, 232, 255, 214, 214, 235, 255, 212, 212, 239, 255, 171, 171, 194, 255, 17, 17, 17, 194, 0, 0, 0, 66,
+ 0, 0, 0, 0, 51, 51, 51, 241, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 151, 151, 151, 255, 170, 170, 170, 255, 167, 167, 167, 255, 164, 164, 164, 255, 161, 161, 161, 255, 158, 158, 158, 255, 159, 159, 159, 255, 166, 166, 166, 255, 149, 149, 149, 255, 146, 146, 146, 255, 191, 191, 191, 255, 193, 193, 193, 255, 137, 137, 137, 255, 135, 135, 135, 255, 127, 127, 127, 255, 170, 170, 170, 255, 168, 168, 168, 255, 167, 167, 167, 255, 165, 165, 165, 255, 164, 164, 164, 255, 79, 79, 79, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 165, 165, 165, 255, 156, 156, 156, 255, 142, 142, 142, 255, 156, 156, 156, 255, 174, 174, 174, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 89, 89, 89, 255, 218, 218, 228, 255, 215, 215, 233, 255, 213, 213, 236, 255, 212, 212, 240, 255, 210, 210, 243, 255, 139, 139, 161, 255, 17, 17, 17, 194, 0, 0, 0, 66,
+ 0, 0, 0, 0, 49, 49, 49, 197, 193, 193, 193, 255, 192, 192, 192, 255, 190, 190, 190, 255, 150, 150, 150, 255, 167, 167, 167, 255, 164, 164, 164, 255, 153, 153, 153, 255, 158, 158, 158, 255, 155, 155, 155, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 143, 143, 143, 255, 140, 140, 140, 255, 137, 137, 137, 255, 135, 135, 135, 255, 132, 132, 132, 255, 120, 120, 120, 255, 168, 168, 168, 255, 167, 167, 167, 255, 165, 165, 165, 255, 164, 164, 164, 255, 163, 163, 163, 255, 79, 79, 79, 255, 179, 179, 179, 255, 169, 169, 169, 255, 120, 120, 120, 255, 116, 116, 116, 255, 102, 102, 102, 255, 122, 122, 122, 255, 131, 131, 131, 255, 122, 122, 122, 255, 140, 140, 140, 255, 179, 179, 179, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 89, 89, 89, 255, 214, 214, 235, 255, 213, 213, 237, 255, 211, 211, 241, 255, 209, 209, 245, 255, 207, 207, 248, 255, 128, 128, 151, 255, 13, 13, 13, 188, 0, 0, 0, 64,
+ 0, 0, 0, 0, 50, 50, 50, 196, 183, 183, 183, 255, 190, 190, 190, 255, 189, 189, 189, 255, 148, 148, 148, 255, 164, 164, 164, 255, 158, 158, 158, 255, 172, 172, 172, 255, 168, 168, 168, 255, 152, 152, 152, 255, 146, 146, 146, 255, 140, 140, 140, 255, 143, 143, 143, 255, 140, 140, 140, 255, 137, 137, 137, 255, 135, 135, 135, 255, 132, 132, 132, 255, 129, 129, 129, 255, 118, 118, 118, 255, 167, 167, 167, 255, 165, 165, 165, 255, 164, 164, 164, 255, 163, 163, 163, 255, 161, 161, 161, 255, 79, 79, 79, 255, 182, 182, 182, 255, 162, 162, 162, 255, 132, 132, 132, 255, 177, 177, 177, 255, 182, 182, 182, 255, 182, 182, 182, 255, 182, 182, 182, 255, 142, 142, 142, 255, 142, 142, 142, 255, 182, 182, 182, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 113, 113, 118, 255, 212, 212, 239, 255, 211, 211, 242, 255, 208, 208, 247, 255, 206, 206, 249, 255, 204, 204, 254, 255, 128, 128, 153, 255, 0, 0, 0, 172, 0, 0, 0, 52,
+ 0, 0, 0, 0, 47, 47, 47, 122, 103, 103, 103, 255, 189, 189, 189, 255, 188, 188, 188, 255, 147, 147, 147, 255, 161, 161, 161, 255, 161, 161, 161, 255, 204, 204, 204, 255, 168, 168, 168, 255, 149, 149, 149, 255, 157, 157, 157, 255, 179, 179, 179, 255, 140, 140, 140, 255, 137, 137, 137, 255, 133, 133, 133, 255, 133, 133, 133, 255, 129, 129, 129, 255, 126, 126, 126, 255, 116, 116, 116, 255, 165, 165, 165, 255, 164, 164, 164, 255, 163, 163, 163, 255, 161, 161, 161, 255, 161, 161, 161, 255, 78, 78, 78, 255, 187, 187, 187, 255, 165, 165, 165, 255, 144, 144, 144, 255, 187, 187, 187, 255, 187, 187, 187, 255, 187, 187, 187, 255, 187, 187, 187, 255, 144, 144, 144, 255, 144, 144, 144, 255, 187, 187, 187, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 117, 117, 124, 255, 210, 210, 243, 255, 207, 207, 248, 255, 206, 206, 251, 255, 166, 166, 204, 255, 97, 97, 113, 251, 29, 29, 29, 223, 0, 0, 0, 155, 0, 0, 0, 28,
+ 0, 0, 0, 0, 0, 0, 0, 10, 36, 36, 36, 159, 68, 68, 68, 255, 110, 110, 110, 255, 112, 112, 112, 255, 158, 158, 158, 255, 155, 155, 155, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 166, 166, 166, 255, 204, 204, 204, 255, 137, 137, 137, 255, 134, 134, 134, 255, 167, 167, 167, 255, 154, 154, 154, 255, 126, 126, 126, 255, 123, 123, 123, 255, 114, 114, 114, 255, 164, 164, 164, 255, 163, 163, 163, 255, 161, 161, 161, 255, 160, 160, 160, 255, 159, 159, 159, 255, 78, 78, 78, 255, 190, 190, 190, 255, 168, 168, 168, 255, 146, 146, 146, 255, 190, 190, 190, 255, 190, 190, 190, 255, 190, 190, 190, 255, 190, 190, 190, 255, 146, 146, 146, 255, 146, 146, 146, 255, 190, 190, 190, 255, 51, 51, 51, 255, 57, 57, 57, 243, 102, 102, 102, 255, 145, 145, 162, 255, 197, 197, 236, 255, 148, 148, 176, 255, 66, 66, 72, 247, 23, 23, 23, 213, 0, 0, 0, 175, 0, 0, 0, 149, 0, 0, 0, 94, 0, 0, 0, 12,
+ 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, 38, 65, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 155, 155, 155, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 143, 143, 143, 255, 140, 140, 140, 255, 137, 137, 137, 255, 134, 134, 134, 255, 132, 132, 132, 255, 190, 190, 190, 255, 163, 163, 163, 255, 123, 123, 123, 255, 120, 120, 120, 255, 113, 113, 113, 255, 163, 163, 163, 255, 161, 161, 161, 255, 160, 160, 160, 255, 159, 159, 159, 255, 158, 158, 158, 255, 78, 78, 78, 255, 195, 195, 195, 255, 172, 172, 172, 255, 149, 149, 149, 255, 195, 195, 195, 255, 195, 195, 195, 255, 195, 195, 195, 255, 195, 195, 195, 255, 149, 149, 149, 255, 149, 149, 149, 255, 195, 195, 195, 255, 51, 51, 51, 255, 51, 51, 51, 238, 89, 89, 89, 255, 83, 83, 88, 255, 48, 48, 51, 235, 16, 16, 16, 202, 0, 0, 0, 170, 0, 0, 0, 140, 0, 0, 0, 81, 0, 0, 0, 31, 0, 0, 0, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 45, 45, 45, 179, 51, 51, 51, 255, 51, 51, 51, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 143, 143, 143, 255, 140, 140, 140, 255, 137, 137, 137, 255, 134, 134, 134, 255, 132, 132, 132, 255, 129, 129, 129, 255, 126, 126, 126, 255, 123, 123, 123, 255, 120, 120, 120, 255, 117, 117, 117, 255, 111, 111, 111, 255, 161, 161, 161, 255, 160, 160, 160, 255, 159, 159, 159, 255, 158, 158, 158, 255, 157, 157, 157, 255, 77, 77, 77, 255, 199, 199, 199, 255, 175, 175, 175, 255, 151, 151, 151, 255, 199, 199, 199, 255, 199, 199, 199, 255, 199, 199, 199, 255, 199, 199, 199, 255, 151, 151, 151, 255, 151, 151, 151, 255, 199, 199, 199, 255, 51, 51, 51, 255, 12, 12, 12, 198, 19, 19, 19, 171, 9, 9, 9, 178, 0, 0, 0, 163, 0, 0, 0, 119, 0, 0, 0, 64, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 30, 30, 30, 163, 39, 39, 39, 227, 70, 70, 70, 255, 93, 93, 93, 255, 126, 126, 126, 255, 140, 140, 140, 255, 137, 137, 137, 255, 134, 134, 134, 255, 132, 132, 132, 255, 129, 129, 129, 255, 126, 126, 126, 255, 123, 123, 123, 255, 120, 120, 120, 255, 117, 117, 117, 255, 114, 114, 114, 255, 88, 88, 88, 255, 122, 122, 122, 255, 139, 139, 139, 255, 157, 157, 157, 255, 157, 157, 157, 255, 155, 155, 155, 255, 77, 77, 77, 255, 203, 203, 203, 255, 178, 178, 178, 255, 153, 153, 153, 255, 203, 203, 203, 255, 203, 203, 203, 255, 203, 203, 203, 255, 203, 203, 203, 255, 153, 153, 153, 255, 153, 153, 153, 255, 203, 203, 203, 255, 51, 51, 51, 255, 0, 0, 0, 172, 0, 0, 0, 66, 0, 0, 0, 55, 0, 0, 0, 42, 0, 0, 0, 19, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 76, 6, 6, 6, 130, 25, 25, 25, 196, 39, 39, 39, 230, 62, 62, 62, 255, 87, 87, 87, 255, 107, 107, 107, 255, 129, 129, 129, 255, 126, 126, 126, 255, 123, 123, 123, 255, 120, 120, 120, 255, 117, 117, 117, 255, 114, 114, 114, 255, 111, 111, 111, 255, 80, 80, 80, 255, 102, 102, 102, 255, 102, 102, 102, 255, 99, 99, 99, 255, 109, 109, 109, 255, 125, 125, 125, 255, 77, 77, 77, 255, 207, 207, 207, 255, 181, 181, 181, 255, 155, 155, 155, 255, 207, 207, 207, 255, 207, 207, 207, 255, 207, 207, 207, 255, 207, 207, 207, 255, 155, 155, 155, 255, 155, 155, 155, 255, 207, 207, 207, 255, 51, 51, 51, 255, 0, 0, 0, 167, 0, 0, 0, 28, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 39, 0, 0, 0, 78, 6, 6, 6, 130, 25, 25, 25, 196, 39, 39, 39, 230, 56, 56, 56, 255, 78, 78, 78, 255, 99, 99, 99, 255, 113, 113, 113, 255, 114, 114, 114, 255, 111, 111, 111, 255, 108, 108, 108, 255, 82, 82, 82, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 73, 73, 73, 255, 212, 212, 212, 255, 185, 185, 185, 255, 157, 157, 157, 255, 212, 212, 212, 255, 192, 192, 192, 255, 182, 182, 182, 255, 212, 212, 212, 255, 157, 157, 157, 255, 157, 157, 157, 255, 202, 202, 202, 255, 46, 46, 46, 247, 0, 0, 0, 164, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 39, 0, 0, 0, 78, 6, 6, 6, 130, 25, 25, 25, 196, 39, 39, 39, 230, 51, 51, 51, 255, 70, 70, 70, 255, 87, 87, 87, 255, 102, 102, 102, 255, 90, 90, 90, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 215, 215, 215, 255, 187, 187, 187, 255, 159, 159, 159, 255, 215, 215, 215, 255, 112, 112, 112, 255, 71, 71, 71, 255, 215, 215, 215, 255, 159, 159, 159, 255, 159, 159, 159, 255, 112, 112, 112, 255, 29, 29, 29, 222, 0, 0, 0, 143, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 39, 0, 0, 0, 78, 6, 6, 6, 130, 25, 25, 25, 196, 39, 39, 39, 230, 51, 51, 51, 255, 61, 61, 61, 255, 86, 86, 86, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 220, 220, 220, 255, 190, 190, 190, 255, 161, 161, 161, 255, 220, 220, 220, 255, 209, 209, 209, 255, 157, 157, 157, 255, 135, 135, 135, 255, 89, 89, 89, 255, 54, 54, 54, 255, 32, 32, 32, 227, 0, 0, 0, 169, 0, 0, 0, 93, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 39, 0, 0, 0, 78, 6, 6, 6, 130, 25, 25, 25, 196, 39, 39, 39, 230, 54, 54, 54, 255, 70, 70, 70, 255, 86, 86, 86, 255, 96, 96, 96, 255, 99, 99, 99, 255, 129, 129, 129, 255, 121, 121, 121, 255, 85, 85, 85, 255, 83, 83, 83, 255, 49, 49, 49, 251, 38, 38, 38, 235, 30, 30, 30, 220, 16, 16, 16, 198, 0, 0, 0, 173, 0, 0, 0, 157, 0, 0, 0, 101, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 39, 0, 0, 0, 78, 6, 6, 6, 130, 25, 25, 25, 196, 36, 36, 36, 225, 41, 41, 41, 237, 41, 41, 41, 237, 41, 41, 41, 237, 35, 35, 35, 229, 23, 23, 23, 209, 13, 13, 13, 191, 0, 0, 0, 170, 0, 0, 0, 154, 0, 0, 0, 124, 0, 0, 0, 94, 0, 0, 0, 60, 0, 0, 0, 30, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 39, 0, 0, 0, 76, 0, 0, 0, 110, 0, 0, 0, 128, 0, 0, 0, 131, 0, 0, 0, 128, 0, 0, 0, 110, 0, 0, 0, 79, 0, 0, 0, 51, 0, 0, 0, 27, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 15, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_LogoMessageWarning(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 25, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 4, 93, 255, 255, 8, 241, 255, 255, 10, 255, 255, 255, 12, 241, 255, 255, 8, 93, 39, 39, 98, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 252, 0, 111, 247, 247, 0, 255, 251, 251, 1, 255, 255, 255, 3, 255, 255, 255, 3, 255, 253, 253, 2, 255, 190, 190, 32, 157, 36, 36, 101, 43, 43, 43, 106, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 253, 0, 56, 242, 242, 0, 250, 244, 243, 0, 255, 250, 249, 1, 255, 255, 255, 6, 255, 255, 254, 2, 255, 249, 248, 0, 255, 244, 244, 2, 255, 92, 93, 76, 209, 33, 35, 103, 109, 29, 39, 98, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 242, 0, 185, 238, 237, 0, 255, 242, 240, 0, 255, 253, 252, 3, 255, 255, 255, 26, 255, 255, 255, 8, 255, 248, 246, 0, 255, 245, 244, 0, 255, 190, 190, 28, 254, 33, 35, 103, 217, 32, 34, 103, 119, 36, 36, 109, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 248, 0, 70, 236, 234, 0, 255, 237, 235, 0, 255, 243, 240, 0, 255, 255, 255, 13, 255, 255, 255, 92, 255, 255, 255, 29, 255, 249, 246, 1, 255, 243, 241, 0, 255, 242, 241, 0, 255, 93, 94, 75, 254, 33, 35, 103, 210, 34, 34, 106, 82, 36, 36, 109, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 238, 0, 185, 234, 230, 0, 255, 237, 234, 0, 255, 244, 241, 0, 255, 255, 255, 32, 255, 255, 255, 81, 255, 255, 255, 64, 255, 252, 249, 3, 255, 243, 241, 0, 255, 241, 237, 0, 255, 188, 186, 28, 255, 33, 35, 103, 246, 33, 34, 103, 163, 32, 32, 104, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 248, 0, 51, 234, 230, 0, 255, 234, 230, 0, 255, 238, 235, 0, 255, 248, 244, 3, 255, 255, 255, 32, 255, 255, 255, 38, 255, 255, 255, 58, 255, 255, 255, 11, 255, 245, 241, 0, 255, 241, 237, 0, 255, 241, 237, 0, 255, 77, 78, 82, 255, 33, 35, 103, 223, 34, 37, 102, 90, 28, 28, 113, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 236, 0, 185, 233, 228, 0, 255, 235, 231, 0, 255, 241, 236, 0, 255, 255, 251, 10, 255, 255, 255, 24, 255, 255, 255, 14, 255, 255, 255, 39, 255, 255, 255, 28, 255, 248, 243, 1, 255, 242, 237, 0, 255, 240, 236, 0, 255, 188, 184, 28, 255, 33, 35, 104, 246, 32, 36, 104, 165, 34, 34, 102, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 245, 0, 46, 234, 228, 0, 255, 233, 227, 0, 255, 238, 232, 0, 255, 245, 239, 1, 255, 255, 255, 16, 255, 255, 255, 15, 255, 255, 252, 4, 255, 255, 255, 22, 255, 255, 255, 37, 255, 255, 249, 7, 255, 244, 238, 0, 255, 241, 234, 0, 255, 241, 235, 0, 255, 73, 73, 84, 255, 33, 35, 103, 221, 35, 35, 104, 81, 43, 43, 128, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 235, 0, 172, 233, 226, 0, 255, 235, 229, 0, 255, 241, 233, 0, 255, 253, 246, 7, 255, 255, 255, 18, 255, 255, 254, 8, 255, 255, 248, 1, 255, 255, 255, 10, 255, 255, 255, 33, 255, 255, 255, 22, 255, 248, 240, 1, 255, 242, 235, 0, 255, 240, 233, 0, 255, 177, 173, 34, 255, 33, 35, 104, 246, 33, 34, 103, 163, 35, 35, 106, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 244, 0, 46, 234, 225, 0, 255, 233, 226, 0, 255, 238, 229, 0, 255, 245, 236, 1, 255, 255, 255, 15, 255, 255, 255, 14, 255, 255, 249, 3, 255, 255, 247, 0, 255, 255, 250, 4, 255, 255, 255, 22, 255, 255, 255, 34, 255, 255, 246, 7, 255, 244, 236, 0, 255, 241, 233, 0, 255, 241, 232, 0, 255, 73, 73, 84, 255, 34, 35, 103, 220, 34, 34, 104, 76, 43, 43, 85, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 233, 0, 162, 233, 224, 0, 255, 235, 225, 0, 255, 241, 231, 0, 255, 253, 243, 7, 255, 255, 255, 17, 255, 255, 253, 8, 255, 227, 218, 4, 255, 153, 143, 11, 255, 202, 192, 7, 255, 255, 255, 12, 255, 255, 255, 33, 255, 255, 255, 22, 255, 248, 238, 1, 255, 242, 232, 0, 255, 240, 231, 0, 255, 169, 163, 38, 255, 33, 35, 103, 245, 33, 36, 103, 156, 38, 38, 104, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 240, 0, 42, 234, 224, 0, 250, 233, 222, 0, 255, 238, 227, 0, 255, 245, 234, 1, 255, 255, 254, 15, 255, 255, 255, 14, 255, 56, 49, 15, 255, 1, 0, 2, 255, 1, 0, 1, 255, 1, 0, 2, 255, 27, 21, 15, 255, 235, 233, 24, 255, 255, 255, 34, 255, 255, 244, 7, 255, 244, 234, 0, 255, 241, 229, 0, 255, 237, 226, 2, 255, 69, 69, 86, 255, 33, 35, 102, 219, 34, 34, 105, 75, 43, 43, 85, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 230, 0, 162, 233, 222, 0, 255, 235, 223, 0, 255, 241, 228, 0, 255, 253, 240, 7, 255, 255, 255, 17, 255, 106, 99, 17, 255, 1, 0, 2, 255, 3, 1, 7, 255, 7, 1, 15, 255, 7, 1, 17, 255, 10, 2, 24, 255, 97, 84, 36, 255, 255, 255, 33, 255, 255, 255, 22, 255, 248, 235, 1, 255, 242, 230, 0, 255, 240, 229, 0, 255, 169, 161, 38, 255, 34, 35, 103, 243, 32, 34, 102, 150, 29, 39, 98, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 239, 0, 28, 234, 221, 0, 250, 233, 221, 0, 255, 238, 225, 0, 255, 245, 231, 1, 255, 255, 250, 15, 255, 255, 254, 14, 255, 20, 15, 12, 255, 1, 0, 2, 255, 10, 2, 22, 255, 23, 4, 53, 255, 24, 4, 54, 255, 23, 4, 52, 255, 24, 4, 55, 255, 255, 255, 22, 255, 255, 255, 34, 255, 255, 241, 7, 255, 244, 231, 0, 255, 241, 227, 0, 255, 237, 224, 2, 255, 57, 58, 92, 254, 33, 35, 104, 214, 31, 35, 101, 73, 51, 51, 102, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 229, 0, 158, 233, 219, 0, 255, 235, 221, 0, 255, 241, 226, 0, 255, 253, 238, 7, 255, 255, 254, 17, 255, 255, 247, 8, 255, 20, 15, 10, 255, 1, 0, 3, 255, 13, 2, 29, 255, 25, 4, 57, 255, 25, 4, 57, 255, 25, 4, 57, 255, 25, 4, 57, 255, 255, 250, 12, 255, 255, 255, 33, 255, 255, 255, 22, 255, 248, 233, 1, 255, 242, 228, 0, 255, 240, 226, 0, 255, 166, 158, 39, 255, 33, 35, 103, 243, 33, 34, 103, 149, 32, 32, 106, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 236, 0, 28, 234, 218, 0, 250, 233, 218, 0, 255, 238, 222, 0, 255, 245, 229, 1, 255, 255, 248, 15, 255, 255, 251, 14, 255, 255, 242, 4, 255, 21, 16, 11, 255, 2, 0, 4, 255, 15, 2, 34, 255, 25, 4, 57, 255, 25, 4, 57, 255, 25, 4, 57, 255, 25, 4, 57, 255, 255, 243, 5, 255, 255, 255, 22, 255, 255, 255, 34, 255, 255, 238, 7, 255, 244, 228, 0, 255, 241, 225, 0, 255, 237, 221, 2, 255, 57, 57, 92, 254, 32, 35, 103, 213, 35, 35, 102, 65, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 227, 0, 139, 233, 216, 0, 255, 235, 219, 0, 255, 241, 223, 0, 255, 253, 236, 7, 255, 255, 251, 17, 255, 255, 245, 8, 255, 255, 237, 1, 255, 72, 61, 15, 255, 4, 1, 9, 255, 18, 3, 41, 255, 25, 5, 57, 255, 27, 5, 58, 255, 26, 5, 57, 255, 66, 45, 47, 255, 255, 237, 2, 255, 255, 248, 12, 255, 255, 255, 33, 255, 255, 254, 22, 255, 248, 229, 1, 255, 242, 225, 0, 255, 240, 223, 0, 255, 150, 141, 47, 255, 33, 35, 103, 242, 33, 35, 103, 146, 33, 33, 100, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 234, 0, 28, 234, 215, 0, 250, 233, 215, 0, 255, 238, 219, 0, 255, 245, 226, 1, 255, 255, 245, 15, 255, 255, 248, 14, 255, 255, 239, 4, 255, 255, 235, 0, 255, 111, 98, 14, 255, 11, 2, 25, 255, 23, 4, 52, 255, 31, 10, 62, 255, 40, 19, 70, 255, 40, 20, 58, 255, 111, 90, 36, 255, 255, 235, 0, 255, 255, 240, 5, 255, 255, 255, 22, 255, 255, 255, 34, 255, 255, 235, 7, 255, 244, 225, 0, 255, 241, 222, 0, 255, 237, 218, 2, 255, 57, 57, 92, 254, 32, 35, 103, 212, 32, 36, 101, 63, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 224, 0, 139, 233, 214, 0, 255, 235, 216, 0, 255, 241, 221, 0, 255, 253, 233, 7, 255, 255, 249, 17, 255, 255, 242, 8, 255, 255, 235, 1, 255, 255, 234, 0, 255, 202, 183, 6, 255, 12, 2, 27, 255, 24, 5, 54, 255, 42, 22, 74, 255, 56, 35, 82, 255, 68, 45, 60, 255, 153, 131, 25, 255, 255, 234, 0, 255, 255, 235, 2, 255, 255, 245, 12, 255, 255, 255, 33, 255, 255, 251, 22, 255, 248, 227, 1, 255, 242, 222, 0, 255, 240, 220, 0, 255, 150, 140, 47, 255, 33, 35, 103, 240, 34, 36, 103, 136, 36, 36, 97, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 231, 0, 19, 234, 213, 0, 241, 233, 212, 0, 255, 237, 217, 0, 255, 244, 223, 1, 255, 255, 242, 15, 255, 255, 245, 14, 255, 255, 237, 4, 255, 255, 233, 0, 255, 255, 233, 0, 255, 255, 233, 0, 255, 14, 6, 20, 255, 23, 5, 51, 255, 63, 43, 95, 255, 71, 51, 96, 255, 79, 58, 63, 255, 210, 188, 11, 255, 255, 233, 0, 255, 255, 233, 0, 255, 255, 238, 5, 255, 255, 253, 22, 255, 255, 255, 34, 255, 254, 232, 6, 255, 244, 223, 0, 255, 240, 219, 0, 255, 230, 210, 6, 255, 49, 50, 95, 254, 33, 35, 103, 210, 32, 36, 101, 63, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 221, 0, 139, 232, 210, 0, 255, 234, 212, 0, 255, 240, 217, 0, 255, 251, 228, 6, 255, 255, 246, 17, 255, 255, 240, 8, 255, 255, 232, 1, 255, 255, 231, 0, 255, 255, 231, 0, 255, 255, 232, 0, 255, 45, 34, 19, 255, 18, 5, 41, 255, 86, 68, 122, 255, 81, 63, 109, 255, 76, 57, 60, 255, 255, 232, 0, 255, 255, 231, 0, 255, 255, 231, 0, 255, 255, 233, 2, 255, 255, 243, 12, 255, 255, 255, 32, 255, 255, 245, 19, 255, 246, 223, 1, 255, 241, 218, 0, 255, 239, 217, 0, 255, 150, 138, 47, 255, 33, 35, 103, 240, 34, 36, 102, 135, 38, 38, 102, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 230, 0, 14, 233, 210, 0, 241, 231, 208, 0, 255, 235, 212, 0, 255, 242, 219, 1, 255, 255, 236, 12, 255, 255, 242, 14, 255, 255, 234, 4, 255, 255, 230, 0, 255, 255, 230, 0, 255, 255, 230, 0, 255, 255, 230, 0, 255, 103, 88, 17, 255, 18, 5, 40, 255, 103, 91, 147, 255, 83, 67, 109, 255, 100, 77, 48, 255, 255, 230, 0, 255, 255, 230, 0, 255, 255, 230, 0, 255, 255, 230, 0, 255, 255, 235, 5, 255, 255, 251, 22, 255, 255, 255, 29, 255, 251, 226, 4, 255, 242, 218, 0, 255, 239, 215, 0, 255, 230, 207, 6, 255, 45, 46, 97, 253, 33, 35, 103, 204, 31, 36, 103, 57, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 221, 0, 125, 231, 208, 0, 255, 232, 208, 0, 255, 237, 213, 0, 255, 246, 221, 3, 255, 255, 240, 14, 255, 255, 237, 9, 255, 255, 230, 2, 255, 255, 229, 0, 255, 255, 229, 0, 255, 255, 229, 0, 255, 255, 229, 0, 255, 187, 165, 9, 255, 18, 3, 41, 255, 152, 134, 186, 255, 82, 69, 94, 255, 141, 118, 32, 255, 255, 229, 0, 255, 255, 229, 0, 255, 255, 229, 0, 255, 255, 229, 0, 255, 255, 231, 2, 255, 255, 241, 13, 255, 255, 255, 30, 255, 255, 233, 10, 255, 244, 219, 0, 255, 239, 215, 0, 255, 239, 214, 0, 255, 139, 128, 53, 255, 33, 35, 102, 239, 32, 34, 103, 134, 40, 40, 107, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 227, 0, 14, 235, 209, 0, 241, 232, 206, 0, 255, 234, 208, 0, 255, 240, 215, 0, 255, 254, 228, 8, 255, 255, 239, 14, 255, 255, 233, 5, 255, 255, 228, 0, 255, 255, 228, 0, 255, 255, 228, 0, 255, 255, 228, 0, 255, 255, 227, 0, 255, 255, 227, 0, 255, 21, 4, 45, 255, 34, 36, 108, 255, 65, 53, 74, 255, 195, 169, 16, 255, 255, 227, 0, 255, 255, 228, 0, 255, 255, 228, 0, 255, 255, 228, 0, 255, 255, 228, 1, 255, 255, 234, 7, 255, 255, 250, 24, 255, 255, 246, 23, 255, 247, 221, 1, 255, 241, 215, 0, 255, 239, 213, 0, 255, 231, 206, 6, 255, 45, 46, 97, 253, 33, 35, 103, 203, 34, 34, 101, 53, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 220, 0, 116, 233, 207, 0, 255, 233, 206, 0, 255, 237, 210, 0, 255, 244, 218, 1, 255, 255, 236, 13, 255, 255, 236, 11, 255, 255, 229, 3, 255, 255, 226, 0, 255, 255, 227, 0, 255, 255, 226, 0, 255, 255, 226, 0, 255, 255, 227, 0, 255, 255, 226, 0, 255, 63, 48, 40, 255, 28, 35, 106, 255, 37, 21, 63, 255, 255, 226, 0, 255, 255, 227, 0, 255, 255, 226, 0, 255, 255, 226, 0, 255, 255, 227, 0, 255, 255, 226, 0, 255, 255, 230, 3, 255, 255, 242, 17, 255, 255, 254, 30, 255, 254, 227, 7, 255, 244, 216, 0, 255, 240, 213, 0, 255, 240, 213, 0, 255, 132, 121, 56, 255, 33, 36, 103, 237, 32, 34, 103, 126, 30, 30, 105, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 224, 0, 14, 237, 210, 0, 232, 233, 205, 0, 255, 235, 207, 0, 255, 240, 212, 0, 255, 252, 225, 7, 255, 255, 238, 16, 255, 255, 232, 7, 255, 255, 226, 1, 255, 255, 225, 0, 255, 255, 225, 0, 255, 255, 226, 0, 255, 255, 225, 0, 255, 255, 225, 0, 255, 255, 225, 0, 255, 112, 96, 36, 255, 27, 29, 97, 255, 66, 44, 48, 255, 255, 225, 0, 255, 255, 225, 0, 255, 255, 225, 0, 255, 255, 226, 0, 255, 255, 225, 0, 255, 255, 225, 0, 255, 255, 226, 1, 255, 255, 234, 10, 255, 255, 253, 30, 255, 255, 242, 21, 255, 247, 218, 1, 255, 242, 213, 0, 255, 240, 212, 0, 255, 224, 199, 9, 255, 45, 45, 97, 253, 33, 35, 102, 202, 34, 34, 103, 52, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 217, 0, 116, 234, 205, 0, 255, 234, 205, 0, 255, 238, 208, 0, 255, 245, 215, 1, 255, 255, 233, 14, 255, 255, 235, 13, 255, 255, 227, 4, 255, 255, 224, 0, 255, 255, 224, 0, 255, 255, 223, 0, 255, 255, 224, 0, 255, 255, 224, 0, 255, 255, 224, 0, 255, 255, 223, 0, 255, 161, 138, 20, 255, 25, 19, 79, 255, 124, 99, 32, 255, 255, 223, 0, 255, 255, 224, 0, 255, 255, 224, 0, 255, 255, 224, 0, 255, 255, 223, 0, 255, 255, 224, 0, 255, 255, 224, 0, 255, 255, 228, 5, 255, 255, 243, 21, 255, 255, 254, 33, 255, 255, 225, 6, 255, 244, 214, 0, 255, 241, 211, 0, 255, 241, 212, 0, 255, 132, 119, 56, 255, 33, 35, 103, 236, 34, 36, 103, 121, 32, 32, 112, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 223, 0, 9, 238, 208, 0, 227, 233, 204, 0, 255, 235, 205, 0, 255, 241, 211, 0, 255, 253, 221, 7, 255, 255, 237, 17, 255, 255, 230, 8, 255, 255, 223, 1, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 216, 187, 8, 255, 25, 14, 71, 255, 153, 125, 25, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 223, 2, 255, 255, 233, 12, 255, 255, 253, 33, 255, 255, 240, 22, 255, 248, 217, 1, 255, 242, 211, 0, 255, 241, 210, 0, 255, 221, 193, 11, 255, 41, 42, 99, 252, 33, 35, 103, 196, 35, 35, 105, 51, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 215, 0, 116, 235, 203, 0, 255, 235, 203, 0, 255, 238, 207, 0, 255, 246, 213, 2, 255, 255, 232, 15, 255, 255, 234, 14, 255, 255, 225, 4, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 25, 14, 72, 255, 197, 167, 14, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 226, 5, 255, 255, 243, 22, 255, 255, 254, 35, 255, 255, 223, 7, 255, 245, 212, 0, 255, 242, 209, 0, 255, 242, 209, 0, 255, 132, 118, 56, 255, 33, 35, 103, 235, 34, 36, 104, 120, 32, 32, 96, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 219, 0, 14, 237, 204, 0, 241, 235, 201, 0, 255, 237, 204, 0, 255, 242, 209, 0, 255, 255, 221, 10, 255, 255, 235, 18, 255, 255, 228, 8, 255, 255, 220, 1, 255, 255, 219, 0, 255, 255, 220, 0, 255, 255, 220, 0, 255, 255, 219, 0, 255, 255, 220, 0, 255, 255, 220, 0, 255, 255, 220, 0, 255, 255, 219, 0, 255, 255, 220, 0, 255, 137, 110, 31, 255, 226, 193, 7, 255, 255, 219, 0, 255, 255, 220, 0, 255, 255, 220, 0, 255, 255, 220, 0, 255, 255, 219, 0, 255, 255, 220, 0, 255, 255, 220, 0, 255, 255, 219, 0, 255, 255, 220, 2, 255, 255, 231, 11, 255, 255, 251, 34, 255, 255, 242, 27, 255, 250, 216, 2, 255, 244, 210, 0, 255, 242, 207, 0, 255, 232, 200, 6, 255, 45, 45, 97, 252, 33, 34, 103, 193, 33, 33, 103, 47, 0, 0, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 211, 0, 130, 234, 200, 0, 255, 235, 201, 0, 255, 240, 205, 0, 255, 248, 213, 3, 255, 255, 233, 18, 255, 255, 231, 14, 255, 255, 221, 4, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 219, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 219, 0, 255, 255, 219, 0, 255, 255, 219, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 219, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 222, 5, 255, 255, 239, 22, 255, 255, 255, 39, 255, 255, 225, 12, 255, 246, 211, 0, 255, 242, 207, 0, 255, 241, 206, 0, 255, 143, 126, 50, 255, 33, 35, 104, 234, 34, 36, 103, 121, 32, 32, 112, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 216, 0, 14, 235, 200, 0, 241, 233, 197, 0, 255, 236, 200, 0, 255, 243, 207, 0, 255, 255, 223, 13, 255, 255, 233, 19, 255, 255, 224, 7, 255, 255, 218, 1, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 216, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 216, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 218, 1, 255, 255, 227, 10, 255, 255, 248, 33, 255, 255, 246, 33, 255, 251, 214, 3, 255, 243, 206, 0, 255, 240, 203, 0, 255, 231, 197, 6, 255, 45, 45, 97, 253, 33, 36, 103, 201, 34, 34, 106, 53, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 209, 0, 116, 232, 195, 0, 255, 233, 197, 0, 255, 238, 202, 0, 255, 247, 209, 3, 255, 255, 229, 17, 255, 255, 227, 12, 255, 255, 219, 3, 255, 255, 215, 0, 255, 255, 215, 0, 255, 255, 216, 0, 255, 255, 215, 0, 255, 255, 215, 0, 255, 255, 216, 0, 255, 255, 216, 0, 255, 255, 215, 0, 255, 255, 215, 0, 255, 137, 112, 15, 255, 17, 7, 25, 255, 8, 1, 17, 255, 12, 3, 24, 255, 106, 85, 26, 255, 255, 215, 0, 255, 255, 215, 0, 255, 255, 216, 0, 255, 255, 216, 0, 255, 255, 215, 0, 255, 255, 215, 0, 255, 255, 216, 0, 255, 255, 215, 0, 255, 255, 215, 0, 255, 255, 219, 4, 255, 255, 234, 18, 255, 255, 249, 36, 255, 255, 221, 11, 255, 245, 207, 0, 255, 240, 203, 0, 255, 239, 202, 0, 255, 132, 115, 56, 255, 33, 35, 103, 238, 34, 36, 103, 129, 28, 43, 99, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 255, 215, 0, 5, 236, 198, 0, 227, 232, 194, 0, 255, 234, 196, 0, 255, 240, 202, 0, 255, 255, 215, 9, 255, 255, 228, 16, 255, 255, 220, 6, 255, 255, 216, 1, 255, 255, 215, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 215, 0, 255, 154, 128, 11, 255, 6, 3, 10, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 50, 28, 61, 255, 148, 121, 17, 255, 255, 215, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 215, 0, 255, 255, 216, 1, 255, 255, 222, 8, 255, 255, 241, 28, 255, 255, 234, 25, 255, 248, 208, 1, 255, 241, 202, 0, 255, 239, 201, 0, 255, 220, 185, 11, 255, 37, 39, 101, 253, 33, 35, 104, 202, 34, 34, 103, 52, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 248, 208, 0, 93, 232, 194, 0, 255, 232, 194, 0, 255, 237, 198, 0, 255, 244, 204, 1, 255, 255, 222, 13, 255, 255, 223, 11, 255, 255, 216, 3, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 212, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 71, 52, 25, 255, 0, 0, 0, 255, 0, 0, 1, 255, 20, 3, 46, 255, 22, 3, 50, 255, 27, 7, 55, 255, 59, 40, 57, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 212, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 216, 3, 255, 255, 230, 18, 255, 255, 241, 30, 255, 254, 213, 6, 255, 243, 203, 0, 255, 240, 200, 0, 255, 240, 200, 0, 255, 113, 99, 65, 255, 33, 35, 103, 236, 34, 36, 104, 120, 34, 34, 102, 15, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 238, 198, 0, 209, 231, 191, 0, 255, 233, 194, 0, 255, 239, 199, 0, 255, 250, 208, 6, 255, 255, 224, 14, 255, 255, 218, 6, 255, 255, 213, 1, 255, 255, 211, 0, 255, 255, 212, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 212, 0, 255, 255, 212, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 38, 25, 19, 255, 0, 0, 0, 255, 19, 3, 44, 255, 25, 4, 57, 255, 29, 10, 60, 255, 27, 7, 57, 255, 74, 54, 104, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 212, 0, 255, 255, 212, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 212, 0, 255, 255, 211, 0, 255, 255, 213, 1, 255, 255, 220, 9, 255, 255, 237, 27, 255, 255, 224, 18, 255, 246, 205, 1, 255, 240, 200, 0, 255, 239, 197, 0, 255, 206, 172, 19, 255, 33, 35, 103, 252, 33, 35, 104, 192, 36, 36, 101, 43, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 251, 207, 0, 51, 231, 191, 0, 255, 230, 189, 0, 255, 234, 193, 0, 255, 241, 198, 0, 255, 255, 213, 8, 255, 255, 218, 9, 255, 255, 212, 2, 255, 255, 211, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 15, 8, 17, 255, 0, 0, 0, 255, 16, 2, 37, 255, 26, 7, 56, 255, 192, 171, 224, 255, 83, 63, 115, 255, 124, 107, 146, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 211, 0, 255, 255, 213, 3, 255, 255, 224, 14, 255, 255, 227, 21, 255, 249, 205, 3, 255, 241, 198, 0, 255, 238, 196, 0, 255, 239, 197, 0, 255, 77, 70, 82, 255, 33, 35, 104, 231, 34, 36, 104, 105, 43, 43, 106, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 245, 202, 0, 121, 229, 187, 0, 255, 229, 187, 0, 255, 233, 191, 0, 255, 240, 198, 1, 255, 254, 209, 4, 255, 255, 211, 3, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 211, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 161, 131, 17, 255, 26, 8, 52, 255, 7, 1, 16, 255, 26, 6, 56, 255, 77, 56, 108, 255, 255, 243, 255, 255, 136, 115, 73, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 211, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 211, 2, 255, 255, 213, 5, 255, 255, 216, 10, 255, 248, 205, 4, 255, 240, 197, 0, 255, 236, 193, 0, 255, 236, 194, 0, 255, 135, 115, 54, 255, 33, 35, 103, 249, 33, 35, 103, 180, 31, 39, 100, 33, 0, 0, 0, 0,
+ 0, 0, 0, 0, 238, 196, 0, 181, 226, 184, 0, 255, 226, 184, 0, 255, 229, 187, 0, 255, 234, 191, 0, 255, 245, 200, 1, 255, 249, 203, 1, 255, 249, 203, 1, 255, 249, 203, 1, 255, 249, 203, 1, 255, 248, 204, 1, 255, 248, 204, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 204, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 192, 157, 13, 255, 52, 37, 65, 255, 76, 59, 99, 255, 119, 105, 137, 255, 147, 123, 54, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 204, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 204, 1, 255, 248, 204, 1, 255, 249, 203, 1, 255, 249, 203, 1, 255, 249, 204, 1, 255, 250, 204, 1, 255, 247, 202, 2, 255, 239, 195, 1, 255, 236, 192, 0, 255, 233, 190, 0, 255, 233, 190, 0, 255, 182, 151, 30, 255, 33, 35, 103, 255, 33, 35, 102, 224, 35, 35, 105, 73, 43, 43, 128, 6,
+ 0, 0, 0, 0, 239, 194, 0, 158, 223, 181, 0, 255, 220, 179, 0, 255, 222, 180, 0, 255, 224, 183, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 227, 184, 0, 255, 227, 185, 0, 255, 228, 186, 0, 255, 228, 186, 0, 255, 227, 185, 0, 255, 227, 184, 0, 255, 229, 186, 0, 255, 163, 135, 39, 255, 33, 35, 103, 255, 33, 35, 103, 238, 34, 36, 103, 121, 34, 34, 102, 15,
+ 0, 0, 0, 0, 248, 200, 0, 70, 220, 178, 0, 255, 215, 174, 0, 255, 213, 173, 0, 255, 213, 173, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 214, 173, 0, 255, 215, 174, 0, 255, 216, 176, 0, 255, 218, 177, 0, 255, 221, 179, 0, 255, 226, 183, 0, 255, 92, 81, 75, 255, 33, 35, 103, 255, 33, 35, 103, 246, 32, 36, 104, 157, 33, 33, 100, 23,
+ 0, 0, 0, 0, 0, 0, 0, 0, 238, 191, 0, 134, 214, 173, 0, 255, 209, 168, 0, 255, 206, 166, 0, 255, 204, 165, 0, 255, 203, 163, 0, 255, 203, 163, 0, 255, 203, 164, 0, 255, 203, 163, 0, 255, 203, 164, 0, 255, 203, 163, 0, 255, 203, 163, 0, 255, 203, 163, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 163, 0, 255, 203, 163, 0, 255, 203, 163, 0, 255, 203, 164, 0, 255, 203, 163, 0, 255, 203, 164, 0, 255, 203, 163, 0, 255, 204, 164, 0, 255, 206, 166, 0, 255, 209, 168, 0, 255, 213, 171, 0, 255, 218, 176, 0, 255, 142, 118, 49, 255, 33, 35, 103, 255, 33, 35, 103, 255, 33, 35, 103, 243, 32, 36, 104, 142, 38, 38, 102, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 183, 8, 80, 194, 157, 19, 188, 157, 129, 37, 240, 149, 123, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 121, 41, 255, 148, 122, 41, 255, 149, 123, 41, 255, 150, 124, 41, 255, 152, 126, 41, 255, 95, 82, 73, 255, 33, 35, 103, 255, 33, 35, 103, 255, 33, 35, 103, 255, 33, 35, 103, 217, 32, 35, 103, 87, 28, 28, 113, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 39, 98, 26, 33, 35, 103, 131, 33, 35, 103, 217, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 217, 33, 35, 103, 131, 29, 39, 98, 26, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 39, 108, 26, 35, 35, 104, 88, 34, 35, 102, 137, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 34, 35, 102, 137, 35, 35, 104, 88, 29, 39, 108, 26, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 113, 9, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 28, 28, 113, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_DeviceSound(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 66, 49, 49, 49, 134, 49, 49, 49, 197, 49, 49, 49, 199, 49, 49, 49, 200, 49, 49, 49, 200, 45, 45, 45, 144, 43, 43, 43, 96, 0, 0, 0, 13, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 17, 50, 50, 50, 131, 51, 51, 51, 240, 53, 53, 53, 255, 57, 57, 57, 255, 61, 61, 61, 255, 65, 65, 65, 255, 69, 69, 69, 255, 69, 69, 69, 255, 65, 65, 65, 255, 55, 55, 55, 255, 50, 50, 50, 244, 43, 43, 43, 151, 0, 0, 0, 22, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 115, 51, 51, 51, 240, 53, 53, 53, 255, 56, 56, 56, 255, 61, 61, 61, 255, 64, 64, 64, 255, 68, 68, 68, 255, 71, 71, 71, 255, 76, 76, 76, 255, 81, 81, 81, 255, 84, 84, 84, 255, 89, 89, 89, 255, 82, 82, 82, 255, 59, 59, 59, 255, 47, 47, 47, 224, 29, 29, 29, 85, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 99, 33, 48, 48, 96, 68, 46, 46, 92, 71, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 0, 48, 48, 48, 17, 50, 50, 50, 194, 51, 51, 51, 255, 53, 53, 53, 255, 55, 55, 55, 255, 57, 57, 57, 255, 63, 63, 63, 255, 67, 67, 67, 255, 72, 72, 72, 255, 73, 73, 73, 255, 77, 77, 77, 255, 78, 78, 78, 255, 84, 84, 84, 255, 91, 91, 91, 255, 96, 96, 96, 255, 98, 98, 98, 255, 77, 77, 77, 255, 49, 49, 49, 247, 24, 24, 24, 100, 0, 0, 0, 19, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 98, 50, 50, 50, 100, 194, 51, 51, 102, 255, 51, 51, 102, 255, 51, 51, 102, 255, 50, 50, 100, 243, 46, 46, 92, 177, 41, 41, 74, 100, 50, 50, 50, 212, 51, 51, 51, 255, 51, 51, 51, 255, 54, 54, 54, 255, 61, 61, 61, 255, 66, 66, 66, 255, 70, 70, 70, 255, 74, 74, 74, 255, 77, 77, 77, 255, 82, 82, 82, 255, 84, 84, 84, 255, 88, 88, 88, 255, 87, 87, 87, 255, 88, 88, 88, 255, 96, 96, 96, 255, 102, 102, 102, 255, 103, 103, 103, 255, 90, 90, 90, 255, 49, 49, 49, 247, 23, 23, 23, 105, 0, 0, 0, 19, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 100, 98, 51, 51, 102, 255, 82, 82, 120, 255, 135, 135, 151, 255, 167, 167, 167, 255, 153, 153, 156, 255, 115, 115, 134, 255, 77, 77, 112, 255, 51, 51, 61, 255, 51, 51, 51, 255, 51, 51, 51, 255, 55, 55, 55, 255, 64, 64, 64, 255, 66, 66, 66, 255, 70, 70, 70, 255, 74, 74, 74, 255, 77, 77, 77, 255, 82, 82, 82, 255, 84, 84, 84, 255, 89, 89, 89, 255, 92, 92, 92, 255, 96, 96, 96, 255, 96, 96, 96, 255, 94, 94, 94, 255, 101, 101, 101, 255, 114, 114, 114, 255, 118, 118, 118, 255, 89, 89, 89, 255, 46, 46, 46, 232, 0, 0, 0, 64, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 100, 98, 51, 51, 102, 255, 105, 105, 137, 255, 191, 191, 191, 255, 185, 185, 185, 255, 177, 177, 177, 255, 173, 173, 173, 255, 172, 172, 172, 255, 71, 71, 71, 255, 51, 51, 51, 255, 51, 51, 51, 255, 56, 56, 56, 255, 64, 64, 64, 255, 66, 66, 66, 255, 70, 70, 70, 255, 74, 74, 74, 255, 77, 77, 77, 255, 82, 82, 82, 255, 84, 84, 84, 255, 89, 89, 89, 255, 92, 92, 92, 255, 96, 96, 96, 255, 98, 98, 98, 255, 102, 102, 102, 255, 102, 102, 102, 255, 100, 100, 100, 255, 115, 115, 115, 255, 128, 128, 128, 255, 134, 134, 134, 255, 75, 75, 75, 255, 35, 35, 35, 188, 0, 0, 0, 45, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 99, 33, 51, 51, 102, 240, 112, 112, 144, 255, 210, 210, 210, 255, 203, 203, 203, 255, 197, 197, 197, 255, 194, 194, 194, 255, 191, 191, 191, 255, 108, 108, 108, 255, 51, 51, 51, 255, 51, 51, 51, 255, 57, 57, 57, 255, 64, 64, 64, 255, 66, 66, 66, 255, 70, 70, 70, 255, 71, 71, 71, 255, 71, 71, 71, 255, 74, 74, 74, 255, 80, 80, 80, 255, 89, 89, 89, 255, 92, 92, 92, 255, 96, 96, 96, 255, 98, 98, 98, 255, 102, 102, 102, 255, 103, 103, 103, 255, 114, 114, 114, 255, 111, 111, 111, 255, 109, 109, 109, 255, 134, 134, 134, 255, 145, 145, 145, 255, 124, 124, 124, 255, 49, 49, 49, 249, 8, 8, 8, 102, 0, 0, 0, 24, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 100, 163, 74, 74, 119, 255, 217, 217, 220, 255, 221, 221, 221, 255, 214, 214, 214, 255, 214, 214, 214, 255, 208, 208, 208, 255, 163, 163, 163, 255, 51, 51, 51, 255, 51, 51, 51, 255, 56, 56, 56, 255, 64, 64, 64, 255, 66, 66, 66, 255, 63, 63, 63, 255, 53, 53, 53, 255, 57, 57, 57, 255, 76, 76, 76, 255, 70, 70, 70, 255, 56, 56, 56, 255, 61, 61, 61, 255, 88, 88, 88, 255, 98, 98, 98, 255, 102, 102, 102, 255, 103, 103, 103, 255, 114, 114, 114, 255, 118, 118, 118, 255, 128, 128, 128, 255, 113, 113, 113, 255, 133, 133, 133, 255, 149, 149, 149, 255, 159, 159, 159, 255, 78, 78, 78, 255, 30, 30, 30, 188, 0, 0, 0, 53, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 49, 49, 99, 33, 51, 51, 102, 255, 174, 174, 193, 255, 239, 239, 239, 255, 235, 235, 235, 255, 234, 234, 234, 255, 227, 227, 227, 255, 221, 221, 221, 255, 82, 82, 82, 255, 51, 51, 51, 255, 54, 54, 54, 255, 64, 64, 64, 255, 65, 65, 65, 255, 57, 57, 57, 255, 66, 66, 66, 255, 127, 127, 127, 255, 159, 159, 159, 255, 150, 150, 150, 255, 134, 134, 134, 255, 121, 121, 121, 255, 78, 78, 78, 255, 54, 54, 54, 255, 92, 92, 92, 255, 103, 103, 103, 255, 114, 114, 114, 255, 118, 118, 118, 255, 128, 128, 128, 255, 134, 134, 134, 255, 133, 133, 133, 255, 123, 123, 123, 255, 159, 159, 159, 255, 163, 163, 163, 255, 128, 128, 128, 255, 44, 44, 44, 238, 0, 0, 0, 88, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 49, 49, 98, 116, 75, 75, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 255, 245, 245, 245, 255, 238, 238, 238, 255, 166, 166, 166, 255, 51, 51, 51, 255, 52, 52, 52, 255, 63, 63, 63, 255, 66, 66, 66, 255, 55, 55, 55, 255, 78, 78, 78, 255, 186, 186, 186, 255, 182, 182, 182, 255, 173, 173, 173, 255, 156, 156, 156, 255, 146, 146, 146, 255, 126, 126, 126, 255, 110, 110, 110, 255, 83, 83, 83, 255, 54, 54, 54, 255, 110, 110, 110, 255, 118, 118, 118, 255, 128, 128, 128, 255, 134, 134, 134, 255, 145, 145, 145, 255, 147, 147, 147, 255, 119, 119, 119, 255, 158, 158, 158, 255, 174, 174, 174, 255, 173, 173, 173, 255, 51, 51, 51, 255, 6, 6, 6, 129, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 50, 50, 99, 196, 126, 126, 162, 255, 231, 231, 243, 255, 239, 239, 247, 255, 249, 249, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 89, 89, 255, 51, 51, 51, 255, 58, 58, 58, 255, 66, 66, 66, 255, 59, 59, 59, 255, 78, 78, 78, 255, 198, 198, 198, 255, 202, 202, 202, 255, 196, 196, 196, 255, 173, 173, 173, 255, 166, 166, 166, 255, 150, 150, 150, 255, 126, 126, 126, 255, 114, 114, 114, 255, 102, 102, 102, 255, 65, 65, 68, 255, 85, 85, 85, 255, 128, 128, 128, 255, 134, 134, 134, 255, 145, 145, 145, 255, 149, 149, 149, 255, 159, 159, 159, 255, 132, 132, 132, 255, 156, 156, 156, 255, 180, 180, 180, 255, 189, 189, 189, 255, 86, 86, 86, 255, 19, 19, 19, 171, 0, 0, 0, 54, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 51, 51, 102, 255, 142, 142, 179, 255, 206, 206, 230, 255, 213, 213, 234, 255, 221, 221, 238, 255, 232, 232, 244, 255, 205, 205, 211, 255, 51, 51, 51, 255, 53, 53, 53, 255, 66, 66, 66, 255, 66, 66, 66, 255, 60, 60, 60, 255, 179, 179, 179, 255, 221, 221, 221, 255, 211, 211, 211, 255, 197, 197, 197, 255, 173, 173, 173, 255, 167, 167, 167, 255, 150, 150, 150, 255, 126, 126, 126, 255, 114, 114, 114, 255, 102, 102, 102, 255, 90, 90, 100, 255, 61, 61, 61, 255, 134, 134, 134, 255, 145, 145, 145, 255, 149, 149, 149, 255, 159, 159, 159, 255, 163, 163, 163, 255, 149, 149, 149, 255, 156, 156, 156, 255, 189, 189, 189, 255, 195, 195, 195, 255, 118, 118, 118, 255, 32, 32, 32, 206, 0, 0, 0, 73, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 51, 51, 102, 255, 142, 142, 186, 255, 181, 181, 218, 255, 188, 188, 222, 255, 196, 196, 225, 255, 207, 207, 231, 255, 123, 123, 131, 255, 52, 52, 52, 255, 60, 60, 60, 255, 70, 70, 70, 255, 59, 59, 59, 255, 117, 117, 117, 255, 197, 197, 197, 255, 202, 202, 202, 255, 199, 199, 199, 255, 191, 191, 191, 255, 173, 173, 173, 255, 164, 164, 164, 255, 149, 149, 149, 255, 126, 126, 126, 255, 113, 113, 113, 255, 102, 102, 102, 255, 114, 114, 139, 255, 51, 51, 51, 255, 139, 139, 139, 255, 149, 149, 149, 255, 159, 159, 159, 255, 163, 163, 163, 255, 174, 174, 174, 255, 153, 153, 153, 255, 149, 149, 149, 255, 195, 195, 195, 255, 204, 204, 204, 255, 128, 128, 128, 255, 31, 31, 31, 210, 0, 0, 0, 89, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 51, 51, 102, 255, 128, 128, 179, 255, 155, 155, 205, 255, 163, 163, 209, 255, 171, 171, 213, 255, 181, 181, 218, 255, 77, 77, 83, 255, 56, 56, 56, 255, 65, 65, 65, 255, 73, 73, 73, 255, 51, 51, 51, 255, 158, 158, 158, 255, 179, 179, 179, 255, 185, 185, 185, 255, 184, 184, 184, 255, 175, 175, 175, 255, 173, 173, 173, 255, 153, 153, 153, 255, 141, 141, 141, 255, 126, 126, 126, 255, 107, 107, 107, 255, 103, 103, 104, 255, 116, 116, 144, 255, 69, 69, 79, 255, 125, 125, 125, 255, 159, 159, 159, 255, 163, 163, 163, 255, 174, 174, 174, 255, 180, 180, 180, 255, 175, 175, 175, 255, 151, 151, 151, 255, 204, 204, 204, 255, 204, 204, 204, 255, 128, 128, 128, 255, 31, 31, 31, 211, 0, 0, 0, 95, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 51, 51, 102, 255, 115, 115, 161, 255, 148, 148, 195, 255, 152, 152, 202, 255, 153, 153, 204, 255, 148, 148, 195, 255, 51, 51, 51, 255, 58, 58, 58, 255, 73, 73, 73, 255, 69, 69, 69, 255, 70, 70, 70, 255, 159, 159, 159, 255, 172, 172, 172, 255, 173, 173, 173, 255, 173, 173, 173, 255, 170, 170, 170, 255, 156, 156, 156, 255, 149, 149, 149, 255, 128, 128, 128, 255, 120, 120, 120, 255, 102, 102, 102, 255, 106, 106, 114, 255, 119, 119, 154, 255, 69, 69, 79, 255, 133, 133, 133, 255, 163, 163, 163, 255, 174, 174, 174, 255, 180, 180, 180, 255, 189, 189, 189, 255, 170, 170, 170, 255, 153, 153, 153, 255, 204, 204, 204, 255, 204, 204, 204, 255, 128, 128, 128, 255, 34, 34, 34, 217, 0, 0, 0, 97, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 49, 49, 98, 215, 88, 88, 131, 255, 138, 138, 174, 255, 140, 140, 179, 255, 145, 145, 188, 255, 124, 124, 160, 255, 55, 55, 55, 255, 63, 63, 63, 255, 77, 77, 77, 255, 66, 66, 66, 255, 90, 90, 90, 255, 149, 149, 149, 255, 150, 150, 150, 255, 156, 156, 156, 255, 154, 154, 154, 255, 150, 150, 150, 255, 146, 146, 146, 255, 131, 131, 131, 255, 125, 125, 125, 255, 105, 105, 105, 255, 102, 102, 102, 255, 112, 112, 133, 255, 122, 122, 163, 255, 64, 64, 72, 255, 136, 136, 136, 255, 174, 174, 174, 255, 180, 180, 180, 255, 189, 189, 189, 255, 195, 195, 195, 255, 171, 171, 171, 255, 168, 168, 168, 255, 204, 204, 204, 255, 204, 204, 204, 255, 128, 128, 128, 255, 31, 31, 31, 212, 0, 0, 0, 98, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 45, 45, 90, 146, 56, 56, 105, 255, 122, 122, 148, 255, 130, 130, 156, 255, 133, 133, 164, 255, 94, 94, 112, 255, 57, 57, 57, 255, 67, 67, 67, 255, 82, 82, 82, 255, 67, 67, 67, 255, 89, 89, 89, 255, 128, 128, 128, 255, 135, 135, 135, 255, 138, 138, 138, 255, 138, 138, 138, 255, 131, 131, 131, 255, 126, 126, 126, 255, 123, 123, 123, 255, 107, 107, 107, 255, 102, 102, 102, 255, 108, 108, 119, 255, 120, 120, 156, 255, 123, 123, 165, 255, 51, 51, 51, 255, 174, 174, 174, 255, 180, 180, 180, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 165, 165, 165, 255, 173, 173, 173, 255, 204, 204, 204, 255, 204, 204, 204, 255, 128, 128, 128, 255, 31, 31, 31, 212, 0, 0, 0, 97, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 22, 22, 44, 37, 50, 50, 100, 245, 75, 75, 112, 255, 117, 117, 133, 255, 122, 122, 142, 255, 89, 89, 100, 255, 61, 61, 61, 255, 72, 72, 72, 255, 84, 84, 84, 255, 70, 70, 70, 255, 81, 81, 81, 255, 117, 117, 117, 255, 123, 123, 123, 255, 126, 126, 126, 255, 126, 126, 126, 255, 120, 120, 120, 255, 113, 113, 113, 255, 104, 104, 104, 255, 102, 102, 102, 255, 106, 106, 116, 255, 118, 118, 152, 255, 122, 122, 163, 255, 103, 103, 138, 255, 74, 74, 74, 255, 180, 180, 180, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 154, 154, 154, 255, 189, 189, 189, 255, 204, 204, 204, 255, 204, 204, 204, 255, 99, 99, 99, 255, 24, 24, 24, 200, 0, 0, 0, 92, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 7, 32, 32, 63, 103, 49, 49, 99, 247, 59, 59, 105, 255, 87, 87, 117, 255, 75, 75, 86, 255, 64, 64, 64, 255, 74, 74, 74, 255, 89, 89, 89, 255, 70, 70, 70, 255, 77, 77, 77, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 103, 103, 106, 255, 110, 110, 127, 255, 118, 118, 152, 255, 122, 122, 163, 255, 126, 126, 175, 255, 72, 72, 87, 255, 126, 126, 126, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 197, 197, 197, 255, 147, 147, 147, 255, 200, 200, 200, 255, 204, 204, 204, 255, 204, 204, 204, 255, 70, 70, 70, 255, 18, 18, 18, 185, 0, 0, 0, 83, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 18, 18, 18, 35, 93, 39, 39, 78, 209, 49, 49, 98, 250, 51, 51, 77, 255, 64, 64, 64, 255, 76, 76, 76, 255, 92, 92, 92, 255, 82, 82, 82, 255, 62, 62, 66, 255, 109, 109, 123, 255, 107, 107, 118, 255, 107, 107, 118, 255, 107, 107, 118, 255, 107, 107, 118, 255, 111, 111, 129, 255, 116, 116, 146, 255, 121, 121, 159, 255, 122, 122, 163, 255, 128, 128, 179, 255, 113, 113, 158, 255, 60, 60, 60, 255, 180, 180, 180, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 179, 179, 179, 255, 165, 165, 165, 255, 204, 204, 204, 255, 204, 204, 204, 255, 185, 185, 185, 255, 51, 51, 51, 255, 0, 0, 0, 154, 0, 0, 0, 68, 197, 197, 246, 165, 54, 54, 109, 30, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 198, 198, 247, 33, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 19, 0, 0, 0, 58, 0, 0, 0, 102, 38, 38, 46, 211, 70, 70, 70, 255, 76, 76, 76, 255, 95, 95, 95, 255, 95, 95, 95, 255, 54, 54, 54, 255, 113, 113, 147, 255, 120, 120, 156, 255, 120, 120, 156, 255, 120, 120, 156, 255, 120, 120, 157, 255, 122, 122, 163, 255, 122, 122, 163, 255, 125, 125, 171, 255, 130, 130, 186, 255, 128, 128, 185, 255, 66, 66, 78, 255, 120, 120, 120, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 155, 155, 155, 255, 185, 185, 185, 255, 204, 204, 204, 255, 204, 204, 204, 255, 147, 147, 147, 255, 38, 38, 38, 234, 0, 0, 0, 139, 109, 109, 136, 90, 191, 191, 249, 255, 82, 82, 164, 159, 0, 0, 0, 41, 0, 0, 0, 7, 0, 0, 0, 0, 202, 202, 253, 209, 157, 157, 229, 227, 34, 34, 68, 48, 0, 0, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 27, 41, 41, 41, 159, 72, 72, 72, 255, 83, 83, 83, 255, 93, 93, 93, 255, 102, 102, 102, 255, 77, 77, 77, 255, 69, 69, 79, 255, 125, 125, 171, 255, 125, 125, 171, 255, 125, 125, 171, 255, 125, 125, 171, 255, 128, 128, 179, 255, 131, 131, 188, 255, 133, 133, 194, 255, 128, 128, 185, 255, 77, 77, 96, 255, 86, 86, 86, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 187, 187, 187, 255, 155, 155, 155, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 89, 89, 89, 255, 24, 24, 24, 206, 0, 0, 0, 113, 161, 161, 201, 122, 172, 172, 239, 255, 59, 59, 118, 166, 0, 0, 0, 77, 0, 0, 0, 17, 0, 0, 0, 0, 204, 204, 255, 255, 128, 128, 217, 255, 0, 0, 0, 100, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 43, 95, 62, 62, 62, 255, 89, 89, 89, 255, 92, 92, 92, 255, 103, 103, 103, 255, 110, 110, 110, 255, 63, 63, 63, 255, 82, 82, 105, 255, 128, 128, 185, 255, 133, 133, 194, 255, 133, 133, 194, 255, 133, 133, 194, 255, 134, 134, 196, 255, 125, 125, 184, 255, 67, 67, 80, 255, 77, 77, 77, 255, 186, 186, 186, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 159, 159, 159, 255, 182, 182, 182, 255, 204, 204, 204, 255, 204, 204, 204, 255, 185, 185, 185, 255, 49, 49, 49, 251, 5, 5, 5, 166, 0, 0, 0, 82, 187, 187, 234, 173, 147, 147, 226, 255, 32, 32, 63, 154, 0, 0, 0, 82, 0, 0, 0, 17, 198, 198, 247, 66, 204, 204, 255, 255, 109, 109, 196, 240, 0, 0, 0, 136, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 36, 36, 45, 54, 54, 54, 255, 99, 99, 99, 255, 89, 89, 89, 255, 113, 113, 113, 255, 118, 118, 118, 255, 123, 123, 123, 255, 72, 72, 72, 255, 61, 61, 69, 255, 87, 87, 114, 255, 110, 110, 157, 255, 100, 100, 141, 255, 80, 80, 105, 255, 51, 51, 51, 255, 120, 120, 120, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 175, 175, 175, 255, 163, 163, 163, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 108, 108, 108, 255, 35, 35, 35, 229, 0, 0, 0, 137, 0, 0, 0, 53, 202, 202, 253, 241, 111, 111, 199, 236, 0, 0, 0, 132, 0, 0, 0, 64, 0, 0, 0, 9, 195, 195, 244, 134, 191, 191, 249, 255, 76, 76, 151, 215, 0, 0, 0, 128, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 49, 49, 49, 230, 93, 93, 93, 255, 98, 98, 98, 255, 107, 107, 107, 255, 128, 128, 128, 255, 134, 134, 134, 255, 145, 145, 145, 255, 125, 125, 125, 255, 106, 106, 106, 255, 80, 80, 80, 255, 98, 98, 98, 255, 126, 126, 126, 255, 172, 172, 172, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 185, 185, 185, 255, 156, 156, 156, 255, 194, 194, 194, 255, 204, 204, 204, 255, 204, 204, 204, 255, 185, 185, 185, 255, 51, 51, 51, 255, 9, 9, 9, 182, 0, 0, 0, 103, 167, 167, 209, 117, 185, 185, 245, 255, 73, 73, 146, 199, 0, 0, 0, 123, 0, 0, 0, 43, 0, 0, 0, 2, 199, 199, 249, 212, 159, 159, 233, 255, 52, 52, 103, 190, 0, 0, 0, 107, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 45, 45, 45, 161, 76, 76, 76, 255, 113, 113, 113, 255, 99, 99, 99, 255, 128, 128, 128, 255, 145, 145, 145, 255, 149, 149, 149, 255, 159, 159, 159, 255, 163, 163, 163, 255, 174, 174, 174, 255, 180, 180, 180, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 191, 191, 191, 255, 156, 156, 156, 255, 185, 185, 185, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 89, 89, 89, 255, 30, 30, 30, 220, 0, 0, 0, 142, 0, 0, 0, 62, 197, 197, 246, 198, 140, 140, 223, 255, 31, 31, 62, 160, 0, 0, 0, 99, 0, 0, 0, 25, 198, 198, 247, 33, 204, 204, 255, 255, 134, 134, 220, 255, 20, 20, 40, 164, 0, 0, 0, 83, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 54, 55, 55, 55, 255, 123, 123, 123, 255, 119, 119, 119, 255, 108, 108, 108, 255, 141, 141, 141, 255, 159, 159, 159, 255, 163, 163, 163, 255, 174, 174, 174, 255, 180, 180, 180, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 184, 184, 184, 255, 153, 153, 153, 255, 185, 185, 185, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 137, 137, 137, 255, 46, 46, 46, 247, 5, 5, 5, 171, 0, 0, 0, 97, 152, 152, 190, 86, 198, 198, 252, 255, 96, 96, 180, 220, 0, 0, 0, 135, 0, 0, 0, 67, 0, 0, 0, 10, 198, 198, 247, 132, 191, 191, 249, 255, 86, 86, 172, 227, 0, 0, 0, 142, 0, 0, 0, 59, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 47, 47, 47, 207, 88, 88, 88, 255, 145, 145, 145, 255, 126, 126, 126, 255, 114, 114, 114, 255, 148, 148, 148, 255, 174, 174, 174, 255, 180, 180, 180, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 197, 197, 197, 255, 166, 166, 166, 255, 156, 156, 156, 255, 191, 191, 191, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 175, 175, 175, 255, 51, 51, 51, 255, 13, 13, 13, 192, 0, 0, 0, 125, 0, 0, 0, 49, 200, 200, 250, 211, 147, 147, 226, 255, 39, 39, 78, 167, 0, 0, 0, 112, 0, 0, 0, 37, 0, 0, 0, 2, 202, 202, 253, 241, 153, 153, 230, 255, 51, 51, 102, 192, 0, 0, 0, 118, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 26, 26, 26, 62, 51, 51, 51, 255, 131, 131, 131, 255, 159, 159, 159, 255, 149, 149, 149, 255, 121, 121, 121, 255, 136, 136, 136, 255, 165, 165, 165, 255, 186, 186, 186, 255, 204, 204, 204, 255, 204, 204, 204, 255, 196, 196, 196, 255, 184, 184, 184, 255, 168, 168, 168, 255, 147, 147, 147, 255, 171, 171, 171, 255, 201, 201, 201, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 175, 175, 175, 255, 61, 61, 61, 255, 23, 23, 23, 211, 0, 0, 0, 143, 0, 0, 0, 70, 184, 184, 230, 124, 185, 185, 245, 255, 88, 88, 176, 221, 0, 0, 0, 139, 0, 0, 0, 74, 0, 0, 0, 14, 200, 200, 250, 98, 204, 204, 255, 255, 106, 106, 201, 247, 0, 0, 0, 152, 0, 0, 0, 82, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 39, 39, 39, 148, 58, 58, 58, 255, 156, 156, 156, 255, 174, 174, 174, 255, 177, 177, 177, 255, 164, 164, 164, 255, 146, 146, 146, 255, 130, 130, 130, 255, 135, 135, 135, 255, 137, 137, 137, 255, 141, 141, 141, 255, 155, 155, 155, 255, 176, 176, 176, 255, 197, 197, 197, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 175, 175, 175, 255, 61, 61, 61, 255, 23, 23, 23, 211, 0, 0, 0, 149, 0, 0, 0, 84, 140, 140, 175, 70, 204, 204, 255, 255, 119, 119, 209, 245, 21, 21, 42, 157, 0, 0, 0, 110, 0, 0, 0, 37, 163, 163, 204, 20, 203, 203, 254, 240, 159, 159, 233, 255, 64, 64, 127, 205, 0, 0, 0, 132, 0, 0, 0, 49, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 25, 42, 42, 42, 193, 74, 74, 74, 255, 156, 156, 156, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 137, 137, 137, 255, 51, 51, 51, 255, 23, 23, 23, 211, 0, 0, 0, 149, 0, 0, 0, 86, 74, 74, 93, 44, 203, 203, 254, 240, 147, 147, 226, 255, 54, 54, 108, 181, 0, 0, 0, 130, 0, 0, 0, 62, 0, 0, 0, 11, 199, 199, 249, 131, 198, 198, 252, 255, 102, 102, 194, 239, 10, 10, 20, 161, 0, 0, 0, 94, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 37, 39, 39, 39, 187, 60, 60, 60, 255, 140, 140, 140, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 166, 166, 166, 255, 89, 89, 89, 255, 46, 46, 46, 247, 13, 13, 13, 192, 0, 0, 0, 143, 0, 0, 0, 84, 74, 74, 93, 44, 201, 201, 251, 210, 166, 166, 236, 255, 78, 78, 157, 207, 0, 0, 0, 143, 0, 0, 0, 85, 0, 0, 0, 22, 192, 192, 240, 51, 204, 204, 255, 255, 147, 147, 226, 255, 51, 51, 102, 193, 0, 0, 0, 129, 0, 0, 0, 52, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 40, 24, 24, 24, 137, 47, 47, 47, 242, 70, 70, 70, 255, 147, 147, 147, 255, 185, 185, 185, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 185, 185, 185, 255, 147, 147, 147, 255, 89, 89, 89, 255, 49, 49, 49, 251, 30, 30, 30, 220, 5, 5, 5, 170, 0, 0, 0, 125, 0, 0, 0, 70, 140, 140, 175, 70, 203, 203, 254, 240, 166, 166, 236, 255, 80, 80, 159, 204, 0, 0, 0, 144, 0, 0, 0, 100, 0, 0, 0, 35, 155, 155, 194, 21, 202, 202, 253, 225, 179, 179, 242, 255, 86, 86, 172, 227, 0, 0, 0, 151, 0, 0, 0, 84, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 31, 0, 0, 0, 75, 28, 28, 28, 173, 40, 40, 40, 224, 51, 51, 51, 255, 61, 61, 61, 255, 89, 89, 89, 255, 89, 89, 89, 255, 61, 61, 61, 255, 51, 51, 51, 255, 38, 38, 38, 234, 24, 24, 24, 206, 5, 5, 5, 166, 0, 0, 0, 134, 0, 0, 0, 94, 0, 0, 0, 49, 184, 184, 230, 124, 204, 204, 255, 255, 147, 147, 226, 255, 73, 73, 146, 199, 0, 0, 0, 142, 0, 0, 0, 101, 0, 0, 0, 41, 0, 0, 0, 7, 201, 201, 251, 178, 198, 198, 252, 255, 106, 106, 201, 247, 10, 10, 20, 166, 0, 0, 0, 112, 0, 0, 0, 39, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 16, 0, 0, 0, 44, 0, 0, 0, 80, 0, 0, 0, 113, 11, 11, 11, 152, 19, 19, 19, 176, 18, 18, 18, 179, 10, 10, 10, 167, 0, 0, 0, 149, 0, 0, 0, 137, 0, 0, 0, 113, 0, 0, 0, 82, 0, 0, 0, 52, 172, 172, 215, 114, 202, 202, 252, 226, 185, 185, 245, 255, 119, 119, 209, 245, 47, 47, 94, 173, 0, 0, 0, 140, 0, 0, 0, 97, 0, 0, 0, 40, 0, 0, 0, 7, 200, 200, 250, 162, 204, 204, 255, 255, 121, 121, 214, 255, 28, 28, 56, 176, 0, 0, 0, 130, 0, 0, 0, 57, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 46, 0, 0, 0, 59, 0, 0, 0, 68, 0, 0, 0, 68, 77, 77, 96, 85, 126, 126, 158, 103, 159, 159, 199, 123, 187, 187, 234, 173, 202, 202, 253, 241, 185, 185, 245, 255, 140, 140, 223, 255, 79, 79, 158, 205, 11, 11, 22, 148, 0, 0, 0, 126, 0, 0, 0, 80, 0, 0, 0, 32, 0, 0, 0, 6, 200, 200, 250, 162, 204, 204, 255, 255, 140, 140, 223, 255, 51, 51, 102, 193, 0, 0, 0, 140, 0, 0, 0, 72, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 10, 190, 190, 243, 180, 179, 179, 242, 255, 172, 172, 239, 255, 147, 147, 226, 255, 112, 112, 190, 218, 63, 63, 126, 181, 22, 22, 44, 149, 0, 0, 0, 132, 0, 0, 0, 102, 0, 0, 0, 55, 0, 0, 0, 19, 163, 163, 204, 20, 201, 201, 251, 194, 198, 198, 252, 255, 140, 140, 223, 255, 51, 51, 102, 192, 0, 0, 0, 145, 0, 0, 0, 84, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 58, 58, 115, 113, 36, 36, 72, 136, 0, 0, 0, 122, 0, 0, 0, 122, 0, 0, 0, 112, 0, 0, 0, 88, 0, 0, 0, 59, 0, 0, 0, 30, 0, 0, 0, 8, 195, 195, 244, 67, 202, 202, 253, 225, 198, 198, 252, 255, 119, 119, 208, 246, 51, 51, 102, 193, 0, 0, 0, 144, 0, 0, 0, 86, 0, 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 62, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 8, 186, 186, 233, 35, 201, 201, 251, 178, 204, 204, 255, 255, 172, 172, 239, 255, 99, 99, 187, 231, 28, 28, 56, 174, 0, 0, 0, 136, 0, 0, 0, 82, 0, 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 2, 192, 192, 240, 17, 197, 197, 246, 83, 198, 198, 248, 180, 204, 204, 255, 255, 191, 191, 249, 255, 132, 132, 215, 246, 65, 65, 130, 200, 0, 0, 0, 150, 0, 0, 0, 118, 0, 0, 0, 67, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 197, 246, 83, 195, 195, 244, 134, 194, 194, 243, 167, 197, 197, 246, 198, 204, 204, 255, 255, 204, 204, 255, 255, 172, 172, 239, 255, 132, 132, 215, 246, 72, 72, 143, 204, 20, 20, 40, 163, 0, 0, 0, 134, 0, 0, 0, 93, 0, 0, 0, 45, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 192, 240, 119, 179, 179, 242, 255, 172, 172, 239, 255, 153, 153, 230, 255, 127, 127, 202, 230, 85, 85, 159, 209, 53, 53, 106, 184, 11, 11, 22, 150, 0, 0, 0, 132, 0, 0, 0, 100, 0, 0, 0, 59, 0, 0, 0, 25, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 58, 0, 0, 0, 105, 0, 0, 0, 125, 0, 0, 0, 128, 0, 0, 0, 122, 0, 0, 0, 106, 0, 0, 0, 81, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 22, 0, 0, 0, 40, 0, 0, 0, 47, 0, 0, 0, 45, 0, 0, 0, 38, 0, 0, 0, 28, 0, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_LogoMessageError(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 5, 4, 29, 247, 14, 13, 83, 246, 25, 25, 131, 247, 39, 39, 172, 249, 53, 53, 207, 252, 63, 63, 233, 254, 70, 70, 250, 254, 68, 68, 250, 252, 59, 59, 233, 249, 47, 47, 207, 246, 34, 34, 172, 244, 22, 22, 131, 246, 12, 11, 83, 250, 4, 3, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 2, 1, 6, 247, 11, 10, 82, 246, 27, 27, 154, 251, 49, 49, 222, 255, 69, 69, 255, 255, 81, 81, 255, 255, 91, 91, 255, 255, 99, 99, 255, 255, 104, 104, 255, 255, 104, 104, 255, 255, 102, 102, 255, 255, 96, 96, 255, 255, 87, 87, 255, 255, 77, 77, 255, 255, 67, 67, 255, 255, 56, 56, 255, 245, 38, 38, 226, 229, 20, 20, 164, 222, 8, 7, 90, 166, 1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 11, 10, 89, 248, 28, 28, 176, 255, 56, 56, 255, 255, 71, 71, 255, 255, 86, 86, 255, 255, 101, 101, 255, 255, 113, 113, 255, 255, 123, 123, 255, 255, 131, 131, 255, 255, 134, 134, 255, 255, 134, 134, 255, 255, 130, 130, 255, 255, 122, 122, 255, 255, 113, 113, 255, 255, 102, 102, 255, 255, 90, 90, 255, 255, 79, 79, 255, 255, 67, 67, 255, 255, 55, 55, 255, 250, 43, 43, 255, 226, 20, 20, 189, 208, 7, 7, 104, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 6, 5, 54, 247, 21, 21, 154, 255, 49, 49, 253, 255, 66, 66, 255, 255, 83, 83, 255, 255, 100, 100, 255, 255, 115, 115, 255, 255, 128, 128, 255, 255, 139, 139, 255, 255, 147, 147, 255, 255, 152, 152, 255, 255, 154, 154, 255, 255, 152, 152, 255, 255, 146, 146, 255, 255, 138, 138, 255, 255, 129, 129, 255, 255, 118, 118, 255, 255, 107, 107, 255, 255, 96, 96, 255, 255, 85, 85, 255, 255, 73, 73, 255, 255, 61, 61, 255, 254, 48, 48, 255, 241, 37, 37, 254, 208, 14, 14, 176, 177, 4, 3, 74, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 10, 9, 93, 249, 30, 30, 203, 255, 54, 54, 255, 255, 72, 72, 255, 255, 90, 90, 255, 255, 107, 107, 255, 255, 122, 122, 255, 255, 135, 135, 255, 255, 145, 145, 255, 255, 153, 153, 255, 255, 158, 158, 255, 255, 160, 160, 255, 255, 159, 159, 255, 255, 156, 156, 255, 255, 150, 150, 255, 255, 143, 143, 255, 255, 134, 134, 255, 255, 125, 125, 255, 255, 115, 115, 255, 255, 106, 106, 255, 255, 96, 96, 255, 255, 85, 85, 255, 255, 74, 74, 255, 255, 63, 63, 255, 254, 50, 50, 255, 240, 39, 39, 255, 213, 20, 20, 221, 177, 5, 5, 125, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 13, 12, 116, 252, 36, 36, 235, 255, 56, 56, 255, 255, 74, 74, 255, 255, 92, 92, 255, 255, 109, 109, 255, 255, 123, 123, 255, 255, 135, 135, 255, 255, 144, 144, 255, 255, 150, 150, 255, 255, 154, 154, 255, 255, 155, 155, 255, 255, 154, 154, 255, 255, 151, 151, 255, 255, 146, 146, 255, 255, 141, 141, 255, 255, 135, 135, 255, 255, 128, 128, 255, 255, 122, 122, 255, 255, 115, 115, 255, 255, 107, 107, 255, 255, 99, 99, 255, 255, 91, 91, 255, 255, 81, 81, 255, 255, 72, 72, 255, 255, 61, 61, 255, 251, 50, 50, 255, 238, 39, 39, 255, 220, 25, 25, 244, 174, 7, 7, 156, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 13, 12, 122, 253, 38, 38, 250, 255, 55, 55, 255, 255, 73, 73, 255, 255, 90, 90, 255, 255, 106, 106, 255, 255, 119, 119, 255, 255, 130, 130, 255, 255, 137, 137, 255, 255, 142, 142, 255, 255, 144, 144, 255, 255, 143, 143, 255, 255, 140, 140, 255, 255, 135, 135, 255, 255, 129, 129, 255, 255, 123, 123, 255, 255, 119, 119, 255, 255, 115, 115, 255, 255, 112, 112, 255, 255, 110, 110, 255, 255, 106, 106, 255, 255, 102, 102, 255, 255, 96, 96, 255, 255, 90, 90, 255, 255, 83, 83, 255, 255, 75, 75, 255, 255, 66, 66, 255, 255, 57, 57, 255, 246, 47, 47, 255, 232, 37, 37, 255, 220, 26, 26, 253, 165, 7, 6, 169, 0, 0, 0, 43, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 11, 10, 112, 250, 35, 35, 248, 255, 52, 52, 255, 255, 69, 69, 255, 255, 85, 85, 255, 255, 99, 99, 255, 255, 111, 111, 255, 255, 121, 121, 255, 255, 127, 127, 255, 255, 131, 131, 255, 255, 131, 131, 255, 255, 128, 128, 255, 255, 121, 121, 255, 255, 113, 113, 255, 255, 104, 104, 255, 255, 96, 96, 255, 255, 90, 90, 255, 255, 87, 87, 255, 255, 87, 87, 255, 255, 88, 88, 255, 255, 90, 90, 255, 255, 91, 91, 255, 255, 91, 91, 255, 255, 89, 89, 255, 255, 85, 85, 255, 255, 79, 79, 255, 255, 73, 73, 255, 255, 66, 66, 255, 255, 59, 59, 255, 255, 51, 51, 255, 238, 42, 42, 255, 226, 33, 33, 255, 214, 23, 23, 252, 151, 5, 5, 168, 0, 0, 0, 46, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 8, 7, 86, 245, 29, 29, 230, 255, 47, 47, 255, 255, 63, 63, 255, 255, 77, 77, 255, 255, 90, 90, 255, 255, 101, 101, 255, 255, 110, 110, 255, 255, 115, 115, 255, 255, 118, 118, 255, 255, 116, 116, 255, 255, 111, 111, 255, 255, 102, 102, 255, 255, 91, 91, 255, 255, 80, 80, 255, 255, 69, 69, 255, 255, 61, 61, 255, 255, 56, 56, 255, 255, 55, 55, 255, 255, 56, 56, 255, 255, 59, 59, 255, 255, 64, 64, 255, 255, 70, 70, 255, 255, 74, 74, 255, 255, 76, 76, 255, 255, 76, 76, 255, 255, 73, 73, 255, 255, 69, 69, 255, 255, 63, 63, 255, 255, 57, 57, 255, 255, 51, 51, 255, 245, 45, 45, 255, 231, 37, 37, 255, 219, 29, 29, 255, 198, 18, 18, 247, 125, 3, 3, 154, 0, 0, 0, 46, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 4, 3, 44, 240, 21, 21, 195, 252, 40, 40, 255, 255, 55, 55, 255, 255, 68, 68, 255, 255, 80, 80, 255, 255, 90, 90, 255, 255, 98, 98, 255, 255, 103, 103, 255, 255, 105, 105, 255, 245, 101, 101, 255, 255, 95, 95, 255, 255, 85, 85, 255, 255, 72, 72, 255, 255, 59, 59, 255, 255, 48, 48, 255, 255, 39, 39, 255, 255, 33, 33, 255, 255, 29, 29, 255, 255, 29, 29, 255, 255, 30, 30, 255, 255, 34, 34, 255, 255, 40, 40, 255, 255, 47, 47, 255, 255, 54, 54, 255, 255, 60, 60, 255, 255, 63, 63, 255, 245, 66, 66, 255, 255, 62, 62, 255, 255, 58, 58, 255, 255, 54, 54, 255, 255, 49, 49, 255, 248, 44, 44, 255, 235, 38, 38, 255, 222, 32, 32, 255, 211, 25, 25, 255, 175, 12, 12, 235, 79, 1, 1, 126, 0, 0, 0, 42, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, 12, 12, 143, 242, 34, 34, 255, 255, 47, 47, 255, 255, 59, 59, 255, 255, 70, 70, 255, 255, 78, 78, 255, 255, 85, 85, 255, 255, 90, 90, 255, 255, 92, 92, 255, 158, 97, 97, 255, 134, 103, 103, 255, 246, 73, 73, 255, 255, 57, 57, 255, 255, 44, 44, 255, 255, 33, 33, 255, 255, 25, 25, 255, 255, 19, 19, 255, 250, 15, 15, 255, 247, 13, 13, 255, 247, 13, 13, 255, 247, 14, 14, 255, 250, 17, 17, 255, 254, 21, 21, 255, 255, 27, 27, 255, 255, 34, 34, 255, 255, 42, 42, 255, 194, 66, 66, 255, 111, 100, 100, 255, 227, 64, 64, 255, 255, 52, 52, 255, 255, 49, 49, 255, 255, 45, 45, 255, 248, 41, 41, 255, 237, 36, 36, 255, 225, 32, 32, 255, 213, 27, 27, 255, 204, 21, 21, 255, 142, 5, 5, 213, 0, 0, 0, 89, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 6, 5, 75, 236, 25, 25, 240, 246, 38, 38, 255, 255, 49, 49, 255, 255, 59, 59, 255, 255, 67, 67, 255, 255, 73, 73, 255, 255, 78, 78, 255, 255, 80, 80, 255, 165, 99, 99, 255, 144, 144, 144, 255, 150, 150, 150, 255, 150, 113, 113, 255, 247, 39, 39, 255, 255, 24, 24, 255, 250, 16, 16, 255, 244, 11, 11, 255, 241, 8, 8, 255, 238, 6, 6, 255, 237, 5, 5, 255, 236, 5, 5, 255, 237, 5, 5, 255, 237, 7, 7, 255, 240, 10, 10, 255, 244, 14, 14, 255, 248, 19, 19, 255, 194, 53, 53, 255, 111, 111, 111, 255, 135, 135, 135, 255, 131, 120, 120, 255, 229, 59, 59, 255, 255, 43, 43, 255, 255, 40, 40, 255, 247, 37, 37, 255, 237, 33, 33, 255, 225, 30, 30, 255, 214, 26, 26, 255, 204, 22, 22, 255, 189, 14, 14, 252, 92, 1, 1, 176, 0, 0, 0, 70, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 13, 13, 162, 235, 30, 30, 255, 247, 40, 40, 255, 255, 49, 49, 255, 255, 56, 56, 255, 255, 62, 62, 255, 255, 66, 66, 255, 255, 69, 69, 255, 169, 100, 100, 255, 160, 160, 160, 255, 217, 217, 217, 255, 219, 219, 219, 255, 171, 171, 171, 255, 156, 115, 115, 255, 235, 18, 18, 255, 239, 7, 7, 255, 236, 4, 4, 255, 233, 3, 3, 255, 232, 2, 2, 255, 231, 1, 1, 255, 231, 1, 1, 255, 230, 2, 2, 255, 231, 2, 2, 255, 231, 4, 4, 255, 233, 6, 6, 255, 184, 43, 43, 255, 116, 116, 116, 255, 158, 158, 158, 255, 201, 201, 201, 255, 170, 170, 170, 255, 146, 135, 135, 255, 231, 54, 54, 255, 251, 35, 35, 255, 244, 32, 32, 255, 235, 29, 29, 255, 225, 27, 27, 255, 215, 24, 24, 255, 203, 21, 21, 255, 195, 17, 17, 255, 142, 6, 6, 231, 0, 0, 0, 115, 0, 0, 0, 47, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 233, 5, 4, 66, 227, 22, 22, 245, 236, 32, 32, 255, 247, 40, 40, 255, 255, 46, 46, 255, 255, 51, 51, 255, 255, 55, 55, 255, 255, 58, 58, 255, 177, 104, 104, 255, 162, 162, 162, 255, 221, 221, 221, 255, 248, 248, 248, 255, 249, 249, 249, 255, 228, 228, 228, 255, 175, 175, 175, 255, 156, 115, 115, 255, 225, 10, 10, 255, 230, 1, 1, 255, 229, 1, 1, 255, 229, 0, 0, 255, 227, 0, 0, 255, 227, 0, 0, 255, 227, 0, 0, 255, 226, 0, 0, 255, 227, 1, 1, 255, 178, 39, 39, 255, 118, 118, 118, 255, 161, 161, 161, 255, 225, 225, 225, 255, 244, 244, 244, 255, 229, 229, 229, 255, 182, 182, 182, 255, 158, 147, 147, 255, 228, 52, 52, 255, 240, 28, 28, 255, 233, 26, 26, 255, 223, 23, 23, 255, 214, 22, 22, 255, 202, 20, 20, 255, 194, 17, 17, 255, 183, 12, 12, 254, 74, 1, 1, 186, 0, 0, 0, 82, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 226, 9, 9, 137, 226, 24, 24, 255, 233, 32, 32, 255, 244, 37, 37, 255, 255, 42, 42, 255, 255, 45, 45, 255, 255, 48, 48, 255, 241, 62, 62, 255, 163, 152, 152, 255, 185, 185, 185, 255, 229, 229, 229, 255, 250, 250, 250, 255, 253, 253, 253, 255, 250, 250, 250, 255, 228, 228, 228, 255, 176, 176, 176, 255, 158, 118, 118, 255, 220, 8, 8, 255, 226, 0, 0, 255, 226, 1, 0, 255, 227, 0, 0, 255, 226, 1, 0, 255, 226, 1, 0, 255, 224, 0, 0, 255, 177, 39, 39, 255, 123, 123, 123, 255, 162, 162, 162, 255, 226, 226, 226, 255, 249, 249, 249, 255, 253, 253, 253, 255, 247, 247, 247, 255, 224, 224, 224, 255, 193, 193, 193, 255, 206, 114, 114, 255, 235, 24, 24, 255, 228, 22, 22, 255, 221, 20, 20, 255, 211, 19, 19, 255, 202, 18, 18, 255, 192, 16, 16, 255, 185, 14, 14, 255, 119, 3, 3, 229, 0, 0, 0, 123, 0, 0, 0, 50, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 232, 1, 1, 12, 220, 14, 14, 205, 224, 25, 25, 255, 231, 30, 30, 255, 241, 34, 34, 255, 249, 37, 37, 255, 255, 39, 39, 255, 255, 41, 41, 255, 255, 42, 42, 255, 240, 65, 65, 255, 190, 178, 178, 255, 212, 212, 212, 255, 239, 239, 239, 255, 251, 251, 251, 255, 254, 254, 254, 255, 250, 250, 250, 255, 229, 229, 229, 255, 177, 177, 177, 255, 164, 124, 124, 255, 219, 9, 8, 255, 224, 0, 0, 255, 224, 0, 0, 255, 223, 1, 0, 255, 222, 1, 0, 255, 178, 40, 40, 255, 132, 132, 132, 255, 164, 164, 164, 255, 226, 226, 226, 255, 250, 250, 250, 255, 253, 253, 253, 255, 252, 252, 252, 255, 250, 250, 250, 255, 255, 255, 255, 255, 237, 159, 159, 255, 232, 21, 21, 255, 229, 20, 20, 255, 224, 19, 19, 255, 218, 17, 17, 255, 210, 16, 16, 255, 200, 15, 15, 255, 190, 15, 15, 255, 183, 13, 13, 255, 154, 7, 7, 248, 15, 0, 0, 166, 0, 0, 0, 80, 0, 0, 0, 20, 0, 0, 0, 0,
+ 0, 0, 0, 0, 226, 4, 3, 66, 215, 18, 18, 255, 220, 24, 24, 255, 229, 28, 28, 255, 236, 30, 30, 255, 244, 32, 32, 255, 250, 34, 34, 255, 255, 35, 35, 255, 255, 35, 35, 255, 253, 31, 31, 255, 237, 56, 56, 255, 201, 190, 190, 255, 217, 217, 217, 255, 240, 240, 240, 255, 251, 251, 251, 255, 254, 254, 254, 255, 250, 250, 250, 255, 230, 230, 230, 255, 181, 181, 181, 255, 171, 132, 132, 255, 216, 9, 9, 255, 221, 1, 0, 255, 221, 1, 0, 255, 185, 50, 49, 255, 144, 144, 144, 255, 168, 168, 168, 255, 226, 226, 226, 255, 250, 250, 250, 255, 254, 254, 254, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 165, 165, 255, 226, 14, 14, 255, 226, 17, 17, 255, 226, 17, 17, 255, 220, 16, 16, 255, 215, 14, 14, 255, 207, 13, 13, 255, 198, 13, 13, 255, 188, 13, 13, 255, 181, 12, 12, 255, 177, 10, 10, 255, 64, 1, 1, 209, 0, 0, 0, 112, 0, 0, 0, 37, 0, 0, 0, 1,
+ 0, 0, 0, 0, 219, 7, 6, 115, 212, 18, 18, 255, 217, 22, 22, 255, 225, 25, 25, 255, 232, 26, 26, 255, 238, 27, 27, 255, 244, 29, 29, 255, 247, 30, 30, 255, 247, 28, 28, 255, 245, 24, 24, 255, 238, 17, 17, 255, 224, 45, 45, 255, 203, 192, 192, 255, 218, 218, 218, 255, 241, 241, 241, 255, 251, 251, 251, 255, 254, 254, 254, 255, 251, 251, 251, 255, 232, 232, 232, 255, 185, 185, 185, 255, 177, 138, 138, 255, 214, 10, 10, 255, 193, 58, 58, 255, 158, 158, 158, 255, 174, 174, 174, 255, 230, 230, 230, 255, 251, 251, 251, 255, 254, 254, 254, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 162, 162, 255, 218, 7, 7, 255, 220, 11, 11, 255, 222, 13, 13, 255, 219, 14, 14, 255, 217, 13, 13, 255, 210, 12, 12, 255, 203, 11, 11, 255, 195, 11, 11, 255, 186, 11, 11, 255, 178, 11, 11, 255, 174, 10, 10, 255, 95, 2, 2, 232, 0, 0, 0, 140, 0, 0, 0, 58, 0, 0, 0, 8,
+ 0, 0, 0, 0, 214, 8, 8, 158, 209, 17, 17, 255, 214, 20, 20, 255, 221, 22, 22, 255, 227, 23, 23, 255, 232, 23, 23, 255, 237, 24, 24, 255, 241, 25, 25, 255, 240, 23, 23, 255, 237, 19, 19, 255, 231, 13, 13, 255, 226, 7, 7, 255, 217, 39, 39, 255, 204, 193, 193, 255, 219, 219, 219, 255, 241, 241, 241, 255, 251, 251, 251, 255, 254, 254, 254, 255, 251, 251, 251, 255, 239, 239, 239, 255, 212, 212, 212, 255, 189, 165, 165, 255, 184, 184, 184, 255, 209, 209, 209, 255, 238, 238, 238, 255, 251, 251, 251, 255, 254, 254, 254, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 161, 161, 255, 212, 3, 3, 255, 213, 5, 5, 255, 215, 8, 8, 255, 217, 11, 11, 255, 215, 12, 12, 255, 212, 11, 11, 255, 206, 10, 10, 255, 201, 9, 9, 255, 194, 9, 9, 255, 185, 9, 9, 255, 176, 9, 9, 255, 171, 9, 9, 255, 118, 3, 3, 244, 0, 0, 0, 166, 0, 0, 0, 82, 0, 0, 0, 20,
+ 0, 0, 0, 0, 207, 10, 10, 194, 205, 16, 16, 255, 209, 18, 18, 255, 216, 19, 19, 255, 221, 19, 19, 255, 227, 20, 20, 255, 232, 20, 20, 255, 234, 21, 21, 255, 234, 19, 19, 255, 230, 15, 15, 255, 226, 10, 10, 255, 221, 5, 5, 255, 219, 2, 2, 255, 211, 37, 37, 255, 206, 195, 195, 255, 219, 219, 219, 255, 242, 242, 242, 255, 252, 252, 252, 255, 253, 253, 253, 255, 252, 252, 252, 255, 247, 247, 247, 255, 241, 241, 241, 255, 240, 240, 240, 255, 247, 247, 247, 255, 252, 252, 252, 255, 253, 253, 253, 255, 252, 252, 252, 255, 254, 254, 254, 255, 255, 255, 255, 255, 238, 161, 161, 255, 208, 0, 0, 255, 208, 2, 2, 255, 211, 4, 4, 255, 211, 6, 6, 255, 212, 9, 9, 255, 211, 10, 10, 255, 208, 9, 9, 255, 204, 8, 8, 255, 197, 8, 8, 255, 191, 7, 7, 255, 182, 8, 8, 255, 174, 8, 8, 255, 168, 8, 8, 255, 137, 4, 4, 250, 0, 0, 0, 188, 0, 0, 0, 105, 0, 0, 0, 32,
+ 0, 0, 0, 0, 202, 10, 10, 223, 201, 15, 15, 255, 206, 16, 16, 255, 210, 16, 16, 255, 216, 16, 16, 255, 221, 16, 16, 255, 225, 17, 17, 255, 228, 17, 17, 255, 228, 16, 16, 255, 225, 12, 12, 255, 221, 8, 8, 255, 218, 4, 4, 255, 215, 1, 1, 255, 214, 0, 0, 255, 209, 36, 35, 255, 207, 196, 196, 255, 217, 217, 217, 255, 244, 244, 244, 255, 252, 252, 252, 255, 253, 253, 253, 255, 253, 253, 253, 255, 252, 252, 252, 255, 252, 252, 252, 255, 253, 253, 253, 255, 253, 253, 253, 255, 252, 252, 252, 255, 249, 249, 249, 255, 255, 255, 255, 255, 237, 161, 161, 255, 207, 0, 0, 255, 206, 0, 0, 255, 207, 1, 1, 255, 207, 3, 3, 255, 208, 5, 5, 255, 208, 7, 7, 255, 207, 8, 8, 255, 205, 8, 8, 255, 200, 7, 7, 255, 194, 6, 6, 255, 188, 6, 6, 255, 180, 6, 6, 255, 171, 7, 7, 255, 164, 7, 7, 255, 148, 5, 5, 253, 0, 0, 0, 202, 0, 0, 0, 120, 0, 0, 0, 39,
+ 0, 0, 0, 0, 197, 10, 10, 243, 196, 13, 13, 255, 200, 14, 14, 255, 206, 13, 13, 255, 211, 13, 13, 255, 217, 13, 13, 255, 220, 14, 14, 255, 223, 14, 14, 255, 222, 13, 13, 255, 221, 10, 10, 255, 218, 6, 6, 255, 215, 3, 3, 255, 212, 1, 1, 255, 211, 0, 0, 255, 211, 1, 0, 255, 207, 37, 36, 255, 205, 195, 195, 255, 227, 227, 227, 255, 249, 249, 249, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 250, 250, 250, 255, 243, 243, 243, 255, 230, 154, 154, 255, 205, 0, 0, 255, 205, 0, 0, 255, 203, 0, 0, 255, 204, 1, 1, 255, 204, 2, 2, 255, 205, 4, 4, 255, 205, 6, 6, 255, 204, 7, 7, 255, 201, 6, 6, 255, 197, 6, 6, 255, 192, 5, 5, 255, 185, 5, 5, 255, 177, 5, 5, 255, 168, 6, 6, 255, 162, 6, 6, 255, 156, 6, 6, 254, 0, 0, 0, 211, 0, 0, 0, 129, 0, 0, 0, 43,
+ 0, 0, 0, 0, 191, 10, 10, 254, 192, 11, 11, 255, 197, 12, 12, 255, 201, 11, 11, 255, 205, 11, 11, 255, 211, 11, 11, 255, 214, 11, 11, 255, 218, 12, 12, 255, 218, 11, 11, 255, 216, 8, 8, 255, 214, 5, 5, 255, 211, 3, 3, 255, 210, 1, 1, 255, 209, 1, 0, 255, 209, 0, 0, 255, 209, 1, 0, 255, 205, 37, 36, 255, 207, 196, 196, 255, 244, 244, 244, 255, 253, 253, 253, 255, 253, 253, 253, 255, 254, 254, 254, 255, 254, 254, 254, 255, 253, 253, 253, 255, 253, 253, 253, 255, 246, 246, 246, 255, 216, 141, 141, 255, 203, 1, 0, 255, 203, 0, 0, 255, 203, 1, 0, 255, 202, 1, 0, 255, 200, 1, 1, 255, 201, 2, 2, 255, 201, 4, 4, 255, 201, 5, 5, 255, 200, 5, 5, 255, 197, 5, 5, 255, 193, 5, 5, 255, 188, 4, 4, 255, 181, 4, 4, 255, 173, 4, 4, 255, 166, 5, 5, 255, 159, 5, 5, 255, 157, 5, 5, 255, 0, 0, 0, 216, 0, 0, 0, 134, 0, 0, 0, 46,
+ 0, 0, 0, 0, 189, 9, 9, 243, 189, 10, 10, 255, 191, 10, 10, 255, 197, 9, 9, 255, 201, 9, 9, 255, 205, 9, 9, 255, 210, 9, 9, 255, 213, 10, 10, 255, 213, 9, 9, 255, 213, 7, 7, 255, 211, 5, 5, 255, 209, 3, 3, 255, 207, 1, 1, 255, 206, 0, 0, 255, 206, 0, 0, 255, 206, 1, 0, 255, 194, 67, 67, 255, 198, 198, 198, 255, 243, 243, 243, 255, 253, 253, 253, 255, 253, 253, 253, 255, 254, 254, 254, 255, 254, 254, 254, 255, 253, 253, 253, 255, 253, 253, 253, 255, 245, 245, 245, 255, 212, 176, 176, 255, 201, 12, 12, 255, 201, 0, 0, 255, 200, 0, 0, 255, 199, 0, 0, 255, 198, 1, 1, 255, 199, 2, 2, 255, 200, 3, 3, 255, 199, 4, 4, 255, 197, 5, 5, 255, 194, 4, 4, 255, 189, 4, 4, 255, 184, 3, 3, 255, 177, 3, 3, 255, 170, 3, 3, 255, 162, 4, 4, 255, 155, 5, 5, 255, 150, 5, 5, 255, 0, 0, 0, 219, 0, 0, 0, 137, 0, 0, 0, 47,
+ 0, 0, 0, 0, 187, 7, 7, 223, 184, 9, 9, 255, 186, 8, 8, 255, 191, 8, 8, 255, 196, 7, 7, 255, 201, 7, 7, 255, 204, 7, 7, 255, 208, 8, 8, 255, 209, 8, 8, 255, 209, 7, 7, 255, 208, 5, 5, 255, 207, 3, 3, 255, 205, 1, 1, 255, 203, 0, 0, 255, 205, 0, 0, 255, 179, 54, 54, 255, 169, 169, 169, 255, 214, 214, 214, 255, 248, 248, 248, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 249, 249, 249, 255, 223, 223, 223, 255, 191, 156, 156, 255, 196, 11, 10, 255, 198, 1, 0, 255, 196, 0, 0, 255, 196, 1, 1, 255, 197, 2, 2, 255, 195, 3, 3, 255, 195, 4, 4, 255, 193, 4, 4, 255, 190, 3, 3, 255, 185, 3, 3, 255, 180, 2, 2, 255, 173, 2, 2, 255, 166, 3, 3, 255, 158, 3, 3, 255, 153, 4, 4, 255, 139, 3, 3, 254, 0, 0, 0, 220, 0, 0, 0, 138, 0, 0, 0, 47,
+ 0, 0, 0, 0, 187, 5, 5, 194, 181, 8, 8, 255, 183, 7, 7, 255, 186, 6, 6, 255, 193, 6, 6, 255, 196, 6, 6, 255, 200, 6, 6, 255, 203, 6, 6, 255, 205, 6, 6, 255, 206, 6, 6, 255, 205, 4, 4, 255, 204, 3, 3, 255, 203, 1, 1, 255, 202, 0, 0, 255, 167, 43, 43, 255, 149, 149, 149, 255, 178, 178, 178, 255, 238, 238, 238, 255, 252, 252, 252, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 252, 252, 252, 255, 240, 240, 240, 255, 191, 191, 191, 255, 173, 139, 138, 255, 190, 9, 9, 255, 194, 0, 0, 255, 193, 1, 1, 255, 194, 2, 2, 255, 193, 3, 3, 255, 192, 3, 3, 255, 189, 3, 3, 255, 185, 3, 3, 255, 180, 2, 2, 255, 176, 2, 2, 255, 169, 2, 2, 255, 162, 2, 2, 255, 154, 3, 3, 255, 149, 4, 4, 255, 122, 2, 2, 253, 0, 0, 0, 219, 0, 0, 0, 137, 0, 0, 0, 47,
+ 0, 0, 0, 0, 189, 4, 4, 158, 177, 7, 7, 255, 179, 6, 6, 255, 182, 6, 6, 255, 187, 5, 5, 255, 191, 4, 4, 255, 195, 5, 5, 255, 198, 5, 5, 255, 201, 5, 5, 255, 203, 5, 5, 255, 202, 4, 4, 255, 202, 3, 3, 255, 201, 2, 2, 255, 163, 41, 41, 255, 134, 134, 134, 255, 169, 169, 169, 255, 230, 230, 230, 255, 251, 251, 251, 255, 253, 253, 253, 255, 253, 253, 253, 255, 252, 252, 252, 255, 254, 254, 254, 255, 253, 253, 253, 255, 251, 251, 251, 255, 252, 252, 252, 255, 253, 253, 253, 255, 251, 251, 251, 255, 232, 232, 232, 255, 183, 183, 183, 255, 161, 127, 127, 255, 187, 8, 8, 255, 191, 1, 1, 255, 191, 2, 2, 255, 190, 3, 3, 255, 188, 3, 3, 255, 185, 2, 2, 255, 181, 2, 2, 255, 177, 2, 2, 255, 172, 1, 1, 255, 165, 2, 2, 255, 157, 2, 2, 255, 150, 3, 3, 255, 146, 3, 3, 255, 103, 1, 1, 251, 0, 0, 0, 216, 0, 0, 0, 134, 0, 0, 0, 46,
+ 0, 0, 0, 0, 191, 3, 2, 115, 174, 6, 6, 255, 174, 6, 6, 255, 178, 5, 5, 255, 182, 4, 4, 255, 187, 4, 4, 255, 191, 4, 4, 255, 193, 4, 4, 255, 197, 4, 4, 255, 199, 4, 4, 255, 199, 4, 4, 255, 198, 3, 3, 255, 161, 39, 39, 255, 124, 124, 124, 255, 165, 165, 165, 255, 226, 226, 226, 255, 251, 251, 251, 255, 254, 254, 254, 255, 252, 252, 252, 255, 254, 254, 254, 255, 255, 255, 255, 255, 237, 178, 178, 255, 252, 242, 242, 255, 255, 255, 255, 255, 247, 247, 247, 255, 252, 252, 252, 255, 254, 254, 254, 255, 251, 251, 251, 255, 230, 230, 230, 255, 178, 178, 178, 255, 153, 120, 120, 255, 185, 9, 9, 255, 188, 2, 2, 255, 186, 2, 2, 255, 184, 2, 2, 255, 182, 2, 2, 255, 177, 1, 1, 255, 172, 1, 1, 255, 166, 1, 1, 255, 159, 1, 1, 255, 152, 2, 2, 255, 145, 2, 2, 255, 144, 3, 3, 255, 77, 1, 0, 248, 0, 0, 0, 211, 0, 0, 0, 129, 0, 0, 0, 43,
+ 0, 0, 0, 0, 194, 1, 1, 66, 170, 5, 5, 255, 170, 5, 5, 255, 172, 4, 4, 255, 177, 3, 3, 255, 182, 3, 3, 255, 185, 3, 3, 255, 189, 3, 3, 255, 193, 3, 3, 255, 195, 4, 4, 255, 195, 3, 3, 255, 160, 40, 40, 255, 119, 119, 119, 255, 162, 162, 162, 255, 226, 226, 226, 255, 250, 250, 250, 255, 254, 254, 254, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 161, 161, 255, 191, 0, 0, 255, 203, 49, 48, 255, 249, 239, 239, 255, 233, 233, 233, 255, 242, 242, 242, 255, 251, 251, 251, 255, 254, 254, 254, 255, 250, 250, 250, 255, 229, 229, 229, 255, 176, 176, 176, 255, 148, 115, 115, 255, 181, 10, 10, 255, 183, 2, 2, 255, 180, 2, 2, 255, 176, 1, 1, 255, 172, 1, 1, 255, 168, 1, 1, 255, 162, 1, 1, 255, 156, 1, 1, 255, 148, 2, 2, 255, 142, 2, 2, 255, 141, 3, 3, 255, 47, 1, 0, 243, 0, 0, 0, 202, 0, 0, 0, 120, 0, 0, 0, 39,
+ 0, 0, 0, 0, 197, 1, 0, 12, 170, 4, 4, 211, 166, 5, 5, 255, 169, 4, 4, 255, 173, 3, 3, 255, 176, 2, 2, 255, 180, 2, 2, 255, 184, 2, 2, 255, 187, 2, 2, 255, 190, 3, 3, 255, 158, 41, 41, 255, 119, 119, 119, 255, 162, 162, 162, 255, 226, 226, 226, 255, 250, 250, 250, 255, 254, 254, 254, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 161, 161, 255, 189, 0, 0, 255, 189, 0, 0, 255, 188, 0, 0, 255, 197, 45, 45, 255, 223, 214, 214, 255, 224, 224, 224, 255, 241, 241, 241, 255, 251, 251, 251, 255, 254, 254, 254, 255, 250, 250, 250, 255, 229, 229, 229, 255, 176, 176, 176, 255, 148, 116, 116, 255, 176, 9, 9, 255, 176, 1, 1, 255, 171, 1, 1, 255, 167, 1, 1, 255, 163, 1, 1, 255, 156, 1, 1, 255, 150, 1, 1, 255, 142, 2, 2, 255, 139, 2, 2, 255, 120, 2, 2, 254, 9, 0, 0, 235, 0, 0, 0, 188, 0, 0, 0, 105, 0, 0, 0, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 170, 2, 2, 146, 165, 4, 4, 255, 164, 4, 4, 255, 168, 3, 3, 255, 171, 2, 2, 255, 175, 2, 2, 255, 178, 2, 2, 255, 183, 2, 2, 255, 159, 45, 45, 255, 126, 126, 126, 255, 165, 165, 165, 255, 226, 226, 226, 255, 250, 250, 250, 255, 253, 253, 253, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 161, 161, 255, 187, 0, 0, 255, 187, 0, 0, 255, 186, 1, 0, 255, 185, 0, 0, 255, 186, 0, 0, 255, 192, 42, 42, 255, 214, 205, 205, 255, 221, 221, 221, 255, 241, 241, 241, 255, 251, 251, 251, 255, 253, 253, 253, 255, 250, 250, 250, 255, 230, 230, 230, 255, 182, 182, 182, 255, 157, 126, 126, 255, 169, 10, 10, 255, 168, 0, 0, 255, 162, 0, 0, 255, 158, 0, 0, 255, 151, 1, 1, 255, 144, 1, 1, 255, 139, 2, 2, 255, 137, 2, 2, 255, 85, 1, 1, 251, 0, 0, 0, 225, 0, 0, 0, 166, 0, 0, 0, 82, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 171, 2, 1, 72, 161, 4, 4, 247, 160, 3, 3, 255, 162, 3, 3, 255, 165, 2, 2, 255, 170, 1, 1, 255, 173, 1, 1, 255, 171, 18, 18, 255, 144, 144, 144, 255, 166, 166, 166, 255, 213, 213, 213, 255, 246, 246, 246, 255, 253, 253, 253, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 161, 161, 255, 184, 0, 0, 255, 183, 0, 0, 255, 183, 0, 0, 255, 182, 0, 0, 255, 182, 0, 0, 255, 181, 0, 0, 255, 181, 0, 0, 255, 186, 39, 39, 255, 208, 198, 198, 255, 219, 219, 219, 255, 241, 241, 241, 255, 251, 251, 251, 255, 253, 253, 253, 255, 247, 247, 247, 255, 225, 225, 225, 255, 194, 194, 194, 255, 175, 114, 114, 255, 161, 0, 0, 255, 158, 0, 0, 255, 152, 0, 0, 255, 146, 1, 1, 255, 139, 1, 1, 255, 135, 2, 2, 255, 131, 2, 2, 255, 44, 1, 0, 245, 0, 0, 0, 213, 0, 0, 0, 140, 0, 0, 0, 58, 0, 0, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 158, 2, 2, 175, 156, 3, 3, 255, 157, 3, 3, 255, 160, 2, 2, 255, 163, 1, 1, 255, 168, 1, 1, 255, 171, 1, 1, 255, 172, 65, 65, 255, 178, 178, 178, 255, 206, 206, 206, 255, 240, 240, 240, 255, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 161, 161, 255, 182, 1, 1, 255, 182, 1, 1, 255, 181, 0, 0, 255, 180, 0, 0, 255, 180, 0, 0, 255, 180, 0, 0, 255, 179, 0, 0, 255, 179, 0, 0, 255, 178, 1, 1, 255, 182, 39, 39, 255, 203, 194, 194, 255, 220, 220, 220, 255, 243, 243, 243, 255, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 198, 198, 255, 164, 14, 14, 255, 157, 0, 0, 255, 151, 0, 0, 255, 145, 0, 0, 255, 140, 1, 1, 255, 135, 1, 1, 255, 132, 2, 2, 255, 95, 1, 1, 252, 0, 0, 0, 235, 0, 0, 0, 193, 0, 0, 0, 112, 0, 0, 0, 37, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 1, 1, 89, 154, 3, 3, 245, 154, 3, 3, 255, 155, 2, 2, 255, 158, 1, 1, 255, 161, 1, 1, 255, 165, 1, 1, 255, 168, 1, 1, 255, 178, 73, 73, 255, 204, 204, 204, 255, 238, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 161, 161, 255, 179, 1, 1, 255, 179, 1, 1, 255, 179, 1, 1, 255, 178, 1, 1, 255, 178, 1, 1, 255, 177, 1, 1, 255, 177, 1, 1, 255, 177, 1, 1, 255, 176, 1, 1, 255, 176, 1, 1, 255, 174, 1, 1, 255, 179, 38, 38, 255, 208, 199, 199, 255, 241, 241, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 210, 210, 255, 164, 16, 16, 255, 154, 0, 0, 255, 150, 0, 0, 255, 145, 0, 0, 255, 139, 0, 0, 255, 133, 1, 1, 255, 130, 1, 1, 255, 125, 2, 2, 255, 48, 0, 0, 247, 0, 0, 0, 221, 0, 0, 0, 162, 0, 0, 0, 80, 0, 0, 0, 20, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 145, 2, 2, 165, 151, 3, 3, 255, 150, 2, 2, 255, 151, 1, 1, 255, 155, 1, 1, 255, 158, 1, 1, 255, 161, 0, 0, 255, 164, 0, 0, 255, 182, 78, 78, 255, 246, 246, 246, 255, 255, 255, 255, 255, 224, 161, 161, 255, 174, 1, 1, 255, 174, 1, 1, 255, 174, 1, 1, 255, 175, 1, 1, 255, 174, 1, 1, 255, 174, 1, 1, 255, 173, 1, 1, 255, 174, 1, 1, 255, 173, 1, 1, 255, 173, 1, 1, 255, 171, 1, 1, 255, 170, 1, 1, 255, 169, 1, 1, 255, 175, 39, 39, 255, 242, 233, 233, 255, 255, 255, 255, 255, 238, 210, 210, 255, 162, 16, 16, 255, 153, 0, 0, 255, 148, 0, 0, 255, 143, 0, 0, 255, 138, 0, 0, 255, 132, 0, 0, 255, 128, 1, 1, 255, 128, 1, 1, 255, 83, 1, 1, 252, 0, 0, 0, 235, 0, 0, 0, 198, 0, 0, 0, 123, 0, 0, 0, 50, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 1, 0, 62, 144, 2, 2, 214, 146, 2, 2, 255, 146, 2, 2, 255, 148, 1, 1, 255, 151, 1, 1, 255, 155, 0, 0, 255, 158, 0, 0, 255, 161, 0, 0, 255, 197, 96, 96, 255, 216, 145, 145, 255, 167, 0, 0, 255, 169, 0, 0, 255, 168, 1, 1, 255, 170, 1, 1, 255, 170, 1, 1, 255, 170, 1, 1, 255, 169, 1, 1, 255, 171, 1, 1, 255, 169, 1, 1, 255, 168, 1, 1, 255, 168, 1, 1, 255, 166, 0, 0, 255, 165, 0, 0, 255, 164, 0, 0, 255, 161, 0, 0, 255, 177, 47, 47, 255, 225, 178, 178, 255, 160, 16, 16, 255, 151, 0, 0, 255, 146, 0, 0, 255, 141, 0, 0, 255, 136, 0, 0, 255, 132, 0, 0, 255, 126, 1, 1, 255, 125, 1, 1, 255, 105, 1, 1, 254, 29, 0, 0, 245, 0, 0, 0, 218, 0, 0, 0, 162, 0, 0, 0, 82, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 124, 1, 1, 117, 141, 2, 2, 241, 143, 2, 2, 255, 143, 1, 1, 255, 145, 1, 1, 255, 148, 0, 0, 255, 152, 0, 0, 255, 155, 0, 0, 255, 156, 0, 0, 255, 159, 0, 0, 255, 161, 0, 0, 255, 162, 0, 0, 255, 163, 0, 0, 255, 165, 0, 0, 255, 165, 0, 0, 255, 164, 0, 0, 255, 165, 0, 0, 255, 164, 0, 0, 255, 164, 0, 0, 255, 164, 0, 0, 255, 162, 0, 0, 255, 161, 0, 0, 255, 159, 0, 0, 255, 158, 0, 0, 255, 156, 0, 0, 255, 153, 0, 0, 255, 150, 0, 0, 255, 148, 0, 0, 255, 144, 0, 0, 255, 140, 0, 0, 255, 134, 0, 0, 255, 129, 0, 0, 255, 125, 0, 0, 255, 123, 1, 1, 255, 116, 1, 1, 255, 52, 0, 0, 249, 0, 0, 0, 230, 0, 0, 0, 188, 0, 0, 0, 115, 0, 0, 0, 47, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 121, 1, 1, 151, 141, 2, 2, 252, 139, 1, 1, 255, 140, 1, 1, 255, 142, 1, 1, 255, 145, 0, 0, 255, 148, 0, 0, 255, 150, 0, 0, 255, 152, 0, 0, 255, 155, 0, 0, 255, 156, 0, 0, 255, 158, 0, 0, 255, 158, 0, 0, 255, 159, 0, 0, 255, 159, 0, 0, 255, 160, 0, 0, 255, 160, 0, 0, 255, 159, 0, 0, 255, 159, 0, 0, 255, 157, 0, 0, 255, 156, 0, 0, 255, 153, 0, 0, 255, 152, 0, 0, 255, 150, 0, 0, 255, 147, 0, 0, 255, 145, 0, 0, 255, 141, 0, 0, 255, 137, 0, 0, 255, 133, 0, 0, 255, 127, 0, 0, 255, 123, 0, 0, 255, 122, 1, 1, 255, 121, 1, 1, 255, 65, 0, 0, 251, 0, 0, 0, 236, 0, 0, 0, 204, 0, 0, 0, 143, 0, 0, 0, 70, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 32, 115, 1, 1, 168, 138, 2, 2, 253, 137, 1, 1, 255, 137, 1, 1, 255, 139, 0, 0, 255, 141, 0, 0, 255, 143, 0, 0, 255, 146, 0, 0, 255, 148, 0, 0, 255, 150, 0, 0, 255, 150, 0, 0, 255, 152, 0, 0, 255, 153, 0, 0, 255, 153, 0, 0, 255, 154, 0, 0, 255, 153, 0, 0, 255, 153, 0, 0, 255, 152, 0, 0, 255, 150, 0, 0, 255, 150, 0, 0, 255, 147, 0, 0, 255, 146, 0, 0, 255, 144, 0, 0, 255, 141, 0, 0, 255, 138, 0, 0, 255, 135, 0, 0, 255, 131, 0, 0, 255, 126, 0, 0, 255, 122, 0, 0, 255, 120, 1, 1, 255, 121, 1, 1, 255, 70, 0, 0, 251, 0, 0, 0, 239, 0, 0, 0, 213, 0, 0, 0, 160, 0, 0, 0, 89, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 42, 107, 1, 1, 170, 133, 1, 1, 248, 134, 1, 1, 255, 134, 1, 1, 255, 135, 0, 0, 255, 137, 0, 0, 255, 139, 0, 0, 255, 142, 0, 0, 255, 144, 0, 0, 255, 144, 0, 0, 255, 145, 0, 0, 255, 146, 0, 0, 255, 146, 0, 0, 255, 147, 0, 0, 255, 147, 0, 0, 255, 147, 0, 0, 255, 145, 0, 0, 255, 145, 0, 0, 255, 143, 0, 0, 255, 142, 0, 0, 255, 139, 0, 0, 255, 136, 0, 0, 255, 133, 0, 0, 255, 130, 0, 0, 255, 126, 0, 0, 255, 123, 0, 0, 255, 120, 0, 0, 255, 119, 1, 1, 255, 114, 1, 1, 255, 66, 0, 0, 251, 0, 0, 0, 239, 0, 0, 0, 216, 0, 0, 0, 168, 0, 0, 0, 99, 0, 0, 0, 42, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 46, 92, 1, 1, 158, 120, 1, 1, 237, 131, 1, 1, 255, 131, 1, 1, 255, 130, 0, 0, 255, 133, 0, 0, 255, 133, 0, 0, 255, 136, 0, 0, 255, 137, 0, 0, 255, 138, 0, 0, 255, 140, 0, 0, 255, 140, 0, 0, 255, 140, 0, 0, 255, 140, 0, 0, 255, 139, 0, 0, 255, 139, 0, 0, 255, 138, 0, 0, 255, 135, 0, 0, 255, 134, 0, 0, 255, 132, 0, 0, 255, 129, 0, 0, 255, 127, 0, 0, 255, 124, 0, 0, 255, 120, 0, 0, 255, 119, 0, 0, 255, 119, 1, 1, 255, 102, 1, 1, 254, 54, 0, 0, 249, 0, 0, 0, 237, 0, 0, 0, 214, 0, 0, 0, 169, 0, 0, 0, 102, 0, 0, 0, 46, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 46, 64, 0, 0, 133, 102, 1, 1, 219, 129, 1, 1, 255, 128, 1, 1, 255, 127, 0, 0, 255, 128, 0, 0, 255, 129, 0, 0, 255, 131, 0, 0, 255, 131, 0, 0, 255, 132, 0, 0, 255, 132, 0, 0, 255, 132, 0, 0, 255, 133, 0, 0, 255, 133, 0, 0, 255, 131, 0, 0, 255, 130, 0, 0, 255, 128, 0, 0, 255, 127, 0, 0, 255, 125, 0, 0, 255, 122, 0, 0, 255, 120, 0, 0, 255, 118, 0, 0, 255, 117, 0, 0, 255, 118, 1, 1, 255, 81, 1, 1, 253, 33, 0, 0, 246, 0, 0, 0, 231, 0, 0, 0, 206, 0, 0, 0, 163, 0, 0, 0, 100, 0, 0, 0, 46, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 43, 0, 0, 0, 91, 73, 0, 0, 185, 104, 1, 1, 235, 127, 1, 1, 255, 125, 1, 1, 255, 125, 0, 0, 255, 125, 0, 0, 255, 125, 0, 0, 255, 125, 0, 0, 255, 125, 0, 0, 255, 125, 0, 0, 255, 125, 0, 0, 255, 124, 0, 0, 255, 124, 0, 0, 255, 122, 0, 0, 255, 121, 0, 0, 255, 121, 0, 0, 255, 119, 0, 0, 255, 117, 0, 0, 255, 117, 0, 0, 255, 118, 0, 0, 255, 91, 1, 1, 253, 52, 0, 0, 248, 0, 0, 0, 237, 0, 0, 0, 221, 0, 0, 0, 192, 0, 0, 0, 147, 0, 0, 0, 91, 0, 0, 0, 43, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 74, 7, 0, 0, 123, 63, 0, 0, 195, 92, 1, 1, 234, 113, 1, 1, 251, 122, 1, 1, 255, 121, 0, 0, 255, 121, 0, 0, 255, 120, 0, 0, 255, 119, 0, 0, 255, 119, 0, 0, 255, 119, 0, 0, 255, 119, 0, 0, 255, 117, 0, 0, 255, 118, 0, 0, 255, 117, 0, 0, 255, 116, 0, 0, 255, 107, 0, 0, 254, 81, 1, 1, 252, 47, 0, 0, 248, 4, 0, 0, 237, 0, 0, 0, 224, 0, 0, 0, 202, 0, 0, 0, 167, 0, 0, 0, 120, 0, 0, 0, 74, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 19, 0, 0, 0, 50, 0, 0, 0, 87, 0, 0, 0, 130, 25, 0, 0, 179, 56, 0, 0, 217, 77, 1, 1, 237, 93, 1, 1, 246, 105, 1, 1, 251, 112, 0, 0, 254, 117, 0, 0, 255, 117, 0, 0, 255, 111, 0, 0, 254, 102, 0, 0, 253, 89, 1, 1, 252, 71, 1, 1, 249, 48, 0, 0, 245, 18, 0, 0, 238, 0, 0, 0, 228, 0, 0, 0, 217, 0, 0, 0, 198, 0, 0, 0, 169, 0, 0, 0, 130, 0, 0, 0, 87, 0, 0, 0, 50, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 25, 0, 0, 0, 55, 0, 0, 0, 86, 0, 0, 0, 119, 0, 0, 0, 148, 0, 0, 0, 174, 0, 0, 0, 193, 0, 0, 0, 205, 0, 0, 0, 213, 0, 0, 0, 218, 0, 0, 0, 219, 0, 0, 0, 219, 0, 0, 0, 218, 0, 0, 0, 213, 0, 0, 0, 205, 0, 0, 0, 193, 0, 0, 0, 174, 0, 0, 0, 148, 0, 0, 0, 119, 0, 0, 0, 86, 0, 0, 0, 55, 0, 0, 0, 25, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 23, 0, 0, 0, 43, 0, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 110, 0, 0, 0, 124, 0, 0, 0, 132, 0, 0, 0, 136, 0, 0, 0, 138, 0, 0, 0, 138, 0, 0, 0, 136, 0, 0, 0, 132, 0, 0, 0, 124, 0, 0, 0, 110, 0, 0, 0, 90, 0, 0, 0, 65, 0, 0, 0, 43, 0, 0, 0, 23, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 12, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 41, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 46, 0, 0, 0, 44, 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_DeviceCellPhone(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 31, 31, 31, 65, 12, 12, 24, 68, 37, 37, 74, 22, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 239, 32, 32, 32, 255, 13, 13, 26, 255, 55, 55, 111, 242, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 115, 115, 64, 96, 96, 96, 255, 32, 32, 32, 255, 38, 38, 48, 255, 81, 81, 124, 255, 16, 16, 32, 154, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 132, 132, 68, 134, 134, 134, 255, 115, 115, 115, 255, 83, 83, 89, 255, 105, 105, 134, 255, 38, 38, 51, 191, 0, 0, 0, 42, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 132, 132, 68, 134, 134, 134, 255, 123, 123, 123, 255, 118, 118, 121, 255, 129, 129, 143, 255, 44, 44, 50, 194, 0, 0, 0, 57, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 96, 68, 77, 77, 77, 255, 32, 32, 32, 255, 13, 13, 26, 255, 58, 58, 115, 255, 40, 40, 80, 204, 0, 0, 0, 63, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 96, 68, 77, 77, 77, 255, 32, 32, 32, 255, 13, 13, 26, 255, 58, 58, 115, 255, 53, 53, 106, 216, 0, 0, 0, 78, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 96, 68, 77, 77, 77, 255, 32, 32, 32, 255, 13, 13, 26, 255, 58, 58, 115, 255, 53, 53, 105, 217, 0, 0, 0, 93, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 76, 76, 76, 194, 86, 86, 86, 255, 32, 32, 32, 255, 13, 13, 26, 255, 56, 56, 99, 255, 62, 62, 96, 245, 43, 43, 43, 208, 46, 46, 46, 142, 49, 49, 49, 134, 49, 49, 49, 134, 49, 49, 49, 134, 45, 45, 45, 73, 48, 48, 48, 68, 46, 46, 46, 53, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 85, 85, 239, 141, 141, 141, 255, 115, 115, 115, 255, 90, 90, 90, 255, 64, 64, 64, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 55, 55, 55, 255, 70, 70, 70, 255, 71, 71, 71, 255, 72, 72, 72, 255, 62, 62, 62, 255, 50, 50, 50, 242, 43, 43, 43, 113, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 64, 85, 85, 85, 255, 116, 116, 116, 255, 109, 109, 109, 255, 102, 102, 102, 255, 85, 85, 85, 255, 70, 70, 70, 255, 93, 93, 93, 255, 103, 103, 103, 255, 115, 115, 115, 255, 121, 121, 121, 255, 124, 124, 124, 255, 129, 129, 129, 255, 135, 135, 135, 255, 139, 139, 139, 255, 144, 144, 144, 255, 142, 142, 142, 255, 47, 47, 47, 241, 0, 0, 0, 79, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 136, 136, 136, 255, 220, 220, 220, 255, 218, 218, 218, 255, 217, 217, 217, 255, 215, 215, 215, 255, 93, 93, 93, 255, 110, 110, 110, 255, 115, 115, 115, 255, 121, 121, 121, 255, 124, 124, 124, 255, 129, 129, 129, 255, 135, 135, 135, 255, 139, 139, 139, 255, 144, 144, 144, 255, 148, 148, 148, 255, 154, 154, 154, 255, 58, 58, 58, 255, 0, 0, 0, 140, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 146, 146, 146, 255, 187, 187, 187, 255, 82, 82, 82, 255, 215, 215, 215, 255, 173, 173, 173, 255, 96, 96, 96, 255, 115, 115, 115, 255, 121, 121, 121, 255, 124, 124, 124, 255, 129, 129, 129, 255, 135, 135, 135, 255, 139, 139, 139, 255, 144, 144, 144, 255, 148, 148, 148, 255, 154, 154, 154, 255, 159, 159, 159, 255, 79, 79, 79, 255, 0, 0, 0, 164, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 176, 176, 176, 255, 196, 196, 196, 255, 102, 102, 102, 255, 213, 213, 213, 255, 171, 171, 171, 255, 99, 99, 99, 255, 121, 121, 121, 255, 125, 125, 125, 255, 129, 129, 129, 255, 135, 135, 135, 255, 139, 139, 139, 255, 144, 144, 144, 255, 148, 148, 148, 255, 154, 154, 154, 255, 159, 159, 159, 255, 163, 163, 163, 255, 80, 80, 80, 255, 0, 0, 0, 167, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 175, 175, 175, 255, 215, 215, 215, 255, 213, 213, 213, 255, 211, 211, 211, 255, 170, 170, 170, 255, 121, 121, 121, 255, 126, 126, 126, 255, 115, 115, 115, 255, 100, 100, 100, 255, 100, 100, 100, 255, 133, 133, 133, 255, 141, 141, 141, 255, 99, 99, 99, 255, 97, 97, 97, 255, 84, 84, 84, 255, 168, 168, 168, 255, 81, 81, 81, 255, 0, 0, 0, 167, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 174, 174, 174, 255, 213, 213, 213, 255, 211, 211, 211, 255, 209, 209, 209, 255, 169, 169, 169, 255, 126, 126, 126, 255, 143, 143, 143, 255, 114, 114, 114, 255, 89, 89, 89, 255, 65, 65, 65, 255, 130, 130, 130, 255, 120, 120, 120, 255, 81, 81, 81, 255, 99, 99, 99, 255, 96, 96, 96, 255, 174, 174, 174, 255, 82, 82, 82, 255, 17, 17, 17, 189, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 172, 172, 172, 255, 211, 211, 211, 255, 209, 209, 209, 255, 208, 208, 208, 255, 167, 167, 167, 255, 129, 129, 129, 255, 125, 125, 125, 255, 103, 121, 102, 255, 106, 142, 104, 255, 119, 153, 115, 255, 96, 155, 88, 255, 102, 167, 90, 255, 110, 172, 96, 255, 117, 177, 100, 255, 124, 181, 105, 255, 130, 130, 130, 255, 92, 92, 92, 255, 17, 17, 17, 194, 0, 0, 0, 54, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 171, 171, 171, 255, 209, 209, 209, 255, 208, 208, 208, 255, 206, 206, 206, 255, 166, 166, 166, 255, 135, 135, 135, 255, 60, 163, 59, 255, 100, 207, 88, 255, 123, 226, 97, 255, 123, 233, 82, 255, 122, 232, 79, 255, 131, 236, 83, 255, 95, 207, 54, 255, 74, 190, 37, 255, 84, 196, 43, 255, 93, 121, 83, 255, 119, 119, 119, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 169, 169, 169, 255, 208, 208, 208, 255, 206, 206, 206, 255, 204, 204, 204, 255, 165, 165, 165, 255, 141, 141, 141, 255, 89, 179, 81, 255, 174, 255, 144, 255, 155, 255, 107, 255, 150, 252, 99, 255, 143, 245, 92, 255, 133, 236, 83, 255, 74, 190, 37, 255, 84, 196, 43, 255, 93, 200, 47, 255, 98, 124, 85, 255, 121, 121, 121, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 168, 168, 168, 255, 206, 206, 206, 255, 204, 204, 204, 255, 202, 202, 202, 255, 164, 164, 164, 255, 144, 144, 144, 255, 90, 183, 75, 255, 155, 255, 107, 255, 150, 252, 99, 255, 143, 245, 92, 255, 137, 239, 86, 255, 104, 213, 60, 255, 84, 196, 43, 255, 93, 200, 47, 255, 102, 204, 51, 255, 82, 107, 69, 255, 123, 123, 123, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 167, 167, 167, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 162, 162, 162, 255, 149, 149, 149, 255, 94, 187, 73, 255, 150, 252, 99, 255, 143, 245, 92, 255, 137, 239, 86, 255, 125, 228, 75, 255, 84, 196, 43, 255, 95, 201, 48, 255, 102, 204, 51, 255, 104, 206, 53, 255, 66, 91, 53, 255, 126, 126, 126, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 165, 165, 165, 255, 202, 202, 202, 255, 200, 200, 200, 255, 198, 198, 198, 255, 161, 161, 161, 255, 155, 155, 155, 255, 98, 189, 74, 255, 143, 245, 92, 255, 137, 239, 86, 255, 131, 233, 80, 255, 100, 207, 54, 255, 96, 201, 48, 255, 102, 204, 51, 255, 105, 207, 54, 255, 112, 214, 61, 255, 68, 93, 55, 255, 129, 129, 129, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 44, 37, 164, 164, 164, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 160, 160, 160, 255, 160, 160, 160, 255, 103, 184, 78, 255, 137, 239, 86, 255, 131, 233, 80, 255, 117, 221, 68, 255, 96, 201, 48, 255, 102, 204, 51, 255, 106, 208, 55, 255, 113, 215, 62, 255, 120, 222, 69, 255, 69, 95, 57, 255, 131, 131, 131, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 144, 144, 144, 255, 198, 198, 198, 255, 197, 197, 197, 255, 195, 195, 195, 255, 158, 158, 158, 255, 164, 164, 164, 255, 105, 161, 84, 255, 131, 233, 80, 255, 125, 227, 74, 255, 107, 210, 57, 255, 102, 204, 51, 255, 106, 208, 55, 255, 113, 215, 62, 255, 120, 222, 69, 255, 129, 231, 78, 255, 72, 97, 59, 255, 133, 133, 133, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, 125, 255, 197, 197, 197, 255, 195, 195, 195, 255, 193, 193, 193, 255, 156, 156, 156, 255, 169, 169, 169, 255, 107, 161, 85, 255, 125, 227, 74, 255, 119, 221, 68, 255, 105, 207, 54, 255, 106, 208, 55, 255, 113, 215, 62, 255, 120, 222, 69, 255, 129, 231, 78, 255, 135, 237, 84, 255, 73, 99, 61, 255, 136, 136, 136, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 124, 124, 255, 195, 195, 195, 255, 193, 193, 193, 255, 191, 191, 191, 255, 155, 155, 155, 255, 151, 151, 151, 255, 109, 162, 85, 255, 118, 220, 67, 255, 113, 215, 62, 255, 107, 209, 56, 255, 113, 215, 62, 255, 120, 222, 69, 255, 129, 231, 78, 255, 135, 237, 84, 255, 143, 245, 92, 255, 75, 101, 63, 255, 136, 136, 136, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 123, 123, 255, 193, 193, 193, 255, 191, 191, 191, 255, 190, 190, 190, 255, 154, 154, 154, 255, 147, 147, 147, 255, 111, 163, 86, 255, 112, 214, 61, 255, 105, 207, 54, 255, 109, 211, 58, 255, 120, 222, 69, 255, 129, 231, 78, 255, 136, 238, 85, 255, 137, 232, 89, 255, 126, 202, 87, 255, 70, 89, 61, 255, 136, 136, 137, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 255, 191, 191, 191, 255, 190, 190, 190, 255, 188, 188, 188, 255, 152, 152, 152, 255, 151, 151, 151, 255, 138, 189, 112, 255, 101, 190, 56, 255, 95, 171, 57, 255, 86, 137, 60, 255, 78, 117, 59, 255, 72, 97, 59, 255, 67, 74, 64, 255, 94, 94, 94, 255, 125, 125, 126, 255, 135, 135, 138, 255, 135, 135, 138, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 121, 121, 255, 189, 189, 189, 255, 188, 188, 188, 255, 186, 186, 186, 255, 151, 151, 151, 255, 154, 154, 154, 255, 140, 140, 140, 255, 89, 89, 89, 255, 127, 127, 127, 255, 150, 150, 150, 255, 132, 132, 132, 255, 143, 143, 143, 255, 189, 189, 189, 255, 123, 123, 123, 255, 93, 93, 94, 255, 187, 187, 194, 255, 134, 134, 139, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 120, 120, 255, 188, 188, 188, 255, 186, 186, 186, 255, 184, 184, 184, 255, 150, 150, 150, 255, 159, 159, 159, 255, 152, 152, 152, 255, 79, 79, 79, 255, 51, 51, 51, 255, 130, 130, 130, 255, 119, 119, 119, 255, 51, 51, 51, 255, 121, 121, 122, 255, 96, 96, 96, 255, 51, 51, 51, 255, 176, 176, 184, 255, 134, 134, 141, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 119, 255, 186, 186, 186, 255, 184, 184, 184, 255, 182, 182, 182, 255, 149, 149, 149, 255, 162, 162, 162, 255, 147, 147, 147, 255, 157, 157, 157, 255, 51, 51, 51, 255, 92, 92, 92, 255, 60, 60, 60, 255, 51, 51, 51, 255, 104, 104, 105, 255, 51, 51, 51, 255, 61, 61, 62, 255, 186, 186, 197, 255, 133, 133, 141, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 119, 255, 184, 184, 184, 255, 182, 182, 182, 255, 181, 181, 181, 255, 147, 147, 147, 255, 165, 165, 165, 255, 129, 129, 129, 255, 51, 51, 51, 255, 51, 51, 51, 255, 157, 157, 157, 255, 93, 93, 94, 255, 125, 125, 127, 255, 197, 197, 205, 255, 114, 114, 117, 255, 134, 134, 141, 255, 195, 195, 209, 255, 133, 133, 142, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 117, 117, 255, 182, 182, 182, 255, 181, 181, 181, 255, 179, 179, 179, 255, 146, 146, 146, 255, 169, 169, 169, 255, 182, 182, 182, 255, 113, 113, 113, 255, 125, 125, 125, 255, 168, 168, 168, 255, 98, 98, 98, 255, 51, 51, 51, 255, 141, 141, 146, 255, 96, 96, 96, 255, 51, 51, 51, 255, 143, 143, 154, 255, 132, 132, 143, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 120, 120, 241, 181, 181, 181, 255, 179, 179, 179, 255, 177, 177, 177, 255, 145, 145, 145, 255, 173, 173, 173, 255, 144, 144, 144, 255, 104, 104, 104, 255, 51, 51, 51, 255, 102, 102, 103, 255, 102, 102, 102, 255, 51, 51, 51, 255, 134, 134, 141, 255, 64, 64, 64, 255, 51, 51, 51, 255, 153, 153, 167, 255, 132, 132, 145, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 91, 197, 179, 179, 179, 255, 177, 177, 177, 255, 175, 175, 175, 255, 143, 143, 143, 255, 177, 177, 177, 255, 147, 147, 147, 255, 104, 104, 104, 255, 51, 51, 51, 255, 103, 103, 106, 255, 51, 51, 51, 255, 61, 61, 62, 255, 164, 164, 175, 255, 102, 102, 108, 255, 71, 71, 74, 255, 193, 193, 215, 255, 131, 131, 145, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 196, 177, 177, 177, 255, 175, 175, 175, 255, 173, 173, 173, 255, 142, 142, 142, 255, 179, 179, 179, 255, 157, 157, 158, 255, 83, 83, 84, 255, 82, 82, 84, 255, 165, 165, 173, 255, 72, 72, 73, 255, 92, 92, 96, 255, 156, 156, 167, 255, 102, 102, 102, 255, 51, 51, 51, 255, 141, 141, 158, 255, 131, 131, 146, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 196, 175, 175, 175, 255, 173, 173, 173, 255, 171, 171, 171, 255, 140, 140, 140, 255, 178, 178, 180, 255, 157, 157, 159, 255, 72, 72, 72, 255, 51, 51, 51, 255, 89, 89, 90, 255, 128, 128, 128, 255, 51, 51, 51, 255, 132, 132, 144, 255, 64, 64, 64, 255, 51, 51, 51, 255, 141, 141, 159, 255, 131, 131, 148, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 89, 196, 173, 173, 173, 255, 171, 171, 171, 255, 170, 170, 170, 255, 139, 139, 139, 255, 177, 177, 181, 255, 156, 156, 160, 255, 136, 136, 136, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 152, 152, 168, 255, 101, 101, 110, 255, 141, 141, 159, 255, 200, 200, 233, 255, 130, 130, 149, 255, 13, 13, 13, 188, 0, 0, 0, 58, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 89, 196, 171, 171, 171, 255, 170, 170, 170, 255, 168, 168, 168, 255, 159, 159, 159, 255, 155, 155, 161, 255, 134, 134, 140, 255, 51, 51, 51, 255, 71, 71, 74, 255, 173, 173, 189, 255, 122, 122, 132, 255, 112, 112, 121, 255, 168, 168, 187, 255, 93, 93, 95, 255, 51, 51, 51, 255, 139, 139, 161, 255, 129, 129, 149, 255, 0, 0, 0, 172, 0, 0, 0, 48, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 69, 196, 170, 170, 170, 255, 168, 168, 168, 255, 166, 166, 166, 255, 164, 164, 164, 255, 134, 134, 140, 255, 186, 186, 196, 255, 102, 102, 107, 255, 92, 92, 97, 255, 151, 151, 164, 255, 128, 128, 128, 255, 51, 51, 51, 255, 91, 91, 99, 255, 70, 70, 70, 255, 51, 51, 51, 255, 129, 129, 150, 255, 110, 110, 125, 255, 0, 0, 0, 167, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 166, 168, 168, 168, 255, 166, 166, 166, 255, 164, 164, 164, 255, 163, 163, 163, 255, 133, 133, 141, 255, 144, 144, 152, 255, 157, 157, 157, 255, 51, 51, 51, 255, 91, 91, 98, 255, 51, 51, 51, 255, 51, 51, 51, 255, 91, 91, 99, 255, 51, 51, 51, 255, 80, 80, 88, 255, 177, 177, 213, 255, 90, 90, 101, 255, 0, 0, 0, 167, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 135, 166, 166, 166, 255, 164, 164, 164, 255, 163, 163, 163, 255, 161, 161, 161, 255, 133, 133, 142, 255, 133, 133, 142, 255, 51, 51, 51, 255, 51, 51, 51, 255, 121, 121, 134, 255, 91, 91, 99, 255, 140, 140, 160, 255, 198, 198, 235, 255, 207, 207, 249, 255, 206, 206, 250, 255, 205, 205, 252, 255, 89, 89, 102, 255, 0, 0, 0, 167, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 164, 164, 164, 255, 163, 163, 163, 255, 161, 161, 161, 255, 159, 159, 159, 255, 133, 133, 143, 255, 173, 173, 190, 255, 132, 132, 145, 255, 181, 181, 205, 255, 210, 210, 243, 255, 210, 210, 245, 255, 208, 208, 247, 255, 207, 207, 249, 255, 206, 206, 250, 255, 205, 205, 252, 255, 204, 204, 254, 255, 86, 86, 98, 247, 0, 0, 0, 164, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 134, 134, 134, 255, 161, 161, 161, 255, 159, 159, 159, 255, 157, 157, 157, 255, 132, 132, 144, 255, 213, 213, 239, 255, 211, 211, 241, 255, 210, 210, 243, 255, 210, 210, 245, 255, 208, 208, 247, 255, 207, 207, 249, 255, 206, 206, 250, 255, 205, 205, 252, 255, 156, 156, 191, 255, 108, 108, 128, 255, 26, 26, 26, 217, 0, 0, 0, 142, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46, 88, 99, 99, 99, 255, 152, 152, 152, 255, 157, 157, 157, 255, 155, 155, 155, 255, 101, 101, 110, 255, 211, 211, 241, 255, 210, 210, 243, 255, 209, 209, 245, 255, 208, 208, 247, 255, 188, 188, 224, 255, 148, 148, 175, 255, 109, 109, 126, 255, 54, 54, 56, 243, 26, 26, 26, 217, 9, 9, 9, 188, 0, 0, 0, 157, 0, 0, 0, 87, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 36, 36, 36, 137, 45, 45, 45, 237, 84, 84, 84, 255, 109, 109, 109, 255, 90, 90, 94, 255, 131, 131, 147, 255, 130, 130, 148, 255, 100, 100, 112, 255, 62, 62, 67, 239, 33, 33, 33, 224, 20, 20, 20, 204, 5, 5, 5, 180, 0, 0, 0, 164, 0, 0, 0, 136, 0, 0, 0, 88, 0, 0, 0, 46, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 79, 11, 11, 11, 149, 21, 21, 21, 194, 30, 30, 30, 215, 16, 16, 16, 198, 13, 13, 13, 188, 0, 0, 0, 172, 0, 0, 0, 161, 0, 0, 0, 133, 0, 0, 0, 103, 0, 0, 0, 69, 0, 0, 0, 37, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 22, 0, 0, 0, 46, 0, 0, 0, 76, 0, 0, 0, 97, 0, 0, 0, 70, 0, 0, 0, 52, 0, 0, 0, 28, 0, 0, 0, 18, 0, 0, 0, 13, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_LogoMessageHelp(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 205, 241, 69, 193, 210, 243, 121, 201, 218, 246, 185, 208, 223, 248, 226, 210, 224, 248, 236, 211, 225, 248, 235, 210, 224, 248, 236, 209, 223, 248, 227, 202, 218, 246, 195, 193, 210, 243, 124, 188, 206, 242, 77, 181, 201, 239, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 204, 240, 58, 199, 215, 245, 168, 211, 225, 248, 235, 215, 226, 248, 252, 221, 231, 249, 254, 231, 238, 251, 255, 239, 244, 252, 255, 243, 246, 253, 255, 242, 246, 253, 255, 243, 246, 253, 255, 240, 244, 252, 255, 233, 239, 251, 255, 222, 231, 249, 254, 216, 227, 248, 252, 211, 224, 248, 240, 199, 215, 245, 171, 187, 205, 241, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 205, 239, 93, 208, 223, 248, 226, 214, 226, 248, 253, 228, 236, 250, 255, 242, 246, 253, 255, 251, 252, 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 252, 253, 254, 255, 244, 247, 253, 255, 229, 236, 250, 255, 215, 226, 248, 253, 206, 219, 244, 234, 165, 181, 212, 105, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, 201, 239, 12, 206, 221, 247, 218, 218, 228, 249, 254, 239, 244, 252, 255, 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 255, 255, 241, 245, 253, 255, 218, 228, 249, 254, 204, 218, 243, 233, 136, 149, 176, 75, 0, 0, 0, 13, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 211, 244, 138, 212, 225, 248, 251, 238, 242, 252, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 240, 245, 252, 255, 211, 224, 247, 254, 177, 193, 223, 177, 0, 0, 0, 24, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 218, 246, 199, 224, 232, 250, 254, 250, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 254, 255, 227, 235, 250, 254, 193, 207, 234, 223, 0, 0, 0, 36, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 221, 248, 225, 233, 239, 251, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, 255, 255, 228, 255, 255, 255, 215, 255, 255, 255, 203, 254, 255, 255, 199, 249, 255, 255, 194, 245, 255, 255, 190, 240, 255, 255, 185, 235, 255, 255, 187, 235, 255, 255, 196, 238, 255, 255, 211, 245, 255, 255, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 241, 252, 255, 204, 218, 243, 245, 65, 71, 84, 65, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 220, 247, 223, 239, 243, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 255, 255, 255, 197, 247, 255, 255, 194, 245, 255, 255, 190, 241, 255, 255, 184, 235, 255, 255, 178, 229, 255, 255, 173, 223, 255, 255, 168, 219, 255, 255, 165, 216, 255, 255, 163, 214, 255, 255, 162, 213, 255, 255, 161, 211, 255, 255, 159, 209, 255, 255, 155, 205, 255, 255, 169, 212, 255, 255, 231, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 247, 253, 255, 204, 217, 243, 247, 0, 0, 0, 53, 0, 0, 0, 23, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 217, 247, 205, 235, 240, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 249, 255, 255, 181, 231, 255, 255, 180, 230, 255, 255, 176, 226, 255, 255, 169, 219, 255, 255, 160, 211, 255, 255, 152, 202, 255, 255, 144, 194, 255, 255, 138, 188, 255, 255, 134, 185, 255, 255, 133, 183, 255, 255, 133, 184, 255, 255, 135, 186, 255, 255, 138, 188, 255, 255, 140, 190, 255, 255, 141, 191, 255, 255, 139, 190, 255, 255, 136, 186, 255, 255, 163, 203, 255, 255, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 243, 252, 255, 191, 205, 232, 234, 0, 0, 0, 57, 0, 0, 0, 23, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 211, 244, 144, 225, 233, 250, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 219, 255, 255, 165, 215, 255, 255, 162, 213, 255, 255, 156, 206, 255, 255, 146, 197, 255, 255, 136, 186, 255, 255, 138, 181, 255, 255, 158, 188, 248, 255, 175, 194, 234, 255, 181, 196, 227, 255, 181, 196, 224, 255, 180, 195, 224, 255, 179, 196, 228, 255, 170, 192, 238, 255, 142, 180, 253, 255, 117, 168, 255, 255, 121, 171, 255, 255, 124, 174, 255, 255, 124, 174, 255, 255, 122, 172, 255, 255, 124, 172, 255, 255, 213, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 236, 250, 255, 162, 176, 203, 203, 0, 0, 0, 54, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 200, 235, 52, 212, 224, 248, 253, 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 255, 255, 255, 147, 198, 255, 255, 149, 199, 255, 255, 145, 196, 255, 255, 138, 188, 255, 255, 127, 177, 255, 255, 120, 167, 255, 255, 152, 179, 232, 255, 196, 202, 216, 255, 212, 212, 212, 255, 213, 213, 213, 255, 211, 211, 211, 255, 211, 211, 211, 255, 212, 212, 212, 255, 214, 214, 214, 255, 218, 218, 218, 255, 222, 223, 225, 255, 186, 203, 237, 255, 127, 167, 249, 255, 105, 155, 255, 255, 109, 159, 255, 255, 110, 161, 255, 255, 109, 159, 255, 255, 105, 155, 255, 255, 179, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 255, 255, 213, 225, 248, 254, 114, 125, 146, 151, 0, 0, 0, 47, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, 219, 248, 227, 240, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 255, 255, 255, 134, 184, 255, 255, 134, 185, 255, 255, 131, 181, 255, 255, 123, 174, 255, 255, 112, 162, 255, 255, 107, 154, 246, 255, 158, 177, 213, 255, 206, 206, 206, 255, 237, 237, 237, 255, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 250, 250, 255, 231, 231, 231, 255, 210, 218, 233, 255, 122, 161, 238, 255, 93, 143, 244, 255, 97, 148, 248, 255, 99, 149, 249, 255, 97, 147, 247, 255, 94, 144, 243, 255, 178, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 247, 253, 255, 200, 213, 239, 247, 0, 0, 0, 84, 0, 0, 0, 38, 0, 0, 0, 12, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 186, 204, 238, 99, 219, 229, 249, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 126, 174, 255, 255, 122, 172, 255, 255, 120, 170, 255, 255, 112, 163, 255, 255, 101, 152, 253, 255, 89, 140, 241, 255, 142, 164, 207, 255, 203, 203, 203, 255, 249, 249, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 233, 233, 255, 201, 210, 230, 255, 95, 140, 231, 255, 84, 135, 236, 255, 89, 139, 239, 255, 90, 140, 240, 255, 88, 138, 238, 255, 89, 138, 235, 255, 208, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 232, 249, 255, 135, 147, 171, 190, 0, 0, 0, 69, 0, 0, 0, 27, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 208, 222, 248, 243, 245, 248, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 138, 181, 255, 255, 111, 161, 255, 255, 110, 160, 255, 255, 104, 155, 255, 255, 95, 145, 246, 255, 83, 134, 235, 255, 105, 140, 210, 255, 190, 191, 192, 255, 245, 245, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 219, 228, 247, 255, 196, 210, 238, 255, 207, 217, 237, 255, 242, 244, 246, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 250, 250, 255, 229, 229, 229, 255, 146, 173, 225, 255, 73, 124, 225, 255, 79, 129, 230, 255, 82, 132, 232, 255, 82, 132, 232, 255, 81, 130, 230, 255, 102, 146, 232, 255, 241, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 250, 254, 255, 205, 219, 243, 252, 0, 0, 0, 102, 0, 0, 0, 49, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 187, 205, 241, 77, 215, 227, 248, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 221, 255, 255, 102, 152, 252, 255, 102, 152, 253, 255, 99, 149, 249, 255, 91, 141, 242, 255, 80, 131, 232, 255, 72, 122, 221, 255, 146, 161, 193, 255, 228, 228, 228, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 247, 252, 255, 150, 176, 229, 255, 74, 119, 210, 255, 54, 104, 205, 255, 66, 113, 206, 255, 118, 149, 212, 255, 219, 224, 236, 255, 250, 250, 250, 255, 255, 255, 255, 255, 253, 253, 253, 255, 241, 241, 241, 255, 193, 204, 227, 255, 73, 121, 218, 255, 70, 121, 222, 255, 75, 125, 226, 255, 77, 127, 227, 255, 76, 126, 226, 255, 74, 124, 223, 255, 147, 178, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 217, 228, 248, 255, 116, 127, 147, 185, 0, 0, 0, 77, 0, 0, 0, 29, 0, 0, 0, 7, 0, 0, 0, 1,
+ 0, 0, 0, 0, 202, 217, 246, 216, 237, 242, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 110, 156, 247, 255, 95, 145, 245, 255, 93, 144, 244, 255, 88, 138, 239, 255, 79, 130, 231, 255, 70, 121, 222, 255, 86, 126, 206, 255, 182, 186, 194, 255, 235, 235, 235, 255, 249, 249, 249, 255, 255, 255, 255, 255, 253, 254, 255, 255, 153, 179, 230, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 119, 149, 209, 255, 237, 238, 241, 255, 253, 253, 253, 255, 255, 255, 255, 255, 248, 248, 248, 255, 215, 221, 234, 255, 88, 131, 215, 255, 64, 114, 216, 255, 69, 119, 220, 255, 72, 122, 222, 255, 72, 122, 222, 255, 71, 121, 220, 255, 75, 122, 218, 255, 213, 226, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 244, 252, 255, 189, 202, 228, 244, 0, 0, 0, 105, 0, 0, 0, 50, 0, 0, 0, 15, 0, 0, 0, 3,
+ 181, 201, 239, 12, 209, 222, 248, 250, 249, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 210, 255, 255, 88, 138, 237, 255, 88, 138, 238, 255, 85, 136, 236, 255, 79, 129, 230, 255, 71, 121, 222, 255, 63, 113, 215, 255, 102, 136, 202, 255, 205, 205, 205, 255, 222, 222, 222, 255, 244, 244, 244, 255, 255, 255, 255, 255, 229, 236, 249, 255, 73, 118, 209, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 65, 111, 203, 255, 201, 209, 225, 255, 251, 251, 251, 255, 254, 254, 254, 255, 250, 250, 250, 255, 238, 241, 247, 255, 106, 143, 217, 255, 59, 110, 211, 255, 64, 114, 215, 255, 67, 117, 218, 255, 69, 119, 219, 255, 68, 118, 217, 255, 66, 116, 214, 255, 143, 173, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 252, 254, 255, 208, 221, 246, 254, 39, 43, 52, 144, 0, 0, 0, 73, 0, 0, 0, 27, 0, 0, 0, 6,
+ 187, 205, 241, 98, 215, 227, 249, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 156, 239, 255, 82, 132, 232, 255, 82, 132, 232, 255, 78, 129, 229, 255, 72, 122, 223, 255, 64, 115, 216, 255, 58, 109, 211, 255, 74, 118, 206, 255, 117, 148, 209, 255, 130, 158, 214, 255, 159, 180, 224, 255, 175, 194, 234, 255, 124, 157, 222, 255, 53, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 57, 106, 203, 255, 188, 198, 218, 255, 250, 250, 250, 255, 254, 254, 254, 255, 252, 252, 252, 255, 246, 248, 253, 255, 107, 144, 217, 255, 56, 107, 209, 255, 60, 111, 212, 255, 63, 114, 215, 255, 65, 116, 216, 255, 65, 115, 215, 255, 64, 113, 212, 255, 84, 127, 215, 255, 241, 245, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 216, 227, 248, 255, 107, 118, 137, 193, 0, 0, 0, 96, 0, 0, 0, 41, 0, 0, 0, 11,
+ 193, 210, 243, 155, 226, 234, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 234, 255, 255, 81, 130, 226, 255, 77, 127, 227, 255, 76, 127, 227, 255, 73, 123, 224, 255, 67, 117, 218, 255, 60, 111, 212, 255, 56, 106, 208, 255, 53, 104, 206, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 72, 115, 200, 255, 209, 214, 225, 255, 252, 252, 252, 255, 254, 254, 254, 255, 255, 255, 255, 255, 232, 238, 249, 255, 85, 128, 213, 255, 54, 105, 207, 255, 57, 108, 209, 255, 61, 111, 212, 255, 63, 113, 213, 255, 63, 113, 212, 255, 62, 111, 210, 255, 61, 110, 208, 255, 191, 207, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 236, 250, 255, 148, 161, 185, 222, 0, 0, 0, 115, 0, 0, 0, 55, 0, 0, 0, 17,
+ 200, 215, 245, 208, 235, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 197, 245, 255, 72, 122, 221, 255, 73, 123, 222, 255, 72, 122, 222, 255, 68, 118, 219, 255, 63, 113, 214, 255, 58, 108, 210, 255, 54, 105, 207, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 53, 103, 203, 255, 127, 148, 192, 255, 241, 241, 241, 255, 254, 254, 254, 255, 253, 253, 253, 255, 255, 255, 255, 255, 197, 211, 240, 255, 58, 108, 207, 255, 53, 104, 206, 255, 56, 106, 208, 255, 58, 109, 210, 255, 60, 111, 211, 255, 61, 111, 211, 255, 60, 110, 208, 255, 59, 108, 206, 255, 143, 171, 225, 255, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 243, 252, 255, 185, 197, 224, 243, 0, 0, 0, 129, 0, 0, 0, 70, 0, 0, 0, 24,
+ 204, 218, 246, 231, 241, 245, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 169, 233, 255, 69, 118, 217, 255, 69, 119, 218, 255, 68, 118, 218, 255, 65, 115, 216, 255, 60, 111, 212, 255, 56, 107, 208, 255, 53, 104, 206, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 105, 133, 190, 255, 213, 216, 221, 255, 251, 251, 251, 255, 254, 254, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 121, 155, 222, 255, 51, 102, 204, 255, 52, 103, 205, 255, 54, 105, 207, 255, 57, 107, 209, 255, 59, 109, 210, 255, 59, 109, 209, 255, 59, 108, 207, 255, 57, 106, 204, 255, 112, 146, 216, 255, 251, 251, 251, 255, 252, 252, 252, 255, 255, 255, 255, 255, 245, 248, 253, 255, 200, 213, 238, 251, 0, 0, 0, 140, 0, 0, 0, 84, 0, 0, 0, 32,
+ 208, 221, 247, 246, 246, 249, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 110, 148, 223, 255, 65, 114, 213, 255, 66, 115, 215, 255, 65, 115, 215, 255, 62, 112, 213, 255, 58, 109, 210, 255, 55, 106, 207, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 97, 129, 189, 255, 200, 201, 205, 255, 247, 247, 247, 255, 254, 254, 254, 255, 254, 254, 254, 255, 255, 255, 255, 255, 178, 197, 236, 255, 56, 106, 205, 255, 51, 102, 204, 255, 52, 103, 205, 255, 54, 104, 206, 255, 56, 106, 207, 255, 57, 108, 208, 255, 58, 108, 208, 255, 57, 106, 205, 255, 56, 105, 203, 255, 96, 134, 211, 255, 244, 245, 248, 255, 250, 250, 250, 255, 253, 253, 253, 255, 249, 250, 254, 255, 206, 218, 244, 253, 0, 0, 0, 147, 0, 0, 0, 95, 0, 0, 0, 39,
+ 209, 222, 247, 250, 248, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, 255, 255, 100, 139, 218, 255, 62, 111, 210, 255, 63, 112, 212, 255, 62, 112, 212, 255, 60, 110, 211, 255, 57, 108, 209, 255, 54, 105, 207, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 99, 128, 187, 255, 188, 190, 194, 255, 243, 243, 243, 255, 254, 254, 254, 255, 253, 253, 253, 255, 255, 255, 255, 255, 189, 205, 238, 255, 71, 117, 209, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 205, 255, 53, 104, 206, 255, 55, 105, 207, 255, 56, 106, 207, 255, 56, 106, 206, 255, 56, 105, 204, 255, 54, 103, 201, 255, 92, 132, 209, 255, 238, 240, 244, 255, 249, 249, 249, 255, 252, 252, 252, 255, 251, 252, 254, 255, 208, 221, 246, 254, 0, 0, 0, 153, 0, 0, 0, 105, 0, 0, 0, 45,
+ 208, 221, 247, 250, 248, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 247, 252, 255, 95, 135, 215, 255, 59, 109, 207, 255, 60, 110, 209, 255, 60, 110, 210, 255, 59, 109, 210, 255, 56, 107, 208, 255, 54, 105, 206, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 96, 126, 186, 255, 177, 179, 186, 255, 241, 241, 241, 255, 254, 254, 254, 255, 253, 253, 253, 255, 255, 255, 255, 255, 188, 205, 238, 255, 72, 118, 209, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 204, 255, 53, 104, 205, 255, 54, 105, 206, 255, 55, 105, 206, 255, 55, 105, 205, 255, 54, 104, 202, 255, 53, 102, 200, 255, 90, 129, 207, 255, 234, 237, 243, 255, 247, 247, 247, 255, 250, 250, 250, 255, 250, 251, 253, 255, 208, 221, 246, 255, 0, 0, 0, 157, 0, 0, 0, 112, 0, 0, 0, 48,
+ 208, 221, 247, 249, 248, 250, 254, 255, 255, 255, 255, 255, 253, 253, 253, 255, 250, 250, 251, 255, 98, 136, 213, 255, 57, 106, 204, 255, 58, 108, 206, 255, 58, 108, 208, 255, 58, 108, 209, 255, 56, 106, 208, 255, 54, 104, 206, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 80, 117, 190, 255, 172, 174, 179, 255, 236, 236, 236, 255, 254, 254, 254, 255, 253, 253, 253, 255, 255, 255, 255, 255, 191, 207, 239, 255, 67, 114, 208, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 204, 255, 53, 104, 205, 255, 54, 104, 206, 255, 54, 105, 205, 255, 54, 104, 204, 255, 53, 102, 201, 255, 52, 101, 198, 255, 91, 130, 207, 255, 238, 239, 242, 255, 246, 246, 246, 255, 249, 249, 249, 255, 248, 249, 252, 255, 206, 218, 244, 254, 0, 0, 0, 159, 0, 0, 0, 115, 0, 0, 0, 51,
+ 205, 219, 246, 238, 243, 247, 253, 255, 255, 255, 255, 255, 252, 252, 252, 255, 250, 250, 250, 255, 121, 153, 217, 255, 55, 104, 202, 255, 56, 106, 204, 255, 57, 107, 206, 255, 57, 107, 207, 255, 55, 106, 207, 255, 54, 104, 206, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 53, 103, 203, 255, 129, 146, 180, 255, 215, 215, 215, 255, 251, 251, 251, 255, 254, 254, 254, 255, 255, 255, 255, 255, 195, 210, 240, 255, 71, 117, 209, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 204, 255, 53, 103, 205, 255, 53, 104, 205, 255, 54, 104, 204, 255, 53, 103, 202, 255, 52, 101, 199, 255, 51, 100, 197, 255, 99, 135, 207, 255, 243, 243, 243, 255, 245, 245, 245, 255, 248, 248, 248, 255, 244, 247, 251, 255, 203, 216, 241, 252, 0, 0, 0, 160, 0, 0, 0, 117, 0, 0, 0, 51,
+ 200, 215, 244, 216, 237, 242, 252, 255, 254, 254, 254, 255, 251, 251, 251, 255, 248, 248, 248, 255, 146, 171, 222, 255, 54, 102, 200, 255, 55, 104, 202, 255, 56, 105, 204, 255, 56, 106, 206, 255, 55, 106, 207, 255, 54, 104, 206, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 62, 108, 199, 255, 159, 166, 182, 255, 236, 236, 236, 255, 254, 254, 254, 255, 253, 253, 253, 255, 234, 239, 250, 255, 93, 134, 215, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 205, 255, 53, 103, 205, 255, 53, 104, 205, 255, 53, 103, 203, 255, 52, 102, 201, 255, 51, 100, 198, 255, 50, 98, 195, 255, 127, 155, 212, 255, 242, 242, 242, 255, 244, 244, 244, 255, 248, 248, 248, 255, 239, 243, 251, 255, 192, 204, 231, 248, 0, 0, 0, 159, 0, 0, 0, 114, 0, 0, 0, 50,
+ 194, 210, 242, 164, 228, 235, 250, 255, 253, 253, 253, 255, 250, 250, 250, 255, 247, 247, 247, 255, 184, 199, 231, 255, 54, 102, 198, 255, 53, 102, 200, 255, 54, 104, 203, 255, 55, 105, 205, 255, 55, 105, 206, 255, 54, 104, 206, 255, 53, 103, 205, 255, 52, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 68, 111, 197, 255, 168, 175, 187, 255, 243, 243, 243, 255, 254, 254, 254, 255, 255, 255, 255, 255, 209, 221, 244, 255, 60, 109, 206, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 205, 255, 53, 103, 205, 255, 53, 103, 204, 255, 52, 102, 202, 255, 51, 101, 199, 255, 50, 99, 196, 255, 49, 98, 194, 255, 161, 180, 221, 255, 241, 241, 241, 255, 244, 244, 244, 255, 248, 248, 248, 255, 231, 237, 250, 255, 161, 174, 199, 235, 0, 0, 0, 155, 0, 0, 0, 109, 0, 0, 0, 46,
+ 189, 206, 241, 116, 215, 227, 248, 254, 252, 253, 253, 255, 250, 250, 250, 255, 247, 247, 247, 255, 225, 230, 240, 255, 70, 113, 201, 255, 52, 101, 198, 255, 53, 102, 200, 255, 54, 104, 203, 255, 54, 104, 205, 255, 54, 104, 205, 255, 53, 104, 205, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 69, 112, 198, 255, 175, 180, 190, 255, 245, 245, 245, 255, 253, 253, 253, 255, 255, 255, 255, 255, 202, 215, 242, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 204, 255, 52, 103, 204, 255, 52, 103, 204, 255, 52, 102, 203, 255, 52, 101, 200, 255, 51, 99, 197, 255, 49, 98, 194, 255, 57, 103, 194, 255, 209, 216, 232, 255, 241, 241, 241, 255, 245, 245, 245, 255, 249, 249, 249, 255, 218, 228, 248, 255, 118, 128, 149, 216, 0, 0, 0, 150, 0, 0, 0, 100, 0, 0, 0, 41,
+ 182, 201, 239, 35, 209, 222, 247, 253, 249, 250, 252, 255, 250, 250, 250, 255, 246, 246, 246, 255, 243, 243, 244, 255, 124, 154, 213, 255, 51, 99, 196, 255, 52, 101, 198, 255, 53, 102, 201, 255, 53, 103, 203, 255, 54, 104, 205, 255, 53, 104, 205, 255, 52, 103, 205, 255, 52, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 65, 110, 200, 255, 143, 160, 195, 255, 202, 213, 236, 255, 206, 218, 242, 255, 211, 222, 244, 255, 161, 184, 231, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 204, 255, 52, 103, 204, 255, 52, 102, 203, 255, 52, 101, 201, 255, 51, 100, 198, 255, 50, 98, 195, 255, 49, 97, 193, 255, 100, 134, 204, 255, 236, 237, 238, 255, 242, 242, 242, 255, 245, 245, 245, 255, 246, 247, 249, 255, 208, 221, 246, 254, 57, 62, 73, 189, 0, 0, 0, 142, 0, 0, 0, 88, 0, 0, 0, 34,
+ 0, 0, 0, 0, 203, 217, 245, 231, 240, 244, 252, 255, 250, 250, 250, 255, 247, 247, 247, 255, 244, 244, 244, 255, 188, 202, 229, 255, 52, 100, 196, 255, 51, 99, 196, 255, 52, 101, 199, 255, 52, 102, 201, 255, 53, 103, 203, 255, 53, 103, 204, 255, 53, 103, 205, 255, 52, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 204, 255, 61, 108, 203, 255, 69, 115, 208, 255, 69, 116, 208, 255, 71, 117, 209, 255, 63, 111, 207, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 102, 204, 255, 52, 103, 204, 255, 52, 102, 203, 255, 52, 102, 202, 255, 51, 100, 199, 255, 50, 99, 196, 255, 49, 97, 193, 255, 48, 96, 191, 255, 172, 189, 221, 255, 239, 239, 239, 255, 242, 242, 242, 255, 246, 246, 246, 255, 240, 243, 249, 255, 194, 208, 233, 250, 0, 0, 0, 166, 0, 0, 0, 133, 0, 0, 0, 75, 0, 0, 0, 27,
+ 0, 0, 0, 0, 190, 207, 241, 131, 217, 228, 248, 254, 251, 251, 251, 255, 247, 247, 247, 255, 244, 244, 244, 255, 234, 236, 240, 255, 112, 144, 208, 255, 50, 98, 194, 255, 51, 99, 196, 255, 51, 101, 199, 255, 52, 102, 201, 255, 53, 103, 203, 255, 52, 103, 204, 255, 52, 103, 204, 255, 52, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 102, 204, 255, 52, 102, 204, 255, 52, 102, 203, 255, 51, 102, 202, 255, 51, 100, 200, 255, 50, 99, 197, 255, 49, 97, 194, 255, 48, 96, 192, 255, 96, 132, 202, 255, 226, 228, 235, 255, 240, 240, 240, 255, 243, 243, 243, 255, 247, 247, 247, 255, 222, 231, 247, 255, 145, 156, 180, 229, 0, 0, 0, 160, 0, 0, 0, 120, 0, 0, 0, 60, 0, 0, 0, 19,
+ 0, 0, 0, 0, 0, 0, 0, 0, 207, 220, 245, 252, 247, 248, 251, 255, 249, 249, 249, 255, 245, 245, 245, 255, 242, 242, 242, 255, 194, 206, 229, 255, 58, 104, 195, 255, 50, 98, 194, 255, 50, 99, 196, 255, 51, 100, 199, 255, 52, 101, 201, 255, 52, 102, 203, 255, 52, 103, 204, 255, 52, 103, 204, 255, 52, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 68, 112, 201, 255, 134, 163, 220, 255, 156, 180, 229, 255, 119, 151, 216, 255, 54, 104, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 102, 204, 255, 52, 102, 204, 255, 52, 102, 203, 255, 51, 101, 202, 255, 51, 100, 200, 255, 50, 99, 197, 255, 49, 97, 194, 255, 48, 96, 192, 255, 54, 100, 192, 255, 176, 191, 222, 255, 238, 238, 238, 255, 241, 241, 241, 255, 245, 245, 245, 255, 246, 247, 249, 255, 208, 221, 245, 254, 20, 22, 26, 179, 0, 0, 0, 150, 0, 0, 0, 102, 0, 0, 0, 46, 0, 0, 0, 12,
+ 0, 0, 0, 0, 0, 0, 0, 0, 182, 197, 228, 174, 223, 232, 249, 255, 250, 250, 250, 255, 246, 246, 246, 255, 243, 243, 243, 255, 238, 239, 240, 255, 140, 165, 214, 255, 49, 97, 192, 255, 49, 97, 194, 255, 50, 99, 196, 255, 51, 100, 198, 255, 51, 101, 200, 255, 52, 102, 202, 255, 52, 102, 203, 255, 52, 102, 204, 255, 52, 102, 204, 255, 52, 102, 204, 255, 67, 110, 198, 255, 151, 162, 185, 255, 238, 238, 238, 255, 252, 252, 252, 255, 237, 237, 239, 255, 156, 176, 217, 255, 53, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 203, 255, 51, 102, 202, 255, 51, 101, 201, 255, 50, 100, 199, 255, 50, 99, 197, 255, 49, 97, 194, 255, 48, 96, 192, 255, 48, 95, 190, 255, 127, 155, 209, 255, 234, 235, 236, 255, 239, 239, 239, 255, 243, 243, 243, 255, 247, 247, 247, 255, 229, 236, 249, 255, 164, 177, 202, 237, 0, 0, 0, 166, 0, 0, 0, 135, 0, 0, 0, 81, 0, 0, 0, 31, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 206, 219, 245, 249, 244, 246, 250, 255, 248, 248, 248, 255, 244, 244, 244, 255, 241, 241, 241, 255, 233, 234, 237, 255, 110, 142, 207, 255, 48, 96, 192, 255, 49, 97, 193, 255, 49, 98, 196, 255, 50, 99, 198, 255, 51, 100, 200, 255, 51, 101, 201, 255, 51, 102, 202, 255, 52, 102, 203, 255, 52, 102, 203, 255, 105, 131, 183, 255, 182, 182, 182, 255, 240, 240, 240, 255, 253, 253, 253, 255, 245, 245, 245, 255, 234, 234, 234, 255, 113, 147, 213, 255, 51, 102, 203, 255, 51, 102, 203, 255, 51, 101, 202, 255, 51, 101, 200, 255, 50, 100, 199, 255, 49, 98, 197, 255, 49, 97, 194, 255, 48, 96, 192, 255, 47, 95, 190, 255, 98, 132, 201, 255, 222, 226, 232, 255, 238, 238, 238, 255, 241, 241, 241, 255, 245, 245, 245, 255, 245, 246, 249, 255, 206, 219, 244, 254, 9, 9, 11, 176, 0, 0, 0, 156, 0, 0, 0, 114, 0, 0, 0, 58, 0, 0, 0, 18, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 168, 183, 214, 143, 216, 226, 247, 254, 249, 250, 250, 255, 246, 246, 246, 255, 242, 242, 242, 255, 240, 240, 240, 255, 217, 222, 232, 255, 94, 131, 202, 255, 48, 96, 191, 255, 48, 96, 193, 255, 49, 97, 194, 255, 50, 98, 196, 255, 50, 99, 198, 255, 50, 100, 200, 255, 51, 101, 201, 255, 51, 101, 202, 255, 121, 140, 178, 255, 186, 186, 186, 255, 239, 239, 239, 255, 252, 252, 252, 255, 253, 253, 253, 255, 253, 253, 253, 255, 143, 168, 222, 255, 51, 101, 201, 255, 51, 101, 200, 255, 50, 100, 199, 255, 50, 99, 197, 255, 49, 98, 195, 255, 48, 97, 193, 255, 48, 96, 191, 255, 47, 95, 189, 255, 92, 128, 199, 255, 211, 218, 230, 255, 237, 237, 237, 255, 240, 240, 240, 255, 243, 243, 243, 255, 247, 247, 247, 255, 217, 226, 246, 255, 130, 141, 164, 222, 0, 0, 0, 166, 0, 0, 0, 138, 0, 0, 0, 87, 0, 0, 0, 37, 0, 0, 0, 9, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 192, 207, 233, 223, 232, 238, 249, 255, 248, 248, 248, 255, 245, 245, 245, 255, 241, 241, 241, 255, 239, 239, 239, 255, 218, 223, 232, 255, 112, 143, 205, 255, 48, 95, 190, 255, 48, 96, 191, 255, 48, 97, 193, 255, 49, 97, 195, 255, 49, 98, 196, 255, 50, 99, 198, 255, 50, 100, 199, 255, 105, 132, 186, 255, 191, 191, 191, 255, 228, 228, 228, 255, 248, 248, 248, 255, 250, 250, 250, 255, 245, 246, 249, 255, 109, 144, 214, 255, 50, 99, 199, 255, 50, 99, 197, 255, 49, 98, 196, 255, 49, 97, 194, 255, 48, 96, 192, 255, 47, 95, 190, 255, 47, 94, 188, 255, 98, 132, 200, 255, 211, 216, 228, 255, 236, 236, 236, 255, 239, 239, 239, 255, 242, 242, 242, 255, 246, 246, 246, 255, 235, 240, 248, 255, 184, 197, 223, 246, 0, 0, 0, 171, 0, 0, 0, 153, 0, 0, 0, 112, 0, 0, 0, 58, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 30, 204, 216, 242, 247, 241, 244, 249, 255, 247, 247, 247, 255, 244, 244, 244, 255, 240, 240, 240, 255, 238, 238, 238, 255, 233, 234, 235, 255, 142, 165, 212, 255, 60, 104, 192, 255, 47, 95, 190, 255, 48, 96, 191, 255, 48, 96, 192, 255, 49, 97, 194, 255, 49, 98, 195, 255, 62, 106, 194, 255, 152, 167, 196, 255, 215, 215, 215, 255, 247, 247, 247, 255, 242, 243, 245, 255, 155, 177, 223, 255, 50, 99, 196, 255, 49, 97, 195, 255, 48, 97, 193, 255, 48, 96, 192, 255, 47, 95, 190, 255, 47, 94, 189, 255, 55, 100, 189, 255, 129, 156, 208, 255, 221, 224, 231, 255, 236, 236, 236, 255, 238, 238, 238, 255, 241, 241, 241, 255, 245, 245, 245, 255, 242, 244, 248, 255, 204, 217, 242, 253, 4, 5, 6, 175, 0, 0, 0, 161, 0, 0, 0, 128, 0, 0, 0, 79, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 14, 101, 111, 131, 80, 207, 220, 245, 253, 245, 247, 250, 255, 246, 246, 246, 255, 243, 243, 243, 255, 240, 240, 240, 255, 238, 238, 238, 255, 236, 236, 236, 255, 185, 198, 222, 255, 100, 134, 201, 255, 47, 94, 188, 255, 47, 95, 189, 255, 47, 95, 190, 255, 48, 96, 191, 255, 48, 96, 192, 255, 57, 102, 193, 255, 113, 142, 202, 255, 136, 160, 211, 255, 111, 143, 208, 255, 48, 96, 193, 255, 48, 96, 192, 255, 48, 95, 191, 255, 47, 95, 190, 255, 47, 94, 189, 255, 47, 94, 188, 255, 100, 134, 200, 255, 176, 190, 219, 255, 234, 234, 234, 255, 236, 236, 236, 255, 238, 238, 238, 255, 241, 241, 241, 255, 245, 245, 245, 255, 244, 246, 248, 255, 206, 218, 243, 254, 66, 73, 86, 197, 0, 0, 0, 166, 0, 0, 0, 140, 0, 0, 0, 95, 0, 0, 0, 46, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 127, 139, 164, 117, 207, 220, 245, 253, 242, 244, 249, 255, 246, 246, 246, 255, 243, 243, 243, 255, 240, 240, 240, 255, 238, 238, 238, 255, 235, 235, 235, 255, 223, 226, 231, 255, 173, 187, 217, 255, 105, 135, 196, 255, 58, 101, 188, 255, 48, 95, 188, 255, 47, 94, 189, 255, 47, 94, 189, 255, 47, 95, 189, 255, 47, 95, 190, 255, 47, 95, 190, 255, 47, 94, 189, 255, 47, 94, 189, 255, 49, 95, 188, 255, 59, 103, 190, 255, 108, 139, 202, 255, 170, 186, 217, 255, 222, 224, 230, 255, 234, 234, 234, 255, 236, 236, 236, 255, 239, 239, 239, 255, 242, 242, 242, 255, 245, 245, 245, 255, 242, 244, 248, 255, 207, 219, 244, 254, 69, 76, 89, 198, 0, 0, 0, 168, 0, 0, 0, 147, 0, 0, 0, 106, 0, 0, 0, 57, 0, 0, 0, 22, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 25, 84, 93, 110, 96, 203, 217, 242, 250, 234, 238, 248, 255, 246, 247, 247, 255, 244, 244, 244, 255, 241, 241, 241, 255, 238, 238, 238, 255, 236, 236, 236, 255, 234, 234, 234, 255, 226, 226, 227, 255, 190, 195, 206, 255, 144, 160, 192, 255, 117, 142, 192, 255, 98, 129, 193, 255, 88, 124, 194, 255, 89, 125, 195, 255, 92, 127, 198, 255, 104, 136, 202, 255, 133, 158, 209, 255, 169, 185, 217, 255, 204, 211, 226, 255, 230, 231, 232, 255, 233, 233, 233, 255, 235, 235, 235, 255, 237, 237, 237, 255, 240, 240, 240, 255, 243, 243, 243, 255, 246, 246, 246, 255, 236, 240, 248, 255, 204, 217, 242, 253, 64, 71, 83, 197, 0, 0, 0, 168, 0, 0, 0, 148, 0, 0, 0, 112, 0, 0, 0, 66, 0, 0, 0, 27, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 30, 11, 12, 14, 70, 187, 202, 229, 235, 214, 225, 245, 255, 243, 245, 248, 255, 245, 245, 245, 255, 242, 242, 242, 255, 240, 240, 240, 255, 238, 238, 238, 255, 235, 235, 235, 255, 229, 229, 229, 255, 219, 219, 219, 255, 208, 208, 208, 255, 212, 212, 212, 255, 220, 220, 220, 255, 232, 232, 232, 255, 234, 234, 234, 255, 234, 234, 234, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 235, 235, 235, 255, 237, 237, 237, 255, 238, 238, 238, 255, 241, 241, 241, 255, 244, 244, 244, 255, 243, 245, 247, 255, 219, 228, 245, 255, 188, 201, 227, 247, 27, 30, 36, 183, 0, 0, 0, 166, 0, 0, 0, 147, 0, 0, 0, 112, 0, 0, 0, 69, 0, 0, 0, 32, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 30, 0, 0, 0, 64, 145, 157, 182, 188, 206, 219, 244, 253, 228, 235, 248, 255, 244, 245, 247, 255, 245, 245, 245, 255, 243, 243, 243, 255, 241, 241, 241, 255, 240, 240, 240, 255, 238, 238, 238, 255, 237, 237, 237, 255, 237, 237, 237, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 237, 237, 237, 255, 238, 238, 238, 255, 239, 239, 239, 255, 240, 240, 240, 255, 242, 242, 242, 255, 244, 244, 244, 255, 243, 244, 246, 255, 230, 236, 248, 255, 207, 220, 245, 254, 142, 154, 178, 228, 0, 0, 0, 172, 0, 0, 0, 162, 0, 0, 0, 141, 0, 0, 0, 107, 0, 0, 0, 67, 0, 0, 0, 32, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 9, 0, 0, 0, 26, 0, 0, 0, 56, 8, 9, 10, 96, 170, 184, 210, 225, 208, 221, 245, 254, 220, 229, 247, 255, 238, 241, 247, 255, 243, 244, 246, 255, 244, 244, 244, 255, 243, 243, 243, 255, 242, 242, 242, 255, 241, 241, 241, 255, 241, 241, 241, 255, 240, 240, 240, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 242, 242, 242, 255, 244, 244, 244, 255, 243, 244, 245, 255, 239, 241, 247, 255, 222, 230, 246, 255, 208, 221, 245, 254, 172, 185, 211, 241, 12, 13, 16, 177, 0, 0, 0, 167, 0, 0, 0, 154, 0, 0, 0, 131, 0, 0, 0, 97, 0, 0, 0, 59, 0, 0, 0, 29, 0, 0, 0, 10, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 21, 0, 0, 0, 45, 0, 0, 0, 77, 0, 0, 0, 110, 156, 169, 195, 218, 198, 210, 236, 250, 208, 221, 245, 254, 217, 227, 247, 255, 228, 234, 247, 255, 236, 240, 247, 255, 238, 241, 246, 255, 242, 243, 246, 255, 242, 243, 245, 255, 242, 243, 245, 255, 239, 242, 246, 255, 236, 239, 246, 255, 230, 236, 247, 255, 218, 228, 247, 255, 208, 221, 245, 254, 198, 211, 236, 251, 151, 163, 188, 231, 0, 0, 0, 172, 0, 0, 0, 166, 0, 0, 0, 157, 0, 0, 0, 139, 0, 0, 0, 114, 0, 0, 0, 81, 0, 0, 0, 48, 0, 0, 0, 22, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 86, 0, 0, 0, 114, 66, 72, 85, 162, 122, 132, 154, 204, 158, 170, 195, 229, 192, 205, 231, 248, 200, 213, 238, 251, 206, 218, 243, 254, 208, 221, 245, 254, 207, 220, 245, 254, 201, 215, 239, 252, 192, 205, 231, 249, 171, 184, 210, 240, 121, 132, 153, 217, 62, 68, 81, 192, 0, 0, 0, 166, 0, 0, 0, 161, 0, 0, 0, 151, 0, 0, 0, 136, 0, 0, 0, 115, 0, 0, 0, 88, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 8, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 57, 0, 0, 0, 81, 0, 0, 0, 103, 0, 0, 0, 120, 0, 0, 0, 133, 0, 0, 0, 142, 0, 0, 0, 150, 0, 0, 0, 154, 0, 0, 0, 158, 0, 0, 0, 159, 0, 0, 0, 159, 0, 0, 0, 155, 0, 0, 0, 151, 0, 0, 0, 144, 0, 0, 0, 134, 0, 0, 0, 121, 0, 0, 0, 104, 0, 0, 0, 82, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 20, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 31, 0, 0, 0, 46, 0, 0, 0, 60, 0, 0, 0, 74, 0, 0, 0, 88, 0, 0, 0, 99, 0, 0, 0, 107, 0, 0, 0, 113, 0, 0, 0, 115, 0, 0, 0, 114, 0, 0, 0, 109, 0, 0, 0, 102, 0, 0, 0, 91, 0, 0, 0, 77, 0, 0, 0, 62, 0, 0, 0, 46, 0, 0, 0, 32, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(48, 48, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_LogoTecgrafPUC_Rio(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 167, 173, 184, 178, 176, 185, 201, 250, 177, 185, 202, 250, 177, 185, 202, 250, 177, 186, 202, 250, 177, 186, 202, 250, 177, 186, 202, 250, 177, 186, 202, 250, 177, 186, 203, 250, 177, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 204, 250, 178, 186, 204, 250, 178, 187, 204, 250, 178, 187, 204, 250, 178, 187, 204, 250, 178, 187, 204, 250, 178, 187, 204, 250, 178, 187, 204, 250, 179, 187, 204, 250, 179, 188, 204, 250, 179, 188, 204, 250, 181, 190, 206, 239, 229, 232, 238, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 211, 220, 80, 177, 186, 204, 121, 159, 171, 195, 121, 159, 172, 198, 136, 188, 198, 217, 250, 189, 199, 218, 250, 189, 199, 218, 250, 189, 199, 218, 250, 189, 199, 219, 250, 189, 199, 219, 250, 189, 199, 219, 250, 176, 186, 207, 178, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 102, 105, 110, 249, 105, 117, 141, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 173, 255, 127, 143, 173, 255, 127, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 145, 174, 255, 128, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 146, 176, 255, 129, 146, 176, 255, 129, 146, 176, 255, 130, 146, 176, 255, 130, 146, 176, 255, 130, 146, 176, 255, 130, 146, 176, 255, 130, 146, 177, 255, 130, 147, 177, 255, 133, 150, 181, 255, 153, 169, 201, 255, 230, 233, 239, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 143, 158, 22, 143, 153, 172, 205, 139, 154, 183, 252, 146, 164, 197, 255, 147, 166, 199, 255, 149, 167, 201, 255, 150, 168, 203, 255, 151, 170, 204, 255, 151, 170, 204, 255, 151, 170, 204, 255, 151, 170, 204, 255, 152, 170, 205, 255, 152, 171, 205, 255, 143, 157, 184, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 98, 100, 104, 249, 80, 90, 108, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 122, 137, 164, 255, 155, 172, 203, 255, 230, 233, 239, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 200, 204, 106, 124, 134, 151, 246, 125, 141, 170, 255, 130, 147, 176, 255, 130, 146, 175, 255, 130, 146, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 130, 145, 175, 255, 130, 146, 176, 255, 135, 148, 173, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 98, 100, 104, 249, 80, 90, 108, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 122, 137, 164, 255, 155, 172, 203, 255, 230, 233, 239, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 23, 116, 122, 132, 212, 110, 123, 149, 255, 128, 144, 174, 255, 129, 144, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 128, 140, 164, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 98, 100, 104, 249, 80, 89, 108, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 154, 255, 122, 136, 164, 255, 155, 172, 203, 255, 230, 233, 239, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 121, 126, 53, 90, 98, 112, 255, 121, 136, 164, 255, 128, 144, 174, 255, 128, 144, 174, 255, 129, 144, 174, 255, 129, 144, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 120, 132, 153, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 98, 100, 104, 249, 80, 89, 108, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 121, 136, 164, 255, 155, 172, 203, 255, 230, 233, 239, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 168, 171, 172, 75, 84, 100, 255, 124, 140, 168, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 144, 174, 255, 129, 144, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 175, 255, 128, 144, 174, 255, 112, 123, 143, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 98, 100, 104, 249, 80, 89, 108, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 121, 136, 163, 255, 155, 172, 203, 255, 230, 233, 239, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 227, 232, 99, 226, 229, 234, 105, 227, 230, 236, 105, 228, 231, 236, 105, 227, 230, 236, 105, 227, 230, 235, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 227, 231, 5, 215, 218, 225, 105, 182, 189, 203, 105, 173, 182, 200, 105, 151, 164, 187, 105, 156, 169, 193, 105, 159, 172, 197, 105, 163, 176, 199, 105, 183, 193, 212, 105, 191, 200, 217, 105, 211, 217, 228, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 229, 235, 104, 202, 209, 220, 105, 204, 210, 222, 105, 206, 213, 225, 105, 207, 214, 226, 105, 206, 212, 224, 105, 218, 223, 232, 61, 230, 233, 239, 95, 229, 232, 238, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 145, 148, 182, 74, 84, 101, 255, 126, 142, 170, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 144, 174, 255, 129, 144, 174, 255, 129, 144, 174, 255, 129, 145, 174, 255, 125, 140, 169, 255, 115, 129, 155, 255, 112, 126, 151, 255, 118, 132, 160, 255, 105, 114, 132, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 98, 100, 104, 249, 78, 87, 105, 255, 107, 120, 144, 255, 107, 120, 144, 255, 107, 120, 144, 255, 107, 120, 144, 255, 107, 120, 144, 255, 107, 120, 144, 255, 107, 120, 145, 255, 107, 120, 145, 255, 107, 120, 145, 255, 109, 122, 148, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 111, 125, 151, 255, 109, 122, 147, 255, 109, 122, 146, 255, 109, 122, 147, 255, 109, 122, 147, 255, 109, 122, 147, 255, 109, 122, 147, 255, 109, 122, 147, 255, 109, 122, 147, 255, 109, 122, 147, 255, 116, 131, 157, 255, 151, 169, 201, 247, 230, 233, 239, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 222, 226, 1, 195, 199, 207, 102, 159, 167, 182, 165, 165, 174, 190, 231, 151, 162, 184, 231, 137, 152, 178, 231, 139, 154, 182, 254, 143, 158, 186, 255, 146, 162, 191, 255, 148, 164, 193, 255, 149, 165, 194, 255, 150, 166, 196, 246, 158, 174, 203, 231, 172, 186, 211, 231, 188, 199, 219, 231, 178, 191, 214, 123, 206, 214, 229, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, 188, 197, 61, 136, 147, 166, 112, 152, 163, 183, 231, 137, 150, 176, 232, 138, 153, 181, 255, 139, 155, 184, 255, 141, 157, 187, 255, 139, 156, 187, 255, 141, 158, 189, 255, 143, 160, 191, 255, 146, 164, 196, 255, 150, 167, 200, 255, 154, 172, 204, 255, 158, 176, 209, 244, 171, 186, 216, 231, 188, 200, 223, 231, 184, 197, 221, 114, 196, 207, 226, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 201, 210, 71, 156, 166, 184, 102, 164, 174, 194, 189, 165, 176, 199, 231, 162, 176, 201, 231, 156, 171, 200, 231, 166, 181, 208, 231, 175, 189, 214, 231, 185, 197, 220, 219, 172, 187, 214, 102, 213, 220, 234, 95, 167, 169, 172, 6, 168, 173, 183, 173, 187, 196, 214, 231, 187, 196, 214, 231, 187, 196, 214, 231, 188, 197, 214, 231, 188, 197, 214, 231, 188, 197, 214, 231, 188, 197, 214, 231, 188, 197, 214, 231, 188, 197, 214, 231, 188, 197, 214, 231, 185, 194, 211, 231, 213, 217, 225, 72, 0, 0, 0, 0, 0, 0, 0, 0, 167, 174, 187, 137, 188, 196, 214, 231, 189, 197, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 186, 195, 212, 200, 171, 180, 196, 28, 0, 0, 0, 0, 187, 192, 204, 72, 152, 164, 185, 126, 171, 183, 206, 231, 187, 201, 228, 231, 205, 218, 239, 231, 211, 222, 241, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 206, 215, 5, 187, 193, 206, 102, 145, 158, 183, 106, 170, 182, 202, 231, 160, 174, 200, 231, 150, 167, 197, 231, 155, 172, 202, 255, 154, 172, 204, 255, 155, 173, 205, 255, 158, 175, 208, 255, 158, 175, 208, 255, 160, 177, 210, 255, 161, 179, 213, 245, 162, 180, 213, 253, 163, 181, 214, 246, 168, 185, 216, 231, 174, 190, 219, 231, 189, 202, 225, 231, 177, 191, 219, 122, 198, 208, 227, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 130, 134, 182, 79, 89, 107, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 143, 173, 255, 95, 107, 128, 255, 69, 74, 82, 255, 74, 79, 86, 255, 82, 88, 98, 255, 104, 109, 120, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 97, 100, 104, 249, 40, 45, 54, 255, 44, 50, 60, 255, 44, 50, 60, 255, 44, 50, 60, 255, 44, 50, 60, 255, 44, 50, 60, 255, 44, 50, 60, 255, 44, 50, 60, 255, 44, 50, 60, 255, 45, 50, 61, 255, 77, 87, 105, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 114, 128, 154, 255, 79, 89, 107, 255, 45, 51, 61, 255, 45, 51, 61, 255, 45, 51, 61, 255, 45, 51, 61, 255, 45, 51, 61, 255, 45, 51, 61, 255, 45, 51, 61, 255, 45, 51, 61, 255, 47, 53, 64, 255, 99, 110, 131, 242, 229, 232, 236, 42, 0, 0, 0, 0, 0, 0, 0, 0, 207, 209, 213, 53, 132, 139, 153, 102, 137, 146, 163, 228, 124, 137, 161, 255, 122, 136, 164, 255, 122, 138, 166, 255, 123, 138, 166, 255, 122, 137, 164, 255, 120, 135, 162, 255, 120, 135, 162, 255, 121, 135, 163, 255, 121, 136, 164, 255, 121, 136, 165, 255, 125, 140, 169, 255, 127, 143, 172, 255, 133, 150, 180, 255, 143, 161, 193, 255, 153, 172, 205, 255, 166, 184, 218, 246, 185, 199, 225, 228, 197, 208, 229, 125, 210, 218, 233, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 219, 222, 12, 167, 172, 181, 114, 136, 146, 163, 228, 122, 135, 160, 244, 124, 139, 166, 255, 125, 140, 168, 255, 122, 136, 164, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 119, 134, 162, 255, 119, 134, 162, 255, 119, 134, 162, 255, 120, 135, 163, 255, 120, 136, 163, 255, 122, 136, 164, 255, 128, 143, 172, 255, 138, 154, 186, 255, 152, 170, 204, 255, 166, 186, 220, 255, 175, 193, 227, 231, 193, 206, 229, 180, 207, 217, 234, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 227, 229, 23, 172, 177, 186, 99, 141, 151, 169, 191, 130, 144, 170, 247, 133, 149, 177, 255, 131, 147, 177, 255, 132, 148, 178, 255, 132, 148, 178, 255, 131, 148, 178, 255, 135, 152, 183, 255, 140, 157, 189, 255, 147, 164, 198, 255, 161, 180, 215, 255, 175, 194, 227, 253, 169, 183, 208, 230, 82, 87, 97, 255, 124, 139, 168, 255, 142, 159, 192, 255, 142, 160, 192, 255, 142, 160, 192, 255, 142, 160, 192, 255, 142, 160, 192, 255, 142, 160, 192, 255, 142, 160, 193, 255, 142, 160, 193, 255, 144, 162, 195, 255, 139, 156, 188, 255, 210, 215, 224, 151, 0, 0, 0, 0, 0, 0, 0, 0, 94, 99, 107, 223, 122, 137, 166, 255, 143, 161, 194, 255, 144, 161, 194, 255, 144, 161, 194, 255, 144, 162, 195, 255, 144, 162, 195, 255, 144, 162, 195, 255, 144, 162, 195, 255, 144, 162, 195, 255, 146, 163, 197, 255, 159, 175, 204, 255, 185, 189, 198, 170, 145, 154, 171, 228, 132, 146, 173, 247, 134, 150, 180, 255, 137, 154, 185, 255, 160, 175, 200, 255, 223, 228, 238, 255, 213, 224, 244, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 204, 210, 58, 163, 171, 186, 173, 138, 152, 176, 230, 140, 156, 185, 255, 140, 156, 188, 255, 137, 154, 185, 255, 135, 152, 183, 255, 134, 150, 181, 255, 132, 148, 178, 255, 131, 147, 176, 255, 129, 144, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 130, 147, 176, 255, 135, 151, 182, 255, 135, 152, 183, 255, 140, 157, 189, 255, 140, 158, 189, 255, 146, 164, 196, 255, 157, 176, 209, 255, 170, 189, 222, 255, 180, 199, 230, 246, 185, 201, 231, 228, 184, 199, 227, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 183, 193, 171, 178, 189, 210, 228, 180, 192, 214, 228, 126, 135, 152, 247, 85, 95, 115, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 132, 149, 179, 255, 138, 154, 181, 255, 169, 180, 198, 255, 176, 187, 206, 255, 171, 182, 201, 255, 173, 181, 197, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 173, 175, 176, 89, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 79, 82, 87, 241, 71, 80, 97, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 119, 134, 161, 255, 134, 147, 172, 255, 161, 163, 166, 188, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 177, 178, 158, 183, 185, 188, 148, 229, 232, 236, 13, 190, 192, 196, 5, 175, 179, 185, 167, 115, 124, 142, 241, 114, 126, 151, 255, 115, 129, 156, 255, 115, 129, 156, 255, 114, 128, 156, 255, 114, 129, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 116, 131, 157, 255, 118, 133, 160, 255, 131, 147, 175, 255, 154, 172, 203, 255, 177, 196, 226, 255, 178, 196, 229, 195, 199, 211, 233, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 179, 185, 80, 144, 150, 162, 229, 115, 127, 150, 255, 117, 132, 159, 255, 118, 133, 160, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 120, 134, 163, 255, 125, 140, 168, 255, 149, 166, 193, 255, 178, 195, 222, 255, 184, 202, 232, 244, 192, 206, 232, 115, 227, 233, 243, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 159, 166, 23, 142, 149, 161, 198, 118, 130, 153, 255, 122, 137, 165, 255, 122, 137, 165, 255, 121, 136, 164, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 165, 255, 125, 140, 168, 255, 138, 154, 181, 255, 150, 168, 200, 255, 111, 125, 150, 255, 114, 128, 154, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 127, 143, 172, 255, 138, 155, 186, 255, 211, 215, 224, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 94, 106, 128, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 168, 255, 129, 144, 173, 255, 149, 162, 183, 255, 101, 111, 128, 255, 121, 136, 163, 255, 125, 140, 169, 255, 124, 140, 168, 255, 124, 140, 168, 255, 128, 144, 171, 255, 209, 218, 229, 255, 212, 223, 243, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 156, 166, 69, 124, 134, 154, 243, 116, 132, 163, 255, 127, 142, 172, 255, 127, 143, 171, 255, 126, 142, 170, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 143, 172, 255, 131, 146, 175, 255, 143, 158, 185, 255, 170, 185, 209, 255, 187, 205, 233, 246, 189, 203, 230, 188, 191, 204, 227, 21, 0, 0, 0, 0, 0, 0, 0, 0, 99, 103, 110, 191, 111, 125, 151, 255, 145, 162, 196, 255, 142, 159, 192, 255, 125, 140, 168, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 141, 157, 184, 255, 181, 194, 213, 255, 182, 195, 213, 255, 172, 188, 213, 255, 154, 172, 206, 255, 143, 157, 184, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 97, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 119, 134, 161, 255, 156, 171, 200, 255, 194, 199, 209, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 129, 135, 6, 113, 118, 128, 168, 98, 109, 128, 255, 111, 125, 150, 255, 114, 128, 155, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 129, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 117, 132, 157, 255, 129, 143, 168, 255, 173, 188, 211, 255, 188, 206, 234, 246, 184, 200, 230, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 127, 136, 81, 102, 112, 128, 243, 110, 123, 148, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 125, 140, 166, 255, 161, 175, 197, 255, 191, 207, 234, 255, 192, 206, 233, 184, 191, 204, 230, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 178, 183, 56, 121, 128, 141, 231, 108, 121, 144, 255, 119, 134, 161, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 165, 255, 123, 138, 166, 255, 122, 137, 165, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 137, 155, 186, 255, 211, 215, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 94, 105, 127, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 133, 148, 175, 255, 165, 177, 196, 255, 118, 132, 159, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 126, 142, 171, 255, 185, 202, 225, 255, 204, 217, 238, 91, 0, 0, 0, 0, 0, 0, 0, 0, 183, 185, 191, 70, 109, 119, 138, 242, 105, 122, 152, 255, 120, 136, 166, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 128, 143, 172, 255, 152, 165, 190, 255, 185, 201, 228, 255, 182, 198, 228, 194, 208, 216, 231, 21, 0, 0, 0, 0, 92, 96, 102, 191, 89, 100, 121, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 130, 145, 175, 255, 141, 154, 181, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 119, 134, 161, 255, 158, 174, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 122, 126, 7, 97, 102, 110, 168, 86, 96, 114, 255, 110, 124, 149, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 129, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 116, 130, 156, 255, 121, 135, 160, 255, 162, 175, 195, 255, 192, 208, 234, 246, 199, 212, 236, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 116, 124, 82, 89, 97, 113, 243, 107, 120, 145, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 121, 135, 162, 255, 149, 162, 184, 255, 192, 207, 230, 255, 190, 206, 233, 184, 215, 223, 238, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 151, 155, 24, 100, 106, 117, 198, 101, 113, 136, 255, 118, 133, 160, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 137, 154, 186, 255, 211, 215, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 94, 105, 127, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 132, 148, 175, 255, 143, 160, 186, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 125, 140, 169, 255, 162, 178, 207, 255, 193, 205, 228, 91, 0, 0, 0, 0, 185, 187, 190, 10, 126, 132, 144, 191, 97, 113, 141, 255, 119, 135, 165, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 143, 159, 186, 255, 172, 191, 224, 255, 178, 192, 217, 104, 0, 0, 0, 0, 92, 96, 102, 191, 89, 100, 121, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 175, 255, 141, 154, 181, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 119, 134, 161, 255, 158, 174, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 117, 122, 131, 73, 81, 96, 255, 107, 121, 145, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 116, 130, 156, 255, 118, 131, 158, 255, 156, 168, 189, 255, 194, 209, 236, 246, 196, 209, 234, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 170, 172, 82, 94, 100, 111, 242, 102, 114, 138, 255, 117, 131, 157, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 147, 160, 182, 255, 190, 206, 233, 255, 183, 199, 229, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 120, 127, 178, 88, 98, 118, 255, 116, 131, 157, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 137, 154, 185, 255, 210, 215, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 94, 105, 127, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 149, 164, 192, 255, 185, 196, 216, 91, 0, 0, 0, 0, 189, 189, 192, 74, 108, 117, 133, 255, 114, 131, 160, 255, 124, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 128, 143, 172, 255, 148, 166, 199, 255, 164, 180, 211, 210, 211, 216, 227, 21, 92, 96, 102, 191, 89, 100, 121, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 141, 154, 181, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 119, 134, 160, 255, 158, 174, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 187, 189, 63, 78, 83, 92, 238, 96, 108, 130, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 112, 126, 152, 255, 105, 118, 142, 255, 95, 107, 129, 255, 87, 98, 117, 255, 93, 104, 125, 255, 105, 118, 142, 255, 115, 128, 154, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 116, 130, 156, 255, 119, 133, 159, 255, 172, 184, 204, 255, 191, 207, 235, 246, 205, 216, 235, 59, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 16, 92, 97, 104, 201, 88, 99, 119, 255, 115, 129, 156, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 113, 126, 152, 255, 103, 116, 139, 255, 88, 99, 120, 255, 83, 93, 112, 255, 90, 101, 122, 255, 107, 121, 146, 255, 117, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 120, 135, 162, 255, 162, 176, 199, 255, 182, 200, 230, 242, 188, 201, 226, 41, 0, 0, 0, 0, 137, 139, 142, 60, 80, 86, 98, 246, 107, 119, 144, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 137, 154, 185, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 127, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 143, 158, 185, 255, 194, 201, 214, 134, 0, 0, 0, 0, 175, 177, 181, 158, 104, 117, 139, 255, 123, 139, 167, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 123, 138, 166, 255, 112, 126, 152, 255, 103, 116, 139, 255, 93, 104, 126, 255, 86, 97, 117, 255, 90, 101, 122, 255, 101, 114, 137, 255, 118, 132, 159, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 133, 149, 179, 255, 159, 175, 204, 255, 182, 192, 209, 61, 92, 96, 102, 191, 89, 100, 120, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 141, 154, 181, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 119, 134, 160, 255, 158, 174, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 210, 211, 9, 124, 127, 131, 186, 68, 77, 92, 255, 110, 124, 150, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 107, 120, 144, 255, 76, 85, 102, 255, 71, 77, 87, 255, 82, 86, 93, 255, 87, 90, 95, 255, 72, 76, 82, 255, 47, 53, 62, 255, 71, 80, 96, 255, 107, 120, 144, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 116, 130, 156, 255, 125, 139, 163, 255, 180, 195, 220, 255, 190, 205, 231, 177, 0, 0, 0, 0, 0, 0, 0, 0, 129, 131, 135, 89, 72, 79, 92, 255, 108, 122, 147, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 158, 255, 116, 131, 158, 255, 103, 116, 140, 255, 71, 79, 94, 255, 80, 85, 93, 255, 97, 100, 106, 255, 73, 77, 82, 213, 78, 82, 88, 255, 48, 54, 63, 255, 72, 82, 99, 255, 112, 127, 152, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 125, 140, 166, 255, 159, 178, 209, 255, 179, 192, 215, 156, 0, 0, 0, 0, 116, 119, 124, 178, 80, 90, 108, 255, 117, 131, 159, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 119, 134, 161, 255, 110, 124, 150, 255, 97, 109, 131, 255, 85, 95, 115, 255, 88, 100, 120, 255, 102, 115, 138, 255, 118, 132, 159, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 136, 154, 185, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 127, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 139, 152, 178, 255, 200, 204, 211, 220, 0, 0, 0, 0, 152, 155, 161, 158, 113, 127, 153, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 119, 133, 160, 255, 80, 90, 108, 255, 74, 79, 89, 255, 83, 87, 94, 255, 93, 97, 102, 255, 61, 65, 71, 176, 87, 91, 96, 249, 74, 78, 85, 255, 53, 60, 71, 255, 105, 118, 142, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 129, 145, 175, 255, 146, 162, 193, 255, 182, 191, 207, 103, 92, 96, 102, 191, 87, 98, 118, 255, 123, 138, 166, 255, 123, 138, 167, 255, 124, 140, 168, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 143, 173, 255, 126, 141, 170, 255, 124, 139, 168, 255, 124, 139, 168, 255, 126, 142, 171, 255, 140, 154, 181, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 119, 134, 160, 255, 158, 174, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 141, 144, 27, 82, 87, 94, 255, 93, 105, 127, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 112, 126, 152, 255, 87, 98, 118, 255, 136, 141, 152, 255, 158, 165, 178, 135, 180, 187, 200, 126, 189, 197, 209, 126, 161, 166, 177, 126, 147, 151, 158, 240, 60, 64, 71, 255, 57, 65, 78, 255, 109, 122, 147, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 116, 130, 156, 255, 151, 167, 192, 255, 183, 199, 230, 245, 217, 223, 237, 60, 200, 201, 202, 16, 100, 103, 109, 201, 78, 89, 107, 255, 115, 130, 156, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 109, 122, 147, 255, 93, 100, 113, 253, 148, 150, 154, 173, 150, 152, 154, 46, 214, 214, 215, 46, 209, 210, 211, 23, 174, 176, 178, 46, 115, 118, 121, 105, 74, 78, 83, 251, 66, 75, 90, 255, 116, 131, 157, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 116, 131, 158, 255, 116, 130, 157, 255, 116, 130, 157, 255, 117, 131, 158, 255, 118, 132, 159, 255, 126, 141, 170, 255, 148, 161, 185, 241, 195, 199, 206, 66, 75, 80, 88, 217, 95, 107, 128, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 119, 133, 160, 255, 95, 107, 129, 255, 71, 78, 89, 255, 82, 86, 93, 246, 59, 63, 69, 182, 84, 87, 93, 255, 60, 64, 72, 255, 57, 65, 78, 255, 107, 121, 145, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 126, 141, 171, 255, 136, 153, 185, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 166, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 133, 146, 170, 255, 193, 196, 202, 220, 0, 0, 0, 0, 151, 155, 164, 158, 95, 105, 123, 255, 87, 97, 117, 255, 84, 95, 114, 255, 83, 94, 113, 255, 83, 93, 112, 255, 82, 92, 111, 255, 81, 91, 110, 255, 80, 90, 108, 255, 79, 89, 107, 255, 98, 110, 132, 255, 101, 110, 127, 255, 157, 166, 181, 255, 175, 183, 199, 255, 191, 200, 218, 255, 164, 176, 198, 212, 167, 177, 196, 252, 153, 163, 180, 255, 85, 93, 108, 255, 82, 92, 110, 255, 124, 139, 167, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 143, 172, 255, 135, 152, 183, 255, 193, 199, 211, 190, 90, 94, 98, 191, 48, 54, 65, 255, 55, 61, 74, 255, 56, 63, 76, 255, 89, 100, 121, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 107, 121, 146, 255, 56, 63, 76, 255, 55, 62, 74, 255, 59, 67, 81, 255, 115, 126, 146, 249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 119, 133, 160, 255, 158, 174, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 179, 181, 131, 53, 59, 69, 255, 106, 119, 144, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 123, 139, 168, 255, 125, 141, 169, 255, 140, 155, 183, 255, 142, 157, 185, 255, 139, 154, 182, 255, 136, 151, 178, 255, 130, 144, 169, 255, 126, 139, 164, 255, 106, 118, 140, 255, 78, 88, 106, 255, 103, 115, 138, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 125, 140, 167, 255, 164, 182, 216, 255, 170, 186, 216, 73, 159, 161, 163, 50, 80, 85, 93, 255, 99, 111, 134, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 118, 132, 159, 255, 114, 125, 146, 252, 164, 167, 172, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 162, 164, 104, 49, 53, 60, 250, 75, 85, 103, 255, 79, 89, 107, 255, 77, 87, 105, 255, 75, 85, 102, 255, 70, 80, 96, 255, 71, 80, 95, 255, 79, 87, 102, 255, 87, 94, 108, 255, 93, 100, 112, 255, 97, 103, 114, 255, 122, 129, 141, 255, 175, 178, 183, 191, 71, 77, 86, 255, 107, 120, 144, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 113, 127, 152, 255, 109, 115, 127, 245, 137, 139, 143, 97, 184, 185, 187, 43, 209, 210, 211, 5, 199, 200, 201, 48, 112, 115, 119, 57, 92, 95, 99, 221, 52, 59, 70, 255, 114, 129, 155, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 126, 141, 170, 255, 136, 153, 184, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 165, 255, 122, 137, 166, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 122, 137, 165, 255, 115, 129, 156, 255, 108, 122, 147, 255, 97, 110, 132, 255, 98, 110, 132, 255, 108, 121, 146, 255, 124, 136, 158, 255, 187, 190, 196, 180, 0, 0, 0, 0, 192, 193, 196, 110, 136, 139, 143, 177, 109, 113, 118, 177, 116, 120, 125, 223, 90, 96, 105, 255, 65, 73, 88, 255, 85, 96, 115, 255, 100, 113, 136, 255, 113, 127, 153, 255, 112, 126, 152, 255, 131, 147, 177, 255, 145, 162, 195, 255, 142, 160, 192, 255, 140, 157, 189, 255, 139, 156, 188, 255, 138, 155, 187, 255, 135, 152, 183, 255, 132, 149, 179, 255, 128, 144, 173, 255, 120, 135, 163, 255, 125, 141, 169, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 133, 150, 181, 255, 191, 197, 210, 190, 185, 186, 188, 133, 159, 161, 163, 177, 159, 161, 163, 177, 95, 98, 103, 233, 81, 91, 110, 255, 127, 142, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 144, 174, 255, 133, 149, 180, 255, 123, 127, 135, 211, 159, 161, 163, 177, 159, 161, 163, 177, 179, 181, 185, 173, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 119, 133, 160, 255, 158, 173, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 137, 140, 156, 54, 61, 74, 255, 112, 126, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 117, 131, 158, 255, 117, 131, 158, 255, 116, 131, 157, 255, 117, 132, 158, 255, 117, 131, 158, 255, 116, 130, 157, 255, 115, 129, 156, 255, 114, 129, 155, 255, 114, 128, 154, 255, 113, 127, 153, 255, 114, 128, 154, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 118, 132, 158, 255, 150, 168, 202, 255, 187, 199, 221, 176, 101, 104, 108, 50, 67, 72, 82, 255, 106, 119, 144, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 125, 140, 169, 255, 156, 164, 180, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 137, 140, 202, 65, 70, 75, 185, 83, 86, 92, 180, 103, 107, 111, 180, 126, 128, 132, 180, 151, 153, 156, 180, 144, 146, 149, 133, 73, 77, 81, 51, 111, 114, 118, 51, 142, 144, 146, 51, 172, 173, 175, 51, 206, 207, 208, 51, 124, 127, 130, 84, 67, 74, 84, 255, 111, 125, 151, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 122, 137, 164, 255, 127, 141, 167, 255, 175, 179, 187, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 160, 163, 41, 65, 69, 76, 255, 100, 113, 135, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 126, 141, 170, 255, 136, 153, 184, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 120, 135, 162, 255, 94, 106, 127, 255, 68, 75, 87, 255, 78, 83, 91, 255, 83, 87, 93, 255, 86, 90, 96, 255, 89, 94, 102, 255, 112, 118, 127, 255, 165, 169, 175, 91, 0, 0, 0, 0, 0, 0, 0, 0, 155, 161, 173, 8, 159, 166, 178, 152, 130, 142, 163, 234, 131, 146, 174, 255, 132, 148, 179, 255, 133, 150, 180, 255, 130, 146, 176, 255, 128, 144, 173, 255, 126, 142, 170, 255, 126, 141, 169, 255, 126, 141, 170, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 170, 255, 133, 150, 181, 255, 191, 197, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 91, 110, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 145, 174, 255, 138, 155, 186, 255, 124, 133, 150, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 119, 133, 160, 255, 158, 173, 202, 255, 205, 211, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 107, 111, 156, 60, 68, 82, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 139, 157, 188, 255, 171, 185, 210, 202, 117, 119, 123, 87, 55, 62, 73, 255, 110, 123, 149, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 118, 132, 159, 255, 137, 153, 183, 255, 165, 174, 192, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 228, 229, 23, 228, 228, 229, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 81, 85, 74, 62, 69, 80, 255, 113, 127, 152, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 126, 141, 170, 255, 151, 166, 195, 255, 223, 226, 232, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 165, 168, 15, 92, 96, 101, 255, 92, 104, 125, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 141, 170, 255, 136, 153, 184, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 138, 166, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 114, 128, 155, 255, 105, 111, 123, 239, 117, 120, 124, 90, 154, 156, 159, 54, 198, 199, 200, 54, 209, 210, 211, 54, 193, 194, 195, 54, 176, 178, 180, 54, 209, 210, 211, 19, 0, 0, 0, 0, 213, 214, 218, 60, 146, 153, 166, 207, 125, 139, 164, 255, 126, 141, 171, 255, 125, 140, 169, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 134, 150, 181, 255, 191, 197, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 91, 109, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 145, 174, 255, 139, 156, 186, 255, 135, 145, 165, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 118, 133, 160, 255, 157, 173, 202, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 104, 108, 156, 59, 66, 79, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 129, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 134, 150, 181, 255, 152, 166, 193, 202, 158, 160, 162, 179, 51, 57, 69, 255, 112, 126, 152, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 119, 133, 160, 255, 147, 165, 197, 255, 190, 199, 215, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 106, 109, 74, 63, 69, 79, 255, 111, 124, 150, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 119, 134, 162, 255, 120, 134, 162, 255, 128, 143, 172, 255, 168, 186, 219, 255, 200, 209, 229, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 160, 50, 80, 86, 96, 255, 108, 121, 146, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 140, 170, 255, 135, 152, 183, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 166, 255, 122, 138, 166, 255, 123, 138, 166, 255, 124, 139, 167, 255, 127, 141, 168, 255, 141, 149, 163, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 169, 173, 9, 140, 145, 156, 185, 114, 127, 151, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 134, 150, 181, 255, 191, 197, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 91, 109, 255, 126, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 145, 174, 255, 139, 156, 187, 255, 137, 147, 167, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 118, 133, 160, 255, 157, 173, 202, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 139, 142, 156, 48, 54, 65, 255, 112, 126, 151, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 155, 255, 113, 127, 152, 255, 109, 123, 148, 255, 109, 122, 147, 255, 108, 122, 147, 255, 108, 121, 146, 255, 107, 121, 145, 255, 107, 120, 144, 255, 106, 119, 144, 255, 106, 119, 144, 255, 105, 119, 143, 255, 105, 118, 142, 255, 103, 116, 140, 255, 100, 113, 136, 255, 100, 112, 135, 255, 99, 111, 133, 255, 98, 109, 132, 255, 96, 109, 131, 255, 96, 107, 130, 255, 94, 106, 128, 255, 93, 105, 127, 255, 110, 124, 149, 255, 157, 171, 198, 216, 165, 166, 168, 165, 50, 56, 67, 255, 109, 123, 148, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 118, 133, 160, 255, 154, 172, 206, 255, 171, 186, 214, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 167, 172, 29, 156, 163, 175, 187, 163, 171, 185, 196, 186, 193, 207, 196, 195, 203, 217, 196, 200, 208, 223, 196, 197, 207, 225, 149, 184, 201, 231, 67, 190, 207, 237, 67, 189, 206, 237, 67, 194, 209, 237, 67, 201, 213, 235, 67, 146, 150, 158, 122, 62, 66, 75, 255, 107, 119, 144, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 119, 134, 162, 255, 123, 137, 165, 255, 173, 188, 212, 255, 186, 204, 234, 200, 188, 202, 228, 67, 224, 229, 239, 26, 0, 0, 0, 0, 220, 224, 229, 40, 160, 166, 178, 76, 126, 133, 146, 229, 96, 107, 129, 255, 118, 132, 160, 255, 121, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 140, 169, 255, 135, 152, 183, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 166, 255, 122, 138, 166, 255, 125, 141, 170, 255, 142, 156, 184, 255, 164, 172, 189, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 143, 148, 66, 105, 114, 130, 255, 120, 136, 163, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 167, 255, 118, 133, 160, 255, 111, 125, 150, 255, 97, 109, 131, 255, 92, 103, 125, 255, 89, 100, 121, 255, 84, 94, 113, 255, 81, 91, 110, 255, 75, 85, 102, 255, 95, 107, 129, 255, 123, 138, 167, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 134, 151, 182, 255, 191, 197, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 91, 109, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 172, 255, 127, 143, 172, 255, 128, 144, 174, 255, 139, 155, 187, 255, 136, 147, 167, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 118, 133, 160, 255, 157, 173, 202, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 166, 168, 123, 40, 46, 54, 255, 105, 118, 142, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 155, 255, 110, 123, 147, 255, 77, 83, 93, 255, 89, 94, 103, 255, 88, 94, 102, 255, 88, 93, 101, 255, 87, 92, 101, 255, 87, 92, 100, 255, 86, 91, 99, 255, 86, 91, 98, 255, 77, 82, 90, 255, 71, 75, 83, 255, 72, 77, 85, 255, 75, 79, 87, 255, 82, 87, 94, 255, 82, 86, 93, 255, 81, 86, 93, 255, 81, 85, 92, 255, 80, 84, 91, 255, 79, 83, 90, 255, 79, 83, 89, 255, 82, 86, 94, 255, 130, 136, 147, 242, 156, 158, 161, 107, 58, 63, 72, 255, 104, 117, 140, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 117, 132, 158, 255, 158, 176, 205, 255, 183, 199, 229, 216, 227, 233, 243, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 114, 123, 144, 109, 122, 146, 255, 121, 136, 163, 255, 126, 142, 171, 255, 131, 148, 178, 255, 139, 156, 187, 255, 154, 172, 205, 255, 181, 198, 227, 255, 202, 215, 235, 255, 210, 220, 236, 255, 214, 224, 239, 255, 215, 227, 244, 255, 162, 171, 188, 236, 59, 63, 69, 241, 91, 102, 124, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 119, 134, 162, 255, 131, 144, 170, 255, 178, 191, 213, 255, 181, 199, 229, 255, 167, 184, 217, 217, 158, 174, 203, 193, 151, 165, 190, 230, 133, 147, 172, 255, 116, 130, 157, 255, 119, 134, 161, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 140, 169, 255, 135, 152, 183, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 125, 141, 170, 255, 144, 159, 186, 255, 171, 179, 195, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 201, 203, 9, 107, 111, 118, 185, 100, 112, 133, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 105, 119, 143, 255, 69, 76, 90, 255, 73, 78, 87, 255, 81, 85, 91, 255, 64, 68, 75, 193, 62, 66, 72, 191, 83, 87, 92, 191, 101, 105, 109, 217, 64, 70, 80, 255, 102, 115, 139, 255, 125, 139, 168, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 134, 151, 182, 255, 191, 198, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 91, 109, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 128, 144, 174, 255, 139, 155, 187, 255, 136, 147, 167, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 133, 160, 255, 157, 172, 202, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 90, 95, 27, 56, 60, 67, 255, 95, 106, 128, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 178, 191, 211, 255, 170, 181, 200, 255, 205, 209, 215, 106, 209, 210, 211, 64, 209, 210, 211, 64, 209, 210, 211, 64, 209, 210, 211, 64, 209, 210, 211, 64, 195, 197, 200, 118, 135, 142, 156, 237, 123, 134, 155, 255, 130, 141, 162, 255, 134, 145, 165, 255, 162, 172, 192, 255, 169, 180, 201, 255, 185, 196, 213, 255, 194, 203, 216, 255, 201, 208, 221, 255, 211, 217, 228, 255, 201, 207, 217, 255, 209, 215, 225, 255, 209, 215, 226, 215, 185, 186, 189, 69, 79, 82, 88, 255, 87, 97, 117, 255, 116, 130, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 131, 145, 169, 255, 193, 208, 232, 255, 189, 205, 233, 152, 215, 223, 238, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 150, 157, 117, 89, 97, 112, 251, 111, 125, 151, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 160, 255, 121, 135, 163, 255, 123, 138, 166, 255, 126, 142, 169, 255, 131, 145, 170, 255, 140, 155, 180, 255, 173, 190, 218, 255, 189, 198, 213, 150, 102, 105, 109, 200, 63, 72, 86, 255, 117, 131, 158, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 123, 137, 164, 255, 136, 151, 179, 255, 140, 157, 188, 255, 137, 154, 185, 255, 130, 147, 176, 255, 123, 139, 167, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 125, 140, 169, 255, 135, 152, 182, 255, 209, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 125, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 125, 140, 169, 255, 144, 159, 187, 255, 171, 179, 195, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 175, 35, 98, 102, 110, 255, 107, 120, 145, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 125, 141, 170, 255, 110, 122, 145, 255, 129, 131, 135, 131, 143, 145, 148, 64, 208, 208, 209, 64, 219, 219, 220, 3, 228, 229, 232, 27, 159, 166, 180, 62, 134, 142, 159, 207, 109, 122, 146, 255, 122, 137, 165, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 134, 151, 182, 255, 192, 198, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 91, 109, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 128, 144, 173, 255, 139, 155, 186, 255, 136, 147, 167, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 132, 159, 255, 157, 172, 202, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 176, 178, 21, 91, 94, 98, 231, 63, 71, 85, 255, 112, 125, 151, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 133, 145, 168, 255, 190, 203, 224, 255, 181, 198, 226, 225, 191, 203, 226, 133, 181, 193, 213, 59, 184, 192, 207, 59, 161, 171, 188, 59, 166, 173, 185, 173, 122, 131, 147, 247, 112, 125, 151, 255, 118, 133, 161, 255, 119, 134, 162, 255, 121, 136, 164, 255, 126, 142, 171, 255, 133, 149, 179, 255, 146, 163, 192, 255, 161, 177, 201, 255, 175, 188, 209, 255, 184, 196, 215, 255, 190, 203, 222, 255, 199, 214, 236, 255, 179, 192, 215, 186, 212, 213, 216, 33, 97, 100, 104, 197, 58, 66, 79, 255, 113, 127, 153, 255, 116, 130, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 117, 131, 157, 255, 152, 164, 185, 255, 191, 207, 231, 255, 184, 201, 230, 220, 200, 210, 228, 188, 160, 175, 204, 59, 163, 175, 197, 59, 180, 188, 202, 120, 139, 149, 168, 188, 111, 123, 143, 252, 109, 123, 148, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 125, 141, 170, 255, 150, 164, 189, 237, 188, 195, 208, 40, 139, 141, 144, 105, 56, 60, 68, 255, 98, 110, 133, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 125, 140, 169, 255, 135, 151, 182, 255, 209, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 92, 104, 125, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 125, 140, 169, 255, 144, 159, 187, 255, 171, 179, 195, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 119, 123, 35, 77, 82, 92, 255, 111, 124, 150, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 129, 145, 174, 255, 172, 190, 220, 255, 190, 204, 230, 188, 159, 177, 210, 62, 189, 199, 217, 119, 186, 195, 212, 188, 160, 171, 193, 217, 139, 153, 179, 255, 127, 142, 171, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 134, 151, 182, 255, 192, 198, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 90, 109, 255, 126, 142, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 128, 144, 173, 255, 138, 155, 186, 255, 136, 147, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 132, 159, 255, 157, 172, 202, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 154, 156, 124, 47, 51, 59, 255, 97, 109, 131, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 128, 141, 164, 255, 159, 176, 201, 255, 158, 177, 211, 255, 157, 174, 204, 255, 152, 166, 194, 255, 139, 153, 180, 255, 121, 135, 162, 255, 116, 130, 157, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 129, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 126, 141, 170, 255, 158, 172, 199, 243, 194, 202, 217, 57, 0, 0, 0, 0, 123, 125, 129, 82, 53, 57, 64, 255, 93, 105, 126, 255, 116, 130, 156, 255, 116, 130, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 133, 147, 170, 255, 160, 178, 205, 255, 155, 174, 208, 255, 152, 170, 203, 255, 148, 164, 194, 255, 134, 149, 178, 255, 123, 138, 166, 255, 118, 133, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 117, 131, 157, 255, 155, 163, 178, 178, 0, 0, 0, 0, 200, 201, 202, 19, 86, 89, 93, 184, 57, 63, 76, 255, 110, 123, 149, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 125, 140, 168, 255, 134, 151, 182, 255, 209, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 92, 104, 125, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 125, 140, 169, 255, 144, 159, 187, 255, 171, 180, 196, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 125, 128, 35, 74, 79, 87, 255, 108, 122, 146, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 154, 168, 191, 255, 172, 190, 219, 255, 160, 179, 214, 255, 151, 169, 202, 255, 142, 160, 193, 255, 136, 152, 183, 255, 128, 144, 173, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 134, 151, 182, 255, 192, 198, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 90, 109, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 128, 144, 173, 255, 138, 155, 186, 255, 136, 147, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 132, 159, 255, 157, 172, 201, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 187, 189, 19, 102, 104, 109, 233, 55, 61, 74, 255, 107, 120, 145, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 118, 133, 160, 255, 121, 136, 163, 255, 120, 135, 163, 255, 118, 132, 159, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 114, 128, 154, 255, 118, 132, 156, 255, 176, 183, 195, 171, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 13, 93, 96, 100, 196, 53, 60, 71, 255, 107, 121, 145, 255, 116, 130, 156, 255, 116, 130, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 119, 133, 161, 255, 122, 136, 164, 255, 122, 136, 164, 255, 118, 133, 160, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 112, 126, 152, 255, 114, 123, 141, 238, 188, 191, 198, 75, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 53, 82, 85, 90, 242, 62, 70, 84, 255, 110, 123, 148, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 125, 140, 168, 255, 134, 151, 182, 255, 209, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 92, 104, 125, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 125, 140, 169, 255, 145, 159, 187, 255, 171, 180, 196, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 178, 181, 35, 89, 92, 98, 255, 93, 105, 126, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 126, 141, 168, 255, 128, 144, 172, 255, 127, 143, 172, 255, 125, 140, 169, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 135, 151, 182, 255, 192, 199, 211, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 90, 109, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 144, 173, 255, 138, 155, 186, 255, 136, 147, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 132, 159, 255, 157, 172, 201, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 123, 126, 54, 59, 63, 68, 233, 59, 66, 80, 255, 107, 120, 145, 255, 113, 127, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 112, 125, 150, 255, 98, 110, 131, 255, 117, 125, 139, 187, 181, 184, 191, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 179, 181, 73, 75, 79, 84, 238, 60, 68, 81, 255, 106, 120, 143, 255, 116, 130, 156, 255, 116, 130, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 131, 158, 255, 109, 122, 147, 255, 99, 108, 126, 255, 167, 171, 177, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 170, 172, 90, 82, 85, 90, 242, 56, 63, 75, 255, 98, 110, 132, 255, 117, 131, 158, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 119, 133, 161, 255, 112, 126, 151, 255, 112, 126, 151, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 125, 140, 168, 255, 134, 151, 181, 255, 209, 214, 222, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 92, 104, 125, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 125, 140, 169, 255, 145, 160, 187, 255, 172, 180, 196, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 228, 229, 10, 110, 113, 117, 189, 61, 69, 83, 255, 120, 135, 162, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 135, 152, 183, 255, 193, 200, 211, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 80, 90, 109, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 143, 173, 255, 138, 155, 186, 255, 136, 147, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 118, 132, 159, 255, 157, 172, 201, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 111, 114, 53, 59, 62, 68, 234, 57, 65, 78, 255, 102, 114, 137, 255, 112, 126, 151, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 113, 127, 154, 255, 104, 117, 141, 255, 88, 98, 116, 255, 103, 109, 120, 187, 134, 138, 145, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 141, 144, 73, 82, 85, 90, 238, 52, 59, 70, 255, 98, 111, 133, 255, 115, 129, 155, 255, 116, 130, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 114, 129, 155, 255, 101, 113, 136, 255, 89, 98, 113, 255, 148, 151, 157, 173, 203, 205, 207, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 160, 162, 58, 82, 86, 90, 184, 52, 57, 65, 255, 67, 75, 91, 255, 98, 110, 133, 255, 113, 126, 152, 255, 117, 131, 159, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 117, 132, 158, 255, 114, 128, 154, 255, 107, 120, 145, 255, 84, 94, 114, 255, 58, 65, 79, 255, 101, 114, 137, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 124, 139, 168, 255, 134, 150, 181, 255, 209, 214, 222, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 92, 104, 125, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 125, 140, 169, 255, 145, 160, 188, 255, 172, 180, 197, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 147, 150, 72, 62, 66, 73, 255, 88, 98, 118, 255, 122, 137, 164, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 121, 136, 165, 255, 124, 139, 167, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 142, 159, 191, 255, 192, 200, 216, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 80, 90, 109, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 127, 143, 172, 255, 138, 154, 186, 255, 136, 146, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 118, 132, 159, 255, 157, 172, 201, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 118, 52, 78, 82, 87, 234, 47, 52, 61, 255, 75, 84, 101, 255, 105, 118, 141, 255, 112, 126, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 111, 125, 151, 255, 103, 116, 140, 255, 86, 97, 117, 255, 82, 89, 102, 255, 128, 132, 138, 187, 142, 144, 148, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 187, 189, 72, 101, 103, 108, 216, 47, 52, 61, 255, 78, 88, 106, 255, 105, 118, 141, 255, 115, 129, 155, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 115, 130, 155, 255, 104, 117, 141, 255, 81, 91, 109, 255, 87, 92, 103, 239, 166, 167, 171, 166, 209, 210, 211, 14, 0, 0, 0, 0, 0, 0, 0, 0, 190, 192, 196, 13, 196, 202, 212, 147, 202, 210, 225, 140, 149, 168, 202, 46, 197, 204, 217, 142, 190, 195, 203, 193, 152, 156, 163, 255, 71, 76, 85, 255, 46, 52, 63, 255, 59, 66, 80, 255, 72, 81, 98, 255, 86, 97, 117, 255, 89, 100, 120, 255, 87, 98, 118, 255, 85, 96, 115, 255, 80, 90, 108, 255, 69, 78, 94, 255, 66, 73, 85, 255, 68, 74, 83, 252, 87, 91, 97, 212, 68, 72, 78, 255, 102, 114, 137, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 124, 139, 168, 255, 137, 153, 182, 255, 192, 198, 210, 63, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 92, 104, 125, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 125, 141, 169, 255, 145, 160, 188, 255, 172, 181, 197, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 220, 10, 132, 134, 137, 166, 52, 57, 65, 255, 87, 98, 118, 255, 120, 134, 161, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 123, 138, 165, 255, 116, 130, 158, 255, 98, 111, 134, 255, 77, 86, 104, 255, 114, 128, 155, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 147, 164, 198, 255, 174, 187, 213, 202, 194, 202, 216, 11, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 80, 90, 109, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 127, 143, 172, 255, 138, 154, 185, 255, 136, 146, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 68, 76, 93, 255, 104, 117, 141, 255, 104, 117, 141, 255, 104, 117, 141, 255, 104, 117, 141, 255, 104, 117, 141, 255, 104, 117, 141, 255, 105, 117, 142, 255, 105, 117, 142, 255, 105, 117, 142, 255, 112, 126, 152, 255, 155, 171, 200, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 212, 46, 126, 128, 131, 152, 60, 63, 69, 235, 49, 55, 64, 255, 68, 77, 92, 255, 86, 97, 117, 255, 103, 116, 140, 255, 110, 123, 149, 255, 112, 126, 151, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 112, 126, 152, 255, 111, 125, 151, 255, 109, 122, 147, 255, 101, 114, 137, 255, 90, 101, 122, 255, 73, 82, 98, 255, 75, 80, 91, 255, 102, 106, 113, 221, 149, 151, 155, 112, 228, 228, 229, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 138, 141, 11, 127, 129, 132, 164, 71, 74, 80, 239, 51, 56, 65, 255, 68, 76, 92, 255, 95, 106, 128, 255, 108, 121, 145, 255, 112, 125, 151, 255, 115, 129, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 115, 129, 156, 255, 113, 127, 153, 255, 106, 119, 143, 255, 92, 104, 125, 255, 75, 85, 101, 255, 78, 84, 94, 255, 105, 109, 115, 171, 167, 169, 172, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 214, 216, 61, 100, 107, 119, 246, 126, 141, 171, 255, 149, 168, 202, 255, 151, 170, 204, 255, 152, 170, 204, 255, 156, 174, 207, 255, 160, 178, 204, 255, 167, 182, 201, 255, 168, 178, 194, 255, 164, 173, 186, 255, 166, 173, 185, 255, 141, 150, 164, 255, 82, 86, 94, 249, 85, 88, 93, 212, 98, 101, 106, 212, 120, 123, 126, 200, 88, 91, 95, 83, 165, 167, 169, 77, 158, 160, 163, 15, 92, 96, 101, 255, 102, 113, 137, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 122, 137, 165, 255, 139, 154, 181, 255, 144, 156, 178, 22, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 88, 100, 120, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 128, 155, 255, 115, 129, 155, 255, 118, 133, 160, 255, 143, 158, 185, 255, 172, 181, 197, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 194, 10, 140, 142, 145, 162, 50, 54, 61, 238, 64, 72, 87, 255, 101, 113, 136, 255, 118, 132, 159, 255, 121, 136, 164, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 120, 135, 162, 255, 116, 130, 157, 255, 104, 117, 140, 255, 81, 91, 109, 255, 66, 73, 85, 255, 73, 77, 85, 238, 50, 55, 63, 251, 98, 110, 132, 255, 119, 133, 161, 255, 119, 134, 162, 255, 120, 135, 163, 255, 121, 136, 164, 255, 121, 137, 164, 255, 122, 138, 165, 255, 123, 138, 166, 255, 124, 139, 167, 255, 133, 149, 179, 255, 144, 161, 190, 255, 175, 183, 198, 151, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 77, 87, 105, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 161, 255, 118, 133, 161, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 133, 161, 255, 120, 134, 162, 255, 133, 148, 178, 255, 136, 146, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 94, 99, 218, 51, 56, 64, 255, 60, 65, 76, 255, 60, 65, 76, 255, 60, 65, 76, 255, 60, 65, 76, 255, 60, 65, 76, 255, 60, 65, 76, 255, 60, 66, 76, 255, 60, 66, 76, 255, 60, 66, 76, 255, 65, 71, 82, 255, 131, 141, 161, 255, 207, 213, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 171, 173, 45, 125, 128, 131, 152, 89, 92, 96, 215, 50, 54, 60, 234, 54, 59, 67, 255, 56, 63, 75, 255, 63, 72, 86, 255, 72, 82, 98, 255, 79, 89, 107, 255, 83, 93, 112, 255, 83, 94, 113, 255, 80, 90, 108, 255, 75, 85, 102, 255, 67, 76, 91, 255, 64, 71, 86, 255, 64, 71, 82, 255, 67, 72, 80, 255, 76, 80, 87, 222, 113, 115, 120, 175, 161, 163, 165, 86, 228, 228, 229, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 206, 207, 53, 106, 109, 112, 99, 87, 90, 95, 218, 59, 63, 69, 255, 55, 61, 70, 255, 56, 63, 76, 255, 69, 78, 94, 255, 81, 91, 110, 255, 84, 94, 114, 255, 90, 101, 122, 255, 92, 104, 125, 255, 92, 104, 125, 255, 91, 102, 123, 255, 87, 98, 118, 255, 80, 90, 108, 255, 68, 77, 93, 255, 66, 73, 87, 255, 65, 70, 80, 255, 74, 79, 85, 219, 104, 107, 111, 165, 156, 158, 161, 86, 228, 228, 229, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 101, 105, 200, 68, 77, 93, 255, 120, 134, 161, 255, 121, 136, 164, 255, 122, 137, 165, 255, 123, 139, 166, 255, 125, 140, 166, 255, 127, 141, 166, 255, 127, 141, 166, 255, 127, 141, 166, 255, 132, 144, 169, 255, 186, 198, 218, 255, 183, 194, 213, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 219, 222, 3, 189, 191, 195, 118, 79, 86, 98, 255, 109, 122, 148, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 125, 140, 169, 255, 140, 152, 176, 255, 156, 164, 180, 22, 0, 0, 0, 0, 0, 0, 0, 0, 92, 95, 100, 223, 58, 64, 73, 255, 62, 68, 79, 255, 62, 68, 79, 255, 62, 68, 79, 255, 62, 68, 79, 255, 62, 68, 79, 255, 62, 68, 79, 255, 62, 68, 79, 255, 62, 68, 79, 255, 63, 70, 81, 255, 108, 117, 133, 255, 172, 180, 193, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 140, 143, 63, 102, 105, 109, 218, 57, 61, 68, 255, 57, 64, 76, 255, 67, 75, 90, 255, 79, 89, 107, 255, 88, 98, 119, 255, 95, 106, 128, 255, 90, 101, 122, 255, 86, 96, 117, 255, 80, 90, 109, 255, 67, 75, 89, 255, 66, 72, 83, 255, 60, 64, 72, 237, 100, 103, 108, 215, 108, 111, 115, 96, 199, 200, 202, 51, 97, 100, 104, 228, 60, 67, 77, 255, 70, 76, 89, 255, 73, 80, 93, 255, 76, 84, 98, 255, 79, 87, 102, 255, 82, 90, 105, 255, 84, 93, 109, 255, 86, 96, 112, 255, 88, 98, 114, 255, 90, 100, 117, 255, 95, 106, 124, 255, 120, 129, 146, 234, 164, 169, 177, 44, 0, 0, 0, 0, 103, 107, 111, 182, 57, 62, 72, 255, 63, 69, 80, 255, 63, 69, 80, 255, 63, 69, 80, 255, 63, 69, 81, 255, 63, 69, 81, 255, 63, 69, 81, 255, 63, 69, 81, 255, 63, 69, 81, 255, 64, 70, 81, 255, 88, 97, 112, 255, 138, 147, 164, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 152, 154, 76, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 144, 148, 154, 89, 220, 224, 230, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 194, 43, 124, 126, 130, 89, 144, 146, 149, 214, 111, 114, 117, 217, 103, 106, 110, 217, 83, 86, 91, 217, 69, 73, 79, 217, 75, 79, 85, 217, 87, 90, 95, 217, 107, 110, 114, 217, 123, 126, 129, 217, 120, 122, 125, 172, 105, 108, 111, 89, 187, 188, 189, 89, 219, 219, 220, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 220, 8, 195, 195, 197, 89, 122, 124, 128, 89, 124, 127, 130, 160, 106, 109, 113, 217, 82, 85, 90, 217, 74, 78, 83, 217, 57, 61, 67, 217, 58, 63, 69, 217, 58, 62, 69, 217, 58, 62, 68, 217, 73, 76, 82, 217, 100, 103, 108, 217, 125, 128, 131, 217, 80, 83, 88, 98, 155, 156, 159, 89, 191, 192, 194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 111, 115, 116, 54, 59, 70, 255, 111, 124, 149, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 152, 165, 188, 255, 187, 204, 231, 243, 183, 199, 228, 166, 204, 213, 228, 166, 209, 215, 227, 166, 197, 204, 217, 166, 162, 172, 190, 173, 128, 138, 157, 255, 105, 118, 142, 255, 118, 133, 160, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 123, 138, 166, 255, 145, 155, 173, 239, 198, 202, 209, 19, 0, 0, 0, 0, 0, 0, 0, 0, 149, 151, 154, 78, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 133, 136, 139, 89, 183, 186, 190, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 210, 211, 7, 169, 170, 173, 89, 130, 132, 135, 161, 123, 125, 128, 217, 99, 102, 106, 217, 77, 81, 86, 217, 57, 62, 68, 217, 76, 80, 85, 217, 88, 92, 97, 217, 108, 111, 115, 217, 111, 114, 117, 158, 127, 129, 132, 89, 187, 188, 190, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 166, 168, 79, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 135, 138, 143, 89, 169, 173, 179, 23, 0, 0, 0, 0, 157, 158, 161, 63, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 120, 123, 127, 89, 162, 166, 173, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 149, 151, 71, 62, 67, 74, 255, 95, 107, 129, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 120, 134, 161, 255, 152, 165, 187, 255, 167, 184, 214, 255, 156, 175, 210, 255, 146, 164, 197, 255, 140, 157, 189, 255, 132, 148, 178, 255, 121, 137, 164, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 115, 129, 155, 255, 143, 151, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 220, 26, 100, 103, 107, 202, 55, 62, 75, 255, 111, 124, 150, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 122, 137, 165, 255, 122, 136, 164, 255, 120, 135, 163, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 115, 129, 155, 255, 115, 124, 141, 255, 200, 202, 208, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 160, 162, 60, 72, 76, 81, 248, 67, 75, 91, 255, 112, 126, 152, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 112, 125, 151, 255, 91, 101, 119, 255, 159, 162, 169, 172, 222, 223, 225, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 226, 234, 2, 216, 221, 230, 30, 197, 204, 217, 30, 201, 208, 220, 30, 221, 225, 233, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 227, 234, 5, 219, 223, 232, 30, 215, 220, 229, 30, 221, 226, 233, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 159, 162, 108, 71, 75, 80, 248, 65, 73, 87, 255, 108, 121, 145, 255, 117, 131, 158, 255, 118, 132, 159, 255, 118, 132, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 118, 132, 159, 255, 105, 118, 142, 255, 81, 90, 106, 255, 129, 132, 139, 172, 167, 169, 172, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 183, 201, 136, 158, 170, 192, 156, 158, 170, 193, 156, 158, 170, 193, 156, 158, 170, 193, 156, 158, 170, 193, 156, 161, 172, 194, 156, 178, 188, 205, 156, 185, 194, 210, 48, 0, 0, 0, 0, 203, 210, 221, 117, 158, 170, 192, 156, 158, 170, 192, 156, 167, 178, 198, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 203, 216, 104, 157, 169, 192, 156, 158, 170, 192, 156, 176, 185, 203, 136, 0, 0, 0, 0, 0, 0, 0, 0, 175, 185, 203, 2, 200, 207, 219, 102, 162, 174, 195, 162, 165, 176, 197, 255, 155, 167, 190, 255, 157, 169, 191, 255, 168, 179, 199, 253, 169, 180, 199, 155, 170, 181, 200, 27, 200, 207, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 173, 194, 139, 158, 170, 192, 156, 158, 170, 193, 156, 158, 170, 193, 156, 158, 170, 193, 156, 158, 170, 193, 156, 159, 171, 192, 156, 172, 182, 201, 156, 205, 211, 223, 118, 202, 209, 221, 6, 0, 0, 0, 0, 171, 182, 201, 119, 158, 170, 192, 156, 159, 171, 193, 156, 176, 186, 204, 56, 0, 0, 0, 0, 0, 0, 0, 0, 190, 198, 213, 18, 182, 191, 208, 114, 159, 171, 193, 171, 167, 177, 198, 255, 164, 175, 196, 255, 167, 178, 198, 243, 161, 173, 194, 156, 182, 191, 207, 78, 201, 208, 220, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 171, 173, 107, 77, 81, 85, 236, 48, 54, 64, 255, 84, 94, 114, 255, 112, 125, 150, 255, 117, 131, 158, 255, 118, 132, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 117, 131, 158, 255, 104, 118, 141, 255, 82, 92, 111, 255, 72, 78, 89, 244, 145, 147, 151, 172, 164, 166, 168, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 160, 184, 223, 127, 143, 172, 255, 127, 143, 172, 255, 129, 144, 173, 255, 129, 145, 173, 255, 129, 145, 173, 255, 127, 143, 172, 255, 127, 143, 172, 255, 142, 156, 181, 227, 179, 188, 205, 48, 187, 196, 211, 192, 127, 143, 172, 255, 127, 143, 172, 255, 140, 154, 180, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 187, 204, 171, 127, 143, 172, 255, 127, 143, 172, 255, 151, 165, 188, 223, 0, 0, 0, 0, 162, 173, 194, 2, 152, 165, 188, 110, 136, 151, 178, 255, 127, 143, 172, 255, 129, 144, 173, 255, 134, 149, 177, 255, 133, 148, 176, 255, 128, 144, 172, 255, 127, 143, 172, 255, 144, 158, 183, 255, 189, 197, 212, 91, 219, 223, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 147, 175, 228, 127, 143, 172, 255, 127, 143, 172, 255, 129, 144, 173, 255, 129, 145, 173, 255, 129, 145, 173, 255, 128, 143, 172, 255, 127, 143, 172, 255, 139, 154, 180, 255, 189, 198, 212, 132, 0, 0, 0, 0, 146, 160, 185, 194, 127, 143, 172, 255, 128, 144, 173, 255, 190, 198, 213, 199, 0, 0, 0, 0, 186, 195, 210, 42, 159, 171, 192, 223, 130, 146, 174, 255, 127, 143, 172, 255, 130, 146, 174, 255, 133, 148, 176, 255, 129, 145, 173, 255, 127, 143, 172, 255, 134, 149, 177, 255, 167, 178, 198, 184, 198, 205, 218, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 24, 98, 101, 105, 133, 61, 65, 71, 249, 51, 56, 67, 255, 71, 80, 96, 255, 97, 108, 131, 255, 109, 123, 148, 255, 114, 128, 155, 255, 116, 131, 157, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 158, 255, 116, 131, 157, 255, 117, 130, 157, 255, 116, 130, 156, 255, 112, 125, 152, 255, 101, 113, 136, 255, 87, 98, 118, 255, 70, 78, 93, 255, 62, 67, 77, 244, 88, 92, 98, 172, 141, 143, 146, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 160, 185, 223, 127, 143, 172, 255, 128, 143, 172, 255, 170, 181, 200, 205, 149, 162, 186, 105, 168, 179, 199, 144, 146, 159, 184, 251, 127, 143, 172, 255, 128, 143, 172, 255, 181, 191, 207, 189, 188, 196, 212, 192, 127, 143, 172, 255, 127, 143, 172, 255, 141, 155, 181, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 187, 205, 171, 127, 143, 172, 255, 127, 143, 172, 255, 152, 165, 188, 223, 0, 0, 0, 0, 180, 190, 207, 102, 133, 148, 176, 255, 127, 143, 172, 255, 133, 148, 176, 254, 159, 171, 193, 161, 201, 208, 220, 105, 191, 199, 214, 105, 146, 160, 185, 172, 131, 147, 175, 255, 134, 149, 177, 255, 174, 183, 202, 245, 208, 214, 225, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 148, 176, 228, 127, 143, 172, 255, 127, 143, 172, 255, 142, 156, 182, 126, 148, 161, 186, 105, 149, 162, 186, 105, 155, 167, 190, 217, 128, 144, 173, 255, 127, 143, 172, 255, 148, 161, 185, 190, 228, 232, 238, 5, 147, 160, 185, 194, 127, 143, 172, 255, 129, 145, 173, 255, 191, 199, 213, 199, 220, 225, 232, 31, 167, 178, 198, 224, 127, 143, 172, 255, 127, 143, 172, 255, 139, 154, 180, 220, 163, 174, 195, 105, 188, 196, 212, 105, 151, 164, 188, 120, 135, 150, 177, 247, 127, 143, 172, 255, 130, 146, 174, 255, 166, 177, 197, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 198, 200, 76, 117, 120, 123, 132, 98, 101, 105, 236, 52, 56, 62, 249, 47, 52, 60, 255, 55, 61, 72, 255, 61, 69, 83, 255, 67, 75, 91, 255, 70, 79, 95, 255, 71, 80, 97, 255, 68, 77, 93, 255, 66, 74, 89, 255, 63, 71, 85, 255, 62, 69, 81, 255, 55, 61, 71, 255, 64, 69, 76, 245, 99, 102, 107, 236, 121, 123, 127, 171, 173, 174, 176, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 160, 185, 223, 127, 143, 172, 255, 128, 144, 173, 255, 199, 206, 218, 176, 191, 199, 214, 19, 183, 192, 208, 19, 158, 170, 192, 208, 127, 143, 172, 255, 127, 143, 172, 255, 174, 184, 203, 189, 188, 196, 212, 192, 127, 143, 172, 255, 127, 143, 172, 255, 141, 155, 181, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 187, 205, 171, 127, 143, 172, 255, 127, 143, 172, 255, 152, 165, 188, 223, 227, 230, 236, 17, 166, 176, 197, 213, 127, 143, 172, 255, 128, 144, 172, 255, 172, 182, 201, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 182, 201, 2, 176, 186, 204, 107, 208, 214, 224, 107, 226, 230, 236, 55, 0, 0, 0, 0, 210, 216, 226, 78, 216, 221, 230, 148, 216, 221, 230, 148, 216, 221, 230, 148, 218, 223, 231, 87, 0, 0, 0, 0, 133, 148, 176, 228, 127, 143, 172, 255, 127, 143, 172, 255, 184, 193, 209, 117, 149, 162, 186, 19, 148, 161, 185, 19, 170, 180, 200, 159, 130, 146, 174, 255, 127, 143, 172, 255, 148, 161, 185, 214, 228, 232, 238, 24, 147, 160, 185, 194, 127, 143, 172, 255, 129, 145, 173, 255, 191, 199, 213, 199, 169, 180, 199, 53, 140, 154, 180, 255, 127, 143, 172, 255, 137, 151, 178, 255, 180, 189, 206, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 179, 199, 157, 127, 143, 172, 255, 127, 143, 172, 255, 150, 163, 187, 236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 212, 214, 74, 167, 169, 171, 110, 105, 108, 112, 110, 120, 122, 125, 192, 125, 127, 130, 239, 123, 125, 128, 239, 114, 117, 121, 239, 126, 129, 132, 239, 115, 118, 122, 165, 73, 77, 81, 110, 114, 117, 120, 110, 162, 164, 166, 110, 228, 228, 229, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 160, 185, 223, 127, 143, 172, 255, 127, 143, 172, 255, 147, 161, 185, 255, 155, 167, 190, 255, 151, 164, 188, 255, 130, 146, 174, 255, 127, 143, 172, 255, 135, 150, 177, 255, 183, 192, 208, 115, 187, 196, 212, 192, 127, 143, 172, 255, 127, 143, 172, 255, 141, 155, 181, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 187, 205, 171, 127, 143, 172, 255, 127, 143, 172, 255, 152, 165, 188, 223, 216, 221, 230, 29, 162, 174, 195, 255, 127, 143, 172, 255, 130, 145, 174, 255, 162, 173, 195, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 165, 188, 247, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 136, 151, 178, 150, 0, 0, 0, 0, 133, 148, 176, 228, 127, 143, 172, 255, 127, 143, 172, 255, 135, 150, 177, 255, 137, 151, 178, 255, 136, 151, 178, 255, 128, 144, 173, 255, 127, 143, 172, 255, 131, 147, 175, 255, 179, 188, 206, 175, 0, 0, 0, 0, 147, 160, 185, 194, 127, 143, 172, 255, 129, 145, 173, 255, 191, 199, 213, 199, 187, 195, 211, 126, 129, 145, 174, 255, 127, 143, 172, 255, 144, 158, 183, 230, 227, 231, 237, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 202, 215, 84, 127, 143, 172, 255, 127, 143, 172, 255, 132, 147, 175, 236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 160, 185, 223, 127, 143, 172, 255, 127, 143, 172, 255, 133, 148, 176, 255, 135, 150, 177, 255, 135, 150, 177, 255, 137, 152, 179, 255, 146, 160, 184, 244, 169, 180, 199, 141, 226, 230, 236, 26, 187, 196, 211, 192, 127, 143, 172, 255, 127, 143, 172, 255, 141, 155, 181, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 187, 204, 171, 127, 143, 172, 255, 127, 143, 172, 255, 153, 166, 189, 223, 220, 224, 232, 28, 164, 175, 196, 250, 127, 143, 172, 255, 129, 144, 173, 255, 179, 189, 206, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 173, 194, 0, 158, 170, 192, 13, 169, 180, 199, 13, 186, 195, 211, 13, 196, 203, 217, 0, 160, 172, 193, 240, 141, 155, 181, 255, 141, 155, 181, 255, 140, 154, 181, 255, 147, 160, 185, 150, 0, 0, 0, 0, 133, 148, 176, 228, 127, 143, 172, 255, 127, 143, 172, 255, 141, 156, 181, 250, 140, 155, 181, 246, 129, 145, 173, 255, 127, 143, 172, 255, 136, 151, 178, 255, 169, 180, 200, 141, 218, 222, 231, 24, 0, 0, 0, 0, 147, 160, 185, 194, 127, 143, 172, 255, 129, 145, 173, 255, 191, 199, 213, 199, 184, 193, 209, 110, 131, 147, 175, 255, 127, 143, 172, 255, 139, 154, 180, 236, 204, 211, 222, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 190, 207, 100, 127, 143, 172, 255, 127, 143, 172, 255, 136, 151, 178, 236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 160, 185, 223, 127, 143, 172, 255, 128, 144, 173, 255, 197, 204, 217, 208, 216, 221, 230, 115, 216, 221, 230, 115, 221, 226, 233, 115, 230, 233, 239, 24, 0, 0, 0, 0, 0, 0, 0, 0, 193, 201, 215, 187, 128, 144, 173, 255, 127, 143, 172, 255, 138, 152, 179, 231, 178, 187, 204, 49, 217, 222, 231, 11, 210, 216, 226, 33, 162, 174, 195, 217, 127, 143, 172, 255, 127, 143, 172, 255, 167, 178, 198, 217, 0, 0, 0, 0, 162, 174, 194, 150, 127, 143, 172, 255, 127, 143, 172, 255, 146, 160, 185, 247, 200, 207, 219, 67, 216, 221, 230, 11, 203, 210, 222, 11, 165, 176, 196, 80, 141, 155, 181, 255, 146, 160, 184, 255, 167, 178, 198, 255, 185, 194, 210, 5, 228, 232, 238, 53, 229, 233, 238, 115, 229, 233, 238, 115, 229, 233, 238, 115, 229, 233, 238, 68, 0, 0, 0, 0, 133, 148, 176, 228, 127, 143, 172, 255, 127, 143, 172, 255, 188, 196, 212, 94, 204, 211, 222, 39, 146, 159, 184, 232, 127, 143, 172, 255, 130, 145, 174, 255, 160, 172, 193, 125, 213, 219, 228, 2, 0, 0, 0, 0, 147, 160, 185, 194, 127, 143, 172, 255, 129, 145, 173, 255, 191, 199, 213, 199, 189, 196, 212, 51, 147, 160, 185, 252, 127, 143, 172, 255, 131, 146, 174, 255, 165, 176, 197, 158, 191, 199, 214, 11, 219, 224, 232, 11, 187, 195, 211, 26, 154, 166, 189, 211, 127, 143, 172, 255, 128, 143, 172, 255, 175, 185, 203, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 160, 185, 223, 127, 143, 172, 255, 128, 144, 173, 255, 201, 207, 220, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 200, 215, 61, 147, 160, 185, 253, 127, 143, 172, 255, 127, 143, 172, 255, 144, 158, 183, 255, 169, 180, 199, 255, 156, 169, 191, 255, 129, 145, 173, 255, 127, 143, 172, 255, 134, 149, 176, 254, 170, 180, 200, 91, 0, 0, 0, 0, 186, 194, 210, 25, 156, 168, 191, 252, 127, 143, 172, 255, 127, 143, 172, 255, 140, 154, 180, 255, 169, 179, 199, 255, 162, 174, 195, 255, 131, 147, 175, 255, 127, 143, 172, 255, 129, 145, 174, 255, 189, 198, 212, 184, 226, 230, 236, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 148, 176, 228, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 36, 0, 0, 0, 0, 185, 194, 209, 141, 132, 148, 175, 254, 127, 143, 172, 255, 143, 158, 183, 255, 181, 191, 207, 59, 0, 0, 0, 0, 147, 160, 185, 194, 127, 143, 172, 255, 129, 145, 173, 255, 191, 199, 213, 199, 0, 0, 0, 0, 160, 171, 193, 108, 132, 147, 175, 252, 127, 143, 172, 255, 130, 145, 173, 255, 157, 169, 191, 255, 170, 180, 200, 255, 150, 163, 187, 255, 127, 143, 172, 255, 127, 143, 172, 255, 144, 158, 183, 239, 190, 198, 213, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 164, 187, 219, 134, 149, 177, 250, 134, 149, 177, 250, 203, 209, 221, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 201, 215, 120, 157, 169, 192, 250, 134, 149, 177, 253, 130, 145, 173, 255, 128, 144, 173, 255, 129, 145, 173, 255, 133, 148, 176, 254, 147, 161, 185, 250, 177, 187, 205, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 222, 230, 72, 162, 174, 195, 196, 138, 153, 179, 250, 131, 146, 174, 255, 128, 144, 173, 255, 129, 145, 173, 255, 133, 149, 176, 255, 151, 164, 187, 249, 177, 186, 204, 121, 210, 215, 226, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 152, 178, 224, 134, 149, 177, 250, 134, 149, 177, 250, 134, 149, 177, 35, 0, 0, 0, 0, 0, 0, 0, 0, 157, 169, 191, 205, 134, 149, 176, 250, 134, 149, 176, 250, 158, 170, 192, 183, 0, 0, 0, 0, 151, 164, 188, 190, 134, 149, 176, 250, 135, 150, 177, 250, 193, 201, 215, 195, 0, 0, 0, 0, 0, 0, 0, 0, 171, 182, 201, 107, 153, 166, 189, 250, 134, 149, 176, 253, 129, 145, 173, 255, 128, 144, 173, 255, 130, 146, 174, 255, 137, 152, 179, 252, 169, 179, 199, 237, 189, 197, 212, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 226, 233, 89, 204, 210, 222, 123, 193, 201, 215, 123, 200, 206, 219, 123, 218, 222, 231, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 221, 230, 8, 209, 215, 225, 123, 194, 201, 215, 123, 199, 207, 219, 123, 223, 227, 234, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 237, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 224, 232, 82, 201, 208, 220, 123, 194, 202, 216, 123, 207, 213, 224, 123, 223, 227, 234, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(208, 48, imgdata);
+ return image;
+}
+
diff --git a/iup/srcimglib/iup_imglib_logos8.h b/iup/srcimglib/iup_imglib_logos8.h
new file mode 100755
index 0000000..c25cc89
--- /dev/null
+++ b/iup/srcimglib/iup_imglib_logos8.h
@@ -0,0 +1,1915 @@
+static Ihandle* load_image_LogoBR8(void)
+{
+ unsigned char imgdata[] = {
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125,
+ 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125,
+ 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125,
+ 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125,
+ 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125,
+ 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125,
+ 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125,
+ 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125,
+ 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125,
+ 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125,
+ 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 6, 6, 6, 6, 6, 6, 6, 14, 123, 125, 125, 125, 125, 125, 125, 125, 124, 106, 78, 30, 6, 6, 6, 6, 6, 6, 51, 125, 125, 125, 125, 125, 125, 125, 125, 124, 104, 62, 19, 6, 6, 6, 6, 6, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 0, 32, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 50, 0, 0, 0, 0, 0, 89, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 105, 18, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 0, 65, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 122, 20, 0, 0, 0, 8, 121, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 66, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 2, 108, 125, 125, 125, 110, 34, 34, 34, 36, 61, 125, 125, 125, 125, 42, 0, 0, 0, 31, 125, 125, 125, 125, 70, 39, 39, 39, 48, 99, 125, 125, 125, 108, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 24, 125, 125, 125, 125, 70, 0, 0, 0, 0, 0, 103, 125, 125, 125, 42, 0, 0, 0, 64, 125, 125, 125, 125, 24, 0, 0, 0, 0, 29, 125, 125, 125, 115, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 54, 125, 125, 125, 125, 38, 0, 0, 0, 0, 21, 120, 125, 125, 125, 22, 0, 0, 1, 104, 125, 125, 125, 109, 2, 0, 0, 0, 0, 33, 125, 125, 125, 91, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 94, 125, 125, 125, 125, 68, 59, 59, 59, 64, 111, 125, 125, 125, 73, 0, 0, 0, 23, 125, 125, 125, 125, 71, 0, 0, 0, 1, 27, 104, 125, 125, 125, 39, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 13, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 86, 7, 0, 0, 0, 52, 125, 125, 125, 125, 114, 105, 105, 105, 112, 125, 125, 125, 125, 75, 1, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 38, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 119, 29, 0, 0, 0, 0, 92, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 123, 59, 5, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 72, 125, 125, 125, 125, 83, 74, 74, 74, 93, 125, 125, 125, 125, 113, 15, 0, 0, 10, 123, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 89, 9, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 4, 111, 125, 125, 125, 111, 4, 0, 0, 0, 0, 79, 125, 125, 125, 125, 46, 0, 0, 35, 125, 125, 125, 125, 76, 41, 41, 45, 71, 125, 125, 125, 125, 60, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 27, 125, 125, 125, 125, 72, 0, 0, 0, 0, 0, 63, 125, 125, 125, 125, 52, 0, 0, 69, 125, 125, 125, 125, 28, 0, 0, 0, 0, 100, 125, 125, 125, 88, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 56, 125, 125, 125, 125, 38, 0, 0, 0, 0, 25, 116, 125, 125, 125, 125, 37, 0, 3, 109, 125, 125, 125, 113, 4, 0, 0, 0, 0, 90, 125, 125, 125, 94, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 97, 125, 125, 125, 125, 96, 90, 90, 90, 98, 124, 125, 125, 125, 125, 118, 12, 0, 26, 125, 125, 125, 125, 77, 0, 0, 0, 0, 0, 84, 125, 125, 125, 98, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 16, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 50, 0, 0, 55, 125, 125, 125, 125, 44, 0, 0, 0, 0, 0, 80, 125, 125, 125, 102, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 43, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 117, 47, 0, 0, 0, 95, 125, 125, 125, 125, 17, 0, 0, 0, 0, 0, 72, 125, 125, 125, 107, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 49, 82, 82, 82, 82, 82, 82, 82, 82, 82, 81, 72, 58, 40, 11, 0, 0, 0, 7, 85, 87, 87, 87, 67, 0, 0, 0, 0, 0, 0, 57, 101, 101, 101, 97, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125};
+
+ Ihandle* image = IupImage(48, 48, imgdata);
+
+ IupSetAttribute(image, "0", "0 140 79");
+ IupSetAttribute(image, "1", "1 140 80");
+ IupSetAttribute(image, "2", "3 141 81");
+ IupSetAttribute(image, "3", "4 141 81");
+ IupSetAttribute(image, "4", "4 142 82");
+ IupSetAttribute(image, "5", "5 142 83");
+ IupSetAttribute(image, "6", "8 142 83");
+ IupSetAttribute(image, "7", "12 145 87");
+ IupSetAttribute(image, "8", "16 146 89");
+ IupSetAttribute(image, "9", "19 148 92");
+ IupSetAttribute(image, "10", "20 149 92");
+ IupSetAttribute(image, "11", "22 149 93");
+ IupSetAttribute(image, "12", "22 149 94");
+ IupSetAttribute(image, "13", "23 150 94");
+ IupSetAttribute(image, "14", "26 150 95");
+ IupSetAttribute(image, "15", "25 151 96");
+ IupSetAttribute(image, "16", "28 152 98");
+ IupSetAttribute(image, "17", "31 153 100");
+ IupSetAttribute(image, "18", "31 154 100");
+ IupSetAttribute(image, "19", "35 154 101");
+ IupSetAttribute(image, "20", "36 156 103");
+ IupSetAttribute(image, "21", "38 157 105");
+ IupSetAttribute(image, "22", "43 159 108");
+ IupSetAttribute(image, "23", "51 162 114");
+ IupSetAttribute(image, "24", "54 164 116");
+ IupSetAttribute(image, "25", "56 164 117");
+ IupSetAttribute(image, "26", "58 165 118");
+ IupSetAttribute(image, "27", "61 166 120");
+ IupSetAttribute(image, "28", "64 168 122");
+ IupSetAttribute(image, "29", "66 169 124");
+ IupSetAttribute(image, "30", "73 171 127");
+ IupSetAttribute(image, "31", "85 177 137");
+ IupSetAttribute(image, "32", "89 179 140");
+ IupSetAttribute(image, "33", "90 180 140");
+ IupSetAttribute(image, "34", "90 181 141");
+ IupSetAttribute(image, "35", "92 180 141");
+ IupSetAttribute(image, "36", "92 181 142");
+ IupSetAttribute(image, "37", "94 182 143");
+ IupSetAttribute(image, "38", "95 182 144");
+ IupSetAttribute(image, "39", "97 183 145");
+ IupSetAttribute(image, "40", "98 184 146");
+ IupSetAttribute(image, "41", "99 185 147");
+ IupSetAttribute(image, "42", "100 184 147");
+ IupSetAttribute(image, "43", "101 185 148");
+ IupSetAttribute(image, "44", "103 186 149");
+ IupSetAttribute(image, "45", "104 186 150");
+ IupSetAttribute(image, "46", "106 187 151");
+ IupSetAttribute(image, "47", "110 189 154");
+ IupSetAttribute(image, "48", "111 189 155");
+ IupSetAttribute(image, "49", "115 191 157");
+ IupSetAttribute(image, "50", "122 194 162");
+ IupSetAttribute(image, "51", "124 194 163");
+ IupSetAttribute(image, "52", "125 196 164");
+ IupSetAttribute(image, "53", "255 204 48");
+ IupSetAttribute(image, "54", "129 197 167");
+ IupSetAttribute(image, "55", "132 199 169");
+ IupSetAttribute(image, "56", "135 200 171");
+ IupSetAttribute(image, "57", "140 202 174");
+ IupSetAttribute(image, "58", "145 205 178");
+ IupSetAttribute(image, "59", "146 205 179");
+ IupSetAttribute(image, "60", "150 207 182");
+ IupSetAttribute(image, "61", "155 209 185");
+ IupSetAttribute(image, "62", "159 210 186");
+ IupSetAttribute(image, "63", "157 210 187");
+ IupSetAttribute(image, "64", "158 211 188");
+ IupSetAttribute(image, "65", "163 213 190");
+ IupSetAttribute(image, "66", "163 213 191");
+ IupSetAttribute(image, "67", "165 213 191");
+ IupSetAttribute(image, "68", "166 213 192");
+ IupSetAttribute(image, "69", "165 214 192");
+ IupSetAttribute(image, "70", "166 214 193");
+ IupSetAttribute(image, "71", "168 215 194");
+ IupSetAttribute(image, "72", "169 215 195");
+ IupSetAttribute(image, "73", "170 216 195");
+ IupSetAttribute(image, "74", "170 216 196");
+ IupSetAttribute(image, "75", "172 217 197");
+ IupSetAttribute(image, "76", "173 218 198");
+ IupSetAttribute(image, "77", "175 218 199");
+ IupSetAttribute(image, "78", "176 217 198");
+ IupSetAttribute(image, "79", "177 219 200");
+ IupSetAttribute(image, "80", "178 219 201");
+ IupSetAttribute(image, "81", "178 220 201");
+ IupSetAttribute(image, "82", "179 220 202");
+ IupSetAttribute(image, "83", "182 222 204");
+ IupSetAttribute(image, "84", "186 223 207");
+ IupSetAttribute(image, "85", "188 223 207");
+ IupSetAttribute(image, "86", "187 224 208");
+ IupSetAttribute(image, "87", "189 224 208");
+ IupSetAttribute(image, "88", "191 226 210");
+ IupSetAttribute(image, "89", "192 226 211");
+ IupSetAttribute(image, "90", "195 227 213");
+ IupSetAttribute(image, "91", "199 229 215");
+ IupSetAttribute(image, "92", "199 229 216");
+ IupSetAttribute(image, "93", "201 230 217");
+ IupSetAttribute(image, "94", "202 231 218");
+ IupSetAttribute(image, "95", "205 232 220");
+ IupSetAttribute(image, "96", "206 233 221");
+ IupSetAttribute(image, "97", "209 233 222");
+ IupSetAttribute(image, "98", "213 235 225");
+ IupSetAttribute(image, "99", "216 237 228");
+ IupSetAttribute(image, "100", "219 238 230");
+ IupSetAttribute(image, "101", "221 239 231");
+ IupSetAttribute(image, "102", "222 240 232");
+ IupSetAttribute(image, "103", "230 243 236");
+ IupSetAttribute(image, "104", "230 242 237");
+ IupSetAttribute(image, "105", "230 244 238");
+ IupSetAttribute(image, "106", "233 243 238");
+ IupSetAttribute(image, "107", "233 244 239");
+ IupSetAttribute(image, "108", "234 245 240");
+ IupSetAttribute(image, "109", "236 246 241");
+ IupSetAttribute(image, "110", "236 246 242");
+ IupSetAttribute(image, "111", "238 247 243");
+ IupSetAttribute(image, "112", "239 247 244");
+ IupSetAttribute(image, "113", "241 248 245");
+ IupSetAttribute(image, "114", "243 249 247");
+ IupSetAttribute(image, "115", "244 249 247");
+ IupSetAttribute(image, "116", "244 250 247");
+ IupSetAttribute(image, "117", "246 251 249");
+ IupSetAttribute(image, "118", "248 251 250");
+ IupSetAttribute(image, "119", "248 252 250");
+ IupSetAttribute(image, "120", "250 253 251");
+ IupSetAttribute(image, "121", "250 253 252");
+ IupSetAttribute(image, "122", "252 253 253");
+ IupSetAttribute(image, "123", "252 254 253");
+ IupSetAttribute(image, "124", "253 254 254");
+ IupSetAttribute(image, "125", "254 255 255");
+ IupSetAttribute(image, "126", "0 0 0");
+ IupSetAttribute(image, "127", "0 0 0");
+ IupSetAttribute(image, "128", "0 0 0");
+ IupSetAttribute(image, "129", "0 0 0");
+ IupSetAttribute(image, "130", "0 0 0");
+ IupSetAttribute(image, "131", "0 0 0");
+ IupSetAttribute(image, "132", "0 0 0");
+ IupSetAttribute(image, "133", "0 0 0");
+ IupSetAttribute(image, "134", "0 0 0");
+ IupSetAttribute(image, "135", "0 0 0");
+ IupSetAttribute(image, "136", "0 0 0");
+ IupSetAttribute(image, "137", "0 0 0");
+ IupSetAttribute(image, "138", "0 0 0");
+ IupSetAttribute(image, "139", "0 0 0");
+ IupSetAttribute(image, "140", "0 0 0");
+ IupSetAttribute(image, "141", "0 0 0");
+ IupSetAttribute(image, "142", "0 0 0");
+ IupSetAttribute(image, "143", "0 0 0");
+ IupSetAttribute(image, "144", "0 0 0");
+ IupSetAttribute(image, "145", "0 0 0");
+ IupSetAttribute(image, "146", "0 0 0");
+ IupSetAttribute(image, "147", "0 0 0");
+ IupSetAttribute(image, "148", "0 0 0");
+ IupSetAttribute(image, "149", "0 0 0");
+ IupSetAttribute(image, "150", "0 0 0");
+ IupSetAttribute(image, "151", "0 0 0");
+ IupSetAttribute(image, "152", "0 0 0");
+ IupSetAttribute(image, "153", "0 0 0");
+ IupSetAttribute(image, "154", "0 0 0");
+ IupSetAttribute(image, "155", "0 0 0");
+ IupSetAttribute(image, "156", "0 0 0");
+ IupSetAttribute(image, "157", "0 0 0");
+ IupSetAttribute(image, "158", "0 0 0");
+ IupSetAttribute(image, "159", "0 0 0");
+ IupSetAttribute(image, "160", "0 0 0");
+ IupSetAttribute(image, "161", "0 0 0");
+ IupSetAttribute(image, "162", "0 0 0");
+ IupSetAttribute(image, "163", "0 0 0");
+ IupSetAttribute(image, "164", "0 0 0");
+ IupSetAttribute(image, "165", "0 0 0");
+ IupSetAttribute(image, "166", "0 0 0");
+ IupSetAttribute(image, "167", "0 0 0");
+ IupSetAttribute(image, "168", "0 0 0");
+ IupSetAttribute(image, "169", "0 0 0");
+ IupSetAttribute(image, "170", "0 0 0");
+ IupSetAttribute(image, "171", "0 0 0");
+ IupSetAttribute(image, "172", "0 0 0");
+ IupSetAttribute(image, "173", "0 0 0");
+ IupSetAttribute(image, "174", "0 0 0");
+ IupSetAttribute(image, "175", "0 0 0");
+ IupSetAttribute(image, "176", "0 0 0");
+ IupSetAttribute(image, "177", "0 0 0");
+ IupSetAttribute(image, "178", "0 0 0");
+ IupSetAttribute(image, "179", "0 0 0");
+ IupSetAttribute(image, "180", "0 0 0");
+ IupSetAttribute(image, "181", "0 0 0");
+ IupSetAttribute(image, "182", "0 0 0");
+ IupSetAttribute(image, "183", "0 0 0");
+ IupSetAttribute(image, "184", "0 0 0");
+ IupSetAttribute(image, "185", "0 0 0");
+ IupSetAttribute(image, "186", "0 0 0");
+ IupSetAttribute(image, "187", "0 0 0");
+ IupSetAttribute(image, "188", "0 0 0");
+ IupSetAttribute(image, "189", "0 0 0");
+ IupSetAttribute(image, "190", "0 0 0");
+ IupSetAttribute(image, "191", "0 0 0");
+ IupSetAttribute(image, "192", "0 0 0");
+ IupSetAttribute(image, "193", "0 0 0");
+ IupSetAttribute(image, "194", "0 0 0");
+ IupSetAttribute(image, "195", "0 0 0");
+ IupSetAttribute(image, "196", "0 0 0");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_LogoPUC_Rio8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 222, 199, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 143, 151, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 148, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 41, 35, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 232, 248, 193, 30, 30, 180, 244, 232, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 243, 219, 168, 30, 41, 154, 160, 41, 35, 162, 192, 244, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 192, 156, 173, 168, 30, 170, 172, 133, 158, 173, 160, 190, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 152, 32, 143, 27, 29, 31, 34, 29, 30, 132, 34, 150, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 232, 255, 255, 255, 255, 232, 156, 162, 155, 162, 154, 146, 145, 154, 162, 155, 160, 156, 227, 255, 255, 255, 255, 244, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 35, 174, 244, 255, 251, 244, 133, 34, 29, 41, 174, 134, 142, 174, 41, 30, 34, 147, 231, 251, 255, 244, 180, 35, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 41, 18, 200, 255, 232, 145, 41, 40, 173, 34, 40, 160, 162, 40, 40, 168, 133, 174, 143, 220, 255, 227, 35, 41, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 174, 41, 251, 255, 244, 162, 134, 154, 172, 162, 26, 154, 162, 34, 145, 168, 168, 30, 164, 227, 255, 255, 180, 174, 41, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 41, 174, 193, 255, 255, 251, 143, 30, 17, 33, 32, 133, 144, 145, 141, 34, 33, 26, 30, 145, 244, 255, 255, 200, 174, 174, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 174, 41, 244, 255, 255, 255, 156, 146, 154, 145, 147, 147, 134, 134, 147, 147, 144, 154, 154, 145, 251, 255, 255, 251, 174, 174, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 244, 197, 244, 255, 255, 255, 174, 174, 180, 248, 255, 255, 251, 148, 41, 41, 147, 41, 174, 142, 144, 174, 174, 133, 40, 41, 40, 251, 255, 255, 251, 193, 174, 41, 251, 255, 255, 248, 193, 232, 255, 255, 255, 255,
+ 255, 255, 255, 255, 232, 162, 162, 197, 251, 255, 135, 13, 119, 12, 232, 255, 251, 133, 41, 34, 173, 144, 40, 162, 168, 134, 133, 168, 144, 174, 33, 244, 255, 244, 27, 119, 13, 39, 251, 251, 200, 41, 41, 227, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 244, 152, 162, 160, 223, 251, 139, 122, 28, 41, 232, 255, 192, 144, 146, 168, 146, 18, 146, 154, 30, 144, 162, 162, 30, 163, 255, 244, 41, 35, 122, 138, 248, 232, 174, 41, 41, 244, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 196, 158, 145, 164, 161, 232, 186, 27, 18, 244, 255, 227, 18, 29, 132, 133, 146, 146, 153, 146, 147, 132, 30, 18, 196, 255, 251, 35, 27, 178, 244, 180, 41, 35, 35, 174, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 221, 161, 168, 160, 140, 154, 162, 35, 2, 174, 255, 255, 251, 33, 137, 129, 124, 11, 121, 120, 10, 123, 129, 130, 132, 244, 255, 255, 180, 2, 35, 41, 35, 35, 41, 174, 174, 193, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 251, 156, 170, 148, 193, 164, 168, 31, 35, 16, 179, 251, 255, 255, 244, 186, 122, 127, 125, 131, 128, 126, 127, 127, 136, 232, 255, 255, 255, 193, 18, 27, 14, 41, 174, 180, 174, 41, 41, 244, 255, 255, 255, 255,
+ 255, 255, 255, 255, 227, 157, 173, 187, 187, 156, 188, 41, 35, 14, 31, 17, 177, 180, 180, 25, 9, 8, 174, 180, 180, 180, 7, 9, 12, 180, 180, 180, 21, 15, 14, 35, 41, 193, 41, 174, 180, 174, 41, 227, 251, 255, 255, 255,
+ 255, 255, 255, 251, 152, 156, 162, 188, 170, 173, 187, 41, 44, 52, 52, 54, 54, 53, 58, 62, 62, 62, 62, 64, 64, 62, 62, 62, 62, 58, 53, 54, 54, 52, 52, 43, 41, 180, 174, 174, 180, 41, 41, 41, 244, 255, 255, 255,
+ 255, 255, 255, 255, 251, 251, 188, 143, 164, 190, 232, 174, 44, 54, 54, 54, 58, 47, 56, 64, 44, 64, 49, 65, 65, 50, 63, 46, 63, 64, 42, 58, 58, 54, 54, 43, 41, 244, 180, 41, 35, 180, 244, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 248, 248, 146, 222, 255, 232, 5, 54, 48, 56, 64, 72, 51, 59, 82, 75, 76, 93, 93, 75, 76, 76, 74, 60, 36, 64, 61, 42, 54, 42, 227, 255, 232, 35, 232, 248, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 244, 244, 255, 255, 72, 58, 55, 71, 65, 76, 73, 76, 83, 84, 88, 107, 107, 94, 37, 77, 83, 75, 82, 65, 74, 74, 62, 47, 255, 255, 251, 232, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 64, 64, 40, 88, 88, 97, 86, 83, 40, 106, 114, 114, 114, 32, 78, 99, 83, 78, 92, 34, 63, 64, 47, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 64, 63, 75, 147, 94, 34, 83, 174, 32, 74, 117, 117, 76, 40, 80, 99, 40, 91, 41, 73, 93, 63, 47, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 93, 5, 94, 41, 41, 98, 34, 162, 162, 100, 118, 118, 101, 162, 160, 147, 148, 83, 147, 94, 6, 92, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 93, 79, 41, 91, 148, 151, 173, 173, 173, 103, 204, 204, 112, 168, 173, 173, 151, 151, 105, 82, 73, 93, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 94, 106, 83, 149, 86, 156, 172, 159, 154, 203, 207, 207, 207, 149, 158, 168, 162, 78, 148, 41, 106, 92, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 107, 20, 87, 102, 162, 172, 152, 205, 205, 210, 210, 210, 210, 205, 205, 174, 173, 168, 98, 108, 22, 94, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 251, 193, 174, 174, 232, 255, 255, 255, 83, 114, 113, 82, 40, 162, 173, 180, 210, 213, 215, 215, 215, 215, 213, 210, 177, 173, 164, 97, 38, 113, 114, 72, 255, 255, 255, 244, 189, 161, 192, 248, 255, 255, 255, 255,
+ 255, 255, 255, 255, 193, 41, 193, 174, 41, 244, 180, 174, 19, 115, 69, 101, 87, 162, 173, 179, 215, 215, 215, 216, 216, 215, 215, 215, 152, 173, 168, 86, 101, 71, 114, 66, 161, 187, 244, 156, 161, 198, 162, 187, 255, 255, 255, 255,
+ 255, 255, 255, 255, 41, 193, 255, 251, 41, 41, 35, 35, 20, 115, 117, 102, 147, 162, 166, 157, 233, 237, 238, 237, 233, 238, 238, 233, 157, 167, 168, 147, 99, 116, 115, 66, 145, 162, 147, 162, 242, 255, 222, 158, 248, 255, 255, 255,
+ 255, 255, 255, 232, 41, 174, 200, 232, 41, 41, 41, 35, 71, 117, 117, 110, 174, 168, 217, 251, 251, 251, 251, 251, 247, 251, 232, 232, 251, 226, 168, 176, 103, 117, 117, 72, 157, 149, 162, 168, 222, 231, 161, 162, 224, 255, 255, 255,
+ 255, 255, 244, 41, 174, 180, 41, 35, 174, 41, 174, 251, 83, 117, 109, 102, 102, 154, 217, 251, 3, 0, 41, 251, 247, 18, 14, 3, 193, 226, 162, 83, 102, 108, 117, 72, 251, 190, 162, 163, 154, 162, 189, 189, 162, 227, 255, 255,
+ 255, 255, 193, 41, 251, 255, 180, 174, 255, 232, 41, 232, 83, 117, 116, 102, 156, 162, 217, 251, 35, 3, 200, 251, 227, 35, 251, 232, 4, 226, 168, 156, 175, 116, 117, 72, 251, 158, 200, 255, 192, 161, 255, 255, 163, 191, 255, 255,
+ 255, 255, 180, 41, 244, 251, 177, 99, 241, 235, 80, 232, 83, 117, 83, 177, 103, 152, 217, 248, 1, 4, 14, 251, 230, 41, 251, 248, 14, 226, 160, 103, 181, 82, 116, 72, 251, 151, 208, 241, 193, 157, 251, 251, 161, 157, 251, 255,
+ 255, 251, 35, 41, 41, 174, 72, 187, 171, 171, 165, 249, 85, 117, 204, 111, 147, 156, 217, 180, 41, 227, 4, 227, 247, 4, 251, 193, 174, 226, 160, 147, 103, 204, 117, 72, 255, 192, 171, 171, 169, 102, 160, 160, 162, 154, 232, 255,
+ 255, 255, 251, 244, 193, 193, 91, 175, 34, 151, 163, 241, 99, 117, 108, 99, 201, 152, 217, 41, 200, 251, 180, 200, 244, 18, 232, 174, 180, 226, 156, 201, 102, 87, 117, 83, 255, 192, 173, 152, 165, 89, 198, 198, 243, 251, 255, 255,
+ 255, 255, 255, 255, 255, 255, 117, 87, 38, 67, 163, 238, 180, 115, 118, 110, 147, 149, 217, 251, 251, 251, 251, 251, 247, 251, 251, 251, 251, 225, 151, 142, 103, 118, 117, 175, 246, 165, 173, 152, 180, 93, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 202, 57, 152, 170, 151, 227, 227, 90, 117, 87, 112, 152, 168, 169, 218, 218, 169, 218, 218, 169, 217, 218, 218, 168, 156, 112, 101, 116, 109, 200, 238, 162, 173, 147, 87, 95, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 239, 215, 148, 47, 83, 187, 251, 71, 117, 116, 23, 175, 149, 179, 160, 147, 151, 185, 185, 152, 147, 162, 148, 146, 99, 35, 109, 117, 70, 251, 200, 71, 47, 41, 214, 236, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 195, 149, 168, 168, 235, 228, 74, 117, 204, 110, 102, 103, 175, 102, 209, 215, 215, 210, 83, 182, 102, 104, 101, 204, 117, 77, 200, 245, 84, 152, 168, 179, 249, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 238, 161, 161, 47, 179, 249, 227, 71, 79, 112, 204, 207, 207, 207, 210, 210, 210, 210, 207, 207, 207, 204, 116, 79, 71, 200, 251, 193, 146, 83, 68, 227, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 70, 164, 148, 200, 251, 255, 244, 200, 193, 175, 81, 203, 207, 207, 207, 207, 203, 83, 99, 180, 200, 232, 251, 255, 228, 174, 24, 157, 189, 249, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 187, 147, 72, 147, 212, 251, 255, 255, 255, 255, 248, 180, 86, 204, 204, 101, 175, 248, 255, 255, 255, 255, 255, 235, 161, 36, 148, 152, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 40, 98, 173, 169, 239, 255, 255, 255, 255, 255, 255, 227, 78, 87, 200, 255, 255, 255, 255, 255, 255, 249, 192, 173, 173, 144, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 169, 169, 188, 235, 255, 241, 251, 255, 255, 255, 255, 193, 183, 255, 255, 255, 255, 255, 241, 251, 228, 187, 191, 173, 200, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 90, 187, 173, 169, 200, 191, 192, 228, 245, 251, 255, 255, 255, 255, 251, 245, 229, 184, 169, 194, 171, 173, 187, 87, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 191, 173, 173, 173, 187, 174, 38, 134, 156, 174, 197, 199, 199, 195, 179, 149, 82, 30, 168, 189, 173, 173, 173, 191, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 192, 173, 173, 187, 72, 162, 151, 174, 38, 83, 168, 71, 161, 72, 154, 161, 45, 147, 189, 169, 173, 192, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 211, 169, 96, 193, 40, 152, 72, 47, 157, 146, 66, 161, 82, 151, 168, 38, 179, 108, 191, 227, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 239, 251, 241, 227, 193, 179, 174, 147, 152, 98, 189, 196, 227, 239, 251, 241, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 246, 246, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 232, 227, 200, 200, 200, 227, 227, 244, 255, 255, 244, 227, 200, 200, 227, 232, 255, 255, 255, 232, 227, 200, 227, 244, 255, 255, 255, 244, 200, 193, 193, 200, 232, 248, 227, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 244, 174, 193, 244, 232, 193, 174, 227, 255, 255, 251, 174, 174, 244, 255, 255, 255, 255, 255, 248, 174, 248, 255, 255, 251, 200, 180, 232, 251, 255, 251, 227, 174, 200, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 251, 180, 174, 232, 255, 255, 180, 174, 251, 255, 255, 255, 255, 255, 255, 180, 255, 255, 251, 193, 174, 244, 255, 255, 255, 255, 255, 232, 193, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 255, 200, 174, 200, 255, 255, 180, 174, 255, 255, 255, 255, 255, 255, 255, 180, 255, 255, 232, 174, 200, 255, 255, 255, 255, 255, 255, 251, 200, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 255, 227, 174, 200, 255, 255, 180, 174, 255, 255, 255, 255, 255, 255, 255, 180, 255, 255, 193, 174, 244, 255, 255, 255, 255, 255, 255, 255, 244, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 251, 180, 174, 232, 255, 255, 180, 174, 255, 255, 255, 255, 255, 255, 255, 180, 255, 251, 174, 174, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 248, 174, 180, 232, 232, 193, 174, 227, 255, 255, 255, 180, 174, 255, 255, 255, 255, 255, 255, 255, 180, 255, 244, 174, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 244, 232, 232, 248, 255, 255, 255, 255, 180, 174, 255, 255, 255, 255, 255, 255, 255, 180, 255, 248, 174, 174, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 255, 255, 255, 255, 255, 255, 180, 174, 251, 255, 255, 255, 255, 255, 251, 180, 255, 251, 174, 174, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 255, 255, 255, 255, 255, 255, 193, 174, 248, 255, 255, 255, 255, 255, 248, 193, 255, 255, 193, 174, 232, 255, 255, 255, 255, 255, 255, 255, 251, 251, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 255, 255, 255, 255, 255, 255, 200, 174, 244, 255, 255, 255, 255, 255, 232, 200, 255, 255, 244, 174, 180, 251, 255, 255, 255, 255, 255, 251, 227, 251, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 244, 174, 193, 255, 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 251, 255, 255, 255, 244, 180, 244, 255, 255, 255, 232, 174, 193, 248, 255, 255, 255, 251, 200, 244, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 232, 193, 174, 180, 227, 244, 255, 255, 255, 255, 255, 255, 255, 244, 180, 180, 200, 200, 193, 193, 244, 255, 255, 255, 255, 255, 232, 193, 174, 193, 200, 200, 200, 248, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 251, 251, 251, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 244, 244, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 244, 244, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 117, 202, 241, 255, 255, 215, 241, 255, 255, 241, 117, 117, 241, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 246, 241, 114, 255, 255, 204, 236, 255, 251, 93, 249, 249, 93, 251, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 117, 58, 239, 255, 255, 204, 236, 255, 246, 107, 255, 255, 95, 249, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 251, 234, 202, 255, 255, 204, 234, 255, 255, 117, 204, 204, 117, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 251, 251, 245, 255, 255, 246, 249, 255, 255, 255, 245, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(48, 79, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "18 18 18");
+ IupSetAttribute(image, "2", "59 22 22");
+ IupSetAttribute(image, "3", "35 35 35");
+ IupSetAttribute(image, "4", "57 57 57");
+ IupSetAttribute(image, "5", "55 75 122");
+ IupSetAttribute(image, "6", "62 81 123");
+ IupSetAttribute(image, "7", "87 20 29");
+ IupSetAttribute(image, "8", "96 7 16");
+ IupSetAttribute(image, "9", "118 5 15");
+ IupSetAttribute(image, "10", "121 31 19");
+ IupSetAttribute(image, "11", "120 33 20");
+ IupSetAttribute(image, "12", "105 55 60");
+ IupSetAttribute(image, "13", "121 43 43");
+ IupSetAttribute(image, "14", "71 72 74");
+ IupSetAttribute(image, "15", "71 75 84");
+ IupSetAttribute(image, "16", "93 76 76");
+ IupSetAttribute(image, "17", "89 88 76");
+ IupSetAttribute(image, "18", "91 89 85");
+ IupSetAttribute(image, "19", "64 78 114");
+ IupSetAttribute(image, "20", "73 87 119");
+ IupSetAttribute(image, "21", "84 88 97");
+ IupSetAttribute(image, "22", "80 91 112");
+ IupSetAttribute(image, "23", "94 101 108");
+ IupSetAttribute(image, "24", "92 102 117");
+ IupSetAttribute(image, "25", "108 76 85");
+ IupSetAttribute(image, "26", "97 94 78");
+ IupSetAttribute(image, "27", "101 88 85");
+ IupSetAttribute(image, "28", "113 82 83");
+ IupSetAttribute(image, "29", "103 99 77");
+ IupSetAttribute(image, "30", "105 103 87");
+ IupSetAttribute(image, "31", "115 109 73");
+ IupSetAttribute(image, "32", "113 110 85");
+ IupSetAttribute(image, "33", "123 114 73");
+ IupSetAttribute(image, "34", "121 117 90");
+ IupSetAttribute(image, "35", "103 103 102");
+ IupSetAttribute(image, "36", "97 107 120");
+ IupSetAttribute(image, "37", "109 113 104");
+ IupSetAttribute(image, "38", "106 114 122");
+ IupSetAttribute(image, "39", "112 96 96");
+ IupSetAttribute(image, "40", "120 119 103");
+ IupSetAttribute(image, "41", "120 121 120");
+ IupSetAttribute(image, "42", "41 69 137");
+ IupSetAttribute(image, "43", "38 69 148");
+ IupSetAttribute(image, "44", "52 74 130");
+ IupSetAttribute(image, "45", "55 79 149");
+ IupSetAttribute(image, "46", "54 80 142");
+ IupSetAttribute(image, "47", "59 84 153");
+ IupSetAttribute(image, "48", "40 75 161");
+ IupSetAttribute(image, "49", "47 84 179");
+ IupSetAttribute(image, "50", "50 88 187");
+ IupSetAttribute(image, "51", "61 96 184");
+ IupSetAttribute(image, "52", "10 75 241");
+ IupSetAttribute(image, "53", "29 87 234");
+ IupSetAttribute(image, "54", "23 85 242");
+ IupSetAttribute(image, "55", "46 88 193");
+ IupSetAttribute(image, "56", "41 90 217");
+ IupSetAttribute(image, "57", "52 90 208");
+ IupSetAttribute(image, "58", "36 93 242");
+ IupSetAttribute(image, "59", "57 98 200");
+ IupSetAttribute(image, "60", "54 99 215");
+ IupSetAttribute(image, "61", "42 97 237");
+ IupSetAttribute(image, "62", "42 99 243");
+ IupSetAttribute(image, "63", "55 105 233");
+ IupSetAttribute(image, "64", "51 105 243");
+ IupSetAttribute(image, "65", "60 112 244");
+ IupSetAttribute(image, "66", "70 88 134");
+ IupSetAttribute(image, "67", "68 91 154");
+ IupSetAttribute(image, "68", "80 95 129");
+ IupSetAttribute(image, "69", "78 96 139");
+ IupSetAttribute(image, "70", "77 97 149");
+ IupSetAttribute(image, "71", "89 103 137");
+ IupSetAttribute(image, "72", "87 106 153");
+ IupSetAttribute(image, "73", "95 114 152");
+ IupSetAttribute(image, "74", "73 100 166");
+ IupSetAttribute(image, "75", "72 104 182");
+ IupSetAttribute(image, "76", "83 109 166");
+ IupSetAttribute(image, "77", "82 111 179");
+ IupSetAttribute(image, "78", "90 113 169");
+ IupSetAttribute(image, "79", "87 114 179");
+ IupSetAttribute(image, "80", "100 109 130");
+ IupSetAttribute(image, "81", "97 111 149");
+ IupSetAttribute(image, "82", "106 118 138");
+ IupSetAttribute(image, "83", "104 119 152");
+ IupSetAttribute(image, "84", "113 124 136");
+ IupSetAttribute(image, "85", "112 124 153");
+ IupSetAttribute(image, "86", "99 119 169");
+ IupSetAttribute(image, "87", "101 124 181");
+ IupSetAttribute(image, "88", "71 107 197");
+ IupSetAttribute(image, "89", "74 108 221");
+ IupSetAttribute(image, "90", "85 115 199");
+ IupSetAttribute(image, "91", "87 120 215");
+ IupSetAttribute(image, "92", "70 115 231");
+ IupSetAttribute(image, "93", "74 118 244");
+ IupSetAttribute(image, "94", "82 125 234");
+ IupSetAttribute(image, "95", "88 124 245");
+ IupSetAttribute(image, "96", "97 125 208");
+ IupSetAttribute(image, "97", "125 130 120");
+ IupSetAttribute(image, "98", "121 130 138");
+ IupSetAttribute(image, "99", "122 133 151");
+ IupSetAttribute(image, "100", "111 128 164");
+ IupSetAttribute(image, "101", "107 130 184");
+ IupSetAttribute(image, "102", "118 133 165");
+ IupSetAttribute(image, "103", "119 138 182");
+ IupSetAttribute(image, "104", "127 146 191");
+ IupSetAttribute(image, "105", "94 128 213");
+ IupSetAttribute(image, "106", "91 131 234");
+ IupSetAttribute(image, "107", "89 131 245");
+ IupSetAttribute(image, "108", "104 131 201");
+ IupSetAttribute(image, "109", "106 137 215");
+ IupSetAttribute(image, "110", "117 141 202");
+ IupSetAttribute(image, "111", "123 144 193");
+ IupSetAttribute(image, "112", "121 147 215");
+ IupSetAttribute(image, "113", "103 139 232");
+ IupSetAttribute(image, "114", "99 139 245");
+ IupSetAttribute(image, "115", "108 147 246");
+ IupSetAttribute(image, "116", "117 149 230");
+ IupSetAttribute(image, "117", "117 152 246");
+ IupSetAttribute(image, "118", "125 160 247");
+ IupSetAttribute(image, "119", "134 4 5");
+ IupSetAttribute(image, "120", "142 24 15");
+ IupSetAttribute(image, "121", "143 26 16");
+ IupSetAttribute(image, "122", "151 1 2");
+ IupSetAttribute(image, "123", "136 47 28");
+ IupSetAttribute(image, "124", "136 50 30");
+ IupSetAttribute(image, "125", "131 46 47");
+ IupSetAttribute(image, "126", "133 60 61");
+ IupSetAttribute(image, "127", "165 0 2");
+ IupSetAttribute(image, "128", "159 63 65");
+ IupSetAttribute(image, "129", "134 71 41");
+ IupSetAttribute(image, "130", "153 105 61");
+ IupSetAttribute(image, "131", "159 64 65");
+ IupSetAttribute(image, "132", "134 119 74");
+ IupSetAttribute(image, "133", "131 125 89");
+ IupSetAttribute(image, "134", "129 125 100");
+ IupSetAttribute(image, "135", "131 122 122");
+ IupSetAttribute(image, "136", "149 114 115");
+ IupSetAttribute(image, "137", "160 111 64");
+ IupSetAttribute(image, "138", "160 99 100");
+ IupSetAttribute(image, "139", "169 122 123");
+ IupSetAttribute(image, "140", "143 133 77");
+ IupSetAttribute(image, "141", "135 128 87");
+ IupSetAttribute(image, "142", "134 128 94");
+ IupSetAttribute(image, "143", "137 130 84");
+ IupSetAttribute(image, "144", "140 131 90");
+ IupSetAttribute(image, "145", "150 138 86");
+ IupSetAttribute(image, "146", "155 146 91");
+ IupSetAttribute(image, "147", "137 133 102");
+ IupSetAttribute(image, "148", "136 136 120");
+ IupSetAttribute(image, "149", "147 141 103");
+ IupSetAttribute(image, "150", "146 142 120");
+ IupSetAttribute(image, "151", "153 147 104");
+ IupSetAttribute(image, "152", "153 150 118");
+ IupSetAttribute(image, "153", "161 142 88");
+ IupSetAttribute(image, "154", "164 153 93");
+ IupSetAttribute(image, "155", "180 158 92");
+ IupSetAttribute(image, "156", "164 155 104");
+ IupSetAttribute(image, "157", "163 154 117");
+ IupSetAttribute(image, "158", "173 160 93");
+ IupSetAttribute(image, "159", "176 164 95");
+ IupSetAttribute(image, "160", "172 161 102");
+ IupSetAttribute(image, "161", "171 164 118");
+ IupSetAttribute(image, "162", "182 169 100");
+ IupSetAttribute(image, "163", "179 170 120");
+ IupSetAttribute(image, "164", "189 176 103");
+ IupSetAttribute(image, "165", "187 180 125");
+ IupSetAttribute(image, "166", "195 175 109");
+ IupSetAttribute(image, "167", "196 174 112");
+ IupSetAttribute(image, "168", "198 183 106");
+ IupSetAttribute(image, "169", "200 185 119");
+ IupSetAttribute(image, "170", "206 192 111");
+ IupSetAttribute(image, "171", "206 192 114");
+ IupSetAttribute(image, "172", "208 193 111");
+ IupSetAttribute(image, "173", "208 193 112");
+ IupSetAttribute(image, "174", "135 135 135");
+ IupSetAttribute(image, "175", "130 138 152");
+ IupSetAttribute(image, "176", "143 144 128");
+ IupSetAttribute(image, "177", "140 146 153");
+ IupSetAttribute(image, "178", "147 137 137");
+ IupSetAttribute(image, "179", "152 152 134");
+ IupSetAttribute(image, "180", "151 152 153");
+ IupSetAttribute(image, "181", "134 144 160");
+ IupSetAttribute(image, "182", "139 152 181");
+ IupSetAttribute(image, "183", "148 152 161");
+ IupSetAttribute(image, "184", "157 163 166");
+ IupSetAttribute(image, "185", "150 160 181");
+ IupSetAttribute(image, "186", "170 153 153");
+ IupSetAttribute(image, "187", "169 166 135");
+ IupSetAttribute(image, "188", "165 164 148");
+ IupSetAttribute(image, "189", "177 172 134");
+ IupSetAttribute(image, "190", "178 173 151");
+ IupSetAttribute(image, "191", "184 178 135");
+ IupSetAttribute(image, "192", "183 179 150");
+ IupSetAttribute(image, "193", "167 168 168");
+ IupSetAttribute(image, "194", "162 170 179");
+ IupSetAttribute(image, "195", "174 176 166");
+ IupSetAttribute(image, "196", "181 179 162");
+ IupSetAttribute(image, "197", "185 182 161");
+ IupSetAttribute(image, "198", "189 184 162");
+ IupSetAttribute(image, "199", "189 188 171");
+ IupSetAttribute(image, "200", "184 184 184");
+ IupSetAttribute(image, "201", "129 150 204");
+ IupSetAttribute(image, "202", "129 156 247");
+ IupSetAttribute(image, "203", "138 164 232");
+ IupSetAttribute(image, "204", "136 166 247");
+ IupSetAttribute(image, "205", "148 172 234");
+ IupSetAttribute(image, "206", "150 173 248");
+ IupSetAttribute(image, "207", "152 179 249");
+ IupSetAttribute(image, "208", "174 180 196");
+ IupSetAttribute(image, "209", "160 179 228");
+ IupSetAttribute(image, "210", "164 188 249");
+ IupSetAttribute(image, "211", "190 194 190");
+ IupSetAttribute(image, "212", "188 193 201");
+ IupSetAttribute(image, "213", "172 194 251");
+ IupSetAttribute(image, "214", "180 192 224");
+ IupSetAttribute(image, "215", "180 199 251");
+ IupSetAttribute(image, "216", "191 208 252");
+ IupSetAttribute(image, "217", "205 185 140");
+ IupSetAttribute(image, "218", "210 186 136");
+ IupSetAttribute(image, "219", "194 191 175");
+ IupSetAttribute(image, "220", "192 190 178");
+ IupSetAttribute(image, "221", "197 194 180");
+ IupSetAttribute(image, "222", "197 195 188");
+ IupSetAttribute(image, "223", "200 198 189");
+ IupSetAttribute(image, "224", "202 200 191");
+ IupSetAttribute(image, "225", "222 202 171");
+ IupSetAttribute(image, "226", "224 207 176");
+ IupSetAttribute(image, "227", "200 200 199");
+ IupSetAttribute(image, "228", "200 204 212");
+ IupSetAttribute(image, "229", "204 209 218");
+ IupSetAttribute(image, "230", "210 199 199");
+ IupSetAttribute(image, "231", "209 208 204");
+ IupSetAttribute(image, "232", "216 215 215");
+ IupSetAttribute(image, "233", "200 200 233");
+ IupSetAttribute(image, "234", "192 205 251");
+ IupSetAttribute(image, "235", "205 211 226");
+ IupSetAttribute(image, "236", "196 209 251");
+ IupSetAttribute(image, "237", "209 206 232");
+ IupSetAttribute(image, "238", "212 213 232");
+ IupSetAttribute(image, "239", "213 221 246");
+ IupSetAttribute(image, "240", "221 226 239");
+ IupSetAttribute(image, "241", "220 227 250");
+ IupSetAttribute(image, "242", "224 223 223");
+ IupSetAttribute(image, "243", "225 224 222");
+ IupSetAttribute(image, "244", "231 231 231");
+ IupSetAttribute(image, "245", "229 234 249");
+ IupSetAttribute(image, "246", "237 241 253");
+ IupSetAttribute(image, "247", "247 235 235");
+ IupSetAttribute(image, "248", "243 243 243");
+ IupSetAttribute(image, "249", "242 245 253");
+ IupSetAttribute(image, "250", "247 248 254");
+ IupSetAttribute(image, "251", "252 252 252");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_LogoLua8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 155, 187, 255, 161, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 130, 71, 160, 255, 89, 87, 177, 255, 93, 72, 163, 255, 83, 128, 193, 255, 255, 255, 255, 255, 255, 191, 103, 33, 17, 23, 50, 148, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 139, 138, 255, 139, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 120, 188, 192, 154, 255, 255, 255, 182, 33, 1, 1, 1, 1, 1, 6, 110, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, 84, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 80, 77, 255, 255, 45, 1, 1, 1, 1, 1, 1, 1, 6, 148, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 1, 1, 1, 1, 1, 1, 1, 1, 1, 50, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 105, 59, 43, 38, 39, 43, 61, 106, 149, 255, 255, 255, 255, 255, 255, 255, 99, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 255,
+ 255, 255, 255, 255, 255, 255, 255, 94, 84, 255, 255, 255, 255, 255, 255, 255, 168, 66, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 95, 169, 255, 255, 255, 255, 109, 1, 1, 1, 1, 1, 1, 1, 1, 1, 33, 255,
+ 255, 255, 255, 255, 255, 255, 255, 122, 255, 255, 255, 255, 255, 255, 173, 55, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 59, 178, 255, 255, 184, 16, 1, 1, 1, 1, 1, 1, 1, 1, 103, 255,
+ 255, 255, 255, 255, 255, 175, 255, 255, 255, 255, 255, 255, 255, 112, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 114, 255, 255, 108, 1, 1, 1, 1, 1, 1, 1, 33, 191, 255,
+ 255, 255, 255, 255, 181, 67, 192, 255, 255, 255, 255, 195, 64, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 97, 255, 255, 108, 16, 1, 1, 1, 1, 45, 182, 255, 255,
+ 255, 255, 255, 255, 132, 158, 255, 255, 255, 255, 195, 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 62, 97, 50, 17, 1, 1, 58, 255, 255, 184, 109, 99, 104, 147, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 110, 196, 196, 196, 196, 185, 58, 1, 1, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 77, 255, 255, 255, 255, 255, 110, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 141, 196, 196, 196, 196, 196, 196, 196, 58, 1, 2, 114, 255, 255, 255, 255, 255, 131, 255, 255, 255,
+ 255, 255, 137, 85, 255, 255, 255, 255, 172, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 49, 196, 196, 196, 196, 196, 196, 196, 196, 185, 17, 1, 19, 178, 255, 255, 255, 255, 80, 153, 255, 255,
+ 255, 255, 192, 189, 255, 255, 255, 255, 51, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 115, 196, 196, 196, 196, 196, 196, 196, 196, 196, 50, 1, 1, 59, 255, 255, 255, 255, 179, 136, 255, 255,
+ 255, 192, 188, 255, 255, 255, 255, 159, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 150, 196, 196, 196, 196, 196, 196, 196, 196, 196, 97, 1, 1, 6, 169, 255, 255, 255, 255, 255, 255, 255,
+ 255, 121, 125, 255, 255, 255, 255, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 142, 196, 196, 196, 196, 196, 196, 196, 196, 196, 62, 1, 1, 1, 95, 255, 255, 255, 255, 140, 133, 255,
+ 255, 79, 188, 255, 255, 255, 195, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 98, 196, 196, 196, 196, 196, 196, 196, 196, 196, 29, 1, 1, 1, 24, 255, 255, 255, 255, 181, 72, 255,
+ 255, 255, 255, 255, 255, 255, 145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 173, 196, 196, 196, 196, 196, 196, 196, 110, 1, 1, 1, 1, 1, 149, 255, 255, 255, 255, 155, 255,
+ 255, 163, 255, 255, 255, 255, 102, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34, 173, 196, 196, 196, 196, 196, 141, 11, 1, 1, 1, 1, 1, 106, 255, 255, 255, 255, 255, 255,
+ 162, 79, 255, 255, 255, 255, 51, 1, 1, 1, 1, 10, 141, 42, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 98, 142, 150, 115, 49, 3, 1, 1, 1, 1, 1, 1, 61, 255, 255, 255, 255, 90, 181,
+ 156, 121, 255, 255, 255, 255, 40, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 43, 255, 255, 255, 255, 87, 155,
+ 255, 255, 255, 255, 255, 255, 35, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, 255, 255, 255, 255, 164, 181,
+ 186, 180, 255, 255, 255, 255, 34, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 30, 53, 1, 1, 1, 8, 63, 21, 1, 1, 24, 99, 111, 108, 57, 6, 1, 1, 1, 1, 1, 38, 255, 255, 255, 255, 255, 255,
+ 139, 91, 255, 255, 255, 255, 40, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 58, 165, 1, 1, 1, 18, 196, 34, 1, 26, 184, 144, 100, 106, 184, 107, 1, 1, 1, 1, 1, 43, 255, 255, 255, 255, 118, 161,
+ 175, 92, 255, 255, 255, 255, 51, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 58, 165, 1, 1, 1, 18, 196, 34, 1, 65, 167, 5, 1, 1, 61, 173, 1, 1, 1, 1, 1, 59, 255, 255, 255, 255, 75, 181,
+ 255, 255, 255, 255, 255, 255, 102, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 58, 165, 1, 1, 1, 18, 196, 34, 1, 1, 1, 1, 1, 5, 101, 178, 1, 1, 1, 1, 1, 105, 255, 255, 255, 255, 160, 255,
+ 255, 160, 255, 255, 255, 255, 144, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 58, 165, 1, 1, 1, 18, 196, 34, 1, 3, 52, 113, 150, 190, 171, 178, 1, 1, 1, 1, 1, 147, 255, 255, 255, 255, 255, 255,
+ 255, 69, 192, 255, 255, 255, 194, 19, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 58, 165, 1, 1, 1, 20, 196, 34, 1, 101, 182, 60, 30, 11, 48, 178, 1, 1, 1, 1, 22, 255, 255, 255, 255, 186, 85, 255,
+ 255, 127, 155, 255, 255, 255, 255, 61, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 58, 168, 1, 1, 1, 40, 196, 34, 1, 166, 96, 1, 1, 1, 56, 178, 1, 1, 1, 1, 66, 255, 255, 255, 255, 122, 124, 255,
+ 255, 255, 255, 255, 255, 255, 255, 151, 3, 1, 1, 15, 196, 108, 54, 54, 54, 54, 54, 14, 46, 196, 41, 1, 22, 145, 194, 34, 1, 143, 116, 8, 2, 37, 170, 184, 3, 1, 1, 4, 168, 255, 255, 255, 255, 181, 192, 255,
+ 255, 255, 135, 188, 255, 255, 255, 255, 49, 1, 1, 12, 165, 165, 165, 165, 165, 165, 165, 23, 7, 117, 196, 183, 183, 44, 149, 30, 1, 36, 174, 190, 184, 146, 49, 194, 166, 1, 1, 55, 255, 255, 255, 255, 192, 195, 255, 255,
+ 255, 255, 134, 88, 255, 255, 255, 255, 169, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 32, 9, 1, 1, 1, 1, 1, 8, 31, 27, 2, 1, 23, 28, 1, 17, 173, 255, 255, 255, 255, 84, 152, 255, 255,
+ 255, 255, 255, 127, 255, 255, 255, 255, 255, 107, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 112, 255, 255, 255, 255, 255, 76, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 84, 160, 255, 255, 255, 255, 193, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 53, 195, 255, 255, 255, 255, 157, 139, 255, 255, 255, 255,
+ 255, 255, 255, 255, 181, 73, 255, 255, 255, 255, 255, 193, 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 195, 255, 255, 255, 255, 192, 67, 186, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 110, 255, 255, 255, 255, 255, 255, 193, 162, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 175, 87, 255, 255, 255, 255, 255, 255, 169, 49, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 51, 172, 255, 255, 255, 255, 255, 255, 128, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 91, 126, 255, 255, 255, 255, 255, 255, 255, 151, 61, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 63, 159, 255, 255, 255, 255, 255, 255, 255, 82, 94, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 192, 255, 255, 255, 255, 255, 255, 255, 194, 144, 102, 51, 40, 34, 35, 40, 51, 102, 145, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 161, 68, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 158, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 88, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 85, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, 193, 181, 128, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 155, 255, 133, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 119, 81, 255, 160, 80, 123, 255, 176, 91, 93, 255, 155, 70, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 157, 255, 181, 140, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(48, 48, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 0 127");
+ IupSetAttribute(image, "2", "1 1 128");
+ IupSetAttribute(image, "3", "4 4 129");
+ IupSetAttribute(image, "4", "5 5 130");
+ IupSetAttribute(image, "5", "6 6 130");
+ IupSetAttribute(image, "6", "8 8 131");
+ IupSetAttribute(image, "7", "9 9 132");
+ IupSetAttribute(image, "8", "10 10 132");
+ IupSetAttribute(image, "9", "13 13 134");
+ IupSetAttribute(image, "10", "15 15 134");
+ IupSetAttribute(image, "11", "15 15 135");
+ IupSetAttribute(image, "12", "17 17 135");
+ IupSetAttribute(image, "13", "17 17 136");
+ IupSetAttribute(image, "14", "18 18 136");
+ IupSetAttribute(image, "15", "19 19 137");
+ IupSetAttribute(image, "16", "20 20 137");
+ IupSetAttribute(image, "17", "22 22 138");
+ IupSetAttribute(image, "18", "23 23 139");
+ IupSetAttribute(image, "19", "26 26 140");
+ IupSetAttribute(image, "20", "27 27 141");
+ IupSetAttribute(image, "21", "28 28 141");
+ IupSetAttribute(image, "22", "34 34 144");
+ IupSetAttribute(image, "23", "36 36 145");
+ IupSetAttribute(image, "24", "38 38 146");
+ IupSetAttribute(image, "25", "40 40 147");
+ IupSetAttribute(image, "26", "42 42 148");
+ IupSetAttribute(image, "27", "43 43 149");
+ IupSetAttribute(image, "28", "46 46 150");
+ IupSetAttribute(image, "29", "49 49 152");
+ IupSetAttribute(image, "30", "53 53 154");
+ IupSetAttribute(image, "31", "54 54 154");
+ IupSetAttribute(image, "32", "56 56 155");
+ IupSetAttribute(image, "33", "59 59 156");
+ IupSetAttribute(image, "34", "60 60 157");
+ IupSetAttribute(image, "35", "62 62 157");
+ IupSetAttribute(image, "36", "65 65 160");
+ IupSetAttribute(image, "37", "71 71 163");
+ IupSetAttribute(image, "38", "73 73 163");
+ IupSetAttribute(image, "39", "73 73 164");
+ IupSetAttribute(image, "40", "76 76 165");
+ IupSetAttribute(image, "41", "79 79 167");
+ IupSetAttribute(image, "42", "80 80 167");
+ IupSetAttribute(image, "43", "86 86 170");
+ IupSetAttribute(image, "44", "87 87 171");
+ IupSetAttribute(image, "45", "88 88 171");
+ IupSetAttribute(image, "46", "93 93 174");
+ IupSetAttribute(image, "47", "96 96 175");
+ IupSetAttribute(image, "48", "98 98 176");
+ IupSetAttribute(image, "49", "99 99 177");
+ IupSetAttribute(image, "50", "100 100 177");
+ IupSetAttribute(image, "51", "104 104 179");
+ IupSetAttribute(image, "52", "105 105 180");
+ IupSetAttribute(image, "53", "106 106 180");
+ IupSetAttribute(image, "54", "109 109 182");
+ IupSetAttribute(image, "55", "110 110 181");
+ IupSetAttribute(image, "56", "111 111 183");
+ IupSetAttribute(image, "57", "112 112 183");
+ IupSetAttribute(image, "58", "113 113 184");
+ IupSetAttribute(image, "59", "114 114 184");
+ IupSetAttribute(image, "60", "115 115 185");
+ IupSetAttribute(image, "61", "116 116 185");
+ IupSetAttribute(image, "62", "118 118 186");
+ IupSetAttribute(image, "63", "120 120 187");
+ IupSetAttribute(image, "64", "124 124 189");
+ IupSetAttribute(image, "65", "125 125 190");
+ IupSetAttribute(image, "66", "127 127 190");
+ IupSetAttribute(image, "67", "139 139 139");
+ IupSetAttribute(image, "68", "140 140 140");
+ IupSetAttribute(image, "69", "153 153 153");
+ IupSetAttribute(image, "70", "154 154 154");
+ IupSetAttribute(image, "71", "157 157 157");
+ IupSetAttribute(image, "72", "159 159 159");
+ IupSetAttribute(image, "73", "161 161 161");
+ IupSetAttribute(image, "74", "162 162 162");
+ IupSetAttribute(image, "75", "163 163 163");
+ IupSetAttribute(image, "76", "164 164 164");
+ IupSetAttribute(image, "77", "165 165 165");
+ IupSetAttribute(image, "78", "166 166 166");
+ IupSetAttribute(image, "79", "169 169 169");
+ IupSetAttribute(image, "80", "171 171 171");
+ IupSetAttribute(image, "81", "172 172 172");
+ IupSetAttribute(image, "82", "173 173 173");
+ IupSetAttribute(image, "83", "174 174 174");
+ IupSetAttribute(image, "84", "175 175 175");
+ IupSetAttribute(image, "85", "177 177 177");
+ IupSetAttribute(image, "86", "179 179 179");
+ IupSetAttribute(image, "87", "180 180 180");
+ IupSetAttribute(image, "88", "182 182 182");
+ IupSetAttribute(image, "89", "183 183 183");
+ IupSetAttribute(image, "90", "184 184 184");
+ IupSetAttribute(image, "91", "186 186 186");
+ IupSetAttribute(image, "92", "188 188 188");
+ IupSetAttribute(image, "93", "190 190 190");
+ IupSetAttribute(image, "94", "191 191 191");
+ IupSetAttribute(image, "95", "130 130 192");
+ IupSetAttribute(image, "96", "132 132 193");
+ IupSetAttribute(image, "97", "134 134 194");
+ IupSetAttribute(image, "98", "135 135 195");
+ IupSetAttribute(image, "99", "138 138 196");
+ IupSetAttribute(image, "100", "140 140 197");
+ IupSetAttribute(image, "101", "145 145 200");
+ IupSetAttribute(image, "102", "148 148 201");
+ IupSetAttribute(image, "103", "149 149 202");
+ IupSetAttribute(image, "104", "151 151 203");
+ IupSetAttribute(image, "105", "157 157 205");
+ IupSetAttribute(image, "106", "159 159 207");
+ IupSetAttribute(image, "107", "168 168 211");
+ IupSetAttribute(image, "108", "169 169 212");
+ IupSetAttribute(image, "109", "175 175 214");
+ IupSetAttribute(image, "110", "175 175 215");
+ IupSetAttribute(image, "111", "176 176 216");
+ IupSetAttribute(image, "112", "178 178 216");
+ IupSetAttribute(image, "113", "181 181 218");
+ IupSetAttribute(image, "114", "184 184 219");
+ IupSetAttribute(image, "115", "186 186 220");
+ IupSetAttribute(image, "116", "188 188 221");
+ IupSetAttribute(image, "117", "190 190 223");
+ IupSetAttribute(image, "118", "195 195 195");
+ IupSetAttribute(image, "119", "196 196 196");
+ IupSetAttribute(image, "120", "197 197 197");
+ IupSetAttribute(image, "121", "198 198 198");
+ IupSetAttribute(image, "122", "200 200 200");
+ IupSetAttribute(image, "123", "201 201 201");
+ IupSetAttribute(image, "124", "203 203 203");
+ IupSetAttribute(image, "125", "204 204 204");
+ IupSetAttribute(image, "126", "205 205 205");
+ IupSetAttribute(image, "127", "206 206 206");
+ IupSetAttribute(image, "128", "207 207 207");
+ IupSetAttribute(image, "129", "208 208 208");
+ IupSetAttribute(image, "130", "210 210 210");
+ IupSetAttribute(image, "131", "211 211 211");
+ IupSetAttribute(image, "132", "213 213 213");
+ IupSetAttribute(image, "133", "214 214 214");
+ IupSetAttribute(image, "134", "215 215 215");
+ IupSetAttribute(image, "135", "217 217 217");
+ IupSetAttribute(image, "136", "218 218 218");
+ IupSetAttribute(image, "137", "219 219 219");
+ IupSetAttribute(image, "138", "221 221 221");
+ IupSetAttribute(image, "139", "222 222 222");
+ IupSetAttribute(image, "140", "223 223 223");
+ IupSetAttribute(image, "141", "195 195 225");
+ IupSetAttribute(image, "142", "203 203 229");
+ IupSetAttribute(image, "143", "205 205 230");
+ IupSetAttribute(image, "144", "206 206 230");
+ IupSetAttribute(image, "145", "208 208 231");
+ IupSetAttribute(image, "146", "212 212 233");
+ IupSetAttribute(image, "147", "216 216 235");
+ IupSetAttribute(image, "148", "217 217 236");
+ IupSetAttribute(image, "149", "219 219 237");
+ IupSetAttribute(image, "150", "220 220 237");
+ IupSetAttribute(image, "151", "222 222 238");
+ IupSetAttribute(image, "152", "224 224 224");
+ IupSetAttribute(image, "153", "225 225 225");
+ IupSetAttribute(image, "154", "227 227 227");
+ IupSetAttribute(image, "155", "228 228 228");
+ IupSetAttribute(image, "156", "229 229 229");
+ IupSetAttribute(image, "157", "230 230 230");
+ IupSetAttribute(image, "158", "231 231 231");
+ IupSetAttribute(image, "159", "224 224 239");
+ IupSetAttribute(image, "160", "234 234 234");
+ IupSetAttribute(image, "161", "236 236 236");
+ IupSetAttribute(image, "162", "237 237 237");
+ IupSetAttribute(image, "163", "238 238 238");
+ IupSetAttribute(image, "164", "239 239 239");
+ IupSetAttribute(image, "165", "225 225 240");
+ IupSetAttribute(image, "166", "227 227 241");
+ IupSetAttribute(image, "167", "228 228 241");
+ IupSetAttribute(image, "168", "229 229 242");
+ IupSetAttribute(image, "169", "232 232 243");
+ IupSetAttribute(image, "170", "233 233 244");
+ IupSetAttribute(image, "171", "234 234 244");
+ IupSetAttribute(image, "172", "235 235 245");
+ IupSetAttribute(image, "173", "237 237 246");
+ IupSetAttribute(image, "174", "238 238 246");
+ IupSetAttribute(image, "175", "240 240 240");
+ IupSetAttribute(image, "176", "241 241 241");
+ IupSetAttribute(image, "177", "243 243 243");
+ IupSetAttribute(image, "178", "240 240 247");
+ IupSetAttribute(image, "179", "244 244 244");
+ IupSetAttribute(image, "180", "245 245 245");
+ IupSetAttribute(image, "181", "246 246 246");
+ IupSetAttribute(image, "182", "240 240 248");
+ IupSetAttribute(image, "183", "242 242 248");
+ IupSetAttribute(image, "184", "244 244 250");
+ IupSetAttribute(image, "185", "246 246 250");
+ IupSetAttribute(image, "186", "248 248 248");
+ IupSetAttribute(image, "187", "249 249 249");
+ IupSetAttribute(image, "188", "250 250 250");
+ IupSetAttribute(image, "189", "251 251 251");
+ IupSetAttribute(image, "190", "249 249 252");
+ IupSetAttribute(image, "191", "250 250 252");
+ IupSetAttribute(image, "192", "252 252 252");
+ IupSetAttribute(image, "193", "252 252 253");
+ IupSetAttribute(image, "194", "253 253 254");
+ IupSetAttribute(image, "195", "254 254 254");
+ IupSetAttribute(image, "196", "255 255 255");
+ IupSetAttribute(image, "197", "0 0 0");
+ IupSetAttribute(image, "198", "0 0 0");
+ IupSetAttribute(image, "199", "0 0 0");
+ IupSetAttribute(image, "200", "0 0 0");
+ IupSetAttribute(image, "201", "0 0 0");
+ IupSetAttribute(image, "202", "0 0 0");
+ IupSetAttribute(image, "203", "0 0 0");
+ IupSetAttribute(image, "204", "0 0 0");
+ IupSetAttribute(image, "205", "0 0 0");
+ IupSetAttribute(image, "206", "0 0 0");
+ IupSetAttribute(image, "207", "0 0 0");
+ IupSetAttribute(image, "208", "0 0 0");
+ IupSetAttribute(image, "209", "0 0 0");
+ IupSetAttribute(image, "210", "0 0 0");
+ IupSetAttribute(image, "211", "0 0 0");
+ IupSetAttribute(image, "212", "0 0 0");
+ IupSetAttribute(image, "213", "0 0 0");
+ IupSetAttribute(image, "214", "0 0 0");
+ IupSetAttribute(image, "215", "0 0 0");
+ IupSetAttribute(image, "216", "0 0 0");
+ IupSetAttribute(image, "217", "0 0 0");
+ IupSetAttribute(image, "218", "0 0 0");
+ IupSetAttribute(image, "219", "0 0 0");
+ IupSetAttribute(image, "220", "0 0 0");
+ IupSetAttribute(image, "221", "0 0 0");
+ IupSetAttribute(image, "222", "0 0 0");
+ IupSetAttribute(image, "223", "0 0 0");
+ IupSetAttribute(image, "224", "0 0 0");
+ IupSetAttribute(image, "225", "0 0 0");
+ IupSetAttribute(image, "226", "0 0 0");
+ IupSetAttribute(image, "227", "0 0 0");
+ IupSetAttribute(image, "228", "0 0 0");
+ IupSetAttribute(image, "229", "0 0 0");
+ IupSetAttribute(image, "230", "0 0 0");
+ IupSetAttribute(image, "231", "0 0 0");
+ IupSetAttribute(image, "232", "0 0 0");
+ IupSetAttribute(image, "233", "0 0 0");
+ IupSetAttribute(image, "234", "0 0 0");
+ IupSetAttribute(image, "235", "0 0 0");
+ IupSetAttribute(image, "236", "0 0 0");
+ IupSetAttribute(image, "237", "0 0 0");
+ IupSetAttribute(image, "238", "0 0 0");
+ IupSetAttribute(image, "239", "0 0 0");
+ IupSetAttribute(image, "240", "0 0 0");
+ IupSetAttribute(image, "241", "0 0 0");
+ IupSetAttribute(image, "242", "0 0 0");
+ IupSetAttribute(image, "243", "0 0 0");
+ IupSetAttribute(image, "244", "0 0 0");
+ IupSetAttribute(image, "245", "0 0 0");
+ IupSetAttribute(image, "246", "0 0 0");
+ IupSetAttribute(image, "247", "0 0 0");
+ IupSetAttribute(image, "248", "0 0 0");
+ IupSetAttribute(image, "249", "0 0 0");
+ IupSetAttribute(image, "250", "0 0 0");
+ IupSetAttribute(image, "251", "0 0 0");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_LogoPetrobras8(void)
+{
+ unsigned char imgdata[] = {
+ 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 244, 244, 244, 244, 244, 244, 244, 244, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 252, 255, 255, 249, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 252, 255, 255, 249, 244, 244, 244, 244, 244, 244, 244, 244, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 196, 151, 141, 145, 179, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 244, 244, 244, 244, 244, 244, 244, 244, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 244, 244, 244, 244, 244, 244, 244, 244, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 244, 244, 244, 244, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 209, 167, 143, 141, 155, 203, 248, 255, 255, 255,
+ 253, 253, 5, 5, 5, 5, 5, 5, 5, 113, 253, 253, 253, 253, 253, 253, 253, 253, 253, 245, 193, 90, 5, 5, 5, 5, 5, 5, 163, 253, 253, 253, 253, 253, 253, 253, 253, 253, 249, 192, 62, 5, 5, 5, 5, 5, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 6, 6, 6, 6, 6, 6, 6, 6, 6, 33, 86, 169, 250, 255, 255, 255, 255, 255, 81, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 15, 231, 255, 255, 133, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 18, 236, 255, 255, 133, 6, 6, 6, 6, 6, 6, 6, 6, 5, 21, 53, 108, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 93, 12, 1, 1, 1, 1, 1, 4, 94, 223, 255, 255, 255, 255, 255, 255, 255, 80, 6, 6, 6, 6, 6, 6, 6, 6, 6, 33, 80, 145, 243, 255, 255, 255, 255, 255, 164, 6, 6, 6, 6, 6, 6, 6, 6, 4, 15, 48, 98, 181, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 20, 6, 6, 6, 6, 24, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 113, 24, 1, 1, 1, 1, 1, 1, 39, 180, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 1, 1, 180, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 117, 1, 1, 1, 1, 5, 226, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 243, 58, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 88, 247, 255, 255, 255, 237, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 255, 255, 255, 69, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 255, 255, 255, 68, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 144, 255, 255, 255, 255, 255, 255, 231, 95, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 219, 255, 255, 255, 255, 255, 234, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 247, 255, 255, 255, 255, 96, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 115, 255, 255, 255, 255, 255, 255, 255, 255, 251, 85, 1, 1, 1, 1, 1, 11, 236, 255, 255, 255, 255, 255, 255, 255, 255, 153, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 187, 255,
+ 253, 253, 1, 1, 1, 1, 1, 1, 9, 239, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 241, 27, 1, 1, 1, 57, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 188, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 154, 255, 255, 255, 180, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 131, 255, 255, 233, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 138, 255, 255, 235, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 30, 247, 255, 255, 255, 255, 214, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 70, 252, 255, 255, 255, 255, 180, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 196, 255, 255, 255, 247, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 231, 255, 255, 255, 255, 255, 255, 255, 165, 1, 1, 1, 1, 1, 1, 2, 223, 255, 255, 255, 255, 255, 255, 255, 152, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 72, 252,
+ 253, 253, 1, 1, 1, 1, 1, 1, 80, 253, 253, 253, 253, 197, 92, 92, 92, 93, 182, 253, 253, 253, 253, 73, 1, 1, 1, 124, 253, 253, 253, 253, 150, 92, 92, 92, 107, 214, 253, 253, 253, 243, 9, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 1, 1, 1, 1, 1, 15, 16, 12, 1, 1, 1, 1, 1, 1, 102, 255, 255, 255, 112, 1, 1, 1, 1, 2, 16, 16, 16, 16, 16, 16, 16, 16, 205, 255, 255, 175, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 214, 255, 255, 175, 1, 1, 1, 1, 1, 13, 16, 16, 6, 1, 1, 1, 1, 1, 18, 243, 255, 255, 255, 220, 28, 1, 1, 1, 1, 2, 45, 86, 39, 1, 1, 1, 1, 1, 1, 211, 255, 255, 255, 255, 112, 1, 1, 1, 1, 2, 16, 16, 14, 2, 1, 1, 1, 1, 1, 187, 255, 255, 255, 200, 1, 1, 1, 1, 1, 12, 16, 16, 9, 1, 1, 1, 1, 1, 1, 223, 255, 255, 255, 255, 255, 255, 230, 28, 1, 1, 1, 1, 1, 1, 1, 212, 255, 255, 255, 255, 255, 255, 223, 13, 1, 1, 1, 1, 86, 136, 120, 24, 1, 1, 1, 1, 26, 249,
+ 253, 253, 1, 1, 1, 1, 1, 1, 142, 253, 253, 253, 253, 113, 1, 1, 1, 1, 38, 253, 253, 253, 253, 72, 1, 1, 1, 200, 253, 253, 253, 252, 47, 1, 1, 1, 1, 83, 253, 253, 253, 247, 11, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 1, 1, 1, 1, 24, 247, 255, 242, 180, 9, 1, 1, 1, 1, 104, 255, 255, 251, 39, 1, 1, 1, 1, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 138, 138, 138, 138, 45, 1, 1, 1, 1, 27, 137, 138, 138, 138, 145, 249, 255, 255, 105, 1, 1, 1, 1, 30, 247, 255, 255, 226, 54, 1, 1, 1, 1, 48, 252, 255, 255, 244, 58, 1, 1, 1, 1, 12, 170, 251, 255, 247, 93, 1, 1, 1, 1, 1, 147, 255, 255, 255, 250, 39, 1, 1, 1, 1, 89, 255, 255, 248, 141, 1, 1, 1, 1, 9, 233, 255, 255, 255, 127, 1, 1, 1, 1, 9, 231, 255, 255, 234, 88, 1, 1, 1, 1, 19, 243, 255, 255, 255, 255, 255, 252, 100, 1, 1, 1, 1, 1, 1, 1, 1, 195, 255, 255, 255, 255, 255, 255, 123, 1, 1, 1, 1, 46, 252, 255, 255, 152, 24, 24, 24, 24, 44, 250,
+ 253, 253, 1, 1, 1, 1, 1, 1, 219, 253, 253, 253, 251, 41, 1, 1, 1, 1, 108, 253, 253, 253, 240, 23, 1, 1, 24, 249, 253, 253, 253, 222, 5, 1, 1, 1, 1, 110, 253, 253, 253, 214, 2, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 35, 1, 1, 1, 1, 93, 255, 255, 255, 252, 35, 1, 1, 1, 1, 140, 255, 255, 216, 2, 1, 1, 1, 1, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 28, 1, 1, 1, 1, 102, 255, 255, 255, 255, 255, 255, 255, 252, 32, 1, 1, 1, 1, 100, 255, 255, 255, 255, 101, 1, 1, 1, 1, 127, 255, 255, 255, 135, 1, 1, 1, 1, 2, 177, 255, 255, 255, 255, 192, 1, 1, 1, 1, 1, 134, 255, 255, 255, 214, 2, 1, 1, 1, 1, 150, 255, 255, 255, 135, 1, 1, 1, 1, 115, 255, 255, 255, 255, 59, 1, 1, 1, 1, 66, 255, 255, 255, 255, 133, 1, 1, 1, 1, 100, 255, 255, 255, 255, 255, 255, 183, 2, 1, 1, 1, 59, 1, 1, 1, 1, 170, 255, 255, 255, 255, 255, 252, 56, 1, 1, 1, 1, 5, 127, 223, 252, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 40, 252, 253, 253, 253, 245, 165, 164, 164, 164, 186, 248, 253, 253, 253, 134, 1, 1, 1, 98, 253, 253, 253, 253, 153, 1, 1, 1, 13, 89, 233, 253, 253, 253, 115, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 2, 1, 1, 1, 1, 153, 255, 255, 255, 187, 2, 1, 1, 1, 3, 219, 255, 255, 143, 1, 1, 1, 1, 1, 84, 100, 100, 100, 100, 100, 103, 243, 255, 255, 255, 255, 255, 255, 255, 255, 204, 1, 1, 1, 1, 1, 170, 255, 255, 255, 255, 255, 255, 255, 211, 2, 1, 1, 1, 1, 172, 255, 255, 255, 200, 16, 1, 1, 1, 27, 230, 255, 255, 240, 19, 1, 1, 1, 1, 93, 252, 255, 255, 255, 255, 216, 1, 1, 1, 1, 1, 139, 255, 255, 255, 142, 1, 1, 1, 1, 1, 162, 195, 187, 129, 10, 1, 1, 1, 71, 240, 255, 255, 255, 227, 5, 1, 1, 1, 1, 132, 255, 255, 255, 220, 35, 1, 1, 1, 9, 211, 255, 255, 255, 255, 255, 237, 36, 1, 1, 1, 58, 145, 1, 1, 1, 1, 152, 255, 255, 255, 255, 255, 251, 37, 1, 1, 1, 1, 1, 1, 5, 48, 118, 197, 249, 255, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 114, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 160, 6, 1, 1, 1, 166, 253, 253, 253, 253, 243, 232, 232, 232, 238, 253, 253, 253, 253, 184, 6, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 1, 1, 1, 1, 1, 140, 174, 173, 126, 18, 1, 1, 1, 1, 91, 255, 255, 255, 82, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 128, 1, 1, 1, 1, 6, 233, 255, 255, 255, 255, 255, 255, 255, 135, 1, 1, 1, 1, 1, 63, 79, 79, 50, 3, 1, 1, 1, 13, 187, 255, 255, 255, 160, 1, 1, 1, 1, 1, 198, 255, 255, 255, 255, 255, 184, 1, 1, 1, 1, 1, 181, 255, 255, 255, 80, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 111, 243, 255, 255, 255, 255, 165, 1, 1, 1, 1, 1, 54, 79, 79, 61, 9, 1, 1, 1, 4, 152, 255, 255, 255, 255, 255, 252, 116, 1, 1, 1, 2, 191, 156, 1, 1, 1, 1, 133, 255, 255, 255, 255, 255, 252, 85, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 53, 196, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 184, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 235, 55, 1, 1, 1, 3, 233, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 251, 153, 13, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 221, 255, 255, 237, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 123, 255, 255, 255, 255, 255, 255, 255, 255, 252, 66, 1, 1, 1, 1, 66, 252, 255, 255, 255, 255, 255, 255, 255, 75, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 89, 213, 255, 255, 255, 255, 89, 1, 1, 1, 1, 34, 248, 255, 255, 255, 255, 255, 122, 1, 1, 1, 1, 5, 234, 255, 255, 236, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 58, 226, 255, 255, 255, 255, 99, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 192, 255, 255, 255, 255, 255, 255, 201, 5, 1, 1, 1, 91, 252, 161, 1, 1, 1, 1, 118, 255, 255, 255, 255, 255, 255, 212, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 206, 255, 255,
+ 253, 253, 1, 1, 1, 1, 13, 240, 253, 253, 253, 244, 180, 180, 180, 184, 225, 253, 253, 253, 253, 220, 13, 1, 1, 66, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 205, 29, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 201, 255, 255, 255, 184, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 196, 255, 255, 255, 255, 255, 255, 255, 255, 233, 5, 1, 1, 1, 1, 130, 255, 255, 255, 255, 255, 255, 255, 235, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 84, 226, 255, 255, 255, 255, 27, 1, 1, 1, 1, 93, 255, 255, 255, 255, 255, 249, 44, 1, 1, 1, 1, 85, 255, 255, 255, 182, 1, 1, 1, 1, 1, 35, 41, 39, 18, 1, 1, 1, 1, 1, 109, 255, 255, 255, 247, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 59, 216, 255, 255, 255, 255, 255, 247, 51, 1, 1, 1, 7, 217, 255, 161, 1, 1, 1, 1, 105, 255, 255, 255, 255, 255, 255, 255, 225, 109, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 108, 255, 255,
+ 253, 253, 1, 1, 1, 1, 85, 253, 253, 253, 253, 184, 1, 1, 1, 1, 15, 229, 253, 253, 253, 253, 81, 1, 1, 130, 253, 253, 253, 253, 173, 110, 110, 118, 188, 253, 253, 253, 253, 160, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 99, 225, 255, 255, 255, 255, 115, 1, 1, 1, 1, 13, 181, 184, 184, 184, 184, 184, 184, 248, 255, 255, 255, 255, 255, 255, 255, 255, 170, 1, 1, 1, 1, 1, 205, 255, 255, 255, 255, 255, 255, 255, 178, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 108, 255, 255, 255, 235, 2, 1, 1, 1, 1, 115, 255, 255, 255, 255, 255, 178, 1, 1, 1, 1, 1, 184, 255, 255, 255, 113, 1, 1, 1, 1, 9, 243, 252, 252, 248, 115, 1, 1, 1, 1, 64, 255, 255, 255, 202, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 76, 255, 255, 255, 255, 255, 131, 1, 1, 1, 1, 115, 252, 252, 157, 1, 1, 1, 1, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 186, 120, 55, 1, 1, 1, 1, 1, 1, 93, 255, 255,
+ 253, 253, 1, 1, 1, 1, 149, 253, 253, 253, 253, 114, 1, 1, 1, 1, 1, 218, 253, 253, 253, 253, 100, 1, 1, 205, 253, 253, 253, 253, 58, 1, 1, 1, 3, 233, 253, 253, 253, 208, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 1, 1, 1, 1, 13, 95, 95, 95, 99, 120, 168, 230, 255, 255, 255, 255, 255, 251, 45, 1, 1, 1, 1, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 102, 1, 1, 1, 1, 30, 247, 255, 255, 255, 255, 255, 255, 255, 108, 1, 1, 1, 1, 24, 236, 243, 236, 179, 9, 1, 1, 1, 1, 86, 255, 255, 255, 225, 2, 1, 1, 1, 1, 97, 255, 255, 255, 255, 230, 35, 1, 1, 1, 1, 71, 251, 255, 255, 250, 44, 1, 1, 1, 1, 82, 255, 255, 255, 255, 120, 1, 1, 1, 1, 98, 255, 255, 255, 127, 1, 1, 1, 1, 4, 221, 243, 239, 193, 24, 1, 1, 1, 1, 50, 255, 255, 255, 255, 214, 8, 1, 1, 1, 1, 34, 45, 45, 29, 1, 1, 1, 1, 69, 255, 255, 255, 250, 181, 181, 181, 181, 181, 228, 255, 255, 255, 183, 1, 1, 1, 1, 1, 133, 255, 255,
+ 253, 253, 1, 1, 1, 2, 220, 253, 253, 253, 251, 44, 1, 1, 1, 2, 105, 253, 253, 253, 253, 253, 69, 1, 30, 249, 253, 253, 253, 227, 6, 1, 1, 1, 1, 207, 253, 253, 253, 214, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 36, 1, 1, 1, 1, 93, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 2, 1, 1, 1, 1, 134, 233, 233, 233, 233, 233, 233, 233, 234, 255, 255, 255, 255, 255, 255, 255, 252, 27, 1, 1, 1, 1, 100, 255, 255, 255, 255, 255, 255, 255, 250, 39, 1, 1, 1, 1, 93, 255, 255, 255, 255, 43, 1, 1, 1, 1, 117, 255, 255, 255, 239, 2, 1, 1, 1, 1, 15, 206, 252, 252, 210, 48, 1, 1, 1, 1, 15, 217, 255, 255, 255, 218, 2, 1, 1, 1, 1, 130, 233, 233, 226, 159, 13, 1, 1, 1, 1, 166, 255, 255, 252, 66, 1, 1, 1, 1, 59, 255, 255, 255, 255, 74, 1, 1, 1, 1, 90, 255, 255, 255, 249, 70, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 255, 255, 255, 227, 2, 1, 1, 1, 1, 126, 252, 255, 255, 198, 1, 1, 1, 1, 3, 219, 255, 255,
+ 253, 253, 1, 1, 1, 48, 251, 253, 253, 253, 248, 187, 187, 187, 190, 218, 253, 253, 253, 253, 253, 228, 11, 1, 102, 253, 253, 253, 253, 168, 1, 1, 1, 1, 1, 201, 253, 253, 253, 220, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 1, 1, 1, 1, 1, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 146, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 85, 255, 255, 255, 255, 255, 255, 255, 206, 1, 1, 1, 1, 1, 169, 255, 255, 255, 255, 255, 255, 255, 214, 2, 1, 1, 1, 1, 158, 255, 255, 255, 234, 9, 1, 1, 1, 1, 179, 255, 255, 255, 255, 53, 1, 1, 1, 1, 1, 6, 53, 41, 2, 1, 1, 1, 1, 6, 177, 255, 255, 255, 255, 145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 44, 245, 255, 255, 230, 9, 1, 1, 1, 1, 127, 255, 255, 255, 249, 35, 1, 1, 1, 1, 141, 255, 255, 255, 148, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 250, 255, 255, 235, 2, 1, 1, 1, 1, 2, 90, 118, 90, 9, 1, 1, 1, 1, 112, 255, 255, 255,
+ 253, 253, 1, 1, 1, 117, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 108, 1, 1, 175, 253, 253, 253, 253, 99, 1, 1, 1, 1, 1, 194, 253, 253, 253, 224, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 1, 1, 1, 1, 2, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 146, 255, 255, 255, 255, 255, 255, 255, 132, 1, 1, 1, 1, 9, 230, 255, 255, 255, 255, 255, 255, 255, 139, 1, 1, 1, 1, 2, 222, 255, 255, 255, 179, 1, 1, 1, 1, 12, 236, 255, 255, 255, 255, 152, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 175, 255, 255, 255, 255, 252, 82, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 205, 255, 255, 255, 170, 1, 1, 1, 1, 1, 201, 255, 255, 255, 211, 2, 1, 1, 1, 2, 214, 255, 255, 222, 18, 1, 1, 1, 2, 78, 83, 83, 83, 83, 52, 1, 1, 1, 1, 18, 240, 255, 255, 255, 66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 70, 239, 255, 255, 255,
+ 253, 253, 1, 1, 1, 189, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 241, 112, 2, 1, 9, 234, 253, 253, 253, 247, 30, 1, 1, 1, 1, 1, 187, 253, 253, 253, 234, 9, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 76, 1, 1, 1, 1, 49, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 220, 255, 255, 255, 255, 255, 255, 255, 69, 1, 1, 1, 1, 66, 252, 255, 255, 255, 255, 255, 255, 255, 77, 1, 1, 1, 1, 47, 255, 255, 255, 255, 121, 1, 1, 1, 1, 67, 255, 255, 255, 255, 255, 250, 100, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 213, 255, 255, 255, 255, 255, 239, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 70, 214, 255, 255, 255, 255, 101, 1, 1, 1, 1, 26, 249, 255, 255, 255, 150, 1, 1, 1, 1, 30, 252, 255, 251, 90, 1, 1, 1, 1, 94, 255, 255, 255, 255, 255, 161, 1, 1, 1, 1, 5, 231, 255, 255, 255, 210, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 104, 237, 255, 255, 255, 255,
+ 253, 253, 1, 1, 12, 205, 215, 215, 215, 215, 215, 215, 215, 215, 215, 212, 200, 170, 119, 35, 1, 1, 1, 53, 215, 215, 215, 215, 179, 1, 1, 1, 1, 1, 1, 171, 239, 239, 239, 228, 13, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 39, 31, 31, 31, 31, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 65, 252, 255, 255, 255, 255, 255, 255, 237, 35, 31, 31, 31, 31, 138, 255, 255, 255, 255, 255, 255, 255, 239, 40, 31, 31, 31, 31, 126, 255, 255, 255, 255, 105, 31, 31, 31, 31, 61, 244, 255, 255, 255, 255, 255, 249, 150, 42, 1, 1, 1, 1, 1, 13, 82, 179, 248, 255, 255, 255, 255, 255, 255, 199, 31, 31, 31, 31, 31, 31, 31, 31, 29, 45, 81, 122, 201, 250, 255, 255, 255, 255, 249, 60, 31, 31, 31, 31, 112, 255, 255, 255, 255, 132, 31, 31, 31, 31, 44, 233, 255, 185, 32, 31, 31, 31, 35, 220, 255, 255, 255, 255, 255, 174, 31, 31, 31, 31, 31, 222, 255, 255, 255, 255, 217, 89, 6, 1, 1, 1, 1, 1, 27, 102, 205, 252, 255, 255, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 13, 13, 13, 13, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 250, 255, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 252, 255, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 252, 255, 255, 255, 255, 250, 249, 249, 249, 249, 249, 255, 255, 255, 255, 255, 255, 255, 255, 248, 217, 179, 170, 175, 200, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 249, 249, 249, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 251, 255, 255, 255, 255, 251, 249, 249, 249, 249, 249, 252, 255, 251, 249, 249, 249, 249, 250, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 252, 255, 255, 255, 255, 255, 252, 230, 187, 170, 170, 182, 219, 246, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(236, 48, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "0 140 79");
+ IupSetAttribute(image, "2", "1 140 80");
+ IupSetAttribute(image, "3", "4 141 81");
+ IupSetAttribute(image, "4", "4 141 82");
+ IupSetAttribute(image, "5", "5 142 82");
+ IupSetAttribute(image, "6", "5 142 83");
+ IupSetAttribute(image, "7", "7 143 84");
+ IupSetAttribute(image, "8", "8 143 83");
+ IupSetAttribute(image, "9", "8 142 84");
+ IupSetAttribute(image, "10", "11 143 86");
+ IupSetAttribute(image, "11", "10 144 85");
+ IupSetAttribute(image, "12", "11 144 86");
+ IupSetAttribute(image, "13", "12 144 86");
+ IupSetAttribute(image, "14", "12 146 87");
+ IupSetAttribute(image, "15", "14 145 88");
+ IupSetAttribute(image, "16", "15 146 88");
+ IupSetAttribute(image, "17", "16 145 88");
+ IupSetAttribute(image, "18", "17 146 89");
+ IupSetAttribute(image, "19", "18 147 90");
+ IupSetAttribute(image, "20", "19 148 91");
+ IupSetAttribute(image, "21", "20 146 90");
+ IupSetAttribute(image, "22", "21 147 92");
+ IupSetAttribute(image, "23", "20 148 91");
+ IupSetAttribute(image, "24", "21 148 92");
+ IupSetAttribute(image, "25", "22 149 94");
+ IupSetAttribute(image, "26", "24 148 93");
+ IupSetAttribute(image, "27", "24 149 94");
+ IupSetAttribute(image, "28", "26 150 94");
+ IupSetAttribute(image, "29", "26 150 96");
+ IupSetAttribute(image, "30", "28 150 96");
+ IupSetAttribute(image, "31", "27 152 97");
+ IupSetAttribute(image, "32", "30 152 98");
+ IupSetAttribute(image, "33", "32 151 98");
+ IupSetAttribute(image, "34", "32 152 99");
+ IupSetAttribute(image, "35", "32 152 100");
+ IupSetAttribute(image, "36", "34 154 100");
+ IupSetAttribute(image, "37", "35 155 102");
+ IupSetAttribute(image, "38", "37 153 101");
+ IupSetAttribute(image, "39", "37 154 102");
+ IupSetAttribute(image, "40", "39 155 104");
+ IupSetAttribute(image, "41", "39 156 104");
+ IupSetAttribute(image, "42", "40 156 103");
+ IupSetAttribute(image, "43", "41 155 104");
+ IupSetAttribute(image, "44", "41 156 104");
+ IupSetAttribute(image, "45", "42 157 106");
+ IupSetAttribute(image, "46", "45 157 107");
+ IupSetAttribute(image, "47", "44 158 107");
+ IupSetAttribute(image, "48", "45 158 108");
+ IupSetAttribute(image, "49", "48 159 109");
+ IupSetAttribute(image, "50", "49 159 111");
+ IupSetAttribute(image, "51", "47 160 109");
+ IupSetAttribute(image, "52", "45 160 110");
+ IupSetAttribute(image, "53", "50 160 111");
+ IupSetAttribute(image, "54", "50 161 112");
+ IupSetAttribute(image, "55", "52 161 112");
+ IupSetAttribute(image, "56", "53 161 114");
+ IupSetAttribute(image, "57", "54 162 113");
+ IupSetAttribute(image, "58", "54 162 114");
+ IupSetAttribute(image, "59", "56 162 114");
+ IupSetAttribute(image, "60", "57 163 116");
+ IupSetAttribute(image, "61", "57 164 116");
+ IupSetAttribute(image, "62", "59 164 118");
+ IupSetAttribute(image, "63", "58 165 119");
+ IupSetAttribute(image, "64", "59 166 119");
+ IupSetAttribute(image, "65", "60 164 117");
+ IupSetAttribute(image, "66", "61 165 118");
+ IupSetAttribute(image, "67", "62 166 119");
+ IupSetAttribute(image, "68", "63 165 120");
+ IupSetAttribute(image, "69", "62 166 120");
+ IupSetAttribute(image, "70", "64 166 120");
+ IupSetAttribute(image, "71", "66 167 122");
+ IupSetAttribute(image, "72", "66 168 122");
+ IupSetAttribute(image, "73", "66 169 124");
+ IupSetAttribute(image, "74", "67 170 125");
+ IupSetAttribute(image, "75", "68 168 123");
+ IupSetAttribute(image, "76", "69 169 124");
+ IupSetAttribute(image, "77", "71 169 126");
+ IupSetAttribute(image, "78", "68 170 125");
+ IupSetAttribute(image, "79", "70 171 127");
+ IupSetAttribute(image, "80", "72 170 126");
+ IupSetAttribute(image, "81", "73 171 127");
+ IupSetAttribute(image, "82", "74 171 128");
+ IupSetAttribute(image, "83", "72 172 128");
+ IupSetAttribute(image, "84", "77 171 128");
+ IupSetAttribute(image, "85", "77 172 130");
+ IupSetAttribute(image, "86", "78 173 131");
+ IupSetAttribute(image, "87", "77 174 131");
+ IupSetAttribute(image, "88", "80 173 130");
+ IupSetAttribute(image, "89", "80 174 132");
+ IupSetAttribute(image, "90", "82 174 133");
+ IupSetAttribute(image, "91", "84 175 134");
+ IupSetAttribute(image, "92", "83 176 135");
+ IupSetAttribute(image, "93", "86 176 136");
+ IupSetAttribute(image, "94", "88 177 137");
+ IupSetAttribute(image, "95", "89 177 138");
+ IupSetAttribute(image, "96", "90 178 138");
+ IupSetAttribute(image, "97", "92 179 139");
+ IupSetAttribute(image, "98", "93 179 140");
+ IupSetAttribute(image, "99", "94 180 142");
+ IupSetAttribute(image, "100", "96 180 142");
+ IupSetAttribute(image, "101", "98 181 144");
+ IupSetAttribute(image, "102", "98 182 144");
+ IupSetAttribute(image, "103", "101 181 144");
+ IupSetAttribute(image, "104", "100 182 145");
+ IupSetAttribute(image, "105", "102 183 146");
+ IupSetAttribute(image, "106", "102 184 147");
+ IupSetAttribute(image, "107", "103 185 148");
+ IupSetAttribute(image, "108", "105 184 148");
+ IupSetAttribute(image, "109", "107 185 150");
+ IupSetAttribute(image, "110", "105 186 150");
+ IupSetAttribute(image, "111", "108 185 150");
+ IupSetAttribute(image, "112", "108 186 150");
+ IupSetAttribute(image, "113", "109 187 152");
+ IupSetAttribute(image, "114", "111 188 154");
+ IupSetAttribute(image, "115", "113 188 154");
+ IupSetAttribute(image, "116", "115 189 156");
+ IupSetAttribute(image, "117", "117 190 157");
+ IupSetAttribute(image, "118", "118 190 158");
+ IupSetAttribute(image, "119", "120 191 159");
+ IupSetAttribute(image, "120", "122 192 160");
+ IupSetAttribute(image, "121", "123 193 162");
+ IupSetAttribute(image, "122", "124 193 162");
+ IupSetAttribute(image, "123", "124 194 162");
+ IupSetAttribute(image, "124", "127 195 164");
+ IupSetAttribute(image, "125", "255 204 48");
+ IupSetAttribute(image, "126", "128 195 164");
+ IupSetAttribute(image, "127", "129 196 166");
+ IupSetAttribute(image, "128", "132 197 167");
+ IupSetAttribute(image, "129", "131 197 168");
+ IupSetAttribute(image, "130", "133 197 168");
+ IupSetAttribute(image, "131", "134 198 169");
+ IupSetAttribute(image, "132", "133 198 170");
+ IupSetAttribute(image, "133", "136 198 170");
+ IupSetAttribute(image, "134", "137 199 171");
+ IupSetAttribute(image, "135", "139 201 172");
+ IupSetAttribute(image, "136", "140 200 172");
+ IupSetAttribute(image, "137", "140 200 173");
+ IupSetAttribute(image, "138", "141 201 174");
+ IupSetAttribute(image, "139", "142 202 175");
+ IupSetAttribute(image, "140", "142 202 176");
+ IupSetAttribute(image, "141", "144 202 176");
+ IupSetAttribute(image, "142", "145 203 177");
+ IupSetAttribute(image, "143", "146 204 178");
+ IupSetAttribute(image, "144", "148 203 178");
+ IupSetAttribute(image, "145", "149 204 179");
+ IupSetAttribute(image, "146", "150 205 180");
+ IupSetAttribute(image, "147", "151 206 182");
+ IupSetAttribute(image, "148", "152 205 181");
+ IupSetAttribute(image, "149", "152 206 181");
+ IupSetAttribute(image, "150", "153 206 182");
+ IupSetAttribute(image, "151", "155 208 185");
+ IupSetAttribute(image, "152", "158 208 184");
+ IupSetAttribute(image, "153", "158 209 186");
+ IupSetAttribute(image, "154", "159 210 186");
+ IupSetAttribute(image, "155", "158 210 187");
+ IupSetAttribute(image, "156", "159 211 189");
+ IupSetAttribute(image, "157", "159 212 189");
+ IupSetAttribute(image, "158", "160 209 186");
+ IupSetAttribute(image, "159", "161 210 187");
+ IupSetAttribute(image, "160", "162 210 188");
+ IupSetAttribute(image, "161", "160 212 189");
+ IupSetAttribute(image, "162", "166 209 188");
+ IupSetAttribute(image, "163", "164 211 189");
+ IupSetAttribute(image, "164", "164 211 190");
+ IupSetAttribute(image, "165", "166 212 191");
+ IupSetAttribute(image, "166", "167 213 192");
+ IupSetAttribute(image, "167", "167 213 193");
+ IupSetAttribute(image, "168", "168 213 192");
+ IupSetAttribute(image, "169", "170 214 193");
+ IupSetAttribute(image, "170", "170 214 194");
+ IupSetAttribute(image, "171", "172 213 193");
+ IupSetAttribute(image, "172", "172 215 195");
+ IupSetAttribute(image, "173", "169 216 195");
+ IupSetAttribute(image, "174", "170 216 196");
+ IupSetAttribute(image, "175", "173 216 196");
+ IupSetAttribute(image, "176", "175 217 198");
+ IupSetAttribute(image, "177", "176 217 198");
+ IupSetAttribute(image, "178", "179 218 199");
+ IupSetAttribute(image, "179", "178 218 200");
+ IupSetAttribute(image, "180", "180 218 200");
+ IupSetAttribute(image, "181", "182 219 202");
+ IupSetAttribute(image, "182", "182 220 202");
+ IupSetAttribute(image, "183", "184 220 203");
+ IupSetAttribute(image, "184", "184 220 204");
+ IupSetAttribute(image, "185", "187 222 205");
+ IupSetAttribute(image, "186", "187 222 206");
+ IupSetAttribute(image, "187", "189 222 206");
+ IupSetAttribute(image, "188", "189 223 208");
+ IupSetAttribute(image, "189", "191 224 208");
+ IupSetAttribute(image, "190", "192 223 208");
+ IupSetAttribute(image, "191", "192 224 209");
+ IupSetAttribute(image, "192", "194 224 210");
+ IupSetAttribute(image, "193", "195 225 211");
+ IupSetAttribute(image, "194", "195 226 212");
+ IupSetAttribute(image, "195", "196 225 211");
+ IupSetAttribute(image, "196", "196 226 212");
+ IupSetAttribute(image, "197", "197 227 213");
+ IupSetAttribute(image, "198", "199 227 214");
+ IupSetAttribute(image, "199", "200 227 214");
+ IupSetAttribute(image, "200", "201 228 215");
+ IupSetAttribute(image, "201", "201 228 216");
+ IupSetAttribute(image, "202", "203 230 217");
+ IupSetAttribute(image, "203", "205 229 217");
+ IupSetAttribute(image, "204", "204 230 217");
+ IupSetAttribute(image, "205", "206 230 218");
+ IupSetAttribute(image, "206", "207 231 220");
+ IupSetAttribute(image, "207", "205 233 221");
+ IupSetAttribute(image, "208", "208 231 219");
+ IupSetAttribute(image, "209", "208 231 220");
+ IupSetAttribute(image, "210", "208 232 220");
+ IupSetAttribute(image, "211", "210 232 222");
+ IupSetAttribute(image, "212", "212 233 223");
+ IupSetAttribute(image, "213", "212 234 223");
+ IupSetAttribute(image, "214", "214 234 224");
+ IupSetAttribute(image, "215", "215 236 226");
+ IupSetAttribute(image, "216", "216 234 226");
+ IupSetAttribute(image, "217", "217 236 226");
+ IupSetAttribute(image, "218", "218 237 228");
+ IupSetAttribute(image, "219", "220 237 228");
+ IupSetAttribute(image, "220", "222 238 230");
+ IupSetAttribute(image, "221", "225 239 232");
+ IupSetAttribute(image, "222", "225 240 232");
+ IupSetAttribute(image, "223", "226 240 234");
+ IupSetAttribute(image, "224", "227 242 236");
+ IupSetAttribute(image, "225", "228 240 234");
+ IupSetAttribute(image, "226", "230 242 236");
+ IupSetAttribute(image, "227", "232 242 237");
+ IupSetAttribute(image, "228", "233 243 238");
+ IupSetAttribute(image, "229", "233 244 238");
+ IupSetAttribute(image, "230", "234 244 239");
+ IupSetAttribute(image, "231", "234 244 240");
+ IupSetAttribute(image, "232", "235 246 241");
+ IupSetAttribute(image, "233", "236 245 240");
+ IupSetAttribute(image, "234", "238 246 242");
+ IupSetAttribute(image, "235", "240 246 242");
+ IupSetAttribute(image, "236", "241 247 244");
+ IupSetAttribute(image, "237", "242 248 244");
+ IupSetAttribute(image, "238", "243 249 246");
+ IupSetAttribute(image, "239", "244 248 246");
+ IupSetAttribute(image, "240", "245 249 247");
+ IupSetAttribute(image, "241", "245 250 247");
+ IupSetAttribute(image, "242", "246 249 248");
+ IupSetAttribute(image, "243", "246 250 248");
+ IupSetAttribute(image, "244", "248 250 249");
+ IupSetAttribute(image, "245", "249 251 250");
+ IupSetAttribute(image, "246", "250 252 250");
+ IupSetAttribute(image, "247", "250 252 251");
+ IupSetAttribute(image, "248", "251 252 252");
+ IupSetAttribute(image, "249", "252 253 252");
+ IupSetAttribute(image, "250", "252 253 253");
+ IupSetAttribute(image, "251", "253 254 253");
+ IupSetAttribute(image, "252", "253 254 254");
+ IupSetAttribute(image, "253", "254 255 255");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_LogoTecgrafPUC_Rio8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 195, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 168, 168, 168, 168, 168, 168, 169, 169, 169, 179, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 226, 222, 218, 185, 186, 186, 186, 186, 186, 186, 205, 255, 255,
+ 255, 255, 48, 62, 85, 85, 85, 85, 85, 102, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 148, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 133, 114, 143, 143, 144, 145, 145, 145, 145, 145, 148, 148, 120, 255, 255,
+ 255, 255, 43, 34, 65, 65, 65, 65, 65, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 81, 148, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 91, 84, 111, 105, 105, 105, 105, 105, 105, 105, 105, 105, 111, 110, 255, 255,
+ 255, 255, 43, 34, 65, 65, 65, 65, 65, 65, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 81, 148, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 95, 65, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 100, 255, 255,
+ 255, 255, 43, 34, 65, 65, 65, 65, 65, 65, 65, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 81, 148, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 40, 81, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 77, 255, 255,
+ 255, 255, 43, 34, 65, 65, 65, 65, 65, 65, 65, 65, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 81, 148, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 29, 84, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 70, 255, 255,
+ 255, 255, 43, 34, 65, 65, 65, 65, 65, 65, 65, 65, 65, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 81, 148, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 245, 245, 245, 245, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 241, 236, 232, 223, 223, 223, 226, 236, 237, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 241, 241, 241, 241, 241, 246, 246, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 29, 84, 105, 105, 105, 105, 105, 105, 105, 105, 84, 75, 70, 79, 60, 255, 255,
+ 255, 255, 43, 30, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 70, 70, 70, 70, 70, 71, 71, 71, 71, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 248, 255, 255, 255, 255, 251, 237, 195, 156, 133, 125, 114, 115, 125, 143, 143, 147, 155, 177, 202, 232, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 206, 133, 119, 114, 115, 115, 115, 115, 121, 143, 144, 148, 159, 178, 214, 232, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 223, 179, 157, 157, 155, 163, 178, 214, 232, 243, 251, 195, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 183, 245, 255, 255, 209, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 207, 246, 255, 241, 209, 172, 214, 229, 246, 255, 255, 255, 255, 255, 255, 251, 236, 222, 168, 157, 148, 148, 148, 148, 149, 149, 159, 159, 159, 159, 173, 178, 214, 232, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 130, 31, 105, 105, 105, 105, 105, 105, 105, 105, 102, 56, 18, 20, 33, 52, 255, 255,
+ 255, 255, 43, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 30, 70, 70, 70, 70, 70, 71, 71, 71, 71, 75, 31, 2, 2, 2, 2, 2, 2, 2, 2, 5, 61, 248, 255, 255, 245, 208, 116, 81, 81, 81, 81, 81, 80, 80, 80, 81, 81, 84, 85, 111, 142, 148, 164, 214, 239, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 212, 116, 81, 81, 84, 81, 80, 80, 80, 79, 79, 79, 80, 81, 81, 102, 115, 148, 162, 189, 224, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 231, 136, 107, 111, 111, 111, 111, 111, 112, 115, 143, 159, 188, 172, 32, 83, 141, 142, 142, 142, 142, 142, 142, 142, 143, 115, 236, 255, 255, 54, 81, 142, 143, 143, 143, 143, 143, 143, 143, 143, 148, 211, 126, 108, 111, 115, 153, 232, 246, 255, 255, 255, 255, 245, 199, 124, 115, 115, 115, 112, 111, 111, 111, 105, 105, 105, 111, 111, 112, 115, 115, 143, 151, 164, 190, 215, 240, 255, 255, 255, 255, 206, 180, 184, 91, 36, 105, 105, 105, 105, 105, 105, 105, 105, 111, 114, 156, 167, 157, 156, 255, 255,
+ 255, 255, 235, 198, 198, 198, 198, 198, 198, 198, 198, 198, 35, 28, 65, 70, 70, 70, 70, 70, 71, 71, 71, 79, 107, 140, 198, 198, 198, 198, 198, 198, 198, 198, 211, 251, 251, 206, 76, 70, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 79, 105, 148, 189, 217, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 123, 70, 75, 79, 75, 75, 75, 75, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 80, 84, 143, 178, 192, 240, 251, 255, 255, 255, 255, 255, 255, 255, 245, 132, 75, 81, 81, 81, 80, 81, 81, 81, 81, 81, 81, 84, 114, 145, 65, 75, 81, 81, 81, 81, 81, 81, 81, 81, 85, 115, 236, 255, 255, 48, 56, 81, 83, 83, 83, 84, 84, 84, 84, 105, 124, 57, 81, 84, 84, 84, 104, 223, 244, 255, 255, 255, 235, 91, 79, 85, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 105, 115, 163, 192, 221, 249, 255, 255, 92, 65, 143, 141, 84, 102, 105, 105, 105, 105, 105, 105, 105, 115, 177, 177, 163, 148, 120, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 70, 70, 70, 70, 70, 71, 71, 79, 148, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 130, 57, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 101, 163, 192, 240, 255, 255, 255, 255, 255, 255, 255, 255, 211, 60, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 81, 152, 192, 224, 249, 255, 255, 255, 255, 255, 238, 90, 65, 79, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 108, 154, 75, 83, 83, 83, 83, 84, 191, 244, 255, 255, 238, 68, 66, 81, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 102, 127, 191, 217, 249, 255, 88, 41, 85, 85, 85, 102, 102, 102, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 114, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 70, 70, 70, 70, 70, 71, 79, 148, 243, 255, 255, 255, 255, 255, 255, 255, 255, 248, 98, 39, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 80, 152, 217, 234, 255, 255, 255, 255, 255, 255, 210, 46, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 125, 214, 224, 251, 255, 255, 255, 245, 90, 59, 79, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 108, 121, 81, 81, 83, 83, 83, 84, 155, 241, 255, 251, 123, 59, 79, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 115, 174, 232, 255, 88, 41, 85, 85, 85, 85, 102, 102, 102, 105, 105, 105, 105, 105, 105, 105, 105, 105, 114, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 70, 70, 70, 70, 70, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 255, 255, 139, 29, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 128, 217, 240, 255, 255, 255, 255, 235, 46, 59, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 124, 192, 240, 255, 255, 255, 122, 40, 75, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 84, 81, 81, 81, 83, 83, 83, 143, 240, 255, 238, 60, 79, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 102, 143, 178, 249, 88, 41, 85, 85, 85, 85, 85, 85, 102, 102, 102, 105, 105, 105, 105, 105, 105, 105, 114, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 65, 70, 70, 70, 70, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 255, 238, 35, 57, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 62, 56, 39, 42, 62, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 158, 217, 246, 255, 255, 248, 72, 40, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 59, 41, 36, 41, 65, 75, 79, 79, 79, 79, 79, 79, 79, 79, 80, 154, 191, 246, 255, 235, 33, 64, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 83, 83, 115, 232, 255, 206, 61, 81, 84, 84, 84, 84, 84, 84, 84, 84, 81, 71, 59, 42, 39, 41, 59, 75, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 148, 241, 88, 41, 85, 85, 85, 85, 85, 85, 85, 102, 102, 102, 102, 105, 105, 105, 105, 105, 114, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 65, 65, 70, 70, 70, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 251, 122, 19, 65, 71, 71, 75, 75, 75, 75, 75, 75, 75, 65, 29, 18, 25, 26, 20, 2, 28, 65, 75, 75, 75, 75, 75, 75, 75, 75, 81, 178, 224, 255, 255, 210, 21, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 59, 19, 25, 43, 44, 24, 3, 29, 71, 79, 79, 79, 79, 79, 79, 79, 79, 81, 151, 223, 255, 122, 34, 75, 80, 80, 80, 80, 80, 80, 80, 80, 80, 79, 65, 57, 36, 41, 59, 75, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 114, 209, 255, 175, 71, 83, 84, 84, 84, 84, 84, 84, 84, 79, 34, 21, 25, 37, 69, 35, 20, 7, 62, 84, 84, 84, 84, 84, 84, 84, 84, 105, 143, 236, 88, 39, 81, 81, 84, 85, 85, 85, 85, 85, 85, 102, 102, 102, 84, 83, 83, 84, 114, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 65, 65, 65, 70, 70, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 245, 25, 42, 71, 71, 71, 71, 75, 75, 75, 75, 75, 71, 39, 93, 206, 225, 232, 211, 117, 11, 12, 65, 75, 75, 75, 75, 75, 75, 75, 75, 143, 191, 246, 248, 88, 31, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 65, 40, 138, 238, 245, 248, 245, 193, 23, 19, 75, 79, 79, 79, 75, 75, 75, 75, 75, 84, 127, 242, 46, 56, 79, 79, 80, 80, 80, 80, 80, 80, 80, 79, 56, 19, 35, 54, 25, 12, 12, 65, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 106, 206, 255, 175, 42, 39, 36, 36, 36, 34, 34, 34, 31, 57, 47, 126, 156, 186, 168, 156, 126, 34, 34, 81, 84, 84, 84, 84, 84, 84, 84, 85, 112, 211, 88, 6, 8, 10, 41, 85, 85, 85, 85, 85, 85, 85, 85, 102, 65, 10, 8, 13, 74, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 65, 65, 65, 65, 70, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 211, 7, 64, 71, 71, 71, 71, 71, 75, 75, 75, 75, 82, 84, 114, 115, 114, 113, 104, 81, 62, 31, 59, 75, 75, 75, 75, 75, 75, 75, 75, 81, 160, 240, 238, 25, 57, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 70, 213, 255, 255, 255, 255, 255, 255, 213, 4, 29, 31, 30, 29, 28, 22, 29, 34, 40, 45, 73, 194, 18, 65, 79, 79, 79, 80, 80, 80, 80, 80, 80, 71, 67, 210, 245, 251, 245, 227, 53, 7, 75, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 75, 65, 57, 57, 65, 78, 208, 255, 235, 134, 99, 89, 38, 19, 39, 59, 71, 71, 111, 143, 142, 115, 115, 115, 112, 111, 105, 80, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 209, 213, 140, 140, 50, 34, 85, 85, 85, 85, 85, 85, 85, 85, 105, 111, 97, 140, 140, 198, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 65, 65, 65, 65, 70, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 138, 8, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 145, 223, 235, 18, 64, 75, 75, 75, 75, 75, 75, 75, 75, 75, 84, 156, 255, 255, 255, 255, 255, 255, 255, 255, 122, 55, 88, 97, 130, 138, 193, 213, 235, 238, 238, 245, 210, 18, 65, 79, 79, 79, 79, 80, 80, 80, 80, 81, 81, 213, 255, 255, 255, 255, 255, 241, 15, 58, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 42, 18, 24, 25, 33, 35, 54, 231, 255, 255, 250, 200, 110, 105, 111, 111, 111, 105, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 209, 255, 255, 255, 92, 34, 84, 84, 85, 85, 85, 85, 85, 85, 105, 115, 200, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 129, 13, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 115, 185, 208, 8, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 114, 223, 255, 255, 255, 255, 255, 255, 255, 255, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 13, 71, 79, 79, 79, 79, 79, 80, 80, 80, 84, 143, 245, 255, 255, 255, 255, 255, 248, 37, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 75, 67, 206, 238, 245, 245, 245, 238, 248, 255, 245, 132, 81, 84, 84, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 209, 255, 255, 255, 92, 34, 84, 84, 84, 85, 85, 85, 85, 85, 105, 115, 207, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 79, 148, 243, 255, 255, 255, 255, 255, 255, 129, 12, 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 111, 158, 140, 7, 71, 75, 75, 75, 75, 75, 75, 75, 75, 79, 143, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 12, 65, 79, 79, 79, 79, 79, 79, 79, 80, 102, 164, 241, 255, 255, 255, 255, 255, 238, 32, 65, 81, 81, 81, 81, 81, 81, 81, 81, 84, 112, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 211, 255, 255, 255, 255, 255, 255, 255, 249, 134, 70, 81, 81, 81, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 209, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 85, 85, 85, 105, 115, 209, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 79, 148, 243, 255, 255, 255, 255, 255, 255, 139, 6, 70, 71, 71, 71, 71, 71, 71, 71, 71, 75, 71, 65, 65, 65, 65, 65, 65, 64, 64, 62, 62, 59, 59, 58, 57, 57, 57, 57, 56, 42, 65, 157, 193, 7, 65, 75, 75, 75, 75, 75, 75, 75, 75, 79, 148, 228, 255, 255, 255, 255, 255, 255, 255, 255, 245, 165, 171, 207, 222, 223, 232, 244, 244, 244, 244, 246, 206, 12, 64, 79, 79, 79, 79, 79, 79, 79, 79, 81, 163, 220, 243, 250, 255, 248, 236, 95, 57, 79, 80, 80, 81, 81, 81, 81, 81, 81, 84, 112, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 237, 255, 255, 255, 255, 255, 255, 255, 235, 60, 81, 81, 81, 81, 81, 83, 83, 83, 83, 81, 79, 65, 57, 41, 41, 36, 34, 29, 56, 81, 84, 84, 84, 84, 84, 84, 84, 84, 111, 209, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 85, 85, 105, 115, 209, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 79, 148, 243, 255, 255, 255, 255, 255, 255, 210, 1, 62, 71, 71, 71, 71, 71, 71, 71, 71, 75, 65, 24, 35, 35, 35, 33, 33, 33, 33, 24, 18, 20, 20, 25, 25, 25, 25, 25, 24, 24, 25, 93, 210, 10, 62, 75, 75, 75, 75, 75, 75, 75, 75, 75, 150, 215, 250, 255, 255, 255, 255, 255, 255, 255, 134, 65, 81, 84, 111, 115, 148, 189, 220, 224, 230, 233, 156, 16, 41, 79, 79, 79, 79, 79, 79, 79, 79, 79, 104, 172, 189, 178, 177, 152, 107, 75, 79, 80, 80, 80, 80, 81, 81, 81, 81, 81, 84, 112, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 120, 238, 255, 255, 255, 255, 255, 255, 251, 97, 58, 81, 81, 81, 81, 81, 81, 83, 83, 83, 62, 19, 20, 25, 51, 51, 72, 69, 17, 59, 83, 84, 84, 84, 84, 84, 84, 84, 84, 111, 209, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 105, 115, 209, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 79, 148, 243, 255, 255, 255, 255, 255, 255, 238, 9, 56, 71, 71, 71, 71, 71, 71, 71, 71, 71, 172, 157, 238, 245, 245, 245, 245, 245, 235, 109, 77, 100, 103, 152, 157, 181, 201, 209, 223, 207, 222, 226, 238, 24, 39, 75, 75, 75, 75, 75, 75, 75, 75, 75, 104, 217, 233, 249, 255, 255, 255, 255, 255, 206, 40, 65, 75, 75, 75, 79, 80, 81, 84, 104, 114, 164, 226, 89, 14, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 81, 113, 115, 115, 111, 81, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 84, 112, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 120, 238, 255, 255, 255, 255, 255, 255, 245, 43, 65, 81, 81, 81, 81, 81, 81, 81, 81, 84, 65, 170, 235, 245, 251, 251, 237, 126, 65, 81, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 211, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 105, 115, 209, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 243, 255, 255, 255, 255, 255, 255, 248, 48, 13, 70, 71, 71, 71, 71, 71, 71, 71, 71, 106, 191, 191, 232, 243, 242, 238, 195, 76, 70, 79, 79, 81, 84, 111, 143, 155, 163, 181, 187, 217, 216, 248, 88, 12, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 127, 191, 217, 224, 241, 241, 226, 136, 70, 65, 75, 75, 75, 75, 75, 75, 75, 79, 79, 84, 147, 245, 208, 9, 57, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 84, 111, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 120, 238, 255, 255, 255, 255, 255, 255, 238, 24, 65, 81, 81, 81, 81, 81, 81, 81, 81, 105, 164, 221, 240, 236, 209, 157, 114, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 211, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 105, 115, 209, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 243, 255, 255, 255, 255, 255, 255, 255, 198, 2, 57, 71, 71, 71, 71, 71, 71, 71, 71, 71, 100, 150, 151, 148, 146, 114, 80, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 84, 153, 245, 255, 210, 7, 42, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 106, 155, 149, 148, 143, 111, 81, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 79, 75, 171, 255, 248, 88, 10, 65, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 84, 111, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 120, 238, 255, 255, 255, 255, 255, 255, 238, 20, 65, 81, 81, 81, 81, 81, 81, 81, 81, 81, 128, 164, 159, 145, 142, 114, 105, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 211, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 105, 115, 209, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 243, 255, 255, 255, 255, 255, 255, 255, 248, 54, 8, 65, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 79, 81, 80, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 206, 255, 255, 248, 87, 7, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 79, 81, 81, 79, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 76, 238, 255, 255, 238, 35, 13, 65, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 84, 111, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 120, 238, 255, 255, 255, 255, 255, 255, 245, 35, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 105, 85, 84, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 211, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 86, 115, 209, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 243, 255, 255, 255, 255, 255, 255, 255, 255, 235, 20, 13, 65, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 70, 57, 118, 248, 255, 255, 255, 238, 26, 13, 63, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 65, 47, 206, 255, 255, 255, 255, 235, 35, 10, 57, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 79, 70, 70, 80, 80, 80, 80, 80, 80, 80, 80, 84, 111, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 125, 238, 255, 255, 255, 255, 255, 255, 251, 97, 13, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 83, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 112, 211, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 85, 115, 209, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 20, 12, 59, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 62, 40, 95, 245, 255, 255, 255, 255, 255, 213, 37, 7, 57, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 59, 40, 139, 251, 255, 255, 255, 255, 255, 238, 87, 7, 19, 57, 71, 75, 79, 79, 79, 79, 79, 75, 75, 65, 36, 12, 59, 80, 80, 80, 80, 80, 80, 80, 80, 83, 111, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 125, 238, 255, 255, 255, 255, 255, 255, 255, 231, 12, 40, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 83, 83, 83, 81, 81, 84, 84, 84, 84, 84, 84, 84, 84, 115, 222, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 85, 115, 207, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 37, 2, 29, 62, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, 75, 65, 59, 39, 33, 130, 245, 255, 255, 255, 255, 255, 255, 255, 238, 69, 2, 31, 62, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 62, 34, 45, 196, 251, 255, 255, 248, 231, 236, 241, 232, 208, 117, 18, 2, 13, 29, 39, 41, 39, 39, 34, 19, 18, 18, 54, 16, 59, 80, 80, 80, 80, 80, 80, 80, 80, 83, 114, 242, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 125, 238, 255, 255, 255, 255, 255, 255, 255, 251, 135, 7, 39, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 75, 57, 30, 75, 83, 84, 84, 84, 84, 84, 84, 84, 143, 187, 251, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 85, 115, 207, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 19, 62, 62, 62, 62, 62, 62, 62, 62, 62, 71, 148, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 137, 20, 6, 19, 39, 59, 65, 70, 71, 71, 71, 71, 71, 71, 71, 65, 65, 59, 41, 29, 24, 69, 210, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 131, 25, 7, 19, 56, 65, 70, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 62, 42, 29, 24, 117, 238, 255, 255, 255, 255, 245, 52, 84, 145, 145, 148, 148, 155, 155, 156, 133, 133, 109, 33, 54, 69, 97, 198, 235, 248, 37, 59, 80, 80, 80, 80, 80, 80, 80, 80, 81, 114, 246, 255, 255, 48, 41, 75, 75, 75, 75, 75, 75, 75, 75, 79, 115, 238, 255, 255, 255, 255, 255, 255, 255, 255, 251, 138, 12, 18, 59, 75, 81, 81, 81, 81, 81, 81, 81, 80, 75, 62, 34, 18, 33, 7, 57, 79, 79, 80, 81, 81, 81, 81, 81, 111, 125, 209, 255, 255, 92, 30, 79, 79, 79, 79, 79, 79, 79, 79, 80, 111, 207, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 7, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 100, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 137, 54, 15, 7, 10, 14, 29, 31, 36, 36, 34, 29, 19, 17, 17, 18, 43, 117, 227, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 193, 51, 9, 7, 10, 19, 34, 36, 41, 42, 42, 41, 39, 34, 19, 18, 17, 43, 117, 213, 251, 255, 255, 255, 255, 255, 255, 88, 19, 80, 81, 81, 81, 81, 81, 81, 81, 106, 184, 201, 255, 255, 255, 255, 251, 235, 29, 65, 80, 80, 80, 80, 80, 80, 80, 80, 84, 114, 246, 255, 255, 53, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 60, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 69, 9, 12, 19, 31, 40, 56, 41, 39, 34, 19, 18, 20, 69, 197, 245, 53, 12, 19, 24, 29, 29, 34, 34, 39, 40, 40, 42, 91, 242, 255, 97, 10, 13, 13, 13, 13, 13, 13, 13, 13, 17, 40, 208, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 213, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 210, 129, 88, 72, 49, 43, 44, 53, 87, 94, 129, 198, 235, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 238, 210, 134, 87, 48, 44, 26, 33, 33, 26, 43, 69, 96, 140, 213, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 140, 7, 65, 75, 79, 79, 79, 79, 79, 79, 79, 127, 192, 224, 232, 236, 226, 182, 91, 62, 79, 79, 80, 80, 80, 80, 80, 80, 80, 81, 124, 248, 255, 255, 227, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 210, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 235, 137, 94, 69, 44, 26, 44, 54, 87, 130, 210, 245, 255, 255, 255, 235, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 210, 246, 255, 235, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 208, 245, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 12, 56, 75, 75, 79, 79, 79, 79, 79, 79, 80, 127, 161, 149, 143, 115, 111, 81, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 75, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 88, 8, 65, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 81, 81, 80, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 75, 68, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 23, 19, 71, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 70, 40, 175, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 249, 248, 248, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 249, 248, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 20, 18, 65, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 75, 62, 34, 134, 251, 255, 255, 255, 255, 223, 201, 201, 201, 201, 201, 204, 219, 245, 255, 237, 201, 201, 223, 255, 255, 255, 237, 201, 201, 223, 255, 255, 251, 241, 201, 154, 127, 128, 156, 209, 246, 255, 255, 255, 255, 255, 255, 255, 255, 209, 201, 201, 201, 201, 201, 203, 209, 240, 251, 255, 223, 201, 203, 241, 255, 255, 249, 232, 183, 154, 152, 157, 204, 241, 251, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 35, 6, 36, 70, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 75, 62, 34, 29, 138, 251, 255, 255, 255, 255, 255, 147, 85, 85, 105, 105, 105, 85, 85, 127, 245, 209, 85, 85, 152, 255, 255, 255, 209, 85, 85, 154, 255, 251, 223, 113, 85, 105, 111, 111, 105, 85, 119, 237, 255, 255, 255, 255, 255, 255, 255, 119, 85, 85, 105, 105, 105, 102, 85, 114, 232, 255, 157, 85, 105, 209, 255, 245, 156, 105, 85, 105, 111, 105, 85, 111, 183, 251, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 134, 15, 7, 28, 57, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 59, 39, 19, 18, 94, 235, 255, 255, 255, 255, 255, 255, 255, 152, 85, 102, 179, 223, 209, 125, 85, 102, 207, 209, 85, 85, 154, 255, 255, 255, 209, 85, 85, 154, 255, 236, 111, 85, 111, 200, 241, 236, 169, 105, 111, 167, 251, 255, 255, 255, 255, 255, 255, 120, 85, 85, 204, 223, 223, 156, 105, 85, 158, 251, 157, 85, 105, 209, 249, 167, 85, 85, 127, 226, 236, 209, 114, 85, 105, 223, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 139, 51, 9, 2, 8, 13, 19, 19, 28, 19, 19, 13, 13, 7, 18, 51, 130, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 85, 105, 226, 248, 248, 158, 85, 85, 201, 209, 85, 85, 154, 255, 255, 255, 209, 85, 85, 154, 251, 169, 85, 105, 169, 255, 255, 255, 251, 232, 241, 248, 255, 245, 241, 241, 241, 245, 255, 120, 85, 85, 232, 247, 246, 209, 105, 85, 154, 251, 157, 85, 105, 209, 241, 114, 85, 113, 237, 255, 255, 255, 209, 85, 85, 147, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 213, 170, 99, 88, 87, 69, 89, 130, 137, 193, 211, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 85, 85, 125, 127, 125, 105, 85, 111, 232, 209, 85, 85, 154, 255, 255, 255, 209, 85, 85, 154, 249, 152, 85, 105, 223, 255, 255, 255, 255, 255, 255, 255, 255, 127, 85, 85, 85, 179, 255, 120, 85, 85, 111, 113, 113, 105, 85, 105, 209, 255, 157, 85, 105, 209, 232, 105, 85, 127, 249, 255, 255, 255, 241, 85, 85, 114, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 85, 85, 111, 111, 111, 114, 125, 219, 251, 209, 85, 85, 154, 255, 255, 255, 209, 85, 85, 154, 249, 154, 85, 105, 209, 255, 255, 255, 255, 248, 249, 249, 255, 154, 114, 114, 114, 183, 255, 120, 85, 85, 114, 119, 105, 85, 113, 219, 249, 255, 157, 85, 105, 209, 236, 105, 85, 125, 246, 255, 255, 255, 236, 85, 85, 119, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 85, 105, 219, 241, 241, 243, 251, 255, 255, 222, 105, 85, 125, 245, 251, 248, 158, 85, 85, 169, 255, 207, 85, 85, 125, 245, 251, 251, 236, 114, 125, 154, 251, 248, 245, 245, 245, 248, 255, 120, 85, 85, 237, 247, 127, 85, 105, 222, 251, 255, 157, 85, 105, 209, 245, 125, 85, 105, 204, 251, 251, 248, 157, 85, 102, 169, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 85, 105, 226, 255, 255, 255, 255, 255, 255, 245, 125, 85, 85, 119, 156, 128, 105, 85, 111, 236, 255, 248, 128, 85, 85, 114, 156, 152, 105, 85, 105, 209, 251, 255, 255, 255, 255, 255, 255, 120, 85, 85, 241, 255, 226, 108, 85, 114, 242, 255, 157, 85, 105, 209, 255, 223, 108, 85, 105, 128, 157, 125, 85, 85, 125, 245, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 113, 113, 232, 255, 255, 255, 255, 255, 255, 255, 236, 147, 111, 105, 105, 105, 111, 125, 222, 255, 255, 255, 245, 177, 114, 105, 105, 105, 111, 127, 226, 251, 255, 255, 255, 255, 255, 255, 255, 127, 113, 113, 243, 255, 255, 166, 113, 113, 179, 255, 167, 113, 114, 219, 255, 255, 232, 127, 111, 105, 105, 105, 114, 158, 245, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 237, 236, 236, 245, 255, 255, 255, 255, 255, 255, 255, 251, 241, 236, 236, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 237, 236, 240, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(208, 48, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "40 45 54");
+ IupSetAttribute(image, "2", "45 50 60");
+ IupSetAttribute(image, "3", "48 54 63");
+ IupSetAttribute(image, "4", "53 56 63");
+ IupSetAttribute(image, "5", "47 53 64");
+ IupSetAttribute(image, "6", "48 54 64");
+ IupSetAttribute(image, "7", "52 58 67");
+ IupSetAttribute(image, "8", "54 61 73");
+ IupSetAttribute(image, "9", "56 60 67");
+ IupSetAttribute(image, "10", "56 62 74");
+ IupSetAttribute(image, "11", "60 64 71");
+ IupSetAttribute(image, "12", "60 66 76");
+ IupSetAttribute(image, "13", "61 68 81");
+ IupSetAttribute(image, "14", "63 72 86");
+ IupSetAttribute(image, "15", "65 69 75");
+ IupSetAttribute(image, "16", "68 72 78");
+ IupSetAttribute(image, "17", "64 70 81");
+ IupSetAttribute(image, "18", "68 74 84");
+ IupSetAttribute(image, "19", "68 76 91");
+ IupSetAttribute(image, "20", "74 78 84");
+ IupSetAttribute(image, "21", "73 79 90");
+ IupSetAttribute(image, "22", "71 80 95");
+ IupSetAttribute(image, "23", "76 80 85");
+ IupSetAttribute(image, "24", "77 82 90");
+ IupSetAttribute(image, "25", "81 85 92");
+ IupSetAttribute(image, "26", "86 89 95");
+ IupSetAttribute(image, "27", "71 79 96");
+ IupSetAttribute(image, "28", "70 80 96");
+ IupSetAttribute(image, "29", "75 84 99");
+ IupSetAttribute(image, "30", "77 86 104");
+ IupSetAttribute(image, "31", "78 88 106");
+ IupSetAttribute(image, "32", "81 86 96");
+ IupSetAttribute(image, "33", "85 90 98");
+ IupSetAttribute(image, "34", "81 90 108");
+ IupSetAttribute(image, "35", "89 93 99");
+ IupSetAttribute(image, "36", "83 94 113");
+ IupSetAttribute(image, "37", "92 96 101");
+ IupSetAttribute(image, "38", "90 96 105");
+ IupSetAttribute(image, "39", "86 97 116");
+ IupSetAttribute(image, "40", "89 98 115");
+ IupSetAttribute(image, "41", "89 100 121");
+ IupSetAttribute(image, "42", "92 104 125");
+ IupSetAttribute(image, "43", "99 102 107");
+ IupSetAttribute(image, "44", "101 105 109");
+ IupSetAttribute(image, "45", "97 102 113");
+ IupSetAttribute(image, "46", "99 105 116");
+ IupSetAttribute(image, "47", "100 109 126");
+ IupSetAttribute(image, "48", "104 108 112");
+ IupSetAttribute(image, "49", "108 111 115");
+ IupSetAttribute(image, "50", "108 111 116");
+ IupSetAttribute(image, "51", "110 112 117");
+ IupSetAttribute(image, "52", "106 112 123");
+ IupSetAttribute(image, "53", "112 115 118");
+ IupSetAttribute(image, "54", "113 117 122");
+ IupSetAttribute(image, "55", "117 120 124");
+ IupSetAttribute(image, "56", "94 106 128");
+ IupSetAttribute(image, "57", "97 109 131");
+ IupSetAttribute(image, "58", "100 112 134");
+ IupSetAttribute(image, "59", "101 114 137");
+ IupSetAttribute(image, "60", "107 116 132");
+ IupSetAttribute(image, "61", "105 117 138");
+ IupSetAttribute(image, "62", "104 117 141");
+ IupSetAttribute(image, "63", "106 120 143");
+ IupSetAttribute(image, "64", "106 119 144");
+ IupSetAttribute(image, "65", "110 123 149");
+ IupSetAttribute(image, "66", "105 122 152");
+ IupSetAttribute(image, "67", "114 120 131");
+ IupSetAttribute(image, "68", "115 124 142");
+ IupSetAttribute(image, "69", "122 125 129");
+ IupSetAttribute(image, "70", "112 125 150");
+ IupSetAttribute(image, "71", "112 126 152");
+ IupSetAttribute(image, "72", "125 129 132");
+ IupSetAttribute(image, "73", "122 129 141");
+ IupSetAttribute(image, "74", "118 129 148");
+ IupSetAttribute(image, "75", "115 130 156");
+ IupSetAttribute(image, "76", "123 132 148");
+ IupSetAttribute(image, "77", "123 134 155");
+ IupSetAttribute(image, "78", "124 136 158");
+ IupSetAttribute(image, "79", "118 133 160");
+ IupSetAttribute(image, "80", "120 134 162");
+ IupSetAttribute(image, "81", "122 137 165");
+ IupSetAttribute(image, "82", "123 139 168");
+ IupSetAttribute(image, "83", "124 139 168");
+ IupSetAttribute(image, "84", "125 140 169");
+ IupSetAttribute(image, "85", "126 142 172");
+ IupSetAttribute(image, "86", "127 144 173");
+ IupSetAttribute(image, "87", "129 131 134");
+ IupSetAttribute(image, "88", "132 134 138");
+ IupSetAttribute(image, "89", "134 136 140");
+ IupSetAttribute(image, "90", "133 139 149");
+ IupSetAttribute(image, "91", "129 138 155");
+ IupSetAttribute(image, "92", "139 142 146");
+ IupSetAttribute(image, "93", "136 141 152");
+ IupSetAttribute(image, "94", "142 144 147");
+ IupSetAttribute(image, "95", "140 145 155");
+ IupSetAttribute(image, "96", "144 146 149");
+ IupSetAttribute(image, "97", "146 149 153");
+ IupSetAttribute(image, "98", "150 154 159");
+ IupSetAttribute(image, "99", "153 155 158");
+ IupSetAttribute(image, "100", "129 141 163");
+ IupSetAttribute(image, "101", "129 143 168");
+ IupSetAttribute(image, "102", "128 143 172");
+ IupSetAttribute(image, "103", "134 145 165");
+ IupSetAttribute(image, "104", "130 144 169");
+ IupSetAttribute(image, "105", "128 144 173");
+ IupSetAttribute(image, "106", "132 145 169");
+ IupSetAttribute(image, "107", "133 147 172");
+ IupSetAttribute(image, "108", "133 148 175");
+ IupSetAttribute(image, "109", "142 149 163");
+ IupSetAttribute(image, "110", "138 150 172");
+ IupSetAttribute(image, "111", "132 148 178");
+ IupSetAttribute(image, "112", "135 152 182");
+ IupSetAttribute(image, "113", "136 151 177");
+ IupSetAttribute(image, "114", "139 154 180");
+ IupSetAttribute(image, "115", "139 155 186");
+ IupSetAttribute(image, "116", "148 157 172");
+ IupSetAttribute(image, "117", "154 157 162");
+ IupSetAttribute(image, "118", "153 159 169");
+ IupSetAttribute(image, "119", "144 158 183");
+ IupSetAttribute(image, "120", "144 159 185");
+ IupSetAttribute(image, "121", "143 160 188");
+ IupSetAttribute(image, "122", "158 160 163");
+ IupSetAttribute(image, "123", "156 161 171");
+ IupSetAttribute(image, "124", "149 161 181");
+ IupSetAttribute(image, "125", "147 161 186");
+ IupSetAttribute(image, "126", "155 164 179");
+ IupSetAttribute(image, "127", "153 166 188");
+ IupSetAttribute(image, "128", "156 168 190");
+ IupSetAttribute(image, "129", "161 163 166");
+ IupSetAttribute(image, "130", "163 165 168");
+ IupSetAttribute(image, "131", "172 173 175");
+ IupSetAttribute(image, "132", "166 172 182");
+ IupSetAttribute(image, "133", "163 172 187");
+ IupSetAttribute(image, "134", "171 174 178");
+ IupSetAttribute(image, "135", "174 176 178");
+ IupSetAttribute(image, "136", "169 176 190");
+ IupSetAttribute(image, "137", "176 178 180");
+ IupSetAttribute(image, "138", "180 182 184");
+ IupSetAttribute(image, "139", "182 184 186");
+ IupSetAttribute(image, "140", "187 188 190");
+ IupSetAttribute(image, "141", "142 159 192");
+ IupSetAttribute(image, "142", "142 160 192");
+ IupSetAttribute(image, "143", "146 163 195");
+ IupSetAttribute(image, "144", "149 167 200");
+ IupSetAttribute(image, "145", "150 169 202");
+ IupSetAttribute(image, "146", "152 166 194");
+ IupSetAttribute(image, "147", "156 169 193");
+ IupSetAttribute(image, "148", "155 172 203");
+ IupSetAttribute(image, "149", "156 174 208");
+ IupSetAttribute(image, "150", "158 176 203");
+ IupSetAttribute(image, "151", "158 177 209");
+ IupSetAttribute(image, "152", "161 172 194");
+ IupSetAttribute(image, "153", "161 175 200");
+ IupSetAttribute(image, "154", "164 176 196");
+ IupSetAttribute(image, "155", "163 178 204");
+ IupSetAttribute(image, "156", "170 179 197");
+ IupSetAttribute(image, "157", "171 181 201");
+ IupSetAttribute(image, "158", "174 184 203");
+ IupSetAttribute(image, "159", "162 179 213");
+ IupSetAttribute(image, "160", "164 182 216");
+ IupSetAttribute(image, "161", "167 184 214");
+ IupSetAttribute(image, "162", "166 186 220");
+ IupSetAttribute(image, "163", "172 187 211");
+ IupSetAttribute(image, "164", "170 188 219");
+ IupSetAttribute(image, "165", "182 187 196");
+ IupSetAttribute(image, "166", "177 186 202");
+ IupSetAttribute(image, "167", "178 186 204");
+ IupSetAttribute(image, "168", "178 188 205");
+ IupSetAttribute(image, "169", "180 189 205");
+ IupSetAttribute(image, "170", "190 191 193");
+ IupSetAttribute(image, "171", "184 190 201");
+ IupSetAttribute(image, "172", "177 190 211");
+ IupSetAttribute(image, "173", "176 191 219");
+ IupSetAttribute(image, "174", "172 191 224");
+ IupSetAttribute(image, "175", "190 192 196");
+ IupSetAttribute(image, "176", "189 194 202");
+ IupSetAttribute(image, "177", "181 193 212");
+ IupSetAttribute(image, "178", "179 194 220");
+ IupSetAttribute(image, "179", "185 194 209");
+ IupSetAttribute(image, "180", "186 195 214");
+ IupSetAttribute(image, "181", "184 196 214");
+ IupSetAttribute(image, "182", "191 198 210");
+ IupSetAttribute(image, "183", "190 198 213");
+ IupSetAttribute(image, "184", "186 198 218");
+ IupSetAttribute(image, "185", "188 199 218");
+ IupSetAttribute(image, "186", "190 200 218");
+ IupSetAttribute(image, "187", "190 202 221");
+ IupSetAttribute(image, "188", "175 194 227");
+ IupSetAttribute(image, "189", "180 197 227");
+ IupSetAttribute(image, "190", "182 200 230");
+ IupSetAttribute(image, "191", "187 202 228");
+ IupSetAttribute(image, "192", "189 206 233");
+ IupSetAttribute(image, "193", "196 197 198");
+ IupSetAttribute(image, "194", "195 197 201");
+ IupSetAttribute(image, "195", "193 198 206");
+ IupSetAttribute(image, "196", "197 197 200");
+ IupSetAttribute(image, "197", "199 200 202");
+ IupSetAttribute(image, "198", "204 205 206");
+ IupSetAttribute(image, "199", "192 198 208");
+ IupSetAttribute(image, "200", "196 201 211");
+ IupSetAttribute(image, "201", "194 202 217");
+ IupSetAttribute(image, "202", "194 204 222");
+ IupSetAttribute(image, "203", "196 203 216");
+ IupSetAttribute(image, "204", "198 205 217");
+ IupSetAttribute(image, "205", "199 206 221");
+ IupSetAttribute(image, "206", "205 206 208");
+ IupSetAttribute(image, "207", "201 207 217");
+ IupSetAttribute(image, "208", "206 208 212");
+ IupSetAttribute(image, "209", "204 209 220");
+ IupSetAttribute(image, "210", "210 211 212");
+ IupSetAttribute(image, "211", "209 213 219");
+ IupSetAttribute(image, "212", "215 217 221");
+ IupSetAttribute(image, "213", "218 219 220");
+ IupSetAttribute(image, "214", "193 205 227");
+ IupSetAttribute(image, "215", "193 206 232");
+ IupSetAttribute(image, "216", "199 209 225");
+ IupSetAttribute(image, "217", "195 209 234");
+ IupSetAttribute(image, "218", "203 210 224");
+ IupSetAttribute(image, "219", "207 213 224");
+ IupSetAttribute(image, "220", "201 215 236");
+ IupSetAttribute(image, "221", "206 216 236");
+ IupSetAttribute(image, "222", "208 214 225");
+ IupSetAttribute(image, "223", "211 217 227");
+ IupSetAttribute(image, "224", "209 219 237");
+ IupSetAttribute(image, "225", "217 221 227");
+ IupSetAttribute(image, "226", "217 221 230");
+ IupSetAttribute(image, "227", "222 223 224");
+ IupSetAttribute(image, "228", "216 223 236");
+ IupSetAttribute(image, "229", "209 221 240");
+ IupSetAttribute(image, "230", "214 224 239");
+ IupSetAttribute(image, "231", "222 224 226");
+ IupSetAttribute(image, "232", "221 226 234");
+ IupSetAttribute(image, "233", "215 226 242");
+ IupSetAttribute(image, "234", "218 227 242");
+ IupSetAttribute(image, "235", "226 226 227");
+ IupSetAttribute(image, "236", "226 229 235");
+ IupSetAttribute(image, "237", "230 232 237");
+ IupSetAttribute(image, "238", "234 235 236");
+ IupSetAttribute(image, "239", "226 231 242");
+ IupSetAttribute(image, "240", "229 234 243");
+ IupSetAttribute(image, "241", "234 237 241");
+ IupSetAttribute(image, "242", "238 240 242");
+ IupSetAttribute(image, "243", "238 240 245");
+ IupSetAttribute(image, "244", "237 241 249");
+ IupSetAttribute(image, "245", "242 243 245");
+ IupSetAttribute(image, "246", "244 245 248");
+ IupSetAttribute(image, "247", "247 248 249");
+ IupSetAttribute(image, "248", "249 249 250");
+ IupSetAttribute(image, "249", "250 250 252");
+ IupSetAttribute(image, "250", "251 252 252");
+ IupSetAttribute(image, "251", "252 252 253");
+ IupSetAttribute(image, "252", "0 0 0");
+ IupSetAttribute(image, "253", "0 0 0");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
+static Ihandle* load_image_LogoTecgraf8(void)
+{
+ unsigned char imgdata[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 220, 237, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 124, 55, 114, 113, 182, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 144, 55, 123, 114, 113, 112, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 54, 113, 120, 114, 113, 112, 111, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 141, 72, 157, 120, 114, 113, 112, 111, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 68, 113, 123, 120, 85, 32, 78, 111, 112, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 72, 157, 120, 164, 246, 27, 15, 86, 107, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 84, 160, 120, 240, 255, 218, 7, 41, 107, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 112, 156, 173, 253, 255, 255, 44, 23, 90, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 71, 154, 123, 222, 255, 255, 255, 140, 22, 74, 90, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 83, 159, 121, 243, 255, 255, 255, 236, 23, 53, 90, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 86, 167, 158, 255, 255, 255, 255, 253, 38, 41, 103, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 90, 168, 186, 255, 255, 255, 255, 255, 97, 39, 107, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 125, 112, 160, 210, 255, 255, 255, 255, 255, 143, 40, 90, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 82, 129, 156, 228, 255, 255, 255, 255, 255, 200, 41, 86, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 163, 123, 241, 255, 255, 255, 255, 255, 231, 42, 86, 90, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 60, 169, 122, 250, 255, 255, 255, 255, 255, 250, 41, 86, 90, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 238, 203, 138, 93, 50, 35, 65, 176, 120, 80, 80, 80, 80, 80, 80, 81, 59, 64, 65, 135, 187, 205, 223, 242, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 253, 243, 207, 147, 104, 61, 55, 59, 41, 10, 1, 3, 72, 175, 122, 155, 120, 113, 111, 90, 86, 83, 77, 74, 72, 71, 65, 65, 64, 63, 71, 109, 148, 212, 243, 253, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 243, 187, 98, 56, 55, 63, 90, 154, 168, 185, 184, 21, 1, 4, 74, 176, 120, 90, 86, 77, 72, 63, 59, 55, 52, 51, 41, 36, 33, 32, 32, 36, 43, 56, 64, 65, 71, 109, 193, 242, 255, 255, 255, 255,
+ 255, 255, 243, 135, 59, 55, 56, 84, 157, 185, 172, 168, 157, 131, 136, 49, 94, 92, 72, 176, 165, 233, 236, 235, 234, 234, 232, 219, 73, 55, 56, 95, 96, 47, 25, 16, 12, 9, 13, 29, 55, 72, 72, 74, 148, 243, 255, 255,
+ 255, 220, 70, 56, 57, 59, 123, 171, 160, 161, 194, 214, 237, 252, 255, 255, 255, 195, 71, 169, 181, 255, 255, 255, 255, 255, 255, 255, 126, 90, 120, 214, 255, 255, 251, 233, 151, 69, 18, 1, 3, 26, 71, 75, 77, 85, 226, 255,
+ 250, 58, 57, 59, 59, 107, 155, 181, 226, 253, 255, 255, 255, 255, 255, 255, 255, 192, 64, 166, 181, 255, 255, 255, 255, 255, 255, 255, 130, 107, 120, 217, 255, 255, 255, 255, 255, 255, 253, 202, 45, 2, 30, 77, 78, 78, 106, 251,
+ 227, 34, 59, 59, 59, 87, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 62, 157, 194, 255, 255, 255, 255, 255, 255, 255, 132, 111, 123, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 30, 83, 83, 83, 91, 234,
+ 231, 9, 52, 59, 59, 63, 205, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 59, 154, 194, 255, 255, 255, 255, 255, 255, 255, 134, 113, 155, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 84, 84, 84, 90, 122, 229,
+ 250, 20, 5, 31, 59, 62, 63, 109, 214, 250, 255, 255, 255, 255, 255, 255, 255, 153, 55, 123, 181, 255, 255, 255, 255, 255, 255, 255, 135, 120, 158, 217, 255, 255, 255, 255, 255, 255, 250, 223, 136, 85, 86, 86, 123, 156, 108, 250,
+ 255, 221, 18, 1, 8, 29, 52, 63, 64, 76, 133, 198, 229, 250, 255, 255, 255, 192, 52, 120, 178, 255, 255, 255, 255, 255, 255, 255, 135, 131, 131, 214, 255, 255, 250, 234, 209, 174, 102, 86, 86, 113, 157, 167, 122, 115, 226, 255,
+ 255, 255, 245, 93, 6, 1, 3, 12, 26, 41, 59, 65, 71, 74, 105, 133, 179, 130, 59, 90, 136, 234, 235, 242, 242, 234, 234, 226, 110, 112, 107, 136, 145, 118, 87, 86, 90, 117, 156, 160, 168, 159, 123, 112, 179, 246, 255, 255,
+ 255, 255, 255, 255, 245, 139, 35, 5, 1, 1, 5, 12, 23, 31, 41, 54, 63, 72, 77, 78, 83, 83, 84, 84, 86, 86, 86, 90, 107, 117, 131, 162, 165, 175, 176, 177, 170, 157, 122, 120, 112, 136, 205, 245, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 245, 199, 100, 37, 14, 5, 7, 11, 16, 19, 24, 29, 32, 40, 43, 52, 55, 62, 65, 74, 83, 86, 88, 88, 87, 90, 91, 90, 86, 101, 133, 187, 213, 245, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 216, 153, 139, 100, 69, 22, 26, 30, 47, 48, 48, 48, 58, 67, 79, 52, 71, 55, 130, 188, 201, 221, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 30, 63, 114, 249, 255, 255, 255, 255, 255, 249, 90, 184, 86, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 52, 120, 240, 255, 255, 255, 255, 255, 232, 113, 171, 87, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 40, 120, 224, 255, 255, 255, 255, 255, 213, 122, 160, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 66, 30, 113, 206, 255, 255, 255, 255, 255, 193, 123, 157, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 26, 107, 180, 255, 255, 255, 255, 255, 146, 154, 120, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 22, 77, 128, 253, 255, 255, 255, 253, 109, 159, 103, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 16, 52, 112, 242, 255, 255, 255, 235, 107, 160, 86, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 15, 32, 112, 208, 255, 255, 255, 196, 113, 156, 86, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, 17, 107, 131, 253, 255, 253, 110, 122, 112, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 7, 75, 111, 230, 255, 221, 85, 155, 86, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 2, 40, 107, 131, 244, 105, 112, 111, 86, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 14, 16, 91, 107, 107, 91, 111, 86, 106, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 2, 59, 107, 90, 90, 89, 86, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 7, 22, 90, 90, 90, 87, 90, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 2, 41, 90, 90, 87, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 92, 7, 39, 72, 150, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 221, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+
+ Ihandle* image = IupImage(48, 48, imgdata);
+
+ IupSetAttribute(image, "0", "0 0 0");
+ IupSetAttribute(image, "1", "26 30 36");
+ IupSetAttribute(image, "2", "27 32 38");
+ IupSetAttribute(image, "3", "29 33 40");
+ IupSetAttribute(image, "4", "31 36 43");
+ IupSetAttribute(image, "5", "33 37 44");
+ IupSetAttribute(image, "6", "38 41 47");
+ IupSetAttribute(image, "7", "37 41 49");
+ IupSetAttribute(image, "8", "39 45 54");
+ IupSetAttribute(image, "9", "40 45 54");
+ IupSetAttribute(image, "10", "43 49 58");
+ IupSetAttribute(image, "11", "44 49 59");
+ IupSetAttribute(image, "12", "44 50 60");
+ IupSetAttribute(image, "13", "47 53 63");
+ IupSetAttribute(image, "14", "53 56 62");
+ IupSetAttribute(image, "15", "49 54 64");
+ IupSetAttribute(image, "16", "50 56 68");
+ IupSetAttribute(image, "17", "55 62 75");
+ IupSetAttribute(image, "18", "56 60 65");
+ IupSetAttribute(image, "19", "56 63 76");
+ IupSetAttribute(image, "20", "62 66 70");
+ IupSetAttribute(image, "21", "57 64 75");
+ IupSetAttribute(image, "22", "58 65 78");
+ IupSetAttribute(image, "23", "61 69 83");
+ IupSetAttribute(image, "24", "63 71 86");
+ IupSetAttribute(image, "25", "69 75 86");
+ IupSetAttribute(image, "26", "67 75 91");
+ IupSetAttribute(image, "27", "83 86 91");
+ IupSetAttribute(image, "28", "83 87 93");
+ IupSetAttribute(image, "29", "71 80 96");
+ IupSetAttribute(image, "30", "75 83 100");
+ IupSetAttribute(image, "31", "77 86 104");
+ IupSetAttribute(image, "32", "78 88 106");
+ IupSetAttribute(image, "33", "79 89 108");
+ IupSetAttribute(image, "34", "81 92 110");
+ IupSetAttribute(image, "35", "89 92 96");
+ IupSetAttribute(image, "36", "83 94 113");
+ IupSetAttribute(image, "37", "95 98 102");
+ IupSetAttribute(image, "38", "92 98 109");
+ IupSetAttribute(image, "39", "85 96 115");
+ IupSetAttribute(image, "40", "86 96 116");
+ IupSetAttribute(image, "41", "90 101 121");
+ IupSetAttribute(image, "42", "91 103 124");
+ IupSetAttribute(image, "43", "92 103 124");
+ IupSetAttribute(image, "44", "96 100 107");
+ IupSetAttribute(image, "45", "103 106 110");
+ IupSetAttribute(image, "46", "96 102 112");
+ IupSetAttribute(image, "47", "99 105 117");
+ IupSetAttribute(image, "48", "100 108 122");
+ IupSetAttribute(image, "49", "110 113 117");
+ IupSetAttribute(image, "50", "113 115 119");
+ IupSetAttribute(image, "51", "94 106 128");
+ IupSetAttribute(image, "52", "97 109 132");
+ IupSetAttribute(image, "53", "99 112 135");
+ IupSetAttribute(image, "54", "101 112 135");
+ IupSetAttribute(image, "55", "101 114 137");
+ IupSetAttribute(image, "56", "103 116 139");
+ IupSetAttribute(image, "57", "103 116 140");
+ IupSetAttribute(image, "58", "108 117 134");
+ IupSetAttribute(image, "59", "104 117 141");
+ IupSetAttribute(image, "60", "107 120 143");
+ IupSetAttribute(image, "61", "109 120 143");
+ IupSetAttribute(image, "62", "107 120 144");
+ IupSetAttribute(image, "63", "108 121 146");
+ IupSetAttribute(image, "64", "109 122 148");
+ IupSetAttribute(image, "65", "110 124 149");
+ IupSetAttribute(image, "66", "115 120 128");
+ IupSetAttribute(image, "67", "113 121 137");
+ IupSetAttribute(image, "68", "112 122 143");
+ IupSetAttribute(image, "69", "123 126 132");
+ IupSetAttribute(image, "70", "112 123 145");
+ IupSetAttribute(image, "71", "112 125 150");
+ IupSetAttribute(image, "72", "112 126 152");
+ IupSetAttribute(image, "73", "122 129 142");
+ IupSetAttribute(image, "74", "114 128 154");
+ IupSetAttribute(image, "75", "115 129 156");
+ IupSetAttribute(image, "76", "118 130 154");
+ IupSetAttribute(image, "77", "116 130 157");
+ IupSetAttribute(image, "78", "117 132 158");
+ IupSetAttribute(image, "79", "122 131 146");
+ IupSetAttribute(image, "80", "120 132 153");
+ IupSetAttribute(image, "81", "124 134 156");
+ IupSetAttribute(image, "82", "126 137 155");
+ IupSetAttribute(image, "83", "118 133 160");
+ IupSetAttribute(image, "84", "120 134 162");
+ IupSetAttribute(image, "85", "122 136 162");
+ IupSetAttribute(image, "86", "122 137 165");
+ IupSetAttribute(image, "87", "124 139 166");
+ IupSetAttribute(image, "88", "125 140 166");
+ IupSetAttribute(image, "89", "124 139 168");
+ IupSetAttribute(image, "90", "125 141 170");
+ IupSetAttribute(image, "91", "127 142 172");
+ IupSetAttribute(image, "92", "131 133 137");
+ IupSetAttribute(image, "93", "133 136 139");
+ IupSetAttribute(image, "94", "136 139 142");
+ IupSetAttribute(image, "95", "129 136 147");
+ IupSetAttribute(image, "96", "133 137 145");
+ IupSetAttribute(image, "97", "134 139 148");
+ IupSetAttribute(image, "98", "129 139 157");
+ IupSetAttribute(image, "99", "139 141 145");
+ IupSetAttribute(image, "100", "142 144 148");
+ IupSetAttribute(image, "101", "130 143 167");
+ IupSetAttribute(image, "102", "129 143 169");
+ IupSetAttribute(image, "103", "128 143 173");
+ IupSetAttribute(image, "104", "134 144 162");
+ IupSetAttribute(image, "105", "133 145 165");
+ IupSetAttribute(image, "106", "130 144 170");
+ IupSetAttribute(image, "107", "128 144 173");
+ IupSetAttribute(image, "108", "134 148 173");
+ IupSetAttribute(image, "109", "137 148 170");
+ IupSetAttribute(image, "110", "143 153 174");
+ IupSetAttribute(image, "111", "130 146 176");
+ IupSetAttribute(image, "112", "132 148 177");
+ IupSetAttribute(image, "113", "133 150 180");
+ IupSetAttribute(image, "114", "135 152 182");
+ IupSetAttribute(image, "115", "137 150 176");
+ IupSetAttribute(image, "116", "139 152 178");
+ IupSetAttribute(image, "117", "136 152 182");
+ IupSetAttribute(image, "118", "141 153 176");
+ IupSetAttribute(image, "119", "142 157 181");
+ IupSetAttribute(image, "120", "137 153 185");
+ IupSetAttribute(image, "121", "139 156 187");
+ IupSetAttribute(image, "122", "139 156 188");
+ IupSetAttribute(image, "123", "140 157 189");
+ IupSetAttribute(image, "124", "145 151 163");
+ IupSetAttribute(image, "125", "144 152 167");
+ IupSetAttribute(image, "126", "150 158 171");
+ IupSetAttribute(image, "127", "156 158 160");
+ IupSetAttribute(image, "128", "144 158 186");
+ IupSetAttribute(image, "129", "143 160 188");
+ IupSetAttribute(image, "130", "154 161 174");
+ IupSetAttribute(image, "131", "146 161 188");
+ IupSetAttribute(image, "132", "154 162 176");
+ IupSetAttribute(image, "133", "152 162 180");
+ IupSetAttribute(image, "134", "156 163 178");
+ IupSetAttribute(image, "135", "157 166 181");
+ IupSetAttribute(image, "136", "153 165 186");
+ IupSetAttribute(image, "137", "157 168 190");
+ IupSetAttribute(image, "138", "162 164 166");
+ IupSetAttribute(image, "139", "164 166 168");
+ IupSetAttribute(image, "140", "169 171 175");
+ IupSetAttribute(image, "141", "161 167 178");
+ IupSetAttribute(image, "142", "163 169 180");
+ IupSetAttribute(image, "143", "167 170 176");
+ IupSetAttribute(image, "144", "167 172 181");
+ IupSetAttribute(image, "145", "161 171 190");
+ IupSetAttribute(image, "146", "163 172 188");
+ IupSetAttribute(image, "147", "165 172 186");
+ IupSetAttribute(image, "148", "166 174 190");
+ IupSetAttribute(image, "149", "171 173 176");
+ IupSetAttribute(image, "150", "169 177 191");
+ IupSetAttribute(image, "151", "180 181 183");
+ IupSetAttribute(image, "152", "183 186 190");
+ IupSetAttribute(image, "153", "185 186 189");
+ IupSetAttribute(image, "154", "142 160 193");
+ IupSetAttribute(image, "155", "144 161 193");
+ IupSetAttribute(image, "156", "145 162 196");
+ IupSetAttribute(image, "157", "146 164 197");
+ IupSetAttribute(image, "158", "148 164 193");
+ IupSetAttribute(image, "159", "148 166 201");
+ IupSetAttribute(image, "160", "150 168 202");
+ IupSetAttribute(image, "161", "152 167 196");
+ IupSetAttribute(image, "162", "153 168 193");
+ IupSetAttribute(image, "163", "152 169 196");
+ IupSetAttribute(image, "164", "158 171 196");
+ IupSetAttribute(image, "165", "158 172 197");
+ IupSetAttribute(image, "166", "154 171 200");
+ IupSetAttribute(image, "167", "152 170 205");
+ IupSetAttribute(image, "168", "153 172 207");
+ IupSetAttribute(image, "169", "158 173 200");
+ IupSetAttribute(image, "170", "157 175 205");
+ IupSetAttribute(image, "171", "154 174 208");
+ IupSetAttribute(image, "172", "157 176 212");
+ IupSetAttribute(image, "173", "162 175 199");
+ IupSetAttribute(image, "174", "165 175 193");
+ IupSetAttribute(image, "175", "160 175 201");
+ IupSetAttribute(image, "176", "160 176 202");
+ IupSetAttribute(image, "177", "162 178 207");
+ IupSetAttribute(image, "178", "167 180 202");
+ IupSetAttribute(image, "179", "172 181 196");
+ IupSetAttribute(image, "180", "168 179 201");
+ IupSetAttribute(image, "181", "169 181 204");
+ IupSetAttribute(image, "182", "173 183 201");
+ IupSetAttribute(image, "183", "174 184 201");
+ IupSetAttribute(image, "184", "162 181 213");
+ IupSetAttribute(image, "185", "160 180 216");
+ IupSetAttribute(image, "186", "175 186 208");
+ IupSetAttribute(image, "187", "178 184 196");
+ IupSetAttribute(image, "188", "182 187 194");
+ IupSetAttribute(image, "189", "177 185 201");
+ IupSetAttribute(image, "190", "177 186 204");
+ IupSetAttribute(image, "191", "183 190 204");
+ IupSetAttribute(image, "192", "188 190 194");
+ IupSetAttribute(image, "193", "184 191 202");
+ IupSetAttribute(image, "194", "179 190 209");
+ IupSetAttribute(image, "195", "191 193 197");
+ IupSetAttribute(image, "196", "191 196 205");
+ IupSetAttribute(image, "197", "184 193 210");
+ IupSetAttribute(image, "198", "191 197 208");
+ IupSetAttribute(image, "199", "192 193 195");
+ IupSetAttribute(image, "200", "198 200 203");
+ IupSetAttribute(image, "201", "198 201 206");
+ IupSetAttribute(image, "202", "201 202 203");
+ IupSetAttribute(image, "203", "201 203 207");
+ IupSetAttribute(image, "204", "203 204 205");
+ IupSetAttribute(image, "205", "193 198 209");
+ IupSetAttribute(image, "206", "193 201 214");
+ IupSetAttribute(image, "207", "199 204 212");
+ IupSetAttribute(image, "208", "194 202 216");
+ IupSetAttribute(image, "209", "199 204 216");
+ IupSetAttribute(image, "210", "198 206 221");
+ IupSetAttribute(image, "211", "205 207 211");
+ IupSetAttribute(image, "212", "202 207 216");
+ IupSetAttribute(image, "213", "206 208 212");
+ IupSetAttribute(image, "214", "204 210 219");
+ IupSetAttribute(image, "215", "211 212 215");
+ IupSetAttribute(image, "216", "213 213 215");
+ IupSetAttribute(image, "217", "209 214 223");
+ IupSetAttribute(image, "218", "214 215 216");
+ IupSetAttribute(image, "219", "215 216 218");
+ IupSetAttribute(image, "220", "214 216 221");
+ IupSetAttribute(image, "221", "217 218 221");
+ IupSetAttribute(image, "222", "203 210 224");
+ IupSetAttribute(image, "223", "213 217 225");
+ IupSetAttribute(image, "224", "213 218 228");
+ IupSetAttribute(image, "225", "215 220 230");
+ IupSetAttribute(image, "226", "217 221 228");
+ IupSetAttribute(image, "227", "222 223 224");
+ IupSetAttribute(image, "228", "217 223 233");
+ IupSetAttribute(image, "229", "222 225 230");
+ IupSetAttribute(image, "230", "221 225 233");
+ IupSetAttribute(image, "231", "225 225 226");
+ IupSetAttribute(image, "232", "225 226 228");
+ IupSetAttribute(image, "233", "227 228 229");
+ IupSetAttribute(image, "234", "227 229 234");
+ IupSetAttribute(image, "235", "230 232 234");
+ IupSetAttribute(image, "236", "232 233 234");
+ IupSetAttribute(image, "237", "232 234 237");
+ IupSetAttribute(image, "238", "235 236 238");
+ IupSetAttribute(image, "239", "237 237 238");
+ IupSetAttribute(image, "240", "230 233 240");
+ IupSetAttribute(image, "241", "232 235 241");
+ IupSetAttribute(image, "242", "234 236 240");
+ IupSetAttribute(image, "243", "236 238 241");
+ IupSetAttribute(image, "244", "239 241 244");
+ IupSetAttribute(image, "245", "241 242 242");
+ IupSetAttribute(image, "246", "241 242 244");
+ IupSetAttribute(image, "247", "243 244 244");
+ IupSetAttribute(image, "248", "245 245 246");
+ IupSetAttribute(image, "249", "245 246 248");
+ IupSetAttribute(image, "250", "249 249 250");
+ IupSetAttribute(image, "251", "250 251 252");
+ IupSetAttribute(image, "252", "251 252 252");
+ IupSetAttribute(image, "253", "253 253 253");
+ IupSetAttribute(image, "254", "0 0 0");
+ IupSetAttribute(image, "255", "BGCOLOR");
+
+ return image;
+}
+
diff --git a/iup/srcimglib/iupimglib.def b/iup/srcimglib/iupimglib.def
new file mode 100755
index 0000000..e5e6063
--- /dev/null
+++ b/iup/srcimglib/iupimglib.def
@@ -0,0 +1,4 @@
+EXPORTS
+ IupImageLibOpen
+ iupImageLibLoadAll
+ \ No newline at end of file
diff --git a/iup/srcimglib/iupimglib.dep b/iup/srcimglib/iupimglib.dep
new file mode 100644
index 0000000..6029a95
--- /dev/null
+++ b/iup/srcimglib/iupimglib.dep
@@ -0,0 +1,5 @@
+$(OBJDIR)/iup_image_library.o: iup_image_library.c ../include/iup.h \
+ ../include/iupkey.h ../include/iupdef.h ../src/iup_str.h \
+ ../src/iup_image.h iup_imglib_bitmaps8.h iup_imglib_bitmapsgtk.h \
+ iup_imglib_icons8.h iup_imglib_logos8.h iup_imglib_icons.h \
+ iup_imglib_logos.h
diff --git a/iup/srcimglib/make_uname b/iup/srcimglib/make_uname
new file mode 100755
index 0000000..cc4b881
--- /dev/null
+++ b/iup/srcimglib/make_uname
@@ -0,0 +1,3 @@
+#This builds all the libraries of the folder for 1 uname
+
+tecmake $1 $2 $3 $4 $5 $6 $7
diff --git a/iup/srcimglib/make_uname.bat b/iup/srcimglib/make_uname.bat
new file mode 100755
index 0000000..f0a0722
--- /dev/null
+++ b/iup/srcimglib/make_uname.bat
@@ -0,0 +1,4 @@
+@echo off
+REM This builds all the libraries of the folder for 1 uname
+
+call tecmake %1 %2 %3 %4 %5 %6
diff --git a/iup/srcledc/Makefile b/iup/srcledc/Makefile
new file mode 100755
index 0000000..8854269
--- /dev/null
+++ b/iup/srcledc/Makefile
@@ -0,0 +1,6 @@
+
+.PHONY: do_all ledc
+do_all: ledc
+
+ledc:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak
diff --git a/iup/srcledc/config.mak b/iup/srcledc/config.mak
new file mode 100755
index 0000000..670881e
--- /dev/null
+++ b/iup/srcledc/config.mak
@@ -0,0 +1,22 @@
+PROJNAME = iup
+APPNAME = ledc
+APPTYPE = console
+OPT = YES
+
+#y.tab.c y.tab.h : ledc.y
+# yacc -dv ledc.y
+
+#lex.yy.c : ledc.l
+# lex ledc.l
+
+INCLUDES = .
+
+SRC = lex.yy.c y.tab.c ledc.c
+
+ifeq ($(TEC_UNAME), vc8)
+ ifdef DBG
+ #debug info not working for vc8 linker
+ define DBG
+ endef
+ endif
+endif
diff --git a/iup/srcledc/ledc b/iup/srcledc/ledc
new file mode 100755
index 0000000..69531fb
--- /dev/null
+++ b/iup/srcledc/ledc
@@ -0,0 +1,6 @@
+#!/bin/csh
+# Script generated automatically by tecmake v3.19
+# Remove the comment bellow to set the LD_LIBRARY_PATH if needed.
+#setenv LD_LIBRARY_PATH /lib/${TEC_UNAME}:/lib/${TEC_UNAME}:$LD_LIBRARY_PATH
+if ( -r app.env ) source app.env
+exec ../bin/$TEC_UNAME/ledc $*
diff --git a/iup/srcledc/ledc.bat b/iup/srcledc/ledc.bat
new file mode 100644
index 0000000..44bca28
--- /dev/null
+++ b/iup/srcledc/ledc.bat
@@ -0,0 +1,3 @@
+@echo off
+REM Script generated automatically by tecmake v3.20
+..\bin\Win64\ledc.exe %*
diff --git a/iup/srcledc/ledc.c b/iup/srcledc/ledc.c
new file mode 100755
index 0000000..9429474
--- /dev/null
+++ b/iup/srcledc/ledc.c
@@ -0,0 +1,920 @@
+/** \file
+ * \brief LED to C converter
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <ctype.h>
+#include <errno.h>
+
+#include "ledc.h"
+
+#define alloc(type) ((type*)malloc(sizeof(type)))
+
+#define IMAGE 0
+#define COLOR 1
+
+static FILE* outfile = NULL;
+
+char *filename;
+char *outname = 0;
+char *funcname = 0;
+int nocode = 0;
+
+static long vetsizepos;
+
+typedef struct {
+ char* name;
+ int used;
+} Tname;
+
+static Tlist* all_names;
+static Tlist* all_elems;
+static Tlist* all_images;
+
+static Tlist* all_named;
+static Tlist* all_late;
+
+static int nerrors = 0;
+
+struct {
+ char* name;
+ int used;
+} headerfile[] = {
+ { "iup", 1 },
+ { "iupdial", 0 },
+ { "iupgauge", 0 },
+ { "iupmatrix", 0 },
+ { "iupgl", 0 },
+ { "iuptree", 0 },
+ { "iupcolorbar",0 },
+ { "iupcb", 0 },
+ { "iupcells", 0 },
+ { "iupole", 0 },
+ { "iupspin", 0 },
+ { "iup_pplot", 0 }
+};
+#define nheaders (sizeof(headerfile)/sizeof(headerfile[0]))
+
+enum headers {
+ IUP_H,
+ IUPCONTROLS_H,
+ IUPGL_H,
+ IUPOLE_H,
+ IUPPPLOT_H
+};
+
+static void check_empty( Telem* elem );
+static void check_image( Telem* elem );
+static void check_imagergb( Telem* elem );
+static void check_imagergba( Telem* elem );
+static void check_string( Telem* elem );
+static void check_cb( Telem* elem );
+static void check_elem( Telem* elem );
+static void check_elemlist( Telem* elem );
+static void check_string_cb( Telem* elem );
+static void check_string_elem( Telem* elem );
+static void check_iupCpi( Telem* elem );
+static void code_image( Telem* elem );
+static void code_iupCpi( Telem* elem );
+
+static void code_empty( Telem* elem );
+static void code_string( Telem* elem );
+static void code_string_cb( Telem* elem );
+static void code_elem( Telem* elem );
+static void code_elemlist( Telem* elem );
+static void code_string_elem( Telem* elem );
+
+typedef void(*function)(Telem*);
+
+static struct {
+ char* name;
+ void (*code)(Telem*);
+ void (*check)(Telem*);
+ int header;
+}
+elems[] =
+{
+ { "Image", code_image, check_image, 0 },
+ { "ImageRGB", code_image, check_imagergb, 0 },
+ { "ImageRGBA", code_image, check_imagergba, 0 },
+ { "User", code_empty, check_empty, 0 },
+ { "Button", code_string_cb, check_string_cb, 0 },
+ { "Canvas", code_string, check_cb, 0 },
+ { "Colorbar", code_empty, check_empty, IUPCONTROLS_H },
+ { "ColorBrowser", code_empty, check_empty, IUPCONTROLS_H },
+ { "Dial", code_string, check_string, IUPCONTROLS_H },
+ { "Dialog", code_elem, check_elem, 0 },
+ { "Fill", code_empty, check_empty, 0 },
+ { "FileDlg", code_empty, check_empty, 0 },
+ { "MessageDlg", code_empty, check_empty, 0 },
+ { "ColorDlg", code_empty, check_empty, 0 },
+ { "FontDlg", code_empty, check_empty, 0 },
+ { "ProgressBar", code_empty, check_empty, 0 },
+ { "Frame", code_elem, check_elem, 0 },
+ { "Gauge", code_empty, check_empty, IUPCONTROLS_H },
+ { "GLCanvas", code_string, check_cb, IUPGL_H },
+ { "Hbox", code_elemlist, check_elemlist, 0 },
+ { "Item", code_string_cb, check_string_cb, 0 },
+ { "Label", code_string, check_string, 0 },
+ { "List", code_string, check_cb, 0 },
+ { "Matrix", code_string, check_cb, IUPCONTROLS_H },
+ { "Sbox", code_elem, check_elem, 0 },
+ { "Menu", code_elemlist, check_elemlist, 0 },
+ { "MultiLine", code_string, check_cb, 0 },
+ { "Radio", code_elem, check_elem, 0 },
+ { "Separator", code_empty, check_empty, 0 },
+ { "Submenu", code_string_elem, check_string_elem, 0 },
+ { "Text", code_string, check_cb, 0 },
+ { "Val", code_string, check_string, 0 },
+ { "Tree", code_empty, check_empty, 0 },
+ { "Tabs", code_elemlist, check_elemlist, 0 },
+ { "Toggle", code_string_cb, check_string_cb, 0 },
+ { "Vbox", code_elemlist, check_elemlist, 0 },
+ { "Zbox", code_elemlist, check_elemlist, 0 },
+ { "OleControl", code_string, check_cb, IUPOLE_H },
+ { "Cbox", code_elemlist, check_elemlist, 0 },
+ { "Cells", code_empty, check_empty, IUPCONTROLS_H },
+ { "Spin", code_empty, check_empty, 0 },
+ { "Spinbox", code_elem, check_elem, 0 },
+ { "PPlot", code_empty, check_empty, IUPPPLOT_H },
+ { "@@@", code_iupCpi, check_iupCpi, 0 }
+};
+#define nelems (sizeof(elems)/sizeof(elems[0]))
+
+static int mystricmp(char *s1, char *s2)
+{
+ int i = 0;
+ if (s1 == s2) return 0;
+ while (s1[i] && s2[i] && tolower(s1[i])==tolower(s2[i])) i++;
+ if (s1[i] == s2[i]) return 0;
+ else if (s1[i]<s2[i]) return -1;
+ return 1;
+}
+
+void error( char* fmt, ... )
+{
+ va_list args;
+ fprintf(stderr, "%s:%d: ", filename, yylineno );
+ va_start(args, fmt);
+ vfprintf(stderr, fmt, args);
+ va_end(args);
+ fprintf(stderr, "\n" );
+ nerrors++;
+}
+
+static void warning( char* fmt, ... )
+{
+ va_list args;
+ fprintf(stderr, "%s:%d: warning: ", filename, yylineno );
+ va_start(args, fmt);
+ vfprintf(stderr, fmt, args);
+ fprintf(stderr, "\n" );
+ va_end(args);
+}
+
+void named( char* name )
+{
+ Tname *n = alloc(Tname);
+ n->name = name;
+ n->used = 0;
+ addlist( all_names, n );
+}
+
+void use( char* name )
+{
+ Telemlist* p = all_names->first;
+ if (!name) return;
+ while (p)
+ {
+ Tname* n = (Tname*)p->data;
+
+ if (!strcmp(name,n->name))
+ {
+ if (n->used) error("element '%s' already used in line %d", name, n->used );
+ else n->used = yylineno;
+ break;
+ }
+ p = p->next;
+ }
+}
+
+static int iselem( char* name )
+{
+ Telemlist* p = all_names->first;
+ while (p)
+ {
+ Tname* n = (Tname*)p->data;
+ if (!strcmp(name,n->name)) return 1;
+ p = p->next;
+ }
+ return 0;
+}
+
+static int verify_nparams( int min, int max, Telem* elem )
+{
+ if (min!=-1 && elem->nparams < min )
+ {
+ error("too few arguments for %s", elem->elemname );
+ return 0;
+ }
+ if (max!=-1 && elem->nparams >max )
+ {
+ error("too many arguments for %s", elem->elemname );
+ return 0;
+ }
+ return 1;
+}
+
+static void param_elem( Tparam* p[], int n )
+{
+ switch (p[n-1]->tag)
+ {
+ case ELEM_PARAM:
+ if (p[n-1]->data.elem->elemidx == IMAGE ||
+ p[n-1]->data.elem->elemidx == COLOR )
+ error( "%s is not a valid child", p[n-1]->data.elem->elemname );
+ break;
+ case NAME_PARAM:
+ if (!iselem(p[n-1]->data.name))
+ {
+ warning( "undeclared control '%s' (argument #%d)", p[n-1]->data.name, n );
+ }
+ else
+ {
+ use( p[n-1]->data.name );
+ }
+ break;
+ case STRING_PARAM:
+ error( "control expected (argument #%d)", n );
+ break;
+ }
+}
+
+static void param_string( Tparam* p[], int n )
+{
+ switch (p[n-1]->tag)
+ {
+ case ELEM_PARAM:
+ error( "string expected (argument #%d)", n );
+ break;
+ case NAME_PARAM:
+ warning( "string expected (argument #%d)", n );
+ break;
+ case STRING_PARAM:
+ break;
+ }
+}
+
+static void param_number( Tparam* p[], int n )
+{
+ switch (p[n-1]->tag)
+ {
+ case ELEM_PARAM:
+ error( "number expected (argument #%d)", n );
+ break;
+ case NAME_PARAM:
+ break;
+ case STRING_PARAM:
+ error( "number expected (argument #%d)", n );
+ break;
+ }
+}
+
+static void param_callback( Tparam* p[], int n )
+{
+ switch (p[n-1]->tag)
+ {
+ case ELEM_PARAM:
+ error( "callback expected (argument #%d)", n );
+ break;
+ case NAME_PARAM:
+ break;
+ case STRING_PARAM:
+ warning( "callback expected (argument #%d)", n );
+ break;
+ }
+}
+
+/****************************************************************/
+
+static void check_empty( Telem* elem )
+{
+ verify_nparams( 0, 0, elem );
+}
+
+static void check_image( Telem* elem )
+{
+ int i, w, h, size;
+ if (!verify_nparams( 2, -1, elem )) return;
+ param_number( elem->params, 1 );
+ param_number( elem->params, 2 );
+ w = atoi( elem->params[0]->data.name );
+ h = atoi( elem->params[1]->data.name );
+ size = w*h;
+ if (!verify_nparams( size+2, size+2, elem )) return;
+ for (i=0; i<size; i++)
+ param_number( elem->params, i+3 );
+
+ elem->data.image.w = w;
+ elem->data.image.h = h;
+}
+
+static void check_imagergb( Telem* elem )
+{
+ int i, w, h, size;
+ if (!verify_nparams( 2, -1, elem )) return;
+ param_number( elem->params, 1 );
+ param_number( elem->params, 2 );
+ w = atoi( elem->params[0]->data.name );
+ h = atoi( elem->params[1]->data.name );
+ size = w*h*3;
+ if (!verify_nparams( size+2, size+2, elem )) return;
+ for (i=0; i<size; i++)
+ param_number( elem->params, i+3 );
+
+ elem->data.image.w = w;
+ elem->data.image.h = h;
+}
+
+static void check_imagergba( Telem* elem )
+{
+ int i, w, h, size;
+ if (!verify_nparams( 2, -1, elem )) return;
+ param_number( elem->params, 1 );
+ param_number( elem->params, 2 );
+ w = atoi( elem->params[0]->data.name );
+ h = atoi( elem->params[1]->data.name );
+ size = w*h*4;
+ if (!verify_nparams( size+2, size+2, elem )) return;
+ for (i=0; i<size; i++)
+ param_number( elem->params, i+3 );
+
+ elem->data.image.w = w;
+ elem->data.image.h = h;
+}
+
+static void check_string( Telem* elem )
+{
+ if (!verify_nparams( 1, 1, elem )) return;
+ param_string( elem->params, 1 );
+}
+
+static void check_cb( Telem* elem )
+{
+ if (!verify_nparams( 1, 1, elem )) return;
+ param_callback( elem->params, 1 );
+}
+
+static void check_elem( Telem* elem )
+{
+ if (!verify_nparams( 1, 1, elem )) return;
+ param_elem( elem->params, 1 );
+}
+
+static void check_elemlist( Telem* elem )
+{
+ int i;
+ if (!verify_nparams( 1, -1, elem )) return;
+ for (i=0; i<elem->nparams; i++)
+ param_elem( elem->params, i+1 );
+}
+
+static void check_string_cb( Telem* elem )
+{
+ if (!verify_nparams( 2, 2, elem )) return;
+ param_string( elem->params, 1 );
+ param_callback( elem->params, 2 );
+}
+
+static void check_string_elem( Telem* elem )
+{
+ if (!verify_nparams( 2, 2, elem )) return;
+ param_string( elem->params, 1 );
+ param_elem( elem->params, 2 );
+}
+
+static void check_iupCpi( Telem* elem )
+{
+ warning( "Unknown control %s used", elem->elemname );
+}
+
+/****************************************************************/
+
+static int indentcol = 0;
+static int nameds = 0;
+
+static void indent(void) { indentcol++; }
+static void unindent(void) { indentcol--; }
+
+static void codeindent(void)
+{
+ int i;
+ for (i=0; i<indentcol; i++)
+ fprintf( outfile, " " );
+}
+
+static void generatename( Telem *e )
+{
+ static char name[15];
+ if (e->name)
+ {
+ sprintf( name, "named[%d]", nameds++ );
+ e->codename = strdup( name );
+ addlist( all_named, e );
+ addlist( all_late, e );
+ }
+ else
+ {
+ e->codename = 0;
+ }
+}
+
+static int codename( Telem* elem )
+{
+ if (elem->elemidx == IMAGE ||
+ elem->elemidx == COLOR )
+ {
+ return 0;
+ }
+
+ if (elem->name && elem->codename)
+ {
+ fprintf( outfile, "%s", elem->codename );
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static void codeelemname( Telem *elem )
+{
+ if (elem->elemidx < nelems-1)
+ fprintf( outfile, "Iup%s", elems[elem->elemidx].name );
+ else
+ {
+ fprintf( outfile, "Iup%c%s", toupper(elem->elemname[0]), elem->elemname+1 );
+ }
+}
+
+static void code_attrs( Telem* elem )
+{
+ fprintf( outfile, ", " );
+ if (elem->attrs)
+ {
+ Telemlist *p = elem->attrs->first;
+ indent();
+ while (p)
+ {
+ fprintf( outfile, "\n" );
+ codeindent();
+ fprintf( outfile, "\"%s\", \"%s\", ",
+ ((Tattr*)(p->data))->name, ((Tattr*)(p->data))->value );
+ p = p ->next;
+ }
+ unindent();
+ }
+ fprintf( outfile, "NULL )" );
+}
+
+static void code_start( Telem* elem )
+{
+ codeindent();
+ if (elem->name && elem->elemidx != IMAGE && elem->elemidx != COLOR)
+ generatename( elem );
+ if ( codename( elem ) )
+ fprintf( outfile, " = " );
+ if (elem->name)
+ fprintf( outfile, "IupSetAtt( \"%s\", ", elem->name );
+ else
+ fprintf( outfile, "IupSetAtt( NULL, " );
+ codeelemname( elem );
+}
+
+static void code_c_name( char* name )
+{
+ char *ant = name;
+ char *p = name;
+ while ( (p = strpbrk( p, "+-." )) != NULL )
+ {
+ char c = p[0];
+ p[0] = 0;
+ fprintf( outfile, "%s", ant );
+ switch (c)
+ {
+ case '+': fprintf( outfile, "%s", "_plus_" ); break;
+ case '-': fprintf( outfile, "%s", "_minus_" ); break;
+ case '.': fprintf( outfile, "%s", "_dot_" ); break;
+ }
+ p[0] = c;
+ ant = ++p;
+ }
+ fprintf( outfile, "%s", ant );
+}
+
+static void code_decl( Telem *e )
+{
+ if (e->name || e->attrs)
+ {
+ code_start( e );
+ elems[e->elemidx].code( e );
+ code_attrs( e );
+ }
+ else
+ {
+ codeindent();
+ if (e->name && e->elemidx != IMAGE && e->elemidx != COLOR)
+ generatename( e );
+ if ( codename( e ) )
+ fprintf( outfile, " = " );
+ codeelemname( e );
+ elems[e->elemidx].code( e );
+ }
+}
+
+static Telem* namedelem( char *name )
+{
+ Telemlist* p = all_named->first;
+ while (p)
+ {
+ Telem* n = (Telem*)p->data;
+ if (!strcmp(n->name,name))
+ {
+ return n;
+ }
+ p = p->next;
+ }
+ return 0;
+}
+
+static void codeelemparam( Tparam* param )
+{
+ if (param->tag == ELEM_PARAM)
+ {
+ code_decl( param->data.elem );
+ }
+ else
+ {
+ Telem *e = namedelem( param->data.name );
+ codeindent();
+ if (e)
+ {
+ codename( e );
+ fprintf( outfile, " /* %s */", param->data.name );
+ }
+ else
+ {
+ fprintf( outfile, "IupGetHandle( \"%s\" )", param->data.name );
+ }
+ }
+}
+
+/****************************************************************/
+
+static void code_iupCpi( Telem* elem )
+{
+ int i=0;
+ indent();
+ fprintf( outfile, "( " );
+ for (i=0; i<elem->nparams; i++)
+ {
+ if (elem->params[i]->tag == ELEM_PARAM)
+ {
+ fprintf( outfile, "\n" );
+ codeindent();
+ codeelemparam( elem->params[i] );
+ }
+ else
+ {
+ fprintf( outfile, "\"%s\"", elem->params[i]->data.name );
+ }
+ if (i+1<elem->nparams) fprintf( outfile, ", " );
+ }
+ fprintf( outfile, ")" );
+ unindent();
+}
+
+static void code_image( Telem* elem )
+{
+ int i,
+ w = elem->data.image.w,
+ h = elem->data.image.h;
+
+ fprintf( outfile, "static void image_" );
+ code_c_name( elem->name );
+ fprintf( outfile,
+ " (void)\n"
+ "{\n"
+ " unsigned char map[] = {" );
+
+ for (i=0; i<w*h; i++)
+ {
+ if (i%w == 0) fprintf( outfile, "\n " );
+ fprintf( outfile, "%2d,", atoi(elem->params[i+2]->data.name) );
+ }
+
+ fprintf( outfile,
+ "\n"
+ " -1 };\n\n" );
+ indent();
+ code_start( elem );
+ fprintf( outfile, "( %d, %d, map )", elem->data.image.w, elem->data.image.h );
+ code_attrs( elem );
+ fprintf( outfile, ";\n}\n\n" );
+ unindent();
+}
+
+static void code_empty( Telem* elem )
+{
+ (void) elem;
+ fprintf( outfile, "()" );
+}
+
+static void code_string( Telem* elem )
+{
+ fprintf( outfile, "( \"%s\" )", elem->params[0]->data.name );
+}
+
+static void code_string_cb( Telem* elem )
+{
+ fprintf( outfile, "( \"%s\", \"%s\" )", elem->params[0]->data.name, elem->params[1]->data.name );
+}
+
+static void code_elem( Telem* elem )
+{
+ fprintf( outfile, "(\n" );
+ indent();
+ codeelemparam( elem->params[0] );
+ fprintf( outfile, "\n" );
+ unindent();
+ codeindent();
+ fprintf( outfile, ")" );
+}
+
+
+static void code_elemlist( Telem* elem )
+{
+ int i=0;
+ fprintf( outfile, "(\n" );
+ indent();
+ for (i=0; i<elem->nparams; i++)
+ {
+ codeelemparam( elem->params[i] );
+ fprintf( outfile, ",\n" );
+ }
+ unindent();
+ codeindent();
+ fprintf( outfile, "NULL)" );
+}
+
+static void code_string_elem( Telem* elem )
+{
+ fprintf( outfile, "( \"%s\",\n", elem->params[0]->data.name );
+ indent();
+ codeelemparam( elem->params[1] );
+ fprintf( outfile, "\n" );
+ unindent();
+ codeindent();
+ fprintf( outfile, ")" );
+}
+
+/****************************************************************/
+
+static char* strlower( char* str )
+{
+ int i=0;
+ while (str[i]) { str[i]=(char)tolower(str[i]); i++; }
+ return str;
+}
+
+static int lookupelem( char* name )
+{
+ int i;
+ for (i=0; i<nelems && mystricmp(name, elems[i].name); i++ );
+ return i<nelems ? i : nelems-1;
+}
+
+Tattr* attr( char* name, char* value )
+{
+ Tattr* ret = alloc(Tattr);
+ ret->name = name;
+ ret->value = value;
+ return ret;
+}
+
+Tparam* param( int tag, void* value )
+{
+ Tparam* ret = alloc(Tparam);
+ ret->tag = tag;
+ switch (tag)
+ {
+ case NAME_PARAM:
+ case STRING_PARAM:
+ ret->data.name = (char*)value;
+ break;
+ case ELEM_PARAM:
+ ret->data.elem = (Telem*)value;
+ break;
+ }
+ return ret;
+}
+
+Telem* elem( char* name, Tlist* attrs, Tlist* params )
+{
+ Telem* ret = alloc(Telem);
+ ret->name = 0;
+ ret->elemname = strlower(name);
+ ret->attrs = attrs;
+ if (params)
+ {
+ ret->nparams = params->size;
+ ret->params = list2paramvector( params );
+ }
+ else
+ {
+ ret->nparams = 0;
+ ret->params = 0;
+ }
+ ret->elemidx = lookupelem( name );
+ elems[ret->elemidx].check(ret);
+ headerfile[elems[ret->elemidx].header].used = 1;
+ return ret;
+}
+
+Tlist* list( void )
+{
+ Tlist* ret = alloc(Tlist);
+ ret->first = 0;
+ ret->size = 0;
+ return ret;
+}
+
+Tlist* addlist( Tlist* l, void* data )
+{
+ Telemlist* ne = alloc(Telemlist);
+ ne->data = data;
+ ne->next = l->first;
+ l->first = ne;
+ l->size++;
+ return l;
+}
+
+void cleanlist( Tlist* l )
+{
+ l->first = 0;
+ l->size = 0;
+}
+
+
+void decl( Telem* e )
+{
+ if (!e->name) warning("%s declared without a name", e->elemname );
+ else
+ {
+ if (nerrors || nocode) return;
+ if (e->elemidx == IMAGE)
+ {
+ code_image( e );
+ addlist( all_images, e );
+ }
+ else
+ {
+ addlist( all_elems, e );
+ }
+ }
+}
+
+
+static Telemlist* revert( Telemlist* elem )
+{
+ if (!elem->next)
+ {
+ return elem;
+ }
+ else
+ {
+ Telemlist *ret;
+ ret = revert( elem->next );
+ elem->next->next = elem;
+ elem->next = 0;
+ return ret;
+ }
+}
+
+Tlist* revertlist( Tlist* l )
+{
+ if (l->first)
+ l->first = revert( l->first );
+ return l;
+}
+
+Tparam** list2paramvector( Tlist* params )
+{
+ int i = params->size;
+ if (i)
+ {
+ Tparam** ret = (Tparam**)malloc(i*sizeof(Tparam*));
+ Telemlist *p = params->first;
+ while (p)
+ {
+ ret[--i] = (Tparam*)p->data;
+ p = p->next;
+ }
+ return ret;
+ }
+ else
+ return 0;
+}
+
+
+void init(void)
+{
+ all_names = list();
+ all_elems = list();
+ all_images = list();
+ all_named = list();
+ all_late = list();
+
+ if (nocode) return;
+ outfile = stdout;
+
+ outfile = fopen( outname, "w" );
+ if (!outfile)
+ {
+ perror( outname );
+ exit(-1);
+ }
+
+ fprintf( outfile,
+ "/* Automatically generated by Iup 3.0 LED Compiler to C. */\n"
+ "\n"
+ "#include <stdlib.h>\n"
+ "#include <stdarg.h>\n"
+ "#include <iup.h>\n"
+ "\n"
+ "static Ihandle* named[ " );
+ vetsizepos = ftell( outfile );
+ fprintf( outfile,
+ " ];\n"
+ "\n" );
+}
+
+void finish(void)
+{
+ int i;
+ Telemlist *p;
+
+ if (nerrors || nocode) return;
+
+ for (i=1; i<nheaders; i++)
+ {
+ if (headerfile[i].used)
+ {
+ fprintf( outfile, "#include <%s.h>\n", headerfile[i].name );
+ }
+ }
+
+ fprintf( outfile, "\nvoid %s (void)\n{\n", funcname );
+
+ revertlist( all_images );
+ p = all_images->first;
+ while (p)
+ {
+ Telem* e = (Telem*)(p->data);
+ fprintf(outfile, " image_" );
+ code_c_name( e->name );
+ fprintf(outfile, " ();\n" );
+ p = p->next;
+ }
+
+ indent();
+ revertlist( all_elems );
+ p = all_elems->first;
+ while (p)
+ {
+ Telem* e = (Telem*)(p->data);
+ code_decl( e );
+ fprintf( outfile, ";\n" );
+ p = p->next;
+ }
+ unindent();
+
+ fprintf( outfile, "}\n" );
+ fseek( outfile, vetsizepos, SEEK_SET );
+ fprintf( outfile, "%6d", nameds+1 );
+
+ fclose( outfile );
+}
+
+/* necessario para o Linux ?? */
+int gettxt( char *v1, char *v2);
+int gettxt( char *v1, char *v2)
+{
+ fprintf(stderr, "%s: %s\n", v1, v2);
+ return 0;
+}
+
diff --git a/iup/srcledc/ledc.dep b/iup/srcledc/ledc.dep
new file mode 100644
index 0000000..17cbbb9
--- /dev/null
+++ b/iup/srcledc/ledc.dep
@@ -0,0 +1,3 @@
+$(OBJDIR)/lex.yy.o: lex.yy.c ledc.h y.tab.h
+$(OBJDIR)/y.tab.o: y.tab.c ledc.h
+$(OBJDIR)/ledc.o: ledc.c ledc.h
diff --git a/iup/srcledc/ledc.h b/iup/srcledc/ledc.h
new file mode 100755
index 0000000..782cf1f
--- /dev/null
+++ b/iup/srcledc/ledc.h
@@ -0,0 +1,84 @@
+/** \file
+ * \brief LEDC definitions.
+ *
+ * See Copyright Notice in iup.h
+ * $Id: ledc.h,v 1.2 2009/06/22 15:47:16 scuri Exp $
+ */
+
+#ifndef __LEDC_H
+#define __LEDC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _elemlist {
+ struct _elemlist *next;
+ void *data;
+} Telemlist;
+
+typedef struct {
+ Telemlist* first;
+ int size;
+} Tlist;
+
+typedef struct {
+ char *name;
+ char *value;
+} Tattr;
+
+typedef struct _Telem Telem;
+typedef struct _Tparam Tparam;
+
+struct _Telem {
+ char* name;
+ char* elemname;
+ Tlist* attrs;
+ Tparam**params;
+ int nparams;
+ int elemidx;
+ char *codename;
+ union {
+ struct { int w, h; } image;
+ } data;
+};
+
+struct _Tparam {
+ enum { NAME_PARAM, STRING_PARAM, ELEM_PARAM } tag;
+ union {
+ char *name;
+ Telem *elem;
+ } data;
+};
+
+Tattr* attr( char* name, char* value );
+Tparam* param( int tag, void* value );
+Telem* elem( char* name, Tlist* attrs, Tlist* params );
+Tlist* list( void );
+Tlist* addlist( Tlist* l, void* data );
+Tlist* revertlist( Tlist* l );
+Tparam** list2paramvector( Tlist* l );
+void cleanlist( Tlist* l );
+
+void decl( Telem* e );
+
+void use( char* name );
+void named( char* name );
+
+void init(void);
+void finish(void);
+
+void error( char* fmt, ... );
+
+extern int yylineno;
+
+extern char* filename;
+extern char* outname;
+extern char* funcname;
+extern int nocode;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srcledc/ledc.l b/iup/srcledc/ledc.l
new file mode 100755
index 0000000..1a803c6
--- /dev/null
+++ b/iup/srcledc/ledc.l
@@ -0,0 +1,65 @@
+%option yylineno
+
+%{
+#include <string.h>
+#include "ledc.h"
+#include "y.tab.h"
+%}
+
+a [aA]
+b [bB]
+c [cC]
+d [dD]
+e [eE]
+f [fF]
+g [gG]
+h [hH]
+i [iI]
+j [jJ]
+k [kK]
+l [lL]
+m [mM]
+n [nN]
+o [oO]
+p [pP]
+q [qQ]
+r [rR]
+s [sS]
+t [tT]
+u [uU]
+v [vV]
+w [wW]
+x [xX]
+y [yY]
+z [zZ]
+
+%%
+
+[ \t\n] ;
+
+"(" { return '('; }
+")" { return ')'; }
+"=" { return '='; }
+"[" { return '['; }
+"]" { return ']'; }
+"," { return ','; }
+
+["](\\.|[^"])*["] {
+ int len = strlen(yytext)-2;
+ char *str = (char*)malloc(sizeof(char)*len+1);
+ strncpy(str, yytext+1, len);
+ str[len] = 0;
+ yylval.fString = str;
+ return STRING;
+ }
+
+[A-Za-z0-9_.+-][A-Za-z0-9_.+-]* {
+ yylval.fString = strdup(yytext);
+ return NAME;
+ }
+
+"#".*$ ;
+
+%%
+
+
diff --git a/iup/srcledc/ledc.y b/iup/srcledc/ledc.y
new file mode 100755
index 0000000..1c76b76
--- /dev/null
+++ b/iup/srcledc/ledc.y
@@ -0,0 +1,189 @@
+%{
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include "ledc.h"
+
+%}
+
+%union {
+ char* fString;
+ Tattr* fAttr;
+ Tlist* fList;
+ Telem* fElem;
+ Tparam* fParam;
+}
+
+%type <fAttr> attr_def
+%type <fString> name_str
+%type <fList> attr_list opt_attr param_list param_decl
+%type <fElem> iupelem iupelem_decl
+%type <fParam> param
+
+%token '(' ')' '=' '[' ']' ','
+%token <fString> NAME STRING
+
+%start led
+
+%%
+
+led : /* empty */
+ | decl_list
+ ;
+
+decl_list : decl
+ | decl_list decl
+ ;
+
+decl : iupelem_decl
+ { decl( $1 ); }
+ ;
+
+iupelem_decl : iupelem
+ { $$ = $1; }
+ | NAME '=' iupelem
+ { $$ = $3; $3->name = $1; named($1); }
+ ;
+
+iupelem : NAME opt_attr '(' param_decl ')'
+ { $$ = elem( $1, $2, $4 ); }
+
+param_decl : /* empty */
+ { $$ = 0; }
+ | param_list
+ { $$ = $1; }
+ ;
+
+param_list : param
+ { $$ = list(); addlist( $$, $1 ); }
+ | param_list ',' param
+ { $$ = addlist( $1, $3 ); }
+ ;
+
+param : NAME
+ { $$ = param( NAME_PARAM, $1 ); }
+ | STRING
+ { $$ = param( STRING_PARAM, $1 ); }
+ | iupelem_decl
+ { $$ = param( ELEM_PARAM, $1 ); use($1->name); }
+ ;
+
+opt_attr : /* empty */
+ { $$ = 0; }
+ | '[' attr_list ']'
+ { $$ = revertlist( $2 ); }
+ ;
+
+attr_list : attr_def
+ { $$ = list(); addlist( $$, $1 ); }
+ | attr_list ',' attr_def
+ { addlist( $1, $3 ); }
+ ;
+
+attr_def : name_str '=' name_str
+ { $$ = attr( $1, $3 ); }
+ ;
+
+name_str : NAME
+ | STRING
+ ;
+
+%%
+
+extern int yylineno;
+extern FILE *yyin;
+
+int yywrap(void) { return 1; }
+
+void yyerror(char *str)
+{
+ error(" %s; last token read: %s",
+ str, yylval.fString);
+}
+
+static int usage(void)
+{
+ fprintf( stderr,
+ "ledc [-v] [-c] [-f funcname] [-o file] files\n"
+ " -v print the version number\n"
+ " -c only perform checking, do not generate code\n"
+ " -f funcname generate exported function <funcname> (default: led_load)\n"
+ " -o file place output in file <file> (default: led.c)\n"
+ );
+ return -1;
+}
+
+int main(int argc, char *argv[])
+{
+ if (argc < 2)
+ {
+ return usage();
+ }
+
+ while (argc > 1)
+ {
+ char *op = *(argv+1);
+ if (op[0] != '-') break;
+ argc--;
+ argv++;
+ switch (op[1])
+ {
+ case 'v':
+ printf("Iup 3.0 LED Compiler to C\n");
+ return 0;
+ break;
+ case 'o':
+ if (argc>1)
+ {
+ argc--;
+ argv++;
+ outname = *argv;
+ }
+ else return usage();
+ break;
+ case 'f':
+ if (argc>1)
+ {
+ argc--;
+ argv++;
+ funcname = *argv;
+ }
+ else return usage();
+ break;
+ case 'c':
+ nocode = 1;
+ break;
+ default:
+ return usage();
+ }
+ }
+
+ if (!outname) outname = "led.c";
+ if (!funcname) funcname = "led_load";
+
+ init();
+ while (--argc > 0)
+ {
+ char * name = *++argv;
+ filename = name;
+ if ((yyin = fopen(name, "r")) == NULL)
+ {
+ fprintf( stderr, "ledc: %s: %s\n", name,
+#ifdef SunOS
+ "cannot open file"
+#else
+ strerror(errno)
+#endif
+ );
+ continue;
+ }
+ yylineno = 1;
+ yyparse();
+ fclose(yyin);
+ }
+ finish();
+ return 0;
+}
+
diff --git a/iup/srcledc/lex.yy.c b/iup/srcledc/lex.yy.c
new file mode 100755
index 0000000..f4f21d6
--- /dev/null
+++ b/iup/srcledc/lex.yy.c
@@ -0,0 +1,1604 @@
+/* A lexical scanner generated by flex */
+
+/* Scanner skeleton version:
+ * $Header: /cvsroot/iup/iup/srcledc/lex.yy.c,v 1.1 2008/11/21 03:00:11 scuri Exp $
+ */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+
+#include <stdlib.h>
+#include <stdio.h>
+
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+#include <unistd.h>
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_PROTOS
+#define YY_USE_CONST
+
+#endif /* __STDC__ */
+#endif /* ! __cplusplus */
+
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index. If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#define YY_BUF_SIZE 16384
+
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+
+extern int yyleng;
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator). This
+ * avoids problems with code like:
+ *
+ * if ( condition_holds )
+ * yyless( 5 );
+ * else
+ * do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the yyless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ *yy_cp = yy_hold_char; \
+ YY_RESTORE_YY_MORE_OFFSET \
+ yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, yytext_ptr )
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int yy_size_t;
+
+
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via yyrestart()), so that the user can continue scanning by
+ * just pointing yyin at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+ };
+
+static YY_BUFFER_STATE yy_current_buffer = 0;
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ */
+#define YY_CURRENT_BUFFER yy_current_buffer
+
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+
+static int yy_n_chars; /* number of characters read into yy_ch_buf */
+
+
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1; /* whether we need to initialize */
+static int yy_start = 0; /* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin. A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart YY_PROTO(( FILE *input_file ));
+
+void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void yy_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
+void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
+
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
+
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
+static void yy_flex_free YY_PROTO(( void * ));
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! yy_current_buffer ) \
+ yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ yy_current_buffer->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! yy_current_buffer ) \
+ yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ yy_current_buffer->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+
+
+#define YY_USES_REJECT
+typedef unsigned char YY_CHAR;
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+typedef int yy_state_type;
+extern int yylineno;
+int yylineno = 1;
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state YY_PROTO(( void ));
+static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
+static int yy_get_next_buffer YY_PROTO(( void ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+ yytext_ptr = yy_bp; \
+ yyleng = (int) (yy_cp - yy_bp); \
+ yy_hold_char = *yy_cp; \
+ *yy_cp = '\0'; \
+ yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 11
+#define YY_END_OF_BUFFER 12
+static yyconst short int yy_acclist[25] =
+ { 0,
+ 12, 11, 1, 11, 11, 11, 2, 11, 3, 11,
+ 9, 11, 7, 11, 4, 11, 5, 11, 6, 11,
+ 8, 10, 9, 8
+ } ;
+
+static yyconst short int yy_accept[26] =
+ { 0,
+ 1, 1, 1, 2, 3, 5, 6, 7, 9, 11,
+ 13, 15, 17, 19, 21, 21, 22, 22, 22, 23,
+ 24, 24, 25, 25, 25
+ } ;
+
+static yyconst int yy_ec[256] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 4, 5, 1, 1, 1, 1, 6,
+ 7, 1, 8, 9, 8, 8, 1, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 1, 1, 1,
+ 10, 1, 1, 1, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 11, 12, 13, 1, 8, 1, 8, 8, 8, 8,
+
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1
+ } ;
+
+static yyconst int yy_meta[14] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1
+ } ;
+
+static yyconst short int yy_base[28] =
+ { 0,
+ 0, 0, 24, 70, 70, 10, 18, 70, 70, 12,
+ 70, 70, 70, 70, 19, 70, 29, 16, 70, 10,
+ 38, 47, 57, 70, 16, 15, 14
+ } ;
+
+static yyconst short int yy_def[28] =
+ { 0,
+ 24, 1, 24, 24, 24, 25, 26, 24, 24, 24,
+ 24, 24, 24, 24, 25, 24, 27, 26, 24, 24,
+ 25, 25, 27, 0, 24, 24, 24
+ } ;
+
+static yyconst short int yy_nxt[84] =
+ { 0,
+ 4, 5, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 4, 14, 16, 21, 18, 15, 20, 19, 20,
+ 19, 17, 16, 24, 24, 24, 24, 24, 24, 24,
+ 17, 15, 22, 24, 24, 24, 24, 24, 24, 24,
+ 23, 16, 24, 24, 24, 24, 24, 24, 24, 17,
+ 16, 24, 24, 24, 24, 24, 24, 24, 17, 15,
+ 22, 24, 24, 24, 24, 24, 24, 24, 23, 3,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24
+ } ;
+
+static yyconst short int yy_chk[84] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 6, 27, 26, 25, 20, 18, 10,
+ 7, 6, 15, 3, 0, 0, 0, 0, 0, 0,
+ 15, 17, 17, 0, 0, 0, 0, 0, 0, 0,
+ 17, 21, 0, 0, 0, 0, 0, 0, 0, 21,
+ 22, 0, 0, 0, 0, 0, 0, 0, 22, 23,
+ 23, 0, 0, 0, 0, 0, 0, 0, 23, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24
+ } ;
+
+static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
+static char *yy_full_match;
+static int yy_lp;
+#define REJECT \
+{ \
+*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
+yy_cp = yy_full_match; /* restore poss. backed-over text */ \
+++yy_lp; \
+goto find_rule; \
+}
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "ledc.l"
+#define INITIAL 0
+#line 4 "ledc.l"
+#include <string.h>
+#include "ledc.h"
+#include "y.tab.h"
+#line 404 "lex.yy.c"
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap YY_PROTO(( void ));
+#else
+extern int yywrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines. This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ if ( yy_current_buffer->yy_is_interactive ) \
+ { \
+ int c = '*', n; \
+ for ( n = 0; n < max_size && \
+ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+ buf[n] = (char) c; \
+ if ( c == '\n' ) \
+ buf[n++] = (char) c; \
+ if ( c == EOF && ferror( yyin ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ result = n; \
+ } \
+ else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
+ && ferror( yyin ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" );
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+ YY_USER_ACTION
+
+YY_DECL
+ {
+ register yy_state_type yy_current_state;
+ register char *yy_cp = NULL, *yy_bp = NULL;
+ register int yy_act;
+
+#line 36 "ledc.l"
+
+
+#line 558 "lex.yy.c"
+
+ if ( yy_init )
+ {
+ yy_init = 0;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! yy_start )
+ yy_start = 1; /* first start state */
+
+ if ( ! yyin )
+ yyin = stdin;
+
+ if ( ! yyout )
+ yyout = stdout;
+
+ if ( ! yy_current_buffer )
+ yy_current_buffer =
+ yy_create_buffer( yyin, YY_BUF_SIZE );
+
+ yy_load_buffer_state();
+ }
+
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = yy_c_buf_p;
+
+ /* Support of yytext. */
+ *yy_cp = yy_hold_char;
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = yy_start;
+ yy_state_ptr = yy_state_buf;
+ *yy_state_ptr++ = yy_current_state;
+yy_match:
+ do
+ {
+ register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 25 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ *yy_state_ptr++ = yy_current_state;
+ ++yy_cp;
+ }
+ while ( yy_base[yy_current_state] != 70 );
+
+yy_find_action:
+ yy_current_state = *--yy_state_ptr;
+ yy_lp = yy_accept[yy_current_state];
+find_rule: /* we branch to this label when backing up */
+ for ( ; ; ) /* until we find what rule we matched */
+ {
+ if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
+ {
+ yy_act = yy_acclist[yy_lp];
+ {
+ yy_full_match = yy_cp;
+ break;
+ }
+ }
+ --yy_cp;
+ yy_current_state = *--yy_state_ptr;
+ yy_lp = yy_accept[yy_current_state];
+ }
+
+ YY_DO_BEFORE_ACTION;
+
+ if ( yy_act != YY_END_OF_BUFFER )
+ {
+ int yyl;
+ for ( yyl = 0; yyl < yyleng; ++yyl )
+ if ( yytext[yyl] == '\n' )
+ ++yylineno;
+ }
+
+do_action: /* This label is used only to access EOF actions. */
+
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+case 1:
+YY_RULE_SETUP
+#line 38 "ledc.l"
+;
+ YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 40 "ledc.l"
+{ return '('; }
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 41 "ledc.l"
+{ return ')'; }
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 42 "ledc.l"
+{ return '='; }
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 43 "ledc.l"
+{ return '['; }
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 44 "ledc.l"
+{ return ']'; }
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 45 "ledc.l"
+{ return ','; }
+ YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 47 "ledc.l"
+{
+ int len = strlen(yytext)-2;
+ char *str = (char*)malloc(sizeof(char)*len+1);
+ strncpy(str, yytext+1, len);
+ str[len] = 0;
+ yylval.fString = str;
+ return STRING;
+ }
+ YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 56 "ledc.l"
+{
+ yylval.fString = strdup(yytext);
+ return NAME;
+ }
+ YY_BREAK
+case 10:
+*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
+yy_c_buf_p = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up yytext again */
+YY_RULE_SETUP
+#line 61 "ledc.l"
+;
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 63 "ledc.l"
+ECHO;
+ YY_BREAK
+#line 717 "lex.yy.c"
+ case YY_STATE_EOF(INITIAL):
+ yyterminate();
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = yy_hold_char;
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed yyin at a new source and called
+ * yylex(). If so, then we have to assure
+ * consistency between yy_current_buffer and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ yy_n_chars = yy_current_buffer->yy_n_chars;
+ yy_current_buffer->yy_input_file = yyin;
+ yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state();
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+ yy_bp = yytext_ptr + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++yy_c_buf_p;
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = yy_c_buf_p;
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer() )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ yy_did_buffer_switch_on_eof = 0;
+
+ if ( yywrap() )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * yytext, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ yy_c_buf_p =
+ yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state();
+
+ yy_cp = yy_c_buf_p;
+ yy_bp = yytext_ptr + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ yy_c_buf_p =
+ &yy_current_buffer->yy_ch_buf[yy_n_chars];
+
+ yy_current_state = yy_get_previous_state();
+
+ yy_cp = yy_c_buf_p;
+ yy_bp = yytext_ptr + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+ } /* end of yylex */
+
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int yy_get_next_buffer()
+ {
+ register char *dest = yy_current_buffer->yy_ch_buf;
+ register char *source = yytext_ptr;
+ register int number_to_move, i;
+ int ret_val;
+
+ if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( yy_current_buffer->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+
+ else
+ {
+ int num_to_read =
+ yy_current_buffer->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+ YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = yy_current_buffer;
+
+ int yy_c_buf_p_offset =
+ (int) (yy_c_buf_p - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ int new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ yy_flex_realloc( (void *) b->yy_ch_buf,
+ b->yy_buf_size + 2 );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = 0;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = yy_current_buffer->yy_buf_size -
+ number_to_move - 1;
+#endif
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+ yy_n_chars, num_to_read );
+
+ yy_current_buffer->yy_n_chars = yy_n_chars;
+ }
+
+ if ( yy_n_chars == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ yyrestart( yyin );
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ yy_current_buffer->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ yy_n_chars += number_to_move;
+ yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+ yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+ yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+
+ return ret_val;
+ }
+
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+static yy_state_type yy_get_previous_state()
+ {
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+
+ yy_current_state = yy_start;
+ yy_state_ptr = yy_state_buf;
+ *yy_state_ptr++ = yy_current_state;
+
+ for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+ {
+ register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 25 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ *yy_state_ptr++ = yy_current_state;
+ }
+
+ return yy_current_state;
+ }
+
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+
+#ifdef YY_USE_PROTOS
+static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
+#else
+static yy_state_type yy_try_NUL_trans( yy_current_state )
+yy_state_type yy_current_state;
+#endif
+ {
+ register int yy_is_jam;
+
+ register YY_CHAR yy_c = 1;
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 25 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ yy_is_jam = (yy_current_state == 24);
+ if ( ! yy_is_jam )
+ *yy_state_ptr++ = yy_current_state;
+
+ return yy_is_jam ? 0 : yy_current_state;
+ }
+
+
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static void yyunput( int c, register char *yy_bp )
+#else
+static void yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+#endif
+ {
+ register char *yy_cp = yy_c_buf_p;
+
+ /* undo effects of setting up yytext */
+ *yy_cp = yy_hold_char;
+
+ if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+ { /* need to shift things up to make room */
+ /* +2 for EOB chars. */
+ register int number_to_move = yy_n_chars + 2;
+ register char *dest = &yy_current_buffer->yy_ch_buf[
+ yy_current_buffer->yy_buf_size + 2];
+ register char *source =
+ &yy_current_buffer->yy_ch_buf[number_to_move];
+
+ while ( source > yy_current_buffer->yy_ch_buf )
+ *--dest = *--source;
+
+ yy_cp += (int) (dest - source);
+ yy_bp += (int) (dest - source);
+ yy_current_buffer->yy_n_chars =
+ yy_n_chars = yy_current_buffer->yy_buf_size;
+
+ if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+ YY_FATAL_ERROR( "flex scanner push-back overflow" );
+ }
+
+ *--yy_cp = (char) c;
+
+ if ( c == '\n' )
+ --yylineno;
+
+ yytext_ptr = yy_bp;
+ yy_hold_char = *yy_cp;
+ yy_c_buf_p = yy_cp;
+ }
+#endif /* ifndef YY_NO_UNPUT */
+
+
+#ifdef __cplusplus
+static int yyinput()
+#else
+static int input()
+#endif
+ {
+ int c;
+
+ *yy_c_buf_p = yy_hold_char;
+
+ if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+ /* This was really a NUL. */
+ *yy_c_buf_p = '\0';
+
+ else
+ { /* need more input */
+ int offset = yy_c_buf_p - yytext_ptr;
+ ++yy_c_buf_p;
+
+ switch ( yy_get_next_buffer() )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ yyrestart( yyin );
+
+ /* fall through */
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( yywrap() )
+ return EOF;
+
+ if ( ! yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput();
+#else
+ return input();
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ yy_c_buf_p = yytext_ptr + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
+ *yy_c_buf_p = '\0'; /* preserve yytext */
+ yy_hold_char = *++yy_c_buf_p;
+
+ if ( c == '\n' )
+ ++yylineno;
+
+ return c;
+ }
+
+
+#ifdef YY_USE_PROTOS
+void yyrestart( FILE *input_file )
+#else
+void yyrestart( input_file )
+FILE *input_file;
+#endif
+ {
+ if ( ! yy_current_buffer )
+ yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+ yy_init_buffer( yy_current_buffer, input_file );
+ yy_load_buffer_state();
+ }
+
+
+#ifdef YY_USE_PROTOS
+void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void yy_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+ {
+ if ( yy_current_buffer == new_buffer )
+ return;
+
+ if ( yy_current_buffer )
+ {
+ /* Flush out information for old buffer. */
+ *yy_c_buf_p = yy_hold_char;
+ yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+ yy_current_buffer->yy_n_chars = yy_n_chars;
+ }
+
+ yy_current_buffer = new_buffer;
+ yy_load_buffer_state();
+
+ /* We don't actually know whether we did this switch during
+ * EOF (yywrap()) processing, but the only time this flag
+ * is looked at is after yywrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ yy_did_buffer_switch_on_eof = 1;
+ }
+
+
+#ifdef YY_USE_PROTOS
+void yy_load_buffer_state( void )
+#else
+void yy_load_buffer_state()
+#endif
+ {
+ yy_n_chars = yy_current_buffer->yy_n_chars;
+ yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+ yyin = yy_current_buffer->yy_input_file;
+ yy_hold_char = *yy_c_buf_p;
+ }
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE yy_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+ {
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ yy_init_buffer( b, file );
+
+ return b;
+ }
+
+
+#ifdef YY_USE_PROTOS
+void yy_delete_buffer( YY_BUFFER_STATE b )
+#else
+void yy_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+ {
+ if ( ! b )
+ return;
+
+ if ( b == yy_current_buffer )
+ yy_current_buffer = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ yy_flex_free( (void *) b->yy_ch_buf );
+
+ yy_flex_free( (void *) b );
+ }
+
+
+#ifndef YY_ALWAYS_INTERACTIVE
+#ifndef YY_NEVER_INTERACTIVE
+extern int isatty YY_PROTO(( int ));
+#endif
+#endif
+
+#ifdef YY_USE_PROTOS
+void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void yy_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+ {
+ yy_flush_buffer( b );
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+ b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+ b->yy_is_interactive = 0;
+#else
+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+ }
+
+
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+ {
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == yy_current_buffer )
+ yy_load_buffer_state();
+ }
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+ {
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return 0;
+
+ b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+ b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = 0;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ yy_switch_to_buffer( b );
+
+ return b;
+ }
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
+#else
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
+#endif
+ {
+ int len;
+ for ( len = 0; yy_str[len]; ++len )
+ ;
+
+ return yy_scan_bytes( yy_str, len );
+ }
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+ {
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ int i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = len + 2;
+ buf = (char *) yy_flex_alloc( n );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+ for ( i = 0; i < len; ++i )
+ buf[i] = bytes[i];
+
+ buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = yy_scan_buffer( buf, n );
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+ }
+#endif
+
+
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void yy_push_state( int new_state )
+#else
+static void yy_push_state( new_state )
+int new_state;
+#endif
+ {
+ if ( yy_start_stack_ptr >= yy_start_stack_depth )
+ {
+ yy_size_t new_size;
+
+ yy_start_stack_depth += YY_START_STACK_INCR;
+ new_size = yy_start_stack_depth * sizeof( int );
+
+ if ( ! yy_start_stack )
+ yy_start_stack = (int *) yy_flex_alloc( new_size );
+
+ else
+ yy_start_stack = (int *) yy_flex_realloc(
+ (void *) yy_start_stack, new_size );
+
+ if ( ! yy_start_stack )
+ YY_FATAL_ERROR(
+ "out of memory expanding start-condition stack" );
+ }
+
+ yy_start_stack[yy_start_stack_ptr++] = YY_START;
+
+ BEGIN(new_state);
+ }
+#endif
+
+
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state()
+ {
+ if ( --yy_start_stack_ptr < 0 )
+ YY_FATAL_ERROR( "start-condition stack underflow" );
+
+ BEGIN(yy_start_stack[yy_start_stack_ptr]);
+ }
+#endif
+
+
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state()
+ {
+ return yy_start_stack[yy_start_stack_ptr - 1];
+ }
+#endif
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+#ifdef YY_USE_PROTOS
+static void yy_fatal_error( yyconst char msg[] )
+#else
+static void yy_fatal_error( msg )
+char msg[];
+#endif
+ {
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+ }
+
+
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ yytext[yyleng] = yy_hold_char; \
+ yy_c_buf_p = yytext + n; \
+ yy_hold_char = *yy_c_buf_p; \
+ *yy_c_buf_p = '\0'; \
+ yyleng = n; \
+ } \
+ while ( 0 )
+
+
+/* Internal utility routines. */
+
+#ifndef yytext_ptr
+#ifdef YY_USE_PROTOS
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
+#else
+static void yy_flex_strncpy( s1, s2, n )
+char *s1;
+yyconst char *s2;
+int n;
+#endif
+ {
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+ }
+#endif
+
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+ {
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+ }
+#endif
+
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_alloc( yy_size_t size )
+#else
+static void *yy_flex_alloc( size )
+yy_size_t size;
+#endif
+ {
+ return (void *) malloc( size );
+ }
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_realloc( void *ptr, yy_size_t size )
+#else
+static void *yy_flex_realloc( ptr, size )
+void *ptr;
+yy_size_t size;
+#endif
+ {
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return (void *) realloc( (char *) ptr, size );
+ }
+
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+ {
+ free( ptr );
+ }
+
+#if YY_MAIN
+int main()
+ {
+ yylex();
+ return 0;
+ }
+#endif
+#line 63 "ledc.l"
+
+
+
diff --git a/iup/srcledc/make_uname b/iup/srcledc/make_uname
new file mode 100755
index 0000000..ca4b499
--- /dev/null
+++ b/iup/srcledc/make_uname
@@ -0,0 +1,3 @@
+# This builds the executable for 1 uname
+
+tecmake relink $1 $2 $3 $4 $5 $6 $7 $8
diff --git a/iup/srcledc/make_uname.bat b/iup/srcledc/make_uname.bat
new file mode 100755
index 0000000..a6645a6
--- /dev/null
+++ b/iup/srcledc/make_uname.bat
@@ -0,0 +1,22 @@
+@echo off
+
+if "%1"=="" goto iupexe32
+if "%1"=="vc8" goto iupexe32
+if "%1"=="vc8_64" goto iupexe64
+if "%1"=="all" goto iupexe
+goto end
+
+:iupexe32
+call tecmake vc8 relink %2 %3 %4 %5 %6 %7
+goto end
+
+:iupexe64
+call tecmake vc8_64 relink %2 %3 %4 %5 %6 %7
+goto end
+
+:iupexe
+call tecmake vc8 relink %2 %3 %4 %5 %6 %7
+call tecmake vc8_64 relink %2 %3 %4 %5 %6 %7
+goto end
+
+:end
diff --git a/iup/srcledc/y.tab.c b/iup/srcledc/y.tab.c
new file mode 100755
index 0000000..e749dc7
--- /dev/null
+++ b/iup/srcledc/y.tab.c
@@ -0,0 +1,507 @@
+#ifndef lint
+static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
+#endif
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+#define yyclearin (yychar=(-1))
+#define yyerrok (yyerrflag=0)
+#define YYRECOVERING (yyerrflag!=0)
+#define YYPREFIX "yy"
+#line 1 "ledc.y"
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include "ledc.h"
+
+static int yyparse(void);
+
+#line 11 "ledc.y"
+typedef union {
+ char* fString;
+ Tattr* fAttr;
+ Tlist* fList;
+ Telem* fElem;
+ Tparam* fParam;
+} YYSTYPE;
+#line 29 "y.tab.c"
+#define NAME 257
+#define STRING 258
+#define YYERRCODE 256
+short yylhs[] = { -1,
+ 0, 0, 10, 10, 11, 8, 8, 7, 6, 6,
+ 5, 5, 9, 9, 9, 4, 4, 3, 3, 1,
+ 2, 2,
+};
+short yylen[] = { 2,
+ 0, 1, 1, 2, 1, 1, 3, 5, 0, 1,
+ 1, 3, 1, 1, 1, 0, 3, 1, 3, 3,
+ 1, 1,
+};
+short yydefred[] = { 0,
+ 0, 0, 6, 5, 0, 3, 0, 0, 0, 4,
+ 0, 7, 21, 22, 18, 0, 0, 0, 0, 17,
+ 0, 0, 14, 0, 0, 15, 11, 20, 19, 0,
+ 8, 12,
+};
+short yydgoto[] = { 2,
+ 15, 16, 17, 9, 24, 25, 3, 4, 27, 5,
+ 6,
+};
+short yysindex[] = { -247,
+ -60, 0, 0, 0, -247, 0, -246, -252, -28, 0,
+ -78, 0, 0, 0, 0, -46, -44, -249, -252, 0,
+ -252, -60, 0, -27, -25, 0, 0, 0, 0, -249,
+ 0, 0,
+};
+short yyrindex[] = { 18,
+ -21, 0, 0, 0, 20, 0, 0, 0, 0, 0,
+ -21, 0, 0, 0, 0, 0, 0, -20, 0, 0,
+ 0, -37, 0, -19, 0, 0, 0, 0, 0, 0,
+ 0, 0,
+};
+short yygindex[] = { 0,
+ 2, 5, 0, 0, 0, 0, 19, -16, -5, 0,
+ 22,
+};
+#define YYTABLESIZE 49
+short yytable[] = { 21,
+ 7, 26, 16, 13, 13, 14, 13, 22, 23, 1,
+ 11, 18, 8, 26, 19, 31, 30, 1, 16, 2,
+ 9, 10, 29, 28, 32, 12, 10, 0, 0, 0,
+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 20,
+};
+short yycheck[] = { 44,
+ 61, 18, 40, 41, 257, 258, 44, 257, 258, 257,
+ 257, 40, 91, 30, 61, 41, 44, 0, 40, 0,
+ 41, 41, 21, 19, 30, 7, 5, -1, -1, -1,
+ 91, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 93,
+};
+#define YYFINAL 2
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 258
+#if YYDEBUG
+char *yyname[] = {
+"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,"'('","')'",0,0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'='",0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'['",0,"']'",0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"NAME",
+"STRING",
+};
+char *yyrule[] = {
+"$accept : led",
+"led :",
+"led : decl_list",
+"decl_list : decl",
+"decl_list : decl_list decl",
+"decl : iupelem_decl",
+"iupelem_decl : iupelem",
+"iupelem_decl : NAME '=' iupelem",
+"iupelem : NAME opt_attr '(' param_decl ')'",
+"param_decl :",
+"param_decl : param_list",
+"param_list : param",
+"param_list : param_list ',' param",
+"param : NAME",
+"param : STRING",
+"param : iupelem_decl",
+"opt_attr :",
+"opt_attr : '[' attr_list ']'",
+"attr_list : attr_def",
+"attr_list : attr_list ',' attr_def",
+"attr_def : name_str '=' name_str",
+"name_str : NAME",
+"name_str : STRING",
+};
+#endif
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH 500
+#endif
+#endif
+int yydebug;
+int yynerrs;
+int yyerrflag;
+int yychar;
+short *yyssp;
+YYSTYPE *yyvsp;
+YYSTYPE yyval;
+YYSTYPE yylval;
+short yyss[YYSTACKSIZE];
+YYSTYPE yyvs[YYSTACKSIZE];
+#define yystacksize YYSTACKSIZE
+#line 93 "ledc.y"
+
+
+extern int yylineno;
+extern FILE *yyin;
+
+int yywrap(void) { return 1; }
+
+void yyerror(char *str)
+{
+ error(" %s; last token read: %s",
+ str, yylval.fString);
+}
+
+static int usage(void)
+{
+ fprintf( stderr,
+ "ledc [-v] [-c] [-f funcname] [-o file] files\n"
+ " -v print the version number\n"
+ " -c only perform checking, do not generate code\n"
+ " -f funcname generate exported function <funcname> (default: led_load)\n"
+ " -o file place output in file <file> (default: led.c)\n"
+ );
+ return -1;
+}
+
+int main(int argc, char *argv[])
+{
+ if (argc < 2)
+ {
+ return usage();
+ }
+
+ while (argc > 1)
+ {
+ char *op = *(argv+1);
+ if (op[0] != '-') break;
+ argc--;
+ argv++;
+ switch (op[1])
+ {
+ case 'v':
+ printf("Iup 3.0 LED Compiler to C\n");
+ return 0;
+ break;
+ case 'o':
+ if (argc>1)
+ {
+ argc--;
+ argv++;
+ outname = *argv;
+ }
+ else return usage();
+ break;
+ case 'f':
+ if (argc>1)
+ {
+ argc--;
+ argv++;
+ funcname = *argv;
+ }
+ else return usage();
+ break;
+ case 'c':
+ nocode = 1;
+ break;
+ default:
+ return usage();
+ }
+ }
+
+ if (!outname) outname = "led.c";
+ if (!funcname) funcname = "led_load";
+
+ init();
+ while (--argc > 0)
+ {
+ char * name = *++argv;
+ filename = name;
+ if ((yyin = fopen(name, "r")) == NULL)
+ {
+ fprintf( stderr, "ledc: %s: %s\n", name,
+#ifdef SunOS
+ "cannot open file"
+#else
+ strerror(errno)
+#endif
+ );
+ continue;
+ }
+ yylineno = 1;
+ yyparse();
+ fclose(yyin);
+ }
+ finish();
+ return 0;
+}
+
+#line 246 "y.tab.c"
+#define YYABORT goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR goto yyerrlab
+static int yyparse(void)
+{
+ register int yym, yyn, yystate;
+#if YYDEBUG
+ register char *yys;
+ extern char *getenv();
+
+ if (yys = getenv("YYDEBUG"))
+ {
+ yyn = *yys;
+ if (yyn >= '0' && yyn <= '9')
+ yydebug = yyn - '0';
+ }
+#endif
+
+ yynerrs = 0;
+ yyerrflag = 0;
+ yychar = (-1);
+
+ yyssp = yyss;
+ yyvsp = yyvs;
+ *yyssp = yystate = 0;
+
+yyloop:
+ if (yyn = yydefred[yystate]) goto yyreduce;
+ if (yychar < 0)
+ {
+ if ((yychar = yylex()) < 0) yychar = 0;
+#if YYDEBUG
+ if (yydebug)
+ {
+ yys = 0;
+ if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+ if (!yys) yys = "illegal-symbol";
+ printf("%sdebug: state %d, reading %d (%s)\n",
+ YYPREFIX, yystate, yychar, yys);
+ }
+#endif
+ }
+ if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
+ yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
+ {
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: state %d, shifting to state %d\n",
+ YYPREFIX, yystate, yytable[yyn]);
+#endif
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ goto yyoverflow;
+ }
+ *++yyssp = yystate = yytable[yyn];
+ *++yyvsp = yylval;
+ yychar = (-1);
+ if (yyerrflag > 0) --yyerrflag;
+ goto yyloop;
+ }
+ if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
+ yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
+ {
+ yyn = yytable[yyn];
+ goto yyreduce;
+ }
+ if (yyerrflag) goto yyinrecovery;
+#ifdef lint
+ goto yynewerror;
+#endif
+yynewerror:
+ yyerror("syntax error");
+#ifdef lint
+ goto yyerrlab;
+#endif
+yyerrlab:
+ ++yynerrs;
+yyinrecovery:
+ if (yyerrflag < 3)
+ {
+ yyerrflag = 3;
+ for (;;)
+ {
+ if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
+ yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
+ {
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
+#endif
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ goto yyoverflow;
+ }
+ *++yyssp = yystate = yytable[yyn];
+ *++yyvsp = yylval;
+ goto yyloop;
+ }
+ else
+ {
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: error recovery discarding state %d\n",
+ YYPREFIX, *yyssp);
+#endif
+ if (yyssp <= yyss) goto yyabort;
+ --yyssp;
+ --yyvsp;
+ }
+ }
+ }
+ else
+ {
+ if (yychar == 0) goto yyabort;
+#if YYDEBUG
+ if (yydebug)
+ {
+ yys = 0;
+ if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+ if (!yys) yys = "illegal-symbol";
+ printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
+ YYPREFIX, yystate, yychar, yys);
+ }
+#endif
+ yychar = (-1);
+ goto yyloop;
+ }
+yyreduce:
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+ YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+ yym = yylen[yyn];
+ yyval = yyvsp[1-yym];
+ switch (yyn)
+ {
+case 5:
+#line 41 "ledc.y"
+{ decl( yyvsp[0].fElem ); }
+break;
+case 6:
+#line 45 "ledc.y"
+{ yyval.fElem = yyvsp[0].fElem; }
+break;
+case 7:
+#line 47 "ledc.y"
+{ yyval.fElem = yyvsp[0].fElem; yyvsp[0].fElem->name = yyvsp[-2].fString; named(yyvsp[-2].fString); }
+break;
+case 8:
+#line 51 "ledc.y"
+{ yyval.fElem = elem( yyvsp[-4].fString, yyvsp[-3].fList, yyvsp[-1].fList ); }
+break;
+case 9:
+#line 54 "ledc.y"
+{ yyval.fList = 0; }
+break;
+case 10:
+#line 56 "ledc.y"
+{ yyval.fList = yyvsp[0].fList; }
+break;
+case 11:
+#line 60 "ledc.y"
+{ yyval.fList = list(); addlist( yyval.fList, yyvsp[0].fParam ); }
+break;
+case 12:
+#line 62 "ledc.y"
+{ yyval.fList = addlist( yyvsp[-2].fList, yyvsp[0].fParam ); }
+break;
+case 13:
+#line 66 "ledc.y"
+{ yyval.fParam = param( NAME_PARAM, yyvsp[0].fString ); }
+break;
+case 14:
+#line 68 "ledc.y"
+{ yyval.fParam = param( STRING_PARAM, yyvsp[0].fString ); }
+break;
+case 15:
+#line 70 "ledc.y"
+{ yyval.fParam = param( ELEM_PARAM, yyvsp[0].fElem ); use(yyvsp[0].fElem->name); }
+break;
+case 16:
+#line 74 "ledc.y"
+{ yyval.fList = 0; }
+break;
+case 17:
+#line 76 "ledc.y"
+{ yyval.fList = revertlist( yyvsp[-1].fList ); }
+break;
+case 18:
+#line 80 "ledc.y"
+{ yyval.fList = list(); addlist( yyval.fList, yyvsp[0].fAttr ); }
+break;
+case 19:
+#line 82 "ledc.y"
+{ addlist( yyvsp[-2].fList, yyvsp[0].fAttr ); }
+break;
+case 20:
+#line 86 "ledc.y"
+{ yyval.fAttr = attr( yyvsp[-2].fString, yyvsp[0].fString ); }
+break;
+#line 451 "y.tab.c"
+ }
+ yyssp -= yym;
+ yystate = *yyssp;
+ yyvsp -= yym;
+ yym = yylhs[yyn];
+ if (yystate == 0 && yym == 0)
+ {
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+ yystate = YYFINAL;
+ *++yyssp = YYFINAL;
+ *++yyvsp = yyval;
+ if (yychar < 0)
+ {
+ if ((yychar = yylex()) < 0) yychar = 0;
+#if YYDEBUG
+ if (yydebug)
+ {
+ yys = 0;
+ if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+ if (!yys) yys = "illegal-symbol";
+ printf("%sdebug: state %d, reading %d (%s)\n",
+ YYPREFIX, YYFINAL, yychar, yys);
+ }
+#endif
+ }
+ if (yychar == 0) goto yyaccept;
+ goto yyloop;
+ }
+ if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
+ yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
+ yystate = yytable[yyn];
+ else
+ yystate = yydgoto[yym];
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yyssp, yystate);
+#endif
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ goto yyoverflow;
+ }
+ *++yyssp = yystate;
+ *++yyvsp = yyval;
+ goto yyloop;
+yyoverflow:
+ yyerror("yacc stack overflow");
+yyabort:
+ return (1);
+yyaccept:
+ return (0);
+}
diff --git a/iup/srcledc/y.tab.h b/iup/srcledc/y.tab.h
new file mode 100755
index 0000000..4a16f88
--- /dev/null
+++ b/iup/srcledc/y.tab.h
@@ -0,0 +1,10 @@
+#define NAME 257
+#define STRING 258
+typedef union {
+ char* fString;
+ Tattr* fAttr;
+ Tlist* fList;
+ Telem* fElem;
+ Tparam* fParam;
+} YYSTYPE;
+extern YYSTYPE yylval;
diff --git a/iup/srclua3/Makefile b/iup/srclua3/Makefile
new file mode 100755
index 0000000..b63716a
--- /dev/null
+++ b/iup/srclua3/Makefile
@@ -0,0 +1,21 @@
+
+.PHONY: do_all iuplua iupluacd iupluacontrols iuplua_pplot iupluagl iupluaim
+do_all: iuplua iupluacd iupluacontrols iuplua_pplot iupluagl iupluaim
+
+iuplua:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak
+
+iupluacd:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupcd
+
+iupluacontrols:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupcontrols
+
+iuplua_pplot:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iup_pplot
+
+iupluagl:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupgl
+
+iupluaim:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupim
diff --git a/iup/srclua3/cells.lua b/iup/srclua3/cells.lua
new file mode 100755
index 0000000..0f1e0cc
--- /dev/null
+++ b/iup/srclua3/cells.lua
@@ -0,0 +1,37 @@
+IUPCELLS = {parent = WIDGET}
+
+function IUPCELLS:CreateIUPelement( obj )
+ return iupCreateCells()
+end
+
+function IUPCELLS:redraw()
+ self.repaint = IUP_YES
+end
+
+function iupcells(o)
+ return IUPCELLS:Constructor(o)
+end
+iup.cells = iupcells
+
+
+-- iup_callbacks.draw_cb = iup_callbacks.draw = {"DRAW_CB", iup_mat_draw_cb} -- same callback at IupMatrix
+
+iup_callbacks.mouseclick = {"MOUSECLICK_CB", iup_cells_mouseclick_cb}
+iup_callbacks.mousemotion = {"MOUSEMOTION_CB", iup_cells_mousemotion_cb}
+iup_callbacks.scrolling = {"SCROLLING_CB", iup_cells_scrolling_cb}
+iup_callbacks.width = {"WIDTH_CB", iup_cells_width_cb}
+iup_callbacks.height = {"HEIGHT_CB", iup_cells_height_cb}
+iup_callbacks.nlines = {"NLINES_CB", iup_cells_nlines_cb}
+iup_callbacks.ncols = {"NCOLS_CB", iup_cells_ncols_cb}
+iup_callbacks.hspan = {"HSPAN_CB", iup_cells_hspan_cb}
+iup_callbacks.vspan = {"VSPAN_CB", iup_cells_vspan_cb}
+
+iup_callbacks.mouseclick_cb = iup_callbacks.mouseclick
+iup_callbacks.mousemotion_cb = iup_callbacks.mousemotion
+iup_callbacks.scrolling_cb = iup_callbacks.scrolling
+iup_callbacks.width_cb = iup_callbacks.width
+iup_callbacks.height_cb = iup_callbacks.height
+iup_callbacks.nlines_cb = iup_callbacks.nlines
+iup_callbacks.ncols_cb = iup_callbacks.ncols
+iup_callbacks.hspan_cb = iup_callbacks.hspan
+iup_callbacks.vspan_cb = iup_callbacks.vspan
diff --git a/iup/srclua3/colorbar.lua b/iup/srclua3/colorbar.lua
new file mode 100755
index 0000000..41953de
--- /dev/null
+++ b/iup/srclua3/colorbar.lua
@@ -0,0 +1,21 @@
+IUPCOLORBAR = {parent = WIDGET}
+
+function IUPCOLORBAR:CreateIUPelement(obj)
+ return iupCreateColorbar(obj)
+end
+
+function iupcolorbar (o)
+ return IUPCOLORBAR:Constructor (o)
+end
+iup.colorbar = iupcolorbar
+
+
+iup_callbacks.cellcb = {"CELL_CB", iup_colorbar_cell_cb}
+iup_callbacks.selectcb = {"SELECT_CB", iup_colorbar_select_cb}
+iup_callbacks.switchcb = {"SWITCH_CB", iup_colorbar_switch_cb}
+iup_callbacks.extendedcb = {"EXTENDED_CB", iup_colorbar_extended_cb}
+
+iup_callbacks.cell_cb = iup_callbacks.cellcb
+iup_callbacks.select_cb = iup_callbacks.selectcb
+iup_callbacks.switch_cb = iup_callbacks.switchcb
+iup_callbacks.extended_cb = iup_callbacks.extendedcb
diff --git a/iup/srclua3/colorbrowser.lua b/iup/srclua3/colorbrowser.lua
new file mode 100755
index 0000000..fdd7bd7
--- /dev/null
+++ b/iup/srclua3/colorbrowser.lua
@@ -0,0 +1,17 @@
+IUPCOLORBROWSER = {parent = WIDGET}
+
+function IUPCOLORBROWSER:CreateIUPelement(obj)
+ return iupCreateColorBrowser(obj)
+end
+
+function iupcolorbrowser (o)
+ return IUPCOLORBROWSER:Constructor (o)
+end
+iup.colorbrowser = iupcolorbrowser
+
+
+iup_callbacks.drag = {"DRAG_CB", iup_colorbrowser_drag_cb}
+iup_callbacks.change = {"CHANGE_CB", iup_colorbrowser_change_cb}
+
+iup_callbacks.drag_cb = iup_callbacks.drag
+iup_callbacks.change_cb = iup_callbacks.change
diff --git a/iup/srclua3/config.mak b/iup/srclua3/config.mak
new file mode 100755
index 0000000..fae6145
--- /dev/null
+++ b/iup/srclua3/config.mak
@@ -0,0 +1,19 @@
+BUILD_IUP3 = Yes
+
+PROJNAME = iup
+LIBNAME = iuplua3
+OPT = YES
+
+LOHDIR = loh
+SRCLUA = iuplua.lua iuplua_widgets.lua constants.lua spin.lua \
+ sbox.lua val.lua tree.lua tabs.lua
+SRC = iuplua.c iuplua_api.c iuplua_widgets.c il_scanf.c il_cbox.c \
+ il_sbox.c il_spin.c il_val.c il_tree.c il_tabs.c il_getcolor.c il_getparam.c
+
+USE_LUA = Yes
+
+DEFINES = IUPLUA_USELOH
+INCLUDES = ../include ../src
+LDIR = ../lib/$(TEC_UNAME)
+LIBS = iup
+
diff --git a/iup/srclua3/constants.lua b/iup/srclua3/constants.lua
new file mode 100755
index 0000000..bbd366b
--- /dev/null
+++ b/iup/srclua3/constants.lua
@@ -0,0 +1,148 @@
+
+-- #################################################################################
+-- Constants
+-- #################################################################################
+
+
+IUP_ERROR = 1 iup.ERROR = IUP_ERROR
+IUP_NOERROR = 0 iup.NOERROR = IUP_NOERROR
+IUP_OPENED = -1 iup.OPENED = IUP_OPENED
+IUP_INVALID = -1 iup.INVALID = IUP_INVALID
+
+IUP_CENTER = 65535 iup.CENTER = IUP_CENTER
+IUP_LEFT = 65534 iup.LEFT = IUP_LEFT
+IUP_RIGHT = 65533 iup.RIGHT = IUP_RIGHT
+IUP_MOUSEPOS = 65532 iup.MOUSEPOS = IUP_MOUSEPOS
+IUP_CURRENT = 65531 iup.CURRENT = IUP_CURRENT
+IUP_CENTERPARENT = 65530 iup.CENTERPARENT = IUP_CENTERPARENT
+IUP_TOP = IUP_LEFT iup.TOP = IUP_TOP
+IUP_BOTTOM = IUP_RIGHT iup.BOTTOM = IUP_BOTTOM
+
+IUP_BUTTON1 = 49 iup.BUTTON1 = IUP_BUTTON1 -- '1'
+IUP_BUTTON2 = 50 iup.BUTTON2 = IUP_BUTTON2 -- '2'
+IUP_BUTTON3 = 51 iup.BUTTON3 = IUP_BUTTON3 -- '3'
+IUP_BUTTON4 = 52 iup.BUTTON4 = IUP_BUTTON4 -- '4'
+IUP_BUTTON5 = 53 iup.BUTTON5 = IUP_BUTTON5 -- '5'
+
+IUP_IGNORE = -1 iup.IGNORE = IUP_IGNORE
+IUP_DEFAULT = -2 iup.DEFAULT = IUP_DEFAULT
+IUP_CLOSE = -3 iup.CLOSE = IUP_CLOSE
+IUP_CONTINUE = -4 iup.CONTINUE = IUP_CONTINUE
+
+IUP_SBUP = 0 iup.SBUP = IUP_SBUP
+IUP_SBDN = 1 iup.SBDN = IUP_SBDN
+IUP_SBPGUP = 2 iup.SBPGUP = IUP_SBPGUP
+IUP_SBPGDN = 3 iup.SBPGDN = IUP_SBPGDN
+IUP_SBPOSV = 4 iup.SBPOSV = IUP_SBPOSV
+IUP_SBDRAGV = 5 iup.SBDRAGV = IUP_SBDRAGV
+IUP_SBLEFT = 6 iup.SBLEFT = IUP_SBLEFT
+IUP_SBRIGHT = 7 iup.SBRIGHT = IUP_SBRIGHT
+IUP_SBPGLEFT = 8 iup.SBPGLEFT = IUP_SBPGLEFT
+IUP_SBPGRIGHT = 9 iup.SBPGRIGHT = IUP_SBPGRIGHT
+IUP_SBPOSH = 10 iup.SBPOSH = IUP_SBPOSH
+IUP_SBDRAGH = 11 iup.SBDRAGH = IUP_SBDRAGH
+
+IUP_SHOW = 0 iup.SHOW = IUP_SHOW
+IUP_RESTORE = 1 iup.RESTORE = IUP_RESTORE
+IUP_MINIMIZE = 2 iup.MINIMIZE = IUP_MINIMIZE
+IUP_MAXIMIZE = 3 iup.MAXIMIZE = IUP_MAXIMIZE
+IUP_HIDE = 4 iup.HIDE = IUP_HIDE
+
+RED = IupRGB(1, 0, 0) iup.RED = RED
+GREEN = IupRGB(0, 1, 0) iup.GREEN = GREEN
+BLUE = IupRGB(0, 0, 1) iup.BLUE = BLUE
+BLACK = IupRGB(0, 0, 0) iup.BLACK = BLACK
+WHITE = IupRGB(1, 1, 1) iup.WHITE = WHITE
+YELLOW = IupRGB(1, 1, 0) iup.YELLOW = YELLOW
+
+IUP_ON = "ON" iup.ON = IUP_ON
+IUP_OFF = "OFF" iup.OFF = IUP_OFF
+IUP_YES = "YES" iup.YES = IUP_YES
+IUP_NO = "NO" iup.NO = IUP_NO
+IUP_APPEND = "APPEND" iup.APPEND = IUP_APPEND
+IUP_VERTICAL = "VERTICAL" iup.VERTICAL = IUP_VERTICAL
+IUP_HORIZONTAL ="HORIZONTAL" iup.HORIZONTAL =IUP_HORIZONTAL
+
+IUP_ACENTER = "ACENTER" iup.ACENTER = IUP_ACENTER
+IUP_ALEFT = "ALEFT" iup.ALEFT = IUP_ALEFT
+IUP_ARIGHT = "ARIGHT" iup.ARIGHT = IUP_ARIGHT
+IUP_ATOP = "ATOP" iup.ATOP = IUP_ATOP
+IUP_ABOTTOM = "ABOTTOM" iup.ABOTTOM = IUP_ABOTTOM
+
+IUP_NORTH = "NORTH" iup.NORTH = IUP_NORTH
+IUP_SOUTH = "SOUTH" iup.SOUTH = IUP_SOUTH
+IUP_WEST = "WEST" iup.WEST = IUP_WEST
+IUP_EAST = "EAST" iup.EAST = IUP_EAST
+IUP_NE = "NE" iup.NE = IUP_NE
+IUP_SE = "SE" iup.SE = IUP_SE
+IUP_NW = "NW" iup.NW = IUP_NW
+IUP_SW = "SW" iup.SW = IUP_SW
+
+IUP_FULL = "FULL" iup.FULL = IUP_FULL
+IUP_HALF = "HALF" iup.HALF = IUP_HALF
+IUP_THIRD = "THIRD" iup.THIRD = IUP_THIRD
+IUP_QUARTER = "QUARTER" iup.QUARTER = IUP_QUARTER
+IUP_EIGHTH = "EIGHTH" iup.EIGHTH = IUP_EIGHTH
+
+IUP_ARROW = "ARROW" iup.ARROW = IUP_ARROW
+IUP_BUSY = "BUSY" iup.BUSY = IUP_BUSY
+IUP_RESIZE_N = "RESIZE_N" iup.RESIZE_N = IUP_RESIZE_N
+IUP_RESIZE_S = "RESIZE_S" iup.RESIZE_S = IUP_RESIZE_S
+IUP_RESIZE_E = "RESIZE_E" iup.RESIZE_E = IUP_RESIZE_E
+IUP_RESIZE_W = "RESIZE_W" iup.RESIZE_W = IUP_RESIZE_W
+IUP_RESIZE_NE = "RESIZE_NE" iup.RESIZE_NE = IUP_RESIZE_NE
+IUP_RESIZE_NW = "RESIZE_NW" iup.RESIZE_NW = IUP_RESIZE_NW
+IUP_RESIZE_SE = "RESIZE_SE" iup.RESIZE_SE = IUP_RESIZE_SE
+IUP_RESIZE_SW = "RESIZE_SW" iup.RESIZE_SW = IUP_RESIZE_SW
+IUP_MOVE = "MOVE" iup.MOVE = IUP_MOVE
+IUP_HAND = "HAND" iup.HAND = IUP_HAND
+IUP_NONE = "NONE" iup.NONE = IUP_NONE
+IUP_IUP = "IUP" iup.IUP = IUP_IUP
+IUP_CROSS = "CROSS" iup.CROSS = IUP_CROSS
+IUP_PEN = "PEN" iup.PEN = IUP_PEN
+IUP_TEXT = "TEXT" iup.TEXT = IUP_TEXT
+IUP_RESIZE_C = "RESIZE_C" iup.RESIZE_C = IUP_RESIZE_C
+IUP_OPENHAND = "OPENHAND" iup.OPENHAND = IUP_OPENHAND
+
+IUP_HELVETICA_NORMAL_8 = "HELVETICA_NORMAL_8" iup.HELVETICA_NORMAL_8 = IUP_HELVETICA_NORMAL_8
+IUP_HELVETICA_ITALIC_8 = "HELVETICA_ITALIC_8" iup.HELVETICA_ITALIC_8 = IUP_HELVETICA_ITALIC_8
+IUP_HELVETICA_BOLD_8 = "HELVETICA_BOLD_8" iup.HELVETICA_BOLD_8 = IUP_HELVETICA_BOLD_8
+IUP_HELVETICA_NORMAL_10 = "HELVETICA_NORMAL_10" iup.HELVETICA_NORMAL_10 = IUP_HELVETICA_NORMAL_10
+IUP_HELVETICA_ITALIC_10 = "HELVETICA_ITALIC_10" iup.HELVETICA_ITALIC_10 = IUP_HELVETICA_ITALIC_10
+IUP_HELVETICA_BOLD_10 = "HELVETICA_BOLD_10" iup.HELVETICA_BOLD_10 = IUP_HELVETICA_BOLD_10
+IUP_HELVETICA_NORMAL_12 = "HELVETICA_NORMAL_12" iup.HELVETICA_NORMAL_12 = IUP_HELVETICA_NORMAL_12
+IUP_HELVETICA_ITALIC_12 = "HELVETICA_ITALIC_12" iup.HELVETICA_ITALIC_12 = IUP_HELVETICA_ITALIC_12
+IUP_HELVETICA_BOLD_12 = "HELVETICA_BOLD_12" iup.HELVETICA_BOLD_12 = IUP_HELVETICA_BOLD_12
+IUP_HELVETICA_NORMAL_14 = "HELVETICA_NORMAL_14" iup.HELVETICA_NORMAL_14 = IUP_HELVETICA_NORMAL_14
+IUP_HELVETICA_ITALIC_14 = "HELVETICA_ITALIC_14" iup.HELVETICA_ITALIC_14 = IUP_HELVETICA_ITALIC_14
+IUP_HELVETICA_BOLD_14 = "HELVETICA_BOLD_14" iup.HELVETICA_BOLD_14 = IUP_HELVETICA_BOLD_14
+IUP_COURIER_NORMAL_8 = "COURIER_NORMAL_8" iup.COURIER_NORMAL_8 = IUP_COURIER_NORMAL_8
+IUP_COURIER_ITALIC_8 = "COURIER_ITALIC_8" iup.COURIER_ITALIC_8 = IUP_COURIER_ITALIC_8
+IUP_COURIER_BOLD_8 = "COURIER_BOLD_8" iup.COURIER_BOLD_8 = IUP_COURIER_BOLD_8
+IUP_COURIER_NORMAL_10 = "COURIER_NORMAL_10" iup.COURIER_NORMAL_10 = IUP_COURIER_NORMAL_10
+IUP_COURIER_ITALIC_10 = "COURIER_ITALIC_10" iup.COURIER_ITALIC_10 = IUP_COURIER_ITALIC_10
+IUP_COURIER_BOLD_10 = "COURIER_BOLD_10" iup.COURIER_BOLD_10 = IUP_COURIER_BOLD_10
+IUP_COURIER_NORMAL_12 = "COURIER_NORMAL_12" iup.COURIER_NORMAL_12 = IUP_COURIER_NORMAL_12
+IUP_COURIER_ITALIC_12 = "COURIER_ITALIC_12" iup.COURIER_ITALIC_12 = IUP_COURIER_ITALIC_12
+IUP_COURIER_BOLD_12 = "COURIER_BOLD_12" iup.COURIER_BOLD_12 = IUP_COURIER_BOLD_12
+IUP_COURIER_NORMAL_14 = "COURIER_NORMAL_14" iup.COURIER_NORMAL_14 = IUP_COURIER_NORMAL_14
+IUP_COURIER_ITALIC_14 = "COURIER_ITALIC_14" iup.COURIER_ITALIC_14 = IUP_COURIER_ITALIC_14
+IUP_COURIER_BOLD_14 = "COURIER_BOLD_14" iup.COURIER_BOLD_14 = IUP_COURIER_BOLD_14
+IUP_TIMES_NORMAL_8 = "TIMES_NORMAL_8" iup.TIMES_NORMAL_8 = IUP_TIMES_NORMAL_8
+IUP_TIMES_ITALIC_8 = "TIMES_ITALIC_8" iup.TIMES_ITALIC_8 = IUP_TIMES_ITALIC_8
+IUP_TIMES_BOLD_8 = "TIMES_BOLD_8" iup.TIMES_BOLD_8 = IUP_TIMES_BOLD_8
+IUP_TIMES_NORMAL_10 = "TIMES_NORMAL_10" iup.TIMES_NORMAL_10 = IUP_TIMES_NORMAL_10
+IUP_TIMES_ITALIC_10 = "TIMES_ITALIC_10" iup.TIMES_ITALIC_10 = IUP_TIMES_ITALIC_10
+IUP_TIMES_BOLD_10 = "TIMES_BOLD_10" iup.TIMES_BOLD_10 = IUP_TIMES_BOLD_10
+IUP_TIMES_NORMAL_12 = "TIMES_NORMAL_12" iup.TIMES_NORMAL_12 = IUP_TIMES_NORMAL_12
+IUP_TIMES_ITALIC_12 = "TIMES_ITALIC_12" iup.TIMES_ITALIC_12 = IUP_TIMES_ITALIC_12
+IUP_TIMES_BOLD_12 = "TIMES_BOLD_12" iup.TIMES_BOLD_12 = IUP_TIMES_BOLD_12
+IUP_TIMES_NORMAL_14 = "TIMES_NORMAL_14" iup.TIMES_NORMAL_14 = IUP_TIMES_NORMAL_14
+IUP_TIMES_ITALIC_14 = "TIMES_ITALIC_14" iup.TIMES_ITALIC_14 = IUP_TIMES_ITALIC_14
+IUP_TIMES_BOLD_14 = "TIMES_BOLD_14" iup.TIMES_BOLD_14 = IUP_TIMES_BOLD_14
+
+iup.MASK_FLOAT = "[+/-]?(/d+/.?/d*|/./d+)"
+iup.MASK_UFLOAT = "(/d+/.?/d*|/./d+)"
+iup.MASK_EFLOAT = "[+/-]?(/d+/.?/d*|/./d+)([eE][+/-]?/d+)?"
+iup.MASK_INT = "[+/-]?/d+"
+iup.MASK_UINT = "/d+"
diff --git a/iup/srclua3/dial.lua b/iup/srclua3/dial.lua
new file mode 100755
index 0000000..ee2c488
--- /dev/null
+++ b/iup/srclua3/dial.lua
@@ -0,0 +1,15 @@
+IUPDIAL = {parent = WIDGET}
+
+function IUPDIAL:CreateIUPelement (obj)
+ return iupCreateDial (obj[1])
+end
+
+function iupdial (o)
+ return IUPDIAL:Constructor (o)
+end
+iup.dial = iupdial
+
+iup_callbacks.mousemove.dial = iup_val_mousemove_cb -- same callback at IupVal
+
+-- iup_callbacks.buttonpress = {"BUTTON_PRESS_CB", iup_val_button_press_cb} -- same callback at IupVal
+-- iup_callbacks.buttonrelease = {"BUTTON_RELEASE_CB", iup_val_button_release_cb} -- same callback at IupVal
diff --git a/iup/srclua3/gauge.lua b/iup/srclua3/gauge.lua
new file mode 100755
index 0000000..3fd886f
--- /dev/null
+++ b/iup/srclua3/gauge.lua
@@ -0,0 +1,10 @@
+IUPGAUGE = {parent = WIDGET}
+
+function IUPGAUGE:CreateIUPelement (obj)
+ return iupCreateGauge ()
+end
+
+function iupgauge (o)
+ return IUPGAUGE:Constructor (o)
+end
+iup.gauge = iupgauge
diff --git a/iup/srclua3/il.h b/iup/srclua3/il.h
new file mode 100755
index 0000000..406ccc4
--- /dev/null
+++ b/iup/srclua3/il.h
@@ -0,0 +1,81 @@
+/** \file
+ * \brief iupLua internal declarations
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IL_H
+#define __IL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int iupluaapi_open(void);
+int iupluawidgets_open(int tag);
+
+int sboxlua_open(void);
+int spinlua_open(void);
+int cboxlua_open(void);
+int gclua_open (void);
+int vallua_open (void);
+int tabslua_open (void);
+int treelua_open (void);
+
+void iupluaScanf(void);
+void getparamlua_open (void);
+
+/** First function called inside a callback.
+ * It prepares the stack for the call and returns the Lua state.
+ */
+void iuplua_call_start(Ihandle* handle, char* name);
+
+/** Called when a callback in Lua should be called.
+ * Returns the callback return value. If nil returns IUP_DEFAULT.
+ * At the end clears the Lua stack.
+ */
+int iuplua_call(void);
+
+/** Same as /ref iuplua_call, but returns a string.
+ */
+char* iuplua_call_rs(void);
+
+/** Register a function.
+ */
+void iuplua_register(char* name, lua_CFunction func);
+
+/** Register a function. But consider no prefix.
+ */
+void iuplua_register_macro(char* name, lua_CFunction func);
+
+/** Register a number.
+ */
+void iuplua_regnumber(double num, char* name);
+
+/** Register a string.
+ */
+void iuplua_regstring(char* str, char* name);
+
+/** Register a string, but consider only 3 character as prefix.
+ */
+void iuplua_regstring_mask(char* str, char* name);
+
+/** Returns an array of ihandle stored in a Lua table.
+ */
+Ihandle** iuplua_checkihandle_array(int numArg);
+
+/** Pushes an ihandle inside a callback.
+ * If ihandle is from C must call iuplua_regihandle before iuplua_call_start.
+ */
+void iuplua_pushihandle_cb(Ihandle *n);
+
+/** Register an ihandle created in C in Lua.
+ */
+void iuplua_regihandle(Ihandle *n);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srclua3/il_cbox.c b/iup/srclua3/il_cbox.c
new file mode 100755
index 0000000..9dc388d
--- /dev/null
+++ b/iup/srclua3/il_cbox.c
@@ -0,0 +1,36 @@
+/** \file
+ * \brief Bindig of iupcbox to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+#include <stdlib.h>
+
+#include <lua.h>
+
+#include "iup.h"
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+static void CreateCbox(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ Ihandle** params = iuplua_checkihandle_array(1);
+ lua_pushusertag(IupCboxv(params),tag);
+ free(params);
+}
+
+int cboxlua_open (void)
+{
+ lua_register("iupCreateCbox",CreateCbox);
+
+ return lua_dostring("IUPCBOX = {parent = IUPCANVAS}\n"
+ "function IUPCBOX:CreateIUPelement (obj)\n"
+ " return iupCreateCbox (obj, getn(obj))\n"
+ "end\n"
+ "function iupcbox (o)\n"
+ " return IUPCBOX:Constructor (o)\n"
+ "end\n"
+ "iup.cbox = iupcbox\n");
+}
diff --git a/iup/srclua3/il_cells.c b/iup/srclua3/il_cells.c
new file mode 100755
index 0000000..92969f8
--- /dev/null
+++ b/iup/srclua3/il_cells.c
@@ -0,0 +1,150 @@
+/** \file
+ * \brief Bindig of IupCells to Lua 3.
+ * @author Andrι Luiz Clinio.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+#include <lua.h>
+
+#include "iuplua.h"
+
+#include "il.h"
+#include "il_controls.h"
+
+
+static int luacells_mouseclick_cb( Ihandle* handle, int b, int m,
+ int i, int j, int x, int y, char* r )
+{
+ iuplua_call_start(handle, "mouseclick");
+ lua_pushnumber(b);
+ lua_pushnumber(m);
+ lua_pushnumber(i);
+ lua_pushnumber(j);
+ lua_pushnumber(x);
+ lua_pushnumber(y);
+ lua_pushstring(r);
+ return iuplua_call();
+}
+
+static int luacells_mousemotion_cb( Ihandle* handle, int i, int j,
+ int x, int y, char* r )
+{
+ iuplua_call_start(handle, "mousemotion");
+ lua_pushnumber(i);
+ lua_pushnumber(j);
+ lua_pushnumber(x);
+ lua_pushnumber(y);
+ lua_pushstring(r);
+ return iuplua_call();
+}
+
+static int luacells_width_cb( Ihandle* handle, int col )
+{
+ iuplua_call_start(handle, "width");
+ lua_pushnumber(col);
+ return iuplua_call();
+}
+
+static int luacells_height_cb( Ihandle* handle, int line )
+{
+ iuplua_call_start(handle, "height");
+ lua_pushnumber(line);
+ return iuplua_call();
+}
+
+static int luacells_nlines_cb( Ihandle* handle )
+{
+ iuplua_call_start(handle, "nlines");
+ return iuplua_call();
+}
+
+static int luacells_ncols_cb( Ihandle* handle )
+{
+ iuplua_call_start(handle, "ncols");
+ return iuplua_call();
+}
+
+static int luacells_hspan_cb( Ihandle* handle, int i, int j )
+{
+ iuplua_call_start(handle, "hspan");
+ lua_pushnumber(i);
+ lua_pushnumber(j);
+ return iuplua_call();
+}
+
+static int luacells_vspan_cb( Ihandle* handle, int i, int j )
+{
+ iuplua_call_start(handle, "vspan");
+ lua_pushnumber(i);
+ lua_pushnumber(j);
+ return iuplua_call();
+}
+
+static int luacells_scrolling_cb( Ihandle* handle, int fline, int fcol )
+{
+ iuplua_call_start(handle, "scrolling");
+ lua_pushnumber(fline);
+ lua_pushnumber(fcol);
+ return iuplua_call();
+}
+
+static void createCells(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupCells(), tag);
+}
+
+int cellslua_open(void)
+{
+ int i;
+ struct TypeAssocList {
+ char *name;
+ lua_CFunction func;
+ } assoc_list [] = {
+ {"iup_cells_mouseclick_cb", (lua_CFunction) luacells_mouseclick_cb },
+ {"iup_cells_mousemotion_cb", (lua_CFunction) luacells_mousemotion_cb },
+ {"iup_cells_width_cb", (lua_CFunction) luacells_width_cb },
+ {"iup_cells_height_cb", (lua_CFunction) luacells_height_cb },
+ {"iup_cells_nlines_cb", (lua_CFunction) luacells_nlines_cb },
+ {"iup_cells_ncols_cb", (lua_CFunction) luacells_ncols_cb },
+ {"iup_cells_hspan_cb", (lua_CFunction) luacells_hspan_cb },
+ {"iup_cells_vspan_cb", (lua_CFunction) luacells_vspan_cb },
+ {"iup_cells_scrolling_cb", (lua_CFunction) luacells_scrolling_cb }
+ };
+ int assoc_list_size = (sizeof(assoc_list)/sizeof(struct TypeAssocList));
+
+ lua_register("iupCreateCells", createCells);
+
+ for( i = 0; i < assoc_list_size; i++ )
+ lua_register(assoc_list[i].name, assoc_list[i].func);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/cells_be64.loh"
+#else
+#include "loh/cells_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/cells_le64w.loh"
+#else
+#include "loh/cells_le64.loh"
+#endif
+#else
+#include "loh/cells.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("luacells.lua");
+#endif
+
+ return 1;
+}
diff --git a/iup/srclua3/il_colorbar.c b/iup/srclua3/il_colorbar.c
new file mode 100755
index 0000000..28c912e
--- /dev/null
+++ b/iup/srclua3/il_colorbar.c
@@ -0,0 +1,97 @@
+/** \file
+ * \brief Bindig of iupcb to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+#include <lua.h>
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+static char* COLORBAR_cell_cb(Ihandle *handle, int cell)
+{
+ iuplua_call_start(handle, "cellcb");
+ lua_pushnumber(cell);
+ return iuplua_call_rs();
+}
+
+static int COLORBAR_select_cb(Ihandle *handle, int cell, int type)
+{
+ iuplua_call_start(handle, "selectcb");
+ lua_pushnumber(cell);
+ lua_pushnumber(type);
+ return iuplua_call();
+}
+
+static int COLORBAR_switch_cb(Ihandle *handle, int prim_cell, int sec_cell)
+{
+ iuplua_call_start(handle, "switchcb");
+ lua_pushnumber(prim_cell);
+ lua_pushnumber(sec_cell);
+ return iuplua_call();
+}
+
+static int COLORBAR_extended_cb(Ihandle *handle, int cell)
+{
+ iuplua_call_start(handle, "extendedcb");
+ lua_pushnumber(cell);
+ return iuplua_call();
+}
+
+static void CreateColorbar(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupColorbar(), tag);
+}
+
+int colorbarlua_open(void)
+{
+ struct AssocList {
+ char *name;
+ lua_CFunction func;
+ } COLORBARAssocList [] = {
+ {"iup_colorbar_cell_cb", (lua_CFunction)COLORBAR_cell_cb},
+ {"iup_colorbar_select_cb", (lua_CFunction)COLORBAR_select_cb},
+ {"iup_colorbar_switch_cb", (lua_CFunction)COLORBAR_switch_cb},
+ {"iup_colorbar_extended_cb", (lua_CFunction)COLORBAR_extended_cb}
+ };
+ int SizeCOLORBARAssocList = (sizeof(COLORBARAssocList)/sizeof(struct AssocList));
+ int i;
+
+ lua_register("iupCreateColorbar", CreateColorbar);
+
+ for (i = 0; i < SizeCOLORBARAssocList; i++)
+ lua_register(COLORBARAssocList[i].name, COLORBARAssocList[i].func);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/colorbar_be64.loh"
+#else
+#include "loh/colorbar_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/colorbar_le64w.loh"
+#else
+#include "loh/colorbar_le64.loh"
+#endif
+#else
+#include "loh/colorbar.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("luacolorbar.lua");
+#endif
+
+ return 1;
+}
diff --git a/iup/srclua3/il_colorbrowser.c b/iup/srclua3/il_colorbrowser.c
new file mode 100755
index 0000000..9415244
--- /dev/null
+++ b/iup/srclua3/il_colorbrowser.c
@@ -0,0 +1,72 @@
+/** \file
+ * \brief Bindig of iupcb to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include <lua.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+static int CB_drag(Ihandle *handle, unsigned char r, unsigned char g, unsigned char b)
+{
+ iuplua_call_start(handle, "drag");
+ lua_pushnumber(r);
+ lua_pushnumber(g);
+ lua_pushnumber(b);
+ return iuplua_call();
+}
+
+static int CB_change(Ihandle *handle, unsigned char r, unsigned char g, unsigned char b)
+{
+ iuplua_call_start(handle, "change");
+ lua_pushnumber(r);
+ lua_pushnumber(g);
+ lua_pushnumber(b);
+ return iuplua_call();
+}
+
+static void CreateColorBrowser(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupColorBrowser(), tag);
+}
+
+int cblua_open(void)
+{
+ lua_register("iupCreateColorBrowser", CreateColorBrowser);
+ lua_register("iup_colorbrowser_drag_cb", (lua_CFunction)CB_drag);
+ lua_register("iup_colorbrowser_change_cb", (lua_CFunction)CB_change);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/colorbrowser_be64.loh"
+#else
+#include "loh/colorbrowser_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/colorbrowser_le64w.loh"
+#else
+#include "loh/colorbrowser_le64.loh"
+#endif
+#else
+#include "loh/colorbrowser.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("luacb.lua");
+#endif
+
+ return 1;
+}
diff --git a/iup/srclua3/il_controls.h b/iup/srclua3/il_controls.h
new file mode 100755
index 0000000..813ed58
--- /dev/null
+++ b/iup/srclua3/il_controls.h
@@ -0,0 +1,26 @@
+/** \file
+ * \brief iupLua Controls initialization
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IL_CONTROLS_H
+#define __IL_CONTROLS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int diallua_open (void);
+int gaugelua_open (void);
+int masklua_open (void);
+int matrixlua_open (void);
+int cblua_open (void);
+int colorbarlua_open (void);
+int cellslua_open(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srclua3/il_dial.c b/iup/srclua3/il_dial.c
new file mode 100755
index 0000000..60582e6
--- /dev/null
+++ b/iup/srclua3/il_dial.c
@@ -0,0 +1,53 @@
+/** \file
+ * \brief Bindig of iupdial to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+static void CreateDial(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupDial(luaL_check_string(1)), tag);
+}
+
+int diallua_open(void)
+{
+ lua_register("iupCreateDial", CreateDial);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/dial_be64.loh"
+#else
+#include "loh/dial_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/dial_le64w.loh"
+#else
+#include "loh/dial_le64.loh"
+#endif
+#else
+#include "loh/dial.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("luadial.lua");
+#endif
+
+ return 1;
+}
diff --git a/iup/srclua3/il_gauge.c b/iup/srclua3/il_gauge.c
new file mode 100755
index 0000000..670bb96
--- /dev/null
+++ b/iup/srclua3/il_gauge.c
@@ -0,0 +1,52 @@
+/** \file
+ * \brief Bindig of iupgauge to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+#include <lua.h>
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+static void CreateGauge(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupGauge(), tag);
+}
+
+int gaugelua_open(void)
+{
+ lua_register("iupCreateGauge", CreateGauge);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/gauge_be64.loh"
+#else
+#include "loh/gauge_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/gauge_le64w.loh"
+#else
+#include "loh/gauge_le64.loh"
+#endif
+#else
+#include "loh/gauge.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("luagauge.lua");
+#endif
+
+ return 1;
+}
diff --git a/iup/srclua3/il_getcolor.c b/iup/srclua3/il_getcolor.c
new file mode 100755
index 0000000..96ef20d
--- /dev/null
+++ b/iup/srclua3/il_getcolor.c
@@ -0,0 +1,42 @@
+/** \file
+ * \brief Bindig of iupgc to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+static void GetColor(void)
+{
+ int x = luaL_check_int(1);
+ int y = luaL_check_int(2);
+ unsigned char r = (unsigned char)luaL_check_int(3);
+ unsigned char g = (unsigned char)luaL_check_int(4);
+ unsigned char b = (unsigned char)luaL_check_int(5);
+
+ if (IupGetColor(x, y, &r, &g, &b ))
+ {
+ lua_pushnumber(r);
+ lua_pushnumber(g);
+ lua_pushnumber(b);
+ }
+ else
+ {
+ lua_pushnil();
+ }
+}
+
+int gclua_open(void)
+{
+ iuplua_register("IupGetColor", GetColor);
+ return 1;
+}
diff --git a/iup/srclua3/il_getparam.c b/iup/srclua3/il_getparam.c
new file mode 100755
index 0000000..28a41be
--- /dev/null
+++ b/iup/srclua3/il_getparam.c
@@ -0,0 +1,171 @@
+/** \file
+ * \brief Bindig of iupgetparam to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+/* Used only by the Lua binding */
+int iupGetParamCount(const char *format, int *param_extra);
+char iupGetParamType(const char* format, int *line_size);
+
+
+typedef struct _getparam_data
+{
+ int has_func;
+ int func_ref;
+}getparam_data;
+
+static int param_action(Ihandle* dialog, int param_index, void* user_data)
+{
+ int ret = 1;
+ getparam_data* gp = (getparam_data*)user_data;
+ if (gp->has_func)
+ {
+ lua_Object func;
+ lua_beginblock();
+ func = lua_getref(gp->func_ref);
+ iuplua_pushihandle(dialog);
+ lua_pushnumber(param_index);
+ lua_callfunction(func);
+ ret = (int)luaL_check_number(1);
+ lua_endblock();
+ }
+ return ret;
+}
+
+static void GetParam(void)
+{
+ getparam_data gp;
+ lua_Object func;
+ const char* title = luaL_check_string(1);
+ void* user_data = (void*)&gp;
+ const char* format = luaL_check_string(3);
+ int param_count, param_extra, i, size, ret,
+ line_size = 0, lua_param_start = 4;
+ const char* f = format;
+ const char* s;
+ void* param_data[50];
+ char param_type[50];
+
+ gp.has_func = 0;
+ gp.func_ref = 0;
+
+ memset(param_data, 0, sizeof(void*)*50);
+ memset(param_type, 0, sizeof(char)*50);
+
+ param_count = iupGetParamCount(format, &param_extra);
+
+ for (i = 0; i < param_count; i++)
+ {
+ char t = iupGetParamType(f, &line_size);
+
+ if (t == 't') /* if separator */
+ {
+ f += line_size;
+ i--; /* compensate next increment */
+ continue;
+ }
+
+ switch(t)
+ {
+ case 'b':
+ case 'i':
+ case 'l':
+ param_data[i] = malloc(sizeof(int));
+ *(int*)(param_data[i]) = (int)luaL_check_number(lua_param_start); lua_param_start++;
+ break;
+ case 'a':
+ case 'r':
+ param_data[i] = malloc(sizeof(float));
+ *(float*)(param_data[i]) = (float)luaL_check_number(lua_param_start); lua_param_start++;
+ break;
+ case 's':
+ case 'm':
+ s = luaL_check_string(lua_param_start); lua_param_start++;
+ size = strlen(s);
+ if (size < 512)
+ param_data[i] = malloc(512);
+ else
+ param_data[i] = malloc(2*size);
+ memcpy(param_data[i], s, size+1);
+ break;
+ }
+
+ param_type[i] = t;
+ f += line_size;
+ }
+
+ func = lua_getparam(2);
+ if (lua_isfunction(func))
+ {
+ lua_pushobject(func);
+ gp.func_ref = lua_ref(1);
+ gp.has_func = 1;
+ }
+
+ ret = IupGetParamv(title, param_action, user_data, format, param_count, param_extra, param_data);
+
+ lua_pushnumber(ret);
+
+ if (ret)
+ {
+ for (i = 0; i < param_count; i++)
+ {
+ switch(param_type[i])
+ {
+ case 'b':
+ case 'i':
+ case 'l':
+ lua_pushnumber(*(int*)(param_data[i]));
+ break;
+ case 'a':
+ case 'r':
+ lua_pushnumber(*(float*)(param_data[i]));
+ break;
+ case 's':
+ case 'm':
+ lua_pushstring((char*)(param_data[i]));
+ break;
+ }
+ }
+ }
+
+ for (i = 0; i < param_count; i++)
+ {
+ free(param_data[i]);
+ }
+
+ if (gp.has_func)
+ lua_unref(gp.func_ref);
+}
+
+static void GetParamParam(void)
+{
+ Ihandle* param;
+ Ihandle *dialog = iuplua_checkihandle(1);
+ int param_index = luaL_check_int(2);
+ char param_str[50];
+ sprintf(param_str, "PARAM%d", param_index);
+ param = (Ihandle*)IupGetAttribute(dialog, param_str);
+ iuplua_pushihandle(param);
+}
+
+void getparamlua_open(void)
+{
+ iuplua_register("IupGetParam", GetParam);
+ iuplua_register("IupGetParamParam", GetParamParam);
+}
diff --git a/iup/srclua3/il_mask.c b/iup/srclua3/il_mask.c
new file mode 100755
index 0000000..7f44090
--- /dev/null
+++ b/iup/srclua3/il_mask.c
@@ -0,0 +1,138 @@
+/** \file
+ * \brief Bindig of iupmask to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupmask.h"
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+static void cfMaskSet (void)
+{
+ iupmaskSet(iuplua_checkihandle(1),
+ luaL_check_string(2),
+ luaL_check_int(3),
+ luaL_check_int(4));
+}
+
+static void cfMaskRemove (void)
+{
+ iupmaskRemove(iuplua_checkihandle(1));
+}
+
+static void cfMaskMatSet(void)
+{
+ iupmaskMatSet(iuplua_checkihandle(1),
+ luaL_check_string(2),
+ luaL_check_int(3),
+ luaL_check_int(4),
+ luaL_check_int(5),
+ luaL_check_int(6));
+
+}
+
+static void cfMaskMatRemove(void)
+{
+ iupmaskMatRemove(iuplua_checkihandle(1),
+ luaL_check_int(2),
+ luaL_check_int(3));
+
+}
+
+static void cfMaskSetInt(void)
+{
+ iupmaskSetInt(iuplua_checkihandle(1),
+ luaL_check_int(2),
+ luaL_check_int(3),
+ luaL_check_int(4));
+
+}
+
+static void cfMaskSetFloat(void)
+{
+ iupmaskSetFloat(iuplua_checkihandle(1),
+ luaL_check_int(2),
+ (float)luaL_check_number(3),
+ (float)luaL_check_number(4));
+
+
+}
+
+static void cfMaskMatSetInt (void)
+{
+ iupmaskMatSetInt(iuplua_checkihandle(1),
+ luaL_check_int(2),
+ luaL_check_int(3),
+ luaL_check_int(4),
+ luaL_check_int(5),
+ luaL_check_int(6));
+
+}
+
+static void cfMaskMatSetFloat (void)
+{
+ iupmaskMatSetFloat(iuplua_checkihandle(1),
+ luaL_check_int(2),
+ (float)luaL_check_number(3),
+ (float)luaL_check_number(4),
+ luaL_check_int(5),
+ luaL_check_int(6));
+}
+
+static void cfMaskCheck (void)
+{
+ iupmaskCheck(iuplua_checkihandle(1));
+}
+
+static void cfMaskMatCheck (void)
+{
+ iupmaskMatCheck(iuplua_checkihandle(1),
+ luaL_check_int(2),
+ luaL_check_int(3));
+}
+
+static int match_cb (Ihandle *handle)
+{
+ iuplua_call_start(handle, "match_cb");
+ return iuplua_call();
+}
+
+
+int masklua_open(void)
+{
+ iuplua_regstring_mask(IUP_MASK_FLOAT, "IUPMASK_FLOAT");
+ iuplua_regstring_mask(IUP_MASK_UFLOAT, "IUPMASK_UFLOAT");
+ iuplua_regstring_mask(IUP_MASK_EFLOAT, "IUPMASK_EFLOAT");
+ iuplua_regstring_mask(IUP_MASK_INT, "IUPMASK_INT");
+ iuplua_regstring_mask(IUP_MASK_UINT, "IUPMASK_UINT");
+ iuplua_regstring(IUP_MASK_FLOAT, "IUP_MASK_FLOAT");
+ iuplua_regstring(IUP_MASK_UFLOAT, "IUP_MASK_UFLOAT");
+ iuplua_regstring(IUP_MASK_EFLOAT, "IUP_MASK_EFLOAT");
+ iuplua_regstring(IUP_MASK_INT, "IUP_MASK_INT");
+ iuplua_regstring(IUP_MASK_UINT, "IUP_MASK_UINT");
+
+ iuplua_register("iupmaskRemove", cfMaskRemove);
+ iuplua_register("iupmaskMatRemove", cfMaskMatRemove);
+ iuplua_register("iupmaskSet", cfMaskSet);
+ iuplua_register("iupmaskMatSet", cfMaskMatSet);
+ iuplua_register("iupmaskSetInt", cfMaskSetInt);
+ iuplua_register("iupmaskSetFloat", cfMaskSetFloat);
+ iuplua_register("iupmaskMatSetInt", cfMaskMatSetInt);
+ iuplua_register("iupmaskMatSetFloat", cfMaskMatSetFloat);
+ iuplua_register("iupmaskCheck", cfMaskCheck);
+ iuplua_register("iupmaskMatCheck", cfMaskMatCheck);
+
+ lua_register("iup_match_cb", (lua_CFunction)match_cb);
+
+ return lua_dostring("iup_callbacks.match_cb = {\"MATCH_CB\", iup_match_cb}");
+}
diff --git a/iup/srclua3/il_matrix.c b/iup/srclua3/il_matrix.c
new file mode 100755
index 0000000..21bb8ce
--- /dev/null
+++ b/iup/srclua3/il_matrix.c
@@ -0,0 +1,308 @@
+/** \file
+ * \brief Bindig of iupmatrix to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+#include <cd.h>
+
+#include <lua.h>
+
+#include <cdlua.h>
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+static int MATRIX_draw(Ihandle *handle, int lin, int col,
+ int x1, int x2, int y1, int y2, cdCanvas* cnv)
+{
+ iuplua_call_start(handle, "draw");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ lua_pushnumber(x1);
+ lua_pushnumber(x2);
+ lua_pushnumber(y1);
+ lua_pushnumber(y2);
+ cdlua_pushcanvas(cnv);
+ return iuplua_call();
+}
+
+static int MATRIX_action (Ihandle *handle, int c, int lin, int col, int active, char *after)
+{
+ iuplua_call_start(handle, "action");
+ lua_pushnumber(c);
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ lua_pushnumber(active);
+ lua_pushstring(after);
+ return iuplua_call();
+}
+
+static int MATRIX_edition (Ihandle *handle, int lin, int col, int modo, int update)
+{
+ iuplua_call_start(handle, "edition");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ lua_pushnumber(modo);
+ lua_pushnumber(update);
+ return iuplua_call();
+}
+
+static int MATRIX_dropcheck (Ihandle *handle, int lin, int col)
+{
+ iuplua_call_start(handle, "dropcheck");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ return iuplua_call();
+}
+
+static int MATRIX_markedit_cb (Ihandle *handle, int lin, int col, int marked)
+{
+ iuplua_call_start(handle, "markedit_cb");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ lua_pushnumber(marked);
+ return iuplua_call();
+}
+
+static int MATRIX_mark_cb (Ihandle *handle, int lin, int col)
+{
+ iuplua_call_start(handle, "mark_cb");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ return iuplua_call();
+}
+
+static int MATRIX_drop (Ihandle *handle, Ihandle *drop, int lin, int col)
+{
+ iuplua_regihandle(drop);
+ iuplua_call_start(handle, "drop");
+ iuplua_pushihandle_cb(drop);
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ return iuplua_call();
+}
+
+static int MATRIX_dropselect (Ihandle *handle, int lin, int col,
+ Ihandle *list, char *t, int i, int v)
+{
+ iuplua_regihandle(list);
+ iuplua_call_start(handle, "dropselect");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ iuplua_pushihandle_cb(list);
+ lua_pushstring(t);
+ lua_pushnumber(i);
+ lua_pushnumber(v);
+ return iuplua_call();
+}
+
+static int MATRIX_enteritem (Ihandle *handle, int lin, int col)
+{
+ iuplua_call_start(handle, "enteritem");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ return iuplua_call();
+}
+
+static int MATRIX_leaveitem (Ihandle *handle, int lin, int col)
+{
+ iuplua_call_start(handle, "leaveitem");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ return iuplua_call();
+}
+
+static int MATRIX_mousemove (Ihandle *handle, int lin, int col)
+{
+ iuplua_call_start(handle, "mousemove");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ return iuplua_call();
+}
+
+static int MATRIX_click (Ihandle *handle, int lin, int col, char *r)
+{
+ iuplua_call_start(handle, "click");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ lua_pushstring(r);
+ return iuplua_call();
+}
+
+static int MATRIX_release_cb (Ihandle *handle, int lin, int col, char *r)
+{
+ iuplua_call_start(handle, "release_cb");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ lua_pushstring(r);
+ return iuplua_call();
+}
+
+static int MATRIX_scrolltop (Ihandle *handle, int lin, int col)
+{
+ iuplua_call_start(handle, "scrolltop");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ return iuplua_call();
+}
+
+static int MATRIX_color(Ihandle *handle, char* name, int lin, int col, unsigned int *red, unsigned int *green, unsigned int *blue)
+{
+ lua_Object obj;
+ iuplua_call_start(handle, name);
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ if (lua_call ("iupCallMethod"))
+ {
+ lua_endblock ();
+ return IUP_IGNORE;
+ }
+ obj = lua_getresult (1);
+ if (obj == LUA_NOOBJECT)
+ {
+ lua_endblock ();
+ return IUP_IGNORE;
+ }
+ else if (lua_isnumber (obj))
+ {
+ int ret;
+ *red = (unsigned int)lua_getnumber (obj);
+
+ obj = lua_getresult (2);
+ if (obj == LUA_NOOBJECT || !lua_isnumber (obj))
+ {
+ lua_endblock ();
+ return IUP_IGNORE;
+ }
+ *green = (unsigned int)lua_getnumber (obj);
+
+ obj = lua_getresult (3);
+ if (obj == LUA_NOOBJECT || !lua_isnumber (obj))
+ {
+ lua_endblock ();
+ return IUP_IGNORE;
+ }
+ *blue = (unsigned int)lua_getnumber (obj);
+
+ obj = lua_getresult (4);
+ if (obj == LUA_NOOBJECT || !lua_isnumber (obj))
+ {
+ lua_endblock ();
+ return IUP_DEFAULT;
+ }
+ ret = (int)lua_getnumber (obj);
+ lua_endblock ();
+ return ret;
+ }
+
+ lua_endblock ();
+ return IUP_IGNORE;
+}
+
+static int MATRIX_fgcolor(Ihandle *handle, int lin, int col, unsigned int *red, unsigned int *green, unsigned int *blue)
+{
+ return MATRIX_color(handle, "fgcolorcb", lin, col, red, green, blue);
+}
+
+static int MATRIX_bgcolor(Ihandle *handle, int lin, int col, unsigned int *red, unsigned int *green, unsigned int *blue)
+{
+ return MATRIX_color(handle, "bgcolorcb", lin, col, red, green, blue);
+}
+
+static char* MATRIX_value (Ihandle *handle, int lin, int col)
+{
+ iuplua_call_start(handle, "valuecb");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ return iuplua_call_rs();
+}
+
+static int MATRIX_value_edit (Ihandle *handle, int lin, int col, char* val)
+{
+ iuplua_call_start(handle, "value_edit");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ lua_pushstring(val);
+ return iuplua_call();
+}
+
+static char* MATRIX_font_cb (Ihandle *handle, int lin, int col)
+{
+ iuplua_call_start(handle, "font_cb");
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+ return iuplua_call_rs();
+}
+
+static void CreateMatrix(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupMatrix(NULL), tag);
+}
+
+int matrixlua_open(void)
+{
+ struct AssocList {
+ char *name;
+ lua_CFunction func;
+ } MatAssocList [] = {
+ {"iup_mat_action_cb", (lua_CFunction)MATRIX_action},
+ {"iup_mat_edition_cb", (lua_CFunction)MATRIX_edition},
+ {"iup_mat_enteritem_cb", (lua_CFunction)MATRIX_enteritem},
+ {"iup_mat_drop_cb", (lua_CFunction)MATRIX_drop},
+ {"iup_mat_dropselect_cb", (lua_CFunction)MATRIX_dropselect},
+ {"iup_mat_leaveitem_cb", (lua_CFunction)MATRIX_leaveitem},
+ {"iup_mat_click_cb", (lua_CFunction)MATRIX_click},
+ {"iup_mat_release_cb", (lua_CFunction)MATRIX_release_cb},
+ {"iup_mat_mousemove_cb", (lua_CFunction)MATRIX_mousemove},
+ {"iup_mat_scrolltop_cb", (lua_CFunction)MATRIX_scrolltop},
+ {"iup_mat_fgcolor_cb", (lua_CFunction)MATRIX_fgcolor},
+ {"iup_mat_bgcolor_cb", (lua_CFunction)MATRIX_bgcolor},
+ {"iup_mat_draw_cb", (lua_CFunction)MATRIX_draw},
+ {"iup_mat_dropcheck_cb", (lua_CFunction)MATRIX_dropcheck},
+ {"iup_mat_font_cb", (lua_CFunction)MATRIX_font_cb},
+ {"iup_mat_value_cb", (lua_CFunction)MATRIX_value},
+ {"iup_mat_value_edit_cb", (lua_CFunction)MATRIX_value_edit},
+ {"iup_mat_mark_cb", (lua_CFunction)MATRIX_mark_cb},
+ {"iup_mat_markedit_cb", (lua_CFunction)MATRIX_markedit_cb}
+ };
+ int SizeMatAssocList = (sizeof(MatAssocList)/sizeof(struct AssocList));
+ int i;
+
+ lua_register("iupCreateMatrix", CreateMatrix);
+
+ for (i = 0; i < SizeMatAssocList; i++)
+ lua_register(MatAssocList[i].name, MatAssocList[i].func);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/matrix_be64.loh"
+#else
+#include "loh/matrix_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/matrix_le64w.loh"
+#else
+#include "loh/matrix_le64.loh"
+#endif
+#else
+#include "loh/matrix.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("luamatrix.lua");
+#endif
+
+ return 1;
+}
diff --git a/iup/srclua3/il_sbox.c b/iup/srclua3/il_sbox.c
new file mode 100755
index 0000000..6742819
--- /dev/null
+++ b/iup/srclua3/il_sbox.c
@@ -0,0 +1,50 @@
+/** \file
+ * \brief Bindig of iupsbox to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+
+#include <lua.h>
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+static void CreateSbox(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupSbox(iuplua_checkihandle(1)), tag);
+}
+
+int sboxlua_open(void)
+{
+ lua_register("iupCreateSbox", CreateSbox);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/sbox_be64.loh"
+#else
+#include "loh/sbox_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/sbox_le64w.loh"
+#else
+#include "loh/sbox_le64.loh"
+#endif
+#else
+#include "loh/sbox.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("luasbox.lua");
+#endif
+
+ return 1;
+}
diff --git a/iup/srclua3/il_scanf.c b/iup/srclua3/il_scanf.c
new file mode 100755
index 0000000..d98b586
--- /dev/null
+++ b/iup/srclua3/il_scanf.c
@@ -0,0 +1,181 @@
+/** \file
+ * \brief Iup API in Lua
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+
+#include "iuplua.h"
+#include "il.h"
+
+#include "iup_str.h"
+#include "iup_predial.h"
+
+#define ALLOC(n,t) ((t *)calloc((n),sizeof(t)))
+#define REQUIRE(b) {if (!(b)) goto cleanup;}
+
+void iupluaScanf(void)
+{
+ char *format;
+ int i;
+ int fields;
+ int *width = NULL;
+ int *scroll = NULL;
+ char **prompt = NULL;
+ char **text = NULL;
+ char *title = NULL;
+ char *s = NULL;
+ char *s1 = NULL;
+ char *outf = NULL;
+ int indParam; /* va_list va; */
+
+ format = luaL_check_string(1);
+ fields = iupStrCountChar(format, '\n') - 1;
+ REQUIRE(fields > 0);
+ width = ALLOC(fields, int);
+ REQUIRE(width != NULL);
+ scroll = ALLOC(fields, int);
+ REQUIRE(scroll != NULL);
+ prompt = ALLOC(fields, char *);
+ REQUIRE(prompt != NULL);
+ text = ALLOC(fields, char *);
+ REQUIRE(text != NULL);
+
+ indParam = 2; /* va_start(va,format); */
+ REQUIRE((s1 = s = (char *) iupStrDup(format)) != NULL);
+ title = iupStrCopyUntil(&s, '\n');
+ REQUIRE(title != NULL);
+ for (i = 0; i < fields; ++i) {
+ int n;
+ prompt[i] = iupStrCopyUntil(&s, '%');
+ REQUIRE(prompt[i] != NULL);
+ n = sscanf(s, "%d.%d", width + i, scroll + i);
+ REQUIRE(n == 2);
+ s = strchr(s, '%');
+ REQUIRE(s != NULL);
+ if (outf) free(outf);
+ outf = iupStrCopyUntil(&s, '\n');
+ text[i] = ALLOC(width[i] + 1, char);
+ REQUIRE(text[i] != NULL);
+
+ switch (s[-2]) {
+ case 'd':
+ case 'i':
+ case 'o':
+ case 'u':
+ case 'x':
+ case 'X':
+ if (s[-3] == 'l')
+ sprintf(text[i], outf, luaL_check_long(indParam++));
+ else if (s[-3] == 'h')
+ sprintf(text[i], outf, (short)luaL_check_int(indParam++));
+ else
+ sprintf(text[i], outf, luaL_check_int(indParam++));
+ break;
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'E':
+ case 'G':
+ if (s[-3] == 'l')
+ sprintf(text[i], outf, luaL_check_number(indParam++));
+ else
+ sprintf(text[i], outf, (float)luaL_check_number(indParam++));
+ break;
+ case 's':
+ sprintf(text[i], outf, (char *)luaL_check_string(indParam++));
+ break;
+ default:
+ goto cleanup;
+ }
+ }
+ /* va_end(va); */
+
+ REQUIRE(iupDataEntry(fields, width, scroll, title, prompt, text)>0);
+
+ /* va_start(va,format); */
+ s = strchr(format, '\n') + 1;
+ for (i = 0; i < fields; ++i) {
+ s = strchr(s, '\n') + 1;
+ switch (s[-2]) {
+ case 'd':
+ case 'u':
+ if (s[-3] == 'l') {
+ long l = 0;
+ sscanf(text[i], "%ld", &l);
+ lua_pushnumber(l);
+ } else if (s[-3] == 'h') {
+ short l = 0;
+ sscanf(text[i], "%hd", &l);
+ lua_pushnumber(l);
+ } else {
+ int l = 0;
+ sscanf(text[i], "%d", &l);
+ lua_pushnumber(l);
+ }
+ break;
+ case 'i':
+ case 'o':
+ case 'x':
+ case 'X':
+ if (s[-3] == 'l') {
+ long l = 0;
+ sscanf(text[i], "%li", &l);
+ lua_pushnumber(l);
+ } else if (s[-3] == 'h') {
+ short l = 0;
+ sscanf(text[i], "%hi", &l);
+ lua_pushnumber(l);
+ } else {
+ int l = 0;
+ sscanf(text[i], "%i", &l);
+ lua_pushnumber(l);
+ }
+ break;
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'E':
+ case 'G':
+ if (s[-3] == 'l') {
+ double l = 0;
+ sscanf(text[i], "%lg", &l);
+ lua_pushnumber(l);
+ } else {
+ float l = 0;
+ sscanf(text[i], "%g", &l);
+ lua_pushnumber(l);
+ }
+ break;
+ case 's':
+ lua_pushstring(text[i]);
+ break;
+ }
+ }
+ /* va_end(va); */
+
+cleanup:
+ if (s1) free(s1);
+ if (title) free(title);
+ if (width) free(width);
+ if (scroll) free(scroll);
+ if (outf) free(outf);
+ if (prompt) {
+ for (i = 0; i < fields; ++i)
+ if (prompt[i]) free(prompt[i]);
+ free(prompt);
+ }
+ if (text) {
+ for (i = 0; i < fields; ++i)
+ if (text[i]) free(text[i]);
+ free(text);
+ }
+}
diff --git a/iup/srclua3/il_spin.c b/iup/srclua3/il_spin.c
new file mode 100755
index 0000000..6319c51
--- /dev/null
+++ b/iup/srclua3/il_spin.c
@@ -0,0 +1,66 @@
+/** \file
+ * \brief Bindig of iupspin to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+
+#include <lua.h>
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+static int SPIN_spin_cb (Ihandle *handle, int v)
+{
+ iuplua_call_start(handle, "spincb");
+ lua_pushnumber(v);
+ return iuplua_call();
+}
+
+static void CreateSpin(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupSpin(), tag);
+}
+
+static void CreateSpinbox(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupSpinbox(iuplua_checkihandle(1)), tag);
+}
+
+int spinlua_open(void)
+{
+ lua_register("iupCreateSpin", CreateSpin);
+ lua_register("iupCreateSpinbox", CreateSpinbox);
+ lua_register("iup_spin_cb", (lua_CFunction)SPIN_spin_cb);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/spin_be64.loh"
+#else
+#include "loh/spin_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/spin_le64w.loh"
+#else
+#include "loh/spin_le64.loh"
+#endif
+#else
+#include "loh/spin.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("luaspin.lua");
+#endif
+
+ return 1;
+}
diff --git a/iup/srclua3/il_tabs.c b/iup/srclua3/il_tabs.c
new file mode 100755
index 0000000..59332ec
--- /dev/null
+++ b/iup/srclua3/il_tabs.c
@@ -0,0 +1,67 @@
+/** \file
+ * \brief Bindig of iuptabs to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "iup.h"
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+static int TABS_tabchange (Ihandle *handle, Ihandle *newtab, Ihandle *oldtab )
+{
+ iuplua_regihandle(newtab);
+ iuplua_regihandle(oldtab);
+ iuplua_call_start(handle, "tabchange");
+ iuplua_pushihandle_cb(newtab);
+ iuplua_pushihandle_cb(oldtab);
+ return iuplua_call();
+}
+
+static void CreateTabs(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ Ihandle** params = iuplua_checkihandle_array(1);
+ lua_pushusertag(IupTabsv(params), tag);
+ free(params);
+}
+
+int tabslua_open(void)
+{
+ lua_register("iupCreateTabs", CreateTabs);
+ lua_register("iup_tabchange_cb", (lua_CFunction)TABS_tabchange);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/tabs_be64.loh"
+#else
+#include "loh/tabs_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/tabs_le64w.loh"
+#else
+#include "loh/tabs_le64.loh"
+#endif
+#else
+#include "loh/tabs.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("luatabs.lua");
+#endif
+
+ return 1;
+}
diff --git a/iup/srclua3/il_tree.c b/iup/srclua3/il_tree.c
new file mode 100755
index 0000000..8d5fcf8
--- /dev/null
+++ b/iup/srclua3/il_tree.c
@@ -0,0 +1,283 @@
+/** \file
+ * \brief Bindig of iuptree to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+static int TREE_pattern (Ihandle *handle, int id, char* name)
+{
+ iuplua_call_start(handle, name);
+ lua_pushnumber(id);
+ return iuplua_call();
+}
+
+static int TREE_branchopen (Ihandle *handle, int id)
+{
+ return TREE_pattern(handle,id,"branchopen");
+}
+
+static int TREE_branchclose (Ihandle *handle, int id)
+{
+ return TREE_pattern(handle,id,"branchclose");
+}
+
+static int TREE_showrename (Ihandle *handle, int id)
+{
+ return TREE_pattern(handle,id,"showrenamecb");
+}
+
+static int TREE_executeleaf (Ihandle *handle, int id)
+{
+ return TREE_pattern(handle,id,"executeleaf");
+}
+
+static int TREE_selection (Ihandle *handle, int node, int state)
+{
+ iuplua_call_start(handle, "selection");
+ lua_pushnumber(node);
+ lua_pushnumber(state);
+ return iuplua_call();
+}
+
+static int TREE_renamenode (Ihandle *handle, int id, char* name)
+{
+ iuplua_call_start(handle, "renamenode");
+ lua_pushnumber(id);
+ lua_pushstring(name);
+ return iuplua_call();
+}
+
+static int TREE_rename (Ihandle *handle, int id, char* name)
+{
+ iuplua_call_start(handle, "renamecb");
+ lua_pushnumber(id);
+ lua_pushstring(name);
+ return iuplua_call();
+}
+
+static int TREE_multiselection (Ihandle *handle, int *ids, int n)
+{
+ int i;
+ lua_Object tb;
+
+ iuplua_call_start(handle, "multiselection");
+
+ tb = lua_createtable();
+ for (i = 0; i < n; i++)
+ {
+ lua_beginblock();
+ lua_pushobject(tb);
+ lua_pushnumber(i+1);
+ lua_pushnumber(ids[i]);
+ lua_settable();
+ lua_endblock();
+ }
+ lua_pushobject(tb);
+
+ lua_pushnumber (n);
+ return iuplua_call();
+}
+
+static int TREE_dragdrop(Ihandle* handle, int drag_id, int drop_id, int isshift, int iscontrol)
+{
+ iuplua_call_start(handle, "dragdrop");
+ lua_pushnumber(drag_id);
+ lua_pushnumber(drop_id);
+ lua_pushnumber(isshift);
+ lua_pushnumber(iscontrol);
+ return iuplua_call();
+}
+
+static int TREE_rightclick (Ihandle *handle, int id, char* r)
+{
+ iuplua_call_start(handle, "rightclick");
+ lua_pushnumber(id);
+ lua_pushstring(r);
+ return iuplua_call();
+}
+
+static void CreateTree(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupTree(), tag);
+}
+
+static int tree_getnumberintable(lua_Object o)
+{
+ lua_pushobject(lua_getglobal("IUPTREEREFERENCETABLE"));
+ lua_pushobject(o);
+ return (int)lua_getnumber(lua_rawgettable());
+}
+
+static void tree_setnumberintable(lua_Object o, int ref)
+{
+ /* Set in global table in index o, the value of ref.
+ If ref is 0, then set nil in the table. */
+ lua_pushobject(lua_getglobal("IUPTREEREFERENCETABLE"));
+ lua_pushobject(o);
+ if(ref == 0)
+ lua_pushnil();
+ else
+ lua_pushnumber(ref);
+ lua_rawsettable();
+}
+
+static void* check_userdata(int numArg)
+{
+ lua_Object o = lua_getparam(numArg);
+ luaL_arg_check(lua_isuserdata(o), numArg, "userdata expected");
+ return lua_getuserdata(o);
+}
+
+static void cfTreeSetUserId(void)
+{
+ lua_pushnumber(IupTreeSetUserId(iuplua_checkihandle(1), luaL_check_int(2), check_userdata(3)));
+}
+
+static void cfTreeGetUserId(void)
+{
+ lua_pushusertag(IupTreeGetUserId(iuplua_checkihandle(1), luaL_check_int(2)), LUA_ANYTAG);
+}
+
+static lua_Object tree_gettable(Ihandle* ih, int id)
+{
+ int ref = (int)IupTreeGetUserId(ih, id);
+ if(ref == 0)
+ return LUA_NOOBJECT;
+ else
+ return lua_getref(ref-1);
+}
+
+static void cfTreeSetTableId(void)
+{
+ Ihandle* ih = iuplua_checkihandle(1);
+ int id = luaL_check_int(2);
+
+ lua_Object o3 = lua_getparam(3);
+ if(lua_isnil(o3))
+ {
+ int ref;
+ /* Setting in the id table the reference as nil */
+ o3 = tree_gettable(ih, id);
+ if(o3 != LUA_NOOBJECT)
+ tree_setnumberintable(o3, 0);
+
+ ref = (int)IupTreeGetUserId(ih, id);
+ lua_unref(ref);
+ lua_pushnumber(IupTreeSetUserId(ih, id, NULL));
+ }
+ else
+ {
+ int ref;
+ lua_pushobject(o3);
+ ref = lua_ref(1);
+ lua_pushnumber(IupTreeSetUserId(ih, id, (void*)(ref+1)));
+ tree_setnumberintable(o3, ref+1);
+ }
+}
+
+static void cfTreeGetTable(void)
+{
+ Ihandle* ih = iuplua_checkihandle(1);
+ int id = luaL_check_int(2);
+
+ lua_Object o3 = tree_gettable(ih, id);
+ if(o3 == LUA_NOOBJECT)
+ lua_pushnil();
+ else
+ lua_pushobject(o3);
+}
+
+static int tree_gettableid(Ihandle* ih, lua_Object o)
+{
+ int ref = tree_getnumberintable(o);
+ if(ref == 0)
+ return -1;
+ return IupTreeGetId(ih, (void*) ref);
+}
+
+static void cfTreeGetTableId(void)
+{
+ Ihandle* ih = iuplua_checkihandle(1);
+ lua_Object o2 = luaL_tablearg(2);
+ int ret = tree_gettableid(ih, o2);
+ if(ret == -1)
+ lua_pushnil();
+ else
+ lua_pushnumber(ret);
+}
+
+static void cfTreeGetId(void)
+{
+ lua_pushnumber(IupTreeGetId(iuplua_checkihandle(1), check_userdata(2)));
+}
+
+int treelua_open(void)
+{
+ struct AssocList {
+ char *name;
+ lua_CFunction func;
+ } TreeAssocList [] = {
+ {"iup_tree_multiselection_cb", (lua_CFunction)TREE_multiselection},
+ {"iup_tree_selection_cb", (lua_CFunction)TREE_selection},
+ {"iup_tree_branchopen_cb", (lua_CFunction)TREE_branchopen},
+ {"iup_tree_branchclose_cb", (lua_CFunction)TREE_branchclose},
+ {"iup_tree_executeleaf_cb", (lua_CFunction)TREE_executeleaf},
+ {"iup_tree_renamenode_cb", (lua_CFunction)TREE_renamenode},
+ {"iup_tree_rename_cb", (lua_CFunction)TREE_rename},
+ {"iup_tree_showrename_cb", (lua_CFunction)TREE_showrename},
+ {"iup_tree_dragdrop_cb", (lua_CFunction)TREE_dragdrop},
+ {"iup_tree_rightclick_cb", (lua_CFunction)TREE_rightclick}
+ };
+ int SizeTreeAssocList = (sizeof(TreeAssocList)/sizeof(struct AssocList));
+ int i ;
+
+ iuplua_register("IupTreeSetUserId", cfTreeSetUserId);
+ iuplua_register("IupTreeGetUserId", cfTreeGetUserId);
+ iuplua_register("IupTreeGetId", cfTreeGetId);
+ iuplua_register("IupTreeSetTableId", cfTreeSetTableId);
+ iuplua_register("IupTreeGetTableId", cfTreeGetTableId);
+ iuplua_register("IupTreeGetTable", cfTreeGetTable);
+
+ lua_register("iupCreateTree", CreateTree);
+
+ for (i = 0; i < SizeTreeAssocList; i++)
+ lua_register(TreeAssocList[i].name, TreeAssocList[i].func);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/tree_be64.loh"
+#else
+#include "loh/tree_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/tree_le64w.loh"
+#else
+#include "loh/tree_le64.loh"
+#endif
+#else
+#include "loh/tree.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("luatree.lua");
+#endif
+
+ return 1;
+}
diff --git a/iup/srclua3/il_val.c b/iup/srclua3/il_val.c
new file mode 100755
index 0000000..ae99754
--- /dev/null
+++ b/iup/srclua3/il_val.c
@@ -0,0 +1,77 @@
+/** \file
+ * \brief Bindig of iupval to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+static int VAL_mousemove (Ihandle *handle, double v)
+{
+ iuplua_call_start(handle, "mousemove");
+ lua_pushnumber(v);
+ return iuplua_call();
+}
+
+static int VAL_button_press (Ihandle *handle, double v)
+{
+ iuplua_call_start(handle, "buttonpress");
+ lua_pushnumber(v);
+ return iuplua_call();
+}
+
+static int VAL_button_release (Ihandle *handle, double v)
+{
+ iuplua_call_start(handle, "buttonrelease");
+ lua_pushnumber(v);
+ return iuplua_call();
+}
+
+static void CreateVal(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupVal(luaL_check_string(1)), tag);
+}
+
+int vallua_open(void)
+{
+ lua_register("iupCreateVal", CreateVal);
+ lua_register("iup_val_mousemove_cb", (lua_CFunction)VAL_mousemove);
+ lua_register("iup_val_button_press_cb", (lua_CFunction)VAL_button_press);
+ lua_register("iup_val_button_release_cb", (lua_CFunction)VAL_button_release);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/val_be64.loh"
+#else
+#include "loh/val_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/val_le64w.loh"
+#else
+#include "loh/val_le64.loh"
+#endif
+#else
+#include "loh/val.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("luaval.lua");
+#endif
+
+ return 1;
+}
diff --git a/iup/srclua3/iup_pplot.mak b/iup/srclua3/iup_pplot.mak
new file mode 100755
index 0000000..66ee7db
--- /dev/null
+++ b/iup/srclua3/iup_pplot.mak
@@ -0,0 +1,15 @@
+PROJNAME = iup
+LIBNAME = iuplua_pplot3
+OPT = YES
+
+USE_LUA = Yes
+USE_CDLUA = Yes
+
+LOHDIR = loh
+SRCLUA = pplot.lua
+SRC = iuplua_pplot.c
+
+DEFINES = IUPLUA_USELOH
+INCLUDES = ../include
+LDIR = ../lib/$(TEC_UNAME)
+LIBS = iup iuplua3 iup_pplot iupcd
diff --git a/iup/srclua3/iupcd.mak b/iup/srclua3/iupcd.mak
new file mode 100755
index 0000000..36db871
--- /dev/null
+++ b/iup/srclua3/iupcd.mak
@@ -0,0 +1,19 @@
+PROJNAME = iup
+LIBNAME = iupluacd3
+OPT = YES
+
+DEF_FILE = iupluacd3.def
+SRC = iuplua_cd.c
+
+# Can not use USE_IUPLUA because Tecmake will include "iupluacd3" in linker
+
+INCLUDES = ../include
+LIBS = iuplua3
+LDIR = ../lib/$(TEC_UNAME)
+
+IUP := ..
+
+USE_CD = YES
+USE_IUP3 = YES
+USE_LUA = YES
+USE_CDLUA = YES
diff --git a/iup/srclua3/iupcontrols.mak b/iup/srclua3/iupcontrols.mak
new file mode 100755
index 0000000..4498ddf
--- /dev/null
+++ b/iup/srclua3/iupcontrols.mak
@@ -0,0 +1,19 @@
+BUILD_IUP3 = Yes
+
+PROJNAME = iup
+LIBNAME = iupluacontrols3
+OPT = YES
+
+USE_LUA = Yes
+USE_CDLUA = Yes
+
+LOHDIR = loh
+SRCLUA = dial.lua gauge.lua colorbar.lua \
+ matrix.lua colorbrowser.lua cells.lua
+SRC = il_dial.c il_gauge.c il_colorbrowser.c il_colorbar.c il_cells.c \
+ il_mask.c il_matrix.c iuplua_controls.c
+
+DEFINES = IUPLUA_USELOH
+INCLUDES = ../include
+LDIR = ../lib/$(TEC_UNAME)
+LIBS = iup iuplua3 iupcontrols iupcd
diff --git a/iup/srclua3/iupgl.mak b/iup/srclua3/iupgl.mak
new file mode 100755
index 0000000..3d65c48
--- /dev/null
+++ b/iup/srclua3/iupgl.mak
@@ -0,0 +1,12 @@
+PROJNAME = iup
+LIBNAME = iupluagl3
+OPT = YES
+
+USE_LUA = Yes
+USE_OPENGL = Yes
+
+SRC = iuplua_glcanvas.c
+
+INCLUDES = ../include
+LDIR = ../lib/$(TEC_UNAME)
+LIBS = iup iuplua3 iupgl
diff --git a/iup/srclua3/iupim.mak b/iup/srclua3/iupim.mak
new file mode 100755
index 0000000..e4831ec
--- /dev/null
+++ b/iup/srclua3/iupim.mak
@@ -0,0 +1,12 @@
+PROJNAME = iup
+LIBNAME = iupluaim3
+OPT = YES
+
+USE_LUA = Yes
+USE_IM = Yes
+
+SRC = iuplua_im.c
+
+INCLUDES = ../include ../src
+LDIR = ../lib/$(TEC_UNAME)
+LIBS = iup iuplua3 iupim
diff --git a/iup/srclua3/iuplua.c b/iup/srclua3/iuplua.c
new file mode 100755
index 0000000..7789ce8
--- /dev/null
+++ b/iup/srclua3/iuplua.c
@@ -0,0 +1,494 @@
+/** \file
+ * \brief IULUA core - Bindig of iup to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iupkey.h"
+
+#include "iuplua.h"
+#include "il.h"
+
+#include "iup_str.h"
+
+
+/* from iupkey.c */
+void iupKeyForEach(void (*func)(char *name, int code, void* user_data), void* user_data);
+
+static int iuplua_tag = 0;
+static lua_Object iuplua_namespace;
+
+
+void iuplua_call_start(Ihandle* handle, char* name)
+{
+ lua_beginblock();
+ lua_pushstring(name);
+ lua_pushusertag(handle, iuplua_tag);
+}
+
+int iuplua_call(void)
+{
+ lua_Object obj;
+
+ if (lua_call("iupCallMethod"))
+ {
+ lua_endblock();
+ return IUP_DEFAULT; /* call failed */
+ }
+
+ obj = lua_getresult(1);
+ if (obj == LUA_NOOBJECT)
+ {
+ lua_endblock();
+ return IUP_DEFAULT; /* no return, provides IUP_DEFAULT return */
+ }
+ else if (lua_isnumber(obj))
+ {
+ int ret = (int) lua_getnumber(obj);
+ lua_endblock();
+ return ret;
+ }
+ lua_endblock();
+ return IUP_DEFAULT; /* returned a non normal value. what to do? */
+}
+
+char* iuplua_call_rs(void)
+{
+ lua_Object obj;
+
+ if (lua_call("iupCallMethod"))
+ {
+ lua_endblock();
+ return NULL; /* call failed */
+ }
+
+ obj = lua_getresult(1);
+ if (obj == LUA_NOOBJECT)
+ {
+ lua_endblock();
+ return NULL; /* no return, provides IUP_DEFAULT return */
+ }
+ else if (lua_isstring(obj))
+ {
+ char* ret = lua_getstring(obj);
+ lua_endblock();
+ return ret;
+ }
+ lua_endblock();
+ return NULL; /* returned a non normal value. what to do? */
+}
+
+static void iuplua_set_callback(void)
+{
+ lua_Object o;
+ Icallback func;
+
+ Ihandle* ih = iuplua_checkihandle(1);
+ char* name = luaL_check_string(2);
+
+ o = lua_getparam(3);
+ if (!lua_iscfunction(o))
+ lua_error("invalid function when set callback");
+ func = (Icallback)lua_getcfunction(o);
+
+ o = lua_getparam(4);
+ if (lua_isnil(o))
+ IupSetCallback(ih, name, (Icallback)NULL);
+ else
+ IupSetCallback(ih, name, func);
+}
+
+/***********************************************************************************
+***********************************************************************************/
+
+static int idle_ref = 0;
+static int default_idle(void)
+{
+ lua_Object obj;
+ lua_beginblock();
+ obj = lua_getref(idle_ref);
+ if (lua_callfunction(obj))
+ {
+ lua_endblock();
+ return IUP_IGNORE;
+ }
+
+ obj = lua_getresult(1);
+ if (lua_isnumber(obj))
+ {
+ int ret = (int) lua_getnumber(obj);
+ lua_endblock();
+ return ret;
+ }
+ lua_endblock();
+ return IUP_DEFAULT;
+}
+
+static void IupSetIdle(void)
+{
+ lua_Object obj = lua_getparam(1);
+ lua_Object old;
+ if (idle_ref != 0)
+ old = lua_getref(idle_ref);
+ else
+ old = LUA_NOOBJECT;
+ if (lua_isnil(obj))
+ {
+ lua_unref(idle_ref);
+ idle_ref = 0;
+ IupSetFunction("IDLE_ACTION", (Icallback) NULL);
+ }
+ else
+ {
+ if (!lua_isfunction(obj) && !lua_iscfunction(obj))
+ lua_error("IupSetIdle: parameter must be a function or a cfunction");
+ lua_pushobject(obj);
+ idle_ref = lua_ref(1);
+ IupSetFunction("IDLE_ACTION", (Icallback) default_idle);
+ }
+
+ if (old == LUA_NOOBJECT)
+ lua_pushnil();
+ else
+ lua_pushobject(old);
+}
+
+/***********************************************************************************
+***********************************************************************************/
+
+static void iuplua_gettable(void)
+{
+ lua_Object t, index, tab, result;
+ t = lua_getparam(1);
+ index = lua_getparam(2);
+ lua_pushobject(lua_getglobal("iup_handles"));
+ lua_pushobject(t);
+ tab = lua_gettable();
+ if (lua_isnil(tab))
+ {
+ lua_pushnil();
+ return;
+ }
+ else
+ {
+ lua_Object method;
+ lua_pushobject(tab);
+ lua_pushstring("get");
+ method = lua_gettable();
+ lua_pushobject(tab);
+ lua_pushobject(index);
+ if (lua_callfunction(method))
+ return;
+ }
+
+ result = lua_getresult(1);
+ if (result != LUA_NOOBJECT)
+ lua_pushobject(result);
+ else
+ lua_pushnil();
+}
+
+static void iuplua_settable(void)
+{
+ lua_Object t, index, value, tab, result;
+ t = lua_getparam(1);
+ index = lua_getparam(2);
+ value = lua_getparam(3);
+ lua_pushobject(lua_getglobal("iup_handles"));
+ lua_pushobject(t);
+ tab = lua_gettable();
+ if (lua_isnil(tab))
+ {
+ lua_pushnil();
+ return;
+ }
+ else
+ {
+ lua_Object method;
+ lua_pushobject(tab);
+ lua_pushstring("set");
+ method = lua_gettable();
+ lua_pushobject(tab);
+ lua_pushobject(index);
+ lua_pushobject(value);
+ if (lua_callfunction(method))
+ return;
+ }
+
+ result = lua_getresult(1);
+ if (result != LUA_NOOBJECT)
+ lua_pushobject(result);
+}
+
+static void iuplua_index(void)
+{
+ lua_Object t, f, result;
+ t = lua_getparam(1);
+ f = lua_getparam(2);
+ if (!(lua_isstring(f) && iupStrEqual(lua_getstring(f), "parent")))
+ {
+ lua_Object p;
+ lua_pushobject(t);
+ lua_pushstring("parent");
+ p = lua_gettable();
+ if (lua_istable(p))
+ {
+ lua_pushobject(p);
+ lua_pushobject(f);
+ result = lua_gettable();
+ if (lua_isnil(result))
+ lua_pushnil();
+ else
+ lua_pushobject(result);
+ return;
+ }
+ }
+ lua_pushnil();
+}
+
+/***********************************************************************************
+***********************************************************************************/
+
+static void iuplua_setnamespace(char* name, char* new_name)
+{
+ lua_Object obj = lua_getglobal(name);
+ lua_pushobject(iuplua_namespace);
+ lua_pushstring(new_name);
+ lua_pushobject(obj);
+ lua_settable();
+}
+
+void iuplua_register(char* name, lua_CFunction func)
+{
+ lua_register(name, func);
+ iuplua_setnamespace(name, name+3); /* IupXxx */
+}
+
+void iuplua_register_macro(char* name, lua_CFunction func)
+{
+ lua_register(name, func);
+ iuplua_setnamespace(name, name); /* xxx */
+}
+
+void iuplua_regstring_mask(char* str, char* name)
+{
+ lua_pushstring(str); lua_setglobal(name);
+ iuplua_setnamespace(name, name+3); /* IUPMASK_XXX */
+}
+
+void iuplua_regnumber(double num, char* name)
+{
+ lua_pushnumber(num); lua_setglobal(name);
+ iuplua_setnamespace(name, name+4); /* IUP_XXXX */
+}
+
+void iuplua_regstring(char* str, char* name)
+{
+ lua_pushstring(str); lua_setglobal(name);
+ iuplua_setnamespace(name, name+4); /* IUP_XXXX */
+}
+
+void iuplua_regihandle(Ihandle *h)
+{
+ if (h)
+ {
+ lua_pushusertag((void*)h, iuplua_tag);
+ lua_pushstring(IupGetClassName(h));
+ lua_call("IupRegisterHandle");
+ }
+}
+
+void iuplua_pushihandle_cb(Ihandle *h)
+{
+ if (h)
+ lua_pushusertag((void*)h, iuplua_tag);
+ else
+ lua_pushnil();
+}
+
+void iuplua_pushihandle(Ihandle *h)
+{
+ if (h)
+ {
+ lua_pushusertag((void*)h, iuplua_tag);
+ lua_pushstring(IupGetClassName(h));
+ lua_call("IupRegisterHandle");
+ lua_pushobject(lua_getresult(1));
+ }
+ else
+ lua_pushnil();
+}
+
+Ihandle* iuplua_checkihandle(int numArg)
+{
+ lua_Object o = lua_getparam(numArg);
+ luaL_arg_check(lua_tag(o)==iuplua_tag, numArg, "handle expected");
+ return (Ihandle*)lua_getuserdata(o);
+}
+
+static Ihandle* checkihandle_table(lua_Object tab, int index)
+{
+ Ihandle* ih;
+ lua_Object o;
+ lua_beginblock();
+ lua_pushobject(tab);
+ lua_pushnumber(index);
+ o = lua_gettable();
+ luaL_arg_check(lua_tag(o)==iuplua_tag, index, "handle expected");
+ ih = (Ihandle*)lua_getuserdata(o);
+ lua_endblock();
+ return ih;
+}
+
+Ihandle** iuplua_checkihandle_array(int numArg)
+{
+ int i;
+ lua_Object tab = luaL_tablearg(numArg);
+ int count = luaL_check_int(numArg+1);
+
+ Ihandle **params = (Ihandle **) malloc(sizeof(Ihandle *) * (count+1));
+
+ for (i = 0; i < count; i++)
+ params[i] = checkihandle_table(tab, i+1);
+ params[count] = NULL;
+
+ return params;
+}
+
+int iuplua_dofile(char *filename)
+{
+ if (lua_dofile(filename) != 0)
+ {
+ char *dir = getenv("IUPLUA_DIR");
+ if (!dir)
+ return 0;
+ else
+ {
+ int len = strlen(dir);
+ char *full_name = malloc((len + strlen(filename) + 2) * sizeof(char));
+ if (!full_name)
+ return 0;
+ strcpy(full_name, dir);
+ strcat(full_name, "/");
+ strcat(full_name, filename);
+ if (lua_dofile(full_name))
+ {
+ free(full_name);
+ return 0;
+ }
+ free(full_name);
+ }
+ }
+ return 1;
+}
+
+/***********************************************************************************
+***********************************************************************************/
+
+static void register_key(char *name, int code, void* user_data)
+{
+ (void)user_data;
+ lua_pushnumber(code); lua_setglobal(name);
+ iuplua_setnamespace(name, name); /* K_xxx */
+}
+
+int iupkey_open(void)
+{
+ /* does nothing, kept for backward compatibility */
+ return 1;
+}
+
+/***********************************************************************************
+***********************************************************************************/
+
+static void setinfo(void)
+{
+ iuplua_regstring_mask(IUP_COPYRIGHT, "IUP_COPYRIGHT");
+ iuplua_regstring_mask("Portable toolkit for building graphical user interfaces.", "IUP_DESCRIPTION");
+ iuplua_regstring_mask("IUP - Portable User Interface", "IUP_NAME");
+ iuplua_regstring_mask("IUP "IUP_VERSION, "IUP_VERSION");
+ iuplua_regstring_mask(LUA_COPYRIGHT, "IUP_LUA_COPYRIGHT");
+}
+
+int iuplua_open(void)
+{
+ struct FuncList {
+ char *name;
+ lua_CFunction func;
+ } FuncList[] = {
+ { "IupSetIdle", IupSetIdle },
+ };
+ int SizeFuncList = (sizeof(FuncList)/sizeof(struct FuncList));
+ int i;
+
+ iuplua_tag = lua_newtag();
+ lua_pushnumber(iuplua_tag);
+ lua_setglobal("iuplua_tag");
+
+ iuplua_namespace = lua_createtable();
+ lua_pushobject(iuplua_namespace); lua_setglobal ("iup");
+
+ setinfo();
+
+ for (i = 0; i < SizeFuncList; i++)
+ iuplua_register(FuncList[i].name, FuncList[i].func);
+
+ lua_register("iup_gettable", iuplua_gettable);
+ lua_register("iup_settable", iuplua_settable);
+ lua_register("iup_index", iuplua_index);
+ lua_register("iupSetCallback", iuplua_set_callback);
+
+ iupKeyForEach(register_key, NULL);
+
+ iupluaapi_open();
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/iuplua_be64.loh"
+#include "loh/constants_be64.loh"
+#else
+#include "loh/iuplua_be32.loh"
+#include "loh/constants_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/iuplua_le64w.loh"
+#include "loh/constants_le64w.loh"
+#else
+#include "loh/iuplua_le64.loh"
+#include "loh/constants_le64.loh"
+#endif
+#else
+#include "loh/iuplua.loh"
+#include "loh/constants.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("iuplua.lua");
+ iuplua_dofile("constants.lua");
+#endif
+
+ iupluawidgets_open(iuplua_tag);
+
+ sboxlua_open();
+ spinlua_open();
+ cboxlua_open();
+ vallua_open();
+ tabslua_open();
+ gclua_open();
+ getparamlua_open();
+ treelua_open();
+
+ return 1;
+}
+
diff --git a/iup/srclua3/iuplua.lua b/iup/srclua3/iuplua.lua
new file mode 100755
index 0000000..5bfd7d4
--- /dev/null
+++ b/iup/srclua3/iuplua.lua
@@ -0,0 +1,134 @@
+
+
+-- #################################################################################
+-- Private functions
+-- #################################################################################
+
+-- maps Ihandles into Lua objects
+iup_handles = {}
+
+settagmethod(iuplua_tag, "gettable", iup_gettable)
+settagmethod(iuplua_tag, "settable", iup_settable)
+settagmethod (tag({}), "index", iup_index)
+
+function _ALERT(s)
+ local bt = iupbutton{title="Ok", size="60", action="return IUP_CLOSE"}
+ local ml = iupmultiline{expand="YES", readonly="YES", value=s, size="300x150"}
+ local vb = iupvbox{ml, bt; alignment="ACENTER", margin="10x10", gap="10"}
+ local dg = iupdialog{vb; title="Lua Error",defaultesc=bt,defaultenter=bt,startfocus=bt}
+ dg:popup(IUP_CENTER, IUP_CENTER)
+ dg:destroy()
+end
+
+function type_string (o)
+ return type(o) == "string"
+end
+
+function type_number (o)
+ return type(o) == "number"
+end
+
+function type_nil (o)
+ return type(o) == "nil"
+end
+
+function type_function (o)
+ return type(o) == "function"
+end
+
+function type_widget(w)
+ if w then
+ return iup_handles[w]
+ else
+ return nil
+ end
+end
+
+function type_menu (o)
+ return type_widget(o) and (o.parent==IUPMENU)
+end
+
+function type_item (o)
+ return type_widget(o) and (o.parent==IUPITEM or o.parent==IUPSUBMENU or o.parent==IUPSEPARATOR)
+end
+
+function iupCallMethod(name, ...)
+ local handle = arg[1] -- always the handle
+
+ local func = handle[name] -- this is the old name
+ if (not func) then
+ local full_name = strlower(iup_callbacks[name][1])
+ func = handle[full_name] -- check also for the full name
+
+ if (not func) then
+ return
+ end
+ end
+
+ if type_function (func) then
+ return call(func, arg)
+ elseif type_string(func) then
+ local temp = self
+ self = handle
+ local result = dostring(func)
+ self = temp
+ return result
+ else
+ return IUP_ERROR
+ end
+end
+
+function iupSetName (handle)
+ if not type_string(iup_handles[handle].IUP_name) then
+ iup_handles[handle].IUP_name = format("_IUPLUA_NAME(%s)", tostring(handle))
+ IupSetHandle(handle.IUP_name, handle)
+ end
+end
+
+function iupCreateChildrenNames (obj)
+ if obj.parent.parent == COMPOSITION then
+ local i = 1
+ while obj[i] do
+ iupCreateChildrenNames (obj[i])
+ i = i+1
+ end
+ elseif obj.parent == IUPFRAME then
+ iupCreateChildrenNames (obj[1])
+ else
+ iupSetName (obj)
+ end
+end
+
+
+-- #################################################################################
+-- Public Functions
+-- #################################################################################
+
+
+function IupRGB (red, green, blue)
+ return floor(red*255).." "..floor(green*255).." "..floor(blue*255)
+end
+iup.RGB = IupRGB
+
+function IupRegisterHandle(handle, typename)
+ if not iup_handles[handle] then
+ local obj = getglobal("IUP"..strupper(typename))
+ if not obj then
+ obj = WIDGET
+ end
+ iup_handles[handle] = { parent=obj, handle=handle }
+ end
+ return handle
+end
+iup.RegisterHandle = IupRegisterHandle
+
+function IupGetFromC(obj)
+ local handle = IupGetHandle(obj[1])
+ return IupRegisterHandle(handle, IupGetClassName(handle))
+end
+
+iup.GetFromC = function (name)
+ local handle = IupGetHandle(name)
+ return IupRegisterHandle(handle, IupGetClassName(handle))
+end
+
diff --git a/iup/srclua3/iuplua3.def b/iup/srclua3/iuplua3.def
new file mode 100755
index 0000000..c67aeca
--- /dev/null
+++ b/iup/srclua3/iuplua3.def
@@ -0,0 +1,16 @@
+EXPORTS
+ iuplua_open
+ iupkey_open
+ iuplua_dofile
+ iuplua_checkihandle
+ iuplua_checkihandle_array
+ iuplua_pushihandle
+ iuplua_call_start
+ iuplua_call
+ iuplua_call_rs
+ iuplua_register
+ iuplua_regstring
+ iuplua_regnumber
+ iuplua_regstring_mask
+ iuplua_regihandle
+ iuplua_pushihandle_cb \ No newline at end of file
diff --git a/iup/srclua3/iuplua_api.c b/iup/srclua3/iuplua_api.c
new file mode 100755
index 0000000..3221658
--- /dev/null
+++ b/iup/srclua3/iuplua_api.c
@@ -0,0 +1,762 @@
+/** \file
+ * \brief Iup API in Lua
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iupkey.h"
+
+#include "iuplua.h"
+#include "il.h"
+
+#include "iup_attrib.h"
+#include "iup_globalattrib.h"
+
+
+static void SaveImageAsText(void)
+{
+ Ihandle *ih = iuplua_checkihandle(1);
+ const char *file_name = luaL_check_string(2);
+ const char *format = luaL_check_string(3);
+ const char *name = luaL_opt_string(4, NULL);
+ lua_pushnumber(IupSaveImageAsText(ih, file_name, format, name));
+}
+
+static void Reparent(void)
+{
+ lua_pushnumber(IupReparent(iuplua_checkihandle(1),
+ iuplua_checkihandle(2)));
+}
+
+static void PreviousField(void)
+{
+ iuplua_pushihandle(IupPreviousField(iuplua_checkihandle(1)));
+}
+
+static void NextField(void)
+{
+ iuplua_pushihandle(IupNextField(iuplua_checkihandle(1)));
+}
+
+static void cf_isprint(void)
+{
+ int cod = luaL_check_int(1);
+ lua_pushnumber(iup_isprint(cod));
+}
+
+static void codekey(void)
+{
+ int cod = luaL_check_int(1);
+ lua_pushnumber(IUPxCODE(cod));
+}
+
+static void cf_isxkey(void)
+{
+ int cod = luaL_check_int(1);
+ lua_pushnumber(iup_isXkey(cod));
+}
+
+static void cf_isShiftXkey(void)
+{
+ int cod = luaL_check_int(1);
+ lua_pushnumber(iup_isShiftXkey(cod));
+}
+
+static void cf_isCtrlXkey(void)
+{
+ int cod = luaL_check_int(1);
+ lua_pushnumber(iup_isCtrlXkey(cod));
+}
+
+static void cf_isAltXkey(void)
+{
+ int cod = luaL_check_int(1);
+ lua_pushnumber(iup_isAltXkey(cod));
+}
+
+static void cf_isSysXkey(void)
+{
+ int cod = luaL_check_int(1);
+ lua_pushnumber(iup_isSysXkey(cod));
+}
+
+static void cf_isbutton1(void)
+{
+ if(iup_isbutton1(luaL_check_string(1)))
+ lua_pushnumber(1);
+ else
+ lua_pushnil();
+}
+
+static void cf_isbutton2(void)
+{
+ if(iup_isbutton2(luaL_check_string(1)))
+ lua_pushnumber(1);
+ else
+ lua_pushnil();
+}
+
+static void cf_isbutton3(void)
+{
+ if(iup_isbutton3(luaL_check_string(1)))
+ lua_pushnumber(1);
+ else
+ lua_pushnil();
+}
+
+static void cf_isshift(void)
+{
+ if(iup_isshift(luaL_check_string(1)))
+ lua_pushnumber(1);
+ else
+ lua_pushnil();
+}
+
+static void cf_isdouble(void)
+{
+ if(iup_isdouble(luaL_check_string(1)))
+ lua_pushnumber(1);
+ else
+ lua_pushnil();
+}
+
+static void cf_isalt(void)
+{
+ if(iup_isalt(luaL_check_string(1)))
+ lua_pushnumber(1);
+ else
+ lua_pushnil();
+}
+
+static void cf_isbutton4(void)
+{
+ if(iup_isbutton4(luaL_check_string(1)))
+ lua_pushnumber(1);
+ else
+ lua_pushnil();
+}
+
+static void cf_isbutton5(void)
+{
+ if(iup_isbutton5(luaL_check_string(1)))
+ lua_pushnumber(1);
+ else
+ lua_pushnil();
+}
+
+static void cf_issys(void)
+{
+ if(iup_issys(luaL_check_string(1)))
+ lua_pushnumber(1);
+ else
+ lua_pushnil();
+}
+
+static void cf_iscontrol(void)
+{
+ if(iup_iscontrol(luaL_check_string(1)))
+ lua_pushnumber(1);
+ else
+ lua_pushnil();
+}
+
+static void GetAttributeData(void)
+{
+ char *value = IupGetAttribute(iuplua_checkihandle(1), luaL_check_string(2));
+ if (value)
+ lua_pushuserdata((void*)value);
+ else
+ lua_pushnil();
+}
+
+static void GetAttribute(void)
+{
+ char *name = luaL_check_string(2);
+ Ihandle* ih = iuplua_checkihandle(1);
+ char *value = IupGetAttribute(ih, name);
+ if (!value || iupAttribIsInternal(name))
+ lua_pushnil();
+ else
+ {
+ if (iupAttribIsPointer(ih, name))
+ lua_pushuserdata((void*)value);
+ else
+ lua_pushstring(value);
+ }
+}
+
+static void GetDialog(void)
+{
+ iuplua_pushihandle(IupGetDialog(iuplua_checkihandle(1)));
+}
+
+static void GetHandle(void)
+{
+ iuplua_pushihandle(IupGetHandle(luaL_check_string(1)));
+}
+
+static void SetAttribute(void)
+{
+ if (lua_isnil(lua_getparam(3)))
+ IupSetAttribute(iuplua_checkihandle(1), luaL_check_string(2), NULL);
+ else
+ IupStoreAttribute(iuplua_checkihandle(1), luaL_check_string(2), luaL_check_string(3));
+}
+
+static void SetHandle(void)
+{
+ if (lua_isnil(lua_getparam(2)))
+ IupSetHandle(luaL_check_string(1), NULL);
+ else
+ IupSetHandle(luaL_check_string(1), iuplua_checkihandle(2));
+}
+
+static void Destroy(void)
+{
+ IupDestroy(iuplua_checkihandle(1));
+}
+
+static void Detach(void)
+{
+ IupDetach(iuplua_checkihandle(1));
+}
+
+static void Map(void)
+{
+ lua_pushnumber(IupMap(iuplua_checkihandle(1)));
+}
+
+static void Unmap(void)
+{
+ IupUnmap(iuplua_checkihandle(1));
+}
+
+static void Show(void)
+{
+ lua_pushnumber(IupShow(iuplua_checkihandle(1)));
+}
+
+static void GetChildCount(void)
+{
+ lua_pushnumber(IupGetChildCount(iuplua_checkihandle(1)));
+}
+
+static void Refresh(void)
+{
+ IupRefresh(iuplua_checkihandle(1));
+}
+
+static void Update(void)
+{
+ IupUpdate(iuplua_checkihandle(1));
+}
+
+static void UpdateChildren(void)
+{
+ IupUpdateChildren(iuplua_checkihandle(1));
+}
+
+static void Redraw(void)
+{
+ IupRedraw(iuplua_checkihandle(1), luaL_check_int(2));
+}
+
+static void VersionNumber(void)
+{
+ lua_pushnumber(IupVersionNumber());
+}
+
+static void ShowXY(void)
+{
+ lua_pushnumber(IupShowXY(iuplua_checkihandle(1),
+ luaL_opt_int(2, IUP_CURRENT), luaL_opt_int(3, IUP_CURRENT)));
+}
+
+static void Hide(void)
+{
+ lua_pushnumber(IupHide(iuplua_checkihandle(1)));
+}
+
+static void Popup(void)
+{
+ lua_pushnumber(IupPopup(iuplua_checkihandle(1),
+ luaL_opt_int(2, IUP_CURRENT), luaL_opt_int(3, IUP_CURRENT)));
+}
+
+static void Insert(void)
+{
+ if (lua_isnil(lua_getparam(2)))
+ iuplua_pushihandle(IupInsert(iuplua_checkihandle(1), NULL, iuplua_checkihandle(3)));
+ else
+ iuplua_pushihandle(IupInsert(iuplua_checkihandle(1), iuplua_checkihandle(2), iuplua_checkihandle(3)));
+}
+
+static void Append(void)
+{
+ iuplua_pushihandle(IupAppend(iuplua_checkihandle(1), iuplua_checkihandle(2)));
+}
+
+static void GetNextChild(void)
+{
+ if (lua_isnil(lua_getparam(2)))
+ iuplua_pushihandle(IupGetNextChild(iuplua_checkihandle(1), NULL));
+ else
+ iuplua_pushihandle(IupGetNextChild(iuplua_checkihandle(1), iuplua_checkihandle(2)));
+}
+
+static void ConvertXYToPos(void)
+{
+ lua_pushnumber(IupConvertXYToPos(iuplua_checkihandle(1), luaL_check_int(2), luaL_check_int(3)));
+}
+
+static void TextConvertLinColToPos(void)
+{
+ int pos;
+ IupTextConvertLinColToPos(iuplua_checkihandle(1), luaL_check_int(2), luaL_check_int(3), &pos);
+ lua_pushnumber(pos);
+}
+
+static void TextConvertPosToLinCol(void)
+{
+ int lin, col;
+ IupTextConvertPosToLinCol(iuplua_checkihandle(1), luaL_check_int(2), &lin, &col);
+ lua_pushnumber(lin);
+ lua_pushnumber(col);
+}
+
+static void GetChildPos(void)
+{
+ lua_pushnumber(IupGetChildPos(iuplua_checkihandle(1), iuplua_checkihandle(2)));
+}
+
+static void GetDialogChild(void)
+{
+ iuplua_pushihandle(IupGetDialogChild(iuplua_checkihandle(1), luaL_check_string(2)));
+}
+
+static void GetBrother(void)
+{
+ iuplua_pushihandle(IupGetBrother(iuplua_checkihandle(1)));
+}
+
+static void ClassName(void)
+{
+ lua_pushstring(IupGetClassName(iuplua_checkihandle(1)));
+}
+
+static void ClassType(void)
+{
+ lua_pushstring(IupGetClassType(iuplua_checkihandle(1)));
+}
+
+static void GetFocus(void)
+{
+ iuplua_pushihandle(IupGetFocus());
+}
+
+static void SetFocus(void)
+{
+ IupSetFocus(iuplua_checkihandle(1));
+}
+
+static void GetName(void)
+{
+ char* s = IupGetName(iuplua_checkihandle(1));
+ lua_pushstring(s);
+}
+
+static void Alarm(void)
+{
+ lua_pushnumber(IupAlarm(luaL_check_string(1),
+ luaL_check_string(2),
+ luaL_check_string(3),
+ luaL_opt_string(4, NULL),
+ luaL_opt_string(5, NULL)));
+}
+
+static void GetFile(void)
+{
+ char buffer[10240];
+ int ret;
+ strcpy(buffer, luaL_check_string(1));
+ ret = IupGetFile(buffer);
+ lua_pushstring(buffer);
+ lua_pushnumber(ret);
+}
+
+static void GetParent(void)
+{
+ Ihandle *p = IupGetParent(iuplua_checkihandle(1));
+ iuplua_pushihandle(p);
+}
+
+static void MapFont(void)
+{
+ lua_pushstring(IupMapFont(luaL_check_string(1)));
+}
+
+static void UnMapFont(void)
+{
+ lua_pushstring(IupUnMapFont(luaL_check_string(1)));
+}
+
+static void GetLanguage(void)
+{
+ lua_pushstring(IupGetLanguage());
+}
+
+static void SetLanguage(void)
+{
+ IupSetLanguage(luaL_check_string(1));
+}
+
+static void ListDialog(void)
+{
+ lua_Object list_tbl = luaL_tablearg(4);
+ lua_Object marks_tbl;
+ int i, ret;
+ char **list;
+ int *marks = NULL;
+
+ int type = luaL_check_int(1);
+ char* title = luaL_check_string(2);
+ int size = luaL_check_int(3);
+ int opt = luaL_check_int(5);
+ int max_col = luaL_check_int(6);
+ int max_lin = luaL_check_int(7);
+
+ marks_tbl = lua_getparam(8);
+ if (!lua_isnil(marks_tbl))
+ {
+ luaL_arg_check(lua_istable(marks_tbl), 8, "table expected");
+ marks = malloc(sizeof(int) * size);
+ }
+
+ if (!marks && type==2)
+ lua_error("invalid marks, must not be nil.");
+
+ list = malloc(sizeof(char *) * size);
+
+ for (i = 0; i < size; i++)
+ {
+ lua_beginblock();
+
+ lua_pushobject(list_tbl);
+ lua_pushnumber(i + 1);
+ list[i] = lua_getstring(lua_gettable());
+
+ if (marks)
+ {
+ lua_pushobject(marks_tbl);
+ lua_pushnumber(i + 1);
+ marks[i] = (int) lua_getnumber(lua_gettable());
+ }
+
+ lua_endblock();
+ }
+
+ ret = IupListDialog(type, title, size, list, opt, max_col, max_lin, marks);
+
+ if (marks && type==2 && ret!=-1)
+ {
+ for (i = 0; i < size; i++)
+ {
+ lua_beginblock();
+ lua_pushobject(marks_tbl);
+ lua_pushnumber(i + 1);
+ lua_pushnumber(marks[i]);
+ lua_settable();
+ lua_endblock();
+ }
+ }
+
+ lua_pushnumber(ret);
+
+ if (marks) free(marks);
+ free(list);
+}
+
+static void Message(void)
+{
+ IupMessage(luaL_check_string(1), luaL_check_string(2));
+}
+
+static void GetText(void)
+{
+ char buffer[10240];
+ strcpy(buffer, luaL_check_string(2));
+ if(IupGetText(luaL_check_string(1), buffer))
+ lua_pushstring(buffer);
+ else
+ lua_pushnil();
+}
+
+static void GetAttributes(void)
+{
+ Ihandle *ih = iuplua_checkihandle(1);
+ char *value = IupGetAttributes(ih);
+ lua_pushstring(value);
+}
+
+static void GetAllAttributes(void)
+{
+ int max_n = luaL_check_int(2);
+ char **names = (char **) malloc(max_n * sizeof(char *));
+ int i;
+ int n = IupGetAllAttributes(iuplua_checkihandle(1), names, max_n);
+
+ lua_Object tb = lua_createtable();
+ for (i = 0; i < n; i++)
+ {
+ lua_beginblock();
+ lua_pushobject(tb);
+ lua_pushnumber(i);
+ lua_pushstring(names[i]);
+ lua_settable();
+ lua_endblock(); /* end a section and starts another */
+ }
+
+ lua_pushobject(tb);
+ lua_pushnumber(n);
+ free(names);
+}
+
+static void GetClassAttributes(void)
+{
+ int max_n = luaL_check_int(2);
+ char **names = (char **) malloc(max_n * sizeof(char *));
+ int n = IupGetClassAttributes(luaL_check_string(1), names, max_n);
+ lua_Object tb;
+ int i;
+
+ if (n == -1)
+ {
+ lua_pushnil();
+ return;
+ }
+
+ tb = lua_createtable();
+ for (i = 0; i < n; i++)
+ {
+ lua_beginblock();
+ lua_pushobject(tb);
+ lua_pushnumber(i);
+ lua_pushstring(names[i]);
+ lua_settable();
+ lua_endblock(); /* end a section and starts another */
+ }
+
+ lua_pushobject(tb);
+ lua_pushnumber(n);
+ free(names);
+}
+
+static void GetAllNames(void)
+{
+ int max_n = luaL_check_int(1);
+ char **names = (char **) malloc(max_n * sizeof(char *));
+ int i;
+ int n = IupGetAllNames(names, max_n);
+
+ lua_Object tb = lua_createtable();
+ for (i = 0; i < n; i++)
+ {
+ lua_beginblock();
+ lua_pushobject(tb);
+ lua_pushnumber(i);
+ lua_pushstring(names[i]);
+ lua_settable();
+ lua_endblock(); /* end a section and starts another */
+ }
+
+ lua_pushobject(tb);
+ lua_pushnumber(n);
+ free(names);
+}
+
+static void SetClassDefaultAttribute(void)
+{
+ IupSetClassDefaultAttribute(luaL_check_string(1), luaL_check_string(2), luaL_opt_string(3,NULL));
+}
+
+static void GetAllDialogs(void)
+{
+ int max_n = luaL_check_int(1);
+ char **names = (char **) malloc(max_n * sizeof(char *));
+ int i;
+ int n = IupGetAllDialogs(names, 100);
+
+ lua_Object tb = lua_createtable();
+ for (i = 0; i < n; i++)
+ {
+ lua_beginblock();
+ lua_pushobject(tb);
+ lua_pushnumber(i);
+ lua_pushstring(names[i]);
+ lua_settable();
+ lua_endblock(); /* end a section and starts another */
+ }
+
+ lua_pushobject(tb);
+ lua_pushnumber(n);
+ free(names);
+}
+
+static void GetGlobal(void)
+{
+ const char* a = luaL_check_string(1);
+ char *v = IupGetGlobal(a);
+ if (iupGlobalIsPointer(a))
+ lua_pushuserdata((void*)v);
+ else
+ lua_pushstring(v);
+}
+
+static void SetGlobal(void)
+{
+ IupStoreGlobal(luaL_check_string(1), luaL_check_string(2));
+}
+
+static void LoopStep(void)
+{
+ lua_pushnumber(IupLoopStep());
+}
+
+static void ExitLoop(void)
+{
+ IupExitLoop();
+}
+
+static void Version(void)
+{
+ lua_pushstring(IupVersion());
+}
+
+static void MainLoop(void)
+{
+ lua_pushnumber(IupMainLoop());
+}
+
+static void MainLoopLevel(void)
+{
+ lua_pushnumber(IupMainLoopLevel());
+}
+
+static void Open(void)
+{
+ lua_pushnumber(IupOpen(NULL, NULL));
+}
+
+static void Help(void)
+{
+ IupHelp(luaL_check_string(1));
+}
+
+int iupluaapi_open(void)
+{
+ struct FuncList {
+ char *name;
+ lua_CFunction func;
+ } FuncList[] = {
+ { "IupGetAttribute", GetAttribute },
+ { "IupGetAttributeData", GetAttributeData },
+ { "IupGetHandle", GetHandle },
+ { "IupGetDialog", GetDialog },
+ { "IupSetAttribute", SetAttribute },
+ { "IupSetHandle", SetHandle },
+ { "IupDestroy", Destroy },
+ { "IupDetach", Detach },
+ { "IupMap", Map },
+ { "IupUnmap", Unmap },
+ { "IupShow", Show },
+ { "IupGetChildCount", GetChildCount },
+ { "IupRefresh", Refresh },
+ { "IupUpdate", Update },
+ { "IupUpdateChildren", UpdateChildren },
+ { "IupRedraw", Redraw },
+ { "IupVersionNumber", VersionNumber },
+ { "IupShowXY", ShowXY },
+ { "IupHide", Hide },
+ { "IupPopup", Popup },
+ { "IupAppend", Append },
+ { "IupInsert", Insert },
+ { "IupReparent", Reparent },
+ { "IupSaveImageAsText", SaveImageAsText },
+ { "IupGetNextChild", GetNextChild },
+ { "IupGetChildPos", GetChildPos },
+ { "IupGetBrother", GetBrother },
+ { "IupGetDialogChild", GetDialogChild },
+ { "IupGetClassName", ClassName },
+ { "IupGetClassType", ClassType },
+ { "IupGetFocus", GetFocus },
+ { "IupSetFocus", SetFocus },
+ { "IupGetName", GetName },
+ { "IupAlarm", Alarm },
+ { "IupGetFile", GetFile },
+ { "IupMapFont", MapFont },
+ { "IupGetParent", GetParent },
+ { "IupUnMapFont", UnMapFont },
+ { "IupSetLanguage", SetLanguage },
+ { "IupGetLanguage", GetLanguage },
+ { "IupListDialog", ListDialog },
+ { "IupMessage", Message },
+ { "IupGetText", GetText },
+ { "IupGetAttributes", GetAttributes },
+ { "IupGetAllAttributes", GetAllAttributes },
+ { "IupSetClassDefaultAttribute", SetClassDefaultAttribute},
+ { "IupGetClassAttributes", GetClassAttributes },
+ { "IupGetAllNames", GetAllNames },
+ { "IupGetAllDialogs", GetAllDialogs },
+ { "IupGetGlobal", GetGlobal },
+ { "IupSetGlobal", SetGlobal },
+ { "IupLoopStep", LoopStep },
+ { "IupExitLoop", ExitLoop },
+ { "IupMainLoop", MainLoop },
+ { "IupMainLoopLevel", MainLoopLevel },
+ { "IupOpen", Open },
+ { "IupClose", (lua_CFunction)IupClose },
+ { "IupFlush", IupFlush },
+ { "IupVersion", Version },
+ { "IupHelp", Help },
+ { "IupScanf", iupluaScanf },
+ { "IupTextConvertLinColToPos", TextConvertLinColToPos},
+ { "IupTextConvertPosToLinCol", TextConvertPosToLinCol},
+ { "IupConvertXYToPos", ConvertXYToPos},
+ { "IupPreviousField", PreviousField },
+ { "IupNextField", NextField }
+ };
+ int SizeFuncList = (sizeof(FuncList)/sizeof(struct FuncList));
+ int i;
+
+ for (i = 0; i < SizeFuncList; i++)
+ iuplua_register(FuncList[i].name, FuncList[i].func);
+
+ iuplua_register_macro("isbutton1",cf_isbutton1);
+ iuplua_register_macro("isbutton2",cf_isbutton2);
+ iuplua_register_macro("isbutton3",cf_isbutton3);
+ iuplua_register_macro("isshift",cf_isshift);
+ iuplua_register_macro("iscontrol",cf_iscontrol);
+ iuplua_register_macro("isdouble",cf_isdouble);
+ iuplua_register_macro("isalt",cf_isalt);
+ iuplua_register_macro("issys",cf_issys);
+ iuplua_register_macro("isbutton4",cf_isbutton4);
+ iuplua_register_macro("isbutton5",cf_isbutton5);
+ iuplua_register_macro("isprint",cf_isprint);
+ iuplua_register_macro("IUPxCODE", codekey);
+ iuplua_register_macro("isxkey", cf_isxkey);
+ iuplua_register_macro("isXkey", cf_isxkey);
+ iuplua_register_macro("isShiftXkey", cf_isShiftXkey);
+ iuplua_register_macro("isCtrlXkey", cf_isCtrlXkey);
+ iuplua_register_macro("isAltXkey", cf_isAltXkey);
+ iuplua_register_macro("isSysXkey", cf_isSysXkey);
+
+ return 1;
+}
diff --git a/iup/srclua3/iuplua_cd.c b/iup/srclua3/iuplua_cd.c
new file mode 100755
index 0000000..d0a38ad
--- /dev/null
+++ b/iup/srclua3/iuplua_cd.c
@@ -0,0 +1,43 @@
+/** \file
+ * \brief IUP Canvas Lua 3 Binding
+ *
+ * See Copyright Notice in cd.h
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <cd.h>
+#include <cdiup.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+
+#include <cdlua.h>
+#include <cdluaiup.h>
+#include <cdlua3_private.h>
+
+
+static void *cdiup_checkdata(int param)
+{
+ return iuplua_checkihandle(param);
+}
+
+static cdContextLUA cdluaiupctx =
+{
+ 0,
+ "CD_IUP",
+ cdContextIup,
+ cdiup_checkdata,
+ NULL,
+ 0
+};
+
+void cdluaiup_open(void)
+{
+ cdlua_addcontext(&cdluaiupctx);
+}
+
diff --git a/iup/srclua3/iuplua_controls.c b/iup/srclua3/iuplua_controls.c
new file mode 100755
index 0000000..a2414d1
--- /dev/null
+++ b/iup/srclua3/iuplua_controls.c
@@ -0,0 +1,25 @@
+/** \file
+ * \brief Bindig of iupcontrols to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <lua.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "iupluacontrols.h"
+#include "il.h"
+#include "il_controls.h"
+
+int iupcontrolslua_open(void)
+{
+ gaugelua_open();
+ matrixlua_open();
+ masklua_open();
+ diallua_open();
+ cblua_open();
+ colorbarlua_open();
+ cellslua_open();
+ return 1;
+}
diff --git a/iup/srclua3/iuplua_glcanvas.c b/iup/srclua3/iuplua_glcanvas.c
new file mode 100755
index 0000000..57f696b
--- /dev/null
+++ b/iup/srclua3/iuplua_glcanvas.c
@@ -0,0 +1,112 @@
+/** \file
+ * \brief Bindig of iupgl to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iupgl.h"
+
+#include "iuplua.h"
+#include "iupluagl.h"
+#include "il.h"
+
+#ifdef _WIN32
+#include <windows.h>
+#endif
+#include <GL/gl.h>
+
+
+static void createglcanvas(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupGLCanvas(NULL), tag);
+}
+
+static void iscurrent(void)
+{
+ lua_pushnumber(IupGLIsCurrent(iuplua_checkihandle(1)));
+}
+
+static void makecurrent(void)
+{
+ IupGLMakeCurrent(iuplua_checkihandle(1));
+
+ iuplua_regstring_mask((char*)glGetString(GL_VENDOR), "IUPGL_VENDOR");
+ iuplua_regstring_mask((char*)glGetString(GL_RENDERER), "IUPGL_RENDERER");
+ iuplua_regstring_mask((char*)glGetString(GL_VERSION), "IUPGL_VERSION");
+}
+
+static void swapbuffers(void)
+{
+ IupGLSwapBuffers(iuplua_checkihandle(1));
+}
+
+static void palette(void)
+{
+ IupGLPalette(iuplua_checkihandle(1),
+ luaL_check_int(2),
+ (float)luaL_check_number(3),
+ (float)luaL_check_number(4),
+ (float)luaL_check_number(5));
+}
+
+static void usefont(void)
+{
+ IupGLUseFont(iuplua_checkihandle(1),
+ luaL_check_int(2),
+ luaL_check_int(3),
+ luaL_check_int(4));
+}
+
+static void glwait(void)
+{
+ IupGLWait(luaL_check_int(1));
+}
+
+int iupgllua_open (void)
+{
+ iuplua_register("iupCreateGLCanvas",createglcanvas);
+ iuplua_register("IupGLMakeCurrent",makecurrent);
+ iuplua_register("IupGLIsCurrent",iscurrent);
+ iuplua_register("IupGLSwapBuffers",swapbuffers);
+ iuplua_register("IupGLPalette",palette);
+ iuplua_register("IupGLUseFont",usefont);
+ iuplua_register("IupGLWait",glwait);
+
+ iuplua_regstring("BUFFER", "IUP_BUFFER");
+ iuplua_regstring("STEREO", "IUP_STEREO");
+ iuplua_regstring("COLOR", "IUP_COLOR");
+ iuplua_regstring("BUFFER_SIZE", "IUP_BUFFER_SIZE");
+ iuplua_regstring("RED_SIZE", "IUP_RED_SIZE");
+ iuplua_regstring("GREEN_SIZE", "IUP_GREEN_SIZE");
+ iuplua_regstring("BLUE_SIZE", "IUP_BLUE_SIZE");
+ iuplua_regstring("ALPHA_SIZE", "IUP_ALPHA_SIZE");
+ iuplua_regstring("DEPTH_SIZE", "IUP_DEPTH_SIZE");
+ iuplua_regstring("STENCIL_SIZE", "IUP_STENCIL_SIZE");
+ iuplua_regstring("ACCUM_RED_SIZE", "IUP_ACCUM_RED_SIZE");
+ iuplua_regstring("ACCUM_GREEN_SIZE", "IUP_ACCUM_GREEN_SIZE");
+ iuplua_regstring("ACCUM_BLUE_SIZE", "IUP_ACCUM_BLUE_SIZE");
+ iuplua_regstring("ACCUM_ALPHA_SIZE", "IUP_ACCUM_ALPHA_SIZE");
+ iuplua_regstring("DOUBLE", "IUP_DOUBLE");
+ iuplua_regstring("SINGLE", "IUP_SINGLE");
+ iuplua_regstring("INDEX", "IUP_INDEX");
+ iuplua_regstring("RGBA", "IUP_RGBA");
+ iuplua_regstring("YES", "IUP_YES");
+ iuplua_regstring("NO", "IUP_NO");
+
+ return lua_dostring("IUPGLCANVAS = {parent = IUPCANVAS}\n"
+ "function IUPGLCANVAS:CreateIUPelement (obj)\n"
+ " return iupCreateGLCanvas ()\n"
+ "end\n"
+ "function iupglcanvas (o)\n"
+ " return IUPGLCANVAS:Constructor (o)\n"
+ "end\n"
+ "iup.glcanvas = iupglcanvas\n"
+ "iup_callbacks.action.glcanvas = iup_action_canvas\n");
+}
diff --git a/iup/srclua3/iuplua_im.c b/iup/srclua3/iuplua_im.c
new file mode 100755
index 0000000..2104e0d
--- /dev/null
+++ b/iup/srclua3/iuplua_im.c
@@ -0,0 +1,39 @@
+/** \file
+ * \brief IULUA core - Bindig of iup to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupim.h"
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iuplua.h"
+#include "iupluaim.h"
+#include "il.h"
+
+static void SaveImage(void)
+{
+ Ihandle* image = iuplua_checkihandle(1);
+ char *filename = luaL_check_string(2);
+ char *format = luaL_check_string(3);
+ lua_pushnumber(IupSaveImage(image, filename, format));
+}
+
+static void LoadImage(void)
+{
+ char *filename = luaL_check_string(1);
+ iuplua_pushihandle(IupLoadImage(filename));
+}
+
+void iupimlua_open(void)
+{
+ iuplua_register("IupLoadImage", LoadImage);
+ iuplua_register("IupSaveImage", SaveImage);
+}
diff --git a/iup/srclua3/iuplua_olecontrol.c b/iup/srclua3/iuplua_olecontrol.c
new file mode 100755
index 0000000..f302713
--- /dev/null
+++ b/iup/srclua3/iuplua_olecontrol.c
@@ -0,0 +1,34 @@
+/** \file
+ * \brief Bindig of iupole to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iupole.h"
+#include "iupluaole.h"
+
+static void createOleControl (void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupOleControl(luaL_check_string(1)),tag);
+}
+
+int iupolelua_open (void)
+{
+ lua_register("iupCreateOleControl",createOleControl);
+
+ return lua_dostring("IUPOLECONTROL = {parent = WIDGET}\n"
+ "function IUPOLECONTROL:CreateIUPelement (obj)\n"
+ " return iupCreateOleControl (obj[1])\n"
+ "end\n"
+ "function iupolecontrol (o)\n"
+ " return IUPOLECONTROL:Constructor (o)\n"
+ "end\n"
+ "iup.olecontrol = iupolecontrol\n");
+}
diff --git a/iup/srclua3/iuplua_pplot.c b/iup/srclua3/iuplua_pplot.c
new file mode 100755
index 0000000..588f203
--- /dev/null
+++ b/iup/srclua3/iuplua_pplot.c
@@ -0,0 +1,241 @@
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "iup_pplot.h"
+
+#include <cd.h>
+#include <cdlua.h>
+
+#include "il.h"
+
+
+static int pplot_edit_cb(Ihandle *self, int p0, int p1, float p2, float p3, float *p4, float *p5)
+{
+ lua_Object obj;
+ iuplua_call_start(self, "edit_cb");
+ lua_pushnumber(p0);
+ lua_pushnumber(p1);
+ lua_pushnumber(p2);
+ lua_pushnumber(p3);
+ if (lua_call ("iupCallMethod"))
+ {
+ lua_endblock ();
+ return IUP_IGNORE;
+ }
+ obj = lua_getresult (1);
+ if (obj == LUA_NOOBJECT)
+ {
+ lua_endblock ();
+ return IUP_IGNORE;
+ }
+ else if (lua_isnumber (obj))
+ {
+ int ret;
+ *p4 = (float)lua_getnumber (obj);
+
+ obj = lua_getresult (2);
+ if (obj == LUA_NOOBJECT || !lua_isnumber (obj))
+ {
+ lua_endblock ();
+ return IUP_IGNORE;
+ }
+ *p5 = (float)lua_getnumber (obj);
+
+ obj = lua_getresult (4);
+ if (obj == LUA_NOOBJECT || !lua_isnumber (obj))
+ {
+ lua_endblock ();
+ return IUP_DEFAULT;
+ }
+ ret = (int)lua_getnumber (obj);
+ lua_endblock ();
+ return ret;
+ }
+
+ lua_endblock ();
+ return IUP_IGNORE;
+}
+
+static int pplot_postdraw_cb(Ihandle *self, cdCanvas* cnv)
+{
+ iuplua_call_start(self, "postdraw_cb");
+ cdlua_pushcanvas(cnv);
+ return iuplua_call();
+}
+
+static int pplot_predraw_cb(Ihandle *self, cdCanvas* cnv)
+{
+ iuplua_call_start(self, "predraw_cb");
+ cdlua_pushcanvas(cnv);
+ return iuplua_call();
+}
+
+static int pplot_deleteend_cb(Ihandle *self)
+{
+ iuplua_call_start(self, "deleteend_cb");
+ return iuplua_call();
+}
+
+static int pplot_selectbegin_cb(Ihandle *self)
+{
+ iuplua_call_start(self, "selectbegin_cb");
+ return iuplua_call();
+}
+
+static int pplot_editend_cb(Ihandle *self)
+{
+ iuplua_call_start(self, "editend_cb");
+ return iuplua_call();
+}
+
+static int pplot_editbegin_cb(Ihandle *self)
+{
+ iuplua_call_start(self, "editbegin_cb");
+ return iuplua_call();
+}
+
+static int pplot_selectend_cb(Ihandle *self)
+{
+ iuplua_call_start(self, "selectend_cb");
+ return iuplua_call();
+}
+
+static int pplot_select_cb(Ihandle *self, int p0, int p1, float p2, float p3, int p4)
+{
+ iuplua_call_start(self, "select_cb");
+ lua_pushnumber(p0);
+ lua_pushnumber(p1);
+ lua_pushnumber(p2);
+ lua_pushnumber(p3);
+ lua_pushnumber(p4);
+ return iuplua_call();
+}
+
+static int pplot_deletebegin_cb(Ihandle *self)
+{
+ iuplua_call_start(self, "deletebegin_cb");
+ return iuplua_call();
+}
+
+static int pplot_delete_cb(Ihandle *self, int p0, int p1, float p2, float p3)
+{
+ iuplua_call_start(self, "delete_cb");
+ lua_pushnumber(p0);
+ lua_pushnumber(p1);
+ lua_pushnumber(p2);
+ lua_pushnumber(p3);
+ return iuplua_call();
+}
+
+static void PPlot(void)
+{
+ int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag"));
+ lua_pushusertag(IupPPlot(), tag);
+}
+
+static void PPlotBegin(void)
+{
+ Ihandle *ih = iuplua_checkihandle(1);
+ IupPPlotBegin(ih, luaL_check_int(2));
+}
+
+static void PPlotAdd(void)
+{
+ Ihandle *ih = iuplua_checkihandle(1);
+ IupPPlotAdd(ih, (float)luaL_check_number(2), (float)luaL_check_number(3));
+}
+
+static void PPlotAddStr(void)
+{
+ Ihandle *ih = iuplua_checkihandle(1);
+ IupPPlotAddStr(ih, luaL_check_string(2), (float)luaL_check_number(3));
+}
+
+static void PPlotEnd(void)
+{
+ Ihandle *ih = iuplua_checkihandle(1);
+ int ret = IupPPlotEnd(ih);
+ lua_pushnumber(ret);
+}
+
+static void PPlotInsertStr(void)
+{
+ Ihandle *ih = iuplua_checkihandle(1);
+ IupPPlotInsertStr(ih, luaL_check_int(2), luaL_check_int(3), luaL_check_string(4), (float)luaL_check_number(5));
+}
+
+static void PPlotInsert(void)
+{
+ Ihandle *ih = iuplua_checkihandle(1);
+ IupPPlotInsert(ih, luaL_check_int(2), luaL_check_int(3), (float)luaL_check_number(4), (float)luaL_check_number(5));
+}
+
+static void PPlotTransform(void)
+{
+ Ihandle *ih = iuplua_checkihandle(1);
+ int ix, iy;
+ IupPPlotTransform(ih, (float)luaL_check_number(2), (float)luaL_check_number(3), &ix, &iy);
+ lua_pushnumber(ix);
+ lua_pushnumber(iy);
+}
+
+static void PPlotPaintTo(void)
+{
+ Ihandle *ih = iuplua_checkihandle(1);
+ IupPPlotPaintTo(ih, cdlua_checkcanvas(2));
+}
+
+int iup_pplotlua_open(void)
+{
+ lua_register("iupCreatePPlot", PPlot);
+
+ lua_register("iup_pplot_edit_cb", (lua_CFunction)pplot_edit_cb);
+ lua_register("iup_pplot_deleteend_cb", (lua_CFunction)pplot_deleteend_cb);
+ lua_register("iup_pplot_selectbegin_cb", (lua_CFunction)pplot_selectbegin_cb);
+ lua_register("iup_pplot_postdraw_cb", (lua_CFunction)pplot_postdraw_cb);
+ lua_register("iup_pplot_editend_cb", (lua_CFunction)pplot_editend_cb);
+ lua_register("iup_pplot_editbegin_cb", (lua_CFunction)pplot_editbegin_cb);
+ lua_register("iup_pplot_selectend_cb", (lua_CFunction)pplot_selectend_cb);
+ lua_register("iup_pplot_select_cb", (lua_CFunction)pplot_select_cb);
+ lua_register("iup_pplot_deletebegin_cb", (lua_CFunction)pplot_deletebegin_cb);
+ lua_register("iup_pplot_predraw_cb", (lua_CFunction)pplot_predraw_cb);
+ lua_register("iup_pplot_delete_cb", (lua_CFunction)pplot_delete_cb);
+
+ iuplua_register("IupPPlotBegin", PPlotBegin);
+ iuplua_register("IupPPlotAdd", PPlotAdd);
+ iuplua_register("IupPPlotAddStr", PPlotAddStr);
+ iuplua_register("IupPPlotEnd", PPlotEnd);
+ iuplua_register("IupPPlotInsertStr", PPlotInsertStr);
+ iuplua_register("IupPPlotInsert", PPlotInsert);
+ iuplua_register("IupPPlotTransform", PPlotTransform);
+ iuplua_register("IupPPlotPaintTo", PPlotPaintTo);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/pplot_be64.loh"
+#else
+#include "loh/pplot_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/pplot_le64w.loh"
+#else
+#include "loh/pplot_le64.loh"
+#endif
+#else
+#include "loh/pplot.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("luapplot.lua");
+#endif
+
+ return 1;
+}
+
diff --git a/iup/srclua3/iuplua_pplot3.def b/iup/srclua3/iuplua_pplot3.def
new file mode 100755
index 0000000..3701b0f
--- /dev/null
+++ b/iup/srclua3/iuplua_pplot3.def
@@ -0,0 +1,2 @@
+EXPORTS
+ iup_pplotlua_open
diff --git a/iup/srclua3/iuplua_widgets.c b/iup/srclua3/iuplua_widgets.c
new file mode 100755
index 0000000..f6b801b
--- /dev/null
+++ b/iup/srclua3/iuplua_widgets.c
@@ -0,0 +1,662 @@
+/** \file
+ * \brief IULUA core - Bindig of iup to Lua 3.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+
+#include "iuplua.h"
+#include "il.h"
+
+
+static int iuplua_tag = 0;
+
+static int valuechanged_cb(Ihandle* handle)
+{
+ iuplua_call_start(handle, "valuechanged_cb");
+ return iuplua_call();
+}
+
+static int file_cb(Ihandle* handle, char* file_name, char* status)
+{
+ iuplua_call_start(handle, "file_cb");
+ lua_pushstring(file_name);
+ lua_pushstring(status);
+ return iuplua_call();
+}
+
+static int text_action(Ihandle* handle, int carac, char *newtext)
+{
+ iuplua_call_start(handle, "action");
+ lua_pushnumber(carac);
+ lua_pushstring(newtext);
+ return iuplua_call();
+}
+
+static int timer_action(Ihandle* handle)
+{
+ iuplua_call_start(handle, "actioncb");
+ return iuplua_call();
+}
+
+static int button_action(Ihandle* handle)
+{
+ iuplua_call_start(handle, "action");
+ return iuplua_call();
+}
+
+static int toggle_action(Ihandle* handle, int v)
+{
+ iuplua_call_start(handle, "action");
+ lua_pushnumber(v);
+ return iuplua_call();
+}
+
+static int iupluaCanvasFocusCb(Ihandle* handle, int focus)
+{
+ iuplua_call_start(handle, "focus");
+ lua_pushnumber(focus);
+ return iuplua_call();
+}
+
+static int iupluaGetfocusCb(Ihandle* handle)
+{
+ iuplua_call_start(handle, "getfocus");
+ return iuplua_call();
+}
+
+static int iupluaKillfocusCb(Ihandle* handle)
+{
+ iuplua_call_start(handle, "killfocus");
+ return iuplua_call();
+}
+
+static int item_highlight(Ihandle* handle)
+{
+ iuplua_call_start(handle, "highlight");
+ return iuplua_call();
+}
+
+static int menu_open(Ihandle* handle)
+{
+ iuplua_call_start(handle, "open");
+ return iuplua_call();
+}
+
+static int menu_close(Ihandle* handle)
+{
+ iuplua_call_start(handle, "menu_close");
+ return iuplua_call();
+}
+
+static int iupluaKanyCb(Ihandle* handle, int carac)
+{
+ iuplua_call_start(handle, "k_any");
+ lua_pushnumber(carac);
+ return iuplua_call();
+}
+
+static int iupluaHelpCb(Ihandle* handle)
+{
+ iuplua_call_start(handle, "help");
+ return iuplua_call();
+}
+
+static int iupluaCanvasKeypressCb(Ihandle *handle, int carac, int press)
+{
+ iuplua_call_start(handle, "keypress");
+ lua_pushnumber(carac);
+ lua_pushnumber(press);
+ return iuplua_call();
+}
+
+static int iupluaCanvasScrollCb(Ihandle *handle, int op, float posx, float posy)
+{
+ iuplua_call_start(handle, "scroll");
+ lua_pushnumber(op);
+ lua_pushnumber(posx);
+ lua_pushnumber(posy);
+ return iuplua_call();
+}
+
+static int text_caret(Ihandle *handle, int row, int col, int pos)
+{
+ iuplua_call_start(handle, "caretcb");
+ lua_pushnumber(row);
+ lua_pushnumber(col);
+ lua_pushnumber(pos);
+ return iuplua_call();
+}
+
+static int list_dblclick_cb(Ihandle *handle, int p0, char * p1)
+{
+ iuplua_call_start(handle, "dblclick_cb");
+ lua_pushnumber(p0);
+ lua_pushstring(p1);
+ return iuplua_call();
+}
+
+static int list_dropdown_cb(Ihandle *handle, int p0)
+{
+ iuplua_call_start(handle, "dropdown_cb");
+ lua_pushnumber(p0);
+ return iuplua_call();
+}
+
+static int dialog_close(Ihandle* handle)
+{
+ iuplua_call_start(handle, "close");
+ return iuplua_call();
+}
+
+static int dialog_show(Ihandle* handle, int v)
+{
+ iuplua_call_start(handle, "showcb");
+ lua_pushnumber(v);
+ return iuplua_call();
+}
+
+static int iupluaUnMapCb(Ihandle* handle)
+{
+ iuplua_call_start(handle, "unmapcb");
+ return iuplua_call();
+}
+
+static int iupluaMapCb(Ihandle* handle)
+{
+ iuplua_call_start(handle, "mapcb");
+ return iuplua_call();
+}
+
+static int iupluaDropfilesCb(Ihandle *handle, char* filename, int numFile, int posx, int posy)
+{
+ iuplua_call_start(handle, "dropfiles");
+ lua_pushstring(filename);
+ lua_pushnumber(numFile);
+ lua_pushnumber(posx);
+ lua_pushnumber(posy);
+ return iuplua_call();
+}
+
+static int dialog_trayclick(Ihandle *handle, int p1, int p2, int p3)
+{
+ iuplua_call_start(handle, "trayclick");
+ lua_pushnumber(p1);
+ lua_pushnumber(p2);
+ lua_pushnumber(p3);
+ return iuplua_call();
+}
+
+static int iupluaCanvasAction(Ihandle* handle, float x, float y)
+{
+ iuplua_call_start(handle, "action");
+ lua_pushnumber(x);
+ lua_pushnumber(y);
+ return iuplua_call();
+}
+
+static int iupluaCanvasButtonCb(Ihandle* handle, int b, int e, int x, int y, char *r)
+{
+ iuplua_call_start(handle, "button");
+ lua_pushnumber(b);
+ lua_pushnumber(e);
+ lua_pushnumber(x);
+ lua_pushnumber(y);
+ lua_pushstring(r);
+ return iuplua_call();
+}
+
+static int iupluaCanvasResizeCb(Ihandle* handle, int w, int h)
+{
+ iuplua_call_start(handle, "resize");
+ lua_pushnumber(w);
+ lua_pushnumber(h);
+ return iuplua_call();
+}
+
+static int iupluaCanvasMotionCb(Ihandle* handle, int x, int y, char *r)
+{
+ iuplua_call_start(handle, "motion");
+ lua_pushnumber(x);
+ lua_pushnumber(y);
+ lua_pushstring(r);
+ return iuplua_call();
+}
+
+static int iupluaDialogMoveCb(Ihandle* handle, int x, int y)
+{
+ iuplua_call_start(handle, "move");
+ lua_pushnumber(x);
+ lua_pushnumber(y);
+ return iuplua_call();
+}
+
+static int canvas_mdiactivate(Ihandle* handle)
+{
+ iuplua_call_start(handle, "mdiactivatecb");
+ return iuplua_call();
+}
+
+static int iupluaCanvasEnterwindowCb(Ihandle* handle)
+{
+ iuplua_call_start(handle, "enterwindow");
+ return iuplua_call();
+}
+
+static int iupluaCanvasLeavewindowCb(Ihandle* handle)
+{
+ iuplua_call_start(handle, "leavewindow");
+ return iuplua_call();
+}
+
+static int iupluaCanvasWheelCb(Ihandle* handle, float delta, int x, int y, char *r)
+{
+ iuplua_call_start(handle, "wheel");
+ lua_pushnumber(delta);
+ lua_pushnumber(x);
+ lua_pushnumber(y);
+ lua_pushstring(r);
+ return iuplua_call();
+}
+
+static int iupluaCanvasWomCb(Ihandle* handle, int i)
+{
+ iuplua_call_start(handle, "wom");
+ lua_pushnumber(i);
+ return iuplua_call();
+}
+
+static int list_edit(Ihandle *handle, int c, char *after)
+{
+ iuplua_call_start(handle, "edit");
+ lua_pushnumber(c);
+ lua_pushstring(after);
+ return iuplua_call();
+}
+
+static int list_action(Ihandle* handle, char *text, int opt, int select)
+{
+ iuplua_call_start(handle, "action");
+ lua_pushstring(text);
+ lua_pushnumber(opt);
+ lua_pushnumber(select);
+ return iuplua_call();
+}
+
+static int list_multiselect(Ihandle *handle, char *value)
+{
+ iuplua_call_start(handle, "multiselect");
+ lua_pushstring(value);
+ return iuplua_call();
+}
+
+/***********************************************************************************
+***********************************************************************************/
+
+static void CreateTimer(void)
+{
+ lua_pushusertag(IupTimer(), iuplua_tag);
+}
+
+static void CreateClipboard(void)
+{
+ lua_pushusertag(IupClipboard(), iuplua_tag);
+}
+
+static void CreateDialog(void)
+{
+ lua_pushusertag(IupDialog(iuplua_checkihandle(1)), iuplua_tag);
+}
+
+static void CreateRadio(void)
+{
+ lua_pushusertag(IupRadio(iuplua_checkihandle(1)), iuplua_tag);
+}
+
+static void CreateMenu(void)
+{
+ lua_pushusertag(IupMenu(NULL), iuplua_tag);
+}
+
+static void CreateHbox(void)
+{
+ lua_pushusertag(IupHbox(NULL), iuplua_tag);
+}
+
+static void CreateVbox(void)
+{
+ lua_pushusertag(IupVbox(NULL), iuplua_tag);
+}
+
+static void CreateZbox(void)
+{
+ lua_pushusertag(IupZbox(NULL), iuplua_tag);
+}
+
+static void CreateFill(void)
+{
+ lua_pushusertag(IupFill(), iuplua_tag);
+}
+
+static void CreateNormalizer(void)
+{
+ lua_pushusertag(IupNormalizer(NULL), iuplua_tag);
+}
+
+static void CreateButton(void)
+{
+ lua_pushusertag(IupButton(luaL_opt_string(1, NULL), NULL), iuplua_tag);
+}
+
+static void CreateText(void)
+{
+ lua_pushusertag(IupText(NULL), iuplua_tag);
+}
+
+static void CreateMultiLine(void)
+{
+ lua_pushusertag(IupMultiLine(NULL), iuplua_tag);
+}
+
+static void CreateLabel(void)
+{
+ lua_pushusertag(IupLabel(luaL_opt_string(1, NULL)), iuplua_tag);
+}
+
+static void CreateToggle(void)
+{
+ lua_pushusertag(IupToggle(luaL_opt_string(1, NULL), NULL), iuplua_tag);
+}
+
+static void CreateItem(void)
+{
+ lua_pushusertag(IupItem(luaL_opt_string(1, NULL), NULL), iuplua_tag);
+}
+
+static void CreateSubmenu(void)
+{
+ lua_pushusertag(IupSubmenu(luaL_opt_string(1, NULL), iuplua_checkihandle(2)), iuplua_tag);
+}
+
+static void CreateSeparator(void)
+{
+ lua_pushusertag(IupSeparator(), iuplua_tag);
+}
+
+static void CreateFileDlg(void)
+{
+ lua_pushusertag(IupFileDlg(), iuplua_tag);
+}
+
+static void CreateMessageDlg(void)
+{
+ lua_pushusertag(IupMessageDlg(), iuplua_tag);
+}
+
+static void CreateFontDlg(void)
+{
+ lua_pushusertag(IupFontDlg(), iuplua_tag);
+}
+
+static void CreateColorDlg(void)
+{
+ lua_pushusertag(IupColorDlg(), iuplua_tag);
+}
+
+static void CreateProgressBar(void)
+{
+ lua_pushusertag(IupProgressBar(), iuplua_tag);
+}
+
+static void CreateUser(void)
+{
+ lua_pushusertag(IupUser(), iuplua_tag);
+}
+
+static void CreateFrame(void)
+{
+ lua_pushusertag(IupFrame(iuplua_checkihandle(1)), iuplua_tag);
+}
+
+static void CreateCanvas(void)
+{
+ lua_pushusertag(IupCanvas(NULL), iuplua_tag);
+}
+
+static void CreateList(void)
+{
+ lua_pushusertag(IupList(NULL), iuplua_tag);
+}
+
+static void CreateImage(void)
+{
+ int i, j;
+ lua_Object linha;
+ int width, height;
+ unsigned char *pixels;
+ lua_Object obj = luaL_tablearg(3);
+ width = luaL_check_int(1);
+ height = luaL_check_int(2);
+ pixels = (unsigned char *) malloc(width*height);
+
+ for (i = 1; i <= height; i++)
+ {
+ lua_beginblock();
+ lua_pushobject(obj);
+ lua_pushnumber(i);
+ linha = lua_gettable();
+ if (!lua_istable(linha))
+ {
+ lua_endblock();
+ lua_error("iupCreateImage: incorrect value in argument");
+ }
+
+ for (j = 1; j <= width; j++)
+ {
+ lua_Object n;
+ lua_beginblock();
+ lua_pushobject(linha);
+ lua_pushnumber(j);
+ n = lua_gettable();
+ if (!lua_isnumber(n))
+ {
+ lua_endblock();
+ lua_error("iupCreateImage: incorrect value in argument");
+ }
+ pixels[(i - 1) * width + (j - 1)] = (unsigned char) lua_getnumber(n);
+ lua_endblock();
+ }
+
+ lua_pushobject(obj);
+ lua_pushnumber(i);
+ lua_pushnil();
+ lua_settable();
+ lua_endblock();
+ }
+
+ lua_pushusertag(IupImage(width, height, pixels), iuplua_tag);
+ free(pixels);
+}
+
+static void CreateImageRGB(void)
+{
+ int i, count, width, height;
+ unsigned char *pixels;
+ lua_Object n, obj = luaL_tablearg(3);
+ width = luaL_check_int(1);
+ height = luaL_check_int(2);
+ count = width * height * 3;
+ pixels = (unsigned char *) malloc(count);
+
+ for (i = 0; i < count; i++)
+ {
+ lua_beginblock();
+ lua_pushobject(obj);
+ lua_pushnumber(i+1);
+
+ n = lua_gettable();
+ if (!lua_isnumber(n))
+ {
+ lua_endblock();
+ lua_error("iupCreateImage: incorrect value in argument");
+ }
+ pixels[i] = (unsigned char)lua_getnumber(n);
+ lua_endblock();
+ }
+
+ lua_pushusertag(IupImageRGB(width, height, pixels), iuplua_tag);
+ free(pixels);
+}
+
+static void CreateImageRGBA(void)
+{
+ int i, count, width, height;
+ unsigned char *pixels;
+ lua_Object n, obj = luaL_tablearg(3);
+ width = luaL_check_int(1);
+ height = luaL_check_int(2);
+ count = width * height * 4;
+ pixels = (unsigned char *) malloc(count);
+
+ for (i = 0; i < count; i++)
+ {
+ lua_beginblock();
+ lua_pushobject(obj);
+ lua_pushnumber(i+1);
+
+ n = lua_gettable();
+ if (!lua_isnumber(n))
+ {
+ lua_endblock();
+ lua_error("iupCreateImage: incorrect value in argument");
+ }
+ pixels[i] = (unsigned char)lua_getnumber(n);
+ lua_endblock();
+ }
+
+ lua_pushusertag(IupImageRGBA(width, height, pixels), iuplua_tag);
+ free(pixels);
+}
+
+/***********************************************************************************
+***********************************************************************************/
+
+int iupluawidgets_open(int tag)
+{
+ struct FuncList {
+ char *name;
+ lua_CFunction func;
+ } FuncList[] = {
+
+ { "iupCreateButton", CreateButton },
+ { "iupCreateDialog", CreateDialog },
+ { "iupCreateTimer", CreateTimer },
+ { "iupCreateClipboard", CreateClipboard },
+ { "iupCreateHbox", CreateHbox },
+ { "iupCreateVbox", CreateVbox },
+ { "iupCreateZbox", CreateZbox },
+ { "iupCreateText", CreateText },
+ { "iupCreateMultiLine", CreateMultiLine },
+ { "iupCreateLabel", CreateLabel },
+ { "iupCreateToggle", CreateToggle },
+ { "iupCreateItem", CreateItem },
+ { "iupCreateSubmenu", CreateSubmenu },
+ { "iupCreateSeparator", CreateSeparator },
+ { "iupCreateFileDlg", CreateFileDlg },
+ { "iupCreateMessageDlg", CreateMessageDlg},
+ { "iupCreateColorDlg", CreateColorDlg},
+ { "iupCreateFontDlg", CreateFontDlg},
+ { "iupCreateUser", CreateUser },
+ { "iupCreateFrame", CreateFrame },
+ { "iupCreateCanvas", CreateCanvas },
+ { "iupCreateList", CreateList },
+ { "iupCreateImage", CreateImage },
+ { "iupCreateImageRGB", CreateImageRGB },
+ { "iupCreateImageRGBA", CreateImageRGBA },
+ { "iupCreateFill", CreateFill },
+ { "iupCreateRadio", CreateRadio },
+ { "iupCreateMenu", CreateMenu },
+ { "iupCreateProgressBar", CreateProgressBar },
+ { "iupCreateNormalizer", CreateNormalizer },
+
+ { "iup_action_timer", (lua_CFunction)timer_action},
+ { "iup_action_text", (lua_CFunction)text_action},
+ { "iup_action_toggle", (lua_CFunction)toggle_action},
+ { "iup_action_button", (lua_CFunction)button_action},
+ { "iup_action_list", (lua_CFunction)list_action},
+ { "iup_action_canvas", (lua_CFunction)iupluaCanvasAction},
+ { "iup_focus_cb", (lua_CFunction)iupluaCanvasFocusCb},
+ { "iup_keypress_cb", (lua_CFunction)iupluaCanvasKeypressCb},
+ { "iup_scroll_cb", (lua_CFunction)iupluaCanvasScrollCb},
+ { "iup_resize_cb", (lua_CFunction)iupluaCanvasResizeCb},
+ { "iup_move_cb", (lua_CFunction)iupluaDialogMoveCb},
+ { "iup_motion_cb", (lua_CFunction)iupluaCanvasMotionCb},
+ { "iup_mdiactivate_cb", (lua_CFunction)canvas_mdiactivate},
+ { "iup_enterwindow_cb", (lua_CFunction)iupluaCanvasEnterwindowCb},
+ { "iup_leavewindow_cb", (lua_CFunction)iupluaCanvasLeavewindowCb},
+ { "iup_wom_cb", (lua_CFunction)iupluaCanvasWomCb},
+ { "iup_wheel_cb", (lua_CFunction)iupluaCanvasWheelCb},
+ { "iup_highlight_cb", (lua_CFunction)item_highlight},
+ { "iup_button_cb", (lua_CFunction)iupluaCanvasButtonCb},
+ { "iup_close_cb", (lua_CFunction)dialog_close},
+ { "iup_show_cb", (lua_CFunction)dialog_show},
+ { "iup_map_cb", (lua_CFunction)iupluaMapCb},
+ { "iup_unmap_cb", (lua_CFunction)iupluaUnMapCb},
+ { "iup_dropfiles_cb", (lua_CFunction)iupluaDropfilesCb},
+ { "iup_trayclick_cb", (lua_CFunction)dialog_trayclick},
+ { "iup_getfocus_cb", (lua_CFunction)iupluaGetfocusCb},
+ { "iup_killfocus_cb", (lua_CFunction)iupluaKillfocusCb},
+ { "iup_k_any", (lua_CFunction)iupluaKanyCb},
+ { "iup_help_cb", (lua_CFunction)iupluaHelpCb},
+ { "iup_edit_cb", (lua_CFunction)list_edit},
+ { "iup_caret_cb", (lua_CFunction)text_caret},
+ { "iup_multiselect_cb", (lua_CFunction)list_multiselect},
+ { "iup_open_cb", (lua_CFunction)menu_open},
+ { "iup_menuclose_cb", (lua_CFunction)menu_close},
+ { "iup_file_cb", (lua_CFunction)file_cb},
+ { "iup_dropdown_cb", (lua_CFunction)list_dropdown_cb},
+ { "iup_dblclick_cb", (lua_CFunction)list_dblclick_cb},
+ { "iup_valuechanged_cb", (lua_CFunction)valuechanged_cb}
+ };
+
+ int SizeFuncList = (sizeof(FuncList)/sizeof(struct FuncList));
+ int ret_val = 1;
+ int i;
+
+ iuplua_tag = tag;
+
+ for (i = 0; i < SizeFuncList; i++)
+ lua_register(FuncList[i].name, FuncList[i].func);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/iuplua_widgets_be64.loh"
+#else
+#include "loh/iuplua_widgets_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/iuplua_widgets_le64w.loh"
+#else
+#include "loh/iuplua_widgets_le64.loh"
+#endif
+#else
+#include "loh/iuplua_widgets.loh"
+#endif
+#endif
+#else
+ iuplua_dofile("iuplua_widgets.lua");
+#endif
+
+ return ret_val;
+}
diff --git a/iup/srclua3/iuplua_widgets.lua b/iup/srclua3/iuplua_widgets.lua
new file mode 100755
index 0000000..33be9e3
--- /dev/null
+++ b/iup/srclua3/iuplua_widgets.lua
@@ -0,0 +1,942 @@
+
+-- #################################################################################
+-- Widgets
+-- #################################################################################
+
+
+-- "type" is used to check the type of each parameter in the creation table
+WIDGET = {type = {}}
+
+-- called by the iupxxx functions
+-- obj is a lua table
+function WIDGET:Constructor(obj)
+ -- the parent of the table is the widget class used to create the control
+ obj.parent = self
+
+ -- check the table parameters
+ self:checkParams(obj)
+
+ -- create the IUP control, calling iupCreateXXX
+ obj.handle = self:CreateIUPelement(obj)
+
+ -- set the parameters that are attributes
+ self:setAttributes(obj)
+
+ -- save the table indexed by the handle
+ iup_handles[obj.handle] = obj
+
+ -- the returned value is the handle, not the table
+ return obj.handle
+end
+
+function WIDGET:checkParams (obj)
+ local type = self.type
+ local param, func = next(type, nil)
+ while param do
+ if not func(obj[param]) then
+ error("parameter " .. param .. " has wrong value or is not initialized")
+ end
+ param, func = next(type, param)
+ end
+end
+
+function WIDGET:setAttributes (obj)
+ local temp = {}
+ local f = next(obj, nil)
+ while f do
+ temp[f] = 1
+ f = next(obj, f)
+ end
+ f = next(temp, nil)
+ while f do
+ obj:set (f, obj[f])
+ f = next(temp, f)
+ end
+end
+
+function WIDGET:get(index)
+ if type_string (index) then
+ if (iup_callbacks[index]) then
+ return self[index]
+ else
+ local INDEX = strupper (index)
+ local value = IupGetAttribute (self.handle, INDEX)
+ if value then
+ local handle = IupGetHandle (value)
+ if handle then
+ return handle
+ else
+ return value
+ end
+ end
+ end
+ end
+ return self[index]
+end
+
+function WIDGET:set(index, value)
+ if type_string (index) then
+ local INDEX = strupper (index)
+ local cb = iup_callbacks[index]
+
+ -- workaround for resize attribute in dialog
+ if (index == "resize" and IupGetClassName(self.handle) == "dialog") then
+ cb = nil
+ end
+
+ if (cb) then
+ local func = cb[2]
+ if (not func) then
+ func = cb[IupGetClassName(self.handle)]
+ end
+ iupSetCallback(self.handle, cb[1], func, value)
+ self[index] = value
+ return
+ elseif type_string(value) or type_number(value) then
+ IupSetAttribute(self.handle, INDEX, value)
+ return
+ elseif type_nil(value) then
+ local old_value = IupGetAttribute(self.handle, INDEX)
+ if old_value then
+ IupSetAttribute(self.handle, INDEX, value)
+ return
+ end
+ elseif type_widget(value) then
+ iupSetName(value)
+ IupSetAttribute(self.handle, INDEX, value.IUP_name)
+ return
+ end
+ end
+ self[index] = value
+end
+
+function WIDGET:r_destroy()
+ local i = 1
+ local elem = self[i]
+ while elem do
+ if type_widget (elem) and elem.IUP_parent then
+ if elem.IUP_parent == self then
+ elem.IUP_parent = nil
+ elem:r_destroy ()
+ else -- wrong parent
+ error ("Internal table inconsistency")
+ exit()
+ end
+ end
+
+ i = i + 1
+ elem = self[i]
+ end
+ iup_handles[self] = nil
+end
+
+function WIDGET:destroy()
+ self:r_destroy ()
+ IupDestroy (self)
+end
+
+function WIDGET:detach()
+ IupDetach (self)
+ local parent = self.IUP_parent
+ if parent then
+ self.IUP_parent = nil
+ local i = 1
+ while parent[i] do
+ if parent[i] == self then
+ while parent[i+1] do
+ parent[i] = parent[i+1]
+ i = i+1
+ end
+ parent[i] = nil
+ return
+ end
+ i = i+1
+ end
+ end
+end
+
+function WIDGET:append(o)
+ if IupAppend (self, o) then
+ o.IUP_parent = self
+ local i = 1
+ while self[i] do
+ if self[i] == o then
+ return i
+ end
+ i = i+1
+ end
+ iup_handles[self][i] = o
+ return i
+ else
+ return nil
+ end
+end
+
+function WIDGET:map()
+ return IupMap(self)
+end
+
+function WIDGET:hide()
+ return IupHide(self)
+end
+
+
+-- ###############
+IUPTIMER = {parent = WIDGET}
+
+function IUPTIMER:CreateIUPelement (obj)
+ return iupCreateTimer()
+end
+
+function iuptimer(o)
+ return IUPTIMER:Constructor(o)
+end
+iup.timer = iuptimer
+
+
+-- ###############
+IUPCLIPBOARD = {parent = WIDGET}
+
+function IUPCLIPBOARD:CreateIUPelement (obj)
+ return iupCreateClipboard()
+end
+
+function iupclipboard(o)
+ return IUPCLIPBOARD:Constructor(o)
+end
+iup.clipboard = iupclipboard
+
+
+-- ###############
+IUPDIALOG = {parent = WIDGET, type = {type_widget}}
+
+function IUPDIALOG:CreateIUPelement (obj)
+ local handle = iupCreateDialog(obj[1])
+ obj[1].IUP_parent = handle
+ return handle
+end
+
+function IUPDIALOG:show ()
+ return IupShow(self)
+end
+
+function IUPDIALOG:showxy (x,y)
+ return IupShowXY(self, x, y)
+end
+
+function IUPDIALOG:popup (x, y)
+ return IupPopup (self, x, y)
+end
+
+function iupdialog (o)
+ return IUPDIALOG:Constructor (o)
+end
+iup.dialog = iupdialog
+
+
+-- ###############
+IUPRADIO = {parent = WIDGET, type = {type_widget}}
+
+function IUPRADIO:CreateIUPelement (obj)
+ local handle = iupCreateRadio (obj[1])
+ obj[1].IUP_parent = handle
+ return handle
+end
+
+function iupradio (o)
+ local handle = IUPRADIO:Constructor (o)
+ iupCreateChildrenNames (handle[1])
+ return handle
+end
+iup.radio = iupradio
+
+-- OLD STUFF
+function edntoggles (h)
+ local tmp = {}
+ local i = 1
+ while h[i] do
+ if type_string (h[i]) then
+ tmp[i] = iuptoggle{title = h[i], action = h.action}
+ else
+ error ("option "..i.." must be a string")
+ end
+ i = i + 1
+ end
+
+ if h.value then
+ local j = 1
+ while h[j] and (h[j] ~= h.value) do
+ j = j + 1
+ end
+ if h[j] then
+ tmp.value = tmp[j]
+ end
+ elseif h.nvalue then
+ tmp.value = tmp[h.nvalue]
+ end
+
+ return tmp
+end
+
+-- OLD STUFF
+function edhradio (o)
+ local toggles = edntoggles (o)
+ return iupradio{edhbox (toggles); value = toggles.value}
+end
+
+-- OLD STUFF
+function edvradio (o)
+ local toggles = edntoggles (o)
+ return iupradio{edvbox (toggles); value = toggles.value}
+end
+
+
+-- ###############
+IUPMENU = {parent = WIDGET}
+
+function IUPMENU:checkParams (obj)
+ local i = 1
+ while obj[i] do
+ local o = obj[i]
+ if not type_item (o) then -- not a menu item
+ if type (o) ~= 'table' then
+ error("parameter " .. i .. " is not a table nor a menu item")
+ elseif (o[1] and not type_string (o[1])) then
+ error("parameter " .. i .. " does not have a string title")
+ elseif (o[2] and not type_string (o[2]) and not type_function (o[2])
+ and not type_widget (o[2])) then
+ error("parameter " .. i .. " does not have an action nor a menu")
+ end
+ end
+ i = i + 1
+ end
+end
+
+function IUPMENU:CreateIUPelement (obj)
+ local handle = iupCreateMenu ()
+ local i = 1
+ while obj[i] do
+ local o = obj[i]
+ local elem
+ if type_widget (o) then -- predefined
+ elem = o
+ elseif not o[1] then -- Separator
+ elem = iupseparator {}
+ elseif type_widget (o[2]) then -- SubMenu
+ o.title = o[1]
+ o[1] = o[2]
+ o[2] = nil
+ elem = iupsubmenu(o)
+ else -- Item
+ o.title = o[1]
+ o.action = o[2]
+ o[1] = nil
+ o[2] = nil
+ elem = iupitem(o)
+ end
+ IupAppend (handle, elem)
+ elem.IUP_parent = handle
+ obj[i] = elem
+ i = i + 1
+ end
+ return handle
+end
+
+function iupmenu (o)
+ return IUPMENU:Constructor (o)
+end
+iup.menu = iupmenu
+
+function IUPMENU:popup (x, y)
+ return IupPopup (self, x, y)
+end
+
+
+-- ###############
+COMPOSITION = {parent = WIDGET}
+
+function COMPOSITION:checkParams (obj)
+ local i = 1
+ while obj[i] do
+ if not type_widget (obj[i]) then
+ error("parameter " .. i .. " has wrong value or is not initialized")
+ end
+ i = i + 1
+ end
+end
+
+function COMPOSITION:CreateIUPelement (obj)
+ local handle = self:CreateBoxElement ()
+ local filled = obj.filled
+ local i = 1
+ local n = 0
+ while obj[i] do
+ n = n + 1
+ i = i + 1
+ end
+ i = 1
+
+ if filled == IUP_YES then
+ obj[i+n] = iupfill{}
+ IupAppend (handle, obj[i+n])
+ obj[i+n].IUP_parent = handle
+ end
+
+ while i <= n do
+ IupAppend (handle, obj[i])
+ obj[i].IUP_parent = handle
+ i = i + 1
+ if filled == IUP_YES then
+ obj[i+n] = iupfill{}
+ IupAppend (handle, obj[i+n])
+ obj[i+n].IUP_parent = handle
+ end
+ end
+ return handle
+end
+
+
+-- ###############
+IUPHBOX = {parent = COMPOSITION}
+
+function IUPHBOX:CreateBoxElement ()
+ return iupCreateHbox ()
+end
+
+function iuphbox (o)
+ return IUPHBOX:Constructor (o)
+end
+iup.hbox = iuphbox
+
+-- OLD STUFF
+function edhbox (o)
+ o.filled = IUP_YES
+ return IUPHBOX:Constructor (o)
+end
+
+-- OLD STUFF
+function edfield (f)
+ local l, t
+ if (type_string (f.prompt) or type_number (f.prompt)) then
+ l = iuplabel {title = f.prompt}
+ else
+ error ("parameter prompt has wrong value or is not initialized")
+ end
+ if f.value then
+ t = iuptext {value = f.value}
+ else
+ t = iuptext {value = f.nvalue}
+ end
+ if t and l then
+ return edhbox {l, t}
+ else
+ return nil
+ end
+end
+
+
+-- ###############
+IUPVBOX = {parent = COMPOSITION}
+
+function IUPVBOX:CreateBoxElement ()
+ return iupCreateVbox ()
+end
+
+function iupvbox (o)
+ return IUPVBOX:Constructor (o)
+end
+iup.vbox = iupvbox
+
+-- OLD STUFF
+function edvbox (o)
+ o.filled = IUP_YES
+ return IUPVBOX:Constructor (o)
+end
+
+
+-- ###############
+IUPZBOX = {parent = COMPOSITION}
+
+function IUPZBOX:CreateBoxElement ()
+ return iupCreateZbox ()
+end
+
+function iupzbox (obj)
+ local handle = IUPZBOX:Constructor (obj)
+ local i = 1
+ while obj[i] do
+ iupSetName(handle[i])
+ i = i+1
+ end
+ return handle
+end
+iup.zbox = iupzbox
+
+
+-- ###############
+IUPFILL = {parent = WIDGET}
+
+function IUPFILL:CreateIUPelement (obj)
+ return iupCreateFill ()
+end
+
+function iupfill (o)
+ return IUPFILL:Constructor (o)
+end
+iup.fill = iupfill
+
+
+-- ###############
+IUPBUTTON = {parent = WIDGET, type = {title = type_string}}
+
+function IUPBUTTON:CreateIUPelement (obj)
+ if not obj.title and obj.image then
+ obj.title=''
+ end
+ return iupCreateButton(obj.title)
+end
+
+function iupbutton (o)
+ return IUPBUTTON:Constructor (o)
+end
+iup.button = iupbutton
+
+
+-- ###############
+IUPTEXT = {parent = WIDGET}
+
+function IUPTEXT:CreateIUPelement (obj)
+ return iupCreateText()
+end
+
+function iuptext (o)
+ return IUPTEXT:Constructor (o)
+end
+iup.text = iuptext
+
+
+-- ###############
+IUPMULTILINE = {parent = IUPTEXT}
+
+function IUPMULTILINE:CreateIUPelement (obj)
+ return iupCreateMultiLine()
+end
+
+function iupmultiline (o)
+ return IUPMULTILINE:Constructor (o)
+end
+iup.multiline = iupmultiline
+
+
+-- ###############
+IUPLABEL = {parent = WIDGET, type = {title = type_string}}
+
+function IUPLABEL:CreateIUPelement (obj)
+ if not obj.title and obj.image then
+ obj.title=''
+ end
+ return iupCreateLabel (obj.title)
+end
+
+function iuplabel (o)
+ return IUPLABEL:Constructor (o)
+end
+iup.label = iuplabel
+
+
+-- ###############
+IUPTOGGLE = {parent = IUPBUTTON}
+
+function IUPTOGGLE:CreateIUPelement (obj)
+ return iupCreateToggle (obj.title)
+end
+
+function iuptoggle (o)
+ return IUPTOGGLE:Constructor (o)
+end
+iup.toggle = iuptoggle
+
+
+-- ###############
+IUPITEM = {parent = IUPBUTTON}
+
+function IUPITEM:CreateIUPelement (obj)
+ return iupCreateItem (obj.title)
+end
+
+function iupitem (o)
+ return IUPITEM:Constructor (o)
+end
+iup.item = iupitem
+
+
+-- ###############
+IUPSUBMENU = {parent = WIDGET, type = {type_menu; title = type_string}}
+
+function IUPSUBMENU:CreateIUPelement (obj)
+ local h = iupCreateSubmenu (obj.title, obj[1])
+ obj[1].IUP_parent = h
+ return h
+end
+
+function iupsubmenu (o)
+ return IUPSUBMENU:Constructor (o)
+end
+iup.submenu = iupsubmenu
+
+
+-- ###############
+IUPSEPARATOR = {parent = WIDGET}
+
+function IUPSEPARATOR:CreateIUPelement (obj)
+ return iupCreateSeparator ()
+end
+
+function iupseparator (o)
+ return IUPSEPARATOR:Constructor (o)
+end
+iup.separator = iupseparator
+
+
+-- ###############
+IUPFILEDLG = {parent = WIDGET}
+
+function IUPFILEDLG:popup (x, y)
+ return IupPopup (self, x, y)
+end
+
+function IUPFILEDLG:CreateIUPelement ()
+ return iupCreateFileDlg ()
+end
+
+function iupfiledlg (o)
+ return IUPFILEDLG:Constructor (o)
+end
+iup.filedlg = iupfiledlg
+
+
+-- ###############
+IUPMESSAGEDLG = {parent = WIDGET}
+
+function IUPMESSAGEDLG:popup (x, y)
+ return IupPopup (self, x, y)
+end
+
+function IUPMESSAGEDLG:CreateIUPelement ()
+ return iupCreateMessageDlg ()
+end
+
+function iupmessagedlg (o)
+ return IUPMESSAGEDLG:Constructor (o)
+end
+iup.messagedlg = iupmessagedlg
+
+
+-- ###############
+IUPCOLORDLG = {parent = WIDGET}
+
+function IUPCOLORDLG:popup (x, y)
+ return IupPopup (self, x, y)
+end
+
+function IUPCOLORDLG:CreateIUPelement ()
+ return iupCreateColorDlg ()
+end
+
+function iupcolordlg (o)
+ return IUPCOLORDLG:Constructor (o)
+end
+iup.colordlg = iupcolordlg
+
+
+-- ###############
+IUPFONTDLG = {parent = WIDGET}
+
+function IUPFONTDLG:popup (x, y)
+ return IupPopup (self, x, y)
+end
+
+function IUPFONTDLG:CreateIUPelement ()
+ return iupCreateFontDlg ()
+end
+
+function iupfontdlg (o)
+ return IUPFONTDLG:Constructor (o)
+end
+iup.fontdlg = iupfontdlg
+
+
+-- ###############
+IUPUSER = {parent = WIDGET}
+
+function IUPUSER:CreateIUPelement ()
+ return iupCreateUser ()
+end
+
+function iupuser ()
+ return IUPUSER:Constructor ()
+end
+iup.user = iupuser
+
+
+-- ###############
+IUPNORMALIZER = {parent = WIDGET}
+
+function IUPNORMALIZER:checkParams (obj)
+ local i = 1
+ while obj[i] do
+ if not type_widget (obj[i]) then
+ error("parameter " .. i .. " has wrong value or is not initialized")
+ end
+ i = i + 1
+ end
+end
+
+function IUPNORMALIZER:CreateIUPelement (obj)
+ local handle = iupCreateNormalizer ()
+ local i = 1
+ while obj[i] do
+ handle.addcontrol = obj[i]
+ i = i + 1
+ end
+ return handle
+end
+
+function iupnormalizer ()
+ return IUPNORMALIZER:Constructor ()
+end
+iup.normalizer = iupnormalizer
+
+
+-- ###############
+IUPFRAME = {parent = WIDGET, type = {type_widget}}
+
+function IUPFRAME:CreateIUPelement (obj)
+ local h = iupCreateFrame (obj[1])
+ obj[1].IUP_parent = h
+ return h
+end
+
+function iupframe (o)
+ return IUPFRAME:Constructor (o)
+end
+iup.frame = iupframe
+
+
+-- ###############
+IUPCANVAS = {parent = WIDGET}
+
+function IUPCANVAS:CreateIUPelement (obj)
+ return iupCreateCanvas ()
+end
+
+function iupcanvas (o)
+ return IUPCANVAS:Constructor (o)
+end
+iup.canvas = iupcanvas
+
+
+-- ###############
+IUPLIST = {parent = WIDGET}
+
+function IUPLIST:CreateIUPelement (obj)
+ return iupCreateList ()
+end
+
+function IUPLIST:get(index)
+ if type (index) == 'number' then
+ return IupGetAttribute (self.handle, ""..index)
+ else
+ return WIDGET.get(self, index)
+ end
+end
+
+function IUPLIST:set (index, value)
+ if type (index) == 'number' then
+ if (type_string (value) or type_number (value)) then
+ return IupSetAttribute (self.handle, ""..index, ""..value)
+ elseif value == nil then
+ return IupSetAttribute (self.handle, ""..index, value)
+ end
+ end
+ return WIDGET.set(self, index, value)
+end
+
+function iuplist (o)
+ return IUPLIST:Constructor (o)
+end
+iup.list = iuplist
+
+
+-- ###############
+IUPIMAGE = {parent = WIDGET}
+
+function IUPIMAGE:checkParams (obj)
+ local i = 1
+ while obj[i] do
+ local j = 1
+ while obj[i][j] do
+ if type (obj[i][j]) ~= 'number' then
+ error ("non-numeric value in image definition")
+ end
+ j = j + 1
+ end
+
+ if obj.width and (j - 1) ~= obj.width then
+ error ("inconsistent image lenght")
+ else
+ obj.width = j - 1
+ end
+
+ i = i + 1
+ end
+
+ obj.height = i - 1
+end
+
+function IUPIMAGE:CreateIUPelement (obj)
+ local handle = iupCreateImage (obj.width, obj.height, obj)
+ if type (obj.colors) == 'table' then
+ local i = 1
+ while obj.colors[i] do
+ IupSetAttribute (handle, i, obj.colors[i])
+ i = i + 1
+ end
+ end
+ return handle
+end
+
+function iupimage (o)
+ return IUPIMAGE:Constructor (o)
+end
+iup.image = iupimage
+
+
+IUPIMAGERGB = {parent = WIDGET}
+
+function IUPIMAGERGB:CreateIUPelement (obj)
+ return iupCreateImageRGB(obj.width, obj.height, obj.pixels)
+end
+
+function iupimagergb (o)
+ return IUPIMAGERGB:Constructor (o)
+end
+iup.imagergb = iupimagergb
+
+
+IUPIMAGERGBA = {parent = WIDGET}
+
+function IUPIMAGERGBA:CreateIUPelement (obj)
+ return iupCreateImageRGBA(obj.width, obj.height, obj.pixels)
+end
+
+function iupimagergba (o)
+ return IUPIMAGERGBA:Constructor (o)
+end
+iup.imagergba = iupimagergba
+
+
+-- ###############
+IUPPROGRESSBAR = {parent = WIDGET}
+
+function IUPPROGRESSBAR:CreateIUPelement ()
+ return iupCreateProgressBar()
+end
+
+function iupprogressbar (o)
+ return IUPPROGRESSBAR:Constructor (o)
+end
+iup.progressbar = iupprogressbar
+
+
+-- #################################################################################
+-- Callbacks
+-- #################################################################################
+
+
+-- global list of callbacks
+-- index is the Lua callback name
+-- each callback contains the full name, and the C callback
+iup_callbacks =
+{
+ action = {"ACTION", nil},
+ actioncb = {"ACTION_CB", nil},
+ getfocus = {"GETFOCUS_CB", iup_getfocus_cb},
+ killfocus = {"KILLFOCUS_CB", iup_killfocus_cb},
+ focus = {"FOCUS_CB", iup_focus_cb},
+ k_any = {"K_ANY", iup_k_any},
+ help = {"HELP_CB", iup_help_cb},
+ caretcb = {"CARET_CB", iup_caret_cb},
+ keypress = {"KEYPRESS_CB", iup_keypress_cb},
+ scroll = {"SCROLL_CB", iup_scroll_cb},
+ trayclick = {"TRAYCLICK_CB", iup_trayclick_cb},
+ close = {"CLOSE_CB", iup_close_cb},
+ open = {"OPEN_CB", iup_open_cb},
+ showcb = {"SHOW_CB", iup_show_cb},
+ mapcb = {"MAP_CB", iup_map_cb},
+ unmapcb = {"UNMAP_CB", iup_unmap_cb},
+ dropfiles = {"DROPFILES_CB", iup_dropfiles_cb},
+ menuclose = {"MENUCLOSE_CB", iup_menuclose_cb},
+ highlight = {"HIGHLIGHT_CB", iup_highlight_cb},
+ wom = {"WOM_CB", iup_wom_cb},
+ wheel = {"WHEEL_CB", iup_wheel_cb},
+ button = {"BUTTON_CB", iup_button_cb},
+ resize = {"RESIZE_CB", iup_resize_cb},
+ move = {"RESIZE_CB", iup_move_cb},
+ motion = {"MOTION_CB", iup_motion_cb},
+ enterwindow = {"ENTERWINDOW_CB", iup_enterwindow_cb},
+ leavewindow = {"LEAVEWINDOW_CB", iup_leavewindow_cb},
+ edit = {"EDIT_CB", iup_edit_cb},
+ multiselect = {"MULTISELECT_CB", iup_multiselect_cb},
+ filecb = {"FILE_CB", iup_file_cb},
+ mdiactivatecb = {"MDIACTIVATE_CB", iup_mdiactivate_cb},
+ dropdowncb = {"DROPDOWN_CB", iup_dropdown_cb},
+ dblclickcb = {"DBLCLICK_CB", iup_dblclick_cb},
+}
+
+iup_callbacks.action.toggle = iup_action_toggle
+iup_callbacks.action.multiline = iup_action_text
+iup_callbacks.action.text = iup_action_text
+iup_callbacks.action.button = iup_action_button
+iup_callbacks.action.list = iup_action_list
+iup_callbacks.action.item = iup_action_button
+iup_callbacks.action.canvas = iup_action_canvas
+
+-- must set here because it is also used elsewhere with a different signature
+iup_callbacks.actioncb.timer = iup_action_timer
+
+-- aliases for the full names
+iup_callbacks.action_cb = iup_callbacks.actioncb
+iup_callbacks.getfocus_cb = iup_callbacks.getfocus
+iup_callbacks.killfocus_cb = iup_callbacks.killfocus
+iup_callbacks.focus_cb = iup_callbacks.focus
+iup_callbacks.k_any = iup_callbacks.k_any
+iup_callbacks.help_cb = iup_callbacks.help
+iup_callbacks.caret_cb = iup_callbacks.caretcb
+iup_callbacks.keypress_cb = iup_callbacks.keypress
+iup_callbacks.scroll_cb = iup_callbacks.scroll
+iup_callbacks.trayclick_cb = iup_callbacks.trayclick
+iup_callbacks.close_cb = iup_callbacks.close
+iup_callbacks.open_cb = iup_callbacks.open
+iup_callbacks.show_cb = iup_callbacks.showcb
+iup_callbacks.map_cb = iup_callbacks.mapcb
+iup_callbacks.unmap_cb = iup_callbacks.unmapcb
+iup_callbacks.dropfiles_cb = iup_callbacks.dropfiles
+iup_callbacks.menuclose_cb = iup_callbacks.menuclose
+iup_callbacks.highlight_cb = iup_callbacks.highlight
+iup_callbacks.wom_cb = iup_callbacks.wom
+iup_callbacks.wheel_cb = iup_callbacks.wheel
+iup_callbacks.button_cb = iup_callbacks.button
+iup_callbacks.resize_cb = iup_callbacks.resize
+iup_callbacks.move_cb = iup_callbacks.move
+iup_callbacks.motion_cb = iup_callbacks.motion
+iup_callbacks.enterwindow_cb = iup_callbacks.enterwindow
+iup_callbacks.leavewindow_cb = iup_callbacks.leavewindow
+iup_callbacks.edit_cb = iup_callbacks.edit
+iup_callbacks.multiselect_cb = iup_callbacks.multiselect
+iup_callbacks.mdiactivate_cb = iup_callbacks.mdiactivatecb
+iup_callbacks.file_cb = iup_callbacks.filecb
+iup_callbacks.dropdown_cb = iup_callbacks.dropdowncb
+iup_callbacks.dblclick_cb = iup_callbacks.dblclickcb
+iup_callbacks.valuechanged_cb = iup_callbacks.valuechangedcb
+ \ No newline at end of file
diff --git a/iup/srclua3/iupluacd3.def b/iup/srclua3/iupluacd3.def
new file mode 100755
index 0000000..a281128
--- /dev/null
+++ b/iup/srclua3/iupluacd3.def
@@ -0,0 +1,3 @@
+EXPORTS
+ cdluaiup_open
+ \ No newline at end of file
diff --git a/iup/srclua3/iupluacontrols3.def b/iup/srclua3/iupluacontrols3.def
new file mode 100755
index 0000000..7736388
--- /dev/null
+++ b/iup/srclua3/iupluacontrols3.def
@@ -0,0 +1,2 @@
+EXPORTS
+ iupcontrolslua_open
diff --git a/iup/srclua3/iupluagl3.def b/iup/srclua3/iupluagl3.def
new file mode 100755
index 0000000..dfc4849
--- /dev/null
+++ b/iup/srclua3/iupluagl3.def
@@ -0,0 +1,2 @@
+EXPORTS
+ iupgllua_open
diff --git a/iup/srclua3/iupluaim3.def b/iup/srclua3/iupluaim3.def
new file mode 100755
index 0000000..3acf8ae
--- /dev/null
+++ b/iup/srclua3/iupluaim3.def
@@ -0,0 +1,2 @@
+EXPORTS
+ iupimlua_open
diff --git a/iup/srclua3/iupluaole3.def b/iup/srclua3/iupluaole3.def
new file mode 100755
index 0000000..6389829
--- /dev/null
+++ b/iup/srclua3/iupluaole3.def
@@ -0,0 +1,2 @@
+EXPORTS
+ iupolelua_open
diff --git a/iup/srclua3/iupole.mak b/iup/srclua3/iupole.mak
new file mode 100755
index 0000000..30ea1f9
--- /dev/null
+++ b/iup/srclua3/iupole.mak
@@ -0,0 +1,13 @@
+PROJNAME = iup
+LIBNAME = iupluaole3
+OPT = YES
+
+USE_LUA = Yes
+USE_OPENGL = Yes
+
+SRC = iuplua_olecontrol.c
+
+INCLUDES = ../include
+LDIR = ../lib/$(TEC_UNAME)
+LIBS = iup iuplua3 iupole
+
diff --git a/iup/srclua3/loh/cells.loh b/iup/srclua3/loh/cells.loh
new file mode 100755
index 0000000..78336b8
--- /dev/null
+++ b/iup/srclua3/loh/cells.loh
@@ -0,0 +1,76 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luacells.lo");
+*/
+/* ../obj/iupluacontrols3/luacells.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97, 99,101,
+108,108,115, 46,108,117, 97, 0, 0, 0, 0,245, 5, 0, 22, 1, 11, 1, 15, 2,
+ 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 11, 8,
+ 25, 7, 15, 9, 11, 10, 15, 7, 26, 15, 11, 11, 12, 22, 2, 11, 13, 15, 14, 29,
+ 0, 2, 26, 15, 11, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 11, 11,
+ 18, 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 11, 11, 21, 22, 2, 11, 22, 15,
+ 23, 29, 0, 2, 26, 15, 11, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15,
+ 11, 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 11, 11, 30, 22, 2, 11,
+ 31, 15, 32, 29, 0, 2, 26, 15, 11, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2,
+ 26, 15, 11, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 11, 11, 39, 15,
+ 11, 18, 12, 26, 15, 11, 11, 40, 15, 11, 18, 15, 26, 15, 11, 11, 41, 15, 11, 18,
+ 18, 26, 15, 11, 11, 42, 15, 11, 18, 21, 26, 15, 11, 11, 43, 15, 11, 18, 24, 26,
+ 15, 11, 11, 44, 15, 11, 18, 27, 26, 15, 11, 11, 45, 15, 11, 18, 30, 26, 15, 11,
+ 11, 46, 15, 11, 18, 33, 26, 15, 11, 11, 47, 15, 11, 18, 36, 26, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 2, 0, 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2,
+ 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71,
+ 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,
+109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, 64,108,117, 97, 99,101,
+108,108,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0,
+ 0, 15,105,117,112, 67,114,101, 97,116,101, 67,101,108,108,115, 0, 2, 0, 0,
+ 0, 7,114,101,100,114, 97,119, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64,108,
+117, 97, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 10, 4, 1, 13, 0,
+ 11, 1, 15, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,
+101,108,102, 0, 2, 0, 0, 0, 8,114,101,112, 97,105,110,116, 0, 2, 0, 0,
+ 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 9,105,117,112, 99,101,
+108,108,115, 0, 4, 0, 0, 0, 11, 0, 0, 0, 14, 64,108,117, 97, 99,101,108,
+108,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 6, 99,101,108,108,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,
+108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 11,109,111,117,115,101, 99,108,
+105, 99,107, 0, 2, 0, 0, 0, 14, 77, 79, 85, 83, 69, 67, 76, 73, 67, 75, 95,
+ 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95, 99,101,108,108,115, 95,109,111,
+117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 12,109,111,117,
+115,101,109,111,116,105,111,110, 0, 2, 0, 0, 0, 15, 77, 79, 85, 83, 69, 77,
+ 79, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95, 99,101,
+108,108,115, 95,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,115, 99,114,111,108,108,105,110,103, 0, 2, 0, 0, 0, 13, 83,
+ 67, 82, 79, 76, 76, 73, 78, 71, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112,
+ 95, 99,101,108,108,115, 95,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0,
+ 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 9, 87, 73, 68, 84,
+ 72, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,
+119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116,
+ 0, 2, 0, 0, 0, 10, 72, 69, 73, 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0,
+ 20,105,117,112, 95, 99,101,108,108,115, 95,104,101,105,103,104,116, 95, 99, 98,
+ 0, 2, 0, 0, 0, 7,110,108,105,110,101,115, 0, 2, 0, 0, 0, 10, 78, 76,
+ 73, 78, 69, 83, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95, 99,101,108,
+108,115, 95,110,108,105,110,101,115, 95, 99, 98, 0, 2, 0, 0, 0, 6,110, 99,
+111,108,115, 0, 2, 0, 0, 0, 9, 78, 67, 79, 76, 83, 95, 67, 66, 0, 2, 0,
+ 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,110, 99,111,108,115, 95, 99,
+ 98, 0, 2, 0, 0, 0, 6,104,115,112, 97,110, 0, 2, 0, 0, 0, 9, 72, 83,
+ 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,
+115, 95,104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 6,118,115,112, 97,
+110, 0, 2, 0, 0, 0, 9, 86, 83, 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0,
+ 19,105,117,112, 95, 99,101,108,108,115, 95,118,115,112, 97,110, 95, 99, 98, 0,
+ 2, 0, 0, 0, 14,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2,
+ 0, 0, 0, 15,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 13,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 2, 0, 0,
+ 0, 9,119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,101,105,103,
+104,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,110,108,105,110,101,115, 95, 99, 98,
+ 0, 2, 0, 0, 0, 9,110, 99,111,108,115, 95, 99, 98, 0, 2, 0, 0, 0, 9,
+104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 9,118,115,112, 97,110, 95,
+ 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacells.lo");
+}
diff --git a/iup/srclua3/loh/cells_be32.loh b/iup/srclua3/loh/cells_be32.loh
new file mode 100755
index 0000000..d1db35f
--- /dev/null
+++ b/iup/srclua3/loh/cells_be32.loh
@@ -0,0 +1,76 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luacells_be32.lo");
+*/
+/* ../obj/iupluacontrols3/luacells_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97, 99,101,
+108,108,115, 46,108,117, 97, 0, 0, 0, 0,245, 5, 0, 22, 1, 11, 1, 15, 2,
+ 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 11, 8,
+ 25, 7, 15, 9, 11, 10, 15, 7, 26, 15, 11, 11, 12, 22, 2, 11, 13, 15, 14, 29,
+ 0, 2, 26, 15, 11, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 11, 11,
+ 18, 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 11, 11, 21, 22, 2, 11, 22, 15,
+ 23, 29, 0, 2, 26, 15, 11, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15,
+ 11, 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 11, 11, 30, 22, 2, 11,
+ 31, 15, 32, 29, 0, 2, 26, 15, 11, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2,
+ 26, 15, 11, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 11, 11, 39, 15,
+ 11, 18, 12, 26, 15, 11, 11, 40, 15, 11, 18, 15, 26, 15, 11, 11, 41, 15, 11, 18,
+ 18, 26, 15, 11, 11, 42, 15, 11, 18, 21, 26, 15, 11, 11, 43, 15, 11, 18, 24, 26,
+ 15, 11, 11, 44, 15, 11, 18, 27, 26, 15, 11, 11, 45, 15, 11, 18, 30, 26, 15, 11,
+ 11, 46, 15, 11, 18, 33, 26, 15, 11, 11, 47, 15, 11, 18, 36, 26, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 2, 0, 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2,
+ 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71,
+ 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,
+109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, 64,108,117, 97, 99,101,
+108,108,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0,
+ 0, 15,105,117,112, 67,114,101, 97,116,101, 67,101,108,108,115, 0, 2, 0, 0,
+ 0, 7,114,101,100,114, 97,119, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64,108,
+117, 97, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 10, 4, 1, 13, 0,
+ 11, 1, 15, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,
+101,108,102, 0, 2, 0, 0, 0, 8,114,101,112, 97,105,110,116, 0, 2, 0, 0,
+ 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 9,105,117,112, 99,101,
+108,108,115, 0, 4, 0, 0, 0, 11, 0, 0, 0, 14, 64,108,117, 97, 99,101,108,
+108,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 6, 99,101,108,108,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,
+108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 11,109,111,117,115,101, 99,108,
+105, 99,107, 0, 2, 0, 0, 0, 14, 77, 79, 85, 83, 69, 67, 76, 73, 67, 75, 95,
+ 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95, 99,101,108,108,115, 95,109,111,
+117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 12,109,111,117,
+115,101,109,111,116,105,111,110, 0, 2, 0, 0, 0, 15, 77, 79, 85, 83, 69, 77,
+ 79, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95, 99,101,
+108,108,115, 95,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,115, 99,114,111,108,108,105,110,103, 0, 2, 0, 0, 0, 13, 83,
+ 67, 82, 79, 76, 76, 73, 78, 71, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112,
+ 95, 99,101,108,108,115, 95,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0,
+ 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 9, 87, 73, 68, 84,
+ 72, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,
+119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116,
+ 0, 2, 0, 0, 0, 10, 72, 69, 73, 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0,
+ 20,105,117,112, 95, 99,101,108,108,115, 95,104,101,105,103,104,116, 95, 99, 98,
+ 0, 2, 0, 0, 0, 7,110,108,105,110,101,115, 0, 2, 0, 0, 0, 10, 78, 76,
+ 73, 78, 69, 83, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95, 99,101,108,
+108,115, 95,110,108,105,110,101,115, 95, 99, 98, 0, 2, 0, 0, 0, 6,110, 99,
+111,108,115, 0, 2, 0, 0, 0, 9, 78, 67, 79, 76, 83, 95, 67, 66, 0, 2, 0,
+ 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,110, 99,111,108,115, 95, 99,
+ 98, 0, 2, 0, 0, 0, 6,104,115,112, 97,110, 0, 2, 0, 0, 0, 9, 72, 83,
+ 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,
+115, 95,104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 6,118,115,112, 97,
+110, 0, 2, 0, 0, 0, 9, 86, 83, 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0,
+ 19,105,117,112, 95, 99,101,108,108,115, 95,118,115,112, 97,110, 95, 99, 98, 0,
+ 2, 0, 0, 0, 14,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2,
+ 0, 0, 0, 15,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 13,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 2, 0, 0,
+ 0, 9,119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,101,105,103,
+104,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,110,108,105,110,101,115, 95, 99, 98,
+ 0, 2, 0, 0, 0, 9,110, 99,111,108,115, 95, 99, 98, 0, 2, 0, 0, 0, 9,
+104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 9,118,115,112, 97,110, 95,
+ 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacells_be32.lo");
+}
diff --git a/iup/srclua3/loh/cells_be64.loh b/iup/srclua3/loh/cells_be64.loh
new file mode 100755
index 0000000..b832e4b
--- /dev/null
+++ b/iup/srclua3/loh/cells_be64.loh
@@ -0,0 +1,75 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/cells_be64.lo");
+*/
+/* ../obj/iupluacontrols3/cells_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64, 99,101,108,108,115,
+ 46,108,117, 97, 0, 0, 0, 0,245, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25,
+ 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 11, 8, 25, 7, 15,
+ 9, 11, 10, 15, 7, 26, 15, 11, 11, 12, 22, 2, 11, 13, 15, 14, 29, 0, 2, 26,
+ 15, 11, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 11, 11, 18, 22, 2,
+ 11, 19, 15, 20, 29, 0, 2, 26, 15, 11, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0,
+ 2, 26, 15, 11, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 11, 11, 27,
+ 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 11, 11, 30, 22, 2, 11, 31, 15, 32,
+ 29, 0, 2, 26, 15, 11, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 11,
+ 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 11, 11, 39, 15, 11, 18, 12,
+ 26, 15, 11, 11, 40, 15, 11, 18, 15, 26, 15, 11, 11, 41, 15, 11, 18, 18, 26, 15,
+ 11, 11, 42, 15, 11, 18, 21, 26, 15, 11, 11, 43, 15, 11, 18, 24, 26, 15, 11, 11,
+ 44, 15, 11, 18, 27, 26, 15, 11, 11, 45, 15, 11, 18, 30, 26, 15, 11, 11, 46, 15,
+ 11, 18, 33, 26, 15, 11, 11, 47, 15, 11, 18, 36, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 48, 2, 0, 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, 0, 0, 0,
+ 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0,
+ 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,
+116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 11, 64, 99,101,108,108,115, 46,108,117,
+ 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,
+114,101, 97,116,101, 67,101,108,108,115, 0, 2, 0, 0, 0, 7,114,101,100,114,
+ 97,119, 0, 4, 0, 0, 0, 7, 0, 0, 0, 11, 64, 99,101,108,108,115, 46,108,
+117, 97, 0, 0, 0, 0, 10, 4, 1, 13, 0, 11, 1, 15, 2, 26, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 8,
+114,101,112, 97,105,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, 69, 83,
+ 0, 2, 0, 0, 0, 9,105,117,112, 99,101,108,108,115, 0, 4, 0, 0, 0, 11,
+ 0, 0, 0, 11, 64, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 6, 99,101,108,108,115, 0, 2, 0, 0,
+ 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0,
+ 11,109,111,117,115,101, 99,108,105, 99,107, 0, 2, 0, 0, 0, 14, 77, 79, 85,
+ 83, 69, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,
+ 99,101,108,108,115, 95,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0,
+ 2, 0, 0, 0, 12,109,111,117,115,101,109,111,116,105,111,110, 0, 2, 0, 0,
+ 0, 15, 77, 79, 85, 83, 69, 77, 79, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0,
+ 0, 25,105,117,112, 95, 99,101,108,108,115, 95,109,111,117,115,101,109,111,116,
+105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 10,115, 99,114,111,108,108,105,110,
+103, 0, 2, 0, 0, 0, 13, 83, 67, 82, 79, 76, 76, 73, 78, 71, 95, 67, 66, 0,
+ 2, 0, 0, 0, 23,105,117,112, 95, 99,101,108,108,115, 95,115, 99,114,111,108,
+108,105,110,103, 95, 99, 98, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2,
+ 0, 0, 0, 9, 87, 73, 68, 84, 72, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,
+112, 95, 99,101,108,108,115, 95,119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0,
+ 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, 0, 10, 72, 69, 73, 71, 72, 84,
+ 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95, 99,101,108,108,115, 95,104,
+101,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 7,110,108,105,110,101,115,
+ 0, 2, 0, 0, 0, 10, 78, 76, 73, 78, 69, 83, 95, 67, 66, 0, 2, 0, 0, 0,
+ 20,105,117,112, 95, 99,101,108,108,115, 95,110,108,105,110,101,115, 95, 99, 98,
+ 0, 2, 0, 0, 0, 6,110, 99,111,108,115, 0, 2, 0, 0, 0, 9, 78, 67, 79,
+ 76, 83, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,115,
+ 95,110, 99,111,108,115, 95, 99, 98, 0, 2, 0, 0, 0, 6,104,115,112, 97,110,
+ 0, 2, 0, 0, 0, 9, 72, 83, 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,
+105,117,112, 95, 99,101,108,108,115, 95,104,115,112, 97,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 6,118,115,112, 97,110, 0, 2, 0, 0, 0, 9, 86, 83, 80, 65, 78,
+ 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,118,
+115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 14,109,111,117,115,101, 99,108,
+105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,111,117,115,101,109,111,116,
+105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,115, 99,114,111,108,108,105,110,
+103, 95, 99, 98, 0, 2, 0, 0, 0, 9,119,105,100,116,104, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,104,101,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,110,
+108,105,110,101,115, 95, 99, 98, 0, 2, 0, 0, 0, 9,110, 99,111,108,115, 95,
+ 99, 98, 0, 2, 0, 0, 0, 9,104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0,
+ 0, 9,118,115,112, 97,110, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/cells_be64.lo");
+}
diff --git a/iup/srclua3/loh/cells_le64.loh b/iup/srclua3/loh/cells_le64.loh
new file mode 100755
index 0000000..11a2caf
--- /dev/null
+++ b/iup/srclua3/loh/cells_le64.loh
@@ -0,0 +1,76 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luacells_le64.lo");
+*/
+/* ../obj/iupluacontrols3/luacells_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97, 99,101,
+108,108,115, 46,108,117, 97, 0, 0, 0, 0,245, 5, 0, 22, 1, 11, 1, 15, 2,
+ 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 11, 8,
+ 25, 7, 15, 9, 11, 10, 15, 7, 26, 15, 11, 11, 12, 22, 2, 11, 13, 15, 14, 29,
+ 0, 2, 26, 15, 11, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 11, 11,
+ 18, 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 11, 11, 21, 22, 2, 11, 22, 15,
+ 23, 29, 0, 2, 26, 15, 11, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15,
+ 11, 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 11, 11, 30, 22, 2, 11,
+ 31, 15, 32, 29, 0, 2, 26, 15, 11, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2,
+ 26, 15, 11, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 11, 11, 39, 15,
+ 11, 18, 12, 26, 15, 11, 11, 40, 15, 11, 18, 15, 26, 15, 11, 11, 41, 15, 11, 18,
+ 18, 26, 15, 11, 11, 42, 15, 11, 18, 21, 26, 15, 11, 11, 43, 15, 11, 18, 24, 26,
+ 15, 11, 11, 44, 15, 11, 18, 27, 26, 15, 11, 11, 45, 15, 11, 18, 30, 26, 15, 11,
+ 11, 46, 15, 11, 18, 33, 26, 15, 11, 11, 47, 15, 11, 18, 36, 26, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 2, 0, 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2,
+ 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71,
+ 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,
+109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, 64,108,117, 97, 99,101,
+108,108,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0,
+ 0, 15,105,117,112, 67,114,101, 97,116,101, 67,101,108,108,115, 0, 2, 0, 0,
+ 0, 7,114,101,100,114, 97,119, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64,108,
+117, 97, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 10, 4, 1, 13, 0,
+ 11, 1, 15, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,
+101,108,102, 0, 2, 0, 0, 0, 8,114,101,112, 97,105,110,116, 0, 2, 0, 0,
+ 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 9,105,117,112, 99,101,
+108,108,115, 0, 4, 0, 0, 0, 11, 0, 0, 0, 14, 64,108,117, 97, 99,101,108,
+108,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 6, 99,101,108,108,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,
+108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 11,109,111,117,115,101, 99,108,
+105, 99,107, 0, 2, 0, 0, 0, 14, 77, 79, 85, 83, 69, 67, 76, 73, 67, 75, 95,
+ 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95, 99,101,108,108,115, 95,109,111,
+117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 12,109,111,117,
+115,101,109,111,116,105,111,110, 0, 2, 0, 0, 0, 15, 77, 79, 85, 83, 69, 77,
+ 79, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95, 99,101,
+108,108,115, 95,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,115, 99,114,111,108,108,105,110,103, 0, 2, 0, 0, 0, 13, 83,
+ 67, 82, 79, 76, 76, 73, 78, 71, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112,
+ 95, 99,101,108,108,115, 95,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0,
+ 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 9, 87, 73, 68, 84,
+ 72, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,
+119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116,
+ 0, 2, 0, 0, 0, 10, 72, 69, 73, 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0,
+ 20,105,117,112, 95, 99,101,108,108,115, 95,104,101,105,103,104,116, 95, 99, 98,
+ 0, 2, 0, 0, 0, 7,110,108,105,110,101,115, 0, 2, 0, 0, 0, 10, 78, 76,
+ 73, 78, 69, 83, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95, 99,101,108,
+108,115, 95,110,108,105,110,101,115, 95, 99, 98, 0, 2, 0, 0, 0, 6,110, 99,
+111,108,115, 0, 2, 0, 0, 0, 9, 78, 67, 79, 76, 83, 95, 67, 66, 0, 2, 0,
+ 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,110, 99,111,108,115, 95, 99,
+ 98, 0, 2, 0, 0, 0, 6,104,115,112, 97,110, 0, 2, 0, 0, 0, 9, 72, 83,
+ 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,
+115, 95,104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 6,118,115,112, 97,
+110, 0, 2, 0, 0, 0, 9, 86, 83, 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0,
+ 19,105,117,112, 95, 99,101,108,108,115, 95,118,115,112, 97,110, 95, 99, 98, 0,
+ 2, 0, 0, 0, 14,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2,
+ 0, 0, 0, 15,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 13,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 2, 0, 0,
+ 0, 9,119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,101,105,103,
+104,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,110,108,105,110,101,115, 95, 99, 98,
+ 0, 2, 0, 0, 0, 9,110, 99,111,108,115, 95, 99, 98, 0, 2, 0, 0, 0, 9,
+104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 9,118,115,112, 97,110, 95,
+ 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacells_le64.lo");
+}
diff --git a/iup/srclua3/loh/cells_le64w.loh b/iup/srclua3/loh/cells_le64w.loh
new file mode 100755
index 0000000..9084ea9
--- /dev/null
+++ b/iup/srclua3/loh/cells_le64w.loh
@@ -0,0 +1,76 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luacells_le64w.lo");
+*/
+/* ../obj/iupluacontrols3/luacells_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97, 99,101,
+108,108,115, 46,108,117, 97, 0, 0, 0, 0,245, 5, 0, 22, 1, 11, 1, 15, 2,
+ 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 11, 8,
+ 25, 7, 15, 9, 11, 10, 15, 7, 26, 15, 11, 11, 12, 22, 2, 11, 13, 15, 14, 29,
+ 0, 2, 26, 15, 11, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 11, 11,
+ 18, 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 11, 11, 21, 22, 2, 11, 22, 15,
+ 23, 29, 0, 2, 26, 15, 11, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15,
+ 11, 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 11, 11, 30, 22, 2, 11,
+ 31, 15, 32, 29, 0, 2, 26, 15, 11, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2,
+ 26, 15, 11, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 11, 11, 39, 15,
+ 11, 18, 12, 26, 15, 11, 11, 40, 15, 11, 18, 15, 26, 15, 11, 11, 41, 15, 11, 18,
+ 18, 26, 15, 11, 11, 42, 15, 11, 18, 21, 26, 15, 11, 11, 43, 15, 11, 18, 24, 26,
+ 15, 11, 11, 44, 15, 11, 18, 27, 26, 15, 11, 11, 45, 15, 11, 18, 30, 26, 15, 11,
+ 11, 46, 15, 11, 18, 33, 26, 15, 11, 11, 47, 15, 11, 18, 36, 26, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 2, 0, 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2,
+ 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71,
+ 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,
+109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, 64,108,117, 97, 99,101,
+108,108,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0,
+ 0, 15,105,117,112, 67,114,101, 97,116,101, 67,101,108,108,115, 0, 2, 0, 0,
+ 0, 7,114,101,100,114, 97,119, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64,108,
+117, 97, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 10, 4, 1, 13, 0,
+ 11, 1, 15, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,
+101,108,102, 0, 2, 0, 0, 0, 8,114,101,112, 97,105,110,116, 0, 2, 0, 0,
+ 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 9,105,117,112, 99,101,
+108,108,115, 0, 4, 0, 0, 0, 11, 0, 0, 0, 14, 64,108,117, 97, 99,101,108,
+108,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 6, 99,101,108,108,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,
+108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 11,109,111,117,115,101, 99,108,
+105, 99,107, 0, 2, 0, 0, 0, 14, 77, 79, 85, 83, 69, 67, 76, 73, 67, 75, 95,
+ 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95, 99,101,108,108,115, 95,109,111,
+117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 12,109,111,117,
+115,101,109,111,116,105,111,110, 0, 2, 0, 0, 0, 15, 77, 79, 85, 83, 69, 77,
+ 79, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95, 99,101,
+108,108,115, 95,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,115, 99,114,111,108,108,105,110,103, 0, 2, 0, 0, 0, 13, 83,
+ 67, 82, 79, 76, 76, 73, 78, 71, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112,
+ 95, 99,101,108,108,115, 95,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0,
+ 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 9, 87, 73, 68, 84,
+ 72, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,
+119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116,
+ 0, 2, 0, 0, 0, 10, 72, 69, 73, 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0,
+ 20,105,117,112, 95, 99,101,108,108,115, 95,104,101,105,103,104,116, 95, 99, 98,
+ 0, 2, 0, 0, 0, 7,110,108,105,110,101,115, 0, 2, 0, 0, 0, 10, 78, 76,
+ 73, 78, 69, 83, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95, 99,101,108,
+108,115, 95,110,108,105,110,101,115, 95, 99, 98, 0, 2, 0, 0, 0, 6,110, 99,
+111,108,115, 0, 2, 0, 0, 0, 9, 78, 67, 79, 76, 83, 95, 67, 66, 0, 2, 0,
+ 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,110, 99,111,108,115, 95, 99,
+ 98, 0, 2, 0, 0, 0, 6,104,115,112, 97,110, 0, 2, 0, 0, 0, 9, 72, 83,
+ 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,
+115, 95,104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 6,118,115,112, 97,
+110, 0, 2, 0, 0, 0, 9, 86, 83, 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0,
+ 19,105,117,112, 95, 99,101,108,108,115, 95,118,115,112, 97,110, 95, 99, 98, 0,
+ 2, 0, 0, 0, 14,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2,
+ 0, 0, 0, 15,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 13,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 2, 0, 0,
+ 0, 9,119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,101,105,103,
+104,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,110,108,105,110,101,115, 95, 99, 98,
+ 0, 2, 0, 0, 0, 9,110, 99,111,108,115, 95, 99, 98, 0, 2, 0, 0, 0, 9,
+104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 9,118,115,112, 97,110, 95,
+ 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacells_le64w.lo");
+}
diff --git a/iup/srclua3/loh/colorbar.loh b/iup/srclua3/loh/colorbar.loh
new file mode 100755
index 0000000..6dd3f7e
--- /dev/null
+++ b/iup/srclua3/loh/colorbar.loh
@@ -0,0 +1,49 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luacolorbar.lo");
+*/
+/* ../obj/iupluacontrols3/luacolorbar.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 17, 64,108,117, 97, 99,111,
+108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0,123, 5, 0, 22, 1, 11,
+ 1, 15, 2, 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7,
+ 11, 8, 15, 5, 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15,
+ 9, 11, 13, 22, 2, 11, 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 22, 2, 11,
+ 17, 15, 18, 29, 0, 2, 26, 15, 9, 11, 19, 22, 2, 11, 20, 15, 21, 29, 0, 2,
+ 26, 15, 9, 11, 22, 15, 9, 18, 10, 26, 15, 9, 11, 23, 15, 9, 18, 13, 26, 15,
+ 9, 11, 24, 15, 9, 18, 16, 26, 15, 9, 11, 25, 15, 9, 18, 19, 26, 0, 0, 0,
+ 0, 0, 0, 0, 0, 26, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66,
+ 65, 82, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7,
+ 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85,
+ 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 17, 64,108,
+117, 97, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 10, 4,
+ 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101,
+ 67,111,108,111,114, 98, 97,114, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108,
+111,114, 98, 97,114, 0, 4, 0, 0, 0, 7, 0, 0, 0, 17, 64,108,117, 97, 99,
+111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1,
+ 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, 65, 82, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 9, 99,111,108,111,114, 98, 97,114, 0,
+ 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2,
+ 0, 0, 0, 7, 99,101,108,108, 99, 98, 0, 2, 0, 0, 0, 8, 67, 69, 76, 76,
+ 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95, 99,111,108,111,114, 98, 97,
+114, 95, 99,101,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,101,108,101, 99,
+116, 99, 98, 0, 2, 0, 0, 0, 10, 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2,
+ 0, 0, 0, 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,101,108,
+101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,119,105,116, 99,104, 99, 98,
+ 0, 2, 0, 0, 0, 10, 83, 87, 73, 84, 67, 72, 95, 67, 66, 0, 2, 0, 0, 0,
+ 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,119,105,116, 99,104,
+ 95, 99, 98, 0, 2, 0, 0, 0, 11,101,120,116,101,110,100,101,100, 99, 98, 0,
+ 2, 0, 0, 0, 12, 69, 88, 84, 69, 78, 68, 69, 68, 95, 67, 66, 0, 2, 0, 0,
+ 0, 25,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,101,120,116,101,110,
+100,101,100, 95, 99, 98, 0, 2, 0, 0, 0, 8, 99,101,108,108, 95, 99, 98, 0,
+ 2, 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,
+115,119,105,116, 99,104, 95, 99, 98, 0, 2, 0, 0, 0, 12,101,120,116,101,110,
+100,101,100, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacolorbar.lo");
+}
diff --git a/iup/srclua3/loh/colorbar_be32.loh b/iup/srclua3/loh/colorbar_be32.loh
new file mode 100755
index 0000000..2a33b10
--- /dev/null
+++ b/iup/srclua3/loh/colorbar_be32.loh
@@ -0,0 +1,49 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luacolorbar_be32.lo");
+*/
+/* ../obj/iupluacontrols3/luacolorbar_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 17, 64,108,117, 97, 99,111,
+108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0,123, 5, 0, 22, 1, 11,
+ 1, 15, 2, 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7,
+ 11, 8, 15, 5, 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15,
+ 9, 11, 13, 22, 2, 11, 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 22, 2, 11,
+ 17, 15, 18, 29, 0, 2, 26, 15, 9, 11, 19, 22, 2, 11, 20, 15, 21, 29, 0, 2,
+ 26, 15, 9, 11, 22, 15, 9, 18, 10, 26, 15, 9, 11, 23, 15, 9, 18, 13, 26, 15,
+ 9, 11, 24, 15, 9, 18, 16, 26, 15, 9, 11, 25, 15, 9, 18, 19, 26, 0, 0, 0,
+ 0, 0, 0, 0, 0, 26, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66,
+ 65, 82, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7,
+ 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85,
+ 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 17, 64,108,
+117, 97, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 10, 4,
+ 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101,
+ 67,111,108,111,114, 98, 97,114, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108,
+111,114, 98, 97,114, 0, 4, 0, 0, 0, 7, 0, 0, 0, 17, 64,108,117, 97, 99,
+111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1,
+ 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, 65, 82, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 9, 99,111,108,111,114, 98, 97,114, 0,
+ 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2,
+ 0, 0, 0, 7, 99,101,108,108, 99, 98, 0, 2, 0, 0, 0, 8, 67, 69, 76, 76,
+ 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95, 99,111,108,111,114, 98, 97,
+114, 95, 99,101,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,101,108,101, 99,
+116, 99, 98, 0, 2, 0, 0, 0, 10, 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2,
+ 0, 0, 0, 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,101,108,
+101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,119,105,116, 99,104, 99, 98,
+ 0, 2, 0, 0, 0, 10, 83, 87, 73, 84, 67, 72, 95, 67, 66, 0, 2, 0, 0, 0,
+ 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,119,105,116, 99,104,
+ 95, 99, 98, 0, 2, 0, 0, 0, 11,101,120,116,101,110,100,101,100, 99, 98, 0,
+ 2, 0, 0, 0, 12, 69, 88, 84, 69, 78, 68, 69, 68, 95, 67, 66, 0, 2, 0, 0,
+ 0, 25,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,101,120,116,101,110,
+100,101,100, 95, 99, 98, 0, 2, 0, 0, 0, 8, 99,101,108,108, 95, 99, 98, 0,
+ 2, 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,
+115,119,105,116, 99,104, 95, 99, 98, 0, 2, 0, 0, 0, 12,101,120,116,101,110,
+100,101,100, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacolorbar_be32.lo");
+}
diff --git a/iup/srclua3/loh/colorbar_be64.loh b/iup/srclua3/loh/colorbar_be64.loh
new file mode 100755
index 0000000..cb0ed3e
--- /dev/null
+++ b/iup/srclua3/loh/colorbar_be64.loh
@@ -0,0 +1,48 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/colorbar_be64.lo");
+*/
+/* ../obj/iupluacontrols3/colorbar_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64, 99,111,108,111,114,
+ 98, 97,114, 46,108,117, 97, 0, 0, 0, 0,123, 5, 0, 22, 1, 11, 1, 15, 2,
+ 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15,
+ 5, 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13,
+ 22, 2, 11, 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 22, 2, 11, 17, 15, 18,
+ 29, 0, 2, 26, 15, 9, 11, 19, 22, 2, 11, 20, 15, 21, 29, 0, 2, 26, 15, 9,
+ 11, 22, 15, 9, 18, 10, 26, 15, 9, 11, 23, 15, 9, 18, 13, 26, 15, 9, 11, 24,
+ 15, 9, 18, 16, 26, 15, 9, 11, 25, 15, 9, 18, 19, 26, 0, 0, 0, 0, 0, 0,
+ 0, 0, 26, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, 65, 82, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68,
+ 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,
+101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, 64, 99,111,108,111,
+114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 10, 4, 2, 15, 1, 13, 1, 3,
+ 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0,
+ 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101, 67,111,108,111,114, 98,
+ 97,114, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108,111,114, 98, 97,114, 0,
+ 4, 0, 0, 0, 7, 0, 0, 0, 14, 64, 99,111,108,111,114, 98, 97,114, 46,108,
+117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73,
+ 85, 80, 67, 79, 76, 79, 82, 66, 65, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,
+116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0,
+ 0, 9, 99,111,108,111,114, 98, 97,114, 0, 2, 0, 0, 0, 14,105,117,112, 95,
+ 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 7, 99,101,108,108, 99,
+ 98, 0, 2, 0, 0, 0, 8, 67, 69, 76, 76, 95, 67, 66, 0, 2, 0, 0, 0, 21,
+105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95, 99,101,108,108, 95, 99, 98,
+ 0, 2, 0, 0, 0, 9,115,101,108,101, 99,116, 99, 98, 0, 2, 0, 0, 0, 10,
+ 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95, 99,
+111,108,111,114, 98, 97,114, 95,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0,
+ 0, 0, 9,115,119,105,116, 99,104, 99, 98, 0, 2, 0, 0, 0, 10, 83, 87, 73,
+ 84, 67, 72, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95, 99,111,108,111,
+114, 98, 97,114, 95,115,119,105,116, 99,104, 95, 99, 98, 0, 2, 0, 0, 0, 11,
+101,120,116,101,110,100,101,100, 99, 98, 0, 2, 0, 0, 0, 12, 69, 88, 84, 69,
+ 78, 68, 69, 68, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95, 99,111,108,
+111,114, 98, 97,114, 95,101,120,116,101,110,100,101,100, 95, 99, 98, 0, 2, 0,
+ 0, 0, 8, 99,101,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 10,115,101,108,101,
+ 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,115,119,105,116, 99,104, 95, 99, 98,
+ 0, 2, 0, 0, 0, 12,101,120,116,101,110,100,101,100, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/colorbar_be64.lo");
+}
diff --git a/iup/srclua3/loh/colorbar_le64.loh b/iup/srclua3/loh/colorbar_le64.loh
new file mode 100755
index 0000000..583e9d3
--- /dev/null
+++ b/iup/srclua3/loh/colorbar_le64.loh
@@ -0,0 +1,49 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luacolorbar_le64.lo");
+*/
+/* ../obj/iupluacontrols3/luacolorbar_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 17, 64,108,117, 97, 99,111,
+108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0,123, 5, 0, 22, 1, 11,
+ 1, 15, 2, 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7,
+ 11, 8, 15, 5, 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15,
+ 9, 11, 13, 22, 2, 11, 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 22, 2, 11,
+ 17, 15, 18, 29, 0, 2, 26, 15, 9, 11, 19, 22, 2, 11, 20, 15, 21, 29, 0, 2,
+ 26, 15, 9, 11, 22, 15, 9, 18, 10, 26, 15, 9, 11, 23, 15, 9, 18, 13, 26, 15,
+ 9, 11, 24, 15, 9, 18, 16, 26, 15, 9, 11, 25, 15, 9, 18, 19, 26, 0, 0, 0,
+ 0, 0, 0, 0, 0, 26, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66,
+ 65, 82, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7,
+ 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85,
+ 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 17, 64,108,
+117, 97, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 10, 4,
+ 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101,
+ 67,111,108,111,114, 98, 97,114, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108,
+111,114, 98, 97,114, 0, 4, 0, 0, 0, 7, 0, 0, 0, 17, 64,108,117, 97, 99,
+111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1,
+ 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, 65, 82, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 9, 99,111,108,111,114, 98, 97,114, 0,
+ 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2,
+ 0, 0, 0, 7, 99,101,108,108, 99, 98, 0, 2, 0, 0, 0, 8, 67, 69, 76, 76,
+ 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95, 99,111,108,111,114, 98, 97,
+114, 95, 99,101,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,101,108,101, 99,
+116, 99, 98, 0, 2, 0, 0, 0, 10, 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2,
+ 0, 0, 0, 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,101,108,
+101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,119,105,116, 99,104, 99, 98,
+ 0, 2, 0, 0, 0, 10, 83, 87, 73, 84, 67, 72, 95, 67, 66, 0, 2, 0, 0, 0,
+ 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,119,105,116, 99,104,
+ 95, 99, 98, 0, 2, 0, 0, 0, 11,101,120,116,101,110,100,101,100, 99, 98, 0,
+ 2, 0, 0, 0, 12, 69, 88, 84, 69, 78, 68, 69, 68, 95, 67, 66, 0, 2, 0, 0,
+ 0, 25,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,101,120,116,101,110,
+100,101,100, 95, 99, 98, 0, 2, 0, 0, 0, 8, 99,101,108,108, 95, 99, 98, 0,
+ 2, 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,
+115,119,105,116, 99,104, 95, 99, 98, 0, 2, 0, 0, 0, 12,101,120,116,101,110,
+100,101,100, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacolorbar_le64.lo");
+}
diff --git a/iup/srclua3/loh/colorbar_le64w.loh b/iup/srclua3/loh/colorbar_le64w.loh
new file mode 100755
index 0000000..ce8d260
--- /dev/null
+++ b/iup/srclua3/loh/colorbar_le64w.loh
@@ -0,0 +1,49 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luacolorbar_le64w.lo");
+*/
+/* ../obj/iupluacontrols3/luacolorbar_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 17, 64,108,117, 97, 99,111,
+108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0,123, 5, 0, 22, 1, 11,
+ 1, 15, 2, 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7,
+ 11, 8, 15, 5, 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15,
+ 9, 11, 13, 22, 2, 11, 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 22, 2, 11,
+ 17, 15, 18, 29, 0, 2, 26, 15, 9, 11, 19, 22, 2, 11, 20, 15, 21, 29, 0, 2,
+ 26, 15, 9, 11, 22, 15, 9, 18, 10, 26, 15, 9, 11, 23, 15, 9, 18, 13, 26, 15,
+ 9, 11, 24, 15, 9, 18, 16, 26, 15, 9, 11, 25, 15, 9, 18, 19, 26, 0, 0, 0,
+ 0, 0, 0, 0, 0, 26, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66,
+ 65, 82, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7,
+ 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85,
+ 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 17, 64,108,
+117, 97, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 10, 4,
+ 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101,
+ 67,111,108,111,114, 98, 97,114, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108,
+111,114, 98, 97,114, 0, 4, 0, 0, 0, 7, 0, 0, 0, 17, 64,108,117, 97, 99,
+111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1,
+ 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, 65, 82, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 9, 99,111,108,111,114, 98, 97,114, 0,
+ 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2,
+ 0, 0, 0, 7, 99,101,108,108, 99, 98, 0, 2, 0, 0, 0, 8, 67, 69, 76, 76,
+ 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95, 99,111,108,111,114, 98, 97,
+114, 95, 99,101,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,101,108,101, 99,
+116, 99, 98, 0, 2, 0, 0, 0, 10, 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2,
+ 0, 0, 0, 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,101,108,
+101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,119,105,116, 99,104, 99, 98,
+ 0, 2, 0, 0, 0, 10, 83, 87, 73, 84, 67, 72, 95, 67, 66, 0, 2, 0, 0, 0,
+ 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,119,105,116, 99,104,
+ 95, 99, 98, 0, 2, 0, 0, 0, 11,101,120,116,101,110,100,101,100, 99, 98, 0,
+ 2, 0, 0, 0, 12, 69, 88, 84, 69, 78, 68, 69, 68, 95, 67, 66, 0, 2, 0, 0,
+ 0, 25,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,101,120,116,101,110,
+100,101,100, 95, 99, 98, 0, 2, 0, 0, 0, 8, 99,101,108,108, 95, 99, 98, 0,
+ 2, 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,
+115,119,105,116, 99,104, 95, 99, 98, 0, 2, 0, 0, 0, 12,101,120,116,101,110,
+100,101,100, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacolorbar_le64w.lo");
+}
diff --git a/iup/srclua3/loh/colorbrowser.loh b/iup/srclua3/loh/colorbrowser.loh
new file mode 100755
index 0000000..eb3301a
--- /dev/null
+++ b/iup/srclua3/loh/colorbrowser.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luacb.lo");
+*/
+/* ../obj/iupluacontrols3/luacb.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,108,117, 97, 99, 98,
+ 46,108,117, 97, 0, 0, 0, 0, 77, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25,
+ 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15,
+ 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 22, 2, 11,
+ 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 15, 9, 18, 10, 26, 15, 9, 11, 17,
+ 15, 9, 18, 13, 26, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 16, 73,
+ 85, 80, 67, 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 7,
+112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2,
+ 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116,
+ 0, 4, 0, 0, 0, 3, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97,
+ 0, 0, 0, 0, 10, 4, 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 22,105,117,112,
+ 67,114,101, 97,116,101, 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 2,
+ 0, 0, 0, 16,105,117,112, 99,111,108,111,114, 98,114,111,119,115,101,114, 0,
+ 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 16, 73, 85, 80, 67,
+ 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 13, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 2, 0, 0, 0,
+ 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5,
+100,114, 97,103, 0, 2, 0, 0, 0, 8, 68, 82, 65, 71, 95, 67, 66, 0, 2, 0,
+ 0, 0, 25,105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95,
+100,114, 97,103, 95, 99, 98, 0, 2, 0, 0, 0, 7, 99,104, 97,110,103,101, 0,
+ 2, 0, 0, 0, 10, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, 0, 0, 0, 27,
+105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, 99,104, 97,
+110,103,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,100,114, 97,103, 95, 99, 98, 0,
+ 2, 0, 0, 0, 10, 99,104, 97,110,103,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacb.lo");
+}
diff --git a/iup/srclua3/loh/colorbrowser_be32.loh b/iup/srclua3/loh/colorbrowser_be32.loh
new file mode 100755
index 0000000..950ac0b
--- /dev/null
+++ b/iup/srclua3/loh/colorbrowser_be32.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luacb_be32.lo");
+*/
+/* ../obj/iupluacontrols3/luacb_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,108,117, 97, 99, 98,
+ 46,108,117, 97, 0, 0, 0, 0, 77, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25,
+ 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15,
+ 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 22, 2, 11,
+ 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 15, 9, 18, 10, 26, 15, 9, 11, 17,
+ 15, 9, 18, 13, 26, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 16, 73,
+ 85, 80, 67, 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 7,
+112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2,
+ 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116,
+ 0, 4, 0, 0, 0, 3, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97,
+ 0, 0, 0, 0, 10, 4, 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 22,105,117,112,
+ 67,114,101, 97,116,101, 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 2,
+ 0, 0, 0, 16,105,117,112, 99,111,108,111,114, 98,114,111,119,115,101,114, 0,
+ 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 16, 73, 85, 80, 67,
+ 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 13, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 2, 0, 0, 0,
+ 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5,
+100,114, 97,103, 0, 2, 0, 0, 0, 8, 68, 82, 65, 71, 95, 67, 66, 0, 2, 0,
+ 0, 0, 25,105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95,
+100,114, 97,103, 95, 99, 98, 0, 2, 0, 0, 0, 7, 99,104, 97,110,103,101, 0,
+ 2, 0, 0, 0, 10, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, 0, 0, 0, 27,
+105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, 99,104, 97,
+110,103,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,100,114, 97,103, 95, 99, 98, 0,
+ 2, 0, 0, 0, 10, 99,104, 97,110,103,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacb_be32.lo");
+}
diff --git a/iup/srclua3/loh/colorbrowser_be64.loh b/iup/srclua3/loh/colorbrowser_be64.loh
new file mode 100755
index 0000000..e307445
--- /dev/null
+++ b/iup/srclua3/loh/colorbrowser_be64.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/colorbrowser_be64.lo");
+*/
+/* ../obj/iupluacontrols3/colorbrowser_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 18, 64, 99,111,108,111,114,
+ 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 77, 5, 0, 22, 1,
+ 11, 1, 15, 2, 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15,
+ 7, 11, 8, 15, 5, 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26,
+ 15, 9, 11, 13, 22, 2, 11, 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 15, 9,
+ 18, 10, 26, 15, 9, 11, 17, 15, 9, 18, 13, 26, 0, 0, 0, 0, 0, 0, 0, 0,
+ 18, 2, 0, 0, 0, 16, 73, 85, 80, 67, 79, 76, 79, 82, 66, 82, 79, 87, 83, 69,
+ 82, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,
+101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 18, 64, 99,111,
+108,111,114, 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 10, 4,
+ 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 22,105,117,112, 67,114,101, 97,116,101,
+ 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 2, 0, 0, 0, 16,105,117,
+112, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 4, 0, 0, 0, 7, 0,
+ 0, 0, 18, 64, 99,111,108,111,114, 98,114,111,119,115,101,114, 46,108,117, 97,
+ 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 16, 73, 85, 80,
+ 67, 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2,
+ 0, 0, 0, 13, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 2, 0, 0,
+ 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0,
+ 5,100,114, 97,103, 0, 2, 0, 0, 0, 8, 68, 82, 65, 71, 95, 67, 66, 0, 2,
+ 0, 0, 0, 25,105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114,
+ 95,100,114, 97,103, 95, 99, 98, 0, 2, 0, 0, 0, 7, 99,104, 97,110,103,101,
+ 0, 2, 0, 0, 0, 10, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, 0, 0, 0,
+ 27,105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, 99,104,
+ 97,110,103,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,100,114, 97,103, 95, 99, 98,
+ 0, 2, 0, 0, 0, 10, 99,104, 97,110,103,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/colorbrowser_be64.lo");
+}
diff --git a/iup/srclua3/loh/colorbrowser_le64.loh b/iup/srclua3/loh/colorbrowser_le64.loh
new file mode 100755
index 0000000..dbf21d2
--- /dev/null
+++ b/iup/srclua3/loh/colorbrowser_le64.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luacb_le64.lo");
+*/
+/* ../obj/iupluacontrols3/luacb_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,108,117, 97, 99, 98,
+ 46,108,117, 97, 0, 0, 0, 0, 77, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25,
+ 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15,
+ 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 22, 2, 11,
+ 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 15, 9, 18, 10, 26, 15, 9, 11, 17,
+ 15, 9, 18, 13, 26, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 16, 73,
+ 85, 80, 67, 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 7,
+112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2,
+ 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116,
+ 0, 4, 0, 0, 0, 3, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97,
+ 0, 0, 0, 0, 10, 4, 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 22,105,117,112,
+ 67,114,101, 97,116,101, 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 2,
+ 0, 0, 0, 16,105,117,112, 99,111,108,111,114, 98,114,111,119,115,101,114, 0,
+ 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 16, 73, 85, 80, 67,
+ 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 13, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 2, 0, 0, 0,
+ 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5,
+100,114, 97,103, 0, 2, 0, 0, 0, 8, 68, 82, 65, 71, 95, 67, 66, 0, 2, 0,
+ 0, 0, 25,105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95,
+100,114, 97,103, 95, 99, 98, 0, 2, 0, 0, 0, 7, 99,104, 97,110,103,101, 0,
+ 2, 0, 0, 0, 10, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, 0, 0, 0, 27,
+105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, 99,104, 97,
+110,103,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,100,114, 97,103, 95, 99, 98, 0,
+ 2, 0, 0, 0, 10, 99,104, 97,110,103,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacb_le64.lo");
+}
diff --git a/iup/srclua3/loh/colorbrowser_le64w.loh b/iup/srclua3/loh/colorbrowser_le64w.loh
new file mode 100755
index 0000000..5738bec
--- /dev/null
+++ b/iup/srclua3/loh/colorbrowser_le64w.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luacb_le64w.lo");
+*/
+/* ../obj/iupluacontrols3/luacb_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,108,117, 97, 99, 98,
+ 46,108,117, 97, 0, 0, 0, 0, 77, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25,
+ 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15,
+ 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 22, 2, 11,
+ 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 15, 9, 18, 10, 26, 15, 9, 11, 17,
+ 15, 9, 18, 13, 26, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 16, 73,
+ 85, 80, 67, 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 7,
+112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2,
+ 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116,
+ 0, 4, 0, 0, 0, 3, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97,
+ 0, 0, 0, 0, 10, 4, 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 22,105,117,112,
+ 67,114,101, 97,116,101, 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 2,
+ 0, 0, 0, 16,105,117,112, 99,111,108,111,114, 98,114,111,119,115,101,114, 0,
+ 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 16, 73, 85, 80, 67,
+ 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 13, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 2, 0, 0, 0,
+ 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5,
+100,114, 97,103, 0, 2, 0, 0, 0, 8, 68, 82, 65, 71, 95, 67, 66, 0, 2, 0,
+ 0, 0, 25,105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95,
+100,114, 97,103, 95, 99, 98, 0, 2, 0, 0, 0, 7, 99,104, 97,110,103,101, 0,
+ 2, 0, 0, 0, 10, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, 0, 0, 0, 27,
+105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, 99,104, 97,
+110,103,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,100,114, 97,103, 95, 99, 98, 0,
+ 2, 0, 0, 0, 10, 99,104, 97,110,103,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacb_le64w.lo");
+}
diff --git a/iup/srclua3/loh/constants.loh b/iup/srclua3/loh/constants.loh
new file mode 100755
index 0000000..c9c3c4b
--- /dev/null
+++ b/iup/srclua3/loh/constants.loh
@@ -0,0 +1,301 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/constants.lo");
+*/
+/* ../obj/iuplua3/constants.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64, 99,111,110,115,116,
+ 97,110,116,115, 46,108,117, 97, 0, 0, 0, 5,182, 4, 0, 7, 1, 25, 0, 15,
+ 1, 11, 2, 15, 0, 26, 7, 0, 25, 3, 15, 1, 11, 4, 15, 3, 26, 9, 1, 25,
+ 5, 15, 1, 11, 6, 15, 5, 26, 9, 1, 25, 7, 15, 1, 11, 8, 15, 7, 26, 6,
+255,255, 25, 9, 15, 1, 11, 10, 15, 9, 26, 6,255,254, 25, 11, 15, 1, 11, 12,
+ 15, 11, 26, 6,255,253, 25, 13, 15, 1, 11, 14, 15, 13, 26, 6,255,252, 25, 15,
+ 15, 1, 11, 16, 15, 15, 26, 6,255,251, 25, 17, 15, 1, 11, 18, 15, 17, 26, 6,
+255,250, 25, 19, 15, 1, 11, 20, 15, 19, 26, 15, 11, 25, 21, 15, 1, 11, 22, 15,
+ 21, 26, 15, 13, 25, 23, 15, 1, 11, 24, 15, 23, 26, 7, 49, 25, 25, 15, 1, 11,
+ 26, 15, 25, 26, 7, 50, 25, 27, 15, 1, 11, 28, 15, 27, 26, 7, 51, 25, 29, 15,
+ 1, 11, 30, 15, 29, 26, 7, 52, 25, 31, 15, 1, 11, 32, 15, 31, 26, 7, 53, 25,
+ 33, 15, 1, 11, 34, 15, 33, 26, 9, 1, 25, 35, 15, 1, 11, 36, 15, 35, 26, 9,
+ 2, 25, 37, 15, 1, 11, 38, 15, 37, 26, 9, 3, 25, 39, 15, 1, 11, 40, 15, 39,
+ 26, 9, 4, 25, 41, 15, 1, 11, 42, 15, 41, 26, 7, 0, 25, 43, 15, 1, 11, 44,
+ 15, 43, 26, 7, 1, 25, 45, 15, 1, 11, 46, 15, 45, 26, 7, 2, 25, 47, 15, 1,
+ 11, 48, 15, 47, 26, 7, 3, 25, 49, 15, 1, 11, 50, 15, 49, 26, 7, 4, 25, 51,
+ 15, 1, 11, 52, 15, 51, 26, 7, 5, 25, 53, 15, 1, 11, 54, 15, 53, 26, 7, 6,
+ 25, 55, 15, 1, 11, 56, 15, 55, 26, 7, 7, 25, 57, 15, 1, 11, 58, 15, 57, 26,
+ 7, 8, 25, 59, 15, 1, 11, 60, 15, 59, 26, 7, 9, 25, 61, 15, 1, 11, 62, 15,
+ 61, 26, 7, 10, 25, 63, 15, 1, 11, 64, 15, 63, 26, 7, 11, 25, 65, 15, 1, 11,
+ 66, 15, 65, 26, 7, 0, 25, 67, 15, 1, 11, 68, 15, 67, 26, 7, 1, 25, 69, 15,
+ 1, 11, 70, 15, 69, 26, 7, 2, 25, 71, 15, 1, 11, 72, 15, 71, 26, 7, 3, 25,
+ 73, 15, 1, 11, 74, 15, 73, 26, 7, 4, 25, 75, 15, 1, 11, 76, 15, 75, 26, 15,
+ 78, 7, 1, 7, 0, 7, 0, 2, 1, 3, 25, 77, 15, 1, 11, 77, 15, 77, 26, 15,
+ 78, 7, 0, 7, 1, 7, 0, 2, 1, 3, 25, 79, 15, 1, 11, 79, 15, 79, 26, 15,
+ 78, 7, 0, 7, 0, 7, 1, 2, 1, 3, 25, 80, 15, 1, 11, 80, 15, 80, 26, 15,
+ 78, 7, 0, 7, 0, 7, 0, 2, 1, 3, 25, 81, 15, 1, 11, 81, 15, 81, 26, 15,
+ 78, 7, 1, 7, 1, 7, 1, 2, 1, 3, 25, 82, 15, 1, 11, 82, 15, 82, 26, 15,
+ 78, 7, 1, 7, 1, 7, 0, 2, 1, 3, 25, 83, 15, 1, 11, 83, 15, 83, 26, 11,
+ 85, 25, 84, 15, 1, 11, 85, 15, 84, 26, 11, 87, 25, 86, 15, 1, 11, 87, 15, 86,
+ 26, 11, 89, 25, 88, 15, 1, 11, 89, 15, 88, 26, 11, 91, 25, 90, 15, 1, 11, 91,
+ 15, 90, 26, 11, 93, 25, 92, 15, 1, 11, 93, 15, 92, 26, 11, 95, 25, 94, 15, 1,
+ 11, 95, 15, 94, 26, 11, 97, 25, 96, 15, 1, 11, 97, 15, 96, 26, 11, 99, 25, 98,
+ 15, 1, 11, 99, 15, 98, 26, 11,101, 25,100, 15, 1, 11,101, 15,100, 26, 11,103,
+ 25,102, 15, 1, 11,103, 15,102, 26, 11,105, 25,104, 15, 1, 11,105, 15,104, 26,
+ 11,107, 25,106, 15, 1, 11,107, 15,106, 26, 11,109, 25,108, 15, 1, 11,109, 15,
+108, 26, 11,111, 25,110, 15, 1, 11,111, 15,110, 26, 11,113, 25,112, 15, 1, 11,
+113, 15,112, 26, 11,115, 25,114, 15, 1, 11,115, 15,114, 26, 11,117, 25,116, 15,
+ 1, 11,117, 15,116, 26, 11,119, 25,118, 15, 1, 11,119, 15,118, 26, 11,121, 25,
+120, 15, 1, 11,121, 15,120, 26, 11,123, 25,122, 15, 1, 11,123, 15,122, 26, 11,
+125, 25,124, 15, 1, 11,125, 15,124, 26, 11,127, 25,126, 15, 1, 11,127, 15,126,
+ 26, 11,129, 25,128, 15, 1, 11,129, 15,128, 26, 11,131, 25,130, 15, 1, 11,131,
+ 15,130, 26, 11,133, 25,132, 15, 1, 11,133, 15,132, 26, 11,135, 25,134, 15, 1,
+ 11,135, 15,134, 26, 11,137, 25,136, 15, 1, 11,137, 15,136, 26, 11,139, 25,138,
+ 15, 1, 11,139, 15,138, 26, 11,141, 25,140, 15, 1, 11,141, 15,140, 26, 11,143,
+ 25,142, 15, 1, 11,143, 15,142, 26, 11,145, 25,144, 15, 1, 11,145, 15,144, 26,
+ 11,147, 25,146, 15, 1, 11,147, 15,146, 26, 11,149, 25,148, 15, 1, 11,149, 15,
+148, 26, 11,151, 25,150, 15, 1, 11,151, 15,150, 26, 11,153, 25,152, 15, 1, 11,
+153, 15,152, 26, 11,155, 25,154, 15, 1, 11,155, 15,154, 26, 11,157, 25,156, 15,
+ 1, 11,157, 15,156, 26, 11,159, 25,158, 15, 1, 11,159, 15,158, 26, 11,161, 25,
+160, 15, 1, 11,161, 15,160, 26, 11,163, 25,162, 15, 1, 11,163, 15,162, 26, 11,
+165, 25,164, 15, 1, 11,165, 15,164, 26, 11,167, 25,166, 15, 1, 11,167, 15,166,
+ 26, 11,169, 25,168, 15, 1, 11,169, 15,168, 26, 11,171, 25,170, 15, 1, 11,171,
+ 15,170, 26, 11,173, 25,172, 15, 1, 11,173, 15,172, 26, 11,175, 25,174, 15, 1,
+ 11,175, 15,174, 26, 11,177, 25,176, 15, 1, 11,177, 15,176, 26, 11,179, 25,178,
+ 15, 1, 11,179, 15,178, 26, 11,181, 25,180, 15, 1, 11,181, 15,180, 26, 11,183,
+ 25,182, 15, 1, 11,183, 15,182, 26, 11,185, 25,184, 15, 1, 11,185, 15,184, 26,
+ 11,187, 25,186, 15, 1, 11,187, 15,186, 26, 11,189, 25,188, 15, 1, 11,189, 15,
+188, 26, 11,191, 25,190, 15, 1, 11,191, 15,190, 26, 11,193, 25,192, 15, 1, 11,
+193, 15,192, 26, 11,195, 25,194, 15, 1, 11,195, 15,194, 26, 11,197, 25,196, 15,
+ 1, 11,197, 15,196, 26, 11,199, 25,198, 15, 1, 11,199, 15,198, 26, 11,201, 25,
+200, 15, 1, 11,201, 15,200, 26, 11,203, 25,202, 15, 1, 11,203, 15,202, 26, 11,
+205, 25,204, 15, 1, 11,205, 15,204, 26, 11,207, 25,206, 15, 1, 11,207, 15,206,
+ 26, 11,209, 25,208, 15, 1, 11,209, 15,208, 26, 11,211, 25,210, 15, 1, 11,211,
+ 15,210, 26, 11,213, 25,212, 15, 1, 11,213, 15,212, 26, 11,215, 25,214, 15, 1,
+ 11,215, 15,214, 26, 11,217, 25,216, 15, 1, 11,217, 15,216, 26, 11,219, 25,218,
+ 15, 1, 11,219, 15,218, 26, 11,221, 25,220, 15, 1, 11,221, 15,220, 26, 11,223,
+ 25,222, 15, 1, 11,223, 15,222, 26, 11,225, 25,224, 15, 1, 11,225, 15,224, 26,
+ 11,227, 25,226, 15, 1, 11,227, 15,226, 26, 11,229, 25,228, 15, 1, 11,229, 15,
+228, 26, 11,231, 25,230, 15, 1, 11,231, 15,230, 26, 11,233, 25,232, 15, 1, 11,
+233, 15,232, 26, 11,235, 25,234, 15, 1, 11,235, 15,234, 26, 11,237, 25,236, 15,
+ 1, 11,237, 15,236, 26, 11,239, 25,238, 15, 1, 11,239, 15,238, 26, 11,241, 25,
+240, 15, 1, 11,241, 15,240, 26, 11,243, 25,242, 15, 1, 11,243, 15,242, 26, 15,
+ 1, 11,244, 11,245, 26, 15, 1, 11,246, 11,247, 26, 15, 1, 11,248, 11,249, 26,
+ 15, 1, 11,250, 11,251, 26, 15, 1, 11,252, 11,253, 26, 0, 0, 0, 0, 0, 0,
+ 0, 0,254, 2, 0, 0, 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0,
+ 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6, 69, 82, 82, 79, 82, 0, 2, 0,
+ 0, 0, 12, 73, 85, 80, 95, 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 8,
+ 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 79, 80, 69,
+ 78, 69, 68, 0, 2, 0, 0, 0, 7, 79, 80, 69, 78, 69, 68, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 8, 73, 78,
+ 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, 69, 78, 84, 69,
+ 82, 0, 2, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 9, 73,
+ 85, 80, 95, 76, 69, 70, 84, 0, 2, 0, 0, 0, 5, 76, 69, 70, 84, 0, 2, 0,
+ 0, 0, 10, 73, 85, 80, 95, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 6, 82, 73,
+ 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 79, 85, 83, 69, 80, 79,
+ 83, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 80, 79, 83, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 67, 85,
+ 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, 67, 69, 78, 84, 69,
+ 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 13, 67, 69, 78, 84, 69, 82, 80,
+ 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 84, 79, 80, 0, 2,
+ 0, 0, 0, 4, 84, 79, 80, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 66, 79, 84,
+ 84, 79, 77, 0, 2, 0, 0, 0, 7, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 8, 66, 85,
+ 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79,
+ 78, 50, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 50, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 8, 66, 85,
+ 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79,
+ 78, 52, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 52, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 8, 66, 85,
+ 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 73, 71, 78, 79, 82,
+ 69, 0, 2, 0, 0, 0, 7, 73, 71, 78, 79, 82, 69, 0, 2, 0, 0, 0, 12, 73,
+ 85, 80, 95, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0, 8, 68, 69, 70, 65,
+ 85, 76, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 76, 79, 83, 69, 0, 2,
+ 0, 0, 0, 6, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 67,
+ 79, 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 67, 79, 78, 84, 73, 78, 85,
+ 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 85, 80, 0, 2, 0, 0, 0,
+ 5, 83, 66, 85, 80, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 68, 78, 0,
+ 2, 0, 0, 0, 5, 83, 66, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83,
+ 66, 80, 71, 85, 80, 0, 2, 0, 0, 0, 7, 83, 66, 80, 71, 85, 80, 0, 2, 0,
+ 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 7, 83,
+ 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 79, 83,
+ 86, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 86, 0, 2, 0, 0, 0, 12, 73,
+ 85, 80, 95, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0, 8, 83, 66, 68, 82,
+ 65, 71, 86, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 76, 69, 70, 84, 0,
+ 2, 0, 0, 0, 7, 83, 66, 76, 69, 70, 84, 0, 2, 0, 0, 0, 12, 73, 85, 80,
+ 95, 83, 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 8, 83, 66, 82, 73, 71, 72,
+ 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 83, 66, 80, 71, 76, 69, 70, 84, 0,
+ 2, 0, 0, 0, 9, 83, 66, 80, 71, 76, 69, 70, 84, 0, 2, 0, 0, 0, 14, 73,
+ 85, 80, 95, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 10, 83, 66,
+ 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80,
+ 79, 83, 72, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 72, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 8, 83, 66,
+ 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 72, 79, 87, 0,
+ 2, 0, 0, 0, 5, 83, 72, 79, 87, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 82,
+ 69, 83, 84, 79, 82, 69, 0, 2, 0, 0, 0, 8, 82, 69, 83, 84, 79, 82, 69, 0,
+ 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0,
+ 0, 0, 9, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80,
+ 95, 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9, 77, 65, 88, 73, 77,
+ 73, 90, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 73, 68, 69, 0, 2, 0,
+ 0, 0, 5, 72, 73, 68, 69, 0, 2, 0, 0, 0, 4, 82, 69, 68, 0, 2, 0, 0,
+ 0, 7, 73,117,112, 82, 71, 66, 0, 2, 0, 0, 0, 6, 71, 82, 69, 69, 78, 0,
+ 2, 0, 0, 0, 5, 66, 76, 85, 69, 0, 2, 0, 0, 0, 6, 66, 76, 65, 67, 75,
+ 0, 2, 0, 0, 0, 6, 87, 72, 73, 84, 69, 0, 2, 0, 0, 0, 7, 89, 69, 76,
+ 76, 79, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 79, 78, 0, 2, 0, 0, 0,
+ 3, 79, 78, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 79, 70, 70, 0, 2, 0, 0,
+ 0, 4, 79, 70, 70, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2,
+ 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0,
+ 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 80, 80,
+ 69, 78, 68, 0, 2, 0, 0, 0, 7, 65, 80, 80, 69, 78, 68, 0, 2, 0, 0, 0,
+ 13, 73, 85, 80, 95, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 9, 86,
+ 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 15, 73, 85, 80, 95, 72, 79, 82,
+ 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78,
+ 84, 65, 76, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 65, 67, 69, 78, 84, 69, 82,
+ 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 10, 73,
+ 85, 80, 95, 65, 76, 69, 70, 84, 0, 2, 0, 0, 0, 6, 65, 76, 69, 70, 84, 0,
+ 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0,
+ 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 65, 84, 79,
+ 80, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 12, 73, 85, 80,
+ 95, 65, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 8, 65, 66, 79, 84, 84, 79,
+ 77, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 78, 79, 82, 84, 72, 0, 2, 0, 0,
+ 0, 6, 78, 79, 82, 84, 72, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 83, 79, 85,
+ 84, 72, 0, 2, 0, 0, 0, 6, 83, 79, 85, 84, 72, 0, 2, 0, 0, 0, 9, 73,
+ 85, 80, 95, 87, 69, 83, 84, 0, 2, 0, 0, 0, 5, 87, 69, 83, 84, 0, 2, 0,
+ 0, 0, 9, 73, 85, 80, 95, 69, 65, 83, 84, 0, 2, 0, 0, 0, 5, 69, 65, 83,
+ 84, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 69, 0, 2, 0, 0, 0, 3, 78,
+ 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 69, 0, 2, 0, 0, 0, 3, 83,
+ 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 87, 0, 2, 0, 0, 0, 3, 78,
+ 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 87, 0, 2, 0, 0, 0, 3, 83,
+ 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 70, 85, 76, 76, 0, 2, 0, 0, 0,
+ 5, 70, 85, 76, 76, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 65, 76, 70, 0,
+ 2, 0, 0, 0, 5, 72, 65, 76, 70, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 84,
+ 72, 73, 82, 68, 0, 2, 0, 0, 0, 6, 84, 72, 73, 82, 68, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 8, 81, 85,
+ 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 69, 73, 71, 72, 84,
+ 72, 0, 2, 0, 0, 0, 7, 69, 73, 71, 72, 84, 72, 0, 2, 0, 0, 0, 10, 73,
+ 85, 80, 95, 65, 82, 82, 79, 87, 0, 2, 0, 0, 0, 6, 65, 82, 82, 79, 87, 0,
+ 2, 0, 0, 0, 9, 73, 85, 80, 95, 66, 85, 83, 89, 0, 2, 0, 0, 0, 5, 66,
+ 85, 83, 89, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95,
+ 78, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 78, 0, 2, 0, 0, 0,
+ 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 9, 82,
+ 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83,
+ 73, 90, 69, 95, 69, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 69, 0,
+ 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0,
+ 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0, 0, 0, 14, 73, 85, 80,
+ 95, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73,
+ 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90,
+ 69, 95, 78, 87, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 78, 87, 0,
+ 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2,
+ 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2, 0, 0, 0, 14, 73,
+ 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 10, 82, 69,
+ 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 77, 79, 86,
+ 69, 0, 2, 0, 0, 0, 5, 77, 79, 86, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80,
+ 95, 72, 65, 78, 68, 0, 2, 0, 0, 0, 5, 72, 65, 78, 68, 0, 2, 0, 0, 0,
+ 9, 73, 85, 80, 95, 78, 79, 78, 69, 0, 2, 0, 0, 0, 5, 78, 79, 78, 69, 0,
+ 2, 0, 0, 0, 8, 73, 85, 80, 95, 73, 85, 80, 0, 2, 0, 0, 0, 4, 73, 85,
+ 80, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 82, 79, 83, 83, 0, 2, 0, 0,
+ 0, 6, 67, 82, 79, 83, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 80, 69, 78,
+ 0, 2, 0, 0, 0, 4, 80, 69, 78, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 84,
+ 69, 88, 84, 0, 2, 0, 0, 0, 5, 84, 69, 88, 84, 0, 2, 0, 0, 0, 13, 73,
+ 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 9, 82, 69, 83,
+ 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 79, 80, 69, 78, 72,
+ 65, 78, 68, 0, 2, 0, 0, 0, 9, 79, 80, 69, 78, 72, 65, 78, 68, 0, 2, 0,
+ 0, 0, 23, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82,
+ 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65,
+ 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 23, 73, 85, 80, 95, 72,
+ 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0,
+ 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95,
+ 56, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65,
+ 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 17, 72, 69, 76, 86, 69, 84, 73,
+ 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72,
+ 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2,
+ 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76,
+ 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73,
+ 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 20, 72, 69,
+ 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0,
+ 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76,
+ 68, 95, 49, 48, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95,
+ 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76,
+ 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0,
+ 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49,
+ 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65,
+ 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86,
+ 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0,
+ 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95,
+ 49, 50, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79,
+ 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69,
+ 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 20,
+ 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0,
+ 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73,
+ 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84,
+ 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73,
+ 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 49, 52,
+ 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68,
+ 95, 49, 52, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82,
+ 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 17, 67, 79, 85, 82, 73,
+ 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 21, 73, 85, 80,
+ 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0,
+ 0, 0, 17, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0,
+ 2, 0, 0, 0, 19, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76,
+ 68, 95, 56, 0, 2, 0, 0, 0, 15, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76,
+ 68, 95, 56, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82,
+ 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82,
+ 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 22, 73,
+ 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48,
+ 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67,
+ 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82,
+ 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69,
+ 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67,
+ 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0,
+ 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0,
+ 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65,
+ 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95,
+ 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67,
+ 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 16,
+ 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0,
+ 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95,
+ 49, 52, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77,
+ 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73,
+ 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, 67, 79,
+ 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0,
+ 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 52,
+ 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49,
+ 52, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82,
+ 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, 83, 95, 78, 79, 82,
+ 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, 83,
+ 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, 83,
+ 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, 84,
+ 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 13, 84, 73, 77,
+ 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84,
+ 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 16,
+ 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0,
+ 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48,
+ 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49,
+ 48, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76,
+ 68, 95, 49, 48, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68,
+ 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78,
+ 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95,
+ 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84,
+ 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 16,
+ 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0,
+ 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2,
+ 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0,
+ 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95,
+ 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76,
+ 95, 49, 52, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73,
+ 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95,
+ 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84,
+ 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 14, 84, 73,
+ 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 11, 77, 65, 83,
+ 75, 95, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 24, 91, 43, 47, 45, 93, 63, 40,
+ 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 2, 0, 0,
+ 0, 12, 77, 65, 83, 75, 95, 85, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 18, 40,
+ 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 2, 0, 0,
+ 0, 12, 77, 65, 83, 75, 95, 69, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 40, 91,
+ 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100,
+ 43, 41, 40, 91,101, 69, 93, 91, 43, 47, 45, 93, 63, 47,100, 43, 41, 63, 0, 2,
+ 0, 0, 0, 9, 77, 65, 83, 75, 95, 73, 78, 84, 0, 2, 0, 0, 0, 10, 91, 43,
+ 47, 45, 93, 63, 47,100, 43, 0, 2, 0, 0, 0, 10, 77, 65, 83, 75, 95, 85, 73,
+ 78, 84, 0, 2, 0, 0, 0, 4, 47,100, 43, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/constants.lo");
+}
diff --git a/iup/srclua3/loh/constants_be32.loh b/iup/srclua3/loh/constants_be32.loh
new file mode 100755
index 0000000..0b6a3a8
--- /dev/null
+++ b/iup/srclua3/loh/constants_be32.loh
@@ -0,0 +1,289 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/constants_be32.lo");
+*/
+/* ../obj/iuplua3/constants_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64, 99,111,110,115,116,
+ 97,110,116,115, 46,108,117, 97, 0, 0, 0, 5,147, 4, 0, 7, 1, 25, 0, 15,
+ 1, 11, 2, 15, 0, 26, 7, 0, 25, 3, 15, 1, 11, 4, 15, 3, 26, 9, 1, 25,
+ 5, 15, 1, 11, 6, 15, 5, 26, 9, 1, 25, 7, 15, 1, 11, 8, 15, 7, 26, 6,
+255,255, 25, 9, 15, 1, 11, 10, 15, 9, 26, 6,255,254, 25, 11, 15, 1, 11, 12,
+ 15, 11, 26, 6,255,253, 25, 13, 15, 1, 11, 14, 15, 13, 26, 6,255,252, 25, 15,
+ 15, 1, 11, 16, 15, 15, 26, 6,255,251, 25, 17, 15, 1, 11, 18, 15, 17, 26, 6,
+255,250, 25, 19, 15, 1, 11, 20, 15, 19, 26, 15, 11, 25, 21, 15, 1, 11, 22, 15,
+ 21, 26, 15, 13, 25, 23, 15, 1, 11, 24, 15, 23, 26, 7, 49, 25, 25, 15, 1, 11,
+ 26, 15, 25, 26, 7, 50, 25, 27, 15, 1, 11, 28, 15, 27, 26, 7, 51, 25, 29, 15,
+ 1, 11, 30, 15, 29, 26, 7, 52, 25, 31, 15, 1, 11, 32, 15, 31, 26, 7, 53, 25,
+ 33, 15, 1, 11, 34, 15, 33, 26, 9, 1, 25, 35, 15, 1, 11, 36, 15, 35, 26, 9,
+ 2, 25, 37, 15, 1, 11, 38, 15, 37, 26, 9, 3, 25, 39, 15, 1, 11, 40, 15, 39,
+ 26, 9, 4, 25, 41, 15, 1, 11, 42, 15, 41, 26, 7, 0, 25, 43, 15, 1, 11, 44,
+ 15, 43, 26, 7, 1, 25, 45, 15, 1, 11, 46, 15, 45, 26, 7, 2, 25, 47, 15, 1,
+ 11, 48, 15, 47, 26, 7, 3, 25, 49, 15, 1, 11, 50, 15, 49, 26, 7, 4, 25, 51,
+ 15, 1, 11, 52, 15, 51, 26, 7, 5, 25, 53, 15, 1, 11, 54, 15, 53, 26, 7, 6,
+ 25, 55, 15, 1, 11, 56, 15, 55, 26, 7, 7, 25, 57, 15, 1, 11, 58, 15, 57, 26,
+ 7, 8, 25, 59, 15, 1, 11, 60, 15, 59, 26, 7, 9, 25, 61, 15, 1, 11, 62, 15,
+ 61, 26, 7, 10, 25, 63, 15, 1, 11, 64, 15, 63, 26, 7, 11, 25, 65, 15, 1, 11,
+ 66, 15, 65, 26, 7, 0, 25, 67, 15, 1, 11, 68, 15, 67, 26, 7, 1, 25, 69, 15,
+ 1, 11, 70, 15, 69, 26, 7, 2, 25, 71, 15, 1, 11, 72, 15, 71, 26, 7, 3, 25,
+ 73, 15, 1, 11, 74, 15, 73, 26, 7, 4, 25, 75, 15, 1, 11, 76, 15, 75, 26, 15,
+ 78, 7, 1, 7, 0, 7, 0, 2, 1, 3, 25, 77, 15, 1, 11, 77, 15, 77, 26, 15,
+ 78, 7, 0, 7, 1, 7, 0, 2, 1, 3, 25, 79, 15, 1, 11, 79, 15, 79, 26, 15,
+ 78, 7, 0, 7, 0, 7, 1, 2, 1, 3, 25, 80, 15, 1, 11, 80, 15, 80, 26, 15,
+ 78, 7, 0, 7, 0, 7, 0, 2, 1, 3, 25, 81, 15, 1, 11, 81, 15, 81, 26, 15,
+ 78, 7, 1, 7, 1, 7, 1, 2, 1, 3, 25, 82, 15, 1, 11, 82, 15, 82, 26, 15,
+ 78, 7, 1, 7, 1, 7, 0, 2, 1, 3, 25, 83, 15, 1, 11, 83, 15, 83, 26, 11,
+ 85, 25, 84, 15, 1, 11, 85, 15, 84, 26, 11, 87, 25, 86, 15, 1, 11, 87, 15, 86,
+ 26, 11, 89, 25, 88, 15, 1, 11, 89, 15, 88, 26, 11, 91, 25, 90, 15, 1, 11, 91,
+ 15, 90, 26, 11, 93, 25, 92, 15, 1, 11, 93, 15, 92, 26, 11, 95, 25, 94, 15, 1,
+ 11, 95, 15, 94, 26, 11, 97, 25, 96, 15, 1, 11, 97, 15, 96, 26, 11, 99, 25, 98,
+ 15, 1, 11, 99, 15, 98, 26, 11,101, 25,100, 15, 1, 11,101, 15,100, 26, 11,103,
+ 25,102, 15, 1, 11,103, 15,102, 26, 11,105, 25,104, 15, 1, 11,105, 15,104, 26,
+ 11,107, 25,106, 15, 1, 11,107, 15,106, 26, 11,109, 25,108, 15, 1, 11,109, 15,
+108, 26, 11,111, 25,110, 15, 1, 11,111, 15,110, 26, 11,113, 25,112, 15, 1, 11,
+113, 15,112, 26, 11,115, 25,114, 15, 1, 11,115, 15,114, 26, 11,117, 25,116, 15,
+ 1, 11,117, 15,116, 26, 11,119, 25,118, 15, 1, 11,119, 15,118, 26, 11,121, 25,
+120, 15, 1, 11,121, 15,120, 26, 11,123, 25,122, 15, 1, 11,123, 15,122, 26, 11,
+125, 25,124, 15, 1, 11,125, 15,124, 26, 11,127, 25,126, 15, 1, 11,127, 15,126,
+ 26, 11,129, 25,128, 15, 1, 11,129, 15,128, 26, 11,131, 25,130, 15, 1, 11,131,
+ 15,130, 26, 11,133, 25,132, 15, 1, 11,133, 15,132, 26, 11,135, 25,134, 15, 1,
+ 11,135, 15,134, 26, 11,137, 25,136, 15, 1, 11,137, 15,136, 26, 11,139, 25,138,
+ 15, 1, 11,139, 15,138, 26, 11,141, 25,140, 15, 1, 11,141, 15,140, 26, 11,143,
+ 25,142, 15, 1, 11,143, 15,142, 26, 11,145, 25,144, 15, 1, 11,145, 15,144, 26,
+ 11,147, 25,146, 15, 1, 11,147, 15,146, 26, 11,149, 25,148, 15, 1, 11,149, 15,
+148, 26, 11,151, 25,150, 15, 1, 11,151, 15,150, 26, 11,153, 25,152, 15, 1, 11,
+153, 15,152, 26, 11,155, 25,154, 15, 1, 11,155, 15,154, 26, 11,157, 25,156, 15,
+ 1, 11,157, 15,156, 26, 11,159, 25,158, 15, 1, 11,159, 15,158, 26, 11,161, 25,
+160, 15, 1, 11,161, 15,160, 26, 11,163, 25,162, 15, 1, 11,163, 15,162, 26, 11,
+165, 25,164, 15, 1, 11,165, 15,164, 26, 11,167, 25,166, 15, 1, 11,167, 15,166,
+ 26, 11,169, 25,168, 15, 1, 11,169, 15,168, 26, 11,171, 25,170, 15, 1, 11,171,
+ 15,170, 26, 11,173, 25,172, 15, 1, 11,173, 15,172, 26, 11,175, 25,174, 15, 1,
+ 11,175, 15,174, 26, 11,177, 25,176, 15, 1, 11,177, 15,176, 26, 11,179, 25,178,
+ 15, 1, 11,179, 15,178, 26, 11,181, 25,180, 15, 1, 11,181, 15,180, 26, 11,183,
+ 25,182, 15, 1, 11,183, 15,182, 26, 11,185, 25,184, 15, 1, 11,185, 15,184, 26,
+ 11,187, 25,186, 15, 1, 11,187, 15,186, 26, 11,189, 25,188, 15, 1, 11,189, 15,
+188, 26, 11,191, 25,190, 15, 1, 11,191, 15,190, 26, 11,193, 25,192, 15, 1, 11,
+193, 15,192, 26, 11,195, 25,194, 15, 1, 11,195, 15,194, 26, 11,197, 25,196, 15,
+ 1, 11,197, 15,196, 26, 11,199, 25,198, 15, 1, 11,199, 15,198, 26, 11,201, 25,
+200, 15, 1, 11,201, 15,200, 26, 11,203, 25,202, 15, 1, 11,203, 15,202, 26, 11,
+205, 25,204, 15, 1, 11,205, 15,204, 26, 11,207, 25,206, 15, 1, 11,207, 15,206,
+ 26, 11,209, 25,208, 15, 1, 11,209, 15,208, 26, 11,211, 25,210, 15, 1, 11,211,
+ 15,210, 26, 11,213, 25,212, 15, 1, 11,213, 15,212, 26, 11,215, 25,214, 15, 1,
+ 11,215, 15,214, 26, 11,217, 25,216, 15, 1, 11,217, 15,216, 26, 11,219, 25,218,
+ 15, 1, 11,219, 15,218, 26, 11,221, 25,220, 15, 1, 11,221, 15,220, 26, 11,223,
+ 25,222, 15, 1, 11,223, 15,222, 26, 11,225, 25,224, 15, 1, 11,225, 15,224, 26,
+ 11,227, 25,226, 15, 1, 11,227, 15,226, 26, 11,229, 25,228, 15, 1, 11,229, 15,
+228, 26, 11,231, 25,230, 15, 1, 11,231, 15,230, 26, 11,233, 25,232, 15, 1, 11,
+233, 15,232, 26, 11,235, 25,234, 15, 1, 11,235, 15,234, 26, 11,237, 25,236, 15,
+ 1, 11,237, 15,236, 26, 11,239, 25,238, 15, 1, 11,239, 15,238, 26, 11,241, 25,
+240, 15, 1, 11,241, 15,240, 26, 11,243, 25,242, 15, 1, 11,243, 15,242, 26, 0,
+ 0, 0, 0, 0, 0, 0, 0,244, 2, 0, 0, 0, 10, 73, 85, 80, 95, 69, 82, 82,
+ 79, 82, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6, 69, 82, 82,
+ 79, 82, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 78, 79, 69, 82, 82, 79, 82, 0,
+ 2, 0, 0, 0, 8, 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 95, 79, 80, 69, 78, 69, 68, 0, 2, 0, 0, 0, 7, 79, 80, 69, 78, 69, 68,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0,
+ 0, 0, 8, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,
+ 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 2,
+ 0, 0, 0, 9, 73, 85, 80, 95, 76, 69, 70, 84, 0, 2, 0, 0, 0, 5, 76, 69,
+ 70, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 82, 73, 71, 72, 84, 0, 2, 0,
+ 0, 0, 6, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 79,
+ 85, 83, 69, 80, 79, 83, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 80, 79, 83,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0,
+ 0, 0, 8, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95,
+ 67, 69, 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 13, 67, 69,
+ 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95,
+ 84, 79, 80, 0, 2, 0, 0, 0, 4, 84, 79, 80, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 95, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 7, 66, 79, 84, 84, 79, 77,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0,
+ 0, 0, 8, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95,
+ 66, 85, 84, 84, 79, 78, 50, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 50,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0,
+ 0, 0, 8, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95,
+ 66, 85, 84, 84, 79, 78, 52, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 52,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0,
+ 0, 0, 8, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,
+ 73, 71, 78, 79, 82, 69, 0, 2, 0, 0, 0, 7, 73, 71, 78, 79, 82, 69, 0, 2,
+ 0, 0, 0, 12, 73, 85, 80, 95, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0,
+ 8, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 76,
+ 79, 83, 69, 0, 2, 0, 0, 0, 6, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 13,
+ 73, 85, 80, 95, 67, 79, 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 67, 79,
+ 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 85, 80,
+ 0, 2, 0, 0, 0, 5, 83, 66, 85, 80, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95,
+ 83, 66, 68, 78, 0, 2, 0, 0, 0, 5, 83, 66, 68, 78, 0, 2, 0, 0, 0, 11,
+ 73, 85, 80, 95, 83, 66, 80, 71, 85, 80, 0, 2, 0, 0, 0, 7, 83, 66, 80, 71,
+ 85, 80, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 71, 68, 78, 0, 2,
+ 0, 0, 0, 7, 83, 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,
+ 83, 66, 80, 79, 83, 86, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 86, 0, 2,
+ 0, 0, 0, 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0,
+ 8, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66,
+ 76, 69, 70, 84, 0, 2, 0, 0, 0, 7, 83, 66, 76, 69, 70, 84, 0, 2, 0, 0,
+ 0, 12, 73, 85, 80, 95, 83, 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 8, 83,
+ 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 83, 66, 80, 71,
+ 76, 69, 70, 84, 0, 2, 0, 0, 0, 9, 83, 66, 80, 71, 76, 69, 70, 84, 0, 2,
+ 0, 0, 0, 14, 73, 85, 80, 95, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0,
+ 0, 0, 10, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 95, 83, 66, 80, 79, 83, 72, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 72,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0,
+ 0, 0, 8, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95,
+ 83, 72, 79, 87, 0, 2, 0, 0, 0, 5, 83, 72, 79, 87, 0, 2, 0, 0, 0, 12,
+ 73, 85, 80, 95, 82, 69, 83, 84, 79, 82, 69, 0, 2, 0, 0, 0, 8, 82, 69, 83,
+ 84, 79, 82, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 73, 78, 73, 77, 73,
+ 90, 69, 0, 2, 0, 0, 0, 9, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0, 0,
+ 0, 13, 73, 85, 80, 95, 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9,
+ 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 73,
+ 68, 69, 0, 2, 0, 0, 0, 5, 72, 73, 68, 69, 0, 2, 0, 0, 0, 4, 82, 69,
+ 68, 0, 2, 0, 0, 0, 7, 73,117,112, 82, 71, 66, 0, 2, 0, 0, 0, 6, 71,
+ 82, 69, 69, 78, 0, 2, 0, 0, 0, 5, 66, 76, 85, 69, 0, 2, 0, 0, 0, 6,
+ 66, 76, 65, 67, 75, 0, 2, 0, 0, 0, 6, 87, 72, 73, 84, 69, 0, 2, 0, 0,
+ 0, 7, 89, 69, 76, 76, 79, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 79, 78,
+ 0, 2, 0, 0, 0, 3, 79, 78, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 79, 70,
+ 70, 0, 2, 0, 0, 0, 4, 79, 70, 70, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95,
+ 89, 69, 83, 0, 2, 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 7, 73, 85,
+ 80, 95, 78, 79, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 95, 65, 80, 80, 69, 78, 68, 0, 2, 0, 0, 0, 7, 65, 80, 80, 69, 78, 68,
+ 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2,
+ 0, 0, 0, 9, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 15, 73, 85,
+ 80, 95, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 11, 72, 79,
+ 82, 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 65, 67,
+ 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2,
+ 0, 0, 0, 10, 73, 85, 80, 95, 65, 76, 69, 70, 84, 0, 2, 0, 0, 0, 6, 65,
+ 76, 69, 70, 84, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 82, 73, 71, 72, 84,
+ 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 9, 73, 85,
+ 80, 95, 65, 84, 79, 80, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0,
+ 0, 12, 73, 85, 80, 95, 65, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 8, 65,
+ 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 78, 79, 82, 84,
+ 72, 0, 2, 0, 0, 0, 6, 78, 79, 82, 84, 72, 0, 2, 0, 0, 0, 10, 73, 85,
+ 80, 95, 83, 79, 85, 84, 72, 0, 2, 0, 0, 0, 6, 83, 79, 85, 84, 72, 0, 2,
+ 0, 0, 0, 9, 73, 85, 80, 95, 87, 69, 83, 84, 0, 2, 0, 0, 0, 5, 87, 69,
+ 83, 84, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 69, 65, 83, 84, 0, 2, 0, 0,
+ 0, 5, 69, 65, 83, 84, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 69, 0, 2,
+ 0, 0, 0, 3, 78, 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 69, 0, 2,
+ 0, 0, 0, 3, 83, 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 87, 0, 2,
+ 0, 0, 0, 3, 78, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 87, 0, 2,
+ 0, 0, 0, 3, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 70, 85, 76, 76,
+ 0, 2, 0, 0, 0, 5, 70, 85, 76, 76, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95,
+ 72, 65, 76, 70, 0, 2, 0, 0, 0, 5, 72, 65, 76, 70, 0, 2, 0, 0, 0, 10,
+ 73, 85, 80, 95, 84, 72, 73, 82, 68, 0, 2, 0, 0, 0, 6, 84, 72, 73, 82, 68,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0,
+ 0, 0, 8, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,
+ 69, 73, 71, 72, 84, 72, 0, 2, 0, 0, 0, 7, 69, 73, 71, 72, 84, 72, 0, 2,
+ 0, 0, 0, 10, 73, 85, 80, 95, 65, 82, 82, 79, 87, 0, 2, 0, 0, 0, 6, 65,
+ 82, 82, 79, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 66, 85, 83, 89, 0, 2,
+ 0, 0, 0, 5, 66, 85, 83, 89, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69,
+ 83, 73, 90, 69, 95, 78, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 78,
+ 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2,
+ 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 13, 73, 85,
+ 80, 95, 82, 69, 83, 73, 90, 69, 95, 69, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73,
+ 90, 69, 95, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69,
+ 95, 87, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0, 0,
+ 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0,
+ 10, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95,
+ 82, 69, 83, 73, 90, 69, 95, 78, 87, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90,
+ 69, 95, 78, 87, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69,
+ 95, 83, 69, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2,
+ 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0,
+ 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85,
+ 80, 95, 77, 79, 86, 69, 0, 2, 0, 0, 0, 5, 77, 79, 86, 69, 0, 2, 0, 0,
+ 0, 9, 73, 85, 80, 95, 72, 65, 78, 68, 0, 2, 0, 0, 0, 5, 72, 65, 78, 68,
+ 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 78, 79, 78, 69, 0, 2, 0, 0, 0, 5,
+ 78, 79, 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 73, 85, 80, 0, 2, 0,
+ 0, 0, 4, 73, 85, 80, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 82, 79, 83,
+ 83, 0, 2, 0, 0, 0, 6, 67, 82, 79, 83, 83, 0, 2, 0, 0, 0, 8, 73, 85,
+ 80, 95, 80, 69, 78, 0, 2, 0, 0, 0, 4, 80, 69, 78, 0, 2, 0, 0, 0, 9,
+ 73, 85, 80, 95, 84, 69, 88, 84, 0, 2, 0, 0, 0, 5, 84, 69, 88, 84, 0, 2,
+ 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0,
+ 0, 9, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95,
+ 79, 80, 69, 78, 72, 65, 78, 68, 0, 2, 0, 0, 0, 9, 79, 80, 69, 78, 72, 65,
+ 78, 68, 0, 2, 0, 0, 0, 23, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67,
+ 65, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86,
+ 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 23,
+ 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67,
+ 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84,
+ 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 72, 69, 76, 86,
+ 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 17, 72, 69,
+ 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 24,
+ 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76,
+ 95, 49, 48, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78,
+ 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69,
+ 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0,
+ 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95,
+ 49, 48, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67,
+ 65, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69,
+ 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85,
+ 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49,
+ 50, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82,
+ 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86,
+ 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0,
+ 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50,
+ 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95,
+ 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73,
+ 67, 65, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95,
+ 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0,
+ 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65,
+ 76, 95, 49, 52, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84,
+ 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 20, 72,
+ 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2,
+ 0, 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79,
+ 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65,
+ 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 67, 79,
+ 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 17,
+ 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0,
+ 0, 21, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67,
+ 95, 56, 0, 2, 0, 0, 0, 17, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76,
+ 73, 67, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69,
+ 82, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 15, 67, 79, 85, 82, 73, 69,
+ 82, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79,
+ 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0,
+ 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2,
+ 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76,
+ 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73,
+ 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79,
+ 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 16, 67,
+ 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 22,
+ 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49,
+ 50, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65,
+ 76, 95, 49, 50, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69,
+ 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 18, 67, 79, 85,
+ 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20,
+ 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0,
+ 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50,
+ 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79,
+ 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82,
+ 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95,
+ 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0,
+ 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52,
+ 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79,
+ 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66,
+ 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69,
+ 83, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69,
+ 83, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95,
+ 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 15,
+ 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 17,
+ 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0,
+ 0, 13, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 20,
+ 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0,
+ 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48,
+ 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76,
+ 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65,
+ 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69,
+ 83, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83,
+ 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73,
+ 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 16, 84,
+ 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 20,
+ 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0,
+ 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50,
+ 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68,
+ 95, 49, 50, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95,
+ 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79,
+ 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78,
+ 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73,
+ 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84,
+ 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18,
+ 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0,
+ 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/constants_be32.lo");
+}
diff --git a/iup/srclua3/loh/constants_be64.loh b/iup/srclua3/loh/constants_be64.loh
new file mode 100755
index 0000000..bb31b19
--- /dev/null
+++ b/iup/srclua3/loh/constants_be64.loh
@@ -0,0 +1,301 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/constants_be64.lo");
+*/
+/* ../obj/iuplua3/constants_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64, 99,111,110,115,116,
+ 97,110,116,115, 46,108,117, 97, 0, 0, 0, 5,182, 4, 0, 7, 1, 25, 0, 15,
+ 1, 11, 2, 15, 0, 26, 7, 0, 25, 3, 15, 1, 11, 4, 15, 3, 26, 9, 1, 25,
+ 5, 15, 1, 11, 6, 15, 5, 26, 9, 1, 25, 7, 15, 1, 11, 8, 15, 7, 26, 6,
+255,255, 25, 9, 15, 1, 11, 10, 15, 9, 26, 6,255,254, 25, 11, 15, 1, 11, 12,
+ 15, 11, 26, 6,255,253, 25, 13, 15, 1, 11, 14, 15, 13, 26, 6,255,252, 25, 15,
+ 15, 1, 11, 16, 15, 15, 26, 6,255,251, 25, 17, 15, 1, 11, 18, 15, 17, 26, 6,
+255,250, 25, 19, 15, 1, 11, 20, 15, 19, 26, 15, 11, 25, 21, 15, 1, 11, 22, 15,
+ 21, 26, 15, 13, 25, 23, 15, 1, 11, 24, 15, 23, 26, 7, 49, 25, 25, 15, 1, 11,
+ 26, 15, 25, 26, 7, 50, 25, 27, 15, 1, 11, 28, 15, 27, 26, 7, 51, 25, 29, 15,
+ 1, 11, 30, 15, 29, 26, 7, 52, 25, 31, 15, 1, 11, 32, 15, 31, 26, 7, 53, 25,
+ 33, 15, 1, 11, 34, 15, 33, 26, 9, 1, 25, 35, 15, 1, 11, 36, 15, 35, 26, 9,
+ 2, 25, 37, 15, 1, 11, 38, 15, 37, 26, 9, 3, 25, 39, 15, 1, 11, 40, 15, 39,
+ 26, 9, 4, 25, 41, 15, 1, 11, 42, 15, 41, 26, 7, 0, 25, 43, 15, 1, 11, 44,
+ 15, 43, 26, 7, 1, 25, 45, 15, 1, 11, 46, 15, 45, 26, 7, 2, 25, 47, 15, 1,
+ 11, 48, 15, 47, 26, 7, 3, 25, 49, 15, 1, 11, 50, 15, 49, 26, 7, 4, 25, 51,
+ 15, 1, 11, 52, 15, 51, 26, 7, 5, 25, 53, 15, 1, 11, 54, 15, 53, 26, 7, 6,
+ 25, 55, 15, 1, 11, 56, 15, 55, 26, 7, 7, 25, 57, 15, 1, 11, 58, 15, 57, 26,
+ 7, 8, 25, 59, 15, 1, 11, 60, 15, 59, 26, 7, 9, 25, 61, 15, 1, 11, 62, 15,
+ 61, 26, 7, 10, 25, 63, 15, 1, 11, 64, 15, 63, 26, 7, 11, 25, 65, 15, 1, 11,
+ 66, 15, 65, 26, 7, 0, 25, 67, 15, 1, 11, 68, 15, 67, 26, 7, 1, 25, 69, 15,
+ 1, 11, 70, 15, 69, 26, 7, 2, 25, 71, 15, 1, 11, 72, 15, 71, 26, 7, 3, 25,
+ 73, 15, 1, 11, 74, 15, 73, 26, 7, 4, 25, 75, 15, 1, 11, 76, 15, 75, 26, 15,
+ 78, 7, 1, 7, 0, 7, 0, 2, 1, 3, 25, 77, 15, 1, 11, 77, 15, 77, 26, 15,
+ 78, 7, 0, 7, 1, 7, 0, 2, 1, 3, 25, 79, 15, 1, 11, 79, 15, 79, 26, 15,
+ 78, 7, 0, 7, 0, 7, 1, 2, 1, 3, 25, 80, 15, 1, 11, 80, 15, 80, 26, 15,
+ 78, 7, 0, 7, 0, 7, 0, 2, 1, 3, 25, 81, 15, 1, 11, 81, 15, 81, 26, 15,
+ 78, 7, 1, 7, 1, 7, 1, 2, 1, 3, 25, 82, 15, 1, 11, 82, 15, 82, 26, 15,
+ 78, 7, 1, 7, 1, 7, 0, 2, 1, 3, 25, 83, 15, 1, 11, 83, 15, 83, 26, 11,
+ 85, 25, 84, 15, 1, 11, 85, 15, 84, 26, 11, 87, 25, 86, 15, 1, 11, 87, 15, 86,
+ 26, 11, 89, 25, 88, 15, 1, 11, 89, 15, 88, 26, 11, 91, 25, 90, 15, 1, 11, 91,
+ 15, 90, 26, 11, 93, 25, 92, 15, 1, 11, 93, 15, 92, 26, 11, 95, 25, 94, 15, 1,
+ 11, 95, 15, 94, 26, 11, 97, 25, 96, 15, 1, 11, 97, 15, 96, 26, 11, 99, 25, 98,
+ 15, 1, 11, 99, 15, 98, 26, 11,101, 25,100, 15, 1, 11,101, 15,100, 26, 11,103,
+ 25,102, 15, 1, 11,103, 15,102, 26, 11,105, 25,104, 15, 1, 11,105, 15,104, 26,
+ 11,107, 25,106, 15, 1, 11,107, 15,106, 26, 11,109, 25,108, 15, 1, 11,109, 15,
+108, 26, 11,111, 25,110, 15, 1, 11,111, 15,110, 26, 11,113, 25,112, 15, 1, 11,
+113, 15,112, 26, 11,115, 25,114, 15, 1, 11,115, 15,114, 26, 11,117, 25,116, 15,
+ 1, 11,117, 15,116, 26, 11,119, 25,118, 15, 1, 11,119, 15,118, 26, 11,121, 25,
+120, 15, 1, 11,121, 15,120, 26, 11,123, 25,122, 15, 1, 11,123, 15,122, 26, 11,
+125, 25,124, 15, 1, 11,125, 15,124, 26, 11,127, 25,126, 15, 1, 11,127, 15,126,
+ 26, 11,129, 25,128, 15, 1, 11,129, 15,128, 26, 11,131, 25,130, 15, 1, 11,131,
+ 15,130, 26, 11,133, 25,132, 15, 1, 11,133, 15,132, 26, 11,135, 25,134, 15, 1,
+ 11,135, 15,134, 26, 11,137, 25,136, 15, 1, 11,137, 15,136, 26, 11,139, 25,138,
+ 15, 1, 11,139, 15,138, 26, 11,141, 25,140, 15, 1, 11,141, 15,140, 26, 11,143,
+ 25,142, 15, 1, 11,143, 15,142, 26, 11,145, 25,144, 15, 1, 11,145, 15,144, 26,
+ 11,147, 25,146, 15, 1, 11,147, 15,146, 26, 11,149, 25,148, 15, 1, 11,149, 15,
+148, 26, 11,151, 25,150, 15, 1, 11,151, 15,150, 26, 11,153, 25,152, 15, 1, 11,
+153, 15,152, 26, 11,155, 25,154, 15, 1, 11,155, 15,154, 26, 11,157, 25,156, 15,
+ 1, 11,157, 15,156, 26, 11,159, 25,158, 15, 1, 11,159, 15,158, 26, 11,161, 25,
+160, 15, 1, 11,161, 15,160, 26, 11,163, 25,162, 15, 1, 11,163, 15,162, 26, 11,
+165, 25,164, 15, 1, 11,165, 15,164, 26, 11,167, 25,166, 15, 1, 11,167, 15,166,
+ 26, 11,169, 25,168, 15, 1, 11,169, 15,168, 26, 11,171, 25,170, 15, 1, 11,171,
+ 15,170, 26, 11,173, 25,172, 15, 1, 11,173, 15,172, 26, 11,175, 25,174, 15, 1,
+ 11,175, 15,174, 26, 11,177, 25,176, 15, 1, 11,177, 15,176, 26, 11,179, 25,178,
+ 15, 1, 11,179, 15,178, 26, 11,181, 25,180, 15, 1, 11,181, 15,180, 26, 11,183,
+ 25,182, 15, 1, 11,183, 15,182, 26, 11,185, 25,184, 15, 1, 11,185, 15,184, 26,
+ 11,187, 25,186, 15, 1, 11,187, 15,186, 26, 11,189, 25,188, 15, 1, 11,189, 15,
+188, 26, 11,191, 25,190, 15, 1, 11,191, 15,190, 26, 11,193, 25,192, 15, 1, 11,
+193, 15,192, 26, 11,195, 25,194, 15, 1, 11,195, 15,194, 26, 11,197, 25,196, 15,
+ 1, 11,197, 15,196, 26, 11,199, 25,198, 15, 1, 11,199, 15,198, 26, 11,201, 25,
+200, 15, 1, 11,201, 15,200, 26, 11,203, 25,202, 15, 1, 11,203, 15,202, 26, 11,
+205, 25,204, 15, 1, 11,205, 15,204, 26, 11,207, 25,206, 15, 1, 11,207, 15,206,
+ 26, 11,209, 25,208, 15, 1, 11,209, 15,208, 26, 11,211, 25,210, 15, 1, 11,211,
+ 15,210, 26, 11,213, 25,212, 15, 1, 11,213, 15,212, 26, 11,215, 25,214, 15, 1,
+ 11,215, 15,214, 26, 11,217, 25,216, 15, 1, 11,217, 15,216, 26, 11,219, 25,218,
+ 15, 1, 11,219, 15,218, 26, 11,221, 25,220, 15, 1, 11,221, 15,220, 26, 11,223,
+ 25,222, 15, 1, 11,223, 15,222, 26, 11,225, 25,224, 15, 1, 11,225, 15,224, 26,
+ 11,227, 25,226, 15, 1, 11,227, 15,226, 26, 11,229, 25,228, 15, 1, 11,229, 15,
+228, 26, 11,231, 25,230, 15, 1, 11,231, 15,230, 26, 11,233, 25,232, 15, 1, 11,
+233, 15,232, 26, 11,235, 25,234, 15, 1, 11,235, 15,234, 26, 11,237, 25,236, 15,
+ 1, 11,237, 15,236, 26, 11,239, 25,238, 15, 1, 11,239, 15,238, 26, 11,241, 25,
+240, 15, 1, 11,241, 15,240, 26, 11,243, 25,242, 15, 1, 11,243, 15,242, 26, 15,
+ 1, 11,244, 11,245, 26, 15, 1, 11,246, 11,247, 26, 15, 1, 11,248, 11,249, 26,
+ 15, 1, 11,250, 11,251, 26, 15, 1, 11,252, 11,253, 26, 0, 0, 0, 0, 0, 0,
+ 0, 0,254, 2, 0, 0, 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0,
+ 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6, 69, 82, 82, 79, 82, 0, 2, 0,
+ 0, 0, 12, 73, 85, 80, 95, 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 8,
+ 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 79, 80, 69,
+ 78, 69, 68, 0, 2, 0, 0, 0, 7, 79, 80, 69, 78, 69, 68, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 8, 73, 78,
+ 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, 69, 78, 84, 69,
+ 82, 0, 2, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 9, 73,
+ 85, 80, 95, 76, 69, 70, 84, 0, 2, 0, 0, 0, 5, 76, 69, 70, 84, 0, 2, 0,
+ 0, 0, 10, 73, 85, 80, 95, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 6, 82, 73,
+ 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 79, 85, 83, 69, 80, 79,
+ 83, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 80, 79, 83, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 67, 85,
+ 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, 67, 69, 78, 84, 69,
+ 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 13, 67, 69, 78, 84, 69, 82, 80,
+ 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 84, 79, 80, 0, 2,
+ 0, 0, 0, 4, 84, 79, 80, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 66, 79, 84,
+ 84, 79, 77, 0, 2, 0, 0, 0, 7, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 8, 66, 85,
+ 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79,
+ 78, 50, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 50, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 8, 66, 85,
+ 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79,
+ 78, 52, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 52, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 8, 66, 85,
+ 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 73, 71, 78, 79, 82,
+ 69, 0, 2, 0, 0, 0, 7, 73, 71, 78, 79, 82, 69, 0, 2, 0, 0, 0, 12, 73,
+ 85, 80, 95, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0, 8, 68, 69, 70, 65,
+ 85, 76, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 76, 79, 83, 69, 0, 2,
+ 0, 0, 0, 6, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 67,
+ 79, 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 67, 79, 78, 84, 73, 78, 85,
+ 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 85, 80, 0, 2, 0, 0, 0,
+ 5, 83, 66, 85, 80, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 68, 78, 0,
+ 2, 0, 0, 0, 5, 83, 66, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83,
+ 66, 80, 71, 85, 80, 0, 2, 0, 0, 0, 7, 83, 66, 80, 71, 85, 80, 0, 2, 0,
+ 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 7, 83,
+ 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 79, 83,
+ 86, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 86, 0, 2, 0, 0, 0, 12, 73,
+ 85, 80, 95, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0, 8, 83, 66, 68, 82,
+ 65, 71, 86, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 76, 69, 70, 84, 0,
+ 2, 0, 0, 0, 7, 83, 66, 76, 69, 70, 84, 0, 2, 0, 0, 0, 12, 73, 85, 80,
+ 95, 83, 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 8, 83, 66, 82, 73, 71, 72,
+ 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 83, 66, 80, 71, 76, 69, 70, 84, 0,
+ 2, 0, 0, 0, 9, 83, 66, 80, 71, 76, 69, 70, 84, 0, 2, 0, 0, 0, 14, 73,
+ 85, 80, 95, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 10, 83, 66,
+ 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80,
+ 79, 83, 72, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 72, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 8, 83, 66,
+ 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 72, 79, 87, 0,
+ 2, 0, 0, 0, 5, 83, 72, 79, 87, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 82,
+ 69, 83, 84, 79, 82, 69, 0, 2, 0, 0, 0, 8, 82, 69, 83, 84, 79, 82, 69, 0,
+ 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0,
+ 0, 0, 9, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80,
+ 95, 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9, 77, 65, 88, 73, 77,
+ 73, 90, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 73, 68, 69, 0, 2, 0,
+ 0, 0, 5, 72, 73, 68, 69, 0, 2, 0, 0, 0, 4, 82, 69, 68, 0, 2, 0, 0,
+ 0, 7, 73,117,112, 82, 71, 66, 0, 2, 0, 0, 0, 6, 71, 82, 69, 69, 78, 0,
+ 2, 0, 0, 0, 5, 66, 76, 85, 69, 0, 2, 0, 0, 0, 6, 66, 76, 65, 67, 75,
+ 0, 2, 0, 0, 0, 6, 87, 72, 73, 84, 69, 0, 2, 0, 0, 0, 7, 89, 69, 76,
+ 76, 79, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 79, 78, 0, 2, 0, 0, 0,
+ 3, 79, 78, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 79, 70, 70, 0, 2, 0, 0,
+ 0, 4, 79, 70, 70, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2,
+ 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0,
+ 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 80, 80,
+ 69, 78, 68, 0, 2, 0, 0, 0, 7, 65, 80, 80, 69, 78, 68, 0, 2, 0, 0, 0,
+ 13, 73, 85, 80, 95, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 9, 86,
+ 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 15, 73, 85, 80, 95, 72, 79, 82,
+ 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78,
+ 84, 65, 76, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 65, 67, 69, 78, 84, 69, 82,
+ 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 10, 73,
+ 85, 80, 95, 65, 76, 69, 70, 84, 0, 2, 0, 0, 0, 6, 65, 76, 69, 70, 84, 0,
+ 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0,
+ 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 65, 84, 79,
+ 80, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 12, 73, 85, 80,
+ 95, 65, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 8, 65, 66, 79, 84, 84, 79,
+ 77, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 78, 79, 82, 84, 72, 0, 2, 0, 0,
+ 0, 6, 78, 79, 82, 84, 72, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 83, 79, 85,
+ 84, 72, 0, 2, 0, 0, 0, 6, 83, 79, 85, 84, 72, 0, 2, 0, 0, 0, 9, 73,
+ 85, 80, 95, 87, 69, 83, 84, 0, 2, 0, 0, 0, 5, 87, 69, 83, 84, 0, 2, 0,
+ 0, 0, 9, 73, 85, 80, 95, 69, 65, 83, 84, 0, 2, 0, 0, 0, 5, 69, 65, 83,
+ 84, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 69, 0, 2, 0, 0, 0, 3, 78,
+ 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 69, 0, 2, 0, 0, 0, 3, 83,
+ 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 87, 0, 2, 0, 0, 0, 3, 78,
+ 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 87, 0, 2, 0, 0, 0, 3, 83,
+ 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 70, 85, 76, 76, 0, 2, 0, 0, 0,
+ 5, 70, 85, 76, 76, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 65, 76, 70, 0,
+ 2, 0, 0, 0, 5, 72, 65, 76, 70, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 84,
+ 72, 73, 82, 68, 0, 2, 0, 0, 0, 6, 84, 72, 73, 82, 68, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 8, 81, 85,
+ 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 69, 73, 71, 72, 84,
+ 72, 0, 2, 0, 0, 0, 7, 69, 73, 71, 72, 84, 72, 0, 2, 0, 0, 0, 10, 73,
+ 85, 80, 95, 65, 82, 82, 79, 87, 0, 2, 0, 0, 0, 6, 65, 82, 82, 79, 87, 0,
+ 2, 0, 0, 0, 9, 73, 85, 80, 95, 66, 85, 83, 89, 0, 2, 0, 0, 0, 5, 66,
+ 85, 83, 89, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95,
+ 78, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 78, 0, 2, 0, 0, 0,
+ 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 9, 82,
+ 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83,
+ 73, 90, 69, 95, 69, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 69, 0,
+ 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0,
+ 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0, 0, 0, 14, 73, 85, 80,
+ 95, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73,
+ 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90,
+ 69, 95, 78, 87, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 78, 87, 0,
+ 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2,
+ 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2, 0, 0, 0, 14, 73,
+ 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 10, 82, 69,
+ 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 77, 79, 86,
+ 69, 0, 2, 0, 0, 0, 5, 77, 79, 86, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80,
+ 95, 72, 65, 78, 68, 0, 2, 0, 0, 0, 5, 72, 65, 78, 68, 0, 2, 0, 0, 0,
+ 9, 73, 85, 80, 95, 78, 79, 78, 69, 0, 2, 0, 0, 0, 5, 78, 79, 78, 69, 0,
+ 2, 0, 0, 0, 8, 73, 85, 80, 95, 73, 85, 80, 0, 2, 0, 0, 0, 4, 73, 85,
+ 80, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 82, 79, 83, 83, 0, 2, 0, 0,
+ 0, 6, 67, 82, 79, 83, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 80, 69, 78,
+ 0, 2, 0, 0, 0, 4, 80, 69, 78, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 84,
+ 69, 88, 84, 0, 2, 0, 0, 0, 5, 84, 69, 88, 84, 0, 2, 0, 0, 0, 13, 73,
+ 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 9, 82, 69, 83,
+ 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 79, 80, 69, 78, 72,
+ 65, 78, 68, 0, 2, 0, 0, 0, 9, 79, 80, 69, 78, 72, 65, 78, 68, 0, 2, 0,
+ 0, 0, 23, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82,
+ 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65,
+ 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 23, 73, 85, 80, 95, 72,
+ 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0,
+ 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95,
+ 56, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65,
+ 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 17, 72, 69, 76, 86, 69, 84, 73,
+ 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72,
+ 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2,
+ 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76,
+ 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73,
+ 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 20, 72, 69,
+ 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0,
+ 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76,
+ 68, 95, 49, 48, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95,
+ 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76,
+ 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0,
+ 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49,
+ 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65,
+ 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86,
+ 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0,
+ 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95,
+ 49, 50, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79,
+ 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69,
+ 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 20,
+ 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0,
+ 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73,
+ 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84,
+ 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73,
+ 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 49, 52,
+ 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68,
+ 95, 49, 52, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82,
+ 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 17, 67, 79, 85, 82, 73,
+ 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 21, 73, 85, 80,
+ 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0,
+ 0, 0, 17, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0,
+ 2, 0, 0, 0, 19, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76,
+ 68, 95, 56, 0, 2, 0, 0, 0, 15, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76,
+ 68, 95, 56, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82,
+ 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82,
+ 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 22, 73,
+ 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48,
+ 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67,
+ 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82,
+ 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69,
+ 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67,
+ 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0,
+ 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0,
+ 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65,
+ 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95,
+ 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67,
+ 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 16,
+ 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0,
+ 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95,
+ 49, 52, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77,
+ 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73,
+ 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, 67, 79,
+ 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0,
+ 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 52,
+ 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49,
+ 52, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82,
+ 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, 83, 95, 78, 79, 82,
+ 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, 83,
+ 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, 83,
+ 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, 84,
+ 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 13, 84, 73, 77,
+ 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84,
+ 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 16,
+ 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0,
+ 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48,
+ 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49,
+ 48, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76,
+ 68, 95, 49, 48, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68,
+ 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78,
+ 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95,
+ 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84,
+ 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 16,
+ 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0,
+ 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2,
+ 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0,
+ 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95,
+ 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76,
+ 95, 49, 52, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73,
+ 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95,
+ 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84,
+ 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 14, 84, 73,
+ 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 11, 77, 65, 83,
+ 75, 95, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 24, 91, 43, 47, 45, 93, 63, 40,
+ 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 2, 0, 0,
+ 0, 12, 77, 65, 83, 75, 95, 85, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 18, 40,
+ 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 2, 0, 0,
+ 0, 12, 77, 65, 83, 75, 95, 69, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 40, 91,
+ 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100,
+ 43, 41, 40, 91,101, 69, 93, 91, 43, 47, 45, 93, 63, 47,100, 43, 41, 63, 0, 2,
+ 0, 0, 0, 9, 77, 65, 83, 75, 95, 73, 78, 84, 0, 2, 0, 0, 0, 10, 91, 43,
+ 47, 45, 93, 63, 47,100, 43, 0, 2, 0, 0, 0, 10, 77, 65, 83, 75, 95, 85, 73,
+ 78, 84, 0, 2, 0, 0, 0, 4, 47,100, 43, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/constants_be64.lo");
+}
diff --git a/iup/srclua3/loh/constants_le64.loh b/iup/srclua3/loh/constants_le64.loh
new file mode 100755
index 0000000..54ece5d
--- /dev/null
+++ b/iup/srclua3/loh/constants_le64.loh
@@ -0,0 +1,289 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/constants_le64.lo");
+*/
+/* ../obj/iuplua3/constants_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64, 99,111,110,115,116,
+ 97,110,116,115, 46,108,117, 97, 0, 0, 0, 5,147, 4, 0, 7, 1, 25, 0, 15,
+ 1, 11, 2, 15, 0, 26, 7, 0, 25, 3, 15, 1, 11, 4, 15, 3, 26, 9, 1, 25,
+ 5, 15, 1, 11, 6, 15, 5, 26, 9, 1, 25, 7, 15, 1, 11, 8, 15, 7, 26, 6,
+255,255, 25, 9, 15, 1, 11, 10, 15, 9, 26, 6,255,254, 25, 11, 15, 1, 11, 12,
+ 15, 11, 26, 6,255,253, 25, 13, 15, 1, 11, 14, 15, 13, 26, 6,255,252, 25, 15,
+ 15, 1, 11, 16, 15, 15, 26, 6,255,251, 25, 17, 15, 1, 11, 18, 15, 17, 26, 6,
+255,250, 25, 19, 15, 1, 11, 20, 15, 19, 26, 15, 11, 25, 21, 15, 1, 11, 22, 15,
+ 21, 26, 15, 13, 25, 23, 15, 1, 11, 24, 15, 23, 26, 7, 49, 25, 25, 15, 1, 11,
+ 26, 15, 25, 26, 7, 50, 25, 27, 15, 1, 11, 28, 15, 27, 26, 7, 51, 25, 29, 15,
+ 1, 11, 30, 15, 29, 26, 7, 52, 25, 31, 15, 1, 11, 32, 15, 31, 26, 7, 53, 25,
+ 33, 15, 1, 11, 34, 15, 33, 26, 9, 1, 25, 35, 15, 1, 11, 36, 15, 35, 26, 9,
+ 2, 25, 37, 15, 1, 11, 38, 15, 37, 26, 9, 3, 25, 39, 15, 1, 11, 40, 15, 39,
+ 26, 9, 4, 25, 41, 15, 1, 11, 42, 15, 41, 26, 7, 0, 25, 43, 15, 1, 11, 44,
+ 15, 43, 26, 7, 1, 25, 45, 15, 1, 11, 46, 15, 45, 26, 7, 2, 25, 47, 15, 1,
+ 11, 48, 15, 47, 26, 7, 3, 25, 49, 15, 1, 11, 50, 15, 49, 26, 7, 4, 25, 51,
+ 15, 1, 11, 52, 15, 51, 26, 7, 5, 25, 53, 15, 1, 11, 54, 15, 53, 26, 7, 6,
+ 25, 55, 15, 1, 11, 56, 15, 55, 26, 7, 7, 25, 57, 15, 1, 11, 58, 15, 57, 26,
+ 7, 8, 25, 59, 15, 1, 11, 60, 15, 59, 26, 7, 9, 25, 61, 15, 1, 11, 62, 15,
+ 61, 26, 7, 10, 25, 63, 15, 1, 11, 64, 15, 63, 26, 7, 11, 25, 65, 15, 1, 11,
+ 66, 15, 65, 26, 7, 0, 25, 67, 15, 1, 11, 68, 15, 67, 26, 7, 1, 25, 69, 15,
+ 1, 11, 70, 15, 69, 26, 7, 2, 25, 71, 15, 1, 11, 72, 15, 71, 26, 7, 3, 25,
+ 73, 15, 1, 11, 74, 15, 73, 26, 7, 4, 25, 75, 15, 1, 11, 76, 15, 75, 26, 15,
+ 78, 7, 1, 7, 0, 7, 0, 2, 1, 3, 25, 77, 15, 1, 11, 77, 15, 77, 26, 15,
+ 78, 7, 0, 7, 1, 7, 0, 2, 1, 3, 25, 79, 15, 1, 11, 79, 15, 79, 26, 15,
+ 78, 7, 0, 7, 0, 7, 1, 2, 1, 3, 25, 80, 15, 1, 11, 80, 15, 80, 26, 15,
+ 78, 7, 0, 7, 0, 7, 0, 2, 1, 3, 25, 81, 15, 1, 11, 81, 15, 81, 26, 15,
+ 78, 7, 1, 7, 1, 7, 1, 2, 1, 3, 25, 82, 15, 1, 11, 82, 15, 82, 26, 15,
+ 78, 7, 1, 7, 1, 7, 0, 2, 1, 3, 25, 83, 15, 1, 11, 83, 15, 83, 26, 11,
+ 85, 25, 84, 15, 1, 11, 85, 15, 84, 26, 11, 87, 25, 86, 15, 1, 11, 87, 15, 86,
+ 26, 11, 89, 25, 88, 15, 1, 11, 89, 15, 88, 26, 11, 91, 25, 90, 15, 1, 11, 91,
+ 15, 90, 26, 11, 93, 25, 92, 15, 1, 11, 93, 15, 92, 26, 11, 95, 25, 94, 15, 1,
+ 11, 95, 15, 94, 26, 11, 97, 25, 96, 15, 1, 11, 97, 15, 96, 26, 11, 99, 25, 98,
+ 15, 1, 11, 99, 15, 98, 26, 11,101, 25,100, 15, 1, 11,101, 15,100, 26, 11,103,
+ 25,102, 15, 1, 11,103, 15,102, 26, 11,105, 25,104, 15, 1, 11,105, 15,104, 26,
+ 11,107, 25,106, 15, 1, 11,107, 15,106, 26, 11,109, 25,108, 15, 1, 11,109, 15,
+108, 26, 11,111, 25,110, 15, 1, 11,111, 15,110, 26, 11,113, 25,112, 15, 1, 11,
+113, 15,112, 26, 11,115, 25,114, 15, 1, 11,115, 15,114, 26, 11,117, 25,116, 15,
+ 1, 11,117, 15,116, 26, 11,119, 25,118, 15, 1, 11,119, 15,118, 26, 11,121, 25,
+120, 15, 1, 11,121, 15,120, 26, 11,123, 25,122, 15, 1, 11,123, 15,122, 26, 11,
+125, 25,124, 15, 1, 11,125, 15,124, 26, 11,127, 25,126, 15, 1, 11,127, 15,126,
+ 26, 11,129, 25,128, 15, 1, 11,129, 15,128, 26, 11,131, 25,130, 15, 1, 11,131,
+ 15,130, 26, 11,133, 25,132, 15, 1, 11,133, 15,132, 26, 11,135, 25,134, 15, 1,
+ 11,135, 15,134, 26, 11,137, 25,136, 15, 1, 11,137, 15,136, 26, 11,139, 25,138,
+ 15, 1, 11,139, 15,138, 26, 11,141, 25,140, 15, 1, 11,141, 15,140, 26, 11,143,
+ 25,142, 15, 1, 11,143, 15,142, 26, 11,145, 25,144, 15, 1, 11,145, 15,144, 26,
+ 11,147, 25,146, 15, 1, 11,147, 15,146, 26, 11,149, 25,148, 15, 1, 11,149, 15,
+148, 26, 11,151, 25,150, 15, 1, 11,151, 15,150, 26, 11,153, 25,152, 15, 1, 11,
+153, 15,152, 26, 11,155, 25,154, 15, 1, 11,155, 15,154, 26, 11,157, 25,156, 15,
+ 1, 11,157, 15,156, 26, 11,159, 25,158, 15, 1, 11,159, 15,158, 26, 11,161, 25,
+160, 15, 1, 11,161, 15,160, 26, 11,163, 25,162, 15, 1, 11,163, 15,162, 26, 11,
+165, 25,164, 15, 1, 11,165, 15,164, 26, 11,167, 25,166, 15, 1, 11,167, 15,166,
+ 26, 11,169, 25,168, 15, 1, 11,169, 15,168, 26, 11,171, 25,170, 15, 1, 11,171,
+ 15,170, 26, 11,173, 25,172, 15, 1, 11,173, 15,172, 26, 11,175, 25,174, 15, 1,
+ 11,175, 15,174, 26, 11,177, 25,176, 15, 1, 11,177, 15,176, 26, 11,179, 25,178,
+ 15, 1, 11,179, 15,178, 26, 11,181, 25,180, 15, 1, 11,181, 15,180, 26, 11,183,
+ 25,182, 15, 1, 11,183, 15,182, 26, 11,185, 25,184, 15, 1, 11,185, 15,184, 26,
+ 11,187, 25,186, 15, 1, 11,187, 15,186, 26, 11,189, 25,188, 15, 1, 11,189, 15,
+188, 26, 11,191, 25,190, 15, 1, 11,191, 15,190, 26, 11,193, 25,192, 15, 1, 11,
+193, 15,192, 26, 11,195, 25,194, 15, 1, 11,195, 15,194, 26, 11,197, 25,196, 15,
+ 1, 11,197, 15,196, 26, 11,199, 25,198, 15, 1, 11,199, 15,198, 26, 11,201, 25,
+200, 15, 1, 11,201, 15,200, 26, 11,203, 25,202, 15, 1, 11,203, 15,202, 26, 11,
+205, 25,204, 15, 1, 11,205, 15,204, 26, 11,207, 25,206, 15, 1, 11,207, 15,206,
+ 26, 11,209, 25,208, 15, 1, 11,209, 15,208, 26, 11,211, 25,210, 15, 1, 11,211,
+ 15,210, 26, 11,213, 25,212, 15, 1, 11,213, 15,212, 26, 11,215, 25,214, 15, 1,
+ 11,215, 15,214, 26, 11,217, 25,216, 15, 1, 11,217, 15,216, 26, 11,219, 25,218,
+ 15, 1, 11,219, 15,218, 26, 11,221, 25,220, 15, 1, 11,221, 15,220, 26, 11,223,
+ 25,222, 15, 1, 11,223, 15,222, 26, 11,225, 25,224, 15, 1, 11,225, 15,224, 26,
+ 11,227, 25,226, 15, 1, 11,227, 15,226, 26, 11,229, 25,228, 15, 1, 11,229, 15,
+228, 26, 11,231, 25,230, 15, 1, 11,231, 15,230, 26, 11,233, 25,232, 15, 1, 11,
+233, 15,232, 26, 11,235, 25,234, 15, 1, 11,235, 15,234, 26, 11,237, 25,236, 15,
+ 1, 11,237, 15,236, 26, 11,239, 25,238, 15, 1, 11,239, 15,238, 26, 11,241, 25,
+240, 15, 1, 11,241, 15,240, 26, 11,243, 25,242, 15, 1, 11,243, 15,242, 26, 0,
+ 0, 0, 0, 0, 0, 0, 0,244, 2, 0, 0, 0, 10, 73, 85, 80, 95, 69, 82, 82,
+ 79, 82, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6, 69, 82, 82,
+ 79, 82, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 78, 79, 69, 82, 82, 79, 82, 0,
+ 2, 0, 0, 0, 8, 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 95, 79, 80, 69, 78, 69, 68, 0, 2, 0, 0, 0, 7, 79, 80, 69, 78, 69, 68,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0,
+ 0, 0, 8, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,
+ 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 2,
+ 0, 0, 0, 9, 73, 85, 80, 95, 76, 69, 70, 84, 0, 2, 0, 0, 0, 5, 76, 69,
+ 70, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 82, 73, 71, 72, 84, 0, 2, 0,
+ 0, 0, 6, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 79,
+ 85, 83, 69, 80, 79, 83, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 80, 79, 83,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0,
+ 0, 0, 8, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95,
+ 67, 69, 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 13, 67, 69,
+ 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95,
+ 84, 79, 80, 0, 2, 0, 0, 0, 4, 84, 79, 80, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 95, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 7, 66, 79, 84, 84, 79, 77,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0,
+ 0, 0, 8, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95,
+ 66, 85, 84, 84, 79, 78, 50, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 50,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0,
+ 0, 0, 8, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95,
+ 66, 85, 84, 84, 79, 78, 52, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 52,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0,
+ 0, 0, 8, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,
+ 73, 71, 78, 79, 82, 69, 0, 2, 0, 0, 0, 7, 73, 71, 78, 79, 82, 69, 0, 2,
+ 0, 0, 0, 12, 73, 85, 80, 95, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0,
+ 8, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 76,
+ 79, 83, 69, 0, 2, 0, 0, 0, 6, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 13,
+ 73, 85, 80, 95, 67, 79, 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 67, 79,
+ 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 85, 80,
+ 0, 2, 0, 0, 0, 5, 83, 66, 85, 80, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95,
+ 83, 66, 68, 78, 0, 2, 0, 0, 0, 5, 83, 66, 68, 78, 0, 2, 0, 0, 0, 11,
+ 73, 85, 80, 95, 83, 66, 80, 71, 85, 80, 0, 2, 0, 0, 0, 7, 83, 66, 80, 71,
+ 85, 80, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 71, 68, 78, 0, 2,
+ 0, 0, 0, 7, 83, 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,
+ 83, 66, 80, 79, 83, 86, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 86, 0, 2,
+ 0, 0, 0, 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0,
+ 8, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66,
+ 76, 69, 70, 84, 0, 2, 0, 0, 0, 7, 83, 66, 76, 69, 70, 84, 0, 2, 0, 0,
+ 0, 12, 73, 85, 80, 95, 83, 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 8, 83,
+ 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 83, 66, 80, 71,
+ 76, 69, 70, 84, 0, 2, 0, 0, 0, 9, 83, 66, 80, 71, 76, 69, 70, 84, 0, 2,
+ 0, 0, 0, 14, 73, 85, 80, 95, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0,
+ 0, 0, 10, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 95, 83, 66, 80, 79, 83, 72, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 72,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0,
+ 0, 0, 8, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95,
+ 83, 72, 79, 87, 0, 2, 0, 0, 0, 5, 83, 72, 79, 87, 0, 2, 0, 0, 0, 12,
+ 73, 85, 80, 95, 82, 69, 83, 84, 79, 82, 69, 0, 2, 0, 0, 0, 8, 82, 69, 83,
+ 84, 79, 82, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 73, 78, 73, 77, 73,
+ 90, 69, 0, 2, 0, 0, 0, 9, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0, 0,
+ 0, 13, 73, 85, 80, 95, 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9,
+ 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 73,
+ 68, 69, 0, 2, 0, 0, 0, 5, 72, 73, 68, 69, 0, 2, 0, 0, 0, 4, 82, 69,
+ 68, 0, 2, 0, 0, 0, 7, 73,117,112, 82, 71, 66, 0, 2, 0, 0, 0, 6, 71,
+ 82, 69, 69, 78, 0, 2, 0, 0, 0, 5, 66, 76, 85, 69, 0, 2, 0, 0, 0, 6,
+ 66, 76, 65, 67, 75, 0, 2, 0, 0, 0, 6, 87, 72, 73, 84, 69, 0, 2, 0, 0,
+ 0, 7, 89, 69, 76, 76, 79, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 79, 78,
+ 0, 2, 0, 0, 0, 3, 79, 78, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 79, 70,
+ 70, 0, 2, 0, 0, 0, 4, 79, 70, 70, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95,
+ 89, 69, 83, 0, 2, 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 7, 73, 85,
+ 80, 95, 78, 79, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 95, 65, 80, 80, 69, 78, 68, 0, 2, 0, 0, 0, 7, 65, 80, 80, 69, 78, 68,
+ 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2,
+ 0, 0, 0, 9, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 15, 73, 85,
+ 80, 95, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 11, 72, 79,
+ 82, 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 65, 67,
+ 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2,
+ 0, 0, 0, 10, 73, 85, 80, 95, 65, 76, 69, 70, 84, 0, 2, 0, 0, 0, 6, 65,
+ 76, 69, 70, 84, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 82, 73, 71, 72, 84,
+ 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 9, 73, 85,
+ 80, 95, 65, 84, 79, 80, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0,
+ 0, 12, 73, 85, 80, 95, 65, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 8, 65,
+ 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 78, 79, 82, 84,
+ 72, 0, 2, 0, 0, 0, 6, 78, 79, 82, 84, 72, 0, 2, 0, 0, 0, 10, 73, 85,
+ 80, 95, 83, 79, 85, 84, 72, 0, 2, 0, 0, 0, 6, 83, 79, 85, 84, 72, 0, 2,
+ 0, 0, 0, 9, 73, 85, 80, 95, 87, 69, 83, 84, 0, 2, 0, 0, 0, 5, 87, 69,
+ 83, 84, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 69, 65, 83, 84, 0, 2, 0, 0,
+ 0, 5, 69, 65, 83, 84, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 69, 0, 2,
+ 0, 0, 0, 3, 78, 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 69, 0, 2,
+ 0, 0, 0, 3, 83, 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 87, 0, 2,
+ 0, 0, 0, 3, 78, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 87, 0, 2,
+ 0, 0, 0, 3, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 70, 85, 76, 76,
+ 0, 2, 0, 0, 0, 5, 70, 85, 76, 76, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95,
+ 72, 65, 76, 70, 0, 2, 0, 0, 0, 5, 72, 65, 76, 70, 0, 2, 0, 0, 0, 10,
+ 73, 85, 80, 95, 84, 72, 73, 82, 68, 0, 2, 0, 0, 0, 6, 84, 72, 73, 82, 68,
+ 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0,
+ 0, 0, 8, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,
+ 69, 73, 71, 72, 84, 72, 0, 2, 0, 0, 0, 7, 69, 73, 71, 72, 84, 72, 0, 2,
+ 0, 0, 0, 10, 73, 85, 80, 95, 65, 82, 82, 79, 87, 0, 2, 0, 0, 0, 6, 65,
+ 82, 82, 79, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 66, 85, 83, 89, 0, 2,
+ 0, 0, 0, 5, 66, 85, 83, 89, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69,
+ 83, 73, 90, 69, 95, 78, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 78,
+ 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2,
+ 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 13, 73, 85,
+ 80, 95, 82, 69, 83, 73, 90, 69, 95, 69, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73,
+ 90, 69, 95, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69,
+ 95, 87, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0, 0,
+ 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0,
+ 10, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95,
+ 82, 69, 83, 73, 90, 69, 95, 78, 87, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90,
+ 69, 95, 78, 87, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69,
+ 95, 83, 69, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2,
+ 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0,
+ 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85,
+ 80, 95, 77, 79, 86, 69, 0, 2, 0, 0, 0, 5, 77, 79, 86, 69, 0, 2, 0, 0,
+ 0, 9, 73, 85, 80, 95, 72, 65, 78, 68, 0, 2, 0, 0, 0, 5, 72, 65, 78, 68,
+ 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 78, 79, 78, 69, 0, 2, 0, 0, 0, 5,
+ 78, 79, 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 73, 85, 80, 0, 2, 0,
+ 0, 0, 4, 73, 85, 80, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 82, 79, 83,
+ 83, 0, 2, 0, 0, 0, 6, 67, 82, 79, 83, 83, 0, 2, 0, 0, 0, 8, 73, 85,
+ 80, 95, 80, 69, 78, 0, 2, 0, 0, 0, 4, 80, 69, 78, 0, 2, 0, 0, 0, 9,
+ 73, 85, 80, 95, 84, 69, 88, 84, 0, 2, 0, 0, 0, 5, 84, 69, 88, 84, 0, 2,
+ 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0,
+ 0, 9, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95,
+ 79, 80, 69, 78, 72, 65, 78, 68, 0, 2, 0, 0, 0, 9, 79, 80, 69, 78, 72, 65,
+ 78, 68, 0, 2, 0, 0, 0, 23, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67,
+ 65, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86,
+ 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 23,
+ 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67,
+ 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84,
+ 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 72, 69, 76, 86,
+ 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 17, 72, 69,
+ 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 24,
+ 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76,
+ 95, 49, 48, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78,
+ 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69,
+ 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0,
+ 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95,
+ 49, 48, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67,
+ 65, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69,
+ 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85,
+ 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49,
+ 50, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82,
+ 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86,
+ 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0,
+ 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50,
+ 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95,
+ 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73,
+ 67, 65, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95,
+ 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0,
+ 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65,
+ 76, 95, 49, 52, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84,
+ 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 20, 72,
+ 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2,
+ 0, 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79,
+ 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65,
+ 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 67, 79,
+ 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 17,
+ 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0,
+ 0, 21, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67,
+ 95, 56, 0, 2, 0, 0, 0, 17, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76,
+ 73, 67, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69,
+ 82, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 15, 67, 79, 85, 82, 73, 69,
+ 82, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79,
+ 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0,
+ 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2,
+ 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76,
+ 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73,
+ 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79,
+ 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 16, 67,
+ 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 22,
+ 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49,
+ 50, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65,
+ 76, 95, 49, 50, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69,
+ 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 18, 67, 79, 85,
+ 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20,
+ 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0,
+ 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50,
+ 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79,
+ 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82,
+ 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95,
+ 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0,
+ 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52,
+ 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79,
+ 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66,
+ 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69,
+ 83, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69,
+ 83, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95,
+ 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 15,
+ 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 17,
+ 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0,
+ 0, 13, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 20,
+ 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0,
+ 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48,
+ 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76,
+ 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65,
+ 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69,
+ 83, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83,
+ 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73,
+ 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 16, 84,
+ 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 20,
+ 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0,
+ 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50,
+ 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68,
+ 95, 49, 50, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95,
+ 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79,
+ 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78,
+ 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73,
+ 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84,
+ 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18,
+ 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0,
+ 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/constants_le64.lo");
+}
diff --git a/iup/srclua3/loh/constants_le64w.loh b/iup/srclua3/loh/constants_le64w.loh
new file mode 100755
index 0000000..6e7ed93
--- /dev/null
+++ b/iup/srclua3/loh/constants_le64w.loh
@@ -0,0 +1,301 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/constants_le64w.lo");
+*/
+/* ../obj/iuplua3/constants_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64, 99,111,110,115,116,
+ 97,110,116,115, 46,108,117, 97, 0, 0, 0, 5,182, 4, 0, 7, 1, 25, 0, 15,
+ 1, 11, 2, 15, 0, 26, 7, 0, 25, 3, 15, 1, 11, 4, 15, 3, 26, 9, 1, 25,
+ 5, 15, 1, 11, 6, 15, 5, 26, 9, 1, 25, 7, 15, 1, 11, 8, 15, 7, 26, 6,
+255,255, 25, 9, 15, 1, 11, 10, 15, 9, 26, 6,255,254, 25, 11, 15, 1, 11, 12,
+ 15, 11, 26, 6,255,253, 25, 13, 15, 1, 11, 14, 15, 13, 26, 6,255,252, 25, 15,
+ 15, 1, 11, 16, 15, 15, 26, 6,255,251, 25, 17, 15, 1, 11, 18, 15, 17, 26, 6,
+255,250, 25, 19, 15, 1, 11, 20, 15, 19, 26, 15, 11, 25, 21, 15, 1, 11, 22, 15,
+ 21, 26, 15, 13, 25, 23, 15, 1, 11, 24, 15, 23, 26, 7, 49, 25, 25, 15, 1, 11,
+ 26, 15, 25, 26, 7, 50, 25, 27, 15, 1, 11, 28, 15, 27, 26, 7, 51, 25, 29, 15,
+ 1, 11, 30, 15, 29, 26, 7, 52, 25, 31, 15, 1, 11, 32, 15, 31, 26, 7, 53, 25,
+ 33, 15, 1, 11, 34, 15, 33, 26, 9, 1, 25, 35, 15, 1, 11, 36, 15, 35, 26, 9,
+ 2, 25, 37, 15, 1, 11, 38, 15, 37, 26, 9, 3, 25, 39, 15, 1, 11, 40, 15, 39,
+ 26, 9, 4, 25, 41, 15, 1, 11, 42, 15, 41, 26, 7, 0, 25, 43, 15, 1, 11, 44,
+ 15, 43, 26, 7, 1, 25, 45, 15, 1, 11, 46, 15, 45, 26, 7, 2, 25, 47, 15, 1,
+ 11, 48, 15, 47, 26, 7, 3, 25, 49, 15, 1, 11, 50, 15, 49, 26, 7, 4, 25, 51,
+ 15, 1, 11, 52, 15, 51, 26, 7, 5, 25, 53, 15, 1, 11, 54, 15, 53, 26, 7, 6,
+ 25, 55, 15, 1, 11, 56, 15, 55, 26, 7, 7, 25, 57, 15, 1, 11, 58, 15, 57, 26,
+ 7, 8, 25, 59, 15, 1, 11, 60, 15, 59, 26, 7, 9, 25, 61, 15, 1, 11, 62, 15,
+ 61, 26, 7, 10, 25, 63, 15, 1, 11, 64, 15, 63, 26, 7, 11, 25, 65, 15, 1, 11,
+ 66, 15, 65, 26, 7, 0, 25, 67, 15, 1, 11, 68, 15, 67, 26, 7, 1, 25, 69, 15,
+ 1, 11, 70, 15, 69, 26, 7, 2, 25, 71, 15, 1, 11, 72, 15, 71, 26, 7, 3, 25,
+ 73, 15, 1, 11, 74, 15, 73, 26, 7, 4, 25, 75, 15, 1, 11, 76, 15, 75, 26, 15,
+ 78, 7, 1, 7, 0, 7, 0, 2, 1, 3, 25, 77, 15, 1, 11, 77, 15, 77, 26, 15,
+ 78, 7, 0, 7, 1, 7, 0, 2, 1, 3, 25, 79, 15, 1, 11, 79, 15, 79, 26, 15,
+ 78, 7, 0, 7, 0, 7, 1, 2, 1, 3, 25, 80, 15, 1, 11, 80, 15, 80, 26, 15,
+ 78, 7, 0, 7, 0, 7, 0, 2, 1, 3, 25, 81, 15, 1, 11, 81, 15, 81, 26, 15,
+ 78, 7, 1, 7, 1, 7, 1, 2, 1, 3, 25, 82, 15, 1, 11, 82, 15, 82, 26, 15,
+ 78, 7, 1, 7, 1, 7, 0, 2, 1, 3, 25, 83, 15, 1, 11, 83, 15, 83, 26, 11,
+ 85, 25, 84, 15, 1, 11, 85, 15, 84, 26, 11, 87, 25, 86, 15, 1, 11, 87, 15, 86,
+ 26, 11, 89, 25, 88, 15, 1, 11, 89, 15, 88, 26, 11, 91, 25, 90, 15, 1, 11, 91,
+ 15, 90, 26, 11, 93, 25, 92, 15, 1, 11, 93, 15, 92, 26, 11, 95, 25, 94, 15, 1,
+ 11, 95, 15, 94, 26, 11, 97, 25, 96, 15, 1, 11, 97, 15, 96, 26, 11, 99, 25, 98,
+ 15, 1, 11, 99, 15, 98, 26, 11,101, 25,100, 15, 1, 11,101, 15,100, 26, 11,103,
+ 25,102, 15, 1, 11,103, 15,102, 26, 11,105, 25,104, 15, 1, 11,105, 15,104, 26,
+ 11,107, 25,106, 15, 1, 11,107, 15,106, 26, 11,109, 25,108, 15, 1, 11,109, 15,
+108, 26, 11,111, 25,110, 15, 1, 11,111, 15,110, 26, 11,113, 25,112, 15, 1, 11,
+113, 15,112, 26, 11,115, 25,114, 15, 1, 11,115, 15,114, 26, 11,117, 25,116, 15,
+ 1, 11,117, 15,116, 26, 11,119, 25,118, 15, 1, 11,119, 15,118, 26, 11,121, 25,
+120, 15, 1, 11,121, 15,120, 26, 11,123, 25,122, 15, 1, 11,123, 15,122, 26, 11,
+125, 25,124, 15, 1, 11,125, 15,124, 26, 11,127, 25,126, 15, 1, 11,127, 15,126,
+ 26, 11,129, 25,128, 15, 1, 11,129, 15,128, 26, 11,131, 25,130, 15, 1, 11,131,
+ 15,130, 26, 11,133, 25,132, 15, 1, 11,133, 15,132, 26, 11,135, 25,134, 15, 1,
+ 11,135, 15,134, 26, 11,137, 25,136, 15, 1, 11,137, 15,136, 26, 11,139, 25,138,
+ 15, 1, 11,139, 15,138, 26, 11,141, 25,140, 15, 1, 11,141, 15,140, 26, 11,143,
+ 25,142, 15, 1, 11,143, 15,142, 26, 11,145, 25,144, 15, 1, 11,145, 15,144, 26,
+ 11,147, 25,146, 15, 1, 11,147, 15,146, 26, 11,149, 25,148, 15, 1, 11,149, 15,
+148, 26, 11,151, 25,150, 15, 1, 11,151, 15,150, 26, 11,153, 25,152, 15, 1, 11,
+153, 15,152, 26, 11,155, 25,154, 15, 1, 11,155, 15,154, 26, 11,157, 25,156, 15,
+ 1, 11,157, 15,156, 26, 11,159, 25,158, 15, 1, 11,159, 15,158, 26, 11,161, 25,
+160, 15, 1, 11,161, 15,160, 26, 11,163, 25,162, 15, 1, 11,163, 15,162, 26, 11,
+165, 25,164, 15, 1, 11,165, 15,164, 26, 11,167, 25,166, 15, 1, 11,167, 15,166,
+ 26, 11,169, 25,168, 15, 1, 11,169, 15,168, 26, 11,171, 25,170, 15, 1, 11,171,
+ 15,170, 26, 11,173, 25,172, 15, 1, 11,173, 15,172, 26, 11,175, 25,174, 15, 1,
+ 11,175, 15,174, 26, 11,177, 25,176, 15, 1, 11,177, 15,176, 26, 11,179, 25,178,
+ 15, 1, 11,179, 15,178, 26, 11,181, 25,180, 15, 1, 11,181, 15,180, 26, 11,183,
+ 25,182, 15, 1, 11,183, 15,182, 26, 11,185, 25,184, 15, 1, 11,185, 15,184, 26,
+ 11,187, 25,186, 15, 1, 11,187, 15,186, 26, 11,189, 25,188, 15, 1, 11,189, 15,
+188, 26, 11,191, 25,190, 15, 1, 11,191, 15,190, 26, 11,193, 25,192, 15, 1, 11,
+193, 15,192, 26, 11,195, 25,194, 15, 1, 11,195, 15,194, 26, 11,197, 25,196, 15,
+ 1, 11,197, 15,196, 26, 11,199, 25,198, 15, 1, 11,199, 15,198, 26, 11,201, 25,
+200, 15, 1, 11,201, 15,200, 26, 11,203, 25,202, 15, 1, 11,203, 15,202, 26, 11,
+205, 25,204, 15, 1, 11,205, 15,204, 26, 11,207, 25,206, 15, 1, 11,207, 15,206,
+ 26, 11,209, 25,208, 15, 1, 11,209, 15,208, 26, 11,211, 25,210, 15, 1, 11,211,
+ 15,210, 26, 11,213, 25,212, 15, 1, 11,213, 15,212, 26, 11,215, 25,214, 15, 1,
+ 11,215, 15,214, 26, 11,217, 25,216, 15, 1, 11,217, 15,216, 26, 11,219, 25,218,
+ 15, 1, 11,219, 15,218, 26, 11,221, 25,220, 15, 1, 11,221, 15,220, 26, 11,223,
+ 25,222, 15, 1, 11,223, 15,222, 26, 11,225, 25,224, 15, 1, 11,225, 15,224, 26,
+ 11,227, 25,226, 15, 1, 11,227, 15,226, 26, 11,229, 25,228, 15, 1, 11,229, 15,
+228, 26, 11,231, 25,230, 15, 1, 11,231, 15,230, 26, 11,233, 25,232, 15, 1, 11,
+233, 15,232, 26, 11,235, 25,234, 15, 1, 11,235, 15,234, 26, 11,237, 25,236, 15,
+ 1, 11,237, 15,236, 26, 11,239, 25,238, 15, 1, 11,239, 15,238, 26, 11,241, 25,
+240, 15, 1, 11,241, 15,240, 26, 11,243, 25,242, 15, 1, 11,243, 15,242, 26, 15,
+ 1, 11,244, 11,245, 26, 15, 1, 11,246, 11,247, 26, 15, 1, 11,248, 11,249, 26,
+ 15, 1, 11,250, 11,251, 26, 15, 1, 11,252, 11,253, 26, 0, 0, 0, 0, 0, 0,
+ 0, 0,254, 2, 0, 0, 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0,
+ 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6, 69, 82, 82, 79, 82, 0, 2, 0,
+ 0, 0, 12, 73, 85, 80, 95, 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 8,
+ 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 79, 80, 69,
+ 78, 69, 68, 0, 2, 0, 0, 0, 7, 79, 80, 69, 78, 69, 68, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 8, 73, 78,
+ 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, 69, 78, 84, 69,
+ 82, 0, 2, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 9, 73,
+ 85, 80, 95, 76, 69, 70, 84, 0, 2, 0, 0, 0, 5, 76, 69, 70, 84, 0, 2, 0,
+ 0, 0, 10, 73, 85, 80, 95, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 6, 82, 73,
+ 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 79, 85, 83, 69, 80, 79,
+ 83, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 80, 79, 83, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 67, 85,
+ 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, 67, 69, 78, 84, 69,
+ 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 13, 67, 69, 78, 84, 69, 82, 80,
+ 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 84, 79, 80, 0, 2,
+ 0, 0, 0, 4, 84, 79, 80, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 66, 79, 84,
+ 84, 79, 77, 0, 2, 0, 0, 0, 7, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 8, 66, 85,
+ 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79,
+ 78, 50, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 50, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 8, 66, 85,
+ 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79,
+ 78, 52, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 52, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 8, 66, 85,
+ 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 73, 71, 78, 79, 82,
+ 69, 0, 2, 0, 0, 0, 7, 73, 71, 78, 79, 82, 69, 0, 2, 0, 0, 0, 12, 73,
+ 85, 80, 95, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0, 8, 68, 69, 70, 65,
+ 85, 76, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 76, 79, 83, 69, 0, 2,
+ 0, 0, 0, 6, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 67,
+ 79, 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 67, 79, 78, 84, 73, 78, 85,
+ 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 85, 80, 0, 2, 0, 0, 0,
+ 5, 83, 66, 85, 80, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 68, 78, 0,
+ 2, 0, 0, 0, 5, 83, 66, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83,
+ 66, 80, 71, 85, 80, 0, 2, 0, 0, 0, 7, 83, 66, 80, 71, 85, 80, 0, 2, 0,
+ 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 7, 83,
+ 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 79, 83,
+ 86, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 86, 0, 2, 0, 0, 0, 12, 73,
+ 85, 80, 95, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0, 8, 83, 66, 68, 82,
+ 65, 71, 86, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 76, 69, 70, 84, 0,
+ 2, 0, 0, 0, 7, 83, 66, 76, 69, 70, 84, 0, 2, 0, 0, 0, 12, 73, 85, 80,
+ 95, 83, 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 8, 83, 66, 82, 73, 71, 72,
+ 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 83, 66, 80, 71, 76, 69, 70, 84, 0,
+ 2, 0, 0, 0, 9, 83, 66, 80, 71, 76, 69, 70, 84, 0, 2, 0, 0, 0, 14, 73,
+ 85, 80, 95, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 10, 83, 66,
+ 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80,
+ 79, 83, 72, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 72, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 8, 83, 66,
+ 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 72, 79, 87, 0,
+ 2, 0, 0, 0, 5, 83, 72, 79, 87, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 82,
+ 69, 83, 84, 79, 82, 69, 0, 2, 0, 0, 0, 8, 82, 69, 83, 84, 79, 82, 69, 0,
+ 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0,
+ 0, 0, 9, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80,
+ 95, 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9, 77, 65, 88, 73, 77,
+ 73, 90, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 73, 68, 69, 0, 2, 0,
+ 0, 0, 5, 72, 73, 68, 69, 0, 2, 0, 0, 0, 4, 82, 69, 68, 0, 2, 0, 0,
+ 0, 7, 73,117,112, 82, 71, 66, 0, 2, 0, 0, 0, 6, 71, 82, 69, 69, 78, 0,
+ 2, 0, 0, 0, 5, 66, 76, 85, 69, 0, 2, 0, 0, 0, 6, 66, 76, 65, 67, 75,
+ 0, 2, 0, 0, 0, 6, 87, 72, 73, 84, 69, 0, 2, 0, 0, 0, 7, 89, 69, 76,
+ 76, 79, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 79, 78, 0, 2, 0, 0, 0,
+ 3, 79, 78, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 79, 70, 70, 0, 2, 0, 0,
+ 0, 4, 79, 70, 70, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2,
+ 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0,
+ 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 80, 80,
+ 69, 78, 68, 0, 2, 0, 0, 0, 7, 65, 80, 80, 69, 78, 68, 0, 2, 0, 0, 0,
+ 13, 73, 85, 80, 95, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 9, 86,
+ 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 15, 73, 85, 80, 95, 72, 79, 82,
+ 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78,
+ 84, 65, 76, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 65, 67, 69, 78, 84, 69, 82,
+ 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 10, 73,
+ 85, 80, 95, 65, 76, 69, 70, 84, 0, 2, 0, 0, 0, 6, 65, 76, 69, 70, 84, 0,
+ 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0,
+ 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 65, 84, 79,
+ 80, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 12, 73, 85, 80,
+ 95, 65, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 8, 65, 66, 79, 84, 84, 79,
+ 77, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 78, 79, 82, 84, 72, 0, 2, 0, 0,
+ 0, 6, 78, 79, 82, 84, 72, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 83, 79, 85,
+ 84, 72, 0, 2, 0, 0, 0, 6, 83, 79, 85, 84, 72, 0, 2, 0, 0, 0, 9, 73,
+ 85, 80, 95, 87, 69, 83, 84, 0, 2, 0, 0, 0, 5, 87, 69, 83, 84, 0, 2, 0,
+ 0, 0, 9, 73, 85, 80, 95, 69, 65, 83, 84, 0, 2, 0, 0, 0, 5, 69, 65, 83,
+ 84, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 69, 0, 2, 0, 0, 0, 3, 78,
+ 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 69, 0, 2, 0, 0, 0, 3, 83,
+ 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 87, 0, 2, 0, 0, 0, 3, 78,
+ 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 87, 0, 2, 0, 0, 0, 3, 83,
+ 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 70, 85, 76, 76, 0, 2, 0, 0, 0,
+ 5, 70, 85, 76, 76, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 65, 76, 70, 0,
+ 2, 0, 0, 0, 5, 72, 65, 76, 70, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 84,
+ 72, 73, 82, 68, 0, 2, 0, 0, 0, 6, 84, 72, 73, 82, 68, 0, 2, 0, 0, 0,
+ 12, 73, 85, 80, 95, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 8, 81, 85,
+ 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 69, 73, 71, 72, 84,
+ 72, 0, 2, 0, 0, 0, 7, 69, 73, 71, 72, 84, 72, 0, 2, 0, 0, 0, 10, 73,
+ 85, 80, 95, 65, 82, 82, 79, 87, 0, 2, 0, 0, 0, 6, 65, 82, 82, 79, 87, 0,
+ 2, 0, 0, 0, 9, 73, 85, 80, 95, 66, 85, 83, 89, 0, 2, 0, 0, 0, 5, 66,
+ 85, 83, 89, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95,
+ 78, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 78, 0, 2, 0, 0, 0,
+ 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 9, 82,
+ 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83,
+ 73, 90, 69, 95, 69, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 69, 0,
+ 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0,
+ 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0, 0, 0, 14, 73, 85, 80,
+ 95, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73,
+ 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90,
+ 69, 95, 78, 87, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 78, 87, 0,
+ 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2,
+ 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2, 0, 0, 0, 14, 73,
+ 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 10, 82, 69,
+ 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 77, 79, 86,
+ 69, 0, 2, 0, 0, 0, 5, 77, 79, 86, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80,
+ 95, 72, 65, 78, 68, 0, 2, 0, 0, 0, 5, 72, 65, 78, 68, 0, 2, 0, 0, 0,
+ 9, 73, 85, 80, 95, 78, 79, 78, 69, 0, 2, 0, 0, 0, 5, 78, 79, 78, 69, 0,
+ 2, 0, 0, 0, 8, 73, 85, 80, 95, 73, 85, 80, 0, 2, 0, 0, 0, 4, 73, 85,
+ 80, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 82, 79, 83, 83, 0, 2, 0, 0,
+ 0, 6, 67, 82, 79, 83, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 80, 69, 78,
+ 0, 2, 0, 0, 0, 4, 80, 69, 78, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 84,
+ 69, 88, 84, 0, 2, 0, 0, 0, 5, 84, 69, 88, 84, 0, 2, 0, 0, 0, 13, 73,
+ 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 9, 82, 69, 83,
+ 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 79, 80, 69, 78, 72,
+ 65, 78, 68, 0, 2, 0, 0, 0, 9, 79, 80, 69, 78, 72, 65, 78, 68, 0, 2, 0,
+ 0, 0, 23, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82,
+ 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65,
+ 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 23, 73, 85, 80, 95, 72,
+ 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0,
+ 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95,
+ 56, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65,
+ 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 17, 72, 69, 76, 86, 69, 84, 73,
+ 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72,
+ 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2,
+ 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76,
+ 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73,
+ 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 20, 72, 69,
+ 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0,
+ 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76,
+ 68, 95, 49, 48, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95,
+ 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76,
+ 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0,
+ 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49,
+ 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65,
+ 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86,
+ 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0,
+ 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95,
+ 49, 50, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79,
+ 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69,
+ 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 20,
+ 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0,
+ 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73,
+ 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84,
+ 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73,
+ 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 49, 52,
+ 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68,
+ 95, 49, 52, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82,
+ 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 17, 67, 79, 85, 82, 73,
+ 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 21, 73, 85, 80,
+ 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0,
+ 0, 0, 17, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0,
+ 2, 0, 0, 0, 19, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76,
+ 68, 95, 56, 0, 2, 0, 0, 0, 15, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76,
+ 68, 95, 56, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82,
+ 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82,
+ 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 22, 73,
+ 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48,
+ 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67,
+ 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82,
+ 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69,
+ 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67,
+ 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0,
+ 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0,
+ 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65,
+ 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95,
+ 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67,
+ 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 16,
+ 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0,
+ 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95,
+ 49, 52, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77,
+ 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73,
+ 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, 67, 79,
+ 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0,
+ 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 52,
+ 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49,
+ 52, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82,
+ 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, 83, 95, 78, 79, 82,
+ 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, 83,
+ 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, 83,
+ 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, 84,
+ 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 13, 84, 73, 77,
+ 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84,
+ 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 16,
+ 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0,
+ 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48,
+ 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49,
+ 48, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76,
+ 68, 95, 49, 48, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68,
+ 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78,
+ 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95,
+ 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84,
+ 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 16,
+ 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0,
+ 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2,
+ 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0,
+ 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95,
+ 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76,
+ 95, 49, 52, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73,
+ 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95,
+ 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84,
+ 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 14, 84, 73,
+ 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 11, 77, 65, 83,
+ 75, 95, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 24, 91, 43, 47, 45, 93, 63, 40,
+ 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 2, 0, 0,
+ 0, 12, 77, 65, 83, 75, 95, 85, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 18, 40,
+ 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 2, 0, 0,
+ 0, 12, 77, 65, 83, 75, 95, 69, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 40, 91,
+ 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100,
+ 43, 41, 40, 91,101, 69, 93, 91, 43, 47, 45, 93, 63, 47,100, 43, 41, 63, 0, 2,
+ 0, 0, 0, 9, 77, 65, 83, 75, 95, 73, 78, 84, 0, 2, 0, 0, 0, 10, 91, 43,
+ 47, 45, 93, 63, 47,100, 43, 0, 2, 0, 0, 0, 10, 77, 65, 83, 75, 95, 85, 73,
+ 78, 84, 0, 2, 0, 0, 0, 4, 47,100, 43, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/constants_le64w.lo");
+}
diff --git a/iup/srclua3/loh/dial.loh b/iup/srclua3/loh/dial.loh
new file mode 100755
index 0000000..f1811dd
--- /dev/null
+++ b/iup/srclua3/loh/dial.loh
@@ -0,0 +1,31 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luadial.lo");
+*/
+/* ../obj/iupluacontrols3/luadial.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,100,105,
+ 97,108, 46,108,117, 97, 0, 0, 0, 0, 40, 3, 0, 22, 1, 11, 1, 15, 2, 30,
+ 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5,
+ 26, 15, 9, 18, 10, 11, 8, 15, 11, 26, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2,
+ 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 7,112, 97,114,
+101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0,
+ 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0,
+ 0, 0, 3, 0, 0, 0, 13, 64,108,117, 97,100,105, 97,108, 46,108,117, 97, 0,
+ 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,
+117,112, 67,114,101, 97,116,101, 68,105, 97,108, 0, 2, 0, 0, 0, 8,105,117,
+112,100,105, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 13, 64,108,117, 97,100,
+105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 5,100,105, 97,108, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,
+108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,109,111,117,115,101,109,111,118,
+101, 0, 2, 0, 0, 0, 21,105,117,112, 95,118, 97,108, 95,109,111,117,115,101,
+109,111,118,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luadial.lo");
+}
diff --git a/iup/srclua3/loh/dial_be32.loh b/iup/srclua3/loh/dial_be32.loh
new file mode 100755
index 0000000..8a2e8ed
--- /dev/null
+++ b/iup/srclua3/loh/dial_be32.loh
@@ -0,0 +1,31 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luadial_be32.lo");
+*/
+/* ../obj/iupluacontrols3/luadial_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,100,105,
+ 97,108, 46,108,117, 97, 0, 0, 0, 0, 40, 3, 0, 22, 1, 11, 1, 15, 2, 30,
+ 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5,
+ 26, 15, 9, 18, 10, 11, 8, 15, 11, 26, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2,
+ 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 7,112, 97,114,
+101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0,
+ 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0,
+ 0, 0, 3, 0, 0, 0, 13, 64,108,117, 97,100,105, 97,108, 46,108,117, 97, 0,
+ 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,
+117,112, 67,114,101, 97,116,101, 68,105, 97,108, 0, 2, 0, 0, 0, 8,105,117,
+112,100,105, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 13, 64,108,117, 97,100,
+105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 5,100,105, 97,108, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,
+108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,109,111,117,115,101,109,111,118,
+101, 0, 2, 0, 0, 0, 21,105,117,112, 95,118, 97,108, 95,109,111,117,115,101,
+109,111,118,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luadial_be32.lo");
+}
diff --git a/iup/srclua3/loh/dial_be64.loh b/iup/srclua3/loh/dial_be64.loh
new file mode 100755
index 0000000..d6a30c1
--- /dev/null
+++ b/iup/srclua3/loh/dial_be64.loh
@@ -0,0 +1,30 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/dial_be64.lo");
+*/
+/* ../obj/iupluacontrols3/dial_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,100,105, 97,108, 46,
+108,117, 97, 0, 0, 0, 0, 40, 3, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9,
+ 18, 10, 11, 8, 15, 11, 26, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0,
+ 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116,
+ 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,
+101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3,
+ 0, 0, 0, 10, 64,100,105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2,
+ 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
+ 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,
+116,101, 68,105, 97,108, 0, 2, 0, 0, 0, 8,105,117,112,100,105, 97,108, 0,
+ 4, 0, 0, 0, 7, 0, 0, 0, 10, 64,100,105, 97,108, 46,108,117, 97, 0, 0,
+ 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 68, 73,
+ 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,100,105, 97,108, 0, 2,
+ 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0,
+ 0, 0, 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 21,105,117,
+112, 95,118, 97,108, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/dial_be64.lo");
+}
diff --git a/iup/srclua3/loh/dial_le64.loh b/iup/srclua3/loh/dial_le64.loh
new file mode 100755
index 0000000..e68eb83
--- /dev/null
+++ b/iup/srclua3/loh/dial_le64.loh
@@ -0,0 +1,31 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luadial_le64.lo");
+*/
+/* ../obj/iupluacontrols3/luadial_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,100,105,
+ 97,108, 46,108,117, 97, 0, 0, 0, 0, 40, 3, 0, 22, 1, 11, 1, 15, 2, 30,
+ 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5,
+ 26, 15, 9, 18, 10, 11, 8, 15, 11, 26, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2,
+ 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 7,112, 97,114,
+101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0,
+ 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0,
+ 0, 0, 3, 0, 0, 0, 13, 64,108,117, 97,100,105, 97,108, 46,108,117, 97, 0,
+ 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,
+117,112, 67,114,101, 97,116,101, 68,105, 97,108, 0, 2, 0, 0, 0, 8,105,117,
+112,100,105, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 13, 64,108,117, 97,100,
+105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 5,100,105, 97,108, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,
+108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,109,111,117,115,101,109,111,118,
+101, 0, 2, 0, 0, 0, 21,105,117,112, 95,118, 97,108, 95,109,111,117,115,101,
+109,111,118,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luadial_le64.lo");
+}
diff --git a/iup/srclua3/loh/dial_le64w.loh b/iup/srclua3/loh/dial_le64w.loh
new file mode 100755
index 0000000..ace3d04
--- /dev/null
+++ b/iup/srclua3/loh/dial_le64w.loh
@@ -0,0 +1,31 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luadial_le64w.lo");
+*/
+/* ../obj/iupluacontrols3/luadial_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,100,105,
+ 97,108, 46,108,117, 97, 0, 0, 0, 0, 40, 3, 0, 22, 1, 11, 1, 15, 2, 30,
+ 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5,
+ 26, 15, 9, 18, 10, 11, 8, 15, 11, 26, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2,
+ 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 7,112, 97,114,
+101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0,
+ 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0,
+ 0, 0, 3, 0, 0, 0, 13, 64,108,117, 97,100,105, 97,108, 46,108,117, 97, 0,
+ 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,
+117,112, 67,114,101, 97,116,101, 68,105, 97,108, 0, 2, 0, 0, 0, 8,105,117,
+112,100,105, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 13, 64,108,117, 97,100,
+105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0,
+ 0, 0, 5,100,105, 97,108, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,
+108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,109,111,117,115,101,109,111,118,
+101, 0, 2, 0, 0, 0, 21,105,117,112, 95,118, 97,108, 95,109,111,117,115,101,
+109,111,118,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luadial_le64w.lo");
+}
diff --git a/iup/srclua3/loh/gauge.loh b/iup/srclua3/loh/gauge.loh
new file mode 100755
index 0000000..f4f22bf
--- /dev/null
+++ b/iup/srclua3/loh/gauge.loh
@@ -0,0 +1,28 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luagauge.lo");
+*/
+/* ../obj/iupluacontrols3/luagauge.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97,103, 97,
+117,103,101, 46,108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2,
+ 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15,
+ 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 9, 73, 85, 80, 71,
+ 65, 85, 71, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0,
+ 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101,
+ 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14,
+ 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2,
+ 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 71, 97,117,
+103,101, 0, 2, 0, 0, 0, 9,105,117,112,103, 97,117,103,101, 0, 4, 0, 0,
+ 0, 7, 0, 0, 0, 14, 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 71,
+ 65, 85, 71, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,103, 97,117,103,
+101, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luagauge.lo");
+}
diff --git a/iup/srclua3/loh/gauge_be32.loh b/iup/srclua3/loh/gauge_be32.loh
new file mode 100755
index 0000000..c4ef637
--- /dev/null
+++ b/iup/srclua3/loh/gauge_be32.loh
@@ -0,0 +1,28 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luagauge_be32.lo");
+*/
+/* ../obj/iupluacontrols3/luagauge_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97,103, 97,
+117,103,101, 46,108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2,
+ 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15,
+ 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 9, 73, 85, 80, 71,
+ 65, 85, 71, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0,
+ 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101,
+ 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14,
+ 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2,
+ 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 71, 97,117,
+103,101, 0, 2, 0, 0, 0, 9,105,117,112,103, 97,117,103,101, 0, 4, 0, 0,
+ 0, 7, 0, 0, 0, 14, 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 71,
+ 65, 85, 71, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,103, 97,117,103,
+101, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luagauge_be32.lo");
+}
diff --git a/iup/srclua3/loh/gauge_be64.loh b/iup/srclua3/loh/gauge_be64.loh
new file mode 100755
index 0000000..99ce14d
--- /dev/null
+++ b/iup/srclua3/loh/gauge_be64.loh
@@ -0,0 +1,27 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/gauge_be64.lo");
+*/
+/* ../obj/iupluacontrols3/gauge_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,103, 97,117,103,101,
+ 46,108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25,
+ 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 0,
+ 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 9, 73, 85, 80, 71, 65, 85, 71,
+ 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,
+101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 11, 64,103, 97,
+117,103,101, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0,
+ 0, 15,105,117,112, 67,114,101, 97,116,101, 71, 97,117,103,101, 0, 2, 0, 0,
+ 0, 9,105,117,112,103, 97,117,103,101, 0, 4, 0, 0, 0, 7, 0, 0, 0, 11,
+ 64,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20,
+ 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,
+111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 71, 65, 85, 71, 69, 0, 2, 0, 0, 0,
+ 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,
+112, 0, 2, 0, 0, 0, 6,103, 97,117,103,101, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/gauge_be64.lo");
+}
diff --git a/iup/srclua3/loh/gauge_le64.loh b/iup/srclua3/loh/gauge_le64.loh
new file mode 100755
index 0000000..5c3803c
--- /dev/null
+++ b/iup/srclua3/loh/gauge_le64.loh
@@ -0,0 +1,28 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luagauge_le64.lo");
+*/
+/* ../obj/iupluacontrols3/luagauge_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97,103, 97,
+117,103,101, 46,108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2,
+ 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15,
+ 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 9, 73, 85, 80, 71,
+ 65, 85, 71, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0,
+ 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101,
+ 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14,
+ 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2,
+ 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 71, 97,117,
+103,101, 0, 2, 0, 0, 0, 9,105,117,112,103, 97,117,103,101, 0, 4, 0, 0,
+ 0, 7, 0, 0, 0, 14, 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 71,
+ 65, 85, 71, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,103, 97,117,103,
+101, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luagauge_le64.lo");
+}
diff --git a/iup/srclua3/loh/gauge_le64w.loh b/iup/srclua3/loh/gauge_le64w.loh
new file mode 100755
index 0000000..7aeedac
--- /dev/null
+++ b/iup/srclua3/loh/gauge_le64w.loh
@@ -0,0 +1,28 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luagauge_le64w.lo");
+*/
+/* ../obj/iupluacontrols3/luagauge_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97,103, 97,
+117,103,101, 46,108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2,
+ 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15,
+ 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 9, 73, 85, 80, 71,
+ 65, 85, 71, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0,
+ 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101,
+ 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14,
+ 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2,
+ 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 71, 97,117,
+103,101, 0, 2, 0, 0, 0, 9,105,117,112,103, 97,117,103,101, 0, 4, 0, 0,
+ 0, 7, 0, 0, 0, 14, 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 71,
+ 65, 85, 71, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,103, 97,117,103,
+101, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luagauge_le64w.lo");
+}
diff --git a/iup/srclua3/loh/iuplua.loh b/iup/srclua3/loh/iuplua.loh
new file mode 100755
index 0000000..d55bd40
--- /dev/null
+++ b/iup/srclua3/loh/iuplua.loh
@@ -0,0 +1,170 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/iuplua.lo");
+*/
+/* ../obj/iuplua3/iuplua.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,105,117,112,108,117,
+ 97, 46,108,117, 97, 0, 0, 0, 0,122, 4, 0, 22, 0, 25, 0, 15, 1, 15, 2,
+ 11, 3, 15, 4, 2, 0, 3, 15, 1, 15, 2, 11, 5, 15, 6, 2, 0, 3, 15, 1,
+ 15, 7, 22, 0, 2, 1, 1, 11, 8, 15, 9, 2, 0, 3, 11, 11, 25, 10, 11, 13,
+ 25, 12, 11, 15, 25, 14, 11, 17, 25, 16, 11, 19, 25, 18, 11, 21, 25, 20, 11, 23,
+ 25, 22, 11, 25, 25, 24, 11, 27, 25, 26, 11, 29, 25, 28, 11, 31, 25, 30, 11, 33,
+ 25, 32, 15, 34, 11, 35, 15, 32, 26, 11, 37, 25, 36, 15, 34, 11, 38, 15, 36, 26,
+ 11, 40, 25, 39, 15, 34, 11, 41, 11, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 43,
+ 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0,
+ 0, 13,115,101,116,116, 97,103,109,101,116,104,111,100, 0, 2, 0, 0, 0, 11,
+105,117,112,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,103,101,116,116,
+ 97, 98,108,101, 0, 2, 0, 0, 0, 13,105,117,112, 95,103,101,116,116, 97, 98,
+108,101, 0, 2, 0, 0, 0, 9,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0,
+ 0, 13,105,117,112, 95,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, 0, 4,
+116, 97,103, 0, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 10,
+105,117,112, 95,105,110,100,101,120, 0, 2, 0, 0, 0, 7, 95, 65, 76, 69, 82,
+ 84, 0, 4, 0, 0, 0, 14, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,
+117, 97, 0, 0, 0, 0,125, 14, 1, 15, 2, 22, 3, 11, 3, 11, 4, 11, 5, 11,
+ 6, 11, 7, 11, 8, 30, 2, 2, 1, 1, 15, 10, 22, 4, 11, 11, 11, 12, 11, 13,
+ 11, 12, 11, 14, 13, 0, 11, 5, 11, 15, 30, 3, 2, 1, 1, 15, 17, 22, 5, 13,
+ 2, 13, 1, 29, 0, 2, 11, 18, 11, 19, 11, 20, 11, 21, 11, 22, 11, 23, 30, 2,
+ 2, 1, 1, 15, 25, 22, 5, 13, 3, 29, 0, 1, 11, 3, 11, 26, 11, 27, 13, 1,
+ 11, 28, 13, 1, 11, 29, 13, 1, 30, 3, 2, 1, 1, 13, 4, 20, 30, 15, 31, 15,
+ 31, 2, 0, 3, 13, 4, 20, 32, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 33,
+ 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 3, 98,116, 0, 2, 0, 0, 0, 10,
+105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0, 6,116,105,116,108,101,
+ 0, 2, 0, 0, 0, 3, 79,107, 0, 2, 0, 0, 0, 5,115,105,122,101, 0, 2,
+ 0, 0, 0, 3, 54, 48, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2,
+ 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69,
+ 0, 2, 0, 0, 0, 3,109,108, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108,
+116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2,
+ 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 9,114,101, 97,100,111,110,108,
+121, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8, 51, 48,
+ 48,120, 49, 53, 48, 0, 2, 0, 0, 0, 3,118, 98, 0, 2, 0, 0, 0, 8,105,
+117,112,118, 98,111,120, 0, 2, 0, 0, 0, 10, 97,108,105,103,110,109,101,110,
+116, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7,
+109, 97,114,103,105,110, 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0,
+ 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 3,
+100,103, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0, 2, 0,
+ 0, 0, 10, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, 11,100,101,
+102, 97,117,108,116,101,115, 99, 0, 2, 0, 0, 0, 13,100,101,102, 97,117,108,
+116,101,110,116,101,114, 0, 2, 0, 0, 0, 11,115,116, 97,114,116,102,111, 99,
+117,115, 0, 2, 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73,
+ 85, 80, 95, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8,100,101,115,116,114,
+111,121, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0,
+ 4, 0, 0, 0, 23, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97,
+ 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,
+116,121,112,101, 0, 2, 0, 0, 0, 7,115,116,114,105,110,103, 0, 2, 0, 0,
+ 0, 12,116,121,112,101, 95,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 27, 0,
+ 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3,
+ 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2,
+ 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 9,116,121,112,101,
+ 95,110,105,108, 0, 4, 0, 0, 0, 31, 0, 0, 0, 12, 64,105,117,112,108,117,
+ 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11,
+ 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 4,110,105,108, 0, 2,
+ 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,105,111,110, 0, 4, 0,
+ 0, 0, 35, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0,
+ 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,
+112,101, 0, 2, 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 2, 0, 0,
+ 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 0, 39, 0,
+ 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 20, 3,
+ 1, 13, 0, 52, 9, 15, 1, 13, 0, 16, 1, 1, 50, 4, 4, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2,119, 0, 2, 0, 0, 0, 12,105,
+117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 10,116,121,112,101,
+ 95,109,101,110,117, 0, 4, 0, 0, 0, 47, 0, 0, 0, 12, 64,105,117,112,108,
+117, 97, 46,108,117, 97, 0, 0, 0, 0, 21, 3, 1, 15, 1, 13, 0, 2, 1, 1,
+ 48, 7, 13, 0, 18, 2, 15, 3, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,
+103,101,116, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
+ 8, 73, 85, 80, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,116,121,112,101, 95,105,
+116,101,109, 0, 4, 0, 0, 0, 51, 0, 0, 0, 12, 64,105,117,112,108,117, 97,
+ 46,108,117, 97, 0, 0, 0, 0, 39, 3, 1, 15, 1, 13, 0, 2, 1, 1, 48, 25,
+ 13, 0, 18, 2, 15, 3, 32, 46, 7, 13, 0, 18, 2, 15, 4, 32, 46, 7, 13, 0,
+ 18, 2, 15, 5, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80,
+ 73, 84, 69, 77, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85,
+ 0, 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2,
+ 0, 0, 0, 14,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 0,
+ 0, 0, 55, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0,
+ 0, 0,105, 7,129, 13, 1, 7, 1, 16, 13, 2, 13, 0, 16, 13, 3, 44, 52, 29,
+ 15, 5, 15, 6, 13, 0, 16, 7, 1, 16, 2, 1, 1, 13, 2, 13, 4, 16, 23, 3,
+ 13, 3, 44, 52, 2, 1, 5, 5, 1, 15, 7, 13, 3, 2, 1, 1, 52, 11, 15, 8,
+ 13, 3, 13, 1, 3, 4, 2, 50, 38, 15, 9, 13, 3, 2, 1, 1, 52, 25, 15, 11,
+ 13, 2, 25, 11, 15, 13, 13, 3, 2, 1, 1, 13, 4, 25, 11, 13, 5, 1, 6, 5,
+ 2, 50, 4, 15, 14, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0,
+ 5,110, 97,109,101, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 4, 97,114,103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0,
+ 0, 10,102,117,108,108, 95,110, 97,109,101, 0, 2, 0, 0, 0, 9,115,116,114,
+108,111,119,101,114, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98,
+ 97, 99,107,115, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,
+105,111,110, 0, 2, 0, 0, 0, 5, 99, 97,108,108, 0, 2, 0, 0, 0, 12,116,
+121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 5,116,101,109,112,
+ 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,114,101,115,117,
+108,116, 0, 2, 0, 0, 0, 9,100,111,115,116,114,105,110,103, 0, 2, 0, 0,
+ 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11,105,117,112,
+ 83,101,116, 78, 97,109,101, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 64,105,117,
+112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 51, 7, 1, 15, 1, 15, 2, 13,
+ 0, 16, 18, 3, 2, 1, 1, 44, 52, 33, 15, 2, 13, 0, 16, 11, 3, 15, 4, 11,
+ 5, 15, 6, 13, 0, 2, 1, 1, 2, 1, 2, 26, 15, 7, 13, 0, 18, 3, 13, 0,
+ 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 7,104, 97,110,
+100,108,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103,
+ 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0,
+ 0, 0, 9, 73, 85, 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 7,102,111,114,
+109, 97,116, 0, 2, 0, 0, 0, 17, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77,
+ 69, 40, 37,115, 41, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103, 0,
+ 2, 0, 0, 0, 13, 73,117,112, 83,101,116, 72, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110,
+ 78, 97,109,101,115, 0, 4, 0, 0, 0, 88, 0, 0, 0, 12, 64,105,117,112,108,
+117, 97, 46,108,117, 97, 0, 0, 0, 0, 74, 5, 1, 13, 0, 18, 1, 18, 1, 15,
+ 2, 32, 52, 32, 7, 1, 50, 17, 15, 4, 13, 0, 13, 1, 16, 2, 0, 1, 13, 1,
+ 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 54, 24, 5, 1, 50, 28, 13, 0, 18, 1,
+ 15, 5, 32, 52, 12, 15, 4, 13, 0, 7, 1, 16, 2, 0, 1, 50, 7, 15, 6, 13,
+ 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 12, 67,
+ 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 2, 0, 0, 0, 2,105, 0, 2, 0,
+ 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110,
+ 78, 97,109,101,115, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0,
+ 2, 0, 0, 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0,
+ 7, 73,117,112, 82, 71, 66, 0, 4, 0, 0, 0,108, 0, 0, 0, 12, 64,105,117,
+112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 43, 7, 3, 15, 3, 13, 0, 7,
+255, 39, 2, 1, 1, 11, 4, 42, 15, 3, 13, 1, 7,255, 39, 2, 1, 1, 42, 11,
+ 4, 42, 15, 3, 13, 2, 7,255, 39, 2, 1, 1, 42, 1, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 2, 0, 0, 0, 4,114,101,100, 0, 2, 0, 0, 0, 6,103,114,
+101,101,110, 0, 2, 0, 0, 0, 5, 98,108,117,101, 0, 2, 0, 0, 0, 6,102,
+108,111,111,114, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112,
+ 0, 2, 0, 0, 0, 4, 82, 71, 66, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,
+103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 0, 0, 0,113, 0, 0,
+ 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 58, 10, 2,
+ 15, 2, 13, 0, 16, 44, 52, 43, 15, 4, 11, 5, 15, 6, 13, 1, 2, 1, 1, 42,
+ 2, 1, 1, 13, 2, 44, 52, 4, 15, 7, 23, 2, 15, 2, 13, 0, 22, 2, 11, 8,
+ 13, 2, 11, 0, 13, 0, 30, 1, 26, 5, 1, 13, 0, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 9, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0,
+ 9,116,121,112,101,110, 97,109,101, 0, 2, 0, 0, 0, 12,105,117,112, 95,104,
+ 97,110,100,108,101,115, 0, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 10,103,101,116,103,108,111, 98, 97,108, 0, 2, 0, 0, 0, 4, 73, 85, 80, 0,
+ 2, 0, 0, 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 15, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 12, 73,117,112, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,125,
+ 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 27,
+ 6, 1, 15, 2, 13, 0, 7, 1, 16, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1,
+ 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,
+111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0,
+ 13, 73,117,112, 71,101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,
+117,112, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, 2, 0,
+ 0, 0, 9, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,130, 0, 0, 0,
+ 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 24, 6, 1, 15,
+ 2, 13, 0, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, 2, 1, 1, 3, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2,
+ 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71,
+101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,103,
+105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 16, 73,117,112,
+ 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua.lo");
+}
diff --git a/iup/srclua3/loh/iuplua_be32.loh b/iup/srclua3/loh/iuplua_be32.loh
new file mode 100755
index 0000000..2d41b1b
--- /dev/null
+++ b/iup/srclua3/loh/iuplua_be32.loh
@@ -0,0 +1,170 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/iuplua_be32.lo");
+*/
+/* ../obj/iuplua3/iuplua_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,105,117,112,108,117,
+ 97, 46,108,117, 97, 0, 0, 0, 0,122, 4, 0, 22, 0, 25, 0, 15, 1, 15, 2,
+ 11, 3, 15, 4, 2, 0, 3, 15, 1, 15, 2, 11, 5, 15, 6, 2, 0, 3, 15, 1,
+ 15, 7, 22, 0, 2, 1, 1, 11, 8, 15, 9, 2, 0, 3, 11, 11, 25, 10, 11, 13,
+ 25, 12, 11, 15, 25, 14, 11, 17, 25, 16, 11, 19, 25, 18, 11, 21, 25, 20, 11, 23,
+ 25, 22, 11, 25, 25, 24, 11, 27, 25, 26, 11, 29, 25, 28, 11, 31, 25, 30, 11, 33,
+ 25, 32, 15, 34, 11, 35, 15, 32, 26, 11, 37, 25, 36, 15, 34, 11, 38, 15, 36, 26,
+ 11, 40, 25, 39, 15, 34, 11, 41, 11, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 43,
+ 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0,
+ 0, 13,115,101,116,116, 97,103,109,101,116,104,111,100, 0, 2, 0, 0, 0, 11,
+105,117,112,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,103,101,116,116,
+ 97, 98,108,101, 0, 2, 0, 0, 0, 13,105,117,112, 95,103,101,116,116, 97, 98,
+108,101, 0, 2, 0, 0, 0, 9,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0,
+ 0, 13,105,117,112, 95,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, 0, 4,
+116, 97,103, 0, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 10,
+105,117,112, 95,105,110,100,101,120, 0, 2, 0, 0, 0, 7, 95, 65, 76, 69, 82,
+ 84, 0, 4, 0, 0, 0, 14, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,
+117, 97, 0, 0, 0, 0,125, 14, 1, 15, 2, 22, 3, 11, 3, 11, 4, 11, 5, 11,
+ 6, 11, 7, 11, 8, 30, 2, 2, 1, 1, 15, 10, 22, 4, 11, 11, 11, 12, 11, 13,
+ 11, 12, 11, 14, 13, 0, 11, 5, 11, 15, 30, 3, 2, 1, 1, 15, 17, 22, 5, 13,
+ 2, 13, 1, 29, 0, 2, 11, 18, 11, 19, 11, 20, 11, 21, 11, 22, 11, 23, 30, 2,
+ 2, 1, 1, 15, 25, 22, 5, 13, 3, 29, 0, 1, 11, 3, 11, 26, 11, 27, 13, 1,
+ 11, 28, 13, 1, 11, 29, 13, 1, 30, 3, 2, 1, 1, 13, 4, 20, 30, 15, 31, 15,
+ 31, 2, 0, 3, 13, 4, 20, 32, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 33,
+ 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 3, 98,116, 0, 2, 0, 0, 0, 10,
+105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0, 6,116,105,116,108,101,
+ 0, 2, 0, 0, 0, 3, 79,107, 0, 2, 0, 0, 0, 5,115,105,122,101, 0, 2,
+ 0, 0, 0, 3, 54, 48, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2,
+ 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69,
+ 0, 2, 0, 0, 0, 3,109,108, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108,
+116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2,
+ 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 9,114,101, 97,100,111,110,108,
+121, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8, 51, 48,
+ 48,120, 49, 53, 48, 0, 2, 0, 0, 0, 3,118, 98, 0, 2, 0, 0, 0, 8,105,
+117,112,118, 98,111,120, 0, 2, 0, 0, 0, 10, 97,108,105,103,110,109,101,110,
+116, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7,
+109, 97,114,103,105,110, 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0,
+ 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 3,
+100,103, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0, 2, 0,
+ 0, 0, 10, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, 11,100,101,
+102, 97,117,108,116,101,115, 99, 0, 2, 0, 0, 0, 13,100,101,102, 97,117,108,
+116,101,110,116,101,114, 0, 2, 0, 0, 0, 11,115,116, 97,114,116,102,111, 99,
+117,115, 0, 2, 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73,
+ 85, 80, 95, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8,100,101,115,116,114,
+111,121, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0,
+ 4, 0, 0, 0, 23, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97,
+ 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,
+116,121,112,101, 0, 2, 0, 0, 0, 7,115,116,114,105,110,103, 0, 2, 0, 0,
+ 0, 12,116,121,112,101, 95,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 27, 0,
+ 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3,
+ 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2,
+ 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 9,116,121,112,101,
+ 95,110,105,108, 0, 4, 0, 0, 0, 31, 0, 0, 0, 12, 64,105,117,112,108,117,
+ 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11,
+ 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 4,110,105,108, 0, 2,
+ 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,105,111,110, 0, 4, 0,
+ 0, 0, 35, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0,
+ 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,
+112,101, 0, 2, 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 2, 0, 0,
+ 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 0, 39, 0,
+ 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 20, 3,
+ 1, 13, 0, 52, 9, 15, 1, 13, 0, 16, 1, 1, 50, 4, 4, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2,119, 0, 2, 0, 0, 0, 12,105,
+117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 10,116,121,112,101,
+ 95,109,101,110,117, 0, 4, 0, 0, 0, 47, 0, 0, 0, 12, 64,105,117,112,108,
+117, 97, 46,108,117, 97, 0, 0, 0, 0, 21, 3, 1, 15, 1, 13, 0, 2, 1, 1,
+ 48, 7, 13, 0, 18, 2, 15, 3, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,
+103,101,116, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
+ 8, 73, 85, 80, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,116,121,112,101, 95,105,
+116,101,109, 0, 4, 0, 0, 0, 51, 0, 0, 0, 12, 64,105,117,112,108,117, 97,
+ 46,108,117, 97, 0, 0, 0, 0, 39, 3, 1, 15, 1, 13, 0, 2, 1, 1, 48, 25,
+ 13, 0, 18, 2, 15, 3, 32, 46, 7, 13, 0, 18, 2, 15, 4, 32, 46, 7, 13, 0,
+ 18, 2, 15, 5, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80,
+ 73, 84, 69, 77, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85,
+ 0, 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2,
+ 0, 0, 0, 14,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 0,
+ 0, 0, 55, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0,
+ 0, 0,105, 7,129, 13, 1, 7, 1, 16, 13, 2, 13, 0, 16, 13, 3, 44, 52, 29,
+ 15, 5, 15, 6, 13, 0, 16, 7, 1, 16, 2, 1, 1, 13, 2, 13, 4, 16, 23, 3,
+ 13, 3, 44, 52, 2, 1, 5, 5, 1, 15, 7, 13, 3, 2, 1, 1, 52, 11, 15, 8,
+ 13, 3, 13, 1, 3, 4, 2, 50, 38, 15, 9, 13, 3, 2, 1, 1, 52, 25, 15, 11,
+ 13, 2, 25, 11, 15, 13, 13, 3, 2, 1, 1, 13, 4, 25, 11, 13, 5, 1, 6, 5,
+ 2, 50, 4, 15, 14, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0,
+ 5,110, 97,109,101, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 4, 97,114,103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0,
+ 0, 10,102,117,108,108, 95,110, 97,109,101, 0, 2, 0, 0, 0, 9,115,116,114,
+108,111,119,101,114, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98,
+ 97, 99,107,115, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,
+105,111,110, 0, 2, 0, 0, 0, 5, 99, 97,108,108, 0, 2, 0, 0, 0, 12,116,
+121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 5,116,101,109,112,
+ 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,114,101,115,117,
+108,116, 0, 2, 0, 0, 0, 9,100,111,115,116,114,105,110,103, 0, 2, 0, 0,
+ 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11,105,117,112,
+ 83,101,116, 78, 97,109,101, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 64,105,117,
+112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 51, 7, 1, 15, 1, 15, 2, 13,
+ 0, 16, 18, 3, 2, 1, 1, 44, 52, 33, 15, 2, 13, 0, 16, 11, 3, 15, 4, 11,
+ 5, 15, 6, 13, 0, 2, 1, 1, 2, 1, 2, 26, 15, 7, 13, 0, 18, 3, 13, 0,
+ 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 7,104, 97,110,
+100,108,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103,
+ 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0,
+ 0, 0, 9, 73, 85, 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 7,102,111,114,
+109, 97,116, 0, 2, 0, 0, 0, 17, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77,
+ 69, 40, 37,115, 41, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103, 0,
+ 2, 0, 0, 0, 13, 73,117,112, 83,101,116, 72, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110,
+ 78, 97,109,101,115, 0, 4, 0, 0, 0, 88, 0, 0, 0, 12, 64,105,117,112,108,
+117, 97, 46,108,117, 97, 0, 0, 0, 0, 74, 5, 1, 13, 0, 18, 1, 18, 1, 15,
+ 2, 32, 52, 32, 7, 1, 50, 17, 15, 4, 13, 0, 13, 1, 16, 2, 0, 1, 13, 1,
+ 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 54, 24, 5, 1, 50, 28, 13, 0, 18, 1,
+ 15, 5, 32, 52, 12, 15, 4, 13, 0, 7, 1, 16, 2, 0, 1, 50, 7, 15, 6, 13,
+ 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 12, 67,
+ 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 2, 0, 0, 0, 2,105, 0, 2, 0,
+ 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110,
+ 78, 97,109,101,115, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0,
+ 2, 0, 0, 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0,
+ 7, 73,117,112, 82, 71, 66, 0, 4, 0, 0, 0,108, 0, 0, 0, 12, 64,105,117,
+112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 43, 7, 3, 15, 3, 13, 0, 7,
+255, 39, 2, 1, 1, 11, 4, 42, 15, 3, 13, 1, 7,255, 39, 2, 1, 1, 42, 11,
+ 4, 42, 15, 3, 13, 2, 7,255, 39, 2, 1, 1, 42, 1, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 2, 0, 0, 0, 4,114,101,100, 0, 2, 0, 0, 0, 6,103,114,
+101,101,110, 0, 2, 0, 0, 0, 5, 98,108,117,101, 0, 2, 0, 0, 0, 6,102,
+108,111,111,114, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112,
+ 0, 2, 0, 0, 0, 4, 82, 71, 66, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,
+103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 0, 0, 0,113, 0, 0,
+ 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 58, 10, 2,
+ 15, 2, 13, 0, 16, 44, 52, 43, 15, 4, 11, 5, 15, 6, 13, 1, 2, 1, 1, 42,
+ 2, 1, 1, 13, 2, 44, 52, 4, 15, 7, 23, 2, 15, 2, 13, 0, 22, 2, 11, 8,
+ 13, 2, 11, 0, 13, 0, 30, 1, 26, 5, 1, 13, 0, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 9, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0,
+ 9,116,121,112,101,110, 97,109,101, 0, 2, 0, 0, 0, 12,105,117,112, 95,104,
+ 97,110,100,108,101,115, 0, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 10,103,101,116,103,108,111, 98, 97,108, 0, 2, 0, 0, 0, 4, 73, 85, 80, 0,
+ 2, 0, 0, 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 15, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 12, 73,117,112, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,125,
+ 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 27,
+ 6, 1, 15, 2, 13, 0, 7, 1, 16, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1,
+ 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,
+111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0,
+ 13, 73,117,112, 71,101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,
+117,112, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, 2, 0,
+ 0, 0, 9, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,130, 0, 0, 0,
+ 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 24, 6, 1, 15,
+ 2, 13, 0, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, 2, 1, 1, 3, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2,
+ 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71,
+101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,103,
+105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 16, 73,117,112,
+ 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_be32.lo");
+}
diff --git a/iup/srclua3/loh/iuplua_be64.loh b/iup/srclua3/loh/iuplua_be64.loh
new file mode 100755
index 0000000..f9f7162
--- /dev/null
+++ b/iup/srclua3/loh/iuplua_be64.loh
@@ -0,0 +1,170 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/iuplua_be64.lo");
+*/
+/* ../obj/iuplua3/iuplua_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,105,117,112,108,117,
+ 97, 46,108,117, 97, 0, 0, 0, 0,122, 4, 0, 22, 0, 25, 0, 15, 1, 15, 2,
+ 11, 3, 15, 4, 2, 0, 3, 15, 1, 15, 2, 11, 5, 15, 6, 2, 0, 3, 15, 1,
+ 15, 7, 22, 0, 2, 1, 1, 11, 8, 15, 9, 2, 0, 3, 11, 11, 25, 10, 11, 13,
+ 25, 12, 11, 15, 25, 14, 11, 17, 25, 16, 11, 19, 25, 18, 11, 21, 25, 20, 11, 23,
+ 25, 22, 11, 25, 25, 24, 11, 27, 25, 26, 11, 29, 25, 28, 11, 31, 25, 30, 11, 33,
+ 25, 32, 15, 34, 11, 35, 15, 32, 26, 11, 37, 25, 36, 15, 34, 11, 38, 15, 36, 26,
+ 11, 40, 25, 39, 15, 34, 11, 41, 11, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 43,
+ 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0,
+ 0, 13,115,101,116,116, 97,103,109,101,116,104,111,100, 0, 2, 0, 0, 0, 11,
+105,117,112,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,103,101,116,116,
+ 97, 98,108,101, 0, 2, 0, 0, 0, 13,105,117,112, 95,103,101,116,116, 97, 98,
+108,101, 0, 2, 0, 0, 0, 9,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0,
+ 0, 13,105,117,112, 95,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, 0, 4,
+116, 97,103, 0, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 10,
+105,117,112, 95,105,110,100,101,120, 0, 2, 0, 0, 0, 7, 95, 65, 76, 69, 82,
+ 84, 0, 4, 0, 0, 0, 14, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,
+117, 97, 0, 0, 0, 0,125, 14, 1, 15, 2, 22, 3, 11, 3, 11, 4, 11, 5, 11,
+ 6, 11, 7, 11, 8, 30, 2, 2, 1, 1, 15, 10, 22, 4, 11, 11, 11, 12, 11, 13,
+ 11, 12, 11, 14, 13, 0, 11, 5, 11, 15, 30, 3, 2, 1, 1, 15, 17, 22, 5, 13,
+ 2, 13, 1, 29, 0, 2, 11, 18, 11, 19, 11, 20, 11, 21, 11, 22, 11, 23, 30, 2,
+ 2, 1, 1, 15, 25, 22, 5, 13, 3, 29, 0, 1, 11, 3, 11, 26, 11, 27, 13, 1,
+ 11, 28, 13, 1, 11, 29, 13, 1, 30, 3, 2, 1, 1, 13, 4, 20, 30, 15, 31, 15,
+ 31, 2, 0, 3, 13, 4, 20, 32, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 33,
+ 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 3, 98,116, 0, 2, 0, 0, 0, 10,
+105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0, 6,116,105,116,108,101,
+ 0, 2, 0, 0, 0, 3, 79,107, 0, 2, 0, 0, 0, 5,115,105,122,101, 0, 2,
+ 0, 0, 0, 3, 54, 48, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2,
+ 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69,
+ 0, 2, 0, 0, 0, 3,109,108, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108,
+116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2,
+ 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 9,114,101, 97,100,111,110,108,
+121, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8, 51, 48,
+ 48,120, 49, 53, 48, 0, 2, 0, 0, 0, 3,118, 98, 0, 2, 0, 0, 0, 8,105,
+117,112,118, 98,111,120, 0, 2, 0, 0, 0, 10, 97,108,105,103,110,109,101,110,
+116, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7,
+109, 97,114,103,105,110, 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0,
+ 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 3,
+100,103, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0, 2, 0,
+ 0, 0, 10, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, 11,100,101,
+102, 97,117,108,116,101,115, 99, 0, 2, 0, 0, 0, 13,100,101,102, 97,117,108,
+116,101,110,116,101,114, 0, 2, 0, 0, 0, 11,115,116, 97,114,116,102,111, 99,
+117,115, 0, 2, 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73,
+ 85, 80, 95, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8,100,101,115,116,114,
+111,121, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0,
+ 4, 0, 0, 0, 23, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97,
+ 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,
+116,121,112,101, 0, 2, 0, 0, 0, 7,115,116,114,105,110,103, 0, 2, 0, 0,
+ 0, 12,116,121,112,101, 95,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 27, 0,
+ 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3,
+ 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2,
+ 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 9,116,121,112,101,
+ 95,110,105,108, 0, 4, 0, 0, 0, 31, 0, 0, 0, 12, 64,105,117,112,108,117,
+ 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11,
+ 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 4,110,105,108, 0, 2,
+ 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,105,111,110, 0, 4, 0,
+ 0, 0, 35, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0,
+ 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,
+112,101, 0, 2, 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 2, 0, 0,
+ 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 0, 39, 0,
+ 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 20, 3,
+ 1, 13, 0, 52, 9, 15, 1, 13, 0, 16, 1, 1, 50, 4, 4, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2,119, 0, 2, 0, 0, 0, 12,105,
+117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 10,116,121,112,101,
+ 95,109,101,110,117, 0, 4, 0, 0, 0, 47, 0, 0, 0, 12, 64,105,117,112,108,
+117, 97, 46,108,117, 97, 0, 0, 0, 0, 21, 3, 1, 15, 1, 13, 0, 2, 1, 1,
+ 48, 7, 13, 0, 18, 2, 15, 3, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,
+103,101,116, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
+ 8, 73, 85, 80, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,116,121,112,101, 95,105,
+116,101,109, 0, 4, 0, 0, 0, 51, 0, 0, 0, 12, 64,105,117,112,108,117, 97,
+ 46,108,117, 97, 0, 0, 0, 0, 39, 3, 1, 15, 1, 13, 0, 2, 1, 1, 48, 25,
+ 13, 0, 18, 2, 15, 3, 32, 46, 7, 13, 0, 18, 2, 15, 4, 32, 46, 7, 13, 0,
+ 18, 2, 15, 5, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80,
+ 73, 84, 69, 77, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85,
+ 0, 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2,
+ 0, 0, 0, 14,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 0,
+ 0, 0, 55, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0,
+ 0, 0,105, 7,129, 13, 1, 7, 1, 16, 13, 2, 13, 0, 16, 13, 3, 44, 52, 29,
+ 15, 5, 15, 6, 13, 0, 16, 7, 1, 16, 2, 1, 1, 13, 2, 13, 4, 16, 23, 3,
+ 13, 3, 44, 52, 2, 1, 5, 5, 1, 15, 7, 13, 3, 2, 1, 1, 52, 11, 15, 8,
+ 13, 3, 13, 1, 3, 4, 2, 50, 38, 15, 9, 13, 3, 2, 1, 1, 52, 25, 15, 11,
+ 13, 2, 25, 11, 15, 13, 13, 3, 2, 1, 1, 13, 4, 25, 11, 13, 5, 1, 6, 5,
+ 2, 50, 4, 15, 14, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0,
+ 5,110, 97,109,101, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 4, 97,114,103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0,
+ 0, 10,102,117,108,108, 95,110, 97,109,101, 0, 2, 0, 0, 0, 9,115,116,114,
+108,111,119,101,114, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98,
+ 97, 99,107,115, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,
+105,111,110, 0, 2, 0, 0, 0, 5, 99, 97,108,108, 0, 2, 0, 0, 0, 12,116,
+121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 5,116,101,109,112,
+ 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,114,101,115,117,
+108,116, 0, 2, 0, 0, 0, 9,100,111,115,116,114,105,110,103, 0, 2, 0, 0,
+ 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11,105,117,112,
+ 83,101,116, 78, 97,109,101, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 64,105,117,
+112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 51, 7, 1, 15, 1, 15, 2, 13,
+ 0, 16, 18, 3, 2, 1, 1, 44, 52, 33, 15, 2, 13, 0, 16, 11, 3, 15, 4, 11,
+ 5, 15, 6, 13, 0, 2, 1, 1, 2, 1, 2, 26, 15, 7, 13, 0, 18, 3, 13, 0,
+ 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 7,104, 97,110,
+100,108,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103,
+ 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0,
+ 0, 0, 9, 73, 85, 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 7,102,111,114,
+109, 97,116, 0, 2, 0, 0, 0, 17, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77,
+ 69, 40, 37,115, 41, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103, 0,
+ 2, 0, 0, 0, 13, 73,117,112, 83,101,116, 72, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110,
+ 78, 97,109,101,115, 0, 4, 0, 0, 0, 88, 0, 0, 0, 12, 64,105,117,112,108,
+117, 97, 46,108,117, 97, 0, 0, 0, 0, 74, 5, 1, 13, 0, 18, 1, 18, 1, 15,
+ 2, 32, 52, 32, 7, 1, 50, 17, 15, 4, 13, 0, 13, 1, 16, 2, 0, 1, 13, 1,
+ 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 54, 24, 5, 1, 50, 28, 13, 0, 18, 1,
+ 15, 5, 32, 52, 12, 15, 4, 13, 0, 7, 1, 16, 2, 0, 1, 50, 7, 15, 6, 13,
+ 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 12, 67,
+ 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 2, 0, 0, 0, 2,105, 0, 2, 0,
+ 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110,
+ 78, 97,109,101,115, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0,
+ 2, 0, 0, 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0,
+ 7, 73,117,112, 82, 71, 66, 0, 4, 0, 0, 0,108, 0, 0, 0, 12, 64,105,117,
+112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 43, 7, 3, 15, 3, 13, 0, 7,
+255, 39, 2, 1, 1, 11, 4, 42, 15, 3, 13, 1, 7,255, 39, 2, 1, 1, 42, 11,
+ 4, 42, 15, 3, 13, 2, 7,255, 39, 2, 1, 1, 42, 1, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 2, 0, 0, 0, 4,114,101,100, 0, 2, 0, 0, 0, 6,103,114,
+101,101,110, 0, 2, 0, 0, 0, 5, 98,108,117,101, 0, 2, 0, 0, 0, 6,102,
+108,111,111,114, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112,
+ 0, 2, 0, 0, 0, 4, 82, 71, 66, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,
+103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 0, 0, 0,113, 0, 0,
+ 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 58, 10, 2,
+ 15, 2, 13, 0, 16, 44, 52, 43, 15, 4, 11, 5, 15, 6, 13, 1, 2, 1, 1, 42,
+ 2, 1, 1, 13, 2, 44, 52, 4, 15, 7, 23, 2, 15, 2, 13, 0, 22, 2, 11, 8,
+ 13, 2, 11, 0, 13, 0, 30, 1, 26, 5, 1, 13, 0, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 9, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0,
+ 9,116,121,112,101,110, 97,109,101, 0, 2, 0, 0, 0, 12,105,117,112, 95,104,
+ 97,110,100,108,101,115, 0, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 10,103,101,116,103,108,111, 98, 97,108, 0, 2, 0, 0, 0, 4, 73, 85, 80, 0,
+ 2, 0, 0, 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 15, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 12, 73,117,112, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,125,
+ 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 27,
+ 6, 1, 15, 2, 13, 0, 7, 1, 16, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1,
+ 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,
+111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0,
+ 13, 73,117,112, 71,101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,
+117,112, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, 2, 0,
+ 0, 0, 9, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,130, 0, 0, 0,
+ 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 24, 6, 1, 15,
+ 2, 13, 0, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, 2, 1, 1, 3, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2,
+ 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71,
+101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,103,
+105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 16, 73,117,112,
+ 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_be64.lo");
+}
diff --git a/iup/srclua3/loh/iuplua_le64.loh b/iup/srclua3/loh/iuplua_le64.loh
new file mode 100755
index 0000000..0e58b29
--- /dev/null
+++ b/iup/srclua3/loh/iuplua_le64.loh
@@ -0,0 +1,170 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/iuplua_le64.lo");
+*/
+/* ../obj/iuplua3/iuplua_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,105,117,112,108,117,
+ 97, 46,108,117, 97, 0, 0, 0, 0,122, 4, 0, 22, 0, 25, 0, 15, 1, 15, 2,
+ 11, 3, 15, 4, 2, 0, 3, 15, 1, 15, 2, 11, 5, 15, 6, 2, 0, 3, 15, 1,
+ 15, 7, 22, 0, 2, 1, 1, 11, 8, 15, 9, 2, 0, 3, 11, 11, 25, 10, 11, 13,
+ 25, 12, 11, 15, 25, 14, 11, 17, 25, 16, 11, 19, 25, 18, 11, 21, 25, 20, 11, 23,
+ 25, 22, 11, 25, 25, 24, 11, 27, 25, 26, 11, 29, 25, 28, 11, 31, 25, 30, 11, 33,
+ 25, 32, 15, 34, 11, 35, 15, 32, 26, 11, 37, 25, 36, 15, 34, 11, 38, 15, 36, 26,
+ 11, 40, 25, 39, 15, 34, 11, 41, 11, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 43,
+ 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0,
+ 0, 13,115,101,116,116, 97,103,109,101,116,104,111,100, 0, 2, 0, 0, 0, 11,
+105,117,112,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,103,101,116,116,
+ 97, 98,108,101, 0, 2, 0, 0, 0, 13,105,117,112, 95,103,101,116,116, 97, 98,
+108,101, 0, 2, 0, 0, 0, 9,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0,
+ 0, 13,105,117,112, 95,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, 0, 4,
+116, 97,103, 0, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 10,
+105,117,112, 95,105,110,100,101,120, 0, 2, 0, 0, 0, 7, 95, 65, 76, 69, 82,
+ 84, 0, 4, 0, 0, 0, 14, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,
+117, 97, 0, 0, 0, 0,125, 14, 1, 15, 2, 22, 3, 11, 3, 11, 4, 11, 5, 11,
+ 6, 11, 7, 11, 8, 30, 2, 2, 1, 1, 15, 10, 22, 4, 11, 11, 11, 12, 11, 13,
+ 11, 12, 11, 14, 13, 0, 11, 5, 11, 15, 30, 3, 2, 1, 1, 15, 17, 22, 5, 13,
+ 2, 13, 1, 29, 0, 2, 11, 18, 11, 19, 11, 20, 11, 21, 11, 22, 11, 23, 30, 2,
+ 2, 1, 1, 15, 25, 22, 5, 13, 3, 29, 0, 1, 11, 3, 11, 26, 11, 27, 13, 1,
+ 11, 28, 13, 1, 11, 29, 13, 1, 30, 3, 2, 1, 1, 13, 4, 20, 30, 15, 31, 15,
+ 31, 2, 0, 3, 13, 4, 20, 32, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 33,
+ 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 3, 98,116, 0, 2, 0, 0, 0, 10,
+105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0, 6,116,105,116,108,101,
+ 0, 2, 0, 0, 0, 3, 79,107, 0, 2, 0, 0, 0, 5,115,105,122,101, 0, 2,
+ 0, 0, 0, 3, 54, 48, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2,
+ 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69,
+ 0, 2, 0, 0, 0, 3,109,108, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108,
+116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2,
+ 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 9,114,101, 97,100,111,110,108,
+121, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8, 51, 48,
+ 48,120, 49, 53, 48, 0, 2, 0, 0, 0, 3,118, 98, 0, 2, 0, 0, 0, 8,105,
+117,112,118, 98,111,120, 0, 2, 0, 0, 0, 10, 97,108,105,103,110,109,101,110,
+116, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7,
+109, 97,114,103,105,110, 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0,
+ 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 3,
+100,103, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0, 2, 0,
+ 0, 0, 10, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, 11,100,101,
+102, 97,117,108,116,101,115, 99, 0, 2, 0, 0, 0, 13,100,101,102, 97,117,108,
+116,101,110,116,101,114, 0, 2, 0, 0, 0, 11,115,116, 97,114,116,102,111, 99,
+117,115, 0, 2, 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73,
+ 85, 80, 95, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8,100,101,115,116,114,
+111,121, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0,
+ 4, 0, 0, 0, 23, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97,
+ 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,
+116,121,112,101, 0, 2, 0, 0, 0, 7,115,116,114,105,110,103, 0, 2, 0, 0,
+ 0, 12,116,121,112,101, 95,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 27, 0,
+ 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3,
+ 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2,
+ 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 9,116,121,112,101,
+ 95,110,105,108, 0, 4, 0, 0, 0, 31, 0, 0, 0, 12, 64,105,117,112,108,117,
+ 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11,
+ 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 4,110,105,108, 0, 2,
+ 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,105,111,110, 0, 4, 0,
+ 0, 0, 35, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0,
+ 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,
+112,101, 0, 2, 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 2, 0, 0,
+ 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 0, 39, 0,
+ 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 20, 3,
+ 1, 13, 0, 52, 9, 15, 1, 13, 0, 16, 1, 1, 50, 4, 4, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2,119, 0, 2, 0, 0, 0, 12,105,
+117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 10,116,121,112,101,
+ 95,109,101,110,117, 0, 4, 0, 0, 0, 47, 0, 0, 0, 12, 64,105,117,112,108,
+117, 97, 46,108,117, 97, 0, 0, 0, 0, 21, 3, 1, 15, 1, 13, 0, 2, 1, 1,
+ 48, 7, 13, 0, 18, 2, 15, 3, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,
+103,101,116, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
+ 8, 73, 85, 80, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,116,121,112,101, 95,105,
+116,101,109, 0, 4, 0, 0, 0, 51, 0, 0, 0, 12, 64,105,117,112,108,117, 97,
+ 46,108,117, 97, 0, 0, 0, 0, 39, 3, 1, 15, 1, 13, 0, 2, 1, 1, 48, 25,
+ 13, 0, 18, 2, 15, 3, 32, 46, 7, 13, 0, 18, 2, 15, 4, 32, 46, 7, 13, 0,
+ 18, 2, 15, 5, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80,
+ 73, 84, 69, 77, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85,
+ 0, 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2,
+ 0, 0, 0, 14,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 0,
+ 0, 0, 55, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0,
+ 0, 0,105, 7,129, 13, 1, 7, 1, 16, 13, 2, 13, 0, 16, 13, 3, 44, 52, 29,
+ 15, 5, 15, 6, 13, 0, 16, 7, 1, 16, 2, 1, 1, 13, 2, 13, 4, 16, 23, 3,
+ 13, 3, 44, 52, 2, 1, 5, 5, 1, 15, 7, 13, 3, 2, 1, 1, 52, 11, 15, 8,
+ 13, 3, 13, 1, 3, 4, 2, 50, 38, 15, 9, 13, 3, 2, 1, 1, 52, 25, 15, 11,
+ 13, 2, 25, 11, 15, 13, 13, 3, 2, 1, 1, 13, 4, 25, 11, 13, 5, 1, 6, 5,
+ 2, 50, 4, 15, 14, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0,
+ 5,110, 97,109,101, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 4, 97,114,103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0,
+ 0, 10,102,117,108,108, 95,110, 97,109,101, 0, 2, 0, 0, 0, 9,115,116,114,
+108,111,119,101,114, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98,
+ 97, 99,107,115, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,
+105,111,110, 0, 2, 0, 0, 0, 5, 99, 97,108,108, 0, 2, 0, 0, 0, 12,116,
+121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 5,116,101,109,112,
+ 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,114,101,115,117,
+108,116, 0, 2, 0, 0, 0, 9,100,111,115,116,114,105,110,103, 0, 2, 0, 0,
+ 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11,105,117,112,
+ 83,101,116, 78, 97,109,101, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 64,105,117,
+112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 51, 7, 1, 15, 1, 15, 2, 13,
+ 0, 16, 18, 3, 2, 1, 1, 44, 52, 33, 15, 2, 13, 0, 16, 11, 3, 15, 4, 11,
+ 5, 15, 6, 13, 0, 2, 1, 1, 2, 1, 2, 26, 15, 7, 13, 0, 18, 3, 13, 0,
+ 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 7,104, 97,110,
+100,108,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103,
+ 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0,
+ 0, 0, 9, 73, 85, 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 7,102,111,114,
+109, 97,116, 0, 2, 0, 0, 0, 17, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77,
+ 69, 40, 37,115, 41, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103, 0,
+ 2, 0, 0, 0, 13, 73,117,112, 83,101,116, 72, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110,
+ 78, 97,109,101,115, 0, 4, 0, 0, 0, 88, 0, 0, 0, 12, 64,105,117,112,108,
+117, 97, 46,108,117, 97, 0, 0, 0, 0, 74, 5, 1, 13, 0, 18, 1, 18, 1, 15,
+ 2, 32, 52, 32, 7, 1, 50, 17, 15, 4, 13, 0, 13, 1, 16, 2, 0, 1, 13, 1,
+ 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 54, 24, 5, 1, 50, 28, 13, 0, 18, 1,
+ 15, 5, 32, 52, 12, 15, 4, 13, 0, 7, 1, 16, 2, 0, 1, 50, 7, 15, 6, 13,
+ 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 12, 67,
+ 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 2, 0, 0, 0, 2,105, 0, 2, 0,
+ 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110,
+ 78, 97,109,101,115, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0,
+ 2, 0, 0, 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0,
+ 7, 73,117,112, 82, 71, 66, 0, 4, 0, 0, 0,108, 0, 0, 0, 12, 64,105,117,
+112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 43, 7, 3, 15, 3, 13, 0, 7,
+255, 39, 2, 1, 1, 11, 4, 42, 15, 3, 13, 1, 7,255, 39, 2, 1, 1, 42, 11,
+ 4, 42, 15, 3, 13, 2, 7,255, 39, 2, 1, 1, 42, 1, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 2, 0, 0, 0, 4,114,101,100, 0, 2, 0, 0, 0, 6,103,114,
+101,101,110, 0, 2, 0, 0, 0, 5, 98,108,117,101, 0, 2, 0, 0, 0, 6,102,
+108,111,111,114, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112,
+ 0, 2, 0, 0, 0, 4, 82, 71, 66, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,
+103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 0, 0, 0,113, 0, 0,
+ 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 58, 10, 2,
+ 15, 2, 13, 0, 16, 44, 52, 43, 15, 4, 11, 5, 15, 6, 13, 1, 2, 1, 1, 42,
+ 2, 1, 1, 13, 2, 44, 52, 4, 15, 7, 23, 2, 15, 2, 13, 0, 22, 2, 11, 8,
+ 13, 2, 11, 0, 13, 0, 30, 1, 26, 5, 1, 13, 0, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 9, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0,
+ 9,116,121,112,101,110, 97,109,101, 0, 2, 0, 0, 0, 12,105,117,112, 95,104,
+ 97,110,100,108,101,115, 0, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 10,103,101,116,103,108,111, 98, 97,108, 0, 2, 0, 0, 0, 4, 73, 85, 80, 0,
+ 2, 0, 0, 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 15, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 12, 73,117,112, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,125,
+ 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 27,
+ 6, 1, 15, 2, 13, 0, 7, 1, 16, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1,
+ 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,
+111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0,
+ 13, 73,117,112, 71,101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,
+117,112, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, 2, 0,
+ 0, 0, 9, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,130, 0, 0, 0,
+ 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 24, 6, 1, 15,
+ 2, 13, 0, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, 2, 1, 1, 3, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2,
+ 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71,
+101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,103,
+105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 16, 73,117,112,
+ 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_le64.lo");
+}
diff --git a/iup/srclua3/loh/iuplua_le64w.loh b/iup/srclua3/loh/iuplua_le64w.loh
new file mode 100755
index 0000000..6755c03
--- /dev/null
+++ b/iup/srclua3/loh/iuplua_le64w.loh
@@ -0,0 +1,170 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/iuplua_le64w.lo");
+*/
+/* ../obj/iuplua3/iuplua_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,105,117,112,108,117,
+ 97, 46,108,117, 97, 0, 0, 0, 0,122, 4, 0, 22, 0, 25, 0, 15, 1, 15, 2,
+ 11, 3, 15, 4, 2, 0, 3, 15, 1, 15, 2, 11, 5, 15, 6, 2, 0, 3, 15, 1,
+ 15, 7, 22, 0, 2, 1, 1, 11, 8, 15, 9, 2, 0, 3, 11, 11, 25, 10, 11, 13,
+ 25, 12, 11, 15, 25, 14, 11, 17, 25, 16, 11, 19, 25, 18, 11, 21, 25, 20, 11, 23,
+ 25, 22, 11, 25, 25, 24, 11, 27, 25, 26, 11, 29, 25, 28, 11, 31, 25, 30, 11, 33,
+ 25, 32, 15, 34, 11, 35, 15, 32, 26, 11, 37, 25, 36, 15, 34, 11, 38, 15, 36, 26,
+ 11, 40, 25, 39, 15, 34, 11, 41, 11, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 43,
+ 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0,
+ 0, 13,115,101,116,116, 97,103,109,101,116,104,111,100, 0, 2, 0, 0, 0, 11,
+105,117,112,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,103,101,116,116,
+ 97, 98,108,101, 0, 2, 0, 0, 0, 13,105,117,112, 95,103,101,116,116, 97, 98,
+108,101, 0, 2, 0, 0, 0, 9,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0,
+ 0, 13,105,117,112, 95,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, 0, 4,
+116, 97,103, 0, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 10,
+105,117,112, 95,105,110,100,101,120, 0, 2, 0, 0, 0, 7, 95, 65, 76, 69, 82,
+ 84, 0, 4, 0, 0, 0, 14, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,
+117, 97, 0, 0, 0, 0,125, 14, 1, 15, 2, 22, 3, 11, 3, 11, 4, 11, 5, 11,
+ 6, 11, 7, 11, 8, 30, 2, 2, 1, 1, 15, 10, 22, 4, 11, 11, 11, 12, 11, 13,
+ 11, 12, 11, 14, 13, 0, 11, 5, 11, 15, 30, 3, 2, 1, 1, 15, 17, 22, 5, 13,
+ 2, 13, 1, 29, 0, 2, 11, 18, 11, 19, 11, 20, 11, 21, 11, 22, 11, 23, 30, 2,
+ 2, 1, 1, 15, 25, 22, 5, 13, 3, 29, 0, 1, 11, 3, 11, 26, 11, 27, 13, 1,
+ 11, 28, 13, 1, 11, 29, 13, 1, 30, 3, 2, 1, 1, 13, 4, 20, 30, 15, 31, 15,
+ 31, 2, 0, 3, 13, 4, 20, 32, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 33,
+ 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 3, 98,116, 0, 2, 0, 0, 0, 10,
+105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0, 6,116,105,116,108,101,
+ 0, 2, 0, 0, 0, 3, 79,107, 0, 2, 0, 0, 0, 5,115,105,122,101, 0, 2,
+ 0, 0, 0, 3, 54, 48, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2,
+ 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69,
+ 0, 2, 0, 0, 0, 3,109,108, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108,
+116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2,
+ 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 9,114,101, 97,100,111,110,108,
+121, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8, 51, 48,
+ 48,120, 49, 53, 48, 0, 2, 0, 0, 0, 3,118, 98, 0, 2, 0, 0, 0, 8,105,
+117,112,118, 98,111,120, 0, 2, 0, 0, 0, 10, 97,108,105,103,110,109,101,110,
+116, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7,
+109, 97,114,103,105,110, 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0,
+ 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 3,
+100,103, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0, 2, 0,
+ 0, 0, 10, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, 11,100,101,
+102, 97,117,108,116,101,115, 99, 0, 2, 0, 0, 0, 13,100,101,102, 97,117,108,
+116,101,110,116,101,114, 0, 2, 0, 0, 0, 11,115,116, 97,114,116,102,111, 99,
+117,115, 0, 2, 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73,
+ 85, 80, 95, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8,100,101,115,116,114,
+111,121, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0,
+ 4, 0, 0, 0, 23, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97,
+ 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,
+116,121,112,101, 0, 2, 0, 0, 0, 7,115,116,114,105,110,103, 0, 2, 0, 0,
+ 0, 12,116,121,112,101, 95,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 27, 0,
+ 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3,
+ 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2,
+ 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 9,116,121,112,101,
+ 95,110,105,108, 0, 4, 0, 0, 0, 31, 0, 0, 0, 12, 64,105,117,112,108,117,
+ 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11,
+ 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 4,110,105,108, 0, 2,
+ 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,105,111,110, 0, 4, 0,
+ 0, 0, 35, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0,
+ 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,
+112,101, 0, 2, 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 2, 0, 0,
+ 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 0, 39, 0,
+ 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 20, 3,
+ 1, 13, 0, 52, 9, 15, 1, 13, 0, 16, 1, 1, 50, 4, 4, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2,119, 0, 2, 0, 0, 0, 12,105,
+117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 10,116,121,112,101,
+ 95,109,101,110,117, 0, 4, 0, 0, 0, 47, 0, 0, 0, 12, 64,105,117,112,108,
+117, 97, 46,108,117, 97, 0, 0, 0, 0, 21, 3, 1, 15, 1, 13, 0, 2, 1, 1,
+ 48, 7, 13, 0, 18, 2, 15, 3, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,
+103,101,116, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
+ 8, 73, 85, 80, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,116,121,112,101, 95,105,
+116,101,109, 0, 4, 0, 0, 0, 51, 0, 0, 0, 12, 64,105,117,112,108,117, 97,
+ 46,108,117, 97, 0, 0, 0, 0, 39, 3, 1, 15, 1, 13, 0, 2, 1, 1, 48, 25,
+ 13, 0, 18, 2, 15, 3, 32, 46, 7, 13, 0, 18, 2, 15, 4, 32, 46, 7, 13, 0,
+ 18, 2, 15, 5, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80,
+ 73, 84, 69, 77, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85,
+ 0, 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2,
+ 0, 0, 0, 14,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 0,
+ 0, 0, 55, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0,
+ 0, 0,105, 7,129, 13, 1, 7, 1, 16, 13, 2, 13, 0, 16, 13, 3, 44, 52, 29,
+ 15, 5, 15, 6, 13, 0, 16, 7, 1, 16, 2, 1, 1, 13, 2, 13, 4, 16, 23, 3,
+ 13, 3, 44, 52, 2, 1, 5, 5, 1, 15, 7, 13, 3, 2, 1, 1, 52, 11, 15, 8,
+ 13, 3, 13, 1, 3, 4, 2, 50, 38, 15, 9, 13, 3, 2, 1, 1, 52, 25, 15, 11,
+ 13, 2, 25, 11, 15, 13, 13, 3, 2, 1, 1, 13, 4, 25, 11, 13, 5, 1, 6, 5,
+ 2, 50, 4, 15, 14, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0,
+ 5,110, 97,109,101, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 4, 97,114,103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0,
+ 0, 10,102,117,108,108, 95,110, 97,109,101, 0, 2, 0, 0, 0, 9,115,116,114,
+108,111,119,101,114, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98,
+ 97, 99,107,115, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,
+105,111,110, 0, 2, 0, 0, 0, 5, 99, 97,108,108, 0, 2, 0, 0, 0, 12,116,
+121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 5,116,101,109,112,
+ 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,114,101,115,117,
+108,116, 0, 2, 0, 0, 0, 9,100,111,115,116,114,105,110,103, 0, 2, 0, 0,
+ 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11,105,117,112,
+ 83,101,116, 78, 97,109,101, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 64,105,117,
+112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 51, 7, 1, 15, 1, 15, 2, 13,
+ 0, 16, 18, 3, 2, 1, 1, 44, 52, 33, 15, 2, 13, 0, 16, 11, 3, 15, 4, 11,
+ 5, 15, 6, 13, 0, 2, 1, 1, 2, 1, 2, 26, 15, 7, 13, 0, 18, 3, 13, 0,
+ 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 7,104, 97,110,
+100,108,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103,
+ 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0,
+ 0, 0, 9, 73, 85, 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 7,102,111,114,
+109, 97,116, 0, 2, 0, 0, 0, 17, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77,
+ 69, 40, 37,115, 41, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103, 0,
+ 2, 0, 0, 0, 13, 73,117,112, 83,101,116, 72, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110,
+ 78, 97,109,101,115, 0, 4, 0, 0, 0, 88, 0, 0, 0, 12, 64,105,117,112,108,
+117, 97, 46,108,117, 97, 0, 0, 0, 0, 74, 5, 1, 13, 0, 18, 1, 18, 1, 15,
+ 2, 32, 52, 32, 7, 1, 50, 17, 15, 4, 13, 0, 13, 1, 16, 2, 0, 1, 13, 1,
+ 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 54, 24, 5, 1, 50, 28, 13, 0, 18, 1,
+ 15, 5, 32, 52, 12, 15, 4, 13, 0, 7, 1, 16, 2, 0, 1, 50, 7, 15, 6, 13,
+ 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 12, 67,
+ 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 2, 0, 0, 0, 2,105, 0, 2, 0,
+ 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110,
+ 78, 97,109,101,115, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0,
+ 2, 0, 0, 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0,
+ 7, 73,117,112, 82, 71, 66, 0, 4, 0, 0, 0,108, 0, 0, 0, 12, 64,105,117,
+112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 43, 7, 3, 15, 3, 13, 0, 7,
+255, 39, 2, 1, 1, 11, 4, 42, 15, 3, 13, 1, 7,255, 39, 2, 1, 1, 42, 11,
+ 4, 42, 15, 3, 13, 2, 7,255, 39, 2, 1, 1, 42, 1, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 2, 0, 0, 0, 4,114,101,100, 0, 2, 0, 0, 0, 6,103,114,
+101,101,110, 0, 2, 0, 0, 0, 5, 98,108,117,101, 0, 2, 0, 0, 0, 6,102,
+108,111,111,114, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112,
+ 0, 2, 0, 0, 0, 4, 82, 71, 66, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,
+103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 0, 0, 0,113, 0, 0,
+ 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 58, 10, 2,
+ 15, 2, 13, 0, 16, 44, 52, 43, 15, 4, 11, 5, 15, 6, 13, 1, 2, 1, 1, 42,
+ 2, 1, 1, 13, 2, 44, 52, 4, 15, 7, 23, 2, 15, 2, 13, 0, 22, 2, 11, 8,
+ 13, 2, 11, 0, 13, 0, 30, 1, 26, 5, 1, 13, 0, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 9, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0,
+ 9,116,121,112,101,110, 97,109,101, 0, 2, 0, 0, 0, 12,105,117,112, 95,104,
+ 97,110,100,108,101,115, 0, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 10,103,101,116,103,108,111, 98, 97,108, 0, 2, 0, 0, 0, 4, 73, 85, 80, 0,
+ 2, 0, 0, 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 15, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 12, 73,117,112, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,125,
+ 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 27,
+ 6, 1, 15, 2, 13, 0, 7, 1, 16, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1,
+ 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,
+111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0,
+ 13, 73,117,112, 71,101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,
+117,112, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, 2, 0,
+ 0, 0, 9, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,130, 0, 0, 0,
+ 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 24, 6, 1, 15,
+ 2, 13, 0, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, 2, 1, 1, 3, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2,
+ 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71,
+101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,103,
+105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 16, 73,117,112,
+ 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_le64w.lo");
+}
diff --git a/iup/srclua3/loh/iuplua_widgets.loh b/iup/srclua3/loh/iuplua_widgets.loh
new file mode 100755
index 0000000..efaed40
--- /dev/null
+++ b/iup/srclua3/loh/iuplua_widgets.loh
@@ -0,0 +1,939 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/iuplua_widgets.lo");
+*/
+/* ../obj/iuplua3/iuplua_widgets.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 20, 64,105,117,112,108,117,
+ 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 7,202, 67, 0,
+ 22, 1, 11, 1, 22, 0, 30, 0, 25, 0, 15, 0, 11, 2, 11, 3, 26, 15, 0, 11,
+ 4, 11, 5, 26, 15, 0, 11, 6, 11, 7, 26, 15, 0, 11, 8, 11, 9, 26, 15, 0,
+ 11, 10, 11, 11, 26, 15, 0, 11, 12, 11, 13, 26, 15, 0, 11, 14, 11, 15, 26, 15,
+ 0, 11, 16, 11, 17, 26, 15, 0, 11, 18, 11, 19, 26, 15, 0, 11, 20, 11, 21, 26,
+ 15, 0, 11, 22, 11, 23, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 24, 15, 24, 11,
+ 26, 11, 27, 26, 11, 29, 25, 28, 15, 30, 11, 31, 15, 28, 26, 22, 1, 11, 25, 15,
+ 0, 30, 0, 25, 32, 15, 32, 11, 26, 11, 33, 26, 11, 35, 25, 34, 15, 30, 11, 36,
+ 15, 34, 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1,
+ 25, 37, 15, 37, 11, 26, 11, 39, 26, 15, 37, 11, 40, 11, 41, 26, 15, 37, 11, 42,
+ 11, 43, 26, 15, 37, 11, 44, 11, 45, 26, 11, 47, 25, 46, 15, 30, 11, 48, 15, 46,
+ 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1, 25, 49,
+ 15, 49, 11, 26, 11, 50, 26, 11, 52, 25, 51, 15, 30, 11, 53, 15, 51, 26, 11, 55,
+ 25, 54, 11, 57, 25, 56, 11, 59, 25, 58, 22, 1, 11, 25, 15, 0, 30, 0, 25, 60,
+ 15, 60, 11, 4, 11, 61, 26, 15, 60, 11, 26, 11, 62, 26, 11, 64, 25, 63, 15, 30,
+ 11, 65, 15, 63, 26, 15, 66, 11, 44, 11, 67, 26, 22, 1, 11, 25, 15, 0, 30, 0,
+ 25, 68, 15, 68, 11, 4, 11, 69, 26, 15, 68, 11, 26, 11, 70, 26, 22, 1, 11, 25,
+ 15, 68, 30, 0, 25, 71, 15, 71, 11, 72, 11, 73, 26, 11, 75, 25, 74, 15, 30, 11,
+ 76, 15, 74, 26, 11, 78, 25, 77, 11, 80, 25, 79, 22, 1, 11, 25, 15, 68, 30, 0,
+ 25, 81, 15, 81, 11, 72, 11, 82, 26, 11, 84, 25, 83, 15, 30, 11, 85, 15, 83, 26,
+ 11, 87, 25, 86, 22, 1, 11, 25, 15, 68, 30, 0, 25, 88, 15, 88, 11, 72, 11, 89,
+ 26, 11, 91, 25, 90, 15, 30, 11, 92, 15, 90, 26, 22, 1, 11, 25, 15, 0, 30, 0,
+ 25, 93, 15, 93, 11, 26, 11, 94, 26, 11, 96, 25, 95, 15, 30, 11, 97, 15, 95, 26,
+ 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 11,100, 15,101, 30, 0, 30, 1, 25, 98,
+ 15, 98, 11, 26, 11,102, 26, 11,104, 25,103, 15, 30, 11,105, 15,103, 26, 22, 1,
+ 11, 25, 15, 0, 30, 0, 25,106, 15,106, 11, 26, 11,107, 26, 11,109, 25,108, 15,
+ 30, 11,110, 15,108, 26, 22, 1, 11, 25, 15,112, 30, 0, 25,111, 15,111, 11, 26,
+ 11,113, 26, 11,115, 25,114, 15, 30, 11,116, 15,114, 26, 22, 2, 11, 25, 15, 0,
+ 11, 99, 22, 1, 11,118, 15,101, 30, 0, 30, 1, 25,117, 15,117, 11, 26, 11,119,
+ 26, 11,121, 25,120, 15, 30, 11,122, 15,120, 26, 22, 1, 11, 25, 15,124, 30, 0,
+ 25,123, 15,123, 11, 26, 11,125, 26, 11,127, 25,126, 15, 30, 11,128, 15,126, 26,
+ 22, 1, 11, 25, 15,124, 30, 0, 25,129, 15,129, 11, 26, 11,130, 26, 11,132, 25,
+131, 15, 30, 11,133, 15,131, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 2, 15,135,
+ 29, 0, 1, 11,136, 15,101, 30, 0, 30, 1, 25,134, 15,134, 11, 26, 11,137, 26,
+ 11,139, 25,138, 15, 30, 11,140, 15,138, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,
+141, 15,141, 11, 26, 11,142, 26, 11,144, 25,143, 15, 30, 11,145, 15,143, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,146, 15,146, 11, 44, 11,147, 26, 15,146, 11, 26,
+ 11,148, 26, 11,150, 25,149, 15, 30, 11,151, 15,149, 26, 22, 1, 11, 25, 15, 0,
+ 30, 0, 25,152, 15,152, 11, 44, 11,153, 26, 15,152, 11, 26, 11,154, 26, 11,156,
+ 25,155, 15, 30, 11,157, 15,155, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,158, 15,
+158, 11, 44, 11,159, 26, 15,158, 11, 26, 11,160, 26, 11,162, 25,161, 15, 30, 11,
+163, 15,161, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,164, 15,164, 11, 44, 11,165,
+ 26, 15,164, 11, 26, 11,166, 26, 11,168, 25,167, 15, 30, 11,169, 15,167, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,170, 15,170, 11, 26, 11,171, 26, 11,173, 25,172,
+ 15, 30, 11,174, 15,172, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,175, 15,175, 11,
+ 4, 11,176, 26, 15,175, 11, 26, 11,177, 26, 11,179, 25,178, 15, 30, 11,180, 15,
+178, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 15,182, 29, 0, 1, 30, 1, 25,
+181, 15,181, 11, 26, 11,183, 26, 11,185, 25,184, 15, 30, 11,186, 15,184, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,187, 15,187, 11, 26, 11,188, 26, 11,190, 25,189,
+ 15, 30, 11,191, 15,189, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,192, 15,192, 11,
+ 26, 11,193, 26, 15,192, 11, 8, 11,194, 26, 15,192, 11, 10, 11,195, 26, 11,197,
+ 25,196, 15, 30, 11,198, 15,196, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,199, 15,
+199, 11, 4, 11,201, 26, 15,199, 11, 26, 11,202, 26, 11,204, 25,203, 15, 30, 11,
+205, 15,203, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,206, 15,206, 11, 26, 11,207,
+ 26, 11,209, 25,208, 15, 30, 11,210, 15,208, 26, 22, 1, 11, 25, 15,200, 30, 0,
+ 25,211, 15,211, 11, 26, 11,212, 26, 11,214, 25,213, 15, 30, 11,215, 15,213, 26,
+ 22, 1, 11, 25, 15,200, 30, 0, 25,216, 15,216, 11, 26, 11,217, 26, 11,219, 25,
+218, 15, 30, 11,220, 15,218, 26, 22, 33, 11,222, 22, 2, 11,223, 4, 0, 29, 0,
+ 2, 11,224, 22, 2, 11,225, 4, 0, 29, 0, 2, 11,226, 22, 2, 11,227, 15,228,
+ 29, 0, 2, 11,229, 22, 2, 11,230, 15,231, 29, 0, 2, 11,232, 22, 2, 11,233,
+ 15,234, 29, 0, 2, 11,235, 22, 2, 11,236, 15,237, 29, 0, 2, 11,238, 22, 2,
+ 11,239, 15,240, 29, 0, 2, 11,241, 22, 2, 11,242, 15,243, 29, 0, 2, 11,244,
+ 22, 2, 11,245, 15,246, 29, 0, 2, 11,247, 22, 2, 11,248, 15,249, 29, 0, 2,
+ 11,250, 22, 2, 11,251, 15,252, 29, 0, 2, 11,253, 22, 2, 11,254, 15,255, 29,
+ 0, 2, 10, 1, 0, 22, 2, 10, 1, 1, 14, 1, 2, 29, 0, 2, 10, 1, 3, 22,
+ 2, 10, 1, 4, 14, 1, 5, 29, 0, 2, 10, 1, 6, 22, 2, 10, 1, 7, 14, 1,
+ 8, 29, 0, 2, 10, 1, 9, 22, 2, 10, 1, 10, 14, 1, 11, 29, 0, 2, 10, 1,
+ 12, 22, 2, 10, 1, 13, 14, 1, 14, 29, 0, 2, 10, 1, 15, 22, 2, 10, 1, 16,
+ 14, 1, 17, 29, 0, 2, 10, 1, 18, 22, 2, 10, 1, 19, 14, 1, 20, 29, 0, 2,
+ 10, 1, 21, 22, 2, 10, 1, 22, 14, 1, 23, 29, 0, 2, 10, 1, 24, 22, 2, 10,
+ 1, 25, 14, 1, 26, 29, 0, 2, 11,105, 22, 2, 10, 1, 27, 14, 1, 28, 29, 0,
+ 2, 10, 1, 29, 22, 2, 10, 1, 30, 14, 1, 31, 29, 0, 2, 10, 1, 32, 22, 2,
+ 10, 1, 30, 14, 1, 33, 29, 0, 2, 10, 1, 34, 22, 2, 10, 1, 35, 14, 1, 36,
+ 29, 0, 2, 10, 1, 37, 22, 2, 10, 1, 38, 14, 1, 39, 29, 0, 2, 10, 1, 40,
+ 22, 2, 10, 1, 41, 14, 1, 42, 29, 0, 2, 10, 1, 43, 22, 2, 10, 1, 44, 14,
+ 1, 45, 29, 0, 2, 10, 1, 46, 22, 2, 10, 1, 47, 14, 1, 48, 29, 0, 2, 10,
+ 1, 49, 22, 2, 10, 1, 50, 14, 1, 51, 29, 0, 2, 10, 1, 52, 22, 2, 10, 1,
+ 53, 14, 1, 54, 29, 0, 2, 10, 1, 55, 22, 2, 10, 1, 56, 14, 1, 57, 29, 0,
+ 2, 30, 31, 10, 1, 58, 22, 2, 10, 1, 59, 14, 1, 60, 29, 0, 2, 30, 0, 25,
+221, 15,221, 18,222, 11,128, 14, 1, 61, 26, 15,221, 18,222, 11,116, 14, 1, 62,
+ 26, 15,221, 18,222, 11,110, 14, 1, 62, 26, 15,221, 18,222, 11,105, 14, 1, 63,
+ 26, 15,221, 18,222, 11,198, 14, 1, 64, 26, 15,221, 18,222, 11,133, 14, 1, 63,
+ 26, 15,221, 18,222, 11,191, 14, 1, 65, 26, 15,221, 18,224, 11, 31, 14, 1, 66,
+ 26, 15,221, 10, 1, 67, 15,221, 18,224, 26, 15,221, 10, 1, 68, 15,221, 18,226,
+ 26, 15,221, 10, 1, 69, 15,221, 18,229, 26, 15,221, 10, 1, 70, 15,221, 18,232,
+ 26, 15,221, 11,235, 15,221, 18,235, 26, 15,221, 10, 1, 71, 15,221, 18,238, 26,
+ 15,221, 10, 1, 72, 15,221, 18,241, 26, 15,221, 10, 1, 73, 15,221, 18,244, 26,
+ 15,221, 10, 1, 74, 15,221, 18,247, 26, 15,221, 10, 1, 75, 15,221, 18,250, 26,
+ 15,221, 10, 1, 76, 15,221, 18,253, 26, 15,221, 10, 1, 77, 15,221, 17, 1, 0,
+ 26, 15,221, 10, 1, 78, 15,221, 17, 1, 3, 26, 15,221, 10, 1, 79, 15,221, 17,
+ 1, 6, 26, 15,221, 10, 1, 80, 15,221, 17, 1, 9, 26, 15,221, 10, 1, 81, 15,
+221, 17, 1, 12, 26, 15,221, 10, 1, 82, 15,221, 17, 1, 15, 26, 15,221, 10, 1,
+ 83, 15,221, 17, 1, 18, 26, 15,221, 10, 1, 84, 15,221, 17, 1, 21, 26, 15,221,
+ 10, 1, 85, 15,221, 17, 1, 24, 26, 15,221, 10, 1, 86, 15,221, 18,105, 26, 15,
+221, 10, 1, 87, 15,221, 17, 1, 29, 26, 15,221, 10, 1, 88, 15,221, 17, 1, 32,
+ 26, 15,221, 10, 1, 89, 15,221, 17, 1, 34, 26, 15,221, 10, 1, 90, 15,221, 17,
+ 1, 37, 26, 15,221, 10, 1, 91, 15,221, 17, 1, 40, 26, 15,221, 10, 1, 92, 15,
+221, 17, 1, 43, 26, 15,221, 10, 1, 93, 15,221, 17, 1, 46, 26, 15,221, 10, 1,
+ 94, 15,221, 17, 1, 52, 26, 15,221, 10, 1, 95, 15,221, 17, 1, 49, 26, 15,221,
+ 10, 1, 96, 15,221, 17, 1, 55, 26, 15,221, 10, 1, 97, 15,221, 17, 1, 58, 26,
+ 15,221, 10, 1, 98, 15,221, 17, 1, 99, 26, 0, 0, 0, 0, 0, 0, 0, 1,100,
+ 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 5,116,121,112,
+101, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 4,
+ 0, 0, 0, 12, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 57, 7, 2, 13, 1, 11, 1, 13, 0,
+ 26, 13, 0, 20, 3, 13, 1, 2, 0, 2, 13, 1, 11, 4, 13, 0, 20, 5, 13, 1,
+ 2, 1, 2, 26, 13, 0, 20, 6, 13, 1, 2, 0, 2, 15, 7, 13, 1, 18, 4, 13,
+ 1, 26, 13, 1, 18, 4, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, 99,104,101, 99,107, 80, 97,
+114, 97,109,115, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0,
+ 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 2,
+ 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 2, 0,
+ 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 12,
+ 99,104,101, 99,107, 80, 97,114, 97,109,115, 0, 4, 0, 0, 0, 32, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 61, 8, 2, 13, 0, 18, 1, 15, 5, 13, 2, 4, 0, 2, 2, 2,
+ 50, 39, 13, 4, 13, 1, 13, 3, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13,
+ 3, 42, 11, 8, 42, 2, 0, 1, 15, 5, 13, 2, 13, 3, 2, 2, 2, 23, 4, 23,
+ 3, 13, 3, 54, 43, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 5,115,101,
+108,102, 0, 2, 0, 0, 0, 6,112, 97,114, 97,109, 0, 2, 0, 0, 0, 5,102,
+117,110, 99, 0, 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,101,
+114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32,
+ 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,
+117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,
+105,122,101,100, 0, 2, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,
+116,101,115, 0, 4, 0, 0, 0, 43, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 80, 9, 2, 22,
+ 0, 15, 3, 13, 1, 4, 0, 2, 1, 2, 50, 18, 13, 2, 13, 3, 7, 1, 26, 15,
+ 3, 13, 1, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 22, 15, 3, 13, 2, 4, 0,
+ 2, 1, 2, 23, 3, 50, 25, 13, 1, 20, 4, 13, 3, 13, 1, 13, 3, 16, 2, 0,
+ 3, 15, 3, 13, 2, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 29, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 5,116,
+101,109,112, 0, 2, 0, 0, 0, 2,102, 0, 2, 0, 0, 0, 5,110,101,120,116,
+ 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, 0, 0, 0, 4,103,101,116, 0, 4,
+ 0, 0, 0, 57, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 82, 6, 2, 15, 1, 13, 1, 2, 1,
+ 1, 52, 63, 15, 2, 13, 1, 16, 52, 9, 13, 0, 13, 1, 16, 1, 2, 50, 47, 15,
+ 5, 13, 1, 2, 1, 1, 15, 7, 13, 0, 18, 8, 13, 2, 2, 1, 2, 13, 3, 52,
+ 23, 15, 9, 13, 3, 2, 1, 1, 13, 4, 52, 6, 13, 4, 1, 5, 50, 4, 13, 3,
+ 1, 5, 5, 1, 5, 2, 13, 0, 13, 1, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 10, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 12,116,121,
+112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99,
+ 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2,
+ 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115,116,114,117,112,
+112,101,114, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 16,
+ 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0,
+ 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71,101,116, 72,
+ 97,110,100,108,101, 0, 2, 0, 0, 0, 4,115,101,116, 0, 4, 0, 0, 0, 77,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0,228, 11, 3, 15, 2, 13, 1, 2, 1, 1, 52,209, 15,
+ 4, 13, 1, 2, 1, 1, 15, 6, 13, 1, 16, 13, 1, 11, 7, 32, 48, 12, 15, 8,
+ 13, 0, 18, 10, 2, 1, 1, 11, 11, 32, 52, 4, 4, 0, 23, 4, 13, 4, 52, 55,
+ 13, 4, 7, 2, 16, 13, 5, 44, 52, 14, 13, 4, 15, 8, 13, 0, 18, 10, 2, 1,
+ 1, 16, 23, 5, 15, 13, 13, 0, 18, 10, 13, 4, 7, 1, 16, 13, 5, 13, 2, 2,
+ 0, 4, 13, 0, 13, 1, 13, 2, 26, 1, 6, 5, 1, 50,111, 15, 2, 13, 2, 2,
+ 1, 1, 46, 7, 15, 14, 13, 2, 2, 1, 1, 52, 17, 15, 15, 13, 0, 18, 10, 13,
+ 3, 13, 2, 2, 0, 3, 1, 5, 50, 76, 15, 16, 13, 2, 2, 1, 1, 52, 34, 15,
+ 18, 13, 0, 18, 10, 13, 3, 2, 1, 2, 13, 5, 52, 15, 15, 15, 13, 0, 18, 10,
+ 13, 3, 13, 2, 2, 0, 3, 1, 6, 5, 1, 50, 33, 15, 19, 13, 2, 2, 1, 1,
+ 52, 24, 15, 20, 13, 2, 2, 0, 1, 15, 15, 13, 0, 18, 10, 13, 3, 13, 2, 18,
+ 21, 2, 0, 3, 1, 5, 5, 2, 13, 0, 13, 1, 13, 2, 26, 0, 0, 0, 0, 0,
+ 0, 0, 0, 22, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 6,
+118, 97,108,117,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,
+110,103, 0, 2, 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115,
+116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 3, 99, 98, 0, 2, 0, 0, 0,
+ 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 7,
+114,101,115,105,122,101, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 67,108,
+ 97,115,115, 78, 97,109,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0,
+ 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,
+103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, 0, 15,105,117,112,
+ 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0, 2, 0, 0, 0, 12,116,121,112,
+101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116,
+ 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,116,121,112,101, 95,
+110,105,108, 0, 2, 0, 0, 0, 10,111,108,100, 95,118, 97,108,117,101, 0, 2,
+ 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0,
+ 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0,
+ 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 9, 73, 85,
+ 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111,
+121, 0, 4, 0, 0, 0,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 89, 6, 1, 7, 1, 13,
+ 0, 13, 1, 16, 50, 66, 15, 3, 13, 2, 2, 1, 1, 48, 4, 13, 2, 18, 4, 52,
+ 37, 13, 2, 18, 4, 13, 0, 32, 52, 16, 13, 2, 11, 4, 4, 0, 26, 13, 2, 20,
+ 5, 2, 0, 1, 50, 12, 15, 6, 11, 7, 2, 0, 1, 15, 8, 2, 0, 0, 13, 1,
+ 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 23, 2, 13, 2, 54, 70, 15, 9, 13, 0,
+ 4, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 2,105, 0, 2,
+ 0, 0, 0, 5,101,108,101,109, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2,
+ 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0,
+ 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 10,114, 95,100,
+101,115,116,114,111,121, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0,
+ 0, 0, 29, 73,110,116,101,114,110, 97,108, 32,116, 97, 98,108,101, 32,105,110,
+ 99,111,110,115,105,115,116,101,110, 99,121, 0, 2, 0, 0, 0, 5,101,120,105,
+116, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2,
+ 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0,133, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 17, 3, 1, 13, 0, 20, 1, 2, 0, 1, 15, 2, 13, 0, 2, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111,121, 0, 2, 0, 0, 0, 11,
+ 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 7,100,101,116, 97,
+ 99,104, 0, 4, 0, 0, 0,138, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 96, 8, 1, 15, 0,
+ 13, 0, 2, 0, 1, 13, 0, 18, 3, 13, 1, 52, 78, 13, 0, 11, 3, 4, 0, 26,
+ 7, 1, 50, 58, 13, 1, 13, 2, 16, 13, 0, 32, 52, 41, 50, 20, 13, 1, 13, 2,
+ 13, 1, 13, 2, 7, 1, 37, 16, 26, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2,
+ 7, 1, 37, 16, 54, 30, 13, 1, 13, 2, 4, 0, 26, 1, 3, 13, 2, 7, 1, 37,
+ 23, 2, 13, 1, 13, 2, 16, 54, 65, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 2, 0, 0, 0, 10, 73,117,112, 68,101,116, 97, 99,104, 0, 2, 0, 0, 0, 5,
+115,101,108,102, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0,
+ 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 2,105, 0,
+ 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0,158, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 75, 6, 2, 15, 1, 13, 0, 13, 1, 2, 1, 2, 52, 57, 13, 1,
+ 11, 3, 13, 0, 26, 7, 1, 50, 21, 13, 0, 13, 2, 16, 13, 1, 32, 52, 4, 13,
+ 2, 1, 3, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 28, 15, 5, 13,
+ 0, 16, 13, 2, 13, 1, 26, 13, 2, 1, 3, 5, 1, 50, 4, 4, 0, 1, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10,
+ 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
+ 2,105, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0,
+ 2, 0, 0, 0, 4,109, 97,112, 0, 4, 0, 0, 0,175, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 2, 0, 0, 0, 7, 73,117,112, 77, 97,112, 0, 2, 0, 0, 0, 5,115,101,108,
+102, 0, 2, 0, 0, 0, 5,104,105,100,101, 0, 4, 0, 0, 0,179, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 72,105,100,101, 0, 2, 0, 0, 0,
+ 5,115,101,108,102, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 17, 67,114,101,
+ 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0,187, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112,
+ 67,114,101, 97,116,101, 84,105,109,101,114, 0, 2, 0, 0, 0, 9,105,117,112,
+116,105,109,101,114, 0, 4, 0, 0, 0,191, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,116,105,109,101,114, 0, 2, 0, 0,
+ 0, 13, 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 4, 0, 0, 0,200,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,105,117,
+112, 67,114,101, 97,116,101, 67,108,105,112, 98,111, 97,114,100, 0, 2, 0, 0,
+ 0, 13,105,117,112, 99,108,105,112, 98,111, 97,114,100, 0, 4, 0, 0, 0,204,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 13,
+ 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10, 99,108,105,112, 98,
+111, 97,114,100, 0, 2, 0, 0, 0, 10, 73, 85, 80, 68, 73, 65, 76, 79, 71, 0,
+ 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0,
+ 0,213, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2,
+ 1, 1, 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104,
+ 97,110,100,108,101, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101,
+ 68,105, 97,108,111,103, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 4, 0, 0, 0,219, 0, 0,
+ 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117,
+ 97, 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 83,104,111,119, 0, 2, 0, 0,
+ 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,115,104,111,119,120,121, 0, 4,
+ 0, 0, 0,223, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1,
+ 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120,
+ 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 10, 73,117,112, 83,104,111,119,
+ 88, 89, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 6,112,111,
+112,117,112, 0, 4, 0, 0, 0,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15,
+ 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,
+ 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,
+112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0,
+ 0, 10,105,117,112,100,105, 97,108,111,103, 0, 4, 0, 0, 0,231, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80,
+ 68, 73, 65, 76, 79, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,
+116,111,114, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,103, 0, 2, 0, 0, 0,
+ 9, 73, 85, 80, 82, 65, 68, 73, 79, 0, 4, 0, 0, 0,240, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, 13, 1, 7, 1, 16,
+ 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0,
+ 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2,
+ 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 82, 97,100,105,111, 0, 2,
+ 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9,
+105,117,112,114, 97,100,105,111, 0, 4, 0, 0, 0,246, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 26, 5, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 15, 4, 13, 1, 7, 1, 16,
+ 2, 0, 1, 13, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 9,
+ 73, 85, 80, 82, 65, 68, 73, 79, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,
+117, 99,116,111,114, 0, 2, 0, 0, 0, 23,105,117,112, 67,114,101, 97,116,101,
+ 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 2, 0, 0, 0, 6,114,
+ 97,100,105,111, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115,
+ 0, 4, 0, 0, 0,254, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,156, 11, 1, 22, 0, 7, 1,
+ 50, 61, 15, 3, 13, 0, 13, 2, 16, 2, 1, 1, 52, 29, 13, 1, 13, 2, 15, 4,
+ 22, 2, 11, 5, 13, 0, 13, 2, 16, 11, 6, 13, 0, 18, 6, 30, 1, 2, 1, 1,
+ 26, 50, 13, 15, 7, 11, 8, 13, 2, 42, 11, 9, 42, 2, 0, 1, 13, 2, 7, 1,
+ 37, 23, 2, 13, 0, 13, 2, 16, 54, 68, 13, 0, 18, 10, 52, 51, 7, 1, 50, 7,
+ 13, 3, 7, 1, 37, 23, 3, 13, 0, 13, 3, 16, 48, 10, 13, 0, 13, 3, 16, 13,
+ 0, 18, 10, 31, 54, 26, 13, 0, 13, 3, 16, 52, 10, 13, 1, 11, 10, 13, 1, 13,
+ 3, 16, 26, 5, 1, 50, 18, 13, 0, 18, 12, 52, 12, 13, 1, 11, 10, 13, 1, 13,
+ 0, 18, 12, 16, 26, 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0,
+ 0, 0, 2,104, 0, 2, 0, 0, 0, 4,116,109,112, 0, 2, 0, 0, 0, 2,105,
+ 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0,
+ 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,
+116,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0,
+ 6,101,114,114,111,114, 0, 2, 0, 0, 0, 8,111,112,116,105,111,110, 32, 0,
+ 2, 0, 0, 0, 18, 32,109,117,115,116, 32, 98,101, 32, 97, 32,115,116,114,105,
+110,103, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 2,106,
+ 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 9,101,100,
+104,114, 97,100,105,111, 0, 4, 0, 0, 1, 26, 0, 0, 0, 20, 64,105,117,112,
+108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 35,
+ 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, 2, 1, 1,
+ 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,103,103,108,
+101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, 0, 2,
+ 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, 7,101,100,
+104, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0,
+ 9,101,100,118,114, 97,100,105,111, 0, 4, 0, 0, 1, 32, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 35, 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1,
+ 2, 1, 1, 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,
+103,103,108,101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,
+115, 0, 2, 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0,
+ 7,101,100,118, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, 85, 0, 4, 0, 0, 1, 41, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0,159, 7, 2, 7, 1, 50,145, 13, 1, 13, 2, 16, 15, 3, 13, 3,
+ 2, 1, 1, 44, 52,121, 15, 4, 13, 3, 2, 1, 1, 11, 5, 31, 52, 15, 15, 6,
+ 11, 7, 13, 2, 42, 11, 8, 42, 2, 0, 1, 50, 94, 13, 3, 7, 1, 16, 48, 11,
+ 15, 9, 13, 3, 7, 1, 16, 2, 1, 1, 44, 52, 15, 15, 6, 11, 7, 13, 2, 42,
+ 11, 10, 42, 2, 0, 1, 50, 59, 13, 3, 7, 2, 16, 48, 11, 15, 9, 13, 3, 7,
+ 2, 16, 2, 1, 1, 44, 48, 11, 15, 11, 13, 3, 7, 2, 16, 2, 1, 1, 44, 48,
+ 11, 15, 12, 13, 3, 7, 2, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, 2,
+ 42, 11, 13, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2,
+ 16, 54,152, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, 98,106,
+ 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10,
+116,121,112,101, 95,105,116,101,109, 0, 2, 0, 0, 0, 5,116,121,112,101, 0,
+ 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,
+114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, 2, 0,
+ 0, 0, 32, 32,105,115, 32,110,111,116, 32, 97, 32,116, 97, 98,108,101, 32,110,
+111,114, 32, 97, 32,109,101,110,117, 32,105,116,101,109, 0, 2, 0, 0, 0, 12,
+116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 30, 32,100,111,
+101,115, 32,110,111,116, 32,104, 97,118,101, 32, 97, 32,115,116,114,105,110,103,
+ 32,116,105,116,108,101, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110,
+ 99,116,105,111,110, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,
+101,116, 0, 2, 0, 0, 0, 36, 32,100,111,101,115, 32,110,111,116, 32,104, 97,
+118,101, 32, 97,110, 32, 97, 99,116,105,111,110, 32,110,111,114, 32, 97, 32,109,
+101,110,117, 0, 4, 0, 0, 1, 59, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,189, 10, 2, 15,
+ 2, 2, 1, 0, 7, 1, 50,166, 13, 1, 13, 3, 16, 4, 0, 15, 6, 13, 4, 2,
+ 1, 1, 52, 6, 13, 4, 23, 5, 50,112, 13, 4, 7, 1, 16, 44, 52, 11, 15, 7,
+ 22, 0, 2, 1, 1, 23, 5, 50, 93, 15, 6, 13, 4, 7, 2, 16, 2, 1, 1, 52,
+ 38, 13, 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 7, 1, 13, 4, 7, 2, 16,
+ 26, 13, 4, 7, 2, 4, 0, 26, 15, 9, 13, 4, 2, 1, 1, 23, 5, 50, 43, 13,
+ 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 11, 10, 13, 4, 7, 2, 16, 26, 13,
+ 4, 7, 1, 4, 0, 26, 13, 4, 7, 2, 4, 0, 26, 15, 11, 13, 4, 2, 1, 1,
+ 23, 5, 15, 12, 13, 2, 13, 5, 2, 0, 2, 13, 5, 11, 13, 13, 2, 26, 13, 1,
+ 13, 3, 13, 5, 26, 13, 3, 7, 1, 37, 23, 3, 5, 2, 13, 1, 13, 3, 16, 54,
+173, 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 14,
+105,117,112, 67,114,101, 97,116,101, 77,101,110,117, 0, 2, 0, 0, 0, 2,105,
+ 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,101,108,101,109, 0, 2, 0,
+ 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 13,
+105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 6,116,105,
+116,108,101, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0,
+ 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,105,117,112,
+105,116,101,109, 0, 2, 0, 0, 0, 10, 73,117,112, 65,112,112,101,110,100, 0,
+ 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
+ 8,105,117,112,109,101,110,117, 0, 4, 0, 0, 1, 89, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78,
+ 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2,
+ 0, 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78,
+ 85, 0, 4, 0, 0, 1, 94, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13,
+ 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0,
+ 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112, 80,
+111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12,
+ 67, 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 4, 0, 0, 1,102, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, 2, 13, 1, 13, 2, 16, 2, 1,
+ 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, 5, 42, 2, 0, 1, 13, 2, 7,
+ 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0,
+ 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 6,101,114,
+114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0,
+ 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,
+101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,
+122,101,100, 0, 4, 0, 0, 1,112, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,187, 11, 2, 13,
+ 0, 20, 3, 2, 1, 1, 13, 1, 18, 4, 7, 1, 7, 0, 50, 14, 13, 5, 7, 1,
+ 37, 23, 5, 13, 4, 7, 1, 37, 23, 4, 13, 1, 13, 4, 16, 54, 21, 7, 1, 23,
+ 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, 2,
+ 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, 1,
+ 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 50, 79, 15, 9, 13, 2, 13, 1, 13,
+ 4, 16, 2, 0, 2, 13, 1, 13, 4, 16, 11, 10, 13, 2, 26, 13, 4, 7, 1, 37,
+ 23, 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0,
+ 2, 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13,
+ 1, 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 13, 4, 13, 5, 34, 54, 86, 13,
+ 2, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, 4,111, 98,106,
+ 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 5,115,101,
+108,102, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,
+109,101,110,116, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0,
+ 0, 2,105, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95,
+ 89, 69, 83, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0,
+ 0, 10, 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 11, 73, 85, 80,
+ 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88,
+ 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,109,101,
+110,116, 0, 4, 0, 0, 1,146, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0,
+ 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112,
+ 67,114,101, 97,116,101, 72, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,104,
+ 98,111,120, 0, 4, 0, 0, 1,150, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15,
+ 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0, 2, 0, 0,
+ 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,104,
+ 98,111,120, 0, 2, 0, 0, 0, 7,101,100,104, 98,111,120, 0, 4, 0, 0, 1,
+156, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3,
+ 20, 4, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8,
+ 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88,
+ 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0,
+ 0, 0, 8,101,100,102,105,101,108,100, 0, 4, 0, 0, 1,162, 0, 0, 0, 20,
+ 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0,
+ 0, 0, 0,123, 7, 1, 4, 1, 15, 3, 13, 0, 18, 4, 2, 1, 1, 46, 9, 15,
+ 5, 13, 0, 18, 4, 2, 1, 1, 52, 19, 15, 6, 22, 1, 11, 7, 13, 0, 18, 4,
+ 30, 0, 2, 1, 1, 23, 1, 50, 7, 15, 8, 11, 9, 2, 0, 1, 13, 0, 18, 10,
+ 52, 19, 15, 11, 22, 1, 11, 10, 13, 0, 18, 10, 30, 0, 2, 1, 1, 23, 2, 50,
+ 17, 15, 11, 22, 1, 11, 10, 13, 0, 18, 12, 30, 0, 2, 1, 1, 23, 2, 13, 2,
+ 48, 2, 13, 1, 52, 16, 15, 13, 22, 2, 13, 1, 13, 2, 29, 0, 2, 3, 3, 1,
+ 50, 4, 4, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 2,
+102, 0, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0,
+ 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 7,112,114,
+111,109,112,116, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,110,117,109, 98,101,
+114, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0,
+ 6,116,105,116,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0,
+ 0, 0, 55,112, 97,114, 97,109,101,116,101,114, 32,112,114,111,109,112,116, 32,
+104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,
+115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,122,101,100, 0, 2, 0,
+ 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8,105,117,112,116,101,120,
+116, 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 7,101,
+100,104, 98,111,120, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 4,
+ 0, 0, 1,185, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,
+116,101, 86, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0,
+ 4, 0, 0, 1,189, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13,
+ 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,118, 98,111,120, 0,
+ 2, 0, 0, 0, 7,101,100,118, 98,111,120, 0, 4, 0, 0, 1,195, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, 20, 4, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95,
+ 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0,
+ 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8, 73,
+ 85, 80, 90, 66, 79, 88, 0, 4, 0, 0, 1,204, 0, 0, 0, 20, 64,105,117,112,
+108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8,
+ 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0,
+ 14,105,117,112, 67,114,101, 97,116,101, 90, 98,111,120, 0, 2, 0, 0, 0, 8,
+105,117,112,122, 98,111,120, 0, 4, 0, 0, 1,208, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 44, 6, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 7, 1, 50, 17, 15, 5, 13, 1,
+ 13, 2, 16, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 24,
+ 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 8, 73,
+ 85, 80, 90, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,
+116,111,114, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11,105,117,112, 83,
+101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 5,122, 98,111,120, 0, 2, 0, 0,
+ 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 4, 0, 0, 1,223, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
+ 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,
+116,101, 70,105,108,108, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0,
+ 4, 0, 0, 1,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13,
+ 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,102,105,108,108, 0,
+ 2, 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 5,
+116,121,112,101, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0,
+ 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 4, 0, 0, 1,236, 0, 0,
+ 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117,
+ 97, 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52,
+ 7, 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,
+116,105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0,
+ 0, 1, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 66,117,116,
+116,111,110, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 4,
+ 0, 0, 1,243, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 98,117,116,116,
+111,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, 1,
+252, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,
+117,112, 67,114,101, 97,116,101, 84,101,120,116, 0, 2, 0, 0, 0, 8,105,117,
+112,116,101,120,116, 0, 4, 0, 0, 2, 0, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 2,
+ 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0,
+ 5,116,101,120,116, 0, 2, 0, 0, 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76,
+ 73, 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0,
+ 2, 9, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,
+105,117,112, 67,114,101, 97,116,101, 77,117,108,116,105, 76,105,110,101, 0, 2,
+ 0, 0, 0, 13,105,117,112,109,117,108,116,105,108,105,110,101, 0, 4, 0, 0,
+ 2, 13, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0,
+ 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, 73, 78, 69, 0, 2, 0, 0, 0, 12,
+ 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,109,117,108,
+116,105,108,105,110,101, 0, 2, 0, 0, 0, 9, 73, 85, 80, 76, 65, 66, 69, 76,
+ 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 2, 22, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, 7,
+ 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,116,
+105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, 0,
+ 1, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 76, 97, 98,101,
+108, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 4, 0, 0, 2,
+ 29, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0,
+ 9, 73, 85, 80, 76, 65, 66, 69, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,
+114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,108, 97, 98,101,108, 0, 2, 0,
+ 0, 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 10, 73, 85,
+ 80, 66, 85, 84, 84, 79, 78, 0, 4, 0, 0, 2, 38, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,
+101, 97,116,101, 84,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,116,108,
+101, 0, 2, 0, 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 4, 0, 0,
+ 2, 42, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0,
+ 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7,116,111,103,103,108,101,
+ 0, 2, 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 4, 0, 0, 2, 51, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 14,105,117,112, 67,114,101, 97,116,101, 73,116,101,109, 0, 2, 0, 0, 0, 6,
+116,105,116,108,101, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 4,
+ 0, 0, 2, 55, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2,
+ 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,
+116,121,112,101, 95,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,101,
+ 0, 4, 0, 0, 2, 64, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 31, 6, 2, 15, 2, 13, 1,
+ 18, 3, 13, 1, 7, 1, 16, 2, 1, 2, 13, 1, 7, 1, 16, 11, 4, 13, 2, 26,
+ 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 2,104, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101,
+ 97,116,101, 83,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,
+101, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, 4, 0, 0, 2, 70, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73,
+ 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,
+114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0,
+ 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 4, 0,
+ 0, 2, 79, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 19,105,117,112, 67,114,101, 97,116,101, 83,101,112, 97,114, 97,116,111,114, 0,
+ 2, 0, 0, 0, 13,105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 4, 0,
+ 0, 2, 83, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, 0, 0, 0,
+ 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,115,101,
+112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69,
+ 68, 76, 71, 0, 4, 0, 0, 2, 92, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15,
+ 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,
+ 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,
+112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0,
+ 2, 96, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101,
+ 70,105,108,101, 68,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101,
+100,108,103, 0, 4, 0, 0, 2,100, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15,
+ 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, 68, 76, 71, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 14, 73, 85, 80, 77, 69,
+ 83, 83, 65, 71, 69, 68, 76, 71, 0, 4, 0, 0, 2,109, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0,
+ 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,
+102, 0, 4, 0, 0, 2,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 20,105,117,112, 67,
+114,101, 97,116,101, 77,101,115,115, 97,103,101, 68,108,103, 0, 2, 0, 0, 0,
+ 14,105,117,112,109,101,115,115, 97,103,101,100,108,103, 0, 4, 0, 0, 2,117,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 14,
+ 73, 85, 80, 77, 69, 83, 83, 65, 71, 69, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,109,101,115,115,
+ 97,103,101,100,108,103, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82,
+ 68, 76, 71, 0, 4, 0, 0, 2,126, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15,
+ 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,
+ 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,
+112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0,
+ 2,130, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101,
+ 67,111,108,111,114, 68,108,103, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108,
+111,114,100,108,103, 0, 4, 0, 0, 2,134, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 68,
+ 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 9, 99,111,108,111,114,100,108,103, 0, 2, 0, 0, 0, 11, 73,
+ 85, 80, 70, 79, 78, 84, 68, 76, 71, 0, 4, 0, 0, 2,143, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2,
+ 0, 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,
+108,102, 0, 4, 0, 0, 2,147, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0,
+ 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112,
+ 67,114,101, 97,116,101, 70,111,110,116, 68,108,103, 0, 2, 0, 0, 0, 11,105,
+117,112,102,111,110,116,100,108,103, 0, 4, 0, 0, 2,151, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 79,
+ 78, 84, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,
+111,114, 0, 2, 0, 0, 0, 8,102,111,110,116,100,108,103, 0, 2, 0, 0, 0,
+ 8, 73, 85, 80, 85, 83, 69, 82, 0, 4, 0, 0, 2,160, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0,
+ 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 85,115,101,114, 0, 2, 0, 0,
+ 0, 8,105,117,112,117,115,101,114, 0, 4, 0, 0, 2,164, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 10, 2, 0, 15, 0, 20, 1, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 0, 0, 0, 8, 73, 85, 80, 85, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,117,115,101,114,
+ 0, 2, 0, 0, 0, 14, 73, 85, 80, 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0,
+ 4, 0, 0, 2,173, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15,
+ 2, 13, 1, 13, 2, 16, 2, 1, 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11,
+ 5, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0,
+ 0, 2,105, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116,
+ 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114,
+ 97,109,101,116,101,114, 32, 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,
+111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,
+105,110,105,116,105, 97,108,105,122,101,100, 0, 4, 0, 0, 2,183, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 40, 8, 2, 15, 2, 2, 1, 0, 7, 1, 50, 17, 13, 2, 11, 4,
+ 13, 1, 13, 3, 16, 26, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 3, 16, 54, 24,
+ 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 20,105,
+117,112, 67,114,101, 97,116,101, 78,111,114,109, 97,108,105,122,101,114, 0, 2,
+ 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11, 97,100,100, 99,111,110,116,114,111,
+108, 0, 2, 0, 0, 0, 14,105,117,112,110,111,114,109, 97,108,105,122,101,114,
+ 0, 4, 0, 0, 2,193, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 10, 2, 0, 15, 0, 20, 1,
+ 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 14, 73, 85, 80,
+ 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,
+116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,110,111,114,109, 97,108,105,
+122,101,114, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, 2, 0,
+ 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 2,202,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1,
+ 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,104, 0, 2,
+ 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 70,114, 97,109,101, 0, 2,
+ 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9,
+105,117,112,102,114, 97,109,101, 0, 4, 0, 0, 2,208, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65,
+ 77, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 6,102,114, 97,109,101, 0, 2, 0, 0, 0, 10, 73, 85, 80, 67,
+ 65, 78, 86, 65, 83, 0, 4, 0, 0, 2,217, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3,
+ 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,
+111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 67, 97,
+110,118, 97,115, 0, 2, 0, 0, 0, 10,105,117,112, 99, 97,110,118, 97,115, 0,
+ 4, 0, 0, 2,221, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13,
+ 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 10, 73, 85, 80, 67, 65, 78, 86, 65, 83, 0, 2, 0, 0, 0, 12,
+ 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 99, 97,110,
+118, 97,115, 0, 2, 0, 0, 0, 8, 73, 85, 80, 76, 73, 83, 84, 0, 4, 0, 0,
+ 2,230, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,
+105,117,112, 67,114,101, 97,116,101, 76,105,115,116, 0, 4, 0, 0, 2,234, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 42, 6, 2, 15, 1, 13, 1, 2, 1, 1, 11, 2, 32, 52,
+ 16, 15, 3, 13, 0, 18, 5, 11, 6, 13, 1, 42, 3, 2, 2, 50, 11, 15, 7, 18,
+ 8, 13, 0, 13, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0,
+ 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0,
+ 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,
+116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102,
+ 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2,
+ 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,103,101,116, 0,
+ 4, 0, 0, 2,242, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 90, 8, 3, 15, 2, 13, 1, 2,
+ 1, 1, 11, 3, 32, 52, 62, 15, 4, 13, 2, 2, 1, 1, 46, 7, 15, 5, 13, 2,
+ 2, 1, 1, 52, 21, 15, 6, 13, 0, 18, 8, 11, 9, 13, 1, 42, 11, 9, 13, 2,
+ 42, 3, 3, 3, 50, 23, 13, 2, 4, 0, 32, 52, 16, 15, 6, 13, 0, 18, 8, 11,
+ 9, 13, 1, 42, 13, 2, 3, 3, 3, 15, 10, 18, 11, 13, 0, 13, 1, 13, 2, 3,
+ 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 6,105,110,100,101,
+120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 5,116,121,
+112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 12,
+116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 12,116,121,112,
+101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116,
+ 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, 0,
+ 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,115,101,116, 0, 2,
+ 0, 0, 0, 8,105,117,112,108,105,115,116, 0, 4, 0, 0, 2,253, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80,
+ 76, 73, 83, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 5,108,105,115,116, 0, 2, 0, 0, 0, 9, 73, 85, 80,
+ 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0,
+ 0, 3, 6, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0,116, 8, 2, 7, 1, 50, 92, 7, 1, 50,
+ 32, 15, 3, 13, 1, 13, 2, 16, 13, 3, 16, 2, 1, 1, 11, 4, 31, 52, 7, 15,
+ 5, 11, 6, 2, 0, 1, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 2, 16, 13, 3,
+ 16, 54, 42, 13, 1, 18, 7, 48, 10, 13, 3, 7, 1, 38, 13, 1, 18, 7, 31, 52,
+ 9, 15, 5, 11, 8, 2, 0, 1, 50, 10, 13, 1, 11, 7, 13, 3, 7, 1, 38, 26,
+ 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, 16, 54, 99, 13, 1, 11, 9,
+ 13, 2, 7, 1, 38, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 4,
+111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,106, 0, 2, 0,
+ 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0,
+ 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 38,110,111,110, 45,
+110,117,109,101,114,105, 99, 32,118, 97,108,117,101, 32,105,110, 32,105,109, 97,
+103,101, 32,100,101,102,105,110,105,116,105,111,110, 0, 2, 0, 0, 0, 6,119,
+105,100,116,104, 0, 2, 0, 0, 0, 26,105,110, 99,111,110,115,105,115,116,101,
+110,116, 32,105,109, 97,103,101, 32,108,101,110,103,104,116, 0, 2, 0, 0, 0,
+ 7,104,101,105,103,104,116, 0, 4, 0, 0, 3, 29, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 74, 9, 2, 15, 2, 13, 1, 18, 3, 13, 1, 18, 4, 13, 1, 2, 1, 3, 15, 5,
+ 13, 1, 18, 6, 2, 1, 1, 11, 7, 32, 52, 38, 7, 1, 50, 23, 15, 9, 13, 2,
+ 13, 3, 13, 1, 18, 6, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 37, 23, 3, 13,
+ 1, 18, 6, 13, 3, 16, 54, 32, 5, 1, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 10, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,
+100,108,101, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 73,109,
+ 97,103,101, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 7,
+104,101,105,103,104,116, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0,
+ 0, 7, 99,111,108,111,114,115, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0,
+ 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,
+116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,105,117,112,105,109, 97,103,
+101, 0, 4, 0, 0, 3, 41, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20,
+ 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,
+111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 73, 77, 65, 71, 69, 0, 2, 0, 0, 0,
+ 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,105,109,
+ 97,103,101, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66,
+ 0, 4, 0, 0, 3, 49, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1,
+ 18, 2, 13, 1, 18, 3, 13, 1, 18, 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,
+114,101, 97,116,101, 73,109, 97,103,101, 82, 71, 66, 0, 2, 0, 0, 0, 6,119,
+105,100,116,104, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, 0, 2, 0, 0,
+ 0, 7,112,105,120,101,108,115, 0, 2, 0, 0, 0, 12,105,117,112,105,109, 97,
+103,101,114,103, 98, 0, 4, 0, 0, 3, 53, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82,
+ 71, 66, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 9,105,109, 97,103,101,114,103, 98, 0, 2, 0, 0, 0, 13, 73,
+ 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 4, 0, 0, 3, 61, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, 18, 2, 13, 1, 18, 3, 13, 1, 18,
+ 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 19,105,117,112, 67,114,101, 97,116,101, 73,109, 97,103,
+101, 82, 71, 66, 65, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0,
+ 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, 0, 7,112,105,120,101,108,115,
+ 0, 2, 0, 0, 0, 13,105,117,112,105,109, 97,103,101,114,103, 98, 97, 0, 4,
+ 0, 0, 3, 65, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 13, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 2, 0, 0,
+ 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,105,
+109, 97,103,101,114,103, 98, 97, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79,
+ 71, 82, 69, 83, 83, 66, 65, 82, 0, 4, 0, 0, 3, 74, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0,
+ 0, 0, 21,105,117,112, 67,114,101, 97,116,101, 80,114,111,103,114,101,115,115,
+ 66, 97,114, 0, 2, 0, 0, 0, 15,105,117,112,112,114,111,103,114,101,115,115,
+ 98, 97,114, 0, 4, 0, 0, 3, 78, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15,
+ 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 2,111, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, 71, 82, 69, 83, 83,
+ 66, 65, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114,
+ 0, 2, 0, 0, 0, 12,112,114,111,103,114,101,115,115, 98, 97,114, 0, 2, 0,
+ 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0,
+ 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 7, 65, 67, 84, 73, 79, 78,
+ 0, 2, 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 10,
+ 65, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 9,103,101,116,102,111,
+ 99,117,115, 0, 2, 0, 0, 0, 12, 71, 69, 84, 70, 79, 67, 85, 83, 95, 67, 66,
+ 0, 2, 0, 0, 0, 16,105,117,112, 95,103,101,116,102,111, 99,117,115, 95, 99,
+ 98, 0, 2, 0, 0, 0, 10,107,105,108,108,102,111, 99,117,115, 0, 2, 0, 0,
+ 0, 13, 75, 73, 76, 76, 70, 79, 67, 85, 83, 95, 67, 66, 0, 2, 0, 0, 0, 17,
+105,117,112, 95,107,105,108,108,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0,
+ 0, 6,102,111, 99,117,115, 0, 2, 0, 0, 0, 9, 70, 79, 67, 85, 83, 95, 67,
+ 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,102,111, 99,117,115, 95, 99, 98, 0,
+ 2, 0, 0, 0, 6,107, 95, 97,110,121, 0, 2, 0, 0, 0, 6, 75, 95, 65, 78,
+ 89, 0, 2, 0, 0, 0, 10,105,117,112, 95,107, 95, 97,110,121, 0, 2, 0, 0,
+ 0, 5,104,101,108,112, 0, 2, 0, 0, 0, 8, 72, 69, 76, 80, 95, 67, 66, 0,
+ 2, 0, 0, 0, 12,105,117,112, 95,104,101,108,112, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8, 99, 97,114,101,116, 99, 98, 0, 2, 0, 0, 0, 9, 67, 65, 82, 69, 84,
+ 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, 99, 97,114,101,116, 95, 99,
+ 98, 0, 2, 0, 0, 0, 9,107,101,121,112,114,101,115,115, 0, 2, 0, 0, 0,
+ 12, 75, 69, 89, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,
+112, 95,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 7,115,
+ 99,114,111,108,108, 0, 2, 0, 0, 0, 10, 83, 67, 82, 79, 76, 76, 95, 67, 66,
+ 0, 2, 0, 0, 0, 14,105,117,112, 95,115, 99,114,111,108,108, 95, 99, 98, 0,
+ 2, 0, 0, 0, 10,116,114, 97,121, 99,108,105, 99,107, 0, 2, 0, 0, 0, 13,
+ 84, 82, 65, 89, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,
+112, 95,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 6,
+ 99,108,111,115,101, 0, 2, 0, 0, 0, 9, 67, 76, 79, 83, 69, 95, 67, 66, 0,
+ 2, 0, 0, 0, 13,105,117,112, 95, 99,108,111,115,101, 95, 99, 98, 0, 2, 0,
+ 0, 0, 5,111,112,101,110, 0, 2, 0, 0, 0, 8, 79, 80, 69, 78, 95, 67, 66,
+ 0, 2, 0, 0, 0, 12,105,117,112, 95,111,112,101,110, 95, 99, 98, 0, 2, 0,
+ 0, 0, 7,115,104,111,119, 99, 98, 0, 2, 0, 0, 0, 8, 83, 72, 79, 87, 95,
+ 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,104,111,119, 95, 99, 98, 0,
+ 2, 0, 0, 0, 6,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 7, 77, 65, 80, 95,
+ 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,109, 97,112, 95, 99, 98, 0, 2,
+ 0, 0, 0, 8,117,110,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 9, 85, 78, 77,
+ 65, 80, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,117,110,109, 97,112,
+ 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114,111,112,102,105,108,101,115, 0, 2,
+ 0, 0, 0, 13, 68, 82, 79, 80, 70, 73, 76, 69, 83, 95, 67, 66, 0, 2, 0, 0,
+ 0, 17,105,117,112, 95,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,109,101,110,117, 99,108,111,115,101, 0, 2, 0, 0, 0, 13, 77,
+ 69, 78, 85, 67, 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112,
+ 95,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,
+105,103,104,108,105,103,104,116, 0, 2, 0, 0, 0, 13, 72, 73, 71, 72, 76, 73,
+ 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,104,105,103,104,
+108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 4,119,111,109, 0, 2, 0,
+ 0, 0, 7, 87, 79, 77, 95, 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,119,
+111,109, 95, 99, 98, 0, 2, 0, 0, 0, 6,119,104,101,101,108, 0, 2, 0, 0,
+ 0, 9, 87, 72, 69, 69, 76, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,
+119,104,101,101,108, 95, 99, 98, 0, 2, 0, 0, 0, 10, 66, 85, 84, 84, 79, 78,
+ 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95, 98,117,116,116,111,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 10,
+ 82, 69, 83, 73, 90, 69, 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,114,
+101,115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,109,111,118,101, 0, 2,
+ 0, 0, 0, 12,105,117,112, 95,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0,
+ 7,109,111,116,105,111,110, 0, 2, 0, 0, 0, 10, 77, 79, 84, 73, 79, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,109,111,116,105,111,110, 95, 99,
+ 98, 0, 2, 0, 0, 0, 12,101,110,116,101,114,119,105,110,100,111,119, 0, 2,
+ 0, 0, 0, 15, 69, 78, 84, 69, 82, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, 2,
+ 0, 0, 0, 19,105,117,112, 95,101,110,116,101,114,119,105,110,100,111,119, 95,
+ 99, 98, 0, 2, 0, 0, 0, 12,108,101, 97,118,101,119,105,110,100,111,119, 0,
+ 2, 0, 0, 0, 15, 76, 69, 65, 86, 69, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0,
+ 2, 0, 0, 0, 19,105,117,112, 95,108,101, 97,118,101,119,105,110,100,111,119,
+ 95, 99, 98, 0, 2, 0, 0, 0, 5,101,100,105,116, 0, 2, 0, 0, 0, 8, 69,
+ 68, 73, 84, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,101,100,105,116,
+ 95, 99, 98, 0, 2, 0, 0, 0, 12,109,117,108,116,105,115,101,108,101, 99,116,
+ 0, 2, 0, 0, 0, 15, 77, 85, 76, 84, 73, 83, 69, 76, 69, 67, 84, 95, 67, 66,
+ 0, 2, 0, 0, 0, 19,105,117,112, 95,109,117,108,116,105,115,101,108,101, 99,
+116, 95, 99, 98, 0, 2, 0, 0, 0, 7,102,105,108,101, 99, 98, 0, 2, 0, 0,
+ 0, 8, 70, 73, 76, 69, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,102,
+105,108,101, 95, 99, 98, 0, 2, 0, 0, 0, 14,109,100,105, 97, 99,116,105,118,
+ 97,116,101, 99, 98, 0, 2, 0, 0, 0, 15, 77, 68, 73, 65, 67, 84, 73, 86, 65,
+ 84, 69, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109,100,105, 97, 99,
+116,105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 11,100,114,111,112,100,
+111,119,110, 99, 98, 0, 2, 0, 0, 0, 12, 68, 82, 79, 80, 68, 79, 87, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,100,114,111,112,100,111,119,110,
+ 95, 99, 98, 0, 2, 0, 0, 0, 11,100, 98,108, 99,108,105, 99,107, 99, 98, 0,
+ 2, 0, 0, 0, 12, 68, 66, 76, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0,
+ 0, 16,105,117,112, 95,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0,
+ 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95,116,111,103,103,108,101,
+ 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110, 95,116,101,120,
+116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95, 98,117,
+116,116,111,110, 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110,
+ 95,108,105,115,116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,
+110, 95, 99, 97,110,118, 97,115, 0, 2, 0, 0, 0, 17,105,117,112, 95, 97, 99,
+116,105,111,110, 95,116,105,109,101,114, 0, 2, 0, 0, 0, 10, 97, 99,116,105,
+111,110, 95, 99, 98, 0, 2, 0, 0, 0, 12,103,101,116,102,111, 99,117,115, 95,
+ 99, 98, 0, 2, 0, 0, 0, 13,107,105,108,108,102,111, 99,117,115, 95, 99, 98,
+ 0, 2, 0, 0, 0, 9,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 8,
+104,101,108,112, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99,
+ 98, 0, 2, 0, 0, 0, 12,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,115, 99,114,111,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 13,116,
+114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,111,
+115,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,111,112,101,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 8,115,104,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 7,109, 97,112,
+ 95, 99, 98, 0, 2, 0, 0, 0, 9,117,110,109, 97,112, 95, 99, 98, 0, 2, 0,
+ 0, 0, 13,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, 0, 0, 0,
+ 13,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 13,104,
+105,103,104,108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 7,119,111,109,
+ 95, 99, 98, 0, 2, 0, 0, 0, 9,119,104,101,101,108, 95, 99, 98, 0, 2, 0,
+ 0, 0, 10, 98,117,116,116,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,
+115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,109,111,118,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 10,109,111,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0,
+ 15,101,110,116,101,114,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0,
+ 15,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0,
+ 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,108,116,105,115,
+101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,100,105, 97, 99,116,
+105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,102,105,108,101, 95, 99,
+ 98, 0, 2, 0, 0, 0, 12,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 12,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0,
+ 16,118, 97,108,117,101, 99,104, 97,110,103,101,100, 95, 99, 98, 0, 2, 0, 0,
+ 0, 15,118, 97,108,117,101, 99,104, 97,110,103,101,100, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_widgets.lo");
+}
diff --git a/iup/srclua3/loh/iuplua_widgets_be32.loh b/iup/srclua3/loh/iuplua_widgets_be32.loh
new file mode 100755
index 0000000..4ed9835
--- /dev/null
+++ b/iup/srclua3/loh/iuplua_widgets_be32.loh
@@ -0,0 +1,939 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/iuplua_widgets_be32.lo");
+*/
+/* ../obj/iuplua3/iuplua_widgets_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 20, 64,105,117,112,108,117,
+ 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 7,202, 67, 0,
+ 22, 1, 11, 1, 22, 0, 30, 0, 25, 0, 15, 0, 11, 2, 11, 3, 26, 15, 0, 11,
+ 4, 11, 5, 26, 15, 0, 11, 6, 11, 7, 26, 15, 0, 11, 8, 11, 9, 26, 15, 0,
+ 11, 10, 11, 11, 26, 15, 0, 11, 12, 11, 13, 26, 15, 0, 11, 14, 11, 15, 26, 15,
+ 0, 11, 16, 11, 17, 26, 15, 0, 11, 18, 11, 19, 26, 15, 0, 11, 20, 11, 21, 26,
+ 15, 0, 11, 22, 11, 23, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 24, 15, 24, 11,
+ 26, 11, 27, 26, 11, 29, 25, 28, 15, 30, 11, 31, 15, 28, 26, 22, 1, 11, 25, 15,
+ 0, 30, 0, 25, 32, 15, 32, 11, 26, 11, 33, 26, 11, 35, 25, 34, 15, 30, 11, 36,
+ 15, 34, 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1,
+ 25, 37, 15, 37, 11, 26, 11, 39, 26, 15, 37, 11, 40, 11, 41, 26, 15, 37, 11, 42,
+ 11, 43, 26, 15, 37, 11, 44, 11, 45, 26, 11, 47, 25, 46, 15, 30, 11, 48, 15, 46,
+ 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1, 25, 49,
+ 15, 49, 11, 26, 11, 50, 26, 11, 52, 25, 51, 15, 30, 11, 53, 15, 51, 26, 11, 55,
+ 25, 54, 11, 57, 25, 56, 11, 59, 25, 58, 22, 1, 11, 25, 15, 0, 30, 0, 25, 60,
+ 15, 60, 11, 4, 11, 61, 26, 15, 60, 11, 26, 11, 62, 26, 11, 64, 25, 63, 15, 30,
+ 11, 65, 15, 63, 26, 15, 66, 11, 44, 11, 67, 26, 22, 1, 11, 25, 15, 0, 30, 0,
+ 25, 68, 15, 68, 11, 4, 11, 69, 26, 15, 68, 11, 26, 11, 70, 26, 22, 1, 11, 25,
+ 15, 68, 30, 0, 25, 71, 15, 71, 11, 72, 11, 73, 26, 11, 75, 25, 74, 15, 30, 11,
+ 76, 15, 74, 26, 11, 78, 25, 77, 11, 80, 25, 79, 22, 1, 11, 25, 15, 68, 30, 0,
+ 25, 81, 15, 81, 11, 72, 11, 82, 26, 11, 84, 25, 83, 15, 30, 11, 85, 15, 83, 26,
+ 11, 87, 25, 86, 22, 1, 11, 25, 15, 68, 30, 0, 25, 88, 15, 88, 11, 72, 11, 89,
+ 26, 11, 91, 25, 90, 15, 30, 11, 92, 15, 90, 26, 22, 1, 11, 25, 15, 0, 30, 0,
+ 25, 93, 15, 93, 11, 26, 11, 94, 26, 11, 96, 25, 95, 15, 30, 11, 97, 15, 95, 26,
+ 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 11,100, 15,101, 30, 0, 30, 1, 25, 98,
+ 15, 98, 11, 26, 11,102, 26, 11,104, 25,103, 15, 30, 11,105, 15,103, 26, 22, 1,
+ 11, 25, 15, 0, 30, 0, 25,106, 15,106, 11, 26, 11,107, 26, 11,109, 25,108, 15,
+ 30, 11,110, 15,108, 26, 22, 1, 11, 25, 15,112, 30, 0, 25,111, 15,111, 11, 26,
+ 11,113, 26, 11,115, 25,114, 15, 30, 11,116, 15,114, 26, 22, 2, 11, 25, 15, 0,
+ 11, 99, 22, 1, 11,118, 15,101, 30, 0, 30, 1, 25,117, 15,117, 11, 26, 11,119,
+ 26, 11,121, 25,120, 15, 30, 11,122, 15,120, 26, 22, 1, 11, 25, 15,124, 30, 0,
+ 25,123, 15,123, 11, 26, 11,125, 26, 11,127, 25,126, 15, 30, 11,128, 15,126, 26,
+ 22, 1, 11, 25, 15,124, 30, 0, 25,129, 15,129, 11, 26, 11,130, 26, 11,132, 25,
+131, 15, 30, 11,133, 15,131, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 2, 15,135,
+ 29, 0, 1, 11,136, 15,101, 30, 0, 30, 1, 25,134, 15,134, 11, 26, 11,137, 26,
+ 11,139, 25,138, 15, 30, 11,140, 15,138, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,
+141, 15,141, 11, 26, 11,142, 26, 11,144, 25,143, 15, 30, 11,145, 15,143, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,146, 15,146, 11, 44, 11,147, 26, 15,146, 11, 26,
+ 11,148, 26, 11,150, 25,149, 15, 30, 11,151, 15,149, 26, 22, 1, 11, 25, 15, 0,
+ 30, 0, 25,152, 15,152, 11, 44, 11,153, 26, 15,152, 11, 26, 11,154, 26, 11,156,
+ 25,155, 15, 30, 11,157, 15,155, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,158, 15,
+158, 11, 44, 11,159, 26, 15,158, 11, 26, 11,160, 26, 11,162, 25,161, 15, 30, 11,
+163, 15,161, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,164, 15,164, 11, 44, 11,165,
+ 26, 15,164, 11, 26, 11,166, 26, 11,168, 25,167, 15, 30, 11,169, 15,167, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,170, 15,170, 11, 26, 11,171, 26, 11,173, 25,172,
+ 15, 30, 11,174, 15,172, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,175, 15,175, 11,
+ 4, 11,176, 26, 15,175, 11, 26, 11,177, 26, 11,179, 25,178, 15, 30, 11,180, 15,
+178, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 15,182, 29, 0, 1, 30, 1, 25,
+181, 15,181, 11, 26, 11,183, 26, 11,185, 25,184, 15, 30, 11,186, 15,184, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,187, 15,187, 11, 26, 11,188, 26, 11,190, 25,189,
+ 15, 30, 11,191, 15,189, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,192, 15,192, 11,
+ 26, 11,193, 26, 15,192, 11, 8, 11,194, 26, 15,192, 11, 10, 11,195, 26, 11,197,
+ 25,196, 15, 30, 11,198, 15,196, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,199, 15,
+199, 11, 4, 11,201, 26, 15,199, 11, 26, 11,202, 26, 11,204, 25,203, 15, 30, 11,
+205, 15,203, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,206, 15,206, 11, 26, 11,207,
+ 26, 11,209, 25,208, 15, 30, 11,210, 15,208, 26, 22, 1, 11, 25, 15,200, 30, 0,
+ 25,211, 15,211, 11, 26, 11,212, 26, 11,214, 25,213, 15, 30, 11,215, 15,213, 26,
+ 22, 1, 11, 25, 15,200, 30, 0, 25,216, 15,216, 11, 26, 11,217, 26, 11,219, 25,
+218, 15, 30, 11,220, 15,218, 26, 22, 33, 11,222, 22, 2, 11,223, 4, 0, 29, 0,
+ 2, 11,224, 22, 2, 11,225, 4, 0, 29, 0, 2, 11,226, 22, 2, 11,227, 15,228,
+ 29, 0, 2, 11,229, 22, 2, 11,230, 15,231, 29, 0, 2, 11,232, 22, 2, 11,233,
+ 15,234, 29, 0, 2, 11,235, 22, 2, 11,236, 15,237, 29, 0, 2, 11,238, 22, 2,
+ 11,239, 15,240, 29, 0, 2, 11,241, 22, 2, 11,242, 15,243, 29, 0, 2, 11,244,
+ 22, 2, 11,245, 15,246, 29, 0, 2, 11,247, 22, 2, 11,248, 15,249, 29, 0, 2,
+ 11,250, 22, 2, 11,251, 15,252, 29, 0, 2, 11,253, 22, 2, 11,254, 15,255, 29,
+ 0, 2, 10, 1, 0, 22, 2, 10, 1, 1, 14, 1, 2, 29, 0, 2, 10, 1, 3, 22,
+ 2, 10, 1, 4, 14, 1, 5, 29, 0, 2, 10, 1, 6, 22, 2, 10, 1, 7, 14, 1,
+ 8, 29, 0, 2, 10, 1, 9, 22, 2, 10, 1, 10, 14, 1, 11, 29, 0, 2, 10, 1,
+ 12, 22, 2, 10, 1, 13, 14, 1, 14, 29, 0, 2, 10, 1, 15, 22, 2, 10, 1, 16,
+ 14, 1, 17, 29, 0, 2, 10, 1, 18, 22, 2, 10, 1, 19, 14, 1, 20, 29, 0, 2,
+ 10, 1, 21, 22, 2, 10, 1, 22, 14, 1, 23, 29, 0, 2, 10, 1, 24, 22, 2, 10,
+ 1, 25, 14, 1, 26, 29, 0, 2, 11,105, 22, 2, 10, 1, 27, 14, 1, 28, 29, 0,
+ 2, 10, 1, 29, 22, 2, 10, 1, 30, 14, 1, 31, 29, 0, 2, 10, 1, 32, 22, 2,
+ 10, 1, 30, 14, 1, 33, 29, 0, 2, 10, 1, 34, 22, 2, 10, 1, 35, 14, 1, 36,
+ 29, 0, 2, 10, 1, 37, 22, 2, 10, 1, 38, 14, 1, 39, 29, 0, 2, 10, 1, 40,
+ 22, 2, 10, 1, 41, 14, 1, 42, 29, 0, 2, 10, 1, 43, 22, 2, 10, 1, 44, 14,
+ 1, 45, 29, 0, 2, 10, 1, 46, 22, 2, 10, 1, 47, 14, 1, 48, 29, 0, 2, 10,
+ 1, 49, 22, 2, 10, 1, 50, 14, 1, 51, 29, 0, 2, 10, 1, 52, 22, 2, 10, 1,
+ 53, 14, 1, 54, 29, 0, 2, 10, 1, 55, 22, 2, 10, 1, 56, 14, 1, 57, 29, 0,
+ 2, 30, 31, 10, 1, 58, 22, 2, 10, 1, 59, 14, 1, 60, 29, 0, 2, 30, 0, 25,
+221, 15,221, 18,222, 11,128, 14, 1, 61, 26, 15,221, 18,222, 11,116, 14, 1, 62,
+ 26, 15,221, 18,222, 11,110, 14, 1, 62, 26, 15,221, 18,222, 11,105, 14, 1, 63,
+ 26, 15,221, 18,222, 11,198, 14, 1, 64, 26, 15,221, 18,222, 11,133, 14, 1, 63,
+ 26, 15,221, 18,222, 11,191, 14, 1, 65, 26, 15,221, 18,224, 11, 31, 14, 1, 66,
+ 26, 15,221, 10, 1, 67, 15,221, 18,224, 26, 15,221, 10, 1, 68, 15,221, 18,226,
+ 26, 15,221, 10, 1, 69, 15,221, 18,229, 26, 15,221, 10, 1, 70, 15,221, 18,232,
+ 26, 15,221, 11,235, 15,221, 18,235, 26, 15,221, 10, 1, 71, 15,221, 18,238, 26,
+ 15,221, 10, 1, 72, 15,221, 18,241, 26, 15,221, 10, 1, 73, 15,221, 18,244, 26,
+ 15,221, 10, 1, 74, 15,221, 18,247, 26, 15,221, 10, 1, 75, 15,221, 18,250, 26,
+ 15,221, 10, 1, 76, 15,221, 18,253, 26, 15,221, 10, 1, 77, 15,221, 17, 1, 0,
+ 26, 15,221, 10, 1, 78, 15,221, 17, 1, 3, 26, 15,221, 10, 1, 79, 15,221, 17,
+ 1, 6, 26, 15,221, 10, 1, 80, 15,221, 17, 1, 9, 26, 15,221, 10, 1, 81, 15,
+221, 17, 1, 12, 26, 15,221, 10, 1, 82, 15,221, 17, 1, 15, 26, 15,221, 10, 1,
+ 83, 15,221, 17, 1, 18, 26, 15,221, 10, 1, 84, 15,221, 17, 1, 21, 26, 15,221,
+ 10, 1, 85, 15,221, 17, 1, 24, 26, 15,221, 10, 1, 86, 15,221, 18,105, 26, 15,
+221, 10, 1, 87, 15,221, 17, 1, 29, 26, 15,221, 10, 1, 88, 15,221, 17, 1, 32,
+ 26, 15,221, 10, 1, 89, 15,221, 17, 1, 34, 26, 15,221, 10, 1, 90, 15,221, 17,
+ 1, 37, 26, 15,221, 10, 1, 91, 15,221, 17, 1, 40, 26, 15,221, 10, 1, 92, 15,
+221, 17, 1, 43, 26, 15,221, 10, 1, 93, 15,221, 17, 1, 46, 26, 15,221, 10, 1,
+ 94, 15,221, 17, 1, 52, 26, 15,221, 10, 1, 95, 15,221, 17, 1, 49, 26, 15,221,
+ 10, 1, 96, 15,221, 17, 1, 55, 26, 15,221, 10, 1, 97, 15,221, 17, 1, 58, 26,
+ 15,221, 10, 1, 98, 15,221, 17, 1, 99, 26, 0, 0, 0, 0, 0, 0, 0, 1,100,
+ 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 5,116,121,112,
+101, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 4,
+ 0, 0, 0, 12, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 57, 7, 2, 13, 1, 11, 1, 13, 0,
+ 26, 13, 0, 20, 3, 13, 1, 2, 0, 2, 13, 1, 11, 4, 13, 0, 20, 5, 13, 1,
+ 2, 1, 2, 26, 13, 0, 20, 6, 13, 1, 2, 0, 2, 15, 7, 13, 1, 18, 4, 13,
+ 1, 26, 13, 1, 18, 4, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, 99,104,101, 99,107, 80, 97,
+114, 97,109,115, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0,
+ 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 2,
+ 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 2, 0,
+ 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 12,
+ 99,104,101, 99,107, 80, 97,114, 97,109,115, 0, 4, 0, 0, 0, 32, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 61, 8, 2, 13, 0, 18, 1, 15, 5, 13, 2, 4, 0, 2, 2, 2,
+ 50, 39, 13, 4, 13, 1, 13, 3, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13,
+ 3, 42, 11, 8, 42, 2, 0, 1, 15, 5, 13, 2, 13, 3, 2, 2, 2, 23, 4, 23,
+ 3, 13, 3, 54, 43, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 5,115,101,
+108,102, 0, 2, 0, 0, 0, 6,112, 97,114, 97,109, 0, 2, 0, 0, 0, 5,102,
+117,110, 99, 0, 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,101,
+114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32,
+ 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,
+117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,
+105,122,101,100, 0, 2, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,
+116,101,115, 0, 4, 0, 0, 0, 43, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 80, 9, 2, 22,
+ 0, 15, 3, 13, 1, 4, 0, 2, 1, 2, 50, 18, 13, 2, 13, 3, 7, 1, 26, 15,
+ 3, 13, 1, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 22, 15, 3, 13, 2, 4, 0,
+ 2, 1, 2, 23, 3, 50, 25, 13, 1, 20, 4, 13, 3, 13, 1, 13, 3, 16, 2, 0,
+ 3, 15, 3, 13, 2, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 29, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 5,116,
+101,109,112, 0, 2, 0, 0, 0, 2,102, 0, 2, 0, 0, 0, 5,110,101,120,116,
+ 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, 0, 0, 0, 4,103,101,116, 0, 4,
+ 0, 0, 0, 57, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 82, 6, 2, 15, 1, 13, 1, 2, 1,
+ 1, 52, 63, 15, 2, 13, 1, 16, 52, 9, 13, 0, 13, 1, 16, 1, 2, 50, 47, 15,
+ 5, 13, 1, 2, 1, 1, 15, 7, 13, 0, 18, 8, 13, 2, 2, 1, 2, 13, 3, 52,
+ 23, 15, 9, 13, 3, 2, 1, 1, 13, 4, 52, 6, 13, 4, 1, 5, 50, 4, 13, 3,
+ 1, 5, 5, 1, 5, 2, 13, 0, 13, 1, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 10, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 12,116,121,
+112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99,
+ 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2,
+ 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115,116,114,117,112,
+112,101,114, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 16,
+ 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0,
+ 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71,101,116, 72,
+ 97,110,100,108,101, 0, 2, 0, 0, 0, 4,115,101,116, 0, 4, 0, 0, 0, 77,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0,228, 11, 3, 15, 2, 13, 1, 2, 1, 1, 52,209, 15,
+ 4, 13, 1, 2, 1, 1, 15, 6, 13, 1, 16, 13, 1, 11, 7, 32, 48, 12, 15, 8,
+ 13, 0, 18, 10, 2, 1, 1, 11, 11, 32, 52, 4, 4, 0, 23, 4, 13, 4, 52, 55,
+ 13, 4, 7, 2, 16, 13, 5, 44, 52, 14, 13, 4, 15, 8, 13, 0, 18, 10, 2, 1,
+ 1, 16, 23, 5, 15, 13, 13, 0, 18, 10, 13, 4, 7, 1, 16, 13, 5, 13, 2, 2,
+ 0, 4, 13, 0, 13, 1, 13, 2, 26, 1, 6, 5, 1, 50,111, 15, 2, 13, 2, 2,
+ 1, 1, 46, 7, 15, 14, 13, 2, 2, 1, 1, 52, 17, 15, 15, 13, 0, 18, 10, 13,
+ 3, 13, 2, 2, 0, 3, 1, 5, 50, 76, 15, 16, 13, 2, 2, 1, 1, 52, 34, 15,
+ 18, 13, 0, 18, 10, 13, 3, 2, 1, 2, 13, 5, 52, 15, 15, 15, 13, 0, 18, 10,
+ 13, 3, 13, 2, 2, 0, 3, 1, 6, 5, 1, 50, 33, 15, 19, 13, 2, 2, 1, 1,
+ 52, 24, 15, 20, 13, 2, 2, 0, 1, 15, 15, 13, 0, 18, 10, 13, 3, 13, 2, 18,
+ 21, 2, 0, 3, 1, 5, 5, 2, 13, 0, 13, 1, 13, 2, 26, 0, 0, 0, 0, 0,
+ 0, 0, 0, 22, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 6,
+118, 97,108,117,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,
+110,103, 0, 2, 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115,
+116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 3, 99, 98, 0, 2, 0, 0, 0,
+ 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 7,
+114,101,115,105,122,101, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 67,108,
+ 97,115,115, 78, 97,109,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0,
+ 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,
+103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, 0, 15,105,117,112,
+ 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0, 2, 0, 0, 0, 12,116,121,112,
+101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116,
+ 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,116,121,112,101, 95,
+110,105,108, 0, 2, 0, 0, 0, 10,111,108,100, 95,118, 97,108,117,101, 0, 2,
+ 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0,
+ 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0,
+ 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 9, 73, 85,
+ 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111,
+121, 0, 4, 0, 0, 0,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 89, 6, 1, 7, 1, 13,
+ 0, 13, 1, 16, 50, 66, 15, 3, 13, 2, 2, 1, 1, 48, 4, 13, 2, 18, 4, 52,
+ 37, 13, 2, 18, 4, 13, 0, 32, 52, 16, 13, 2, 11, 4, 4, 0, 26, 13, 2, 20,
+ 5, 2, 0, 1, 50, 12, 15, 6, 11, 7, 2, 0, 1, 15, 8, 2, 0, 0, 13, 1,
+ 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 23, 2, 13, 2, 54, 70, 15, 9, 13, 0,
+ 4, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 2,105, 0, 2,
+ 0, 0, 0, 5,101,108,101,109, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2,
+ 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0,
+ 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 10,114, 95,100,
+101,115,116,114,111,121, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0,
+ 0, 0, 29, 73,110,116,101,114,110, 97,108, 32,116, 97, 98,108,101, 32,105,110,
+ 99,111,110,115,105,115,116,101,110, 99,121, 0, 2, 0, 0, 0, 5,101,120,105,
+116, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2,
+ 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0,133, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 17, 3, 1, 13, 0, 20, 1, 2, 0, 1, 15, 2, 13, 0, 2, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111,121, 0, 2, 0, 0, 0, 11,
+ 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 7,100,101,116, 97,
+ 99,104, 0, 4, 0, 0, 0,138, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 96, 8, 1, 15, 0,
+ 13, 0, 2, 0, 1, 13, 0, 18, 3, 13, 1, 52, 78, 13, 0, 11, 3, 4, 0, 26,
+ 7, 1, 50, 58, 13, 1, 13, 2, 16, 13, 0, 32, 52, 41, 50, 20, 13, 1, 13, 2,
+ 13, 1, 13, 2, 7, 1, 37, 16, 26, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2,
+ 7, 1, 37, 16, 54, 30, 13, 1, 13, 2, 4, 0, 26, 1, 3, 13, 2, 7, 1, 37,
+ 23, 2, 13, 1, 13, 2, 16, 54, 65, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 2, 0, 0, 0, 10, 73,117,112, 68,101,116, 97, 99,104, 0, 2, 0, 0, 0, 5,
+115,101,108,102, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0,
+ 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 2,105, 0,
+ 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0,158, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 75, 6, 2, 15, 1, 13, 0, 13, 1, 2, 1, 2, 52, 57, 13, 1,
+ 11, 3, 13, 0, 26, 7, 1, 50, 21, 13, 0, 13, 2, 16, 13, 1, 32, 52, 4, 13,
+ 2, 1, 3, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 28, 15, 5, 13,
+ 0, 16, 13, 2, 13, 1, 26, 13, 2, 1, 3, 5, 1, 50, 4, 4, 0, 1, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10,
+ 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
+ 2,105, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0,
+ 2, 0, 0, 0, 4,109, 97,112, 0, 4, 0, 0, 0,175, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 2, 0, 0, 0, 7, 73,117,112, 77, 97,112, 0, 2, 0, 0, 0, 5,115,101,108,
+102, 0, 2, 0, 0, 0, 5,104,105,100,101, 0, 4, 0, 0, 0,179, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 72,105,100,101, 0, 2, 0, 0, 0,
+ 5,115,101,108,102, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 17, 67,114,101,
+ 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0,187, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112,
+ 67,114,101, 97,116,101, 84,105,109,101,114, 0, 2, 0, 0, 0, 9,105,117,112,
+116,105,109,101,114, 0, 4, 0, 0, 0,191, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,116,105,109,101,114, 0, 2, 0, 0,
+ 0, 13, 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 4, 0, 0, 0,200,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,105,117,
+112, 67,114,101, 97,116,101, 67,108,105,112, 98,111, 97,114,100, 0, 2, 0, 0,
+ 0, 13,105,117,112, 99,108,105,112, 98,111, 97,114,100, 0, 4, 0, 0, 0,204,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 13,
+ 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10, 99,108,105,112, 98,
+111, 97,114,100, 0, 2, 0, 0, 0, 10, 73, 85, 80, 68, 73, 65, 76, 79, 71, 0,
+ 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0,
+ 0,213, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2,
+ 1, 1, 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104,
+ 97,110,100,108,101, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101,
+ 68,105, 97,108,111,103, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 4, 0, 0, 0,219, 0, 0,
+ 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117,
+ 97, 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 83,104,111,119, 0, 2, 0, 0,
+ 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,115,104,111,119,120,121, 0, 4,
+ 0, 0, 0,223, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1,
+ 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120,
+ 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 10, 73,117,112, 83,104,111,119,
+ 88, 89, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 6,112,111,
+112,117,112, 0, 4, 0, 0, 0,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15,
+ 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,
+ 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,
+112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0,
+ 0, 10,105,117,112,100,105, 97,108,111,103, 0, 4, 0, 0, 0,231, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80,
+ 68, 73, 65, 76, 79, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,
+116,111,114, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,103, 0, 2, 0, 0, 0,
+ 9, 73, 85, 80, 82, 65, 68, 73, 79, 0, 4, 0, 0, 0,240, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, 13, 1, 7, 1, 16,
+ 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0,
+ 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2,
+ 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 82, 97,100,105,111, 0, 2,
+ 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9,
+105,117,112,114, 97,100,105,111, 0, 4, 0, 0, 0,246, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 26, 5, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 15, 4, 13, 1, 7, 1, 16,
+ 2, 0, 1, 13, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 9,
+ 73, 85, 80, 82, 65, 68, 73, 79, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,
+117, 99,116,111,114, 0, 2, 0, 0, 0, 23,105,117,112, 67,114,101, 97,116,101,
+ 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 2, 0, 0, 0, 6,114,
+ 97,100,105,111, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115,
+ 0, 4, 0, 0, 0,254, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,156, 11, 1, 22, 0, 7, 1,
+ 50, 61, 15, 3, 13, 0, 13, 2, 16, 2, 1, 1, 52, 29, 13, 1, 13, 2, 15, 4,
+ 22, 2, 11, 5, 13, 0, 13, 2, 16, 11, 6, 13, 0, 18, 6, 30, 1, 2, 1, 1,
+ 26, 50, 13, 15, 7, 11, 8, 13, 2, 42, 11, 9, 42, 2, 0, 1, 13, 2, 7, 1,
+ 37, 23, 2, 13, 0, 13, 2, 16, 54, 68, 13, 0, 18, 10, 52, 51, 7, 1, 50, 7,
+ 13, 3, 7, 1, 37, 23, 3, 13, 0, 13, 3, 16, 48, 10, 13, 0, 13, 3, 16, 13,
+ 0, 18, 10, 31, 54, 26, 13, 0, 13, 3, 16, 52, 10, 13, 1, 11, 10, 13, 1, 13,
+ 3, 16, 26, 5, 1, 50, 18, 13, 0, 18, 12, 52, 12, 13, 1, 11, 10, 13, 1, 13,
+ 0, 18, 12, 16, 26, 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0,
+ 0, 0, 2,104, 0, 2, 0, 0, 0, 4,116,109,112, 0, 2, 0, 0, 0, 2,105,
+ 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0,
+ 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,
+116,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0,
+ 6,101,114,114,111,114, 0, 2, 0, 0, 0, 8,111,112,116,105,111,110, 32, 0,
+ 2, 0, 0, 0, 18, 32,109,117,115,116, 32, 98,101, 32, 97, 32,115,116,114,105,
+110,103, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 2,106,
+ 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 9,101,100,
+104,114, 97,100,105,111, 0, 4, 0, 0, 1, 26, 0, 0, 0, 20, 64,105,117,112,
+108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 35,
+ 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, 2, 1, 1,
+ 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,103,103,108,
+101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, 0, 2,
+ 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, 7,101,100,
+104, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0,
+ 9,101,100,118,114, 97,100,105,111, 0, 4, 0, 0, 1, 32, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 35, 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1,
+ 2, 1, 1, 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,
+103,103,108,101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,
+115, 0, 2, 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0,
+ 7,101,100,118, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, 85, 0, 4, 0, 0, 1, 41, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0,159, 7, 2, 7, 1, 50,145, 13, 1, 13, 2, 16, 15, 3, 13, 3,
+ 2, 1, 1, 44, 52,121, 15, 4, 13, 3, 2, 1, 1, 11, 5, 31, 52, 15, 15, 6,
+ 11, 7, 13, 2, 42, 11, 8, 42, 2, 0, 1, 50, 94, 13, 3, 7, 1, 16, 48, 11,
+ 15, 9, 13, 3, 7, 1, 16, 2, 1, 1, 44, 52, 15, 15, 6, 11, 7, 13, 2, 42,
+ 11, 10, 42, 2, 0, 1, 50, 59, 13, 3, 7, 2, 16, 48, 11, 15, 9, 13, 3, 7,
+ 2, 16, 2, 1, 1, 44, 48, 11, 15, 11, 13, 3, 7, 2, 16, 2, 1, 1, 44, 48,
+ 11, 15, 12, 13, 3, 7, 2, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, 2,
+ 42, 11, 13, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2,
+ 16, 54,152, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, 98,106,
+ 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10,
+116,121,112,101, 95,105,116,101,109, 0, 2, 0, 0, 0, 5,116,121,112,101, 0,
+ 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,
+114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, 2, 0,
+ 0, 0, 32, 32,105,115, 32,110,111,116, 32, 97, 32,116, 97, 98,108,101, 32,110,
+111,114, 32, 97, 32,109,101,110,117, 32,105,116,101,109, 0, 2, 0, 0, 0, 12,
+116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 30, 32,100,111,
+101,115, 32,110,111,116, 32,104, 97,118,101, 32, 97, 32,115,116,114,105,110,103,
+ 32,116,105,116,108,101, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110,
+ 99,116,105,111,110, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,
+101,116, 0, 2, 0, 0, 0, 36, 32,100,111,101,115, 32,110,111,116, 32,104, 97,
+118,101, 32, 97,110, 32, 97, 99,116,105,111,110, 32,110,111,114, 32, 97, 32,109,
+101,110,117, 0, 4, 0, 0, 1, 59, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,189, 10, 2, 15,
+ 2, 2, 1, 0, 7, 1, 50,166, 13, 1, 13, 3, 16, 4, 0, 15, 6, 13, 4, 2,
+ 1, 1, 52, 6, 13, 4, 23, 5, 50,112, 13, 4, 7, 1, 16, 44, 52, 11, 15, 7,
+ 22, 0, 2, 1, 1, 23, 5, 50, 93, 15, 6, 13, 4, 7, 2, 16, 2, 1, 1, 52,
+ 38, 13, 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 7, 1, 13, 4, 7, 2, 16,
+ 26, 13, 4, 7, 2, 4, 0, 26, 15, 9, 13, 4, 2, 1, 1, 23, 5, 50, 43, 13,
+ 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 11, 10, 13, 4, 7, 2, 16, 26, 13,
+ 4, 7, 1, 4, 0, 26, 13, 4, 7, 2, 4, 0, 26, 15, 11, 13, 4, 2, 1, 1,
+ 23, 5, 15, 12, 13, 2, 13, 5, 2, 0, 2, 13, 5, 11, 13, 13, 2, 26, 13, 1,
+ 13, 3, 13, 5, 26, 13, 3, 7, 1, 37, 23, 3, 5, 2, 13, 1, 13, 3, 16, 54,
+173, 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 14,
+105,117,112, 67,114,101, 97,116,101, 77,101,110,117, 0, 2, 0, 0, 0, 2,105,
+ 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,101,108,101,109, 0, 2, 0,
+ 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 13,
+105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 6,116,105,
+116,108,101, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0,
+ 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,105,117,112,
+105,116,101,109, 0, 2, 0, 0, 0, 10, 73,117,112, 65,112,112,101,110,100, 0,
+ 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
+ 8,105,117,112,109,101,110,117, 0, 4, 0, 0, 1, 89, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78,
+ 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2,
+ 0, 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78,
+ 85, 0, 4, 0, 0, 1, 94, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13,
+ 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0,
+ 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112, 80,
+111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12,
+ 67, 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 4, 0, 0, 1,102, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, 2, 13, 1, 13, 2, 16, 2, 1,
+ 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, 5, 42, 2, 0, 1, 13, 2, 7,
+ 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0,
+ 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 6,101,114,
+114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0,
+ 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,
+101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,
+122,101,100, 0, 4, 0, 0, 1,112, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,187, 11, 2, 13,
+ 0, 20, 3, 2, 1, 1, 13, 1, 18, 4, 7, 1, 7, 0, 50, 14, 13, 5, 7, 1,
+ 37, 23, 5, 13, 4, 7, 1, 37, 23, 4, 13, 1, 13, 4, 16, 54, 21, 7, 1, 23,
+ 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, 2,
+ 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, 1,
+ 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 50, 79, 15, 9, 13, 2, 13, 1, 13,
+ 4, 16, 2, 0, 2, 13, 1, 13, 4, 16, 11, 10, 13, 2, 26, 13, 4, 7, 1, 37,
+ 23, 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0,
+ 2, 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13,
+ 1, 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 13, 4, 13, 5, 34, 54, 86, 13,
+ 2, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, 4,111, 98,106,
+ 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 5,115,101,
+108,102, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,
+109,101,110,116, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0,
+ 0, 2,105, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95,
+ 89, 69, 83, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0,
+ 0, 10, 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 11, 73, 85, 80,
+ 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88,
+ 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,109,101,
+110,116, 0, 4, 0, 0, 1,146, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0,
+ 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112,
+ 67,114,101, 97,116,101, 72, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,104,
+ 98,111,120, 0, 4, 0, 0, 1,150, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15,
+ 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0, 2, 0, 0,
+ 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,104,
+ 98,111,120, 0, 2, 0, 0, 0, 7,101,100,104, 98,111,120, 0, 4, 0, 0, 1,
+156, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3,
+ 20, 4, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8,
+ 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88,
+ 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0,
+ 0, 0, 8,101,100,102,105,101,108,100, 0, 4, 0, 0, 1,162, 0, 0, 0, 20,
+ 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0,
+ 0, 0, 0,123, 7, 1, 4, 1, 15, 3, 13, 0, 18, 4, 2, 1, 1, 46, 9, 15,
+ 5, 13, 0, 18, 4, 2, 1, 1, 52, 19, 15, 6, 22, 1, 11, 7, 13, 0, 18, 4,
+ 30, 0, 2, 1, 1, 23, 1, 50, 7, 15, 8, 11, 9, 2, 0, 1, 13, 0, 18, 10,
+ 52, 19, 15, 11, 22, 1, 11, 10, 13, 0, 18, 10, 30, 0, 2, 1, 1, 23, 2, 50,
+ 17, 15, 11, 22, 1, 11, 10, 13, 0, 18, 12, 30, 0, 2, 1, 1, 23, 2, 13, 2,
+ 48, 2, 13, 1, 52, 16, 15, 13, 22, 2, 13, 1, 13, 2, 29, 0, 2, 3, 3, 1,
+ 50, 4, 4, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 2,
+102, 0, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0,
+ 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 7,112,114,
+111,109,112,116, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,110,117,109, 98,101,
+114, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0,
+ 6,116,105,116,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0,
+ 0, 0, 55,112, 97,114, 97,109,101,116,101,114, 32,112,114,111,109,112,116, 32,
+104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,
+115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,122,101,100, 0, 2, 0,
+ 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8,105,117,112,116,101,120,
+116, 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 7,101,
+100,104, 98,111,120, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 4,
+ 0, 0, 1,185, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,
+116,101, 86, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0,
+ 4, 0, 0, 1,189, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13,
+ 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,118, 98,111,120, 0,
+ 2, 0, 0, 0, 7,101,100,118, 98,111,120, 0, 4, 0, 0, 1,195, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, 20, 4, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95,
+ 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0,
+ 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8, 73,
+ 85, 80, 90, 66, 79, 88, 0, 4, 0, 0, 1,204, 0, 0, 0, 20, 64,105,117,112,
+108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8,
+ 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0,
+ 14,105,117,112, 67,114,101, 97,116,101, 90, 98,111,120, 0, 2, 0, 0, 0, 8,
+105,117,112,122, 98,111,120, 0, 4, 0, 0, 1,208, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 44, 6, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 7, 1, 50, 17, 15, 5, 13, 1,
+ 13, 2, 16, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 24,
+ 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 8, 73,
+ 85, 80, 90, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,
+116,111,114, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11,105,117,112, 83,
+101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 5,122, 98,111,120, 0, 2, 0, 0,
+ 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 4, 0, 0, 1,223, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
+ 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,
+116,101, 70,105,108,108, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0,
+ 4, 0, 0, 1,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13,
+ 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,102,105,108,108, 0,
+ 2, 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 5,
+116,121,112,101, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0,
+ 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 4, 0, 0, 1,236, 0, 0,
+ 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117,
+ 97, 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52,
+ 7, 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,
+116,105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0,
+ 0, 1, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 66,117,116,
+116,111,110, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 4,
+ 0, 0, 1,243, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 98,117,116,116,
+111,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, 1,
+252, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,
+117,112, 67,114,101, 97,116,101, 84,101,120,116, 0, 2, 0, 0, 0, 8,105,117,
+112,116,101,120,116, 0, 4, 0, 0, 2, 0, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 2,
+ 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0,
+ 5,116,101,120,116, 0, 2, 0, 0, 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76,
+ 73, 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0,
+ 2, 9, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,
+105,117,112, 67,114,101, 97,116,101, 77,117,108,116,105, 76,105,110,101, 0, 2,
+ 0, 0, 0, 13,105,117,112,109,117,108,116,105,108,105,110,101, 0, 4, 0, 0,
+ 2, 13, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0,
+ 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, 73, 78, 69, 0, 2, 0, 0, 0, 12,
+ 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,109,117,108,
+116,105,108,105,110,101, 0, 2, 0, 0, 0, 9, 73, 85, 80, 76, 65, 66, 69, 76,
+ 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 2, 22, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, 7,
+ 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,116,
+105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, 0,
+ 1, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 76, 97, 98,101,
+108, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 4, 0, 0, 2,
+ 29, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0,
+ 9, 73, 85, 80, 76, 65, 66, 69, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,
+114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,108, 97, 98,101,108, 0, 2, 0,
+ 0, 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 10, 73, 85,
+ 80, 66, 85, 84, 84, 79, 78, 0, 4, 0, 0, 2, 38, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,
+101, 97,116,101, 84,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,116,108,
+101, 0, 2, 0, 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 4, 0, 0,
+ 2, 42, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0,
+ 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7,116,111,103,103,108,101,
+ 0, 2, 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 4, 0, 0, 2, 51, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 14,105,117,112, 67,114,101, 97,116,101, 73,116,101,109, 0, 2, 0, 0, 0, 6,
+116,105,116,108,101, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 4,
+ 0, 0, 2, 55, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2,
+ 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,
+116,121,112,101, 95,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,101,
+ 0, 4, 0, 0, 2, 64, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 31, 6, 2, 15, 2, 13, 1,
+ 18, 3, 13, 1, 7, 1, 16, 2, 1, 2, 13, 1, 7, 1, 16, 11, 4, 13, 2, 26,
+ 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 2,104, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101,
+ 97,116,101, 83,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,
+101, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, 4, 0, 0, 2, 70, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73,
+ 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,
+114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0,
+ 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 4, 0,
+ 0, 2, 79, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 19,105,117,112, 67,114,101, 97,116,101, 83,101,112, 97,114, 97,116,111,114, 0,
+ 2, 0, 0, 0, 13,105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 4, 0,
+ 0, 2, 83, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, 0, 0, 0,
+ 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,115,101,
+112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69,
+ 68, 76, 71, 0, 4, 0, 0, 2, 92, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15,
+ 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,
+ 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,
+112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0,
+ 2, 96, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101,
+ 70,105,108,101, 68,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101,
+100,108,103, 0, 4, 0, 0, 2,100, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15,
+ 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, 68, 76, 71, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 14, 73, 85, 80, 77, 69,
+ 83, 83, 65, 71, 69, 68, 76, 71, 0, 4, 0, 0, 2,109, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0,
+ 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,
+102, 0, 4, 0, 0, 2,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 20,105,117,112, 67,
+114,101, 97,116,101, 77,101,115,115, 97,103,101, 68,108,103, 0, 2, 0, 0, 0,
+ 14,105,117,112,109,101,115,115, 97,103,101,100,108,103, 0, 4, 0, 0, 2,117,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 14,
+ 73, 85, 80, 77, 69, 83, 83, 65, 71, 69, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,109,101,115,115,
+ 97,103,101,100,108,103, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82,
+ 68, 76, 71, 0, 4, 0, 0, 2,126, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15,
+ 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,
+ 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,
+112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0,
+ 2,130, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101,
+ 67,111,108,111,114, 68,108,103, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108,
+111,114,100,108,103, 0, 4, 0, 0, 2,134, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 68,
+ 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 9, 99,111,108,111,114,100,108,103, 0, 2, 0, 0, 0, 11, 73,
+ 85, 80, 70, 79, 78, 84, 68, 76, 71, 0, 4, 0, 0, 2,143, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2,
+ 0, 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,
+108,102, 0, 4, 0, 0, 2,147, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0,
+ 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112,
+ 67,114,101, 97,116,101, 70,111,110,116, 68,108,103, 0, 2, 0, 0, 0, 11,105,
+117,112,102,111,110,116,100,108,103, 0, 4, 0, 0, 2,151, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 79,
+ 78, 84, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,
+111,114, 0, 2, 0, 0, 0, 8,102,111,110,116,100,108,103, 0, 2, 0, 0, 0,
+ 8, 73, 85, 80, 85, 83, 69, 82, 0, 4, 0, 0, 2,160, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0,
+ 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 85,115,101,114, 0, 2, 0, 0,
+ 0, 8,105,117,112,117,115,101,114, 0, 4, 0, 0, 2,164, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 10, 2, 0, 15, 0, 20, 1, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 0, 0, 0, 8, 73, 85, 80, 85, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,117,115,101,114,
+ 0, 2, 0, 0, 0, 14, 73, 85, 80, 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0,
+ 4, 0, 0, 2,173, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15,
+ 2, 13, 1, 13, 2, 16, 2, 1, 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11,
+ 5, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0,
+ 0, 2,105, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116,
+ 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114,
+ 97,109,101,116,101,114, 32, 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,
+111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,
+105,110,105,116,105, 97,108,105,122,101,100, 0, 4, 0, 0, 2,183, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 40, 8, 2, 15, 2, 2, 1, 0, 7, 1, 50, 17, 13, 2, 11, 4,
+ 13, 1, 13, 3, 16, 26, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 3, 16, 54, 24,
+ 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 20,105,
+117,112, 67,114,101, 97,116,101, 78,111,114,109, 97,108,105,122,101,114, 0, 2,
+ 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11, 97,100,100, 99,111,110,116,114,111,
+108, 0, 2, 0, 0, 0, 14,105,117,112,110,111,114,109, 97,108,105,122,101,114,
+ 0, 4, 0, 0, 2,193, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 10, 2, 0, 15, 0, 20, 1,
+ 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 14, 73, 85, 80,
+ 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,
+116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,110,111,114,109, 97,108,105,
+122,101,114, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, 2, 0,
+ 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 2,202,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1,
+ 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,104, 0, 2,
+ 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 70,114, 97,109,101, 0, 2,
+ 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9,
+105,117,112,102,114, 97,109,101, 0, 4, 0, 0, 2,208, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65,
+ 77, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 6,102,114, 97,109,101, 0, 2, 0, 0, 0, 10, 73, 85, 80, 67,
+ 65, 78, 86, 65, 83, 0, 4, 0, 0, 2,217, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3,
+ 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,
+111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 67, 97,
+110,118, 97,115, 0, 2, 0, 0, 0, 10,105,117,112, 99, 97,110,118, 97,115, 0,
+ 4, 0, 0, 2,221, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13,
+ 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 10, 73, 85, 80, 67, 65, 78, 86, 65, 83, 0, 2, 0, 0, 0, 12,
+ 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 99, 97,110,
+118, 97,115, 0, 2, 0, 0, 0, 8, 73, 85, 80, 76, 73, 83, 84, 0, 4, 0, 0,
+ 2,230, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,
+105,117,112, 67,114,101, 97,116,101, 76,105,115,116, 0, 4, 0, 0, 2,234, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 42, 6, 2, 15, 1, 13, 1, 2, 1, 1, 11, 2, 32, 52,
+ 16, 15, 3, 13, 0, 18, 5, 11, 6, 13, 1, 42, 3, 2, 2, 50, 11, 15, 7, 18,
+ 8, 13, 0, 13, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0,
+ 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0,
+ 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,
+116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102,
+ 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2,
+ 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,103,101,116, 0,
+ 4, 0, 0, 2,242, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 90, 8, 3, 15, 2, 13, 1, 2,
+ 1, 1, 11, 3, 32, 52, 62, 15, 4, 13, 2, 2, 1, 1, 46, 7, 15, 5, 13, 2,
+ 2, 1, 1, 52, 21, 15, 6, 13, 0, 18, 8, 11, 9, 13, 1, 42, 11, 9, 13, 2,
+ 42, 3, 3, 3, 50, 23, 13, 2, 4, 0, 32, 52, 16, 15, 6, 13, 0, 18, 8, 11,
+ 9, 13, 1, 42, 13, 2, 3, 3, 3, 15, 10, 18, 11, 13, 0, 13, 1, 13, 2, 3,
+ 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 6,105,110,100,101,
+120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 5,116,121,
+112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 12,
+116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 12,116,121,112,
+101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116,
+ 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, 0,
+ 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,115,101,116, 0, 2,
+ 0, 0, 0, 8,105,117,112,108,105,115,116, 0, 4, 0, 0, 2,253, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80,
+ 76, 73, 83, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 5,108,105,115,116, 0, 2, 0, 0, 0, 9, 73, 85, 80,
+ 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0,
+ 0, 3, 6, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0,116, 8, 2, 7, 1, 50, 92, 7, 1, 50,
+ 32, 15, 3, 13, 1, 13, 2, 16, 13, 3, 16, 2, 1, 1, 11, 4, 31, 52, 7, 15,
+ 5, 11, 6, 2, 0, 1, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 2, 16, 13, 3,
+ 16, 54, 42, 13, 1, 18, 7, 48, 10, 13, 3, 7, 1, 38, 13, 1, 18, 7, 31, 52,
+ 9, 15, 5, 11, 8, 2, 0, 1, 50, 10, 13, 1, 11, 7, 13, 3, 7, 1, 38, 26,
+ 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, 16, 54, 99, 13, 1, 11, 9,
+ 13, 2, 7, 1, 38, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 4,
+111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,106, 0, 2, 0,
+ 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0,
+ 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 38,110,111,110, 45,
+110,117,109,101,114,105, 99, 32,118, 97,108,117,101, 32,105,110, 32,105,109, 97,
+103,101, 32,100,101,102,105,110,105,116,105,111,110, 0, 2, 0, 0, 0, 6,119,
+105,100,116,104, 0, 2, 0, 0, 0, 26,105,110, 99,111,110,115,105,115,116,101,
+110,116, 32,105,109, 97,103,101, 32,108,101,110,103,104,116, 0, 2, 0, 0, 0,
+ 7,104,101,105,103,104,116, 0, 4, 0, 0, 3, 29, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 74, 9, 2, 15, 2, 13, 1, 18, 3, 13, 1, 18, 4, 13, 1, 2, 1, 3, 15, 5,
+ 13, 1, 18, 6, 2, 1, 1, 11, 7, 32, 52, 38, 7, 1, 50, 23, 15, 9, 13, 2,
+ 13, 3, 13, 1, 18, 6, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 37, 23, 3, 13,
+ 1, 18, 6, 13, 3, 16, 54, 32, 5, 1, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 10, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,
+100,108,101, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 73,109,
+ 97,103,101, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 7,
+104,101,105,103,104,116, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0,
+ 0, 7, 99,111,108,111,114,115, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0,
+ 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,
+116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,105,117,112,105,109, 97,103,
+101, 0, 4, 0, 0, 3, 41, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20,
+ 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,
+111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 73, 77, 65, 71, 69, 0, 2, 0, 0, 0,
+ 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,105,109,
+ 97,103,101, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66,
+ 0, 4, 0, 0, 3, 49, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1,
+ 18, 2, 13, 1, 18, 3, 13, 1, 18, 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,
+114,101, 97,116,101, 73,109, 97,103,101, 82, 71, 66, 0, 2, 0, 0, 0, 6,119,
+105,100,116,104, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, 0, 2, 0, 0,
+ 0, 7,112,105,120,101,108,115, 0, 2, 0, 0, 0, 12,105,117,112,105,109, 97,
+103,101,114,103, 98, 0, 4, 0, 0, 3, 53, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82,
+ 71, 66, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 9,105,109, 97,103,101,114,103, 98, 0, 2, 0, 0, 0, 13, 73,
+ 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 4, 0, 0, 3, 61, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, 18, 2, 13, 1, 18, 3, 13, 1, 18,
+ 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 19,105,117,112, 67,114,101, 97,116,101, 73,109, 97,103,
+101, 82, 71, 66, 65, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0,
+ 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, 0, 7,112,105,120,101,108,115,
+ 0, 2, 0, 0, 0, 13,105,117,112,105,109, 97,103,101,114,103, 98, 97, 0, 4,
+ 0, 0, 3, 65, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 13, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 2, 0, 0,
+ 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,105,
+109, 97,103,101,114,103, 98, 97, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79,
+ 71, 82, 69, 83, 83, 66, 65, 82, 0, 4, 0, 0, 3, 74, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0,
+ 0, 0, 21,105,117,112, 67,114,101, 97,116,101, 80,114,111,103,114,101,115,115,
+ 66, 97,114, 0, 2, 0, 0, 0, 15,105,117,112,112,114,111,103,114,101,115,115,
+ 98, 97,114, 0, 4, 0, 0, 3, 78, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15,
+ 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 2,111, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, 71, 82, 69, 83, 83,
+ 66, 65, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114,
+ 0, 2, 0, 0, 0, 12,112,114,111,103,114,101,115,115, 98, 97,114, 0, 2, 0,
+ 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0,
+ 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 7, 65, 67, 84, 73, 79, 78,
+ 0, 2, 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 10,
+ 65, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 9,103,101,116,102,111,
+ 99,117,115, 0, 2, 0, 0, 0, 12, 71, 69, 84, 70, 79, 67, 85, 83, 95, 67, 66,
+ 0, 2, 0, 0, 0, 16,105,117,112, 95,103,101,116,102,111, 99,117,115, 95, 99,
+ 98, 0, 2, 0, 0, 0, 10,107,105,108,108,102,111, 99,117,115, 0, 2, 0, 0,
+ 0, 13, 75, 73, 76, 76, 70, 79, 67, 85, 83, 95, 67, 66, 0, 2, 0, 0, 0, 17,
+105,117,112, 95,107,105,108,108,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0,
+ 0, 6,102,111, 99,117,115, 0, 2, 0, 0, 0, 9, 70, 79, 67, 85, 83, 95, 67,
+ 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,102,111, 99,117,115, 95, 99, 98, 0,
+ 2, 0, 0, 0, 6,107, 95, 97,110,121, 0, 2, 0, 0, 0, 6, 75, 95, 65, 78,
+ 89, 0, 2, 0, 0, 0, 10,105,117,112, 95,107, 95, 97,110,121, 0, 2, 0, 0,
+ 0, 5,104,101,108,112, 0, 2, 0, 0, 0, 8, 72, 69, 76, 80, 95, 67, 66, 0,
+ 2, 0, 0, 0, 12,105,117,112, 95,104,101,108,112, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8, 99, 97,114,101,116, 99, 98, 0, 2, 0, 0, 0, 9, 67, 65, 82, 69, 84,
+ 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, 99, 97,114,101,116, 95, 99,
+ 98, 0, 2, 0, 0, 0, 9,107,101,121,112,114,101,115,115, 0, 2, 0, 0, 0,
+ 12, 75, 69, 89, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,
+112, 95,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 7,115,
+ 99,114,111,108,108, 0, 2, 0, 0, 0, 10, 83, 67, 82, 79, 76, 76, 95, 67, 66,
+ 0, 2, 0, 0, 0, 14,105,117,112, 95,115, 99,114,111,108,108, 95, 99, 98, 0,
+ 2, 0, 0, 0, 10,116,114, 97,121, 99,108,105, 99,107, 0, 2, 0, 0, 0, 13,
+ 84, 82, 65, 89, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,
+112, 95,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 6,
+ 99,108,111,115,101, 0, 2, 0, 0, 0, 9, 67, 76, 79, 83, 69, 95, 67, 66, 0,
+ 2, 0, 0, 0, 13,105,117,112, 95, 99,108,111,115,101, 95, 99, 98, 0, 2, 0,
+ 0, 0, 5,111,112,101,110, 0, 2, 0, 0, 0, 8, 79, 80, 69, 78, 95, 67, 66,
+ 0, 2, 0, 0, 0, 12,105,117,112, 95,111,112,101,110, 95, 99, 98, 0, 2, 0,
+ 0, 0, 7,115,104,111,119, 99, 98, 0, 2, 0, 0, 0, 8, 83, 72, 79, 87, 95,
+ 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,104,111,119, 95, 99, 98, 0,
+ 2, 0, 0, 0, 6,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 7, 77, 65, 80, 95,
+ 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,109, 97,112, 95, 99, 98, 0, 2,
+ 0, 0, 0, 8,117,110,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 9, 85, 78, 77,
+ 65, 80, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,117,110,109, 97,112,
+ 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114,111,112,102,105,108,101,115, 0, 2,
+ 0, 0, 0, 13, 68, 82, 79, 80, 70, 73, 76, 69, 83, 95, 67, 66, 0, 2, 0, 0,
+ 0, 17,105,117,112, 95,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,109,101,110,117, 99,108,111,115,101, 0, 2, 0, 0, 0, 13, 77,
+ 69, 78, 85, 67, 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112,
+ 95,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,
+105,103,104,108,105,103,104,116, 0, 2, 0, 0, 0, 13, 72, 73, 71, 72, 76, 73,
+ 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,104,105,103,104,
+108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 4,119,111,109, 0, 2, 0,
+ 0, 0, 7, 87, 79, 77, 95, 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,119,
+111,109, 95, 99, 98, 0, 2, 0, 0, 0, 6,119,104,101,101,108, 0, 2, 0, 0,
+ 0, 9, 87, 72, 69, 69, 76, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,
+119,104,101,101,108, 95, 99, 98, 0, 2, 0, 0, 0, 10, 66, 85, 84, 84, 79, 78,
+ 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95, 98,117,116,116,111,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 10,
+ 82, 69, 83, 73, 90, 69, 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,114,
+101,115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,109,111,118,101, 0, 2,
+ 0, 0, 0, 12,105,117,112, 95,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0,
+ 7,109,111,116,105,111,110, 0, 2, 0, 0, 0, 10, 77, 79, 84, 73, 79, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,109,111,116,105,111,110, 95, 99,
+ 98, 0, 2, 0, 0, 0, 12,101,110,116,101,114,119,105,110,100,111,119, 0, 2,
+ 0, 0, 0, 15, 69, 78, 84, 69, 82, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, 2,
+ 0, 0, 0, 19,105,117,112, 95,101,110,116,101,114,119,105,110,100,111,119, 95,
+ 99, 98, 0, 2, 0, 0, 0, 12,108,101, 97,118,101,119,105,110,100,111,119, 0,
+ 2, 0, 0, 0, 15, 76, 69, 65, 86, 69, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0,
+ 2, 0, 0, 0, 19,105,117,112, 95,108,101, 97,118,101,119,105,110,100,111,119,
+ 95, 99, 98, 0, 2, 0, 0, 0, 5,101,100,105,116, 0, 2, 0, 0, 0, 8, 69,
+ 68, 73, 84, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,101,100,105,116,
+ 95, 99, 98, 0, 2, 0, 0, 0, 12,109,117,108,116,105,115,101,108,101, 99,116,
+ 0, 2, 0, 0, 0, 15, 77, 85, 76, 84, 73, 83, 69, 76, 69, 67, 84, 95, 67, 66,
+ 0, 2, 0, 0, 0, 19,105,117,112, 95,109,117,108,116,105,115,101,108,101, 99,
+116, 95, 99, 98, 0, 2, 0, 0, 0, 7,102,105,108,101, 99, 98, 0, 2, 0, 0,
+ 0, 8, 70, 73, 76, 69, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,102,
+105,108,101, 95, 99, 98, 0, 2, 0, 0, 0, 14,109,100,105, 97, 99,116,105,118,
+ 97,116,101, 99, 98, 0, 2, 0, 0, 0, 15, 77, 68, 73, 65, 67, 84, 73, 86, 65,
+ 84, 69, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109,100,105, 97, 99,
+116,105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 11,100,114,111,112,100,
+111,119,110, 99, 98, 0, 2, 0, 0, 0, 12, 68, 82, 79, 80, 68, 79, 87, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,100,114,111,112,100,111,119,110,
+ 95, 99, 98, 0, 2, 0, 0, 0, 11,100, 98,108, 99,108,105, 99,107, 99, 98, 0,
+ 2, 0, 0, 0, 12, 68, 66, 76, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0,
+ 0, 16,105,117,112, 95,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0,
+ 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95,116,111,103,103,108,101,
+ 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110, 95,116,101,120,
+116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95, 98,117,
+116,116,111,110, 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110,
+ 95,108,105,115,116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,
+110, 95, 99, 97,110,118, 97,115, 0, 2, 0, 0, 0, 17,105,117,112, 95, 97, 99,
+116,105,111,110, 95,116,105,109,101,114, 0, 2, 0, 0, 0, 10, 97, 99,116,105,
+111,110, 95, 99, 98, 0, 2, 0, 0, 0, 12,103,101,116,102,111, 99,117,115, 95,
+ 99, 98, 0, 2, 0, 0, 0, 13,107,105,108,108,102,111, 99,117,115, 95, 99, 98,
+ 0, 2, 0, 0, 0, 9,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 8,
+104,101,108,112, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99,
+ 98, 0, 2, 0, 0, 0, 12,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,115, 99,114,111,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 13,116,
+114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,111,
+115,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,111,112,101,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 8,115,104,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 7,109, 97,112,
+ 95, 99, 98, 0, 2, 0, 0, 0, 9,117,110,109, 97,112, 95, 99, 98, 0, 2, 0,
+ 0, 0, 13,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, 0, 0, 0,
+ 13,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 13,104,
+105,103,104,108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 7,119,111,109,
+ 95, 99, 98, 0, 2, 0, 0, 0, 9,119,104,101,101,108, 95, 99, 98, 0, 2, 0,
+ 0, 0, 10, 98,117,116,116,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,
+115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,109,111,118,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 10,109,111,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0,
+ 15,101,110,116,101,114,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0,
+ 15,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0,
+ 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,108,116,105,115,
+101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,100,105, 97, 99,116,
+105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,102,105,108,101, 95, 99,
+ 98, 0, 2, 0, 0, 0, 12,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 12,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0,
+ 16,118, 97,108,117,101, 99,104, 97,110,103,101,100, 95, 99, 98, 0, 2, 0, 0,
+ 0, 15,118, 97,108,117,101, 99,104, 97,110,103,101,100, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_widgets_be32.lo");
+}
diff --git a/iup/srclua3/loh/iuplua_widgets_be64.loh b/iup/srclua3/loh/iuplua_widgets_be64.loh
new file mode 100755
index 0000000..6ca1eb6
--- /dev/null
+++ b/iup/srclua3/loh/iuplua_widgets_be64.loh
@@ -0,0 +1,939 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/iuplua_widgets_be64.lo");
+*/
+/* ../obj/iuplua3/iuplua_widgets_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 20, 64,105,117,112,108,117,
+ 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 7,202, 67, 0,
+ 22, 1, 11, 1, 22, 0, 30, 0, 25, 0, 15, 0, 11, 2, 11, 3, 26, 15, 0, 11,
+ 4, 11, 5, 26, 15, 0, 11, 6, 11, 7, 26, 15, 0, 11, 8, 11, 9, 26, 15, 0,
+ 11, 10, 11, 11, 26, 15, 0, 11, 12, 11, 13, 26, 15, 0, 11, 14, 11, 15, 26, 15,
+ 0, 11, 16, 11, 17, 26, 15, 0, 11, 18, 11, 19, 26, 15, 0, 11, 20, 11, 21, 26,
+ 15, 0, 11, 22, 11, 23, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 24, 15, 24, 11,
+ 26, 11, 27, 26, 11, 29, 25, 28, 15, 30, 11, 31, 15, 28, 26, 22, 1, 11, 25, 15,
+ 0, 30, 0, 25, 32, 15, 32, 11, 26, 11, 33, 26, 11, 35, 25, 34, 15, 30, 11, 36,
+ 15, 34, 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1,
+ 25, 37, 15, 37, 11, 26, 11, 39, 26, 15, 37, 11, 40, 11, 41, 26, 15, 37, 11, 42,
+ 11, 43, 26, 15, 37, 11, 44, 11, 45, 26, 11, 47, 25, 46, 15, 30, 11, 48, 15, 46,
+ 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1, 25, 49,
+ 15, 49, 11, 26, 11, 50, 26, 11, 52, 25, 51, 15, 30, 11, 53, 15, 51, 26, 11, 55,
+ 25, 54, 11, 57, 25, 56, 11, 59, 25, 58, 22, 1, 11, 25, 15, 0, 30, 0, 25, 60,
+ 15, 60, 11, 4, 11, 61, 26, 15, 60, 11, 26, 11, 62, 26, 11, 64, 25, 63, 15, 30,
+ 11, 65, 15, 63, 26, 15, 66, 11, 44, 11, 67, 26, 22, 1, 11, 25, 15, 0, 30, 0,
+ 25, 68, 15, 68, 11, 4, 11, 69, 26, 15, 68, 11, 26, 11, 70, 26, 22, 1, 11, 25,
+ 15, 68, 30, 0, 25, 71, 15, 71, 11, 72, 11, 73, 26, 11, 75, 25, 74, 15, 30, 11,
+ 76, 15, 74, 26, 11, 78, 25, 77, 11, 80, 25, 79, 22, 1, 11, 25, 15, 68, 30, 0,
+ 25, 81, 15, 81, 11, 72, 11, 82, 26, 11, 84, 25, 83, 15, 30, 11, 85, 15, 83, 26,
+ 11, 87, 25, 86, 22, 1, 11, 25, 15, 68, 30, 0, 25, 88, 15, 88, 11, 72, 11, 89,
+ 26, 11, 91, 25, 90, 15, 30, 11, 92, 15, 90, 26, 22, 1, 11, 25, 15, 0, 30, 0,
+ 25, 93, 15, 93, 11, 26, 11, 94, 26, 11, 96, 25, 95, 15, 30, 11, 97, 15, 95, 26,
+ 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 11,100, 15,101, 30, 0, 30, 1, 25, 98,
+ 15, 98, 11, 26, 11,102, 26, 11,104, 25,103, 15, 30, 11,105, 15,103, 26, 22, 1,
+ 11, 25, 15, 0, 30, 0, 25,106, 15,106, 11, 26, 11,107, 26, 11,109, 25,108, 15,
+ 30, 11,110, 15,108, 26, 22, 1, 11, 25, 15,112, 30, 0, 25,111, 15,111, 11, 26,
+ 11,113, 26, 11,115, 25,114, 15, 30, 11,116, 15,114, 26, 22, 2, 11, 25, 15, 0,
+ 11, 99, 22, 1, 11,118, 15,101, 30, 0, 30, 1, 25,117, 15,117, 11, 26, 11,119,
+ 26, 11,121, 25,120, 15, 30, 11,122, 15,120, 26, 22, 1, 11, 25, 15,124, 30, 0,
+ 25,123, 15,123, 11, 26, 11,125, 26, 11,127, 25,126, 15, 30, 11,128, 15,126, 26,
+ 22, 1, 11, 25, 15,124, 30, 0, 25,129, 15,129, 11, 26, 11,130, 26, 11,132, 25,
+131, 15, 30, 11,133, 15,131, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 2, 15,135,
+ 29, 0, 1, 11,136, 15,101, 30, 0, 30, 1, 25,134, 15,134, 11, 26, 11,137, 26,
+ 11,139, 25,138, 15, 30, 11,140, 15,138, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,
+141, 15,141, 11, 26, 11,142, 26, 11,144, 25,143, 15, 30, 11,145, 15,143, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,146, 15,146, 11, 44, 11,147, 26, 15,146, 11, 26,
+ 11,148, 26, 11,150, 25,149, 15, 30, 11,151, 15,149, 26, 22, 1, 11, 25, 15, 0,
+ 30, 0, 25,152, 15,152, 11, 44, 11,153, 26, 15,152, 11, 26, 11,154, 26, 11,156,
+ 25,155, 15, 30, 11,157, 15,155, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,158, 15,
+158, 11, 44, 11,159, 26, 15,158, 11, 26, 11,160, 26, 11,162, 25,161, 15, 30, 11,
+163, 15,161, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,164, 15,164, 11, 44, 11,165,
+ 26, 15,164, 11, 26, 11,166, 26, 11,168, 25,167, 15, 30, 11,169, 15,167, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,170, 15,170, 11, 26, 11,171, 26, 11,173, 25,172,
+ 15, 30, 11,174, 15,172, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,175, 15,175, 11,
+ 4, 11,176, 26, 15,175, 11, 26, 11,177, 26, 11,179, 25,178, 15, 30, 11,180, 15,
+178, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 15,182, 29, 0, 1, 30, 1, 25,
+181, 15,181, 11, 26, 11,183, 26, 11,185, 25,184, 15, 30, 11,186, 15,184, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,187, 15,187, 11, 26, 11,188, 26, 11,190, 25,189,
+ 15, 30, 11,191, 15,189, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,192, 15,192, 11,
+ 26, 11,193, 26, 15,192, 11, 8, 11,194, 26, 15,192, 11, 10, 11,195, 26, 11,197,
+ 25,196, 15, 30, 11,198, 15,196, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,199, 15,
+199, 11, 4, 11,201, 26, 15,199, 11, 26, 11,202, 26, 11,204, 25,203, 15, 30, 11,
+205, 15,203, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,206, 15,206, 11, 26, 11,207,
+ 26, 11,209, 25,208, 15, 30, 11,210, 15,208, 26, 22, 1, 11, 25, 15,200, 30, 0,
+ 25,211, 15,211, 11, 26, 11,212, 26, 11,214, 25,213, 15, 30, 11,215, 15,213, 26,
+ 22, 1, 11, 25, 15,200, 30, 0, 25,216, 15,216, 11, 26, 11,217, 26, 11,219, 25,
+218, 15, 30, 11,220, 15,218, 26, 22, 33, 11,222, 22, 2, 11,223, 4, 0, 29, 0,
+ 2, 11,224, 22, 2, 11,225, 4, 0, 29, 0, 2, 11,226, 22, 2, 11,227, 15,228,
+ 29, 0, 2, 11,229, 22, 2, 11,230, 15,231, 29, 0, 2, 11,232, 22, 2, 11,233,
+ 15,234, 29, 0, 2, 11,235, 22, 2, 11,236, 15,237, 29, 0, 2, 11,238, 22, 2,
+ 11,239, 15,240, 29, 0, 2, 11,241, 22, 2, 11,242, 15,243, 29, 0, 2, 11,244,
+ 22, 2, 11,245, 15,246, 29, 0, 2, 11,247, 22, 2, 11,248, 15,249, 29, 0, 2,
+ 11,250, 22, 2, 11,251, 15,252, 29, 0, 2, 11,253, 22, 2, 11,254, 15,255, 29,
+ 0, 2, 10, 1, 0, 22, 2, 10, 1, 1, 14, 1, 2, 29, 0, 2, 10, 1, 3, 22,
+ 2, 10, 1, 4, 14, 1, 5, 29, 0, 2, 10, 1, 6, 22, 2, 10, 1, 7, 14, 1,
+ 8, 29, 0, 2, 10, 1, 9, 22, 2, 10, 1, 10, 14, 1, 11, 29, 0, 2, 10, 1,
+ 12, 22, 2, 10, 1, 13, 14, 1, 14, 29, 0, 2, 10, 1, 15, 22, 2, 10, 1, 16,
+ 14, 1, 17, 29, 0, 2, 10, 1, 18, 22, 2, 10, 1, 19, 14, 1, 20, 29, 0, 2,
+ 10, 1, 21, 22, 2, 10, 1, 22, 14, 1, 23, 29, 0, 2, 10, 1, 24, 22, 2, 10,
+ 1, 25, 14, 1, 26, 29, 0, 2, 11,105, 22, 2, 10, 1, 27, 14, 1, 28, 29, 0,
+ 2, 10, 1, 29, 22, 2, 10, 1, 30, 14, 1, 31, 29, 0, 2, 10, 1, 32, 22, 2,
+ 10, 1, 30, 14, 1, 33, 29, 0, 2, 10, 1, 34, 22, 2, 10, 1, 35, 14, 1, 36,
+ 29, 0, 2, 10, 1, 37, 22, 2, 10, 1, 38, 14, 1, 39, 29, 0, 2, 10, 1, 40,
+ 22, 2, 10, 1, 41, 14, 1, 42, 29, 0, 2, 10, 1, 43, 22, 2, 10, 1, 44, 14,
+ 1, 45, 29, 0, 2, 10, 1, 46, 22, 2, 10, 1, 47, 14, 1, 48, 29, 0, 2, 10,
+ 1, 49, 22, 2, 10, 1, 50, 14, 1, 51, 29, 0, 2, 10, 1, 52, 22, 2, 10, 1,
+ 53, 14, 1, 54, 29, 0, 2, 10, 1, 55, 22, 2, 10, 1, 56, 14, 1, 57, 29, 0,
+ 2, 30, 31, 10, 1, 58, 22, 2, 10, 1, 59, 14, 1, 60, 29, 0, 2, 30, 0, 25,
+221, 15,221, 18,222, 11,128, 14, 1, 61, 26, 15,221, 18,222, 11,116, 14, 1, 62,
+ 26, 15,221, 18,222, 11,110, 14, 1, 62, 26, 15,221, 18,222, 11,105, 14, 1, 63,
+ 26, 15,221, 18,222, 11,198, 14, 1, 64, 26, 15,221, 18,222, 11,133, 14, 1, 63,
+ 26, 15,221, 18,222, 11,191, 14, 1, 65, 26, 15,221, 18,224, 11, 31, 14, 1, 66,
+ 26, 15,221, 10, 1, 67, 15,221, 18,224, 26, 15,221, 10, 1, 68, 15,221, 18,226,
+ 26, 15,221, 10, 1, 69, 15,221, 18,229, 26, 15,221, 10, 1, 70, 15,221, 18,232,
+ 26, 15,221, 11,235, 15,221, 18,235, 26, 15,221, 10, 1, 71, 15,221, 18,238, 26,
+ 15,221, 10, 1, 72, 15,221, 18,241, 26, 15,221, 10, 1, 73, 15,221, 18,244, 26,
+ 15,221, 10, 1, 74, 15,221, 18,247, 26, 15,221, 10, 1, 75, 15,221, 18,250, 26,
+ 15,221, 10, 1, 76, 15,221, 18,253, 26, 15,221, 10, 1, 77, 15,221, 17, 1, 0,
+ 26, 15,221, 10, 1, 78, 15,221, 17, 1, 3, 26, 15,221, 10, 1, 79, 15,221, 17,
+ 1, 6, 26, 15,221, 10, 1, 80, 15,221, 17, 1, 9, 26, 15,221, 10, 1, 81, 15,
+221, 17, 1, 12, 26, 15,221, 10, 1, 82, 15,221, 17, 1, 15, 26, 15,221, 10, 1,
+ 83, 15,221, 17, 1, 18, 26, 15,221, 10, 1, 84, 15,221, 17, 1, 21, 26, 15,221,
+ 10, 1, 85, 15,221, 17, 1, 24, 26, 15,221, 10, 1, 86, 15,221, 18,105, 26, 15,
+221, 10, 1, 87, 15,221, 17, 1, 29, 26, 15,221, 10, 1, 88, 15,221, 17, 1, 32,
+ 26, 15,221, 10, 1, 89, 15,221, 17, 1, 34, 26, 15,221, 10, 1, 90, 15,221, 17,
+ 1, 37, 26, 15,221, 10, 1, 91, 15,221, 17, 1, 40, 26, 15,221, 10, 1, 92, 15,
+221, 17, 1, 43, 26, 15,221, 10, 1, 93, 15,221, 17, 1, 46, 26, 15,221, 10, 1,
+ 94, 15,221, 17, 1, 52, 26, 15,221, 10, 1, 95, 15,221, 17, 1, 49, 26, 15,221,
+ 10, 1, 96, 15,221, 17, 1, 55, 26, 15,221, 10, 1, 97, 15,221, 17, 1, 58, 26,
+ 15,221, 10, 1, 98, 15,221, 17, 1, 99, 26, 0, 0, 0, 0, 0, 0, 0, 1,100,
+ 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 5,116,121,112,
+101, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 4,
+ 0, 0, 0, 12, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 57, 7, 2, 13, 1, 11, 1, 13, 0,
+ 26, 13, 0, 20, 3, 13, 1, 2, 0, 2, 13, 1, 11, 4, 13, 0, 20, 5, 13, 1,
+ 2, 1, 2, 26, 13, 0, 20, 6, 13, 1, 2, 0, 2, 15, 7, 13, 1, 18, 4, 13,
+ 1, 26, 13, 1, 18, 4, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, 99,104,101, 99,107, 80, 97,
+114, 97,109,115, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0,
+ 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 2,
+ 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 2, 0,
+ 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 12,
+ 99,104,101, 99,107, 80, 97,114, 97,109,115, 0, 4, 0, 0, 0, 32, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 61, 8, 2, 13, 0, 18, 1, 15, 5, 13, 2, 4, 0, 2, 2, 2,
+ 50, 39, 13, 4, 13, 1, 13, 3, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13,
+ 3, 42, 11, 8, 42, 2, 0, 1, 15, 5, 13, 2, 13, 3, 2, 2, 2, 23, 4, 23,
+ 3, 13, 3, 54, 43, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 5,115,101,
+108,102, 0, 2, 0, 0, 0, 6,112, 97,114, 97,109, 0, 2, 0, 0, 0, 5,102,
+117,110, 99, 0, 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,101,
+114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32,
+ 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,
+117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,
+105,122,101,100, 0, 2, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,
+116,101,115, 0, 4, 0, 0, 0, 43, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 80, 9, 2, 22,
+ 0, 15, 3, 13, 1, 4, 0, 2, 1, 2, 50, 18, 13, 2, 13, 3, 7, 1, 26, 15,
+ 3, 13, 1, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 22, 15, 3, 13, 2, 4, 0,
+ 2, 1, 2, 23, 3, 50, 25, 13, 1, 20, 4, 13, 3, 13, 1, 13, 3, 16, 2, 0,
+ 3, 15, 3, 13, 2, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 29, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 5,116,
+101,109,112, 0, 2, 0, 0, 0, 2,102, 0, 2, 0, 0, 0, 5,110,101,120,116,
+ 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, 0, 0, 0, 4,103,101,116, 0, 4,
+ 0, 0, 0, 57, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 82, 6, 2, 15, 1, 13, 1, 2, 1,
+ 1, 52, 63, 15, 2, 13, 1, 16, 52, 9, 13, 0, 13, 1, 16, 1, 2, 50, 47, 15,
+ 5, 13, 1, 2, 1, 1, 15, 7, 13, 0, 18, 8, 13, 2, 2, 1, 2, 13, 3, 52,
+ 23, 15, 9, 13, 3, 2, 1, 1, 13, 4, 52, 6, 13, 4, 1, 5, 50, 4, 13, 3,
+ 1, 5, 5, 1, 5, 2, 13, 0, 13, 1, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 10, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 12,116,121,
+112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99,
+ 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2,
+ 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115,116,114,117,112,
+112,101,114, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 16,
+ 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0,
+ 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71,101,116, 72,
+ 97,110,100,108,101, 0, 2, 0, 0, 0, 4,115,101,116, 0, 4, 0, 0, 0, 77,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0,228, 11, 3, 15, 2, 13, 1, 2, 1, 1, 52,209, 15,
+ 4, 13, 1, 2, 1, 1, 15, 6, 13, 1, 16, 13, 1, 11, 7, 32, 48, 12, 15, 8,
+ 13, 0, 18, 10, 2, 1, 1, 11, 11, 32, 52, 4, 4, 0, 23, 4, 13, 4, 52, 55,
+ 13, 4, 7, 2, 16, 13, 5, 44, 52, 14, 13, 4, 15, 8, 13, 0, 18, 10, 2, 1,
+ 1, 16, 23, 5, 15, 13, 13, 0, 18, 10, 13, 4, 7, 1, 16, 13, 5, 13, 2, 2,
+ 0, 4, 13, 0, 13, 1, 13, 2, 26, 1, 6, 5, 1, 50,111, 15, 2, 13, 2, 2,
+ 1, 1, 46, 7, 15, 14, 13, 2, 2, 1, 1, 52, 17, 15, 15, 13, 0, 18, 10, 13,
+ 3, 13, 2, 2, 0, 3, 1, 5, 50, 76, 15, 16, 13, 2, 2, 1, 1, 52, 34, 15,
+ 18, 13, 0, 18, 10, 13, 3, 2, 1, 2, 13, 5, 52, 15, 15, 15, 13, 0, 18, 10,
+ 13, 3, 13, 2, 2, 0, 3, 1, 6, 5, 1, 50, 33, 15, 19, 13, 2, 2, 1, 1,
+ 52, 24, 15, 20, 13, 2, 2, 0, 1, 15, 15, 13, 0, 18, 10, 13, 3, 13, 2, 18,
+ 21, 2, 0, 3, 1, 5, 5, 2, 13, 0, 13, 1, 13, 2, 26, 0, 0, 0, 0, 0,
+ 0, 0, 0, 22, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 6,
+118, 97,108,117,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,
+110,103, 0, 2, 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115,
+116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 3, 99, 98, 0, 2, 0, 0, 0,
+ 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 7,
+114,101,115,105,122,101, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 67,108,
+ 97,115,115, 78, 97,109,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0,
+ 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,
+103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, 0, 15,105,117,112,
+ 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0, 2, 0, 0, 0, 12,116,121,112,
+101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116,
+ 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,116,121,112,101, 95,
+110,105,108, 0, 2, 0, 0, 0, 10,111,108,100, 95,118, 97,108,117,101, 0, 2,
+ 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0,
+ 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0,
+ 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 9, 73, 85,
+ 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111,
+121, 0, 4, 0, 0, 0,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 89, 6, 1, 7, 1, 13,
+ 0, 13, 1, 16, 50, 66, 15, 3, 13, 2, 2, 1, 1, 48, 4, 13, 2, 18, 4, 52,
+ 37, 13, 2, 18, 4, 13, 0, 32, 52, 16, 13, 2, 11, 4, 4, 0, 26, 13, 2, 20,
+ 5, 2, 0, 1, 50, 12, 15, 6, 11, 7, 2, 0, 1, 15, 8, 2, 0, 0, 13, 1,
+ 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 23, 2, 13, 2, 54, 70, 15, 9, 13, 0,
+ 4, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 2,105, 0, 2,
+ 0, 0, 0, 5,101,108,101,109, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2,
+ 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0,
+ 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 10,114, 95,100,
+101,115,116,114,111,121, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0,
+ 0, 0, 29, 73,110,116,101,114,110, 97,108, 32,116, 97, 98,108,101, 32,105,110,
+ 99,111,110,115,105,115,116,101,110, 99,121, 0, 2, 0, 0, 0, 5,101,120,105,
+116, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2,
+ 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0,133, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 17, 3, 1, 13, 0, 20, 1, 2, 0, 1, 15, 2, 13, 0, 2, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111,121, 0, 2, 0, 0, 0, 11,
+ 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 7,100,101,116, 97,
+ 99,104, 0, 4, 0, 0, 0,138, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 96, 8, 1, 15, 0,
+ 13, 0, 2, 0, 1, 13, 0, 18, 3, 13, 1, 52, 78, 13, 0, 11, 3, 4, 0, 26,
+ 7, 1, 50, 58, 13, 1, 13, 2, 16, 13, 0, 32, 52, 41, 50, 20, 13, 1, 13, 2,
+ 13, 1, 13, 2, 7, 1, 37, 16, 26, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2,
+ 7, 1, 37, 16, 54, 30, 13, 1, 13, 2, 4, 0, 26, 1, 3, 13, 2, 7, 1, 37,
+ 23, 2, 13, 1, 13, 2, 16, 54, 65, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 2, 0, 0, 0, 10, 73,117,112, 68,101,116, 97, 99,104, 0, 2, 0, 0, 0, 5,
+115,101,108,102, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0,
+ 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 2,105, 0,
+ 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0,158, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 75, 6, 2, 15, 1, 13, 0, 13, 1, 2, 1, 2, 52, 57, 13, 1,
+ 11, 3, 13, 0, 26, 7, 1, 50, 21, 13, 0, 13, 2, 16, 13, 1, 32, 52, 4, 13,
+ 2, 1, 3, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 28, 15, 5, 13,
+ 0, 16, 13, 2, 13, 1, 26, 13, 2, 1, 3, 5, 1, 50, 4, 4, 0, 1, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10,
+ 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
+ 2,105, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0,
+ 2, 0, 0, 0, 4,109, 97,112, 0, 4, 0, 0, 0,175, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 2, 0, 0, 0, 7, 73,117,112, 77, 97,112, 0, 2, 0, 0, 0, 5,115,101,108,
+102, 0, 2, 0, 0, 0, 5,104,105,100,101, 0, 4, 0, 0, 0,179, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 72,105,100,101, 0, 2, 0, 0, 0,
+ 5,115,101,108,102, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 17, 67,114,101,
+ 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0,187, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112,
+ 67,114,101, 97,116,101, 84,105,109,101,114, 0, 2, 0, 0, 0, 9,105,117,112,
+116,105,109,101,114, 0, 4, 0, 0, 0,191, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,116,105,109,101,114, 0, 2, 0, 0,
+ 0, 13, 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 4, 0, 0, 0,200,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,105,117,
+112, 67,114,101, 97,116,101, 67,108,105,112, 98,111, 97,114,100, 0, 2, 0, 0,
+ 0, 13,105,117,112, 99,108,105,112, 98,111, 97,114,100, 0, 4, 0, 0, 0,204,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 13,
+ 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10, 99,108,105,112, 98,
+111, 97,114,100, 0, 2, 0, 0, 0, 10, 73, 85, 80, 68, 73, 65, 76, 79, 71, 0,
+ 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0,
+ 0,213, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2,
+ 1, 1, 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104,
+ 97,110,100,108,101, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101,
+ 68,105, 97,108,111,103, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 4, 0, 0, 0,219, 0, 0,
+ 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117,
+ 97, 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 83,104,111,119, 0, 2, 0, 0,
+ 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,115,104,111,119,120,121, 0, 4,
+ 0, 0, 0,223, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1,
+ 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120,
+ 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 10, 73,117,112, 83,104,111,119,
+ 88, 89, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 6,112,111,
+112,117,112, 0, 4, 0, 0, 0,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15,
+ 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,
+ 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,
+112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0,
+ 0, 10,105,117,112,100,105, 97,108,111,103, 0, 4, 0, 0, 0,231, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80,
+ 68, 73, 65, 76, 79, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,
+116,111,114, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,103, 0, 2, 0, 0, 0,
+ 9, 73, 85, 80, 82, 65, 68, 73, 79, 0, 4, 0, 0, 0,240, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, 13, 1, 7, 1, 16,
+ 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0,
+ 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2,
+ 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 82, 97,100,105,111, 0, 2,
+ 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9,
+105,117,112,114, 97,100,105,111, 0, 4, 0, 0, 0,246, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 26, 5, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 15, 4, 13, 1, 7, 1, 16,
+ 2, 0, 1, 13, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 9,
+ 73, 85, 80, 82, 65, 68, 73, 79, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,
+117, 99,116,111,114, 0, 2, 0, 0, 0, 23,105,117,112, 67,114,101, 97,116,101,
+ 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 2, 0, 0, 0, 6,114,
+ 97,100,105,111, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115,
+ 0, 4, 0, 0, 0,254, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,156, 11, 1, 22, 0, 7, 1,
+ 50, 61, 15, 3, 13, 0, 13, 2, 16, 2, 1, 1, 52, 29, 13, 1, 13, 2, 15, 4,
+ 22, 2, 11, 5, 13, 0, 13, 2, 16, 11, 6, 13, 0, 18, 6, 30, 1, 2, 1, 1,
+ 26, 50, 13, 15, 7, 11, 8, 13, 2, 42, 11, 9, 42, 2, 0, 1, 13, 2, 7, 1,
+ 37, 23, 2, 13, 0, 13, 2, 16, 54, 68, 13, 0, 18, 10, 52, 51, 7, 1, 50, 7,
+ 13, 3, 7, 1, 37, 23, 3, 13, 0, 13, 3, 16, 48, 10, 13, 0, 13, 3, 16, 13,
+ 0, 18, 10, 31, 54, 26, 13, 0, 13, 3, 16, 52, 10, 13, 1, 11, 10, 13, 1, 13,
+ 3, 16, 26, 5, 1, 50, 18, 13, 0, 18, 12, 52, 12, 13, 1, 11, 10, 13, 1, 13,
+ 0, 18, 12, 16, 26, 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0,
+ 0, 0, 2,104, 0, 2, 0, 0, 0, 4,116,109,112, 0, 2, 0, 0, 0, 2,105,
+ 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0,
+ 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,
+116,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0,
+ 6,101,114,114,111,114, 0, 2, 0, 0, 0, 8,111,112,116,105,111,110, 32, 0,
+ 2, 0, 0, 0, 18, 32,109,117,115,116, 32, 98,101, 32, 97, 32,115,116,114,105,
+110,103, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 2,106,
+ 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 9,101,100,
+104,114, 97,100,105,111, 0, 4, 0, 0, 1, 26, 0, 0, 0, 20, 64,105,117,112,
+108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 35,
+ 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, 2, 1, 1,
+ 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,103,103,108,
+101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, 0, 2,
+ 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, 7,101,100,
+104, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0,
+ 9,101,100,118,114, 97,100,105,111, 0, 4, 0, 0, 1, 32, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 35, 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1,
+ 2, 1, 1, 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,
+103,103,108,101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,
+115, 0, 2, 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0,
+ 7,101,100,118, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, 85, 0, 4, 0, 0, 1, 41, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0,159, 7, 2, 7, 1, 50,145, 13, 1, 13, 2, 16, 15, 3, 13, 3,
+ 2, 1, 1, 44, 52,121, 15, 4, 13, 3, 2, 1, 1, 11, 5, 31, 52, 15, 15, 6,
+ 11, 7, 13, 2, 42, 11, 8, 42, 2, 0, 1, 50, 94, 13, 3, 7, 1, 16, 48, 11,
+ 15, 9, 13, 3, 7, 1, 16, 2, 1, 1, 44, 52, 15, 15, 6, 11, 7, 13, 2, 42,
+ 11, 10, 42, 2, 0, 1, 50, 59, 13, 3, 7, 2, 16, 48, 11, 15, 9, 13, 3, 7,
+ 2, 16, 2, 1, 1, 44, 48, 11, 15, 11, 13, 3, 7, 2, 16, 2, 1, 1, 44, 48,
+ 11, 15, 12, 13, 3, 7, 2, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, 2,
+ 42, 11, 13, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2,
+ 16, 54,152, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, 98,106,
+ 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10,
+116,121,112,101, 95,105,116,101,109, 0, 2, 0, 0, 0, 5,116,121,112,101, 0,
+ 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,
+114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, 2, 0,
+ 0, 0, 32, 32,105,115, 32,110,111,116, 32, 97, 32,116, 97, 98,108,101, 32,110,
+111,114, 32, 97, 32,109,101,110,117, 32,105,116,101,109, 0, 2, 0, 0, 0, 12,
+116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 30, 32,100,111,
+101,115, 32,110,111,116, 32,104, 97,118,101, 32, 97, 32,115,116,114,105,110,103,
+ 32,116,105,116,108,101, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110,
+ 99,116,105,111,110, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,
+101,116, 0, 2, 0, 0, 0, 36, 32,100,111,101,115, 32,110,111,116, 32,104, 97,
+118,101, 32, 97,110, 32, 97, 99,116,105,111,110, 32,110,111,114, 32, 97, 32,109,
+101,110,117, 0, 4, 0, 0, 1, 59, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,189, 10, 2, 15,
+ 2, 2, 1, 0, 7, 1, 50,166, 13, 1, 13, 3, 16, 4, 0, 15, 6, 13, 4, 2,
+ 1, 1, 52, 6, 13, 4, 23, 5, 50,112, 13, 4, 7, 1, 16, 44, 52, 11, 15, 7,
+ 22, 0, 2, 1, 1, 23, 5, 50, 93, 15, 6, 13, 4, 7, 2, 16, 2, 1, 1, 52,
+ 38, 13, 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 7, 1, 13, 4, 7, 2, 16,
+ 26, 13, 4, 7, 2, 4, 0, 26, 15, 9, 13, 4, 2, 1, 1, 23, 5, 50, 43, 13,
+ 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 11, 10, 13, 4, 7, 2, 16, 26, 13,
+ 4, 7, 1, 4, 0, 26, 13, 4, 7, 2, 4, 0, 26, 15, 11, 13, 4, 2, 1, 1,
+ 23, 5, 15, 12, 13, 2, 13, 5, 2, 0, 2, 13, 5, 11, 13, 13, 2, 26, 13, 1,
+ 13, 3, 13, 5, 26, 13, 3, 7, 1, 37, 23, 3, 5, 2, 13, 1, 13, 3, 16, 54,
+173, 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 14,
+105,117,112, 67,114,101, 97,116,101, 77,101,110,117, 0, 2, 0, 0, 0, 2,105,
+ 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,101,108,101,109, 0, 2, 0,
+ 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 13,
+105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 6,116,105,
+116,108,101, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0,
+ 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,105,117,112,
+105,116,101,109, 0, 2, 0, 0, 0, 10, 73,117,112, 65,112,112,101,110,100, 0,
+ 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
+ 8,105,117,112,109,101,110,117, 0, 4, 0, 0, 1, 89, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78,
+ 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2,
+ 0, 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78,
+ 85, 0, 4, 0, 0, 1, 94, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13,
+ 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0,
+ 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112, 80,
+111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12,
+ 67, 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 4, 0, 0, 1,102, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, 2, 13, 1, 13, 2, 16, 2, 1,
+ 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, 5, 42, 2, 0, 1, 13, 2, 7,
+ 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0,
+ 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 6,101,114,
+114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0,
+ 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,
+101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,
+122,101,100, 0, 4, 0, 0, 1,112, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,187, 11, 2, 13,
+ 0, 20, 3, 2, 1, 1, 13, 1, 18, 4, 7, 1, 7, 0, 50, 14, 13, 5, 7, 1,
+ 37, 23, 5, 13, 4, 7, 1, 37, 23, 4, 13, 1, 13, 4, 16, 54, 21, 7, 1, 23,
+ 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, 2,
+ 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, 1,
+ 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 50, 79, 15, 9, 13, 2, 13, 1, 13,
+ 4, 16, 2, 0, 2, 13, 1, 13, 4, 16, 11, 10, 13, 2, 26, 13, 4, 7, 1, 37,
+ 23, 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0,
+ 2, 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13,
+ 1, 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 13, 4, 13, 5, 34, 54, 86, 13,
+ 2, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, 4,111, 98,106,
+ 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 5,115,101,
+108,102, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,
+109,101,110,116, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0,
+ 0, 2,105, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95,
+ 89, 69, 83, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0,
+ 0, 10, 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 11, 73, 85, 80,
+ 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88,
+ 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,109,101,
+110,116, 0, 4, 0, 0, 1,146, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0,
+ 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112,
+ 67,114,101, 97,116,101, 72, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,104,
+ 98,111,120, 0, 4, 0, 0, 1,150, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15,
+ 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0, 2, 0, 0,
+ 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,104,
+ 98,111,120, 0, 2, 0, 0, 0, 7,101,100,104, 98,111,120, 0, 4, 0, 0, 1,
+156, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3,
+ 20, 4, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8,
+ 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88,
+ 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0,
+ 0, 0, 8,101,100,102,105,101,108,100, 0, 4, 0, 0, 1,162, 0, 0, 0, 20,
+ 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0,
+ 0, 0, 0,123, 7, 1, 4, 1, 15, 3, 13, 0, 18, 4, 2, 1, 1, 46, 9, 15,
+ 5, 13, 0, 18, 4, 2, 1, 1, 52, 19, 15, 6, 22, 1, 11, 7, 13, 0, 18, 4,
+ 30, 0, 2, 1, 1, 23, 1, 50, 7, 15, 8, 11, 9, 2, 0, 1, 13, 0, 18, 10,
+ 52, 19, 15, 11, 22, 1, 11, 10, 13, 0, 18, 10, 30, 0, 2, 1, 1, 23, 2, 50,
+ 17, 15, 11, 22, 1, 11, 10, 13, 0, 18, 12, 30, 0, 2, 1, 1, 23, 2, 13, 2,
+ 48, 2, 13, 1, 52, 16, 15, 13, 22, 2, 13, 1, 13, 2, 29, 0, 2, 3, 3, 1,
+ 50, 4, 4, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 2,
+102, 0, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0,
+ 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 7,112,114,
+111,109,112,116, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,110,117,109, 98,101,
+114, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0,
+ 6,116,105,116,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0,
+ 0, 0, 55,112, 97,114, 97,109,101,116,101,114, 32,112,114,111,109,112,116, 32,
+104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,
+115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,122,101,100, 0, 2, 0,
+ 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8,105,117,112,116,101,120,
+116, 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 7,101,
+100,104, 98,111,120, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 4,
+ 0, 0, 1,185, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,
+116,101, 86, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0,
+ 4, 0, 0, 1,189, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13,
+ 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,118, 98,111,120, 0,
+ 2, 0, 0, 0, 7,101,100,118, 98,111,120, 0, 4, 0, 0, 1,195, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, 20, 4, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95,
+ 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0,
+ 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8, 73,
+ 85, 80, 90, 66, 79, 88, 0, 4, 0, 0, 1,204, 0, 0, 0, 20, 64,105,117,112,
+108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8,
+ 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0,
+ 14,105,117,112, 67,114,101, 97,116,101, 90, 98,111,120, 0, 2, 0, 0, 0, 8,
+105,117,112,122, 98,111,120, 0, 4, 0, 0, 1,208, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 44, 6, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 7, 1, 50, 17, 15, 5, 13, 1,
+ 13, 2, 16, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 24,
+ 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 8, 73,
+ 85, 80, 90, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,
+116,111,114, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11,105,117,112, 83,
+101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 5,122, 98,111,120, 0, 2, 0, 0,
+ 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 4, 0, 0, 1,223, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
+ 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,
+116,101, 70,105,108,108, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0,
+ 4, 0, 0, 1,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13,
+ 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,102,105,108,108, 0,
+ 2, 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 5,
+116,121,112,101, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0,
+ 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 4, 0, 0, 1,236, 0, 0,
+ 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117,
+ 97, 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52,
+ 7, 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,
+116,105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0,
+ 0, 1, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 66,117,116,
+116,111,110, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 4,
+ 0, 0, 1,243, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 98,117,116,116,
+111,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, 1,
+252, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,
+117,112, 67,114,101, 97,116,101, 84,101,120,116, 0, 2, 0, 0, 0, 8,105,117,
+112,116,101,120,116, 0, 4, 0, 0, 2, 0, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 2,
+ 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0,
+ 5,116,101,120,116, 0, 2, 0, 0, 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76,
+ 73, 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0,
+ 2, 9, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,
+105,117,112, 67,114,101, 97,116,101, 77,117,108,116,105, 76,105,110,101, 0, 2,
+ 0, 0, 0, 13,105,117,112,109,117,108,116,105,108,105,110,101, 0, 4, 0, 0,
+ 2, 13, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0,
+ 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, 73, 78, 69, 0, 2, 0, 0, 0, 12,
+ 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,109,117,108,
+116,105,108,105,110,101, 0, 2, 0, 0, 0, 9, 73, 85, 80, 76, 65, 66, 69, 76,
+ 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 2, 22, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, 7,
+ 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,116,
+105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, 0,
+ 1, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 76, 97, 98,101,
+108, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 4, 0, 0, 2,
+ 29, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0,
+ 9, 73, 85, 80, 76, 65, 66, 69, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,
+114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,108, 97, 98,101,108, 0, 2, 0,
+ 0, 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 10, 73, 85,
+ 80, 66, 85, 84, 84, 79, 78, 0, 4, 0, 0, 2, 38, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,
+101, 97,116,101, 84,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,116,108,
+101, 0, 2, 0, 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 4, 0, 0,
+ 2, 42, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0,
+ 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7,116,111,103,103,108,101,
+ 0, 2, 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 4, 0, 0, 2, 51, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 14,105,117,112, 67,114,101, 97,116,101, 73,116,101,109, 0, 2, 0, 0, 0, 6,
+116,105,116,108,101, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 4,
+ 0, 0, 2, 55, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2,
+ 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,
+116,121,112,101, 95,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,101,
+ 0, 4, 0, 0, 2, 64, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 31, 6, 2, 15, 2, 13, 1,
+ 18, 3, 13, 1, 7, 1, 16, 2, 1, 2, 13, 1, 7, 1, 16, 11, 4, 13, 2, 26,
+ 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 2,104, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101,
+ 97,116,101, 83,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,
+101, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, 4, 0, 0, 2, 70, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73,
+ 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,
+114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0,
+ 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 4, 0,
+ 0, 2, 79, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 19,105,117,112, 67,114,101, 97,116,101, 83,101,112, 97,114, 97,116,111,114, 0,
+ 2, 0, 0, 0, 13,105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 4, 0,
+ 0, 2, 83, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, 0, 0, 0,
+ 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,115,101,
+112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69,
+ 68, 76, 71, 0, 4, 0, 0, 2, 92, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15,
+ 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,
+ 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,
+112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0,
+ 2, 96, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101,
+ 70,105,108,101, 68,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101,
+100,108,103, 0, 4, 0, 0, 2,100, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15,
+ 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, 68, 76, 71, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 14, 73, 85, 80, 77, 69,
+ 83, 83, 65, 71, 69, 68, 76, 71, 0, 4, 0, 0, 2,109, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0,
+ 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,
+102, 0, 4, 0, 0, 2,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 20,105,117,112, 67,
+114,101, 97,116,101, 77,101,115,115, 97,103,101, 68,108,103, 0, 2, 0, 0, 0,
+ 14,105,117,112,109,101,115,115, 97,103,101,100,108,103, 0, 4, 0, 0, 2,117,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 14,
+ 73, 85, 80, 77, 69, 83, 83, 65, 71, 69, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,109,101,115,115,
+ 97,103,101,100,108,103, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82,
+ 68, 76, 71, 0, 4, 0, 0, 2,126, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15,
+ 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,
+ 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,
+112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0,
+ 2,130, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101,
+ 67,111,108,111,114, 68,108,103, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108,
+111,114,100,108,103, 0, 4, 0, 0, 2,134, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 68,
+ 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 9, 99,111,108,111,114,100,108,103, 0, 2, 0, 0, 0, 11, 73,
+ 85, 80, 70, 79, 78, 84, 68, 76, 71, 0, 4, 0, 0, 2,143, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2,
+ 0, 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,
+108,102, 0, 4, 0, 0, 2,147, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0,
+ 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112,
+ 67,114,101, 97,116,101, 70,111,110,116, 68,108,103, 0, 2, 0, 0, 0, 11,105,
+117,112,102,111,110,116,100,108,103, 0, 4, 0, 0, 2,151, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 79,
+ 78, 84, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,
+111,114, 0, 2, 0, 0, 0, 8,102,111,110,116,100,108,103, 0, 2, 0, 0, 0,
+ 8, 73, 85, 80, 85, 83, 69, 82, 0, 4, 0, 0, 2,160, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0,
+ 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 85,115,101,114, 0, 2, 0, 0,
+ 0, 8,105,117,112,117,115,101,114, 0, 4, 0, 0, 2,164, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 10, 2, 0, 15, 0, 20, 1, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 0, 0, 0, 8, 73, 85, 80, 85, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,117,115,101,114,
+ 0, 2, 0, 0, 0, 14, 73, 85, 80, 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0,
+ 4, 0, 0, 2,173, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15,
+ 2, 13, 1, 13, 2, 16, 2, 1, 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11,
+ 5, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0,
+ 0, 2,105, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116,
+ 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114,
+ 97,109,101,116,101,114, 32, 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,
+111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,
+105,110,105,116,105, 97,108,105,122,101,100, 0, 4, 0, 0, 2,183, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 40, 8, 2, 15, 2, 2, 1, 0, 7, 1, 50, 17, 13, 2, 11, 4,
+ 13, 1, 13, 3, 16, 26, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 3, 16, 54, 24,
+ 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 20,105,
+117,112, 67,114,101, 97,116,101, 78,111,114,109, 97,108,105,122,101,114, 0, 2,
+ 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11, 97,100,100, 99,111,110,116,114,111,
+108, 0, 2, 0, 0, 0, 14,105,117,112,110,111,114,109, 97,108,105,122,101,114,
+ 0, 4, 0, 0, 2,193, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 10, 2, 0, 15, 0, 20, 1,
+ 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 14, 73, 85, 80,
+ 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,
+116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,110,111,114,109, 97,108,105,
+122,101,114, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, 2, 0,
+ 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 2,202,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1,
+ 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,104, 0, 2,
+ 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 70,114, 97,109,101, 0, 2,
+ 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9,
+105,117,112,102,114, 97,109,101, 0, 4, 0, 0, 2,208, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65,
+ 77, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 6,102,114, 97,109,101, 0, 2, 0, 0, 0, 10, 73, 85, 80, 67,
+ 65, 78, 86, 65, 83, 0, 4, 0, 0, 2,217, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3,
+ 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,
+111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 67, 97,
+110,118, 97,115, 0, 2, 0, 0, 0, 10,105,117,112, 99, 97,110,118, 97,115, 0,
+ 4, 0, 0, 2,221, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13,
+ 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 10, 73, 85, 80, 67, 65, 78, 86, 65, 83, 0, 2, 0, 0, 0, 12,
+ 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 99, 97,110,
+118, 97,115, 0, 2, 0, 0, 0, 8, 73, 85, 80, 76, 73, 83, 84, 0, 4, 0, 0,
+ 2,230, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,
+105,117,112, 67,114,101, 97,116,101, 76,105,115,116, 0, 4, 0, 0, 2,234, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 42, 6, 2, 15, 1, 13, 1, 2, 1, 1, 11, 2, 32, 52,
+ 16, 15, 3, 13, 0, 18, 5, 11, 6, 13, 1, 42, 3, 2, 2, 50, 11, 15, 7, 18,
+ 8, 13, 0, 13, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0,
+ 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0,
+ 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,
+116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102,
+ 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2,
+ 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,103,101,116, 0,
+ 4, 0, 0, 2,242, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 90, 8, 3, 15, 2, 13, 1, 2,
+ 1, 1, 11, 3, 32, 52, 62, 15, 4, 13, 2, 2, 1, 1, 46, 7, 15, 5, 13, 2,
+ 2, 1, 1, 52, 21, 15, 6, 13, 0, 18, 8, 11, 9, 13, 1, 42, 11, 9, 13, 2,
+ 42, 3, 3, 3, 50, 23, 13, 2, 4, 0, 32, 52, 16, 15, 6, 13, 0, 18, 8, 11,
+ 9, 13, 1, 42, 13, 2, 3, 3, 3, 15, 10, 18, 11, 13, 0, 13, 1, 13, 2, 3,
+ 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 6,105,110,100,101,
+120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 5,116,121,
+112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 12,
+116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 12,116,121,112,
+101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116,
+ 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, 0,
+ 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,115,101,116, 0, 2,
+ 0, 0, 0, 8,105,117,112,108,105,115,116, 0, 4, 0, 0, 2,253, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80,
+ 76, 73, 83, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 5,108,105,115,116, 0, 2, 0, 0, 0, 9, 73, 85, 80,
+ 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0,
+ 0, 3, 6, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0,116, 8, 2, 7, 1, 50, 92, 7, 1, 50,
+ 32, 15, 3, 13, 1, 13, 2, 16, 13, 3, 16, 2, 1, 1, 11, 4, 31, 52, 7, 15,
+ 5, 11, 6, 2, 0, 1, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 2, 16, 13, 3,
+ 16, 54, 42, 13, 1, 18, 7, 48, 10, 13, 3, 7, 1, 38, 13, 1, 18, 7, 31, 52,
+ 9, 15, 5, 11, 8, 2, 0, 1, 50, 10, 13, 1, 11, 7, 13, 3, 7, 1, 38, 26,
+ 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, 16, 54, 99, 13, 1, 11, 9,
+ 13, 2, 7, 1, 38, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 4,
+111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,106, 0, 2, 0,
+ 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0,
+ 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 38,110,111,110, 45,
+110,117,109,101,114,105, 99, 32,118, 97,108,117,101, 32,105,110, 32,105,109, 97,
+103,101, 32,100,101,102,105,110,105,116,105,111,110, 0, 2, 0, 0, 0, 6,119,
+105,100,116,104, 0, 2, 0, 0, 0, 26,105,110, 99,111,110,115,105,115,116,101,
+110,116, 32,105,109, 97,103,101, 32,108,101,110,103,104,116, 0, 2, 0, 0, 0,
+ 7,104,101,105,103,104,116, 0, 4, 0, 0, 3, 29, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 74, 9, 2, 15, 2, 13, 1, 18, 3, 13, 1, 18, 4, 13, 1, 2, 1, 3, 15, 5,
+ 13, 1, 18, 6, 2, 1, 1, 11, 7, 32, 52, 38, 7, 1, 50, 23, 15, 9, 13, 2,
+ 13, 3, 13, 1, 18, 6, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 37, 23, 3, 13,
+ 1, 18, 6, 13, 3, 16, 54, 32, 5, 1, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 10, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,
+100,108,101, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 73,109,
+ 97,103,101, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 7,
+104,101,105,103,104,116, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0,
+ 0, 7, 99,111,108,111,114,115, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0,
+ 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,
+116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,105,117,112,105,109, 97,103,
+101, 0, 4, 0, 0, 3, 41, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20,
+ 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,
+111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 73, 77, 65, 71, 69, 0, 2, 0, 0, 0,
+ 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,105,109,
+ 97,103,101, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66,
+ 0, 4, 0, 0, 3, 49, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1,
+ 18, 2, 13, 1, 18, 3, 13, 1, 18, 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,
+114,101, 97,116,101, 73,109, 97,103,101, 82, 71, 66, 0, 2, 0, 0, 0, 6,119,
+105,100,116,104, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, 0, 2, 0, 0,
+ 0, 7,112,105,120,101,108,115, 0, 2, 0, 0, 0, 12,105,117,112,105,109, 97,
+103,101,114,103, 98, 0, 4, 0, 0, 3, 53, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82,
+ 71, 66, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 9,105,109, 97,103,101,114,103, 98, 0, 2, 0, 0, 0, 13, 73,
+ 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 4, 0, 0, 3, 61, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, 18, 2, 13, 1, 18, 3, 13, 1, 18,
+ 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 19,105,117,112, 67,114,101, 97,116,101, 73,109, 97,103,
+101, 82, 71, 66, 65, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0,
+ 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, 0, 7,112,105,120,101,108,115,
+ 0, 2, 0, 0, 0, 13,105,117,112,105,109, 97,103,101,114,103, 98, 97, 0, 4,
+ 0, 0, 3, 65, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 13, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 2, 0, 0,
+ 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,105,
+109, 97,103,101,114,103, 98, 97, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79,
+ 71, 82, 69, 83, 83, 66, 65, 82, 0, 4, 0, 0, 3, 74, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0,
+ 0, 0, 21,105,117,112, 67,114,101, 97,116,101, 80,114,111,103,114,101,115,115,
+ 66, 97,114, 0, 2, 0, 0, 0, 15,105,117,112,112,114,111,103,114,101,115,115,
+ 98, 97,114, 0, 4, 0, 0, 3, 78, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15,
+ 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 2,111, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, 71, 82, 69, 83, 83,
+ 66, 65, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114,
+ 0, 2, 0, 0, 0, 12,112,114,111,103,114,101,115,115, 98, 97,114, 0, 2, 0,
+ 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0,
+ 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 7, 65, 67, 84, 73, 79, 78,
+ 0, 2, 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 10,
+ 65, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 9,103,101,116,102,111,
+ 99,117,115, 0, 2, 0, 0, 0, 12, 71, 69, 84, 70, 79, 67, 85, 83, 95, 67, 66,
+ 0, 2, 0, 0, 0, 16,105,117,112, 95,103,101,116,102,111, 99,117,115, 95, 99,
+ 98, 0, 2, 0, 0, 0, 10,107,105,108,108,102,111, 99,117,115, 0, 2, 0, 0,
+ 0, 13, 75, 73, 76, 76, 70, 79, 67, 85, 83, 95, 67, 66, 0, 2, 0, 0, 0, 17,
+105,117,112, 95,107,105,108,108,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0,
+ 0, 6,102,111, 99,117,115, 0, 2, 0, 0, 0, 9, 70, 79, 67, 85, 83, 95, 67,
+ 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,102,111, 99,117,115, 95, 99, 98, 0,
+ 2, 0, 0, 0, 6,107, 95, 97,110,121, 0, 2, 0, 0, 0, 6, 75, 95, 65, 78,
+ 89, 0, 2, 0, 0, 0, 10,105,117,112, 95,107, 95, 97,110,121, 0, 2, 0, 0,
+ 0, 5,104,101,108,112, 0, 2, 0, 0, 0, 8, 72, 69, 76, 80, 95, 67, 66, 0,
+ 2, 0, 0, 0, 12,105,117,112, 95,104,101,108,112, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8, 99, 97,114,101,116, 99, 98, 0, 2, 0, 0, 0, 9, 67, 65, 82, 69, 84,
+ 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, 99, 97,114,101,116, 95, 99,
+ 98, 0, 2, 0, 0, 0, 9,107,101,121,112,114,101,115,115, 0, 2, 0, 0, 0,
+ 12, 75, 69, 89, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,
+112, 95,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 7,115,
+ 99,114,111,108,108, 0, 2, 0, 0, 0, 10, 83, 67, 82, 79, 76, 76, 95, 67, 66,
+ 0, 2, 0, 0, 0, 14,105,117,112, 95,115, 99,114,111,108,108, 95, 99, 98, 0,
+ 2, 0, 0, 0, 10,116,114, 97,121, 99,108,105, 99,107, 0, 2, 0, 0, 0, 13,
+ 84, 82, 65, 89, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,
+112, 95,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 6,
+ 99,108,111,115,101, 0, 2, 0, 0, 0, 9, 67, 76, 79, 83, 69, 95, 67, 66, 0,
+ 2, 0, 0, 0, 13,105,117,112, 95, 99,108,111,115,101, 95, 99, 98, 0, 2, 0,
+ 0, 0, 5,111,112,101,110, 0, 2, 0, 0, 0, 8, 79, 80, 69, 78, 95, 67, 66,
+ 0, 2, 0, 0, 0, 12,105,117,112, 95,111,112,101,110, 95, 99, 98, 0, 2, 0,
+ 0, 0, 7,115,104,111,119, 99, 98, 0, 2, 0, 0, 0, 8, 83, 72, 79, 87, 95,
+ 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,104,111,119, 95, 99, 98, 0,
+ 2, 0, 0, 0, 6,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 7, 77, 65, 80, 95,
+ 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,109, 97,112, 95, 99, 98, 0, 2,
+ 0, 0, 0, 8,117,110,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 9, 85, 78, 77,
+ 65, 80, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,117,110,109, 97,112,
+ 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114,111,112,102,105,108,101,115, 0, 2,
+ 0, 0, 0, 13, 68, 82, 79, 80, 70, 73, 76, 69, 83, 95, 67, 66, 0, 2, 0, 0,
+ 0, 17,105,117,112, 95,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,109,101,110,117, 99,108,111,115,101, 0, 2, 0, 0, 0, 13, 77,
+ 69, 78, 85, 67, 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112,
+ 95,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,
+105,103,104,108,105,103,104,116, 0, 2, 0, 0, 0, 13, 72, 73, 71, 72, 76, 73,
+ 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,104,105,103,104,
+108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 4,119,111,109, 0, 2, 0,
+ 0, 0, 7, 87, 79, 77, 95, 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,119,
+111,109, 95, 99, 98, 0, 2, 0, 0, 0, 6,119,104,101,101,108, 0, 2, 0, 0,
+ 0, 9, 87, 72, 69, 69, 76, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,
+119,104,101,101,108, 95, 99, 98, 0, 2, 0, 0, 0, 10, 66, 85, 84, 84, 79, 78,
+ 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95, 98,117,116,116,111,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 10,
+ 82, 69, 83, 73, 90, 69, 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,114,
+101,115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,109,111,118,101, 0, 2,
+ 0, 0, 0, 12,105,117,112, 95,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0,
+ 7,109,111,116,105,111,110, 0, 2, 0, 0, 0, 10, 77, 79, 84, 73, 79, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,109,111,116,105,111,110, 95, 99,
+ 98, 0, 2, 0, 0, 0, 12,101,110,116,101,114,119,105,110,100,111,119, 0, 2,
+ 0, 0, 0, 15, 69, 78, 84, 69, 82, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, 2,
+ 0, 0, 0, 19,105,117,112, 95,101,110,116,101,114,119,105,110,100,111,119, 95,
+ 99, 98, 0, 2, 0, 0, 0, 12,108,101, 97,118,101,119,105,110,100,111,119, 0,
+ 2, 0, 0, 0, 15, 76, 69, 65, 86, 69, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0,
+ 2, 0, 0, 0, 19,105,117,112, 95,108,101, 97,118,101,119,105,110,100,111,119,
+ 95, 99, 98, 0, 2, 0, 0, 0, 5,101,100,105,116, 0, 2, 0, 0, 0, 8, 69,
+ 68, 73, 84, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,101,100,105,116,
+ 95, 99, 98, 0, 2, 0, 0, 0, 12,109,117,108,116,105,115,101,108,101, 99,116,
+ 0, 2, 0, 0, 0, 15, 77, 85, 76, 84, 73, 83, 69, 76, 69, 67, 84, 95, 67, 66,
+ 0, 2, 0, 0, 0, 19,105,117,112, 95,109,117,108,116,105,115,101,108,101, 99,
+116, 95, 99, 98, 0, 2, 0, 0, 0, 7,102,105,108,101, 99, 98, 0, 2, 0, 0,
+ 0, 8, 70, 73, 76, 69, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,102,
+105,108,101, 95, 99, 98, 0, 2, 0, 0, 0, 14,109,100,105, 97, 99,116,105,118,
+ 97,116,101, 99, 98, 0, 2, 0, 0, 0, 15, 77, 68, 73, 65, 67, 84, 73, 86, 65,
+ 84, 69, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109,100,105, 97, 99,
+116,105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 11,100,114,111,112,100,
+111,119,110, 99, 98, 0, 2, 0, 0, 0, 12, 68, 82, 79, 80, 68, 79, 87, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,100,114,111,112,100,111,119,110,
+ 95, 99, 98, 0, 2, 0, 0, 0, 11,100, 98,108, 99,108,105, 99,107, 99, 98, 0,
+ 2, 0, 0, 0, 12, 68, 66, 76, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0,
+ 0, 16,105,117,112, 95,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0,
+ 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95,116,111,103,103,108,101,
+ 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110, 95,116,101,120,
+116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95, 98,117,
+116,116,111,110, 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110,
+ 95,108,105,115,116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,
+110, 95, 99, 97,110,118, 97,115, 0, 2, 0, 0, 0, 17,105,117,112, 95, 97, 99,
+116,105,111,110, 95,116,105,109,101,114, 0, 2, 0, 0, 0, 10, 97, 99,116,105,
+111,110, 95, 99, 98, 0, 2, 0, 0, 0, 12,103,101,116,102,111, 99,117,115, 95,
+ 99, 98, 0, 2, 0, 0, 0, 13,107,105,108,108,102,111, 99,117,115, 95, 99, 98,
+ 0, 2, 0, 0, 0, 9,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 8,
+104,101,108,112, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99,
+ 98, 0, 2, 0, 0, 0, 12,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,115, 99,114,111,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 13,116,
+114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,111,
+115,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,111,112,101,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 8,115,104,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 7,109, 97,112,
+ 95, 99, 98, 0, 2, 0, 0, 0, 9,117,110,109, 97,112, 95, 99, 98, 0, 2, 0,
+ 0, 0, 13,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, 0, 0, 0,
+ 13,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 13,104,
+105,103,104,108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 7,119,111,109,
+ 95, 99, 98, 0, 2, 0, 0, 0, 9,119,104,101,101,108, 95, 99, 98, 0, 2, 0,
+ 0, 0, 10, 98,117,116,116,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,
+115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,109,111,118,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 10,109,111,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0,
+ 15,101,110,116,101,114,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0,
+ 15,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0,
+ 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,108,116,105,115,
+101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,100,105, 97, 99,116,
+105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,102,105,108,101, 95, 99,
+ 98, 0, 2, 0, 0, 0, 12,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 12,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0,
+ 16,118, 97,108,117,101, 99,104, 97,110,103,101,100, 95, 99, 98, 0, 2, 0, 0,
+ 0, 15,118, 97,108,117,101, 99,104, 97,110,103,101,100, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_widgets_be64.lo");
+}
diff --git a/iup/srclua3/loh/iuplua_widgets_le64.loh b/iup/srclua3/loh/iuplua_widgets_le64.loh
new file mode 100755
index 0000000..dd42bf4
--- /dev/null
+++ b/iup/srclua3/loh/iuplua_widgets_le64.loh
@@ -0,0 +1,939 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/iuplua_widgets_le64.lo");
+*/
+/* ../obj/iuplua3/iuplua_widgets_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 20, 64,105,117,112,108,117,
+ 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 7,202, 67, 0,
+ 22, 1, 11, 1, 22, 0, 30, 0, 25, 0, 15, 0, 11, 2, 11, 3, 26, 15, 0, 11,
+ 4, 11, 5, 26, 15, 0, 11, 6, 11, 7, 26, 15, 0, 11, 8, 11, 9, 26, 15, 0,
+ 11, 10, 11, 11, 26, 15, 0, 11, 12, 11, 13, 26, 15, 0, 11, 14, 11, 15, 26, 15,
+ 0, 11, 16, 11, 17, 26, 15, 0, 11, 18, 11, 19, 26, 15, 0, 11, 20, 11, 21, 26,
+ 15, 0, 11, 22, 11, 23, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 24, 15, 24, 11,
+ 26, 11, 27, 26, 11, 29, 25, 28, 15, 30, 11, 31, 15, 28, 26, 22, 1, 11, 25, 15,
+ 0, 30, 0, 25, 32, 15, 32, 11, 26, 11, 33, 26, 11, 35, 25, 34, 15, 30, 11, 36,
+ 15, 34, 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1,
+ 25, 37, 15, 37, 11, 26, 11, 39, 26, 15, 37, 11, 40, 11, 41, 26, 15, 37, 11, 42,
+ 11, 43, 26, 15, 37, 11, 44, 11, 45, 26, 11, 47, 25, 46, 15, 30, 11, 48, 15, 46,
+ 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1, 25, 49,
+ 15, 49, 11, 26, 11, 50, 26, 11, 52, 25, 51, 15, 30, 11, 53, 15, 51, 26, 11, 55,
+ 25, 54, 11, 57, 25, 56, 11, 59, 25, 58, 22, 1, 11, 25, 15, 0, 30, 0, 25, 60,
+ 15, 60, 11, 4, 11, 61, 26, 15, 60, 11, 26, 11, 62, 26, 11, 64, 25, 63, 15, 30,
+ 11, 65, 15, 63, 26, 15, 66, 11, 44, 11, 67, 26, 22, 1, 11, 25, 15, 0, 30, 0,
+ 25, 68, 15, 68, 11, 4, 11, 69, 26, 15, 68, 11, 26, 11, 70, 26, 22, 1, 11, 25,
+ 15, 68, 30, 0, 25, 71, 15, 71, 11, 72, 11, 73, 26, 11, 75, 25, 74, 15, 30, 11,
+ 76, 15, 74, 26, 11, 78, 25, 77, 11, 80, 25, 79, 22, 1, 11, 25, 15, 68, 30, 0,
+ 25, 81, 15, 81, 11, 72, 11, 82, 26, 11, 84, 25, 83, 15, 30, 11, 85, 15, 83, 26,
+ 11, 87, 25, 86, 22, 1, 11, 25, 15, 68, 30, 0, 25, 88, 15, 88, 11, 72, 11, 89,
+ 26, 11, 91, 25, 90, 15, 30, 11, 92, 15, 90, 26, 22, 1, 11, 25, 15, 0, 30, 0,
+ 25, 93, 15, 93, 11, 26, 11, 94, 26, 11, 96, 25, 95, 15, 30, 11, 97, 15, 95, 26,
+ 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 11,100, 15,101, 30, 0, 30, 1, 25, 98,
+ 15, 98, 11, 26, 11,102, 26, 11,104, 25,103, 15, 30, 11,105, 15,103, 26, 22, 1,
+ 11, 25, 15, 0, 30, 0, 25,106, 15,106, 11, 26, 11,107, 26, 11,109, 25,108, 15,
+ 30, 11,110, 15,108, 26, 22, 1, 11, 25, 15,112, 30, 0, 25,111, 15,111, 11, 26,
+ 11,113, 26, 11,115, 25,114, 15, 30, 11,116, 15,114, 26, 22, 2, 11, 25, 15, 0,
+ 11, 99, 22, 1, 11,118, 15,101, 30, 0, 30, 1, 25,117, 15,117, 11, 26, 11,119,
+ 26, 11,121, 25,120, 15, 30, 11,122, 15,120, 26, 22, 1, 11, 25, 15,124, 30, 0,
+ 25,123, 15,123, 11, 26, 11,125, 26, 11,127, 25,126, 15, 30, 11,128, 15,126, 26,
+ 22, 1, 11, 25, 15,124, 30, 0, 25,129, 15,129, 11, 26, 11,130, 26, 11,132, 25,
+131, 15, 30, 11,133, 15,131, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 2, 15,135,
+ 29, 0, 1, 11,136, 15,101, 30, 0, 30, 1, 25,134, 15,134, 11, 26, 11,137, 26,
+ 11,139, 25,138, 15, 30, 11,140, 15,138, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,
+141, 15,141, 11, 26, 11,142, 26, 11,144, 25,143, 15, 30, 11,145, 15,143, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,146, 15,146, 11, 44, 11,147, 26, 15,146, 11, 26,
+ 11,148, 26, 11,150, 25,149, 15, 30, 11,151, 15,149, 26, 22, 1, 11, 25, 15, 0,
+ 30, 0, 25,152, 15,152, 11, 44, 11,153, 26, 15,152, 11, 26, 11,154, 26, 11,156,
+ 25,155, 15, 30, 11,157, 15,155, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,158, 15,
+158, 11, 44, 11,159, 26, 15,158, 11, 26, 11,160, 26, 11,162, 25,161, 15, 30, 11,
+163, 15,161, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,164, 15,164, 11, 44, 11,165,
+ 26, 15,164, 11, 26, 11,166, 26, 11,168, 25,167, 15, 30, 11,169, 15,167, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,170, 15,170, 11, 26, 11,171, 26, 11,173, 25,172,
+ 15, 30, 11,174, 15,172, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,175, 15,175, 11,
+ 4, 11,176, 26, 15,175, 11, 26, 11,177, 26, 11,179, 25,178, 15, 30, 11,180, 15,
+178, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 15,182, 29, 0, 1, 30, 1, 25,
+181, 15,181, 11, 26, 11,183, 26, 11,185, 25,184, 15, 30, 11,186, 15,184, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,187, 15,187, 11, 26, 11,188, 26, 11,190, 25,189,
+ 15, 30, 11,191, 15,189, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,192, 15,192, 11,
+ 26, 11,193, 26, 15,192, 11, 8, 11,194, 26, 15,192, 11, 10, 11,195, 26, 11,197,
+ 25,196, 15, 30, 11,198, 15,196, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,199, 15,
+199, 11, 4, 11,201, 26, 15,199, 11, 26, 11,202, 26, 11,204, 25,203, 15, 30, 11,
+205, 15,203, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,206, 15,206, 11, 26, 11,207,
+ 26, 11,209, 25,208, 15, 30, 11,210, 15,208, 26, 22, 1, 11, 25, 15,200, 30, 0,
+ 25,211, 15,211, 11, 26, 11,212, 26, 11,214, 25,213, 15, 30, 11,215, 15,213, 26,
+ 22, 1, 11, 25, 15,200, 30, 0, 25,216, 15,216, 11, 26, 11,217, 26, 11,219, 25,
+218, 15, 30, 11,220, 15,218, 26, 22, 33, 11,222, 22, 2, 11,223, 4, 0, 29, 0,
+ 2, 11,224, 22, 2, 11,225, 4, 0, 29, 0, 2, 11,226, 22, 2, 11,227, 15,228,
+ 29, 0, 2, 11,229, 22, 2, 11,230, 15,231, 29, 0, 2, 11,232, 22, 2, 11,233,
+ 15,234, 29, 0, 2, 11,235, 22, 2, 11,236, 15,237, 29, 0, 2, 11,238, 22, 2,
+ 11,239, 15,240, 29, 0, 2, 11,241, 22, 2, 11,242, 15,243, 29, 0, 2, 11,244,
+ 22, 2, 11,245, 15,246, 29, 0, 2, 11,247, 22, 2, 11,248, 15,249, 29, 0, 2,
+ 11,250, 22, 2, 11,251, 15,252, 29, 0, 2, 11,253, 22, 2, 11,254, 15,255, 29,
+ 0, 2, 10, 1, 0, 22, 2, 10, 1, 1, 14, 1, 2, 29, 0, 2, 10, 1, 3, 22,
+ 2, 10, 1, 4, 14, 1, 5, 29, 0, 2, 10, 1, 6, 22, 2, 10, 1, 7, 14, 1,
+ 8, 29, 0, 2, 10, 1, 9, 22, 2, 10, 1, 10, 14, 1, 11, 29, 0, 2, 10, 1,
+ 12, 22, 2, 10, 1, 13, 14, 1, 14, 29, 0, 2, 10, 1, 15, 22, 2, 10, 1, 16,
+ 14, 1, 17, 29, 0, 2, 10, 1, 18, 22, 2, 10, 1, 19, 14, 1, 20, 29, 0, 2,
+ 10, 1, 21, 22, 2, 10, 1, 22, 14, 1, 23, 29, 0, 2, 10, 1, 24, 22, 2, 10,
+ 1, 25, 14, 1, 26, 29, 0, 2, 11,105, 22, 2, 10, 1, 27, 14, 1, 28, 29, 0,
+ 2, 10, 1, 29, 22, 2, 10, 1, 30, 14, 1, 31, 29, 0, 2, 10, 1, 32, 22, 2,
+ 10, 1, 30, 14, 1, 33, 29, 0, 2, 10, 1, 34, 22, 2, 10, 1, 35, 14, 1, 36,
+ 29, 0, 2, 10, 1, 37, 22, 2, 10, 1, 38, 14, 1, 39, 29, 0, 2, 10, 1, 40,
+ 22, 2, 10, 1, 41, 14, 1, 42, 29, 0, 2, 10, 1, 43, 22, 2, 10, 1, 44, 14,
+ 1, 45, 29, 0, 2, 10, 1, 46, 22, 2, 10, 1, 47, 14, 1, 48, 29, 0, 2, 10,
+ 1, 49, 22, 2, 10, 1, 50, 14, 1, 51, 29, 0, 2, 10, 1, 52, 22, 2, 10, 1,
+ 53, 14, 1, 54, 29, 0, 2, 10, 1, 55, 22, 2, 10, 1, 56, 14, 1, 57, 29, 0,
+ 2, 30, 31, 10, 1, 58, 22, 2, 10, 1, 59, 14, 1, 60, 29, 0, 2, 30, 0, 25,
+221, 15,221, 18,222, 11,128, 14, 1, 61, 26, 15,221, 18,222, 11,116, 14, 1, 62,
+ 26, 15,221, 18,222, 11,110, 14, 1, 62, 26, 15,221, 18,222, 11,105, 14, 1, 63,
+ 26, 15,221, 18,222, 11,198, 14, 1, 64, 26, 15,221, 18,222, 11,133, 14, 1, 63,
+ 26, 15,221, 18,222, 11,191, 14, 1, 65, 26, 15,221, 18,224, 11, 31, 14, 1, 66,
+ 26, 15,221, 10, 1, 67, 15,221, 18,224, 26, 15,221, 10, 1, 68, 15,221, 18,226,
+ 26, 15,221, 10, 1, 69, 15,221, 18,229, 26, 15,221, 10, 1, 70, 15,221, 18,232,
+ 26, 15,221, 11,235, 15,221, 18,235, 26, 15,221, 10, 1, 71, 15,221, 18,238, 26,
+ 15,221, 10, 1, 72, 15,221, 18,241, 26, 15,221, 10, 1, 73, 15,221, 18,244, 26,
+ 15,221, 10, 1, 74, 15,221, 18,247, 26, 15,221, 10, 1, 75, 15,221, 18,250, 26,
+ 15,221, 10, 1, 76, 15,221, 18,253, 26, 15,221, 10, 1, 77, 15,221, 17, 1, 0,
+ 26, 15,221, 10, 1, 78, 15,221, 17, 1, 3, 26, 15,221, 10, 1, 79, 15,221, 17,
+ 1, 6, 26, 15,221, 10, 1, 80, 15,221, 17, 1, 9, 26, 15,221, 10, 1, 81, 15,
+221, 17, 1, 12, 26, 15,221, 10, 1, 82, 15,221, 17, 1, 15, 26, 15,221, 10, 1,
+ 83, 15,221, 17, 1, 18, 26, 15,221, 10, 1, 84, 15,221, 17, 1, 21, 26, 15,221,
+ 10, 1, 85, 15,221, 17, 1, 24, 26, 15,221, 10, 1, 86, 15,221, 18,105, 26, 15,
+221, 10, 1, 87, 15,221, 17, 1, 29, 26, 15,221, 10, 1, 88, 15,221, 17, 1, 32,
+ 26, 15,221, 10, 1, 89, 15,221, 17, 1, 34, 26, 15,221, 10, 1, 90, 15,221, 17,
+ 1, 37, 26, 15,221, 10, 1, 91, 15,221, 17, 1, 40, 26, 15,221, 10, 1, 92, 15,
+221, 17, 1, 43, 26, 15,221, 10, 1, 93, 15,221, 17, 1, 46, 26, 15,221, 10, 1,
+ 94, 15,221, 17, 1, 52, 26, 15,221, 10, 1, 95, 15,221, 17, 1, 49, 26, 15,221,
+ 10, 1, 96, 15,221, 17, 1, 55, 26, 15,221, 10, 1, 97, 15,221, 17, 1, 58, 26,
+ 15,221, 10, 1, 98, 15,221, 17, 1, 99, 26, 0, 0, 0, 0, 0, 0, 0, 1,100,
+ 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 5,116,121,112,
+101, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 4,
+ 0, 0, 0, 12, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 57, 7, 2, 13, 1, 11, 1, 13, 0,
+ 26, 13, 0, 20, 3, 13, 1, 2, 0, 2, 13, 1, 11, 4, 13, 0, 20, 5, 13, 1,
+ 2, 1, 2, 26, 13, 0, 20, 6, 13, 1, 2, 0, 2, 15, 7, 13, 1, 18, 4, 13,
+ 1, 26, 13, 1, 18, 4, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, 99,104,101, 99,107, 80, 97,
+114, 97,109,115, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0,
+ 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 2,
+ 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 2, 0,
+ 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 12,
+ 99,104,101, 99,107, 80, 97,114, 97,109,115, 0, 4, 0, 0, 0, 32, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 61, 8, 2, 13, 0, 18, 1, 15, 5, 13, 2, 4, 0, 2, 2, 2,
+ 50, 39, 13, 4, 13, 1, 13, 3, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13,
+ 3, 42, 11, 8, 42, 2, 0, 1, 15, 5, 13, 2, 13, 3, 2, 2, 2, 23, 4, 23,
+ 3, 13, 3, 54, 43, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 5,115,101,
+108,102, 0, 2, 0, 0, 0, 6,112, 97,114, 97,109, 0, 2, 0, 0, 0, 5,102,
+117,110, 99, 0, 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,101,
+114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32,
+ 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,
+117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,
+105,122,101,100, 0, 2, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,
+116,101,115, 0, 4, 0, 0, 0, 43, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 80, 9, 2, 22,
+ 0, 15, 3, 13, 1, 4, 0, 2, 1, 2, 50, 18, 13, 2, 13, 3, 7, 1, 26, 15,
+ 3, 13, 1, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 22, 15, 3, 13, 2, 4, 0,
+ 2, 1, 2, 23, 3, 50, 25, 13, 1, 20, 4, 13, 3, 13, 1, 13, 3, 16, 2, 0,
+ 3, 15, 3, 13, 2, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 29, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 5,116,
+101,109,112, 0, 2, 0, 0, 0, 2,102, 0, 2, 0, 0, 0, 5,110,101,120,116,
+ 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, 0, 0, 0, 4,103,101,116, 0, 4,
+ 0, 0, 0, 57, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 82, 6, 2, 15, 1, 13, 1, 2, 1,
+ 1, 52, 63, 15, 2, 13, 1, 16, 52, 9, 13, 0, 13, 1, 16, 1, 2, 50, 47, 15,
+ 5, 13, 1, 2, 1, 1, 15, 7, 13, 0, 18, 8, 13, 2, 2, 1, 2, 13, 3, 52,
+ 23, 15, 9, 13, 3, 2, 1, 1, 13, 4, 52, 6, 13, 4, 1, 5, 50, 4, 13, 3,
+ 1, 5, 5, 1, 5, 2, 13, 0, 13, 1, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 10, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 12,116,121,
+112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99,
+ 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2,
+ 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115,116,114,117,112,
+112,101,114, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 16,
+ 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0,
+ 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71,101,116, 72,
+ 97,110,100,108,101, 0, 2, 0, 0, 0, 4,115,101,116, 0, 4, 0, 0, 0, 77,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0,228, 11, 3, 15, 2, 13, 1, 2, 1, 1, 52,209, 15,
+ 4, 13, 1, 2, 1, 1, 15, 6, 13, 1, 16, 13, 1, 11, 7, 32, 48, 12, 15, 8,
+ 13, 0, 18, 10, 2, 1, 1, 11, 11, 32, 52, 4, 4, 0, 23, 4, 13, 4, 52, 55,
+ 13, 4, 7, 2, 16, 13, 5, 44, 52, 14, 13, 4, 15, 8, 13, 0, 18, 10, 2, 1,
+ 1, 16, 23, 5, 15, 13, 13, 0, 18, 10, 13, 4, 7, 1, 16, 13, 5, 13, 2, 2,
+ 0, 4, 13, 0, 13, 1, 13, 2, 26, 1, 6, 5, 1, 50,111, 15, 2, 13, 2, 2,
+ 1, 1, 46, 7, 15, 14, 13, 2, 2, 1, 1, 52, 17, 15, 15, 13, 0, 18, 10, 13,
+ 3, 13, 2, 2, 0, 3, 1, 5, 50, 76, 15, 16, 13, 2, 2, 1, 1, 52, 34, 15,
+ 18, 13, 0, 18, 10, 13, 3, 2, 1, 2, 13, 5, 52, 15, 15, 15, 13, 0, 18, 10,
+ 13, 3, 13, 2, 2, 0, 3, 1, 6, 5, 1, 50, 33, 15, 19, 13, 2, 2, 1, 1,
+ 52, 24, 15, 20, 13, 2, 2, 0, 1, 15, 15, 13, 0, 18, 10, 13, 3, 13, 2, 18,
+ 21, 2, 0, 3, 1, 5, 5, 2, 13, 0, 13, 1, 13, 2, 26, 0, 0, 0, 0, 0,
+ 0, 0, 0, 22, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 6,
+118, 97,108,117,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,
+110,103, 0, 2, 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115,
+116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 3, 99, 98, 0, 2, 0, 0, 0,
+ 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 7,
+114,101,115,105,122,101, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 67,108,
+ 97,115,115, 78, 97,109,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0,
+ 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,
+103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, 0, 15,105,117,112,
+ 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0, 2, 0, 0, 0, 12,116,121,112,
+101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116,
+ 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,116,121,112,101, 95,
+110,105,108, 0, 2, 0, 0, 0, 10,111,108,100, 95,118, 97,108,117,101, 0, 2,
+ 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0,
+ 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0,
+ 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 9, 73, 85,
+ 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111,
+121, 0, 4, 0, 0, 0,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 89, 6, 1, 7, 1, 13,
+ 0, 13, 1, 16, 50, 66, 15, 3, 13, 2, 2, 1, 1, 48, 4, 13, 2, 18, 4, 52,
+ 37, 13, 2, 18, 4, 13, 0, 32, 52, 16, 13, 2, 11, 4, 4, 0, 26, 13, 2, 20,
+ 5, 2, 0, 1, 50, 12, 15, 6, 11, 7, 2, 0, 1, 15, 8, 2, 0, 0, 13, 1,
+ 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 23, 2, 13, 2, 54, 70, 15, 9, 13, 0,
+ 4, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 2,105, 0, 2,
+ 0, 0, 0, 5,101,108,101,109, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2,
+ 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0,
+ 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 10,114, 95,100,
+101,115,116,114,111,121, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0,
+ 0, 0, 29, 73,110,116,101,114,110, 97,108, 32,116, 97, 98,108,101, 32,105,110,
+ 99,111,110,115,105,115,116,101,110, 99,121, 0, 2, 0, 0, 0, 5,101,120,105,
+116, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2,
+ 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0,133, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 17, 3, 1, 13, 0, 20, 1, 2, 0, 1, 15, 2, 13, 0, 2, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111,121, 0, 2, 0, 0, 0, 11,
+ 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 7,100,101,116, 97,
+ 99,104, 0, 4, 0, 0, 0,138, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 96, 8, 1, 15, 0,
+ 13, 0, 2, 0, 1, 13, 0, 18, 3, 13, 1, 52, 78, 13, 0, 11, 3, 4, 0, 26,
+ 7, 1, 50, 58, 13, 1, 13, 2, 16, 13, 0, 32, 52, 41, 50, 20, 13, 1, 13, 2,
+ 13, 1, 13, 2, 7, 1, 37, 16, 26, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2,
+ 7, 1, 37, 16, 54, 30, 13, 1, 13, 2, 4, 0, 26, 1, 3, 13, 2, 7, 1, 37,
+ 23, 2, 13, 1, 13, 2, 16, 54, 65, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 2, 0, 0, 0, 10, 73,117,112, 68,101,116, 97, 99,104, 0, 2, 0, 0, 0, 5,
+115,101,108,102, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0,
+ 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 2,105, 0,
+ 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0,158, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 75, 6, 2, 15, 1, 13, 0, 13, 1, 2, 1, 2, 52, 57, 13, 1,
+ 11, 3, 13, 0, 26, 7, 1, 50, 21, 13, 0, 13, 2, 16, 13, 1, 32, 52, 4, 13,
+ 2, 1, 3, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 28, 15, 5, 13,
+ 0, 16, 13, 2, 13, 1, 26, 13, 2, 1, 3, 5, 1, 50, 4, 4, 0, 1, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10,
+ 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
+ 2,105, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0,
+ 2, 0, 0, 0, 4,109, 97,112, 0, 4, 0, 0, 0,175, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 2, 0, 0, 0, 7, 73,117,112, 77, 97,112, 0, 2, 0, 0, 0, 5,115,101,108,
+102, 0, 2, 0, 0, 0, 5,104,105,100,101, 0, 4, 0, 0, 0,179, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 72,105,100,101, 0, 2, 0, 0, 0,
+ 5,115,101,108,102, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 17, 67,114,101,
+ 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0,187, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112,
+ 67,114,101, 97,116,101, 84,105,109,101,114, 0, 2, 0, 0, 0, 9,105,117,112,
+116,105,109,101,114, 0, 4, 0, 0, 0,191, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,116,105,109,101,114, 0, 2, 0, 0,
+ 0, 13, 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 4, 0, 0, 0,200,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,105,117,
+112, 67,114,101, 97,116,101, 67,108,105,112, 98,111, 97,114,100, 0, 2, 0, 0,
+ 0, 13,105,117,112, 99,108,105,112, 98,111, 97,114,100, 0, 4, 0, 0, 0,204,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 13,
+ 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10, 99,108,105,112, 98,
+111, 97,114,100, 0, 2, 0, 0, 0, 10, 73, 85, 80, 68, 73, 65, 76, 79, 71, 0,
+ 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0,
+ 0,213, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2,
+ 1, 1, 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104,
+ 97,110,100,108,101, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101,
+ 68,105, 97,108,111,103, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 4, 0, 0, 0,219, 0, 0,
+ 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117,
+ 97, 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 83,104,111,119, 0, 2, 0, 0,
+ 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,115,104,111,119,120,121, 0, 4,
+ 0, 0, 0,223, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1,
+ 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120,
+ 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 10, 73,117,112, 83,104,111,119,
+ 88, 89, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 6,112,111,
+112,117,112, 0, 4, 0, 0, 0,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15,
+ 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,
+ 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,
+112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0,
+ 0, 10,105,117,112,100,105, 97,108,111,103, 0, 4, 0, 0, 0,231, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80,
+ 68, 73, 65, 76, 79, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,
+116,111,114, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,103, 0, 2, 0, 0, 0,
+ 9, 73, 85, 80, 82, 65, 68, 73, 79, 0, 4, 0, 0, 0,240, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, 13, 1, 7, 1, 16,
+ 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0,
+ 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2,
+ 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 82, 97,100,105,111, 0, 2,
+ 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9,
+105,117,112,114, 97,100,105,111, 0, 4, 0, 0, 0,246, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 26, 5, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 15, 4, 13, 1, 7, 1, 16,
+ 2, 0, 1, 13, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 9,
+ 73, 85, 80, 82, 65, 68, 73, 79, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,
+117, 99,116,111,114, 0, 2, 0, 0, 0, 23,105,117,112, 67,114,101, 97,116,101,
+ 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 2, 0, 0, 0, 6,114,
+ 97,100,105,111, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115,
+ 0, 4, 0, 0, 0,254, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,156, 11, 1, 22, 0, 7, 1,
+ 50, 61, 15, 3, 13, 0, 13, 2, 16, 2, 1, 1, 52, 29, 13, 1, 13, 2, 15, 4,
+ 22, 2, 11, 5, 13, 0, 13, 2, 16, 11, 6, 13, 0, 18, 6, 30, 1, 2, 1, 1,
+ 26, 50, 13, 15, 7, 11, 8, 13, 2, 42, 11, 9, 42, 2, 0, 1, 13, 2, 7, 1,
+ 37, 23, 2, 13, 0, 13, 2, 16, 54, 68, 13, 0, 18, 10, 52, 51, 7, 1, 50, 7,
+ 13, 3, 7, 1, 37, 23, 3, 13, 0, 13, 3, 16, 48, 10, 13, 0, 13, 3, 16, 13,
+ 0, 18, 10, 31, 54, 26, 13, 0, 13, 3, 16, 52, 10, 13, 1, 11, 10, 13, 1, 13,
+ 3, 16, 26, 5, 1, 50, 18, 13, 0, 18, 12, 52, 12, 13, 1, 11, 10, 13, 1, 13,
+ 0, 18, 12, 16, 26, 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0,
+ 0, 0, 2,104, 0, 2, 0, 0, 0, 4,116,109,112, 0, 2, 0, 0, 0, 2,105,
+ 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0,
+ 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,
+116,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0,
+ 6,101,114,114,111,114, 0, 2, 0, 0, 0, 8,111,112,116,105,111,110, 32, 0,
+ 2, 0, 0, 0, 18, 32,109,117,115,116, 32, 98,101, 32, 97, 32,115,116,114,105,
+110,103, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 2,106,
+ 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 9,101,100,
+104,114, 97,100,105,111, 0, 4, 0, 0, 1, 26, 0, 0, 0, 20, 64,105,117,112,
+108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 35,
+ 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, 2, 1, 1,
+ 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,103,103,108,
+101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, 0, 2,
+ 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, 7,101,100,
+104, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0,
+ 9,101,100,118,114, 97,100,105,111, 0, 4, 0, 0, 1, 32, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 35, 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1,
+ 2, 1, 1, 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,
+103,103,108,101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,
+115, 0, 2, 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0,
+ 7,101,100,118, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, 85, 0, 4, 0, 0, 1, 41, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0,159, 7, 2, 7, 1, 50,145, 13, 1, 13, 2, 16, 15, 3, 13, 3,
+ 2, 1, 1, 44, 52,121, 15, 4, 13, 3, 2, 1, 1, 11, 5, 31, 52, 15, 15, 6,
+ 11, 7, 13, 2, 42, 11, 8, 42, 2, 0, 1, 50, 94, 13, 3, 7, 1, 16, 48, 11,
+ 15, 9, 13, 3, 7, 1, 16, 2, 1, 1, 44, 52, 15, 15, 6, 11, 7, 13, 2, 42,
+ 11, 10, 42, 2, 0, 1, 50, 59, 13, 3, 7, 2, 16, 48, 11, 15, 9, 13, 3, 7,
+ 2, 16, 2, 1, 1, 44, 48, 11, 15, 11, 13, 3, 7, 2, 16, 2, 1, 1, 44, 48,
+ 11, 15, 12, 13, 3, 7, 2, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, 2,
+ 42, 11, 13, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2,
+ 16, 54,152, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, 98,106,
+ 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10,
+116,121,112,101, 95,105,116,101,109, 0, 2, 0, 0, 0, 5,116,121,112,101, 0,
+ 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,
+114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, 2, 0,
+ 0, 0, 32, 32,105,115, 32,110,111,116, 32, 97, 32,116, 97, 98,108,101, 32,110,
+111,114, 32, 97, 32,109,101,110,117, 32,105,116,101,109, 0, 2, 0, 0, 0, 12,
+116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 30, 32,100,111,
+101,115, 32,110,111,116, 32,104, 97,118,101, 32, 97, 32,115,116,114,105,110,103,
+ 32,116,105,116,108,101, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110,
+ 99,116,105,111,110, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,
+101,116, 0, 2, 0, 0, 0, 36, 32,100,111,101,115, 32,110,111,116, 32,104, 97,
+118,101, 32, 97,110, 32, 97, 99,116,105,111,110, 32,110,111,114, 32, 97, 32,109,
+101,110,117, 0, 4, 0, 0, 1, 59, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,189, 10, 2, 15,
+ 2, 2, 1, 0, 7, 1, 50,166, 13, 1, 13, 3, 16, 4, 0, 15, 6, 13, 4, 2,
+ 1, 1, 52, 6, 13, 4, 23, 5, 50,112, 13, 4, 7, 1, 16, 44, 52, 11, 15, 7,
+ 22, 0, 2, 1, 1, 23, 5, 50, 93, 15, 6, 13, 4, 7, 2, 16, 2, 1, 1, 52,
+ 38, 13, 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 7, 1, 13, 4, 7, 2, 16,
+ 26, 13, 4, 7, 2, 4, 0, 26, 15, 9, 13, 4, 2, 1, 1, 23, 5, 50, 43, 13,
+ 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 11, 10, 13, 4, 7, 2, 16, 26, 13,
+ 4, 7, 1, 4, 0, 26, 13, 4, 7, 2, 4, 0, 26, 15, 11, 13, 4, 2, 1, 1,
+ 23, 5, 15, 12, 13, 2, 13, 5, 2, 0, 2, 13, 5, 11, 13, 13, 2, 26, 13, 1,
+ 13, 3, 13, 5, 26, 13, 3, 7, 1, 37, 23, 3, 5, 2, 13, 1, 13, 3, 16, 54,
+173, 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 14,
+105,117,112, 67,114,101, 97,116,101, 77,101,110,117, 0, 2, 0, 0, 0, 2,105,
+ 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,101,108,101,109, 0, 2, 0,
+ 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 13,
+105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 6,116,105,
+116,108,101, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0,
+ 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,105,117,112,
+105,116,101,109, 0, 2, 0, 0, 0, 10, 73,117,112, 65,112,112,101,110,100, 0,
+ 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
+ 8,105,117,112,109,101,110,117, 0, 4, 0, 0, 1, 89, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78,
+ 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2,
+ 0, 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78,
+ 85, 0, 4, 0, 0, 1, 94, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13,
+ 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0,
+ 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112, 80,
+111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12,
+ 67, 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 4, 0, 0, 1,102, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, 2, 13, 1, 13, 2, 16, 2, 1,
+ 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, 5, 42, 2, 0, 1, 13, 2, 7,
+ 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0,
+ 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 6,101,114,
+114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0,
+ 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,
+101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,
+122,101,100, 0, 4, 0, 0, 1,112, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,187, 11, 2, 13,
+ 0, 20, 3, 2, 1, 1, 13, 1, 18, 4, 7, 1, 7, 0, 50, 14, 13, 5, 7, 1,
+ 37, 23, 5, 13, 4, 7, 1, 37, 23, 4, 13, 1, 13, 4, 16, 54, 21, 7, 1, 23,
+ 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, 2,
+ 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, 1,
+ 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 50, 79, 15, 9, 13, 2, 13, 1, 13,
+ 4, 16, 2, 0, 2, 13, 1, 13, 4, 16, 11, 10, 13, 2, 26, 13, 4, 7, 1, 37,
+ 23, 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0,
+ 2, 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13,
+ 1, 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 13, 4, 13, 5, 34, 54, 86, 13,
+ 2, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, 4,111, 98,106,
+ 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 5,115,101,
+108,102, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,
+109,101,110,116, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0,
+ 0, 2,105, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95,
+ 89, 69, 83, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0,
+ 0, 10, 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 11, 73, 85, 80,
+ 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88,
+ 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,109,101,
+110,116, 0, 4, 0, 0, 1,146, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0,
+ 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112,
+ 67,114,101, 97,116,101, 72, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,104,
+ 98,111,120, 0, 4, 0, 0, 1,150, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15,
+ 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0, 2, 0, 0,
+ 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,104,
+ 98,111,120, 0, 2, 0, 0, 0, 7,101,100,104, 98,111,120, 0, 4, 0, 0, 1,
+156, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3,
+ 20, 4, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8,
+ 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88,
+ 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0,
+ 0, 0, 8,101,100,102,105,101,108,100, 0, 4, 0, 0, 1,162, 0, 0, 0, 20,
+ 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0,
+ 0, 0, 0,123, 7, 1, 4, 1, 15, 3, 13, 0, 18, 4, 2, 1, 1, 46, 9, 15,
+ 5, 13, 0, 18, 4, 2, 1, 1, 52, 19, 15, 6, 22, 1, 11, 7, 13, 0, 18, 4,
+ 30, 0, 2, 1, 1, 23, 1, 50, 7, 15, 8, 11, 9, 2, 0, 1, 13, 0, 18, 10,
+ 52, 19, 15, 11, 22, 1, 11, 10, 13, 0, 18, 10, 30, 0, 2, 1, 1, 23, 2, 50,
+ 17, 15, 11, 22, 1, 11, 10, 13, 0, 18, 12, 30, 0, 2, 1, 1, 23, 2, 13, 2,
+ 48, 2, 13, 1, 52, 16, 15, 13, 22, 2, 13, 1, 13, 2, 29, 0, 2, 3, 3, 1,
+ 50, 4, 4, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 2,
+102, 0, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0,
+ 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 7,112,114,
+111,109,112,116, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,110,117,109, 98,101,
+114, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0,
+ 6,116,105,116,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0,
+ 0, 0, 55,112, 97,114, 97,109,101,116,101,114, 32,112,114,111,109,112,116, 32,
+104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,
+115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,122,101,100, 0, 2, 0,
+ 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8,105,117,112,116,101,120,
+116, 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 7,101,
+100,104, 98,111,120, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 4,
+ 0, 0, 1,185, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,
+116,101, 86, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0,
+ 4, 0, 0, 1,189, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13,
+ 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,118, 98,111,120, 0,
+ 2, 0, 0, 0, 7,101,100,118, 98,111,120, 0, 4, 0, 0, 1,195, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, 20, 4, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95,
+ 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0,
+ 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8, 73,
+ 85, 80, 90, 66, 79, 88, 0, 4, 0, 0, 1,204, 0, 0, 0, 20, 64,105,117,112,
+108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8,
+ 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0,
+ 14,105,117,112, 67,114,101, 97,116,101, 90, 98,111,120, 0, 2, 0, 0, 0, 8,
+105,117,112,122, 98,111,120, 0, 4, 0, 0, 1,208, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 44, 6, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 7, 1, 50, 17, 15, 5, 13, 1,
+ 13, 2, 16, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 24,
+ 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 8, 73,
+ 85, 80, 90, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,
+116,111,114, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11,105,117,112, 83,
+101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 5,122, 98,111,120, 0, 2, 0, 0,
+ 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 4, 0, 0, 1,223, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
+ 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,
+116,101, 70,105,108,108, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0,
+ 4, 0, 0, 1,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13,
+ 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,102,105,108,108, 0,
+ 2, 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 5,
+116,121,112,101, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0,
+ 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 4, 0, 0, 1,236, 0, 0,
+ 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117,
+ 97, 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52,
+ 7, 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,
+116,105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0,
+ 0, 1, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 66,117,116,
+116,111,110, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 4,
+ 0, 0, 1,243, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 98,117,116,116,
+111,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, 1,
+252, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,
+117,112, 67,114,101, 97,116,101, 84,101,120,116, 0, 2, 0, 0, 0, 8,105,117,
+112,116,101,120,116, 0, 4, 0, 0, 2, 0, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 2,
+ 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0,
+ 5,116,101,120,116, 0, 2, 0, 0, 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76,
+ 73, 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0,
+ 2, 9, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,
+105,117,112, 67,114,101, 97,116,101, 77,117,108,116,105, 76,105,110,101, 0, 2,
+ 0, 0, 0, 13,105,117,112,109,117,108,116,105,108,105,110,101, 0, 4, 0, 0,
+ 2, 13, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0,
+ 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, 73, 78, 69, 0, 2, 0, 0, 0, 12,
+ 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,109,117,108,
+116,105,108,105,110,101, 0, 2, 0, 0, 0, 9, 73, 85, 80, 76, 65, 66, 69, 76,
+ 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 2, 22, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, 7,
+ 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,116,
+105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, 0,
+ 1, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 76, 97, 98,101,
+108, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 4, 0, 0, 2,
+ 29, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0,
+ 9, 73, 85, 80, 76, 65, 66, 69, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,
+114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,108, 97, 98,101,108, 0, 2, 0,
+ 0, 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 10, 73, 85,
+ 80, 66, 85, 84, 84, 79, 78, 0, 4, 0, 0, 2, 38, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,
+101, 97,116,101, 84,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,116,108,
+101, 0, 2, 0, 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 4, 0, 0,
+ 2, 42, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0,
+ 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7,116,111,103,103,108,101,
+ 0, 2, 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 4, 0, 0, 2, 51, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 14,105,117,112, 67,114,101, 97,116,101, 73,116,101,109, 0, 2, 0, 0, 0, 6,
+116,105,116,108,101, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 4,
+ 0, 0, 2, 55, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2,
+ 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,
+116,121,112,101, 95,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,101,
+ 0, 4, 0, 0, 2, 64, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 31, 6, 2, 15, 2, 13, 1,
+ 18, 3, 13, 1, 7, 1, 16, 2, 1, 2, 13, 1, 7, 1, 16, 11, 4, 13, 2, 26,
+ 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 2,104, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101,
+ 97,116,101, 83,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,
+101, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, 4, 0, 0, 2, 70, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73,
+ 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,
+114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0,
+ 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 4, 0,
+ 0, 2, 79, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 19,105,117,112, 67,114,101, 97,116,101, 83,101,112, 97,114, 97,116,111,114, 0,
+ 2, 0, 0, 0, 13,105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 4, 0,
+ 0, 2, 83, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, 0, 0, 0,
+ 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,115,101,
+112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69,
+ 68, 76, 71, 0, 4, 0, 0, 2, 92, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15,
+ 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,
+ 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,
+112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0,
+ 2, 96, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101,
+ 70,105,108,101, 68,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101,
+100,108,103, 0, 4, 0, 0, 2,100, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15,
+ 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, 68, 76, 71, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 14, 73, 85, 80, 77, 69,
+ 83, 83, 65, 71, 69, 68, 76, 71, 0, 4, 0, 0, 2,109, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0,
+ 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,
+102, 0, 4, 0, 0, 2,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 20,105,117,112, 67,
+114,101, 97,116,101, 77,101,115,115, 97,103,101, 68,108,103, 0, 2, 0, 0, 0,
+ 14,105,117,112,109,101,115,115, 97,103,101,100,108,103, 0, 4, 0, 0, 2,117,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 14,
+ 73, 85, 80, 77, 69, 83, 83, 65, 71, 69, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,109,101,115,115,
+ 97,103,101,100,108,103, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82,
+ 68, 76, 71, 0, 4, 0, 0, 2,126, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15,
+ 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,
+ 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,
+112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0,
+ 2,130, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101,
+ 67,111,108,111,114, 68,108,103, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108,
+111,114,100,108,103, 0, 4, 0, 0, 2,134, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 68,
+ 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 9, 99,111,108,111,114,100,108,103, 0, 2, 0, 0, 0, 11, 73,
+ 85, 80, 70, 79, 78, 84, 68, 76, 71, 0, 4, 0, 0, 2,143, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2,
+ 0, 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,
+108,102, 0, 4, 0, 0, 2,147, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0,
+ 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112,
+ 67,114,101, 97,116,101, 70,111,110,116, 68,108,103, 0, 2, 0, 0, 0, 11,105,
+117,112,102,111,110,116,100,108,103, 0, 4, 0, 0, 2,151, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 79,
+ 78, 84, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,
+111,114, 0, 2, 0, 0, 0, 8,102,111,110,116,100,108,103, 0, 2, 0, 0, 0,
+ 8, 73, 85, 80, 85, 83, 69, 82, 0, 4, 0, 0, 2,160, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0,
+ 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 85,115,101,114, 0, 2, 0, 0,
+ 0, 8,105,117,112,117,115,101,114, 0, 4, 0, 0, 2,164, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 10, 2, 0, 15, 0, 20, 1, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 0, 0, 0, 8, 73, 85, 80, 85, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,117,115,101,114,
+ 0, 2, 0, 0, 0, 14, 73, 85, 80, 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0,
+ 4, 0, 0, 2,173, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15,
+ 2, 13, 1, 13, 2, 16, 2, 1, 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11,
+ 5, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0,
+ 0, 2,105, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116,
+ 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114,
+ 97,109,101,116,101,114, 32, 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,
+111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,
+105,110,105,116,105, 97,108,105,122,101,100, 0, 4, 0, 0, 2,183, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 40, 8, 2, 15, 2, 2, 1, 0, 7, 1, 50, 17, 13, 2, 11, 4,
+ 13, 1, 13, 3, 16, 26, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 3, 16, 54, 24,
+ 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 20,105,
+117,112, 67,114,101, 97,116,101, 78,111,114,109, 97,108,105,122,101,114, 0, 2,
+ 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11, 97,100,100, 99,111,110,116,114,111,
+108, 0, 2, 0, 0, 0, 14,105,117,112,110,111,114,109, 97,108,105,122,101,114,
+ 0, 4, 0, 0, 2,193, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 10, 2, 0, 15, 0, 20, 1,
+ 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 14, 73, 85, 80,
+ 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,
+116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,110,111,114,109, 97,108,105,
+122,101,114, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, 2, 0,
+ 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 2,202,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1,
+ 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,104, 0, 2,
+ 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 70,114, 97,109,101, 0, 2,
+ 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9,
+105,117,112,102,114, 97,109,101, 0, 4, 0, 0, 2,208, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65,
+ 77, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 6,102,114, 97,109,101, 0, 2, 0, 0, 0, 10, 73, 85, 80, 67,
+ 65, 78, 86, 65, 83, 0, 4, 0, 0, 2,217, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3,
+ 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,
+111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 67, 97,
+110,118, 97,115, 0, 2, 0, 0, 0, 10,105,117,112, 99, 97,110,118, 97,115, 0,
+ 4, 0, 0, 2,221, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13,
+ 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 10, 73, 85, 80, 67, 65, 78, 86, 65, 83, 0, 2, 0, 0, 0, 12,
+ 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 99, 97,110,
+118, 97,115, 0, 2, 0, 0, 0, 8, 73, 85, 80, 76, 73, 83, 84, 0, 4, 0, 0,
+ 2,230, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,
+105,117,112, 67,114,101, 97,116,101, 76,105,115,116, 0, 4, 0, 0, 2,234, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 42, 6, 2, 15, 1, 13, 1, 2, 1, 1, 11, 2, 32, 52,
+ 16, 15, 3, 13, 0, 18, 5, 11, 6, 13, 1, 42, 3, 2, 2, 50, 11, 15, 7, 18,
+ 8, 13, 0, 13, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0,
+ 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0,
+ 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,
+116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102,
+ 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2,
+ 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,103,101,116, 0,
+ 4, 0, 0, 2,242, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 90, 8, 3, 15, 2, 13, 1, 2,
+ 1, 1, 11, 3, 32, 52, 62, 15, 4, 13, 2, 2, 1, 1, 46, 7, 15, 5, 13, 2,
+ 2, 1, 1, 52, 21, 15, 6, 13, 0, 18, 8, 11, 9, 13, 1, 42, 11, 9, 13, 2,
+ 42, 3, 3, 3, 50, 23, 13, 2, 4, 0, 32, 52, 16, 15, 6, 13, 0, 18, 8, 11,
+ 9, 13, 1, 42, 13, 2, 3, 3, 3, 15, 10, 18, 11, 13, 0, 13, 1, 13, 2, 3,
+ 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 6,105,110,100,101,
+120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 5,116,121,
+112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 12,
+116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 12,116,121,112,
+101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116,
+ 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, 0,
+ 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,115,101,116, 0, 2,
+ 0, 0, 0, 8,105,117,112,108,105,115,116, 0, 4, 0, 0, 2,253, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80,
+ 76, 73, 83, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 5,108,105,115,116, 0, 2, 0, 0, 0, 9, 73, 85, 80,
+ 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0,
+ 0, 3, 6, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0,116, 8, 2, 7, 1, 50, 92, 7, 1, 50,
+ 32, 15, 3, 13, 1, 13, 2, 16, 13, 3, 16, 2, 1, 1, 11, 4, 31, 52, 7, 15,
+ 5, 11, 6, 2, 0, 1, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 2, 16, 13, 3,
+ 16, 54, 42, 13, 1, 18, 7, 48, 10, 13, 3, 7, 1, 38, 13, 1, 18, 7, 31, 52,
+ 9, 15, 5, 11, 8, 2, 0, 1, 50, 10, 13, 1, 11, 7, 13, 3, 7, 1, 38, 26,
+ 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, 16, 54, 99, 13, 1, 11, 9,
+ 13, 2, 7, 1, 38, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 4,
+111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,106, 0, 2, 0,
+ 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0,
+ 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 38,110,111,110, 45,
+110,117,109,101,114,105, 99, 32,118, 97,108,117,101, 32,105,110, 32,105,109, 97,
+103,101, 32,100,101,102,105,110,105,116,105,111,110, 0, 2, 0, 0, 0, 6,119,
+105,100,116,104, 0, 2, 0, 0, 0, 26,105,110, 99,111,110,115,105,115,116,101,
+110,116, 32,105,109, 97,103,101, 32,108,101,110,103,104,116, 0, 2, 0, 0, 0,
+ 7,104,101,105,103,104,116, 0, 4, 0, 0, 3, 29, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 74, 9, 2, 15, 2, 13, 1, 18, 3, 13, 1, 18, 4, 13, 1, 2, 1, 3, 15, 5,
+ 13, 1, 18, 6, 2, 1, 1, 11, 7, 32, 52, 38, 7, 1, 50, 23, 15, 9, 13, 2,
+ 13, 3, 13, 1, 18, 6, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 37, 23, 3, 13,
+ 1, 18, 6, 13, 3, 16, 54, 32, 5, 1, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 10, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,
+100,108,101, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 73,109,
+ 97,103,101, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 7,
+104,101,105,103,104,116, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0,
+ 0, 7, 99,111,108,111,114,115, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0,
+ 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,
+116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,105,117,112,105,109, 97,103,
+101, 0, 4, 0, 0, 3, 41, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20,
+ 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,
+111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 73, 77, 65, 71, 69, 0, 2, 0, 0, 0,
+ 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,105,109,
+ 97,103,101, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66,
+ 0, 4, 0, 0, 3, 49, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1,
+ 18, 2, 13, 1, 18, 3, 13, 1, 18, 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,
+114,101, 97,116,101, 73,109, 97,103,101, 82, 71, 66, 0, 2, 0, 0, 0, 6,119,
+105,100,116,104, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, 0, 2, 0, 0,
+ 0, 7,112,105,120,101,108,115, 0, 2, 0, 0, 0, 12,105,117,112,105,109, 97,
+103,101,114,103, 98, 0, 4, 0, 0, 3, 53, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4,
+ 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
+ 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82,
+ 71, 66, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 9,105,109, 97,103,101,114,103, 98, 0, 2, 0, 0, 0, 13, 73,
+ 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 4, 0, 0, 3, 61, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, 18, 2, 13, 1, 18, 3, 13, 1, 18,
+ 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 19,105,117,112, 67,114,101, 97,116,101, 73,109, 97,103,
+101, 82, 71, 66, 65, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0,
+ 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, 0, 7,112,105,120,101,108,115,
+ 0, 2, 0, 0, 0, 13,105,117,112,105,109, 97,103,101,114,103, 98, 97, 0, 4,
+ 0, 0, 3, 65, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 13, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 2, 0, 0,
+ 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,105,
+109, 97,103,101,114,103, 98, 97, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79,
+ 71, 82, 69, 83, 83, 66, 65, 82, 0, 4, 0, 0, 3, 74, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0,
+ 0, 0, 21,105,117,112, 67,114,101, 97,116,101, 80,114,111,103,114,101,115,115,
+ 66, 97,114, 0, 2, 0, 0, 0, 15,105,117,112,112,114,111,103,114,101,115,115,
+ 98, 97,114, 0, 4, 0, 0, 3, 78, 0, 0, 0, 20, 64,105,117,112,108,117, 97,
+ 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15,
+ 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 2,111, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, 71, 82, 69, 83, 83,
+ 66, 65, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114,
+ 0, 2, 0, 0, 0, 12,112,114,111,103,114,101,115,115, 98, 97,114, 0, 2, 0,
+ 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0,
+ 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 7, 65, 67, 84, 73, 79, 78,
+ 0, 2, 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 10,
+ 65, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 9,103,101,116,102,111,
+ 99,117,115, 0, 2, 0, 0, 0, 12, 71, 69, 84, 70, 79, 67, 85, 83, 95, 67, 66,
+ 0, 2, 0, 0, 0, 16,105,117,112, 95,103,101,116,102,111, 99,117,115, 95, 99,
+ 98, 0, 2, 0, 0, 0, 10,107,105,108,108,102,111, 99,117,115, 0, 2, 0, 0,
+ 0, 13, 75, 73, 76, 76, 70, 79, 67, 85, 83, 95, 67, 66, 0, 2, 0, 0, 0, 17,
+105,117,112, 95,107,105,108,108,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0,
+ 0, 6,102,111, 99,117,115, 0, 2, 0, 0, 0, 9, 70, 79, 67, 85, 83, 95, 67,
+ 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,102,111, 99,117,115, 95, 99, 98, 0,
+ 2, 0, 0, 0, 6,107, 95, 97,110,121, 0, 2, 0, 0, 0, 6, 75, 95, 65, 78,
+ 89, 0, 2, 0, 0, 0, 10,105,117,112, 95,107, 95, 97,110,121, 0, 2, 0, 0,
+ 0, 5,104,101,108,112, 0, 2, 0, 0, 0, 8, 72, 69, 76, 80, 95, 67, 66, 0,
+ 2, 0, 0, 0, 12,105,117,112, 95,104,101,108,112, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8, 99, 97,114,101,116, 99, 98, 0, 2, 0, 0, 0, 9, 67, 65, 82, 69, 84,
+ 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, 99, 97,114,101,116, 95, 99,
+ 98, 0, 2, 0, 0, 0, 9,107,101,121,112,114,101,115,115, 0, 2, 0, 0, 0,
+ 12, 75, 69, 89, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,
+112, 95,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 7,115,
+ 99,114,111,108,108, 0, 2, 0, 0, 0, 10, 83, 67, 82, 79, 76, 76, 95, 67, 66,
+ 0, 2, 0, 0, 0, 14,105,117,112, 95,115, 99,114,111,108,108, 95, 99, 98, 0,
+ 2, 0, 0, 0, 10,116,114, 97,121, 99,108,105, 99,107, 0, 2, 0, 0, 0, 13,
+ 84, 82, 65, 89, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,
+112, 95,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 6,
+ 99,108,111,115,101, 0, 2, 0, 0, 0, 9, 67, 76, 79, 83, 69, 95, 67, 66, 0,
+ 2, 0, 0, 0, 13,105,117,112, 95, 99,108,111,115,101, 95, 99, 98, 0, 2, 0,
+ 0, 0, 5,111,112,101,110, 0, 2, 0, 0, 0, 8, 79, 80, 69, 78, 95, 67, 66,
+ 0, 2, 0, 0, 0, 12,105,117,112, 95,111,112,101,110, 95, 99, 98, 0, 2, 0,
+ 0, 0, 7,115,104,111,119, 99, 98, 0, 2, 0, 0, 0, 8, 83, 72, 79, 87, 95,
+ 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,104,111,119, 95, 99, 98, 0,
+ 2, 0, 0, 0, 6,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 7, 77, 65, 80, 95,
+ 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,109, 97,112, 95, 99, 98, 0, 2,
+ 0, 0, 0, 8,117,110,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 9, 85, 78, 77,
+ 65, 80, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,117,110,109, 97,112,
+ 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114,111,112,102,105,108,101,115, 0, 2,
+ 0, 0, 0, 13, 68, 82, 79, 80, 70, 73, 76, 69, 83, 95, 67, 66, 0, 2, 0, 0,
+ 0, 17,105,117,112, 95,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,109,101,110,117, 99,108,111,115,101, 0, 2, 0, 0, 0, 13, 77,
+ 69, 78, 85, 67, 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112,
+ 95,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,
+105,103,104,108,105,103,104,116, 0, 2, 0, 0, 0, 13, 72, 73, 71, 72, 76, 73,
+ 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,104,105,103,104,
+108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 4,119,111,109, 0, 2, 0,
+ 0, 0, 7, 87, 79, 77, 95, 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,119,
+111,109, 95, 99, 98, 0, 2, 0, 0, 0, 6,119,104,101,101,108, 0, 2, 0, 0,
+ 0, 9, 87, 72, 69, 69, 76, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,
+119,104,101,101,108, 95, 99, 98, 0, 2, 0, 0, 0, 10, 66, 85, 84, 84, 79, 78,
+ 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95, 98,117,116,116,111,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 10,
+ 82, 69, 83, 73, 90, 69, 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,114,
+101,115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,109,111,118,101, 0, 2,
+ 0, 0, 0, 12,105,117,112, 95,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0,
+ 7,109,111,116,105,111,110, 0, 2, 0, 0, 0, 10, 77, 79, 84, 73, 79, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,109,111,116,105,111,110, 95, 99,
+ 98, 0, 2, 0, 0, 0, 12,101,110,116,101,114,119,105,110,100,111,119, 0, 2,
+ 0, 0, 0, 15, 69, 78, 84, 69, 82, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, 2,
+ 0, 0, 0, 19,105,117,112, 95,101,110,116,101,114,119,105,110,100,111,119, 95,
+ 99, 98, 0, 2, 0, 0, 0, 12,108,101, 97,118,101,119,105,110,100,111,119, 0,
+ 2, 0, 0, 0, 15, 76, 69, 65, 86, 69, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0,
+ 2, 0, 0, 0, 19,105,117,112, 95,108,101, 97,118,101,119,105,110,100,111,119,
+ 95, 99, 98, 0, 2, 0, 0, 0, 5,101,100,105,116, 0, 2, 0, 0, 0, 8, 69,
+ 68, 73, 84, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,101,100,105,116,
+ 95, 99, 98, 0, 2, 0, 0, 0, 12,109,117,108,116,105,115,101,108,101, 99,116,
+ 0, 2, 0, 0, 0, 15, 77, 85, 76, 84, 73, 83, 69, 76, 69, 67, 84, 95, 67, 66,
+ 0, 2, 0, 0, 0, 19,105,117,112, 95,109,117,108,116,105,115,101,108,101, 99,
+116, 95, 99, 98, 0, 2, 0, 0, 0, 7,102,105,108,101, 99, 98, 0, 2, 0, 0,
+ 0, 8, 70, 73, 76, 69, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,102,
+105,108,101, 95, 99, 98, 0, 2, 0, 0, 0, 14,109,100,105, 97, 99,116,105,118,
+ 97,116,101, 99, 98, 0, 2, 0, 0, 0, 15, 77, 68, 73, 65, 67, 84, 73, 86, 65,
+ 84, 69, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109,100,105, 97, 99,
+116,105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 11,100,114,111,112,100,
+111,119,110, 99, 98, 0, 2, 0, 0, 0, 12, 68, 82, 79, 80, 68, 79, 87, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,100,114,111,112,100,111,119,110,
+ 95, 99, 98, 0, 2, 0, 0, 0, 11,100, 98,108, 99,108,105, 99,107, 99, 98, 0,
+ 2, 0, 0, 0, 12, 68, 66, 76, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0,
+ 0, 16,105,117,112, 95,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0,
+ 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95,116,111,103,103,108,101,
+ 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110, 95,116,101,120,
+116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95, 98,117,
+116,116,111,110, 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110,
+ 95,108,105,115,116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,
+110, 95, 99, 97,110,118, 97,115, 0, 2, 0, 0, 0, 17,105,117,112, 95, 97, 99,
+116,105,111,110, 95,116,105,109,101,114, 0, 2, 0, 0, 0, 10, 97, 99,116,105,
+111,110, 95, 99, 98, 0, 2, 0, 0, 0, 12,103,101,116,102,111, 99,117,115, 95,
+ 99, 98, 0, 2, 0, 0, 0, 13,107,105,108,108,102,111, 99,117,115, 95, 99, 98,
+ 0, 2, 0, 0, 0, 9,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 8,
+104,101,108,112, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99,
+ 98, 0, 2, 0, 0, 0, 12,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,115, 99,114,111,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 13,116,
+114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,111,
+115,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,111,112,101,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 8,115,104,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 7,109, 97,112,
+ 95, 99, 98, 0, 2, 0, 0, 0, 9,117,110,109, 97,112, 95, 99, 98, 0, 2, 0,
+ 0, 0, 13,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, 0, 0, 0,
+ 13,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 13,104,
+105,103,104,108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 7,119,111,109,
+ 95, 99, 98, 0, 2, 0, 0, 0, 9,119,104,101,101,108, 95, 99, 98, 0, 2, 0,
+ 0, 0, 10, 98,117,116,116,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,
+115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,109,111,118,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 10,109,111,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0,
+ 15,101,110,116,101,114,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0,
+ 15,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0,
+ 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,108,116,105,115,
+101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,100,105, 97, 99,116,
+105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,102,105,108,101, 95, 99,
+ 98, 0, 2, 0, 0, 0, 12,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 2,
+ 0, 0, 0, 12,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0,
+ 16,118, 97,108,117,101, 99,104, 97,110,103,101,100, 95, 99, 98, 0, 2, 0, 0,
+ 0, 15,118, 97,108,117,101, 99,104, 97,110,103,101,100, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_widgets_le64.lo");
+}
diff --git a/iup/srclua3/loh/iuplua_widgets_le64w.loh b/iup/srclua3/loh/iuplua_widgets_le64w.loh
new file mode 100755
index 0000000..cce26b4
--- /dev/null
+++ b/iup/srclua3/loh/iuplua_widgets_le64w.loh
@@ -0,0 +1,920 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/iuplua_widgets_le64w.lo");
+*/
+/* ../obj/iuplua3/iuplua_widgets_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 20, 64,105,117,112,108,117,
+ 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 7,129, 67, 0,
+ 22, 1, 11, 1, 22, 0, 30, 0, 25, 0, 15, 0, 11, 2, 11, 3, 26, 15, 0, 11,
+ 4, 11, 5, 26, 15, 0, 11, 6, 11, 7, 26, 15, 0, 11, 8, 11, 9, 26, 15, 0,
+ 11, 10, 11, 11, 26, 15, 0, 11, 12, 11, 13, 26, 15, 0, 11, 14, 11, 15, 26, 15,
+ 0, 11, 16, 11, 17, 26, 15, 0, 11, 18, 11, 19, 26, 15, 0, 11, 20, 11, 21, 26,
+ 15, 0, 11, 22, 11, 23, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 24, 15, 24, 11,
+ 26, 11, 27, 26, 11, 29, 25, 28, 15, 30, 11, 31, 15, 28, 26, 22, 2, 11, 25, 15,
+ 0, 11, 1, 22, 1, 15, 33, 29, 0, 1, 30, 1, 25, 32, 15, 32, 11, 26, 11, 34,
+ 26, 15, 32, 11, 35, 11, 36, 26, 15, 32, 11, 37, 11, 38, 26, 15, 32, 11, 39, 11,
+ 40, 26, 11, 42, 25, 41, 15, 30, 11, 43, 15, 41, 26, 22, 2, 11, 25, 15, 0, 11,
+ 1, 22, 1, 15, 33, 29, 0, 1, 30, 1, 25, 44, 15, 44, 11, 26, 11, 45, 26, 11,
+ 47, 25, 46, 15, 30, 11, 48, 15, 46, 26, 11, 50, 25, 49, 11, 52, 25, 51, 11, 54,
+ 25, 53, 22, 1, 11, 25, 15, 0, 30, 0, 25, 55, 15, 55, 11, 4, 11, 56, 26, 15,
+ 55, 11, 26, 11, 57, 26, 11, 59, 25, 58, 15, 30, 11, 60, 15, 58, 26, 15, 61, 11,
+ 39, 11, 62, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 63, 15, 63, 11, 4, 11, 64,
+ 26, 15, 63, 11, 26, 11, 65, 26, 22, 1, 11, 25, 15, 63, 30, 0, 25, 66, 15, 66,
+ 11, 67, 11, 68, 26, 11, 70, 25, 69, 15, 30, 11, 71, 15, 69, 26, 11, 73, 25, 72,
+ 11, 75, 25, 74, 22, 1, 11, 25, 15, 63, 30, 0, 25, 76, 15, 76, 11, 67, 11, 77,
+ 26, 11, 79, 25, 78, 15, 30, 11, 80, 15, 78, 26, 11, 82, 25, 81, 22, 1, 11, 25,
+ 15, 63, 30, 0, 25, 83, 15, 83, 11, 67, 11, 84, 26, 11, 86, 25, 85, 15, 30, 11,
+ 87, 15, 85, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 88, 15, 88, 11, 26, 11, 89,
+ 26, 11, 91, 25, 90, 15, 30, 11, 92, 15, 90, 26, 22, 2, 11, 25, 15, 0, 11, 94,
+ 22, 1, 11, 95, 15, 96, 30, 0, 30, 1, 25, 93, 15, 93, 11, 26, 11, 97, 26, 11,
+ 99, 25, 98, 15, 30, 11,100, 15, 98, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,101,
+ 15,101, 11, 26, 11,102, 26, 11,104, 25,103, 15, 30, 11,105, 15,103, 26, 22, 1,
+ 11, 25, 15,107, 30, 0, 25,106, 15,106, 11, 26, 11,108, 26, 11,110, 25,109, 15,
+ 30, 11,111, 15,109, 26, 22, 2, 11, 25, 15, 0, 11, 94, 22, 1, 11,113, 15, 96,
+ 30, 0, 30, 1, 25,112, 15,112, 11, 26, 11,114, 26, 11,116, 25,115, 15, 30, 11,
+117, 15,115, 26, 22, 1, 11, 25, 15,119, 30, 0, 25,118, 15,118, 11, 26, 11,120,
+ 26, 11,122, 25,121, 15, 30, 11,123, 15,121, 26, 22, 1, 11, 25, 15,119, 30, 0,
+ 25,124, 15,124, 11, 26, 11,125, 26, 11,127, 25,126, 15, 30, 11,128, 15,126, 26,
+ 22, 2, 11, 25, 15, 0, 11, 94, 22, 2, 15,130, 29, 0, 1, 11,131, 15, 96, 30,
+ 0, 30, 1, 25,129, 15,129, 11, 26, 11,132, 26, 11,134, 25,133, 15, 30, 11,135,
+ 15,133, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,136, 15,136, 11, 26, 11,137, 26,
+ 11,139, 25,138, 15, 30, 11,140, 15,138, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,
+141, 15,141, 11, 39, 11,142, 26, 15,141, 11, 26, 11,143, 26, 11,145, 25,144, 15,
+ 30, 11,146, 15,144, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,147, 15,147, 11, 39,
+ 11,148, 26, 15,147, 11, 26, 11,149, 26, 11,151, 25,150, 15, 30, 11,152, 15,150,
+ 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,153, 15,153, 11, 39, 11,154, 26, 15,153,
+ 11, 26, 11,155, 26, 11,157, 25,156, 15, 30, 11,158, 15,156, 26, 22, 1, 11, 25,
+ 15, 0, 30, 0, 25,159, 15,159, 11, 39, 11,160, 26, 15,159, 11, 26, 11,161, 26,
+ 11,163, 25,162, 15, 30, 11,164, 15,162, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,
+165, 15,165, 11, 26, 11,166, 26, 11,168, 25,167, 15, 30, 11,169, 15,167, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,170, 15,170, 11, 4, 11,171, 26, 15,170, 11, 26,
+ 11,172, 26, 11,174, 25,173, 15, 30, 11,175, 15,173, 26, 22, 2, 11, 25, 15, 0,
+ 11, 94, 22, 1, 15,177, 29, 0, 1, 30, 1, 25,176, 15,176, 11, 26, 11,178, 26,
+ 11,180, 25,179, 15, 30, 11,181, 15,179, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,
+182, 15,182, 11, 26, 11,183, 26, 11,185, 25,184, 15, 30, 11,186, 15,184, 26, 22,
+ 1, 11, 25, 15, 0, 30, 0, 25,187, 15,187, 11, 26, 11,188, 26, 15,187, 11, 8,
+ 11,189, 26, 15,187, 11, 10, 11,190, 26, 11,192, 25,191, 15, 30, 11,193, 15,191,
+ 26, 22, 1, 11, 25, 15,195, 30, 0, 25,194, 15,194, 11, 4, 11,196, 26, 15,194,
+ 11, 26, 11,197, 26, 11,199, 25,198, 15, 30, 11,200, 15,198, 26, 22, 1, 11, 25,
+ 15,195, 30, 0, 25,201, 15,201, 11, 26, 11,202, 26, 11,204, 25,203, 15, 30, 11,
+205, 15,203, 26, 22, 1, 11, 25, 15,195, 30, 0, 25,206, 15,206, 11, 26, 11,207,
+ 26, 11,209, 25,208, 15, 30, 11,210, 15,208, 26, 22, 1, 11, 25, 15,195, 30, 0,
+ 25,211, 15,211, 11, 26, 11,212, 26, 11,214, 25,213, 15, 30, 11,215, 15,213, 26,
+ 22, 32, 11,217, 22, 2, 11,218, 4, 0, 29, 0, 2, 11,219, 22, 2, 11,220, 4,
+ 0, 29, 0, 2, 11,221, 22, 2, 11,222, 15,223, 29, 0, 2, 11,224, 22, 2, 11,
+225, 15,226, 29, 0, 2, 11,227, 22, 2, 11,228, 15,229, 29, 0, 2, 11,230, 22,
+ 2, 11,231, 15,232, 29, 0, 2, 11,233, 22, 2, 11,234, 15,235, 29, 0, 2, 11,
+236, 22, 2, 11,237, 15,238, 29, 0, 2, 11,239, 22, 2, 11,240, 15,241, 29, 0,
+ 2, 11,242, 22, 2, 11,243, 15,244, 29, 0, 2, 11,245, 22, 2, 11,246, 15,247,
+ 29, 0, 2, 11,248, 22, 2, 11,249, 15,250, 29, 0, 2, 11,251, 22, 2, 11,252,
+ 15,253, 29, 0, 2, 11,254, 22, 2, 11,255, 14, 1, 0, 29, 0, 2, 10, 1, 1,
+ 22, 2, 10, 1, 2, 14, 1, 3, 29, 0, 2, 10, 1, 4, 22, 2, 10, 1, 5, 14,
+ 1, 6, 29, 0, 2, 10, 1, 7, 22, 2, 10, 1, 8, 14, 1, 9, 29, 0, 2, 10,
+ 1, 10, 22, 2, 10, 1, 11, 14, 1, 12, 29, 0, 2, 10, 1, 13, 22, 2, 10, 1,
+ 14, 14, 1, 15, 29, 0, 2, 10, 1, 16, 22, 2, 10, 1, 17, 14, 1, 18, 29, 0,
+ 2, 10, 1, 19, 22, 2, 10, 1, 20, 14, 1, 21, 29, 0, 2, 11,100, 22, 2, 10,
+ 1, 22, 14, 1, 23, 29, 0, 2, 10, 1, 24, 22, 2, 10, 1, 25, 14, 1, 26, 29,
+ 0, 2, 10, 1, 27, 22, 2, 10, 1, 28, 14, 1, 29, 29, 0, 2, 10, 1, 30, 22,
+ 2, 10, 1, 31, 14, 1, 32, 29, 0, 2, 10, 1, 33, 22, 2, 10, 1, 34, 14, 1,
+ 35, 29, 0, 2, 10, 1, 36, 22, 2, 10, 1, 37, 14, 1, 38, 29, 0, 2, 10, 1,
+ 39, 22, 2, 10, 1, 40, 14, 1, 41, 29, 0, 2, 10, 1, 42, 22, 2, 10, 1, 43,
+ 14, 1, 44, 29, 0, 2, 10, 1, 45, 22, 2, 10, 1, 46, 14, 1, 47, 29, 0, 2,
+ 10, 1, 48, 22, 2, 10, 1, 49, 14, 1, 50, 29, 0, 2, 10, 1, 51, 22, 2, 10,
+ 1, 52, 14, 1, 53, 29, 0, 2, 30, 31, 25,216, 15,216, 18,217, 11,123, 14, 1,
+ 54, 26, 15,216, 18,217, 11,111, 14, 1, 55, 26, 15,216, 18,217, 11,105, 14, 1,
+ 55, 26, 15,216, 18,217, 11,100, 14, 1, 56, 26, 15,216, 18,217, 11,193, 14, 1,
+ 57, 26, 15,216, 18,217, 11,128, 14, 1, 56, 26, 15,216, 18,217, 11,186, 14, 1,
+ 58, 26, 15,216, 18,219, 11, 31, 14, 1, 59, 26, 15,216, 10, 1, 60, 15,216, 18,
+219, 26, 15,216, 10, 1, 61, 15,216, 18,221, 26, 15,216, 10, 1, 62, 15,216, 18,
+224, 26, 15,216, 10, 1, 63, 15,216, 18,227, 26, 15,216, 11,230, 15,216, 18,230,
+ 26, 15,216, 10, 1, 64, 15,216, 18,233, 26, 15,216, 10, 1, 65, 15,216, 18,236,
+ 26, 15,216, 10, 1, 66, 15,216, 18,239, 26, 15,216, 10, 1, 67, 15,216, 18,242,
+ 26, 15,216, 10, 1, 68, 15,216, 18,245, 26, 15,216, 10, 1, 69, 15,216, 18,248,
+ 26, 15,216, 10, 1, 70, 15,216, 18,251, 26, 15,216, 10, 1, 71, 15,216, 18,254,
+ 26, 15,216, 10, 1, 72, 15,216, 17, 1, 1, 26, 15,216, 10, 1, 73, 15,216, 17,
+ 1, 4, 26, 15,216, 10, 1, 74, 15,216, 17, 1, 7, 26, 15,216, 10, 1, 75, 15,
+216, 17, 1, 10, 26, 15,216, 10, 1, 76, 15,216, 17, 1, 13, 26, 15,216, 10, 1,
+ 77, 15,216, 17, 1, 16, 26, 15,216, 10, 1, 78, 15,216, 17, 1, 19, 26, 15,216,
+ 10, 1, 79, 15,216, 18,100, 26, 15,216, 10, 1, 80, 15,216, 17, 1, 24, 26, 15,
+216, 10, 1, 81, 15,216, 17, 1, 27, 26, 15,216, 10, 1, 82, 15,216, 17, 1, 30,
+ 26, 15,216, 10, 1, 83, 15,216, 17, 1, 33, 26, 15,216, 10, 1, 84, 15,216, 17,
+ 1, 36, 26, 15,216, 10, 1, 85, 15,216, 17, 1, 39, 26, 15,216, 10, 1, 86, 15,
+216, 17, 1, 45, 26, 15,216, 10, 1, 87, 15,216, 17, 1, 42, 26, 15,216, 10, 1,
+ 88, 15,216, 17, 1, 48, 26, 15,216, 10, 1, 89, 15,216, 17, 1, 51, 26, 0, 0,
+ 0, 0, 0, 0, 0, 1, 90, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2,
+ 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,
+117, 99,116,111,114, 0, 4, 0, 0, 0, 12, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 57, 7,
+ 2, 13, 1, 11, 1, 13, 0, 26, 13, 0, 20, 3, 13, 1, 2, 0, 2, 13, 1, 11,
+ 4, 13, 0, 20, 5, 13, 1, 2, 1, 2, 26, 13, 0, 20, 6, 13, 1, 2, 0, 2,
+ 15, 7, 13, 1, 18, 4, 13, 1, 26, 13, 1, 18, 4, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 8, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,112, 97,
+114,101,110,116, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12,
+ 99,104,101, 99,107, 80, 97,114, 97,109,115, 0, 2, 0, 0, 0, 7,104, 97,110,
+100,108,101, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,
+101,109,101,110,116, 0, 2, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,
+117,116,101,115, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,
+115, 0, 2, 0, 0, 0, 12, 99,104,101, 99,107, 80, 97,114, 97,109,115, 0, 4,
+ 0, 0, 0, 32, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 61, 8, 2, 13, 0, 18, 1, 15, 5,
+ 13, 2, 4, 0, 2, 2, 2, 50, 39, 13, 4, 13, 1, 13, 3, 16, 2, 1, 1, 44,
+ 52, 13, 15, 6, 11, 7, 13, 3, 42, 11, 8, 42, 2, 0, 1, 15, 5, 13, 2, 13,
+ 3, 2, 2, 2, 23, 4, 23, 3, 13, 3, 54, 43, 0, 0, 0, 0, 0, 0, 0, 0,
+ 9, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 5,116,121,112,101, 0,
+ 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 6,112, 97,114, 97,109,
+ 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, 0, 5,110,101,120,116,
+ 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114,
+ 97,109,101,116,101,114, 32, 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,
+111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,
+105,110,105,116,105, 97,108,105,122,101,100, 0, 2, 0, 0, 0, 14,115,101,116,
+ 65,116,116,114,105, 98,117,116,101,115, 0, 4, 0, 0, 0, 43, 0, 0, 0, 20,
+ 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0,
+ 0, 0, 0, 80, 9, 2, 22, 0, 15, 3, 13, 1, 4, 0, 2, 1, 2, 50, 18, 13,
+ 2, 13, 3, 7, 1, 26, 15, 3, 13, 1, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54,
+ 22, 15, 3, 13, 2, 4, 0, 2, 1, 2, 23, 3, 50, 25, 13, 1, 20, 4, 13, 3,
+ 13, 1, 13, 3, 16, 2, 0, 3, 15, 3, 13, 2, 13, 3, 2, 1, 2, 23, 3, 13,
+ 3, 54, 29, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106,
+ 0, 2, 0, 0, 0, 5,116,101,109,112, 0, 2, 0, 0, 0, 2,102, 0, 2, 0,
+ 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, 0, 0,
+ 0, 4,103,101,116, 0, 4, 0, 0, 0, 57, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 82, 6,
+ 2, 15, 1, 13, 1, 2, 1, 1, 52, 63, 15, 2, 13, 1, 16, 52, 9, 13, 0, 13,
+ 1, 16, 1, 2, 50, 47, 15, 5, 13, 1, 2, 1, 1, 15, 7, 13, 0, 18, 8, 13,
+ 2, 2, 1, 2, 13, 3, 52, 23, 15, 9, 13, 3, 2, 1, 1, 13, 4, 52, 6, 13,
+ 4, 1, 5, 50, 4, 13, 3, 1, 5, 5, 1, 5, 2, 13, 0, 13, 1, 16, 1, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 6,105,110,100,101,120, 0,
+ 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0,
+ 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0,
+ 5,115,101,108,102, 0, 2, 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0,
+ 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 6,118, 97,108,117,
+101, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,
+116,101, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13,
+ 73,117,112, 71,101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 4,115,101,
+116, 0, 4, 0, 0, 0, 77, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,228, 11, 3, 15, 2, 13,
+ 1, 2, 1, 1, 52,209, 15, 4, 13, 1, 2, 1, 1, 15, 6, 13, 1, 16, 13, 1,
+ 11, 7, 32, 48, 12, 15, 8, 13, 0, 18, 10, 2, 1, 1, 11, 11, 32, 52, 4, 4,
+ 0, 23, 4, 13, 4, 52, 55, 13, 4, 7, 2, 16, 13, 5, 44, 52, 14, 13, 4, 15,
+ 8, 13, 0, 18, 10, 2, 1, 1, 16, 23, 5, 15, 13, 13, 0, 18, 10, 13, 4, 7,
+ 1, 16, 13, 5, 13, 2, 2, 0, 4, 13, 0, 13, 1, 13, 2, 26, 1, 6, 5, 1,
+ 50,111, 15, 2, 13, 2, 2, 1, 1, 46, 7, 15, 14, 13, 2, 2, 1, 1, 52, 17,
+ 15, 15, 13, 0, 18, 10, 13, 3, 13, 2, 2, 0, 3, 1, 5, 50, 76, 15, 16, 13,
+ 2, 2, 1, 1, 52, 34, 15, 18, 13, 0, 18, 10, 13, 3, 2, 1, 2, 13, 5, 52,
+ 15, 15, 15, 13, 0, 18, 10, 13, 3, 13, 2, 2, 0, 3, 1, 6, 5, 1, 50, 33,
+ 15, 19, 13, 2, 2, 1, 1, 52, 24, 15, 20, 13, 2, 2, 0, 1, 15, 15, 13, 0,
+ 18, 10, 13, 3, 13, 2, 18, 21, 2, 0, 3, 1, 5, 5, 2, 13, 0, 13, 1, 13,
+ 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 6,105,110,100,101,
+120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 12,116,121,
+112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 6, 73, 78, 68, 69, 88,
+ 0, 2, 0, 0, 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 3,
+ 99, 98, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,
+115, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 16, 73,
+117,112, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, 2, 0, 0, 0, 5,
+115,101,108,102, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0,
+ 0, 7,100,105, 97,108,111,103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2,
+ 0, 0, 0, 15,105,117,112, 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0, 2,
+ 0, 0, 0, 12,116,121,112,101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0,
+ 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0,
+ 0, 9,116,121,112,101, 95,110,105,108, 0, 2, 0, 0, 0, 10,111,108,100, 95,
+118, 97,108,117,101, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,
+114,105, 98,117,116,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,
+103,101,116, 0, 2, 0, 0, 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0,
+ 2, 0, 0, 0, 9, 73, 85, 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 10,114,
+ 95,100,101,115,116,114,111,121, 0, 4, 0, 0, 0,113, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 89, 6, 1, 7, 1, 13, 0, 13, 1, 16, 50, 66, 15, 3, 13, 2, 2, 1, 1,
+ 48, 4, 13, 2, 18, 4, 52, 37, 13, 2, 18, 4, 13, 0, 32, 52, 16, 13, 2, 11,
+ 4, 4, 0, 26, 13, 2, 20, 5, 2, 0, 1, 50, 12, 15, 6, 11, 7, 2, 0, 1,
+ 15, 8, 2, 0, 0, 13, 1, 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 23, 2, 13,
+ 2, 54, 70, 15, 9, 13, 0, 4, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2,
+ 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 5,101,108,101,109, 0, 2, 0, 0, 0,
+ 5,115,101,108,102, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,
+101,116, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2,
+ 0, 0, 0, 10,114, 95,100,101,115,116,114,111,121, 0, 2, 0, 0, 0, 6,101,
+114,114,111,114, 0, 2, 0, 0, 0, 29, 73,110,116,101,114,110, 97,108, 32,116,
+ 97, 98,108,101, 32,105,110, 99,111,110,115,105,115,116,101,110, 99,121, 0, 2,
+ 0, 0, 0, 5,101,120,105,116, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,
+110,100,108,101,115, 0, 2, 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4,
+ 0, 0, 0,133, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 17, 3, 1, 13, 0, 20, 1, 2, 0,
+ 1, 15, 2, 13, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111,
+121, 0, 2, 0, 0, 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0,
+ 0, 0, 7,100,101,116, 97, 99,104, 0, 4, 0, 0, 0,138, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0, 96, 8, 1, 15, 0, 13, 0, 2, 0, 1, 13, 0, 18, 3, 13, 1, 52, 78,
+ 13, 0, 11, 3, 4, 0, 26, 7, 1, 50, 58, 13, 1, 13, 2, 16, 13, 0, 32, 52,
+ 41, 50, 20, 13, 1, 13, 2, 13, 1, 13, 2, 7, 1, 37, 16, 26, 13, 2, 7, 1,
+ 37, 23, 2, 13, 1, 13, 2, 7, 1, 37, 16, 54, 30, 13, 1, 13, 2, 4, 0, 26,
+ 1, 3, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 65, 5, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 10, 73,117,112, 68,101,116, 97, 99,
+104, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,112, 97,114,
+101,110,116, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0,
+ 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 4,
+ 0, 0, 0,158, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 75, 6, 2, 15, 1, 13, 0, 13, 1,
+ 2, 1, 2, 52, 57, 13, 1, 11, 3, 13, 0, 26, 7, 1, 50, 21, 13, 0, 13, 2,
+ 16, 13, 1, 32, 52, 4, 13, 2, 1, 3, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13,
+ 2, 16, 54, 28, 15, 5, 13, 0, 16, 13, 2, 13, 1, 26, 13, 2, 1, 3, 5, 1,
+ 50, 4, 4, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,
+111, 0, 2, 0, 0, 0, 10, 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0,
+ 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 12,105,117,112, 95,104,
+ 97,110,100,108,101,115, 0, 2, 0, 0, 0, 4,109, 97,112, 0, 4, 0, 0, 0,
+175, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 7, 73,117,112, 77, 97,112, 0, 2,
+ 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 5,104,105,100,101, 0, 4,
+ 0, 0, 0,179, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 72,105,
+100,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 9, 73, 85,
+ 80, 84, 73, 77, 69, 82, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2,
+ 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116,
+ 0, 4, 0, 0, 0,187, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2,
+ 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 84,105,109,101,114, 0, 2,
+ 0, 0, 0, 9,105,117,112,116,105,109,101,114, 0, 4, 0, 0, 0,191, 0, 0,
+ 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117,
+ 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85,
+ 80, 84, 73, 77, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,
+116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,116,105,
+109,101,114, 0, 2, 0, 0, 0, 10, 73, 85, 80, 68, 73, 65, 76, 79, 71, 0, 2,
+ 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 0,
+200, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1,
+ 1, 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,
+110,100,108,101, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 68,
+105, 97,108,111,103, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,
+116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 4, 0, 0, 0,206, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 83,104,111,119, 0, 2, 0, 0, 0,
+ 5,115,101,108,102, 0, 2, 0, 0, 0, 7,115,104,111,119,120,121, 0, 4, 0,
+ 0, 0,210, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13,
+ 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0,
+ 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 10, 73,117,112, 83,104,111,119, 88,
+ 89, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 6,112,111,112,
+117,112, 0, 4, 0, 0, 0,214, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2,
+ 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0,
+ 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112,
+ 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0,
+ 10,105,117,112,100,105, 97,108,111,103, 0, 4, 0, 0, 0,218, 0, 0, 0, 20,
+ 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, 68,
+ 73, 65, 76, 79, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,
+111,114, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,103, 0, 2, 0, 0, 0, 9,
+ 73, 85, 80, 82, 65, 68, 73, 79, 0, 4, 0, 0, 0,227, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, 13, 1, 7, 1, 16, 11,
+ 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0,
+ 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 82, 97,100,105,111, 0, 2, 0,
+ 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9,105,
+117,112,114, 97,100,105,111, 0, 4, 0, 0, 0,233, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 26, 5, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 15, 4, 13, 1, 7, 1, 16, 2,
+ 0, 1, 13, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2,
+111, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 9, 73,
+ 85, 80, 82, 65, 68, 73, 79, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117,
+ 99,116,111,114, 0, 2, 0, 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,
+104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 2, 0, 0, 0, 6,114, 97,
+100,105,111, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, 0,
+ 4, 0, 0, 0,241, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,156, 11, 1, 22, 0, 7, 1, 50,
+ 61, 15, 3, 13, 0, 13, 2, 16, 2, 1, 1, 52, 29, 13, 1, 13, 2, 15, 4, 22,
+ 2, 11, 5, 13, 0, 13, 2, 16, 11, 6, 13, 0, 18, 6, 30, 1, 2, 1, 1, 26,
+ 50, 13, 15, 7, 11, 8, 13, 2, 42, 11, 9, 42, 2, 0, 1, 13, 2, 7, 1, 37,
+ 23, 2, 13, 0, 13, 2, 16, 54, 68, 13, 0, 18, 10, 52, 51, 7, 1, 50, 7, 13,
+ 3, 7, 1, 37, 23, 3, 13, 0, 13, 3, 16, 48, 10, 13, 0, 13, 3, 16, 13, 0,
+ 18, 10, 31, 54, 26, 13, 0, 13, 3, 16, 52, 10, 13, 1, 11, 10, 13, 1, 13, 3,
+ 16, 26, 5, 1, 50, 18, 13, 0, 18, 12, 52, 12, 13, 1, 11, 10, 13, 1, 13, 0,
+ 18, 12, 16, 26, 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0,
+ 0, 2,104, 0, 2, 0, 0, 0, 4,116,109,112, 0, 2, 0, 0, 0, 2,105, 0,
+ 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0,
+ 0, 10,105,117,112,116,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,116,
+108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 6,
+101,114,114,111,114, 0, 2, 0, 0, 0, 8,111,112,116,105,111,110, 32, 0, 2,
+ 0, 0, 0, 18, 32,109,117,115,116, 32, 98,101, 32, 97, 32,115,116,114,105,110,
+103, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 2,106, 0,
+ 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 9,101,100,104,
+114, 97,100,105,111, 0, 4, 0, 0, 1, 13, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 35, 6,
+ 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, 2, 1, 1, 29,
+ 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,103,103,108,101,
+115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, 0, 2, 0,
+ 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, 7,101,100,104,
+ 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 9,
+101,100,118,114, 97,100,105,111, 0, 4, 0, 0, 1, 19, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 35, 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, 2,
+ 1, 1, 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,103,
+103,108,101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115,
+ 0, 2, 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, 7,
+101,100,118, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0,
+ 0, 0, 8, 73, 85, 80, 77, 69, 78, 85, 0, 4, 0, 0, 1, 28, 0, 0, 0, 20,
+ 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0,
+ 0, 0, 0,159, 7, 2, 7, 1, 50,145, 13, 1, 13, 2, 16, 15, 3, 13, 3, 2,
+ 1, 1, 44, 52,121, 15, 4, 13, 3, 2, 1, 1, 11, 5, 31, 52, 15, 15, 6, 11,
+ 7, 13, 2, 42, 11, 8, 42, 2, 0, 1, 50, 94, 13, 3, 7, 1, 16, 48, 11, 15,
+ 9, 13, 3, 7, 1, 16, 2, 1, 1, 44, 52, 15, 15, 6, 11, 7, 13, 2, 42, 11,
+ 10, 42, 2, 0, 1, 50, 59, 13, 3, 7, 2, 16, 48, 11, 15, 9, 13, 3, 7, 2,
+ 16, 2, 1, 1, 44, 48, 11, 15, 11, 13, 3, 7, 2, 16, 2, 1, 1, 44, 48, 11,
+ 15, 12, 13, 3, 7, 2, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, 2, 42,
+ 11, 13, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, 16,
+ 54,152, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, 98,106, 0,
+ 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10,116,
+121,112,101, 95,105,116,101,109, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2,
+ 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114,
+ 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, 2, 0, 0,
+ 0, 32, 32,105,115, 32,110,111,116, 32, 97, 32,116, 97, 98,108,101, 32,110,111,
+114, 32, 97, 32,109,101,110,117, 32,105,116,101,109, 0, 2, 0, 0, 0, 12,116,
+121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 30, 32,100,111,101,
+115, 32,110,111,116, 32,104, 97,118,101, 32, 97, 32,115,116,114,105,110,103, 32,
+116,105,116,108,101, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,
+116,105,111,110, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,
+116, 0, 2, 0, 0, 0, 36, 32,100,111,101,115, 32,110,111,116, 32,104, 97,118,
+101, 32, 97,110, 32, 97, 99,116,105,111,110, 32,110,111,114, 32, 97, 32,109,101,
+110,117, 0, 4, 0, 0, 1, 46, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,189, 10, 2, 15, 2,
+ 2, 1, 0, 7, 1, 50,166, 13, 1, 13, 3, 16, 4, 0, 15, 6, 13, 4, 2, 1,
+ 1, 52, 6, 13, 4, 23, 5, 50,112, 13, 4, 7, 1, 16, 44, 52, 11, 15, 7, 22,
+ 0, 2, 1, 1, 23, 5, 50, 93, 15, 6, 13, 4, 7, 2, 16, 2, 1, 1, 52, 38,
+ 13, 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 7, 1, 13, 4, 7, 2, 16, 26,
+ 13, 4, 7, 2, 4, 0, 26, 15, 9, 13, 4, 2, 1, 1, 23, 5, 50, 43, 13, 4,
+ 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 11, 10, 13, 4, 7, 2, 16, 26, 13, 4,
+ 7, 1, 4, 0, 26, 13, 4, 7, 2, 4, 0, 26, 15, 11, 13, 4, 2, 1, 1, 23,
+ 5, 15, 12, 13, 2, 13, 5, 2, 0, 2, 13, 5, 11, 13, 13, 2, 26, 13, 1, 13,
+ 3, 13, 5, 26, 13, 3, 7, 1, 37, 23, 3, 5, 2, 13, 1, 13, 3, 16, 54,173,
+ 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, 98,
+106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 14,105,
+117,112, 67,114,101, 97,116,101, 77,101,110,117, 0, 2, 0, 0, 0, 2,105, 0,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,101,108,101,109, 0, 2, 0, 0,
+ 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 13,105,
+117,112,115,101,112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 6,116,105,116,
+108,101, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, 2,
+ 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,105,117,112,105,
+116,101,109, 0, 2, 0, 0, 0, 10, 73,117,112, 65,112,112,101,110,100, 0, 2,
+ 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8,
+105,117,112,109,101,110,117, 0, 4, 0, 0, 1, 76, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, 85,
+ 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0,
+ 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, 85,
+ 0, 4, 0, 0, 1, 81, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, 0,
+ 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0,
+ 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112, 80,111,
+112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, 67,
+ 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 4, 0, 0, 1, 89, 0, 0, 0, 20,
+ 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0,
+ 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, 2, 13, 1, 13, 2, 16, 2, 1, 1,
+ 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, 5, 42, 2, 0, 1, 13, 2, 7, 1,
+ 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2,
+ 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 12,
+116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 6,101,114,114,
+111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, 2,
+ 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,101,
+ 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,122,
+101,100, 0, 4, 0, 0, 1, 99, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,187, 11, 2, 13, 0,
+ 20, 3, 2, 1, 1, 13, 1, 18, 4, 7, 1, 7, 0, 50, 14, 13, 5, 7, 1, 37,
+ 23, 5, 13, 4, 7, 1, 37, 23, 4, 13, 1, 13, 4, 16, 54, 21, 7, 1, 23, 4,
+ 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, 2, 1,
+ 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, 1, 13,
+ 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 50, 79, 15, 9, 13, 2, 13, 1, 13, 4,
+ 16, 2, 0, 2, 13, 1, 13, 4, 16, 11, 10, 13, 2, 26, 13, 4, 7, 1, 37, 23,
+ 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, 2,
+ 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, 1,
+ 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 13, 4, 13, 5, 34, 54, 86, 13, 2,
+ 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, 4,111, 98,106, 0,
+ 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 5,115,101,108,
+102, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,109,
+101,110,116, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0,
+ 2,105, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89,
+ 69, 83, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0, 0,
+ 10, 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,
+112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0,
+ 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,109,101,110,
+116, 0, 4, 0, 0, 1,133, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, 67,
+114,101, 97,116,101, 72, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,104, 98,
+111,120, 0, 4, 0, 0, 1,137, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1,
+ 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0, 2, 0, 0, 0,
+ 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,104, 98,
+111,120, 0, 2, 0, 0, 0, 7,101,100,104, 98,111,120, 0, 4, 0, 0, 1,143,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, 20,
+ 4, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2,
+111, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, 73,
+ 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 8,101,100,102,105,101,108,100, 0, 4, 0, 0, 1,149, 0, 0, 0, 20, 64,
+105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0,
+ 0, 0,123, 7, 1, 4, 1, 15, 3, 13, 0, 18, 4, 2, 1, 1, 46, 9, 15, 5,
+ 13, 0, 18, 4, 2, 1, 1, 52, 19, 15, 6, 22, 1, 11, 7, 13, 0, 18, 4, 30,
+ 0, 2, 1, 1, 23, 1, 50, 7, 15, 8, 11, 9, 2, 0, 1, 13, 0, 18, 10, 52,
+ 19, 15, 11, 22, 1, 11, 10, 13, 0, 18, 10, 30, 0, 2, 1, 1, 23, 2, 50, 17,
+ 15, 11, 22, 1, 11, 10, 13, 0, 18, 12, 30, 0, 2, 1, 1, 23, 2, 13, 2, 48,
+ 2, 13, 1, 52, 16, 15, 13, 22, 2, 13, 1, 13, 2, 29, 0, 2, 3, 3, 1, 50,
+ 4, 4, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 2,102,
+ 0, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 12,
+116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 7,112,114,111,
+109,112,116, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,110,117,109, 98,101,114,
+ 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,
+116,105,116,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0,
+ 0, 55,112, 97,114, 97,109,101,116,101,114, 32,112,114,111,109,112,116, 32,104,
+ 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115,
+ 32,110,111,116, 32,105,110,105,116,105, 97,108,105,122,101,100, 0, 2, 0, 0,
+ 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8,105,117,112,116,101,120,116,
+ 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 7,101,100,
+104, 98,111,120, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 4, 0,
+ 0, 1,172, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,
+101, 86, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0, 4,
+ 0, 0, 1,176, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,118, 98,111,120, 0, 2,
+ 0, 0, 0, 7,101,100,118, 98,111,120, 0, 4, 0, 0, 1,182, 0, 0, 0, 20,
+ 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0,
+ 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, 20, 4, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89,
+ 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, 0,
+ 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8, 73, 85,
+ 80, 90, 66, 79, 88, 0, 4, 0, 0, 1,191, 0, 0, 0, 20, 64,105,117,112,108,
+117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2,
+ 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,
+105,117,112, 67,114,101, 97,116,101, 90, 98,111,120, 0, 2, 0, 0, 0, 8,105,
+117,112,122, 98,111,120, 0, 4, 0, 0, 1,195, 0, 0, 0, 20, 64,105,117,112,
+108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 44,
+ 6, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 7, 1, 50, 17, 15, 5, 13, 1, 13,
+ 2, 16, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 24, 13,
+ 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,106,
+ 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 8, 73, 85,
+ 80, 90, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,
+111,114, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11,105,117,112, 83,101,
+116, 78, 97,109,101, 0, 2, 0, 0, 0, 5,122, 98,111,120, 0, 2, 0, 0, 0,
+ 8, 73, 85, 80, 70, 73, 76, 76, 0, 4, 0, 0, 1,210, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0,
+ 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,
+101, 70,105,108,108, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, 4,
+ 0, 0, 1,214, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 2, 0, 0, 0, 12, 67,111,110,
+115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,102,105,108,108, 0, 2,
+ 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 5,116,
+121,112,101, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, 12,
+116,121,112,101, 95,115,116,114,105,110,103, 0, 4, 0, 0, 1,223, 0, 0, 0,
+ 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97,
+ 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, 7,
+ 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,116,
+105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, 0,
+ 1, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 66,117,116,116,
+111,110, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 4, 0,
+ 0, 1,230, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 98,117,116,116,111,
+110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, 1,239,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,
+112, 67,114,101, 97,116,101, 84,101,120,116, 0, 2, 0, 0, 0, 8,105,117,112,
+116,101,120,116, 0, 4, 0, 0, 1,243, 0, 0, 0, 20, 64,105,117,112,108,117,
+ 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1,
+ 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0,
+ 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 2, 0,
+ 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,
+116,101,120,116, 0, 2, 0, 0, 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, 73,
+ 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, 1,
+252, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,105,
+117,112, 67,114,101, 97,116,101, 77,117,108,116,105, 76,105,110,101, 0, 2, 0,
+ 0, 0, 13,105,117,112,109,117,108,116,105,108,105,110,101, 0, 4, 0, 0, 2,
+ 0, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0,
+ 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, 73, 78, 69, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,109,117,108,116,
+105,108,105,110,101, 0, 2, 0, 0, 0, 9, 73, 85, 80, 76, 65, 66, 69, 76, 0,
+ 2, 0, 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 2, 9, 0, 0, 0, 20,
+ 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0,
+ 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, 7, 13,
+ 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,116,105,
+116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, 0, 1,
+ 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 76, 97, 98,101,108,
+ 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 4, 0, 0, 2, 16,
+ 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,
+108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9,
+ 73, 85, 80, 76, 65, 66, 69, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,
+117, 99,116,111,114, 0, 2, 0, 0, 0, 6,108, 97, 98,101,108, 0, 2, 0, 0,
+ 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 10, 73, 85, 80,
+ 66, 85, 84, 84, 79, 78, 0, 4, 0, 0, 2, 25, 0, 0, 0, 20, 64,105,117,112,
+108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12,
+ 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101,
+ 97,116,101, 84,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,116,108,101,
+ 0, 2, 0, 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 4, 0, 0, 2,
+ 29, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0,
+ 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,
+116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7,116,111,103,103,108,101, 0,
+ 2, 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 4, 0, 0, 2, 38, 0, 0,
+ 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117,
+ 97, 0, 0, 0, 0, 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,
+105,117,112, 67,114,101, 97,116,101, 73,116,101,109, 0, 2, 0, 0, 0, 6,116,
+105,116,108,101, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 4, 0,
+ 0, 2, 42, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 2, 0, 0, 0, 12, 67,111,110,115,
+116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2, 0,
+ 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,116,
+121,112,101, 95,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0,
+ 4, 0, 0, 2, 51, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 31, 6, 2, 15, 2, 13, 1, 18,
+ 3, 13, 1, 7, 1, 16, 2, 1, 2, 13, 1, 7, 1, 16, 11, 4, 13, 2, 26, 13,
+ 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106,
+ 0, 2, 0, 0, 0, 2,104, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,
+116,101, 83,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,101,
+ 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0,
+ 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, 4, 0, 0, 2, 57, 0, 0,
+ 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117,
+ 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,
+117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0, 2,
+ 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 4, 0, 0,
+ 2, 66, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,
+105,117,112, 67,114,101, 97,116,101, 83,101,112, 97,114, 97,116,111,114, 0, 2,
+ 0, 0, 0, 13,105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 4, 0, 0,
+ 2, 70, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0,
+ 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, 0, 0, 0, 12,
+ 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,115,101,112,
+ 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, 68,
+ 76, 71, 0, 4, 0, 0, 2, 79, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2,
+ 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0,
+ 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112,
+ 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, 2,
+ 83, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, 70,
+105,108,101, 68,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101,100,
+108,103, 0, 4, 0, 0, 2, 87, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1,
+ 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, 68, 76, 71, 0, 2,
+ 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0,
+ 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 14, 73, 85, 80, 77, 69, 83,
+ 83, 65, 71, 69, 68, 76, 71, 0, 4, 0, 0, 2, 96, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0,
+ 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102,
+ 0, 4, 0, 0, 2,100, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 20,105,117,112, 67,114,
+101, 97,116,101, 77,101,115,115, 97,103,101, 68,108,103, 0, 2, 0, 0, 0, 14,
+105,117,112,109,101,115,115, 97,103,101,100,108,103, 0, 4, 0, 0, 2,104, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 14, 73,
+ 85, 80, 77, 69, 83, 83, 65, 71, 69, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,109,101,115,115, 97,
+103,101,100,108,103, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 68,
+ 76, 71, 0, 4, 0, 0, 2,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2,
+ 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0,
+ 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112,
+ 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, 2,
+117, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101, 67,
+111,108,111,114, 68,108,103, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108,111,
+114,100,108,103, 0, 4, 0, 0, 2,121, 0, 0, 0, 20, 64,105,117,112,108,117,
+ 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1,
+ 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0,
+ 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 68, 76,
+ 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2,
+ 0, 0, 0, 9, 99,111,108,111,114,100,108,103, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 70, 79, 78, 84, 68, 76, 71, 0, 4, 0, 0, 2,130, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0,
+ 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,
+102, 0, 4, 0, 0, 2,134, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,
+105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, 67,
+114,101, 97,116,101, 70,111,110,116, 68,108,103, 0, 2, 0, 0, 0, 11,105,117,
+112,102,111,110,116,100,108,103, 0, 4, 0, 0, 2,138, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 79, 78,
+ 84, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 8,102,111,110,116,100,108,103, 0, 2, 0, 0, 0, 8,
+ 73, 85, 80, 85, 83, 69, 82, 0, 4, 0, 0, 2,147, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0,
+ 0, 14,105,117,112, 67,114,101, 97,116,101, 85,115,101,114, 0, 2, 0, 0, 0,
+ 8,105,117,112,117,115,101,114, 0, 4, 0, 0, 2,151, 0, 0, 0, 20, 64,105,
+117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0,
+ 0, 10, 2, 0, 15, 0, 20, 1, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 2, 0, 0, 0, 8, 73, 85, 80, 85, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,
+110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,117,115,101,114, 0,
+ 2, 0, 0, 0, 14, 73, 85, 80, 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, 4,
+ 0, 0, 2,160, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, 2,
+ 13, 1, 13, 2, 16, 2, 1, 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, 5,
+ 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, 0,
+ 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 2,105, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0,
+ 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,
+109,101,116,101,114, 32, 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,
+110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,
+110,105,116,105, 97,108,105,122,101,100, 0, 4, 0, 0, 2,170, 0, 0, 0, 20,
+ 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0,
+ 0, 0, 0, 40, 8, 2, 15, 2, 2, 1, 0, 7, 1, 50, 17, 13, 2, 11, 4, 13,
+ 1, 13, 3, 16, 26, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 3, 16, 54, 24, 13,
+ 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106,
+ 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 20,105,117,
+112, 67,114,101, 97,116,101, 78,111,114,109, 97,108,105,122,101,114, 0, 2, 0,
+ 0, 0, 2,105, 0, 2, 0, 0, 0, 11, 97,100,100, 99,111,110,116,114,111,108,
+ 0, 2, 0, 0, 0, 14,105,117,112,110,111,114,109, 97,108,105,122,101,114, 0,
+ 4, 0, 0, 2,180, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 10, 2, 0, 15, 0, 20, 1, 3,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 14, 73, 85, 80, 78,
+ 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,
+114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,110,111,114,109, 97,108,105,122,
+101,114, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, 2, 0, 0,
+ 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 2,189, 0,
+ 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,
+117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, 13,
+ 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,104, 0, 2, 0,
+ 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 70,114, 97,109,101, 0, 2, 0,
+ 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9,105,
+117,112,102,114, 97,109,101, 0, 4, 0, 0, 2,195, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77,
+ 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2,
+ 0, 0, 0, 6,102,114, 97,109,101, 0, 2, 0, 0, 0, 10, 73, 85, 80, 67, 65,
+ 78, 86, 65, 83, 0, 4, 0, 0, 2,204, 0, 0, 0, 20, 64,105,117,112,108,117,
+ 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2,
+ 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 67, 97,110,
+118, 97,115, 0, 2, 0, 0, 0, 10,105,117,112, 99, 97,110,118, 97,115, 0, 4,
+ 0, 0, 2,208, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0,
+ 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2,
+ 0, 0, 0, 10, 73, 85, 80, 67, 65, 78, 86, 65, 83, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 99, 97,110,118,
+ 97,115, 0, 2, 0, 0, 0, 8, 73, 85, 80, 76, 73, 83, 84, 0, 4, 0, 0, 2,
+217, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115,
+ 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,
+117,112, 67,114,101, 97,116,101, 76,105,115,116, 0, 4, 0, 0, 2,221, 0, 0,
+ 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117,
+ 97, 0, 0, 0, 0, 42, 6, 2, 15, 1, 13, 1, 2, 1, 1, 11, 2, 32, 52, 16,
+ 15, 3, 13, 0, 18, 5, 11, 6, 13, 1, 42, 3, 2, 2, 50, 11, 15, 7, 18, 8,
+ 13, 0, 13, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0,
+ 6,105,110,100,101,120, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0,
+ 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116,
+ 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
+ 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, 0,
+ 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,103,101,116, 0, 4,
+ 0, 0, 2,229, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,
+101,116,115, 46,108,117, 97, 0, 0, 0, 0, 90, 8, 3, 15, 2, 13, 1, 2, 1,
+ 1, 11, 3, 32, 52, 62, 15, 4, 13, 2, 2, 1, 1, 46, 7, 15, 5, 13, 2, 2,
+ 1, 1, 52, 21, 15, 6, 13, 0, 18, 8, 11, 9, 13, 1, 42, 11, 9, 13, 2, 42,
+ 3, 3, 3, 50, 23, 13, 2, 4, 0, 32, 52, 16, 15, 6, 13, 0, 18, 8, 11, 9,
+ 13, 1, 42, 13, 2, 3, 3, 3, 15, 10, 18, 11, 13, 0, 13, 1, 13, 2, 3, 3,
+ 3, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 6,105,110,100,101,120,
+ 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 5,116,121,112,
+101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 12,116,
+121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 12,116,121,112,101,
+ 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,
+116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2,
+ 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0,
+ 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, 0,
+ 0, 0, 8,105,117,112,108,105,115,116, 0, 4, 0, 0, 2,240, 0, 0, 0, 20,
+ 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 76,
+ 73, 83, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114,
+ 0, 2, 0, 0, 0, 5,108,105,115,116, 0, 2, 0, 0, 0, 9, 73, 85, 80, 73,
+ 77, 65, 71, 69, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0,
+ 2,249, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,
+115, 46,108,117, 97, 0, 0, 0, 0,116, 8, 2, 7, 1, 50, 92, 7, 1, 50, 32,
+ 15, 3, 13, 1, 13, 2, 16, 13, 3, 16, 2, 1, 1, 11, 4, 31, 52, 7, 15, 5,
+ 11, 6, 2, 0, 1, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 2, 16, 13, 3, 16,
+ 54, 42, 13, 1, 18, 7, 48, 10, 13, 3, 7, 1, 38, 13, 1, 18, 7, 31, 52, 9,
+ 15, 5, 11, 8, 2, 0, 1, 50, 10, 13, 1, 11, 7, 13, 3, 7, 1, 38, 26, 13,
+ 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, 16, 54, 99, 13, 1, 11, 9, 13,
+ 2, 7, 1, 38, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 4,111,
+ 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,106, 0, 2, 0, 0,
+ 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2,
+ 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 38,110,111,110, 45,110,
+117,109,101,114,105, 99, 32,118, 97,108,117,101, 32,105,110, 32,105,109, 97,103,
+101, 32,100,101,102,105,110,105,116,105,111,110, 0, 2, 0, 0, 0, 6,119,105,
+100,116,104, 0, 2, 0, 0, 0, 26,105,110, 99,111,110,115,105,115,116,101,110,
+116, 32,105,109, 97,103,101, 32,108,101,110,103,104,116, 0, 2, 0, 0, 0, 7,
+104,101,105,103,104,116, 0, 4, 0, 0, 3, 16, 0, 0, 0, 20, 64,105,117,112,
+108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 74,
+ 9, 2, 15, 2, 13, 1, 18, 3, 13, 1, 18, 4, 13, 1, 2, 1, 3, 15, 5, 13,
+ 1, 18, 6, 2, 1, 1, 11, 7, 32, 52, 38, 7, 1, 50, 23, 15, 9, 13, 2, 13,
+ 3, 13, 1, 18, 6, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 37, 23, 3, 13, 1,
+ 18, 6, 13, 3, 16, 54, 32, 5, 1, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 10, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,
+108,101, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 73,109, 97,
+103,101, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 7,104,
+101,105,103,104,116, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0,
+ 7, 99,111,108,111,114,115, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2,
+ 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,116,
+114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,105,117,112,105,109, 97,103,101,
+ 0, 4, 0, 0, 3, 28, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,
+100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2,
+ 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111,
+ 0, 2, 0, 0, 0, 9, 73, 85, 80, 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, 12,
+ 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,105,109, 97,
+103,101, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 0,
+ 4, 0, 0, 3, 36, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,
+103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, 18,
+ 2, 13, 1, 18, 3, 13, 1, 18, 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,114,
+101, 97,116,101, 73,109, 97,103,101, 82, 71, 66, 0, 2, 0, 0, 0, 6,119,105,
+100,116,104, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, 0,
+ 7,112,105,120,101,108,115, 0, 2, 0, 0, 0, 12,105,117,112,105,109, 97,103,
+101,114,103, 98, 0, 4, 0, 0, 3, 40, 0, 0, 0, 20, 64,105,117,112,108,117,
+ 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1,
+ 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0,
+ 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71,
+ 66, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2,
+ 0, 0, 0, 9,105,109, 97,103,101,114,103, 98, 0, 2, 0, 0, 0, 13, 73, 85,
+ 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 4, 0, 0, 3, 48, 0, 0, 0, 20,
+ 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0,
+ 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, 18, 2, 13, 1, 18, 3, 13, 1, 18, 4,
+ 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106,
+ 0, 2, 0, 0, 0, 19,105,117,112, 67,114,101, 97,116,101, 73,109, 97,103,101,
+ 82, 71, 66, 65, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0,
+ 7,104,101,105,103,104,116, 0, 2, 0, 0, 0, 7,112,105,120,101,108,115, 0,
+ 2, 0, 0, 0, 13,105,117,112,105,109, 97,103,101,114,103, 98, 97, 0, 4, 0,
+ 0, 3, 52, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,
+116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 13, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 2, 0, 0, 0,
+ 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,105,109,
+ 97,103,101,114,103, 98, 97, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, 71,
+ 82, 69, 83, 83, 66, 65, 82, 0, 4, 0, 0, 3, 61, 0, 0, 0, 20, 64,105,117,
+112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,
+ 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0,
+ 0, 21,105,117,112, 67,114,101, 97,116,101, 80,114,111,103,114,101,115,115, 66,
+ 97,114, 0, 2, 0, 0, 0, 15,105,117,112,112,114,111,103,114,101,115,115, 98,
+ 97,114, 0, 4, 0, 0, 3, 65, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,
+119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1,
+ 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0,
+ 2,111, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, 71, 82, 69, 83, 83, 66,
+ 65, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 12,112,114,111,103,114,101,115,115, 98, 97,114, 0, 2, 0, 0,
+ 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0,
+ 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 7, 65, 67, 84, 73, 79, 78, 0,
+ 2, 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 10, 65,
+ 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 9,103,101,116,102,111, 99,
+117,115, 0, 2, 0, 0, 0, 12, 71, 69, 84, 70, 79, 67, 85, 83, 95, 67, 66, 0,
+ 2, 0, 0, 0, 16,105,117,112, 95,103,101,116,102,111, 99,117,115, 95, 99, 98,
+ 0, 2, 0, 0, 0, 10,107,105,108,108,102,111, 99,117,115, 0, 2, 0, 0, 0,
+ 13, 75, 73, 76, 76, 70, 79, 67, 85, 83, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,
+117,112, 95,107,105,108,108,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0,
+ 6,102,111, 99,117,115, 0, 2, 0, 0, 0, 9, 70, 79, 67, 85, 83, 95, 67, 66,
+ 0, 2, 0, 0, 0, 13,105,117,112, 95,102,111, 99,117,115, 95, 99, 98, 0, 2,
+ 0, 0, 0, 6,107, 95, 97,110,121, 0, 2, 0, 0, 0, 6, 75, 95, 65, 78, 89,
+ 0, 2, 0, 0, 0, 10,105,117,112, 95,107, 95, 97,110,121, 0, 2, 0, 0, 0,
+ 5,104,101,108,112, 0, 2, 0, 0, 0, 8, 72, 69, 76, 80, 95, 67, 66, 0, 2,
+ 0, 0, 0, 12,105,117,112, 95,104,101,108,112, 95, 99, 98, 0, 2, 0, 0, 0,
+ 8, 99, 97,114,101,116, 99, 98, 0, 2, 0, 0, 0, 9, 67, 65, 82, 69, 84, 95,
+ 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, 99, 97,114,101,116, 95, 99, 98,
+ 0, 2, 0, 0, 0, 9,107,101,121,112,114,101,115,115, 0, 2, 0, 0, 0, 12,
+ 75, 69, 89, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112,
+ 95,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 7,115, 99,
+114,111,108,108, 0, 2, 0, 0, 0, 10, 83, 67, 82, 79, 76, 76, 95, 67, 66, 0,
+ 2, 0, 0, 0, 14,105,117,112, 95,115, 99,114,111,108,108, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,116,114, 97,121, 99,108,105, 99,107, 0, 2, 0, 0, 0, 13, 84,
+ 82, 65, 89, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112,
+ 95,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 6, 99,
+108,111,115,101, 0, 2, 0, 0, 0, 9, 67, 76, 79, 83, 69, 95, 67, 66, 0, 2,
+ 0, 0, 0, 13,105,117,112, 95, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 5,111,112,101,110, 0, 2, 0, 0, 0, 8, 79, 80, 69, 78, 95, 67, 66, 0,
+ 2, 0, 0, 0, 12,105,117,112, 95,111,112,101,110, 95, 99, 98, 0, 2, 0, 0,
+ 0, 7,115,104,111,119, 99, 98, 0, 2, 0, 0, 0, 8, 83, 72, 79, 87, 95, 67,
+ 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,104,111,119, 95, 99, 98, 0, 2,
+ 0, 0, 0, 6,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 7, 77, 65, 80, 95, 67,
+ 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,109, 97,112, 95, 99, 98, 0, 2, 0,
+ 0, 0, 8,117,110,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 9, 85, 78, 77, 65,
+ 80, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,117,110,109, 97,112, 95,
+ 99, 98, 0, 2, 0, 0, 0, 10,100,114,111,112,102,105,108,101,115, 0, 2, 0,
+ 0, 0, 13, 68, 82, 79, 80, 70, 73, 76, 69, 83, 95, 67, 66, 0, 2, 0, 0, 0,
+ 17,105,117,112, 95,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, 0,
+ 0, 0, 10,109,101,110,117, 99,108,111,115,101, 0, 2, 0, 0, 0, 13, 77, 69,
+ 78, 85, 67, 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,
+109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,105,
+103,104,108,105,103,104,116, 0, 2, 0, 0, 0, 13, 72, 73, 71, 72, 76, 73, 71,
+ 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,104,105,103,104,108,
+105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 4,119,111,109, 0, 2, 0, 0,
+ 0, 7, 87, 79, 77, 95, 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,119,111,
+109, 95, 99, 98, 0, 2, 0, 0, 0, 6,119,104,101,101,108, 0, 2, 0, 0, 0,
+ 9, 87, 72, 69, 69, 76, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,119,
+104,101,101,108, 95, 99, 98, 0, 2, 0, 0, 0, 10, 66, 85, 84, 84, 79, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95, 98,117,116,116,111,110, 95, 99,
+ 98, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 10, 82,
+ 69, 83, 73, 90, 69, 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,114,101,
+115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 7,109,111,116,105,111,110, 0,
+ 2, 0, 0, 0, 10, 77, 79, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 14,
+105,117,112, 95,109,111,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 12,101,
+110,116,101,114,119,105,110,100,111,119, 0, 2, 0, 0, 0, 15, 69, 78, 84, 69,
+ 82, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,
+101,110,116,101,114,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 12,
+108,101, 97,118,101,119,105,110,100,111,119, 0, 2, 0, 0, 0, 15, 76, 69, 65,
+ 86, 69, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112,
+ 95,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0,
+ 5,101,100,105,116, 0, 2, 0, 0, 0, 8, 69, 68, 73, 84, 95, 67, 66, 0, 2,
+ 0, 0, 0, 12,105,117,112, 95,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0,
+ 12,109,117,108,116,105,115,101,108,101, 99,116, 0, 2, 0, 0, 0, 15, 77, 85,
+ 76, 84, 73, 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,
+112, 95,109,117,108,116,105,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0,
+ 0, 7,102,105,108,101, 99, 98, 0, 2, 0, 0, 0, 8, 70, 73, 76, 69, 95, 67,
+ 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,102,105,108,101, 95, 99, 98, 0, 2,
+ 0, 0, 0, 14,109,100,105, 97, 99,116,105,118, 97,116,101, 99, 98, 0, 2, 0,
+ 0, 0, 15, 77, 68, 73, 65, 67, 84, 73, 86, 65, 84, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 19,105,117,112, 95,109,100,105, 97, 99,116,105,118, 97,116,101, 95, 99,
+ 98, 0, 2, 0, 0, 0, 11,100,114,111,112,100,111,119,110, 99, 98, 0, 2, 0,
+ 0, 0, 12, 68, 82, 79, 80, 68, 79, 87, 78, 95, 67, 66, 0, 2, 0, 0, 0, 16,
+105,117,112, 95,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 2, 0, 0, 0,
+ 11,100, 98,108, 99,108,105, 99,107, 99, 98, 0, 2, 0, 0, 0, 12, 68, 66, 76,
+ 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,100, 98,
+108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97,
+ 99,116,105,111,110, 95,116,111,103,103,108,101, 0, 2, 0, 0, 0, 16,105,117,
+112, 95, 97, 99,116,105,111,110, 95,116,101,120,116, 0, 2, 0, 0, 0, 18,105,
+117,112, 95, 97, 99,116,105,111,110, 95, 98,117,116,116,111,110, 0, 2, 0, 0,
+ 0, 16,105,117,112, 95, 97, 99,116,105,111,110, 95,108,105,115,116, 0, 2, 0,
+ 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95, 99, 97,110,118, 97,115,
+ 0, 2, 0, 0, 0, 17,105,117,112, 95, 97, 99,116,105,111,110, 95,116,105,109,
+101,114, 0, 2, 0, 0, 0, 10, 97, 99,116,105,111,110, 95, 99, 98, 0, 2, 0,
+ 0, 0, 12,103,101,116,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 13,
+107,105,108,108,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 9,102,111,
+ 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 8,104,101,108,112, 95, 99, 98, 0,
+ 2, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99, 98, 0, 2, 0, 0, 0, 12,107,
+101,121,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 10,115, 99,114,111,
+108,108, 95, 99, 98, 0, 2, 0, 0, 0, 13,116,114, 97,121, 99,108,105, 99,107,
+ 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,111,115,101, 95, 99, 98, 0, 2, 0,
+ 0, 0, 8,111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 8,115,104,111,119,
+ 95, 99, 98, 0, 2, 0, 0, 0, 7,109, 97,112, 95, 99, 98, 0, 2, 0, 0, 0,
+ 9,117,110,109, 97,112, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,114,111,112,102,
+105,108,101,115, 95, 99, 98, 0, 2, 0, 0, 0, 13,109,101,110,117, 99,108,111,
+115,101, 95, 99, 98, 0, 2, 0, 0, 0, 13,104,105,103,104,108,105,103,104,116,
+ 95, 99, 98, 0, 2, 0, 0, 0, 7,119,111,109, 95, 99, 98, 0, 2, 0, 0, 0,
+ 9,119,104,101,101,108, 95, 99, 98, 0, 2, 0, 0, 0, 10, 98,117,116,116,111,
+110, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,115,105,122,101, 95, 99, 98, 0,
+ 2, 0, 0, 0, 10,109,111,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 15,
+101,110,116,101,114,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 15,
+108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 8,
+101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,108,116,105,115,101,
+108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,100,105, 97, 99,116,105,
+118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,102,105,108,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 12,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 2, 0,
+ 0, 0, 12,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_widgets_le64w.lo");
+}
diff --git a/iup/srclua3/loh/matrix.loh b/iup/srclua3/loh/matrix.loh
new file mode 100755
index 0000000..3f8ee52
--- /dev/null
+++ b/iup/srclua3/loh/matrix.loh
@@ -0,0 +1,120 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/matrix.lo");
+*/
+/* ../obj/iupluacontrols3/matrix.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,109, 97,116,114,105,
+120, 46,108,117, 97, 0, 0, 0, 1,162, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0,
+ 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 15, 0, 11, 7,
+ 11, 8, 26, 11, 10, 25, 9, 15, 11, 11, 12, 15, 9, 26, 15, 13, 18, 14, 11, 12,
+ 15, 15, 26, 15, 13, 18, 16, 11, 12, 15, 17, 26, 15, 13, 11, 18, 22, 2, 11, 19,
+ 15, 20, 29, 0, 2, 26, 15, 13, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26,
+ 15, 13, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 13, 11, 27, 22, 2,
+ 11, 28, 15, 29, 29, 0, 2, 26, 15, 13, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0,
+ 2, 26, 15, 13, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 13, 11, 36,
+ 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 13, 11, 39, 22, 2, 11, 40, 15, 41,
+ 29, 0, 2, 26, 15, 13, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 13,
+ 11, 45, 22, 2, 11, 46, 15, 47, 29, 0, 2, 26, 15, 13, 11, 48, 22, 2, 11, 49,
+ 15, 50, 29, 0, 2, 26, 15, 13, 11, 51, 22, 2, 11, 52, 15, 53, 29, 0, 2, 26,
+ 15, 13, 11, 54, 22, 2, 11, 55, 15, 56, 29, 0, 2, 26, 15, 13, 11, 57, 22, 2,
+ 11, 58, 15, 59, 29, 0, 2, 26, 15, 13, 11, 60, 22, 2, 11, 61, 15, 62, 29, 0,
+ 2, 26, 15, 13, 11, 63, 22, 2, 11, 64, 15, 65, 29, 0, 2, 26, 15, 13, 11, 66,
+ 22, 2, 11, 67, 15, 68, 29, 0, 2, 26, 15, 13, 11, 69, 15, 13, 18, 18, 26, 15,
+ 13, 11, 70, 15, 13, 18, 21, 26, 15, 13, 11, 71, 15, 13, 18, 24, 26, 15, 13, 11,
+ 72, 15, 13, 18, 27, 26, 15, 13, 11, 73, 15, 13, 18, 30, 26, 15, 13, 11, 74, 15,
+ 13, 18, 33, 26, 15, 13, 11, 75, 15, 13, 18, 36, 26, 15, 13, 11, 76, 15, 13, 18,
+ 39, 26, 15, 13, 11, 77, 15, 13, 18, 42, 26, 15, 13, 11, 78, 15, 13, 18, 45, 26,
+ 15, 13, 11, 79, 15, 13, 18, 48, 26, 15, 13, 11, 80, 15, 13, 18, 51, 26, 15, 13,
+ 11, 81, 15, 13, 18, 54, 26, 0, 0, 0, 0, 0, 0, 0, 0, 82, 2, 0, 0, 0,
+ 10, 73, 85, 80, 77, 65, 84, 82, 73, 88, 0, 2, 0, 0, 0, 7,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17,
+ 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 3, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0,
+ 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0,
+ 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,
+101, 77, 97,116,114,105,120, 0, 2, 0, 0, 0, 8,115,101,116, 99,101,108,108,
+ 0, 4, 0, 0, 0, 7, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117,
+ 97, 0, 0, 0, 0, 20, 8, 4, 15, 3, 13, 0, 13, 1, 11, 5, 42, 13, 2, 42,
+ 13, 3, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,108,
+ 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,108, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0,
+ 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 8,
+103,101,116, 99,101,108,108, 0, 4, 0, 0, 0, 11, 0, 0, 0, 12, 64,109, 97,
+116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 18, 8, 4, 15, 3, 13, 0, 13,
+ 1, 11, 5, 42, 13, 2, 42, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2,
+ 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,
+108, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,
+116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0,
+ 2, 0, 0, 0, 10,105,117,112,109, 97,116,114,105,120, 0, 4, 0, 0, 0, 15,
+ 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 12,
+ 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, 77, 65, 84, 82, 73,
+ 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2,
+ 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 7,109, 97,116,114,105,120, 0,
+ 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2,
+ 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 18,105,117,
+112, 95,109, 97,116, 95, 97, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0,
+ 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 21,105,117,112, 95,
+109, 97,116, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8,101,100,105,116,105,111,110, 0, 2, 0, 0, 0, 11, 69, 68, 73, 84, 73,
+ 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,101,
+100,105,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114,111,112, 0,
+ 2, 0, 0, 0, 8, 68, 82, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,
+112, 95,109, 97,116, 95,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 11,100,
+114,111,112,115,101,108,101, 99,116, 0, 2, 0, 0, 0, 14, 68, 82, 79, 80, 83,
+ 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,109, 97,
+116, 95,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0,
+ 10,101,110,116,101,114,105,116,101,109, 0, 2, 0, 0, 0, 13, 69, 78, 84, 69,
+ 82, 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,
+116, 95,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 10,
+108,101, 97,118,101,105,116,101,109, 0, 2, 0, 0, 0, 13, 76, 69, 65, 86, 69,
+ 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116,
+ 95,108,101, 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 6, 99,
+108,105, 99,107, 0, 2, 0, 0, 0, 9, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2,
+ 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, 99,108,105, 99,107, 95, 99, 98,
+ 0, 2, 0, 0, 0, 10,115, 99,114,111,108,108,116,111,112, 0, 2, 0, 0, 0,
+ 13, 83, 67, 82, 79, 76, 76, 84, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,
+117,112, 95,109, 97,116, 95,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0,
+ 2, 0, 0, 0, 8,118, 97,108,117,101, 99, 98, 0, 2, 0, 0, 0, 9, 86, 65,
+ 76, 85, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95,
+118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114, 97,119, 0, 2,
+ 0, 0, 0, 8, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112,
+ 95,109, 97,116, 95,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114,
+111,112, 99,104,101, 99,107, 0, 2, 0, 0, 0, 13, 68, 82, 79, 80, 67, 72, 69,
+ 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, 95,100,
+114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 10,102,103, 99,
+111,108,111,114, 99, 98, 0, 2, 0, 0, 0, 11, 70, 71, 67, 79, 76, 79, 82, 95,
+ 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,102,103, 99,111,
+108,111,114, 95, 99, 98, 0, 2, 0, 0, 0, 10, 98,103, 99,111,108,111,114, 99,
+ 98, 0, 2, 0, 0, 0, 11, 66, 71, 67, 79, 76, 79, 82, 95, 67, 66, 0, 2, 0,
+ 0, 0, 19,105,117,112, 95,109, 97,116, 95, 98,103, 99,111,108,111,114, 95, 99,
+ 98, 0, 2, 0, 0, 0, 11,118, 97,108,117,101, 95,101,100,105,116, 0, 2, 0,
+ 0, 0, 14, 86, 65, 76, 85, 69, 95, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0, 0,
+ 0, 22,105,117,112, 95,109, 97,116, 95,118, 97,108,117,101, 95,101,100,105,116,
+ 95, 99, 98, 0, 2, 0, 0, 0, 12,109, 97,114,107,101,100,105,116, 95, 99, 98,
+ 0, 2, 0, 0, 0, 12, 77, 65, 82, 75, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0,
+ 0, 0, 20,105,117,112, 95,109, 97,116, 95,109, 97,114,107,101,100,105,116, 95,
+ 99, 98, 0, 2, 0, 0, 0, 8,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0,
+ 8, 77, 65, 82, 75, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97,
+116, 95,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,109,111,117,115,101,
+ 95, 99, 98, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 17,105,117,112, 95,109, 97,116, 95,109,111,117,115,101, 95, 99, 98, 0,
+ 2, 0, 0, 0, 8,102,111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 8, 70, 79,
+ 78, 84, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97,116, 95,102,
+111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 11,101,100,105,116,105,111,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 8,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0,
+ 14,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 13,
+101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 13,108,101,
+ 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,105, 99,
+107, 95, 99, 98, 0, 2, 0, 0, 0, 13,115, 99,114,111,108,108,116,111,112, 95,
+ 99, 98, 0, 2, 0, 0, 0, 9,118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,114,111,112, 99,
+104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 11,102,103, 99,111,108,111,114,
+ 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,103, 99,111,108,111,114, 95, 99, 98, 0,
+ 2, 0, 0, 0, 14,118, 97,108,117,101, 95,101,100,105,116, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/matrix.lo");
+}
diff --git a/iup/srclua3/loh/matrix_be32.loh b/iup/srclua3/loh/matrix_be32.loh
new file mode 100755
index 0000000..5f88a5b
--- /dev/null
+++ b/iup/srclua3/loh/matrix_be32.loh
@@ -0,0 +1,120 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/matrix_be32.lo");
+*/
+/* ../obj/iupluacontrols3/matrix_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,109, 97,116,114,105,
+120, 46,108,117, 97, 0, 0, 0, 1,162, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0,
+ 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 15, 0, 11, 7,
+ 11, 8, 26, 11, 10, 25, 9, 15, 11, 11, 12, 15, 9, 26, 15, 13, 18, 14, 11, 12,
+ 15, 15, 26, 15, 13, 18, 16, 11, 12, 15, 17, 26, 15, 13, 11, 18, 22, 2, 11, 19,
+ 15, 20, 29, 0, 2, 26, 15, 13, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26,
+ 15, 13, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 13, 11, 27, 22, 2,
+ 11, 28, 15, 29, 29, 0, 2, 26, 15, 13, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0,
+ 2, 26, 15, 13, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 13, 11, 36,
+ 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 13, 11, 39, 22, 2, 11, 40, 15, 41,
+ 29, 0, 2, 26, 15, 13, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 13,
+ 11, 45, 22, 2, 11, 46, 15, 47, 29, 0, 2, 26, 15, 13, 11, 48, 22, 2, 11, 49,
+ 15, 50, 29, 0, 2, 26, 15, 13, 11, 51, 22, 2, 11, 52, 15, 53, 29, 0, 2, 26,
+ 15, 13, 11, 54, 22, 2, 11, 55, 15, 56, 29, 0, 2, 26, 15, 13, 11, 57, 22, 2,
+ 11, 58, 15, 59, 29, 0, 2, 26, 15, 13, 11, 60, 22, 2, 11, 61, 15, 62, 29, 0,
+ 2, 26, 15, 13, 11, 63, 22, 2, 11, 64, 15, 65, 29, 0, 2, 26, 15, 13, 11, 66,
+ 22, 2, 11, 67, 15, 68, 29, 0, 2, 26, 15, 13, 11, 69, 15, 13, 18, 18, 26, 15,
+ 13, 11, 70, 15, 13, 18, 21, 26, 15, 13, 11, 71, 15, 13, 18, 24, 26, 15, 13, 11,
+ 72, 15, 13, 18, 27, 26, 15, 13, 11, 73, 15, 13, 18, 30, 26, 15, 13, 11, 74, 15,
+ 13, 18, 33, 26, 15, 13, 11, 75, 15, 13, 18, 36, 26, 15, 13, 11, 76, 15, 13, 18,
+ 39, 26, 15, 13, 11, 77, 15, 13, 18, 42, 26, 15, 13, 11, 78, 15, 13, 18, 45, 26,
+ 15, 13, 11, 79, 15, 13, 18, 48, 26, 15, 13, 11, 80, 15, 13, 18, 51, 26, 15, 13,
+ 11, 81, 15, 13, 18, 54, 26, 0, 0, 0, 0, 0, 0, 0, 0, 82, 2, 0, 0, 0,
+ 10, 73, 85, 80, 77, 65, 84, 82, 73, 88, 0, 2, 0, 0, 0, 7,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17,
+ 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 3, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0,
+ 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0,
+ 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,
+101, 77, 97,116,114,105,120, 0, 2, 0, 0, 0, 8,115,101,116, 99,101,108,108,
+ 0, 4, 0, 0, 0, 7, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117,
+ 97, 0, 0, 0, 0, 20, 8, 4, 15, 3, 13, 0, 13, 1, 11, 5, 42, 13, 2, 42,
+ 13, 3, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,108,
+ 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,108, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0,
+ 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 8,
+103,101,116, 99,101,108,108, 0, 4, 0, 0, 0, 11, 0, 0, 0, 12, 64,109, 97,
+116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 18, 8, 4, 15, 3, 13, 0, 13,
+ 1, 11, 5, 42, 13, 2, 42, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2,
+ 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,
+108, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,
+116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0,
+ 2, 0, 0, 0, 10,105,117,112,109, 97,116,114,105,120, 0, 4, 0, 0, 0, 15,
+ 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 12,
+ 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, 77, 65, 84, 82, 73,
+ 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2,
+ 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 7,109, 97,116,114,105,120, 0,
+ 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2,
+ 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 18,105,117,
+112, 95,109, 97,116, 95, 97, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0,
+ 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 21,105,117,112, 95,
+109, 97,116, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8,101,100,105,116,105,111,110, 0, 2, 0, 0, 0, 11, 69, 68, 73, 84, 73,
+ 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,101,
+100,105,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114,111,112, 0,
+ 2, 0, 0, 0, 8, 68, 82, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,
+112, 95,109, 97,116, 95,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 11,100,
+114,111,112,115,101,108,101, 99,116, 0, 2, 0, 0, 0, 14, 68, 82, 79, 80, 83,
+ 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,109, 97,
+116, 95,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0,
+ 10,101,110,116,101,114,105,116,101,109, 0, 2, 0, 0, 0, 13, 69, 78, 84, 69,
+ 82, 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,
+116, 95,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 10,
+108,101, 97,118,101,105,116,101,109, 0, 2, 0, 0, 0, 13, 76, 69, 65, 86, 69,
+ 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116,
+ 95,108,101, 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 6, 99,
+108,105, 99,107, 0, 2, 0, 0, 0, 9, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2,
+ 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, 99,108,105, 99,107, 95, 99, 98,
+ 0, 2, 0, 0, 0, 10,115, 99,114,111,108,108,116,111,112, 0, 2, 0, 0, 0,
+ 13, 83, 67, 82, 79, 76, 76, 84, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,
+117,112, 95,109, 97,116, 95,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0,
+ 2, 0, 0, 0, 8,118, 97,108,117,101, 99, 98, 0, 2, 0, 0, 0, 9, 86, 65,
+ 76, 85, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95,
+118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114, 97,119, 0, 2,
+ 0, 0, 0, 8, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112,
+ 95,109, 97,116, 95,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114,
+111,112, 99,104,101, 99,107, 0, 2, 0, 0, 0, 13, 68, 82, 79, 80, 67, 72, 69,
+ 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, 95,100,
+114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 10,102,103, 99,
+111,108,111,114, 99, 98, 0, 2, 0, 0, 0, 11, 70, 71, 67, 79, 76, 79, 82, 95,
+ 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,102,103, 99,111,
+108,111,114, 95, 99, 98, 0, 2, 0, 0, 0, 10, 98,103, 99,111,108,111,114, 99,
+ 98, 0, 2, 0, 0, 0, 11, 66, 71, 67, 79, 76, 79, 82, 95, 67, 66, 0, 2, 0,
+ 0, 0, 19,105,117,112, 95,109, 97,116, 95, 98,103, 99,111,108,111,114, 95, 99,
+ 98, 0, 2, 0, 0, 0, 11,118, 97,108,117,101, 95,101,100,105,116, 0, 2, 0,
+ 0, 0, 14, 86, 65, 76, 85, 69, 95, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0, 0,
+ 0, 22,105,117,112, 95,109, 97,116, 95,118, 97,108,117,101, 95,101,100,105,116,
+ 95, 99, 98, 0, 2, 0, 0, 0, 12,109, 97,114,107,101,100,105,116, 95, 99, 98,
+ 0, 2, 0, 0, 0, 12, 77, 65, 82, 75, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0,
+ 0, 0, 20,105,117,112, 95,109, 97,116, 95,109, 97,114,107,101,100,105,116, 95,
+ 99, 98, 0, 2, 0, 0, 0, 8,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0,
+ 8, 77, 65, 82, 75, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97,
+116, 95,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,109,111,117,115,101,
+ 95, 99, 98, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 17,105,117,112, 95,109, 97,116, 95,109,111,117,115,101, 95, 99, 98, 0,
+ 2, 0, 0, 0, 8,102,111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 8, 70, 79,
+ 78, 84, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97,116, 95,102,
+111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 11,101,100,105,116,105,111,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 8,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0,
+ 14,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 13,
+101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 13,108,101,
+ 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,105, 99,
+107, 95, 99, 98, 0, 2, 0, 0, 0, 13,115, 99,114,111,108,108,116,111,112, 95,
+ 99, 98, 0, 2, 0, 0, 0, 9,118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,114,111,112, 99,
+104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 11,102,103, 99,111,108,111,114,
+ 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,103, 99,111,108,111,114, 95, 99, 98, 0,
+ 2, 0, 0, 0, 14,118, 97,108,117,101, 95,101,100,105,116, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/matrix_be32.lo");
+}
diff --git a/iup/srclua3/loh/matrix_be64.loh b/iup/srclua3/loh/matrix_be64.loh
new file mode 100755
index 0000000..87c64b7
--- /dev/null
+++ b/iup/srclua3/loh/matrix_be64.loh
@@ -0,0 +1,120 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/matrix_be64.lo");
+*/
+/* ../obj/iupluacontrols3/matrix_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,109, 97,116,114,105,
+120, 46,108,117, 97, 0, 0, 0, 1,162, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0,
+ 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 15, 0, 11, 7,
+ 11, 8, 26, 11, 10, 25, 9, 15, 11, 11, 12, 15, 9, 26, 15, 13, 18, 14, 11, 12,
+ 15, 15, 26, 15, 13, 18, 16, 11, 12, 15, 17, 26, 15, 13, 11, 18, 22, 2, 11, 19,
+ 15, 20, 29, 0, 2, 26, 15, 13, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26,
+ 15, 13, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 13, 11, 27, 22, 2,
+ 11, 28, 15, 29, 29, 0, 2, 26, 15, 13, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0,
+ 2, 26, 15, 13, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 13, 11, 36,
+ 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 13, 11, 39, 22, 2, 11, 40, 15, 41,
+ 29, 0, 2, 26, 15, 13, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 13,
+ 11, 45, 22, 2, 11, 46, 15, 47, 29, 0, 2, 26, 15, 13, 11, 48, 22, 2, 11, 49,
+ 15, 50, 29, 0, 2, 26, 15, 13, 11, 51, 22, 2, 11, 52, 15, 53, 29, 0, 2, 26,
+ 15, 13, 11, 54, 22, 2, 11, 55, 15, 56, 29, 0, 2, 26, 15, 13, 11, 57, 22, 2,
+ 11, 58, 15, 59, 29, 0, 2, 26, 15, 13, 11, 60, 22, 2, 11, 61, 15, 62, 29, 0,
+ 2, 26, 15, 13, 11, 63, 22, 2, 11, 64, 15, 65, 29, 0, 2, 26, 15, 13, 11, 66,
+ 22, 2, 11, 67, 15, 68, 29, 0, 2, 26, 15, 13, 11, 69, 15, 13, 18, 18, 26, 15,
+ 13, 11, 70, 15, 13, 18, 21, 26, 15, 13, 11, 71, 15, 13, 18, 24, 26, 15, 13, 11,
+ 72, 15, 13, 18, 27, 26, 15, 13, 11, 73, 15, 13, 18, 30, 26, 15, 13, 11, 74, 15,
+ 13, 18, 33, 26, 15, 13, 11, 75, 15, 13, 18, 36, 26, 15, 13, 11, 76, 15, 13, 18,
+ 39, 26, 15, 13, 11, 77, 15, 13, 18, 42, 26, 15, 13, 11, 78, 15, 13, 18, 45, 26,
+ 15, 13, 11, 79, 15, 13, 18, 48, 26, 15, 13, 11, 80, 15, 13, 18, 51, 26, 15, 13,
+ 11, 81, 15, 13, 18, 54, 26, 0, 0, 0, 0, 0, 0, 0, 0, 82, 2, 0, 0, 0,
+ 10, 73, 85, 80, 77, 65, 84, 82, 73, 88, 0, 2, 0, 0, 0, 7,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17,
+ 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 3, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0,
+ 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0,
+ 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,
+101, 77, 97,116,114,105,120, 0, 2, 0, 0, 0, 8,115,101,116, 99,101,108,108,
+ 0, 4, 0, 0, 0, 7, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117,
+ 97, 0, 0, 0, 0, 20, 8, 4, 15, 3, 13, 0, 13, 1, 11, 5, 42, 13, 2, 42,
+ 13, 3, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,108,
+ 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,108, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0,
+ 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 8,
+103,101,116, 99,101,108,108, 0, 4, 0, 0, 0, 11, 0, 0, 0, 12, 64,109, 97,
+116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 18, 8, 4, 15, 3, 13, 0, 13,
+ 1, 11, 5, 42, 13, 2, 42, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2,
+ 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,
+108, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,
+116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0,
+ 2, 0, 0, 0, 10,105,117,112,109, 97,116,114,105,120, 0, 4, 0, 0, 0, 15,
+ 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 12,
+ 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, 77, 65, 84, 82, 73,
+ 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2,
+ 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 7,109, 97,116,114,105,120, 0,
+ 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2,
+ 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 18,105,117,
+112, 95,109, 97,116, 95, 97, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0,
+ 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 21,105,117,112, 95,
+109, 97,116, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8,101,100,105,116,105,111,110, 0, 2, 0, 0, 0, 11, 69, 68, 73, 84, 73,
+ 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,101,
+100,105,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114,111,112, 0,
+ 2, 0, 0, 0, 8, 68, 82, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,
+112, 95,109, 97,116, 95,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 11,100,
+114,111,112,115,101,108,101, 99,116, 0, 2, 0, 0, 0, 14, 68, 82, 79, 80, 83,
+ 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,109, 97,
+116, 95,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0,
+ 10,101,110,116,101,114,105,116,101,109, 0, 2, 0, 0, 0, 13, 69, 78, 84, 69,
+ 82, 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,
+116, 95,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 10,
+108,101, 97,118,101,105,116,101,109, 0, 2, 0, 0, 0, 13, 76, 69, 65, 86, 69,
+ 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116,
+ 95,108,101, 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 6, 99,
+108,105, 99,107, 0, 2, 0, 0, 0, 9, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2,
+ 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, 99,108,105, 99,107, 95, 99, 98,
+ 0, 2, 0, 0, 0, 10,115, 99,114,111,108,108,116,111,112, 0, 2, 0, 0, 0,
+ 13, 83, 67, 82, 79, 76, 76, 84, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,
+117,112, 95,109, 97,116, 95,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0,
+ 2, 0, 0, 0, 8,118, 97,108,117,101, 99, 98, 0, 2, 0, 0, 0, 9, 86, 65,
+ 76, 85, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95,
+118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114, 97,119, 0, 2,
+ 0, 0, 0, 8, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112,
+ 95,109, 97,116, 95,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114,
+111,112, 99,104,101, 99,107, 0, 2, 0, 0, 0, 13, 68, 82, 79, 80, 67, 72, 69,
+ 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, 95,100,
+114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 10,102,103, 99,
+111,108,111,114, 99, 98, 0, 2, 0, 0, 0, 11, 70, 71, 67, 79, 76, 79, 82, 95,
+ 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,102,103, 99,111,
+108,111,114, 95, 99, 98, 0, 2, 0, 0, 0, 10, 98,103, 99,111,108,111,114, 99,
+ 98, 0, 2, 0, 0, 0, 11, 66, 71, 67, 79, 76, 79, 82, 95, 67, 66, 0, 2, 0,
+ 0, 0, 19,105,117,112, 95,109, 97,116, 95, 98,103, 99,111,108,111,114, 95, 99,
+ 98, 0, 2, 0, 0, 0, 11,118, 97,108,117,101, 95,101,100,105,116, 0, 2, 0,
+ 0, 0, 14, 86, 65, 76, 85, 69, 95, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0, 0,
+ 0, 22,105,117,112, 95,109, 97,116, 95,118, 97,108,117,101, 95,101,100,105,116,
+ 95, 99, 98, 0, 2, 0, 0, 0, 12,109, 97,114,107,101,100,105,116, 95, 99, 98,
+ 0, 2, 0, 0, 0, 12, 77, 65, 82, 75, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0,
+ 0, 0, 20,105,117,112, 95,109, 97,116, 95,109, 97,114,107,101,100,105,116, 95,
+ 99, 98, 0, 2, 0, 0, 0, 8,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0,
+ 8, 77, 65, 82, 75, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97,
+116, 95,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,109,111,117,115,101,
+ 95, 99, 98, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 17,105,117,112, 95,109, 97,116, 95,109,111,117,115,101, 95, 99, 98, 0,
+ 2, 0, 0, 0, 8,102,111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 8, 70, 79,
+ 78, 84, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97,116, 95,102,
+111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 11,101,100,105,116,105,111,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 8,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0,
+ 14,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 13,
+101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 13,108,101,
+ 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,105, 99,
+107, 95, 99, 98, 0, 2, 0, 0, 0, 13,115, 99,114,111,108,108,116,111,112, 95,
+ 99, 98, 0, 2, 0, 0, 0, 9,118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,114,111,112, 99,
+104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 11,102,103, 99,111,108,111,114,
+ 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,103, 99,111,108,111,114, 95, 99, 98, 0,
+ 2, 0, 0, 0, 14,118, 97,108,117,101, 95,101,100,105,116, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/matrix_be64.lo");
+}
diff --git a/iup/srclua3/loh/matrix_le64.loh b/iup/srclua3/loh/matrix_le64.loh
new file mode 100755
index 0000000..208d715
--- /dev/null
+++ b/iup/srclua3/loh/matrix_le64.loh
@@ -0,0 +1,120 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/matrix_le64.lo");
+*/
+/* ../obj/iupluacontrols3/matrix_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,109, 97,116,114,105,
+120, 46,108,117, 97, 0, 0, 0, 1,162, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0,
+ 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 15, 0, 11, 7,
+ 11, 8, 26, 11, 10, 25, 9, 15, 11, 11, 12, 15, 9, 26, 15, 13, 18, 14, 11, 12,
+ 15, 15, 26, 15, 13, 18, 16, 11, 12, 15, 17, 26, 15, 13, 11, 18, 22, 2, 11, 19,
+ 15, 20, 29, 0, 2, 26, 15, 13, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26,
+ 15, 13, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 13, 11, 27, 22, 2,
+ 11, 28, 15, 29, 29, 0, 2, 26, 15, 13, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0,
+ 2, 26, 15, 13, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 13, 11, 36,
+ 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 13, 11, 39, 22, 2, 11, 40, 15, 41,
+ 29, 0, 2, 26, 15, 13, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 13,
+ 11, 45, 22, 2, 11, 46, 15, 47, 29, 0, 2, 26, 15, 13, 11, 48, 22, 2, 11, 49,
+ 15, 50, 29, 0, 2, 26, 15, 13, 11, 51, 22, 2, 11, 52, 15, 53, 29, 0, 2, 26,
+ 15, 13, 11, 54, 22, 2, 11, 55, 15, 56, 29, 0, 2, 26, 15, 13, 11, 57, 22, 2,
+ 11, 58, 15, 59, 29, 0, 2, 26, 15, 13, 11, 60, 22, 2, 11, 61, 15, 62, 29, 0,
+ 2, 26, 15, 13, 11, 63, 22, 2, 11, 64, 15, 65, 29, 0, 2, 26, 15, 13, 11, 66,
+ 22, 2, 11, 67, 15, 68, 29, 0, 2, 26, 15, 13, 11, 69, 15, 13, 18, 18, 26, 15,
+ 13, 11, 70, 15, 13, 18, 21, 26, 15, 13, 11, 71, 15, 13, 18, 24, 26, 15, 13, 11,
+ 72, 15, 13, 18, 27, 26, 15, 13, 11, 73, 15, 13, 18, 30, 26, 15, 13, 11, 74, 15,
+ 13, 18, 33, 26, 15, 13, 11, 75, 15, 13, 18, 36, 26, 15, 13, 11, 76, 15, 13, 18,
+ 39, 26, 15, 13, 11, 77, 15, 13, 18, 42, 26, 15, 13, 11, 78, 15, 13, 18, 45, 26,
+ 15, 13, 11, 79, 15, 13, 18, 48, 26, 15, 13, 11, 80, 15, 13, 18, 51, 26, 15, 13,
+ 11, 81, 15, 13, 18, 54, 26, 0, 0, 0, 0, 0, 0, 0, 0, 82, 2, 0, 0, 0,
+ 10, 73, 85, 80, 77, 65, 84, 82, 73, 88, 0, 2, 0, 0, 0, 7,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17,
+ 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 3, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0,
+ 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0,
+ 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,
+101, 77, 97,116,114,105,120, 0, 2, 0, 0, 0, 8,115,101,116, 99,101,108,108,
+ 0, 4, 0, 0, 0, 7, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117,
+ 97, 0, 0, 0, 0, 20, 8, 4, 15, 3, 13, 0, 13, 1, 11, 5, 42, 13, 2, 42,
+ 13, 3, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,108,
+ 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,108, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0,
+ 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 8,
+103,101,116, 99,101,108,108, 0, 4, 0, 0, 0, 11, 0, 0, 0, 12, 64,109, 97,
+116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 18, 8, 4, 15, 3, 13, 0, 13,
+ 1, 11, 5, 42, 13, 2, 42, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2,
+ 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,
+108, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,
+116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0,
+ 2, 0, 0, 0, 10,105,117,112,109, 97,116,114,105,120, 0, 4, 0, 0, 0, 15,
+ 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 12,
+ 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, 77, 65, 84, 82, 73,
+ 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2,
+ 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 7,109, 97,116,114,105,120, 0,
+ 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2,
+ 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 18,105,117,
+112, 95,109, 97,116, 95, 97, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0,
+ 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 21,105,117,112, 95,
+109, 97,116, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8,101,100,105,116,105,111,110, 0, 2, 0, 0, 0, 11, 69, 68, 73, 84, 73,
+ 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,101,
+100,105,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114,111,112, 0,
+ 2, 0, 0, 0, 8, 68, 82, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,
+112, 95,109, 97,116, 95,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 11,100,
+114,111,112,115,101,108,101, 99,116, 0, 2, 0, 0, 0, 14, 68, 82, 79, 80, 83,
+ 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,109, 97,
+116, 95,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0,
+ 10,101,110,116,101,114,105,116,101,109, 0, 2, 0, 0, 0, 13, 69, 78, 84, 69,
+ 82, 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,
+116, 95,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 10,
+108,101, 97,118,101,105,116,101,109, 0, 2, 0, 0, 0, 13, 76, 69, 65, 86, 69,
+ 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116,
+ 95,108,101, 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 6, 99,
+108,105, 99,107, 0, 2, 0, 0, 0, 9, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2,
+ 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, 99,108,105, 99,107, 95, 99, 98,
+ 0, 2, 0, 0, 0, 10,115, 99,114,111,108,108,116,111,112, 0, 2, 0, 0, 0,
+ 13, 83, 67, 82, 79, 76, 76, 84, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,
+117,112, 95,109, 97,116, 95,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0,
+ 2, 0, 0, 0, 8,118, 97,108,117,101, 99, 98, 0, 2, 0, 0, 0, 9, 86, 65,
+ 76, 85, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95,
+118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114, 97,119, 0, 2,
+ 0, 0, 0, 8, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112,
+ 95,109, 97,116, 95,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114,
+111,112, 99,104,101, 99,107, 0, 2, 0, 0, 0, 13, 68, 82, 79, 80, 67, 72, 69,
+ 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, 95,100,
+114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 10,102,103, 99,
+111,108,111,114, 99, 98, 0, 2, 0, 0, 0, 11, 70, 71, 67, 79, 76, 79, 82, 95,
+ 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,102,103, 99,111,
+108,111,114, 95, 99, 98, 0, 2, 0, 0, 0, 10, 98,103, 99,111,108,111,114, 99,
+ 98, 0, 2, 0, 0, 0, 11, 66, 71, 67, 79, 76, 79, 82, 95, 67, 66, 0, 2, 0,
+ 0, 0, 19,105,117,112, 95,109, 97,116, 95, 98,103, 99,111,108,111,114, 95, 99,
+ 98, 0, 2, 0, 0, 0, 11,118, 97,108,117,101, 95,101,100,105,116, 0, 2, 0,
+ 0, 0, 14, 86, 65, 76, 85, 69, 95, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0, 0,
+ 0, 22,105,117,112, 95,109, 97,116, 95,118, 97,108,117,101, 95,101,100,105,116,
+ 95, 99, 98, 0, 2, 0, 0, 0, 12,109, 97,114,107,101,100,105,116, 95, 99, 98,
+ 0, 2, 0, 0, 0, 12, 77, 65, 82, 75, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0,
+ 0, 0, 20,105,117,112, 95,109, 97,116, 95,109, 97,114,107,101,100,105,116, 95,
+ 99, 98, 0, 2, 0, 0, 0, 8,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0,
+ 8, 77, 65, 82, 75, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97,
+116, 95,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,109,111,117,115,101,
+ 95, 99, 98, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 17,105,117,112, 95,109, 97,116, 95,109,111,117,115,101, 95, 99, 98, 0,
+ 2, 0, 0, 0, 8,102,111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 8, 70, 79,
+ 78, 84, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97,116, 95,102,
+111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 11,101,100,105,116,105,111,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 8,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0,
+ 14,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 13,
+101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 13,108,101,
+ 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,105, 99,
+107, 95, 99, 98, 0, 2, 0, 0, 0, 13,115, 99,114,111,108,108,116,111,112, 95,
+ 99, 98, 0, 2, 0, 0, 0, 9,118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,114,111,112, 99,
+104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 11,102,103, 99,111,108,111,114,
+ 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,103, 99,111,108,111,114, 95, 99, 98, 0,
+ 2, 0, 0, 0, 14,118, 97,108,117,101, 95,101,100,105,116, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/matrix_le64.lo");
+}
diff --git a/iup/srclua3/loh/matrix_le64w.loh b/iup/srclua3/loh/matrix_le64w.loh
new file mode 100755
index 0000000..ed95bb7
--- /dev/null
+++ b/iup/srclua3/loh/matrix_le64w.loh
@@ -0,0 +1,118 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luamatrix_le64w.lo");
+*/
+/* ../obj/iupluacontrols3/luamatrix_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64,108,117, 97,109, 97,
+116,114,105,120, 46,108,117, 97, 0, 0, 0, 1,148, 5, 0, 22, 1, 11, 1, 15,
+ 2, 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 15,
+ 0, 11, 7, 11, 8, 26, 11, 10, 25, 9, 15, 11, 11, 12, 15, 9, 26, 15, 13, 18,
+ 14, 11, 12, 15, 15, 26, 15, 13, 18, 16, 11, 12, 15, 17, 26, 15, 13, 11, 18, 22,
+ 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 13, 11, 21, 22, 2, 11, 22, 15, 23, 29,
+ 0, 2, 26, 15, 13, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 13, 11,
+ 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 13, 11, 30, 22, 2, 11, 31, 15,
+ 32, 29, 0, 2, 26, 15, 13, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15,
+ 13, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 13, 11, 39, 22, 2, 11,
+ 40, 15, 41, 29, 0, 2, 26, 15, 13, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2,
+ 26, 15, 13, 11, 45, 22, 2, 11, 46, 15, 47, 29, 0, 2, 26, 15, 13, 11, 48, 22,
+ 2, 11, 49, 15, 50, 29, 0, 2, 26, 15, 13, 11, 51, 22, 2, 11, 52, 15, 53, 29,
+ 0, 2, 26, 15, 13, 11, 54, 22, 2, 11, 55, 15, 56, 29, 0, 2, 26, 15, 13, 11,
+ 57, 22, 2, 11, 58, 15, 59, 29, 0, 2, 26, 15, 13, 11, 60, 22, 2, 11, 61, 15,
+ 62, 29, 0, 2, 26, 15, 13, 11, 63, 22, 2, 11, 64, 15, 65, 29, 0, 2, 26, 15,
+ 13, 11, 66, 15, 13, 18, 18, 26, 15, 13, 11, 67, 15, 13, 18, 21, 26, 15, 13, 11,
+ 68, 15, 13, 18, 24, 26, 15, 13, 11, 69, 15, 13, 18, 27, 26, 15, 13, 11, 70, 15,
+ 13, 18, 30, 26, 15, 13, 11, 71, 15, 13, 18, 33, 26, 15, 13, 11, 72, 15, 13, 18,
+ 36, 26, 15, 13, 11, 73, 15, 13, 18, 39, 26, 15, 13, 11, 74, 15, 13, 18, 42, 26,
+ 15, 13, 11, 75, 15, 13, 18, 45, 26, 15, 13, 11, 76, 15, 13, 18, 48, 26, 15, 13,
+ 11, 77, 15, 13, 18, 51, 26, 15, 13, 11, 78, 15, 13, 18, 54, 26, 0, 0, 0, 0,
+ 0, 0, 0, 0, 79, 2, 0, 0, 0, 10, 73, 85, 80, 77, 65, 84, 82, 73, 88, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68,
+ 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,
+101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 15, 64,108,117, 97,109,
+ 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2,
+ 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 77, 97,116,114,105,120, 0,
+ 2, 0, 0, 0, 8,115,101,116, 99,101,108,108, 0, 4, 0, 0, 0, 7, 0, 0,
+ 0, 15, 64,108,117, 97,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0,
+ 20, 8, 4, 15, 3, 13, 0, 13, 1, 11, 5, 42, 13, 2, 42, 13, 3, 2, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0,
+ 2, 99, 0, 2, 0, 0, 0, 4,118, 97,108, 0, 2, 0, 0, 0, 16, 73,117,112,
+ 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,
+108,102, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 8,103,101,116, 99,101,
+108,108, 0, 4, 0, 0, 0, 11, 0, 0, 0, 15, 64,108,117, 97,109, 97,116,114,
+105,120, 46,108,117, 97, 0, 0, 0, 0, 18, 8, 4, 15, 3, 13, 0, 13, 1, 11,
+ 5, 42, 13, 2, 42, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0,
+ 0, 2,108, 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,108, 0,
+ 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101,
+ 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0,
+ 0, 0, 10,105,117,112,109, 97,116,114,105,120, 0, 4, 0, 0, 0, 15, 0, 0,
+ 0, 15, 64,108,117, 97,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0,
+ 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, 77, 65, 84, 82,
+ 73, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 7,109, 97,116,114,105,120,
+ 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0,
+ 2, 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 18,105,
+117,112, 95,109, 97,116, 95, 97, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0,
+ 0, 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 21,105,117,112,
+ 95,109, 97,116, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0,
+ 0, 0, 8,101,100,105,116,105,111,110, 0, 2, 0, 0, 0, 11, 69, 68, 73, 84,
+ 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,
+101,100,105,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114,111,112,
+ 0, 2, 0, 0, 0, 8, 68, 82, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,
+117,112, 95,109, 97,116, 95,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 11,
+100,114,111,112,115,101,108,101, 99,116, 0, 2, 0, 0, 0, 14, 68, 82, 79, 80,
+ 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,109,
+ 97,116, 95,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0,
+ 0, 10,101,110,116,101,114,105,116,101,109, 0, 2, 0, 0, 0, 13, 69, 78, 84,
+ 69, 82, 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109,
+ 97,116, 95,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0,
+ 10,108,101, 97,118,101,105,116,101,109, 0, 2, 0, 0, 0, 13, 76, 69, 65, 86,
+ 69, 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,
+116, 95,108,101, 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 6,
+ 99,108,105, 99,107, 0, 2, 0, 0, 0, 9, 67, 76, 73, 67, 75, 95, 67, 66, 0,
+ 2, 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, 99,108,105, 99,107, 95, 99,
+ 98, 0, 2, 0, 0, 0, 10,115, 99,114,111,108,108,116,111,112, 0, 2, 0, 0,
+ 0, 13, 83, 67, 82, 79, 76, 76, 84, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 21,
+105,117,112, 95,109, 97,116, 95,115, 99,114,111,108,108,116,111,112, 95, 99, 98,
+ 0, 2, 0, 0, 0, 8,118, 97,108,117,101, 99, 98, 0, 2, 0, 0, 0, 9, 86,
+ 65, 76, 85, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,109, 97,116,
+ 95,118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114, 97,119, 0,
+ 2, 0, 0, 0, 8, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,
+112, 95,109, 97,116, 95,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,
+114,111,112, 99,104,101, 99,107, 0, 2, 0, 0, 0, 13, 68, 82, 79, 80, 67, 72,
+ 69, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, 95,
+100,114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 10,102,103,
+ 99,111,108,111,114, 99, 98, 0, 2, 0, 0, 0, 11, 70, 71, 67, 79, 76, 79, 82,
+ 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,102,103, 99,
+111,108,111,114, 95, 99, 98, 0, 2, 0, 0, 0, 10, 98,103, 99,111,108,111,114,
+ 99, 98, 0, 2, 0, 0, 0, 11, 66, 71, 67, 79, 76, 79, 82, 95, 67, 66, 0, 2,
+ 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95, 98,103, 99,111,108,111,114, 95,
+ 99, 98, 0, 2, 0, 0, 0, 11,118, 97,108,117,101, 95,101,100,105,116, 0, 2,
+ 0, 0, 0, 14, 86, 65, 76, 85, 69, 95, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0,
+ 0, 0, 22,105,117,112, 95,109, 97,116, 95,118, 97,108,117,101, 95,101,100,105,
+116, 95, 99, 98, 0, 2, 0, 0, 0, 12,109, 97,114,107,101,100,105,116, 95, 99,
+ 98, 0, 2, 0, 0, 0, 12, 77, 65, 82, 75, 69, 68, 73, 84, 95, 67, 66, 0, 2,
+ 0, 0, 0, 20,105,117,112, 95,109, 97,116, 95,109, 97,114,107,101,100,105,116,
+ 95, 99, 98, 0, 2, 0, 0, 0, 8,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8, 77, 65, 82, 75, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109,
+ 97,116, 95,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,109,111,117,115,
+101, 95, 99, 98, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 95, 67, 66, 0, 2,
+ 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95,109,111,117,115,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 11,101,100,105,116,105,111,110, 95, 99, 98, 0, 2, 0, 0,
+ 0, 8,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 14,100,114,111,112,115,
+101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 13,101,110,116,101,114,105,
+116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 13,108,101, 97,118,101,105,116,101,
+109, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,105, 99,107, 95, 99, 98, 0, 2,
+ 0, 0, 0, 13,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0, 2, 0, 0,
+ 0, 9,118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,100,114, 97,119,
+ 95, 99, 98, 0, 2, 0, 0, 0, 13,100,114,111,112, 99,104,101, 99,107, 95, 99,
+ 98, 0, 2, 0, 0, 0, 11,102,103, 99,111,108,111,114, 95, 99, 98, 0, 2, 0,
+ 0, 0, 11, 98,103, 99,111,108,111,114, 95, 99, 98, 0, 2, 0, 0, 0, 14,118,
+ 97,108,117,101, 95,101,100,105,116, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luamatrix_le64w.lo");
+}
diff --git a/iup/srclua3/loh/pplot.loh b/iup/srclua3/loh/pplot.loh
new file mode 100755
index 0000000..1a7aff0
--- /dev/null
+++ b/iup/srclua3/loh/pplot.loh
@@ -0,0 +1,68 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua_pplot3/pplot.lo");
+*/
+/* ../obj/iuplua_pplot3/pplot.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,112,112,108,111,116,
+ 46,108,117, 97, 0, 0, 0, 0,180, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25,
+ 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15,
+ 9, 18, 10, 11, 8, 15, 11, 26, 15, 9, 11, 12, 22, 2, 11, 13, 15, 14, 29, 0,
+ 2, 26, 15, 9, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 9, 11, 18,
+ 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 9, 11, 21, 22, 2, 11, 22, 15, 23,
+ 29, 0, 2, 26, 15, 9, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 9,
+ 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 9, 11, 30, 22, 2, 11, 31,
+ 15, 32, 29, 0, 2, 26, 15, 9, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26,
+ 15, 9, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 9, 11, 39, 22, 2,
+ 11, 40, 15, 41, 29, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2, 0, 0,
+ 0, 9, 73, 85, 80, 80, 80, 76, 79, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17,
+ 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 3, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0,
+ 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101,
+ 80, 80,108,111,116, 0, 2, 0, 0, 0, 9,105,117,112,112,112,108,111,116, 0,
+ 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 80,
+ 80, 76, 79, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,112,112,108,111,
+116, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115,
+ 0, 2, 0, 0, 0, 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 18,105,
+117,112, 95,112,112,108,111,116, 95,101,100,105,116, 95, 99, 98, 0, 2, 0, 0,
+ 0, 13,101,100,105,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,
+ 69, 68, 73, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,
+112, 95,112,112,108,111,116, 95,101,100,105,116, 98,101,103,105,110, 95, 99, 98,
+ 0, 2, 0, 0, 0, 11,101,100,105,116,101,110,100, 95, 99, 98, 0, 2, 0, 0,
+ 0, 11, 69, 68, 73, 84, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,
+112, 95,112,112,108,111,116, 95,101,100,105,116,101,110,100, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10, 83,
+ 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95,112,112,
+108,111,116, 95,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,115,
+101,108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 83,
+ 69, 76, 69, 67, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,
+117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,116, 98,101,103,105,110,
+ 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,101,110,100, 95, 99,
+ 98, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 69, 78, 68, 95, 67, 66, 0,
+ 2, 0, 0, 0, 23,105,117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,
+116,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,101,108,101,116,101, 95,
+ 99, 98, 0, 2, 0, 0, 0, 10, 68, 69, 76, 69, 84, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 20,105,117,112, 95,112,112,108,111,116, 95,100,101,108,101,116,101, 95,
+ 99, 98, 0, 2, 0, 0, 0, 15,100,101,108,101,116,101, 98,101,103,105,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 15, 68, 69, 76, 69, 84, 69, 66, 69, 71, 73, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95,112,112,108,111,116, 95,100,101,
+108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,101,
+108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 13, 68, 69, 76, 69,
+ 84, 69, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,112,112,
+108,111,116, 95,100,101,108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0,
+ 0, 11,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 11, 80, 82,
+ 69, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,112,112,
+108,111,116, 95,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12,
+112,111,115,116,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12, 80, 79, 83,
+ 84, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,112,112,
+108,111,116, 95,112,111,115,116,100,114, 97,119, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua_pplot3/pplot.lo");
+}
diff --git a/iup/srclua3/loh/pplot_be32.loh b/iup/srclua3/loh/pplot_be32.loh
new file mode 100755
index 0000000..37f3b47
--- /dev/null
+++ b/iup/srclua3/loh/pplot_be32.loh
@@ -0,0 +1,68 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua_pplot3/pplot_be32.lo");
+*/
+/* ../obj/iuplua_pplot3/pplot_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,112,112,108,111,116,
+ 46,108,117, 97, 0, 0, 0, 0,180, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25,
+ 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15,
+ 9, 18, 10, 11, 8, 15, 11, 26, 15, 9, 11, 12, 22, 2, 11, 13, 15, 14, 29, 0,
+ 2, 26, 15, 9, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 9, 11, 18,
+ 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 9, 11, 21, 22, 2, 11, 22, 15, 23,
+ 29, 0, 2, 26, 15, 9, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 9,
+ 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 9, 11, 30, 22, 2, 11, 31,
+ 15, 32, 29, 0, 2, 26, 15, 9, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26,
+ 15, 9, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 9, 11, 39, 22, 2,
+ 11, 40, 15, 41, 29, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2, 0, 0,
+ 0, 9, 73, 85, 80, 80, 80, 76, 79, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17,
+ 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 3, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0,
+ 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101,
+ 80, 80,108,111,116, 0, 2, 0, 0, 0, 9,105,117,112,112,112,108,111,116, 0,
+ 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 80,
+ 80, 76, 79, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,112,112,108,111,
+116, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115,
+ 0, 2, 0, 0, 0, 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 18,105,
+117,112, 95,112,112,108,111,116, 95,101,100,105,116, 95, 99, 98, 0, 2, 0, 0,
+ 0, 13,101,100,105,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,
+ 69, 68, 73, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,
+112, 95,112,112,108,111,116, 95,101,100,105,116, 98,101,103,105,110, 95, 99, 98,
+ 0, 2, 0, 0, 0, 11,101,100,105,116,101,110,100, 95, 99, 98, 0, 2, 0, 0,
+ 0, 11, 69, 68, 73, 84, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,
+112, 95,112,112,108,111,116, 95,101,100,105,116,101,110,100, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10, 83,
+ 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95,112,112,
+108,111,116, 95,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,115,
+101,108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 83,
+ 69, 76, 69, 67, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,
+117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,116, 98,101,103,105,110,
+ 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,101,110,100, 95, 99,
+ 98, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 69, 78, 68, 95, 67, 66, 0,
+ 2, 0, 0, 0, 23,105,117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,
+116,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,101,108,101,116,101, 95,
+ 99, 98, 0, 2, 0, 0, 0, 10, 68, 69, 76, 69, 84, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 20,105,117,112, 95,112,112,108,111,116, 95,100,101,108,101,116,101, 95,
+ 99, 98, 0, 2, 0, 0, 0, 15,100,101,108,101,116,101, 98,101,103,105,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 15, 68, 69, 76, 69, 84, 69, 66, 69, 71, 73, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95,112,112,108,111,116, 95,100,101,
+108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,101,
+108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 13, 68, 69, 76, 69,
+ 84, 69, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,112,112,
+108,111,116, 95,100,101,108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0,
+ 0, 11,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 11, 80, 82,
+ 69, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,112,112,
+108,111,116, 95,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12,
+112,111,115,116,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12, 80, 79, 83,
+ 84, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,112,112,
+108,111,116, 95,112,111,115,116,100,114, 97,119, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua_pplot3/pplot_be32.lo");
+}
diff --git a/iup/srclua3/loh/pplot_be64.loh b/iup/srclua3/loh/pplot_be64.loh
new file mode 100755
index 0000000..893c368
--- /dev/null
+++ b/iup/srclua3/loh/pplot_be64.loh
@@ -0,0 +1,68 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua_pplot3/pplot_be64.lo");
+*/
+/* ../obj/iuplua_pplot3/pplot_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,112,112,108,111,116,
+ 46,108,117, 97, 0, 0, 0, 0,180, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25,
+ 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15,
+ 9, 18, 10, 11, 8, 15, 11, 26, 15, 9, 11, 12, 22, 2, 11, 13, 15, 14, 29, 0,
+ 2, 26, 15, 9, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 9, 11, 18,
+ 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 9, 11, 21, 22, 2, 11, 22, 15, 23,
+ 29, 0, 2, 26, 15, 9, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 9,
+ 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 9, 11, 30, 22, 2, 11, 31,
+ 15, 32, 29, 0, 2, 26, 15, 9, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26,
+ 15, 9, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 9, 11, 39, 22, 2,
+ 11, 40, 15, 41, 29, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2, 0, 0,
+ 0, 9, 73, 85, 80, 80, 80, 76, 79, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17,
+ 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 3, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0,
+ 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101,
+ 80, 80,108,111,116, 0, 2, 0, 0, 0, 9,105,117,112,112,112,108,111,116, 0,
+ 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 80,
+ 80, 76, 79, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,112,112,108,111,
+116, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115,
+ 0, 2, 0, 0, 0, 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 18,105,
+117,112, 95,112,112,108,111,116, 95,101,100,105,116, 95, 99, 98, 0, 2, 0, 0,
+ 0, 13,101,100,105,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,
+ 69, 68, 73, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,
+112, 95,112,112,108,111,116, 95,101,100,105,116, 98,101,103,105,110, 95, 99, 98,
+ 0, 2, 0, 0, 0, 11,101,100,105,116,101,110,100, 95, 99, 98, 0, 2, 0, 0,
+ 0, 11, 69, 68, 73, 84, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,
+112, 95,112,112,108,111,116, 95,101,100,105,116,101,110,100, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10, 83,
+ 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95,112,112,
+108,111,116, 95,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,115,
+101,108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 83,
+ 69, 76, 69, 67, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,
+117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,116, 98,101,103,105,110,
+ 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,101,110,100, 95, 99,
+ 98, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 69, 78, 68, 95, 67, 66, 0,
+ 2, 0, 0, 0, 23,105,117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,
+116,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,101,108,101,116,101, 95,
+ 99, 98, 0, 2, 0, 0, 0, 10, 68, 69, 76, 69, 84, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 20,105,117,112, 95,112,112,108,111,116, 95,100,101,108,101,116,101, 95,
+ 99, 98, 0, 2, 0, 0, 0, 15,100,101,108,101,116,101, 98,101,103,105,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 15, 68, 69, 76, 69, 84, 69, 66, 69, 71, 73, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95,112,112,108,111,116, 95,100,101,
+108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,101,
+108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 13, 68, 69, 76, 69,
+ 84, 69, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,112,112,
+108,111,116, 95,100,101,108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0,
+ 0, 11,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 11, 80, 82,
+ 69, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,112,112,
+108,111,116, 95,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12,
+112,111,115,116,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12, 80, 79, 83,
+ 84, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,112,112,
+108,111,116, 95,112,111,115,116,100,114, 97,119, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua_pplot3/pplot_be64.lo");
+}
diff --git a/iup/srclua3/loh/pplot_le64.loh b/iup/srclua3/loh/pplot_le64.loh
new file mode 100755
index 0000000..05a718d
--- /dev/null
+++ b/iup/srclua3/loh/pplot_le64.loh
@@ -0,0 +1,68 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua_pplot3/pplot_le64.lo");
+*/
+/* ../obj/iuplua_pplot3/pplot_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,112,112,108,111,116,
+ 46,108,117, 97, 0, 0, 0, 0,180, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25,
+ 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15,
+ 9, 18, 10, 11, 8, 15, 11, 26, 15, 9, 11, 12, 22, 2, 11, 13, 15, 14, 29, 0,
+ 2, 26, 15, 9, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 9, 11, 18,
+ 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 9, 11, 21, 22, 2, 11, 22, 15, 23,
+ 29, 0, 2, 26, 15, 9, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 9,
+ 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 9, 11, 30, 22, 2, 11, 31,
+ 15, 32, 29, 0, 2, 26, 15, 9, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26,
+ 15, 9, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 9, 11, 39, 22, 2,
+ 11, 40, 15, 41, 29, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2, 0, 0,
+ 0, 9, 73, 85, 80, 80, 80, 76, 79, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17,
+ 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 3, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0,
+ 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101,
+ 80, 80,108,111,116, 0, 2, 0, 0, 0, 9,105,117,112,112,112,108,111,116, 0,
+ 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0,
+ 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 80,
+ 80, 76, 79, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,112,112,108,111,
+116, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115,
+ 0, 2, 0, 0, 0, 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 18,105,
+117,112, 95,112,112,108,111,116, 95,101,100,105,116, 95, 99, 98, 0, 2, 0, 0,
+ 0, 13,101,100,105,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,
+ 69, 68, 73, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,
+112, 95,112,112,108,111,116, 95,101,100,105,116, 98,101,103,105,110, 95, 99, 98,
+ 0, 2, 0, 0, 0, 11,101,100,105,116,101,110,100, 95, 99, 98, 0, 2, 0, 0,
+ 0, 11, 69, 68, 73, 84, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,
+112, 95,112,112,108,111,116, 95,101,100,105,116,101,110,100, 95, 99, 98, 0, 2,
+ 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10, 83,
+ 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95,112,112,
+108,111,116, 95,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,115,
+101,108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 83,
+ 69, 76, 69, 67, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,
+117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,116, 98,101,103,105,110,
+ 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,101,110,100, 95, 99,
+ 98, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 69, 78, 68, 95, 67, 66, 0,
+ 2, 0, 0, 0, 23,105,117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,
+116,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,101,108,101,116,101, 95,
+ 99, 98, 0, 2, 0, 0, 0, 10, 68, 69, 76, 69, 84, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 20,105,117,112, 95,112,112,108,111,116, 95,100,101,108,101,116,101, 95,
+ 99, 98, 0, 2, 0, 0, 0, 15,100,101,108,101,116,101, 98,101,103,105,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 15, 68, 69, 76, 69, 84, 69, 66, 69, 71, 73, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95,112,112,108,111,116, 95,100,101,
+108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,101,
+108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 13, 68, 69, 76, 69,
+ 84, 69, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,112,112,
+108,111,116, 95,100,101,108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0,
+ 0, 11,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 11, 80, 82,
+ 69, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,112,112,
+108,111,116, 95,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12,
+112,111,115,116,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12, 80, 79, 83,
+ 84, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,112,112,
+108,111,116, 95,112,111,115,116,100,114, 97,119, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua_pplot3/pplot_le64.lo");
+}
diff --git a/iup/srclua3/loh/pplot_le64w.loh b/iup/srclua3/loh/pplot_le64w.loh
new file mode 100755
index 0000000..fc37ccc
--- /dev/null
+++ b/iup/srclua3/loh/pplot_le64w.loh
@@ -0,0 +1,69 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua_pplot3/luapplot_le64w.lo");
+*/
+/* ../obj/iuplua_pplot3/luapplot_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97,112,112,
+108,111,116, 46,108,117, 97, 0, 0, 0, 0,180, 5, 0, 22, 1, 11, 1, 15, 2,
+ 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15,
+ 5, 26, 15, 9, 18, 10, 11, 8, 15, 11, 26, 15, 9, 11, 12, 22, 2, 11, 13, 15,
+ 14, 29, 0, 2, 26, 15, 9, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15,
+ 9, 11, 18, 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 9, 11, 21, 22, 2, 11,
+ 22, 15, 23, 29, 0, 2, 26, 15, 9, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2,
+ 26, 15, 9, 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 9, 11, 30, 22,
+ 2, 11, 31, 15, 32, 29, 0, 2, 26, 15, 9, 11, 33, 22, 2, 11, 34, 15, 35, 29,
+ 0, 2, 26, 15, 9, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 9, 11,
+ 39, 22, 2, 11, 40, 15, 41, 29, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 42,
+ 2, 0, 0, 0, 9, 73, 85, 80, 80, 80, 76, 79, 84, 0, 2, 0, 0, 0, 7,112,
+ 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0,
+ 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0,
+ 4, 0, 0, 0, 3, 0, 0, 0, 14, 64,108,117, 97,112,112,108,111,116, 46,108,
+117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112,
+ 67,114,101, 97,116,101, 80, 80,108,111,116, 0, 2, 0, 0, 0, 9,105,117,112,
+112,112,108,111,116, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64,108,117, 97,112,
+112,108,111,116, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13,
+ 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0,
+ 2, 0, 0, 0, 9, 73, 85, 80, 80, 80, 76, 79, 84, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0,
+ 2, 0, 0, 0, 6,112,112,108,111,116, 0, 2, 0, 0, 0, 14,105,117,112, 95,
+ 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 8,101,100,105,116, 95,
+ 99, 98, 0, 2, 0, 0, 0, 18,105,117,112, 95,112,112,108,111,116, 95,101,100,
+105,116, 95, 99, 98, 0, 2, 0, 0, 0, 13,101,100,105,116, 98,101,103,105,110,
+ 95, 99, 98, 0, 2, 0, 0, 0, 13, 69, 68, 73, 84, 66, 69, 71, 73, 78, 95, 67,
+ 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,112,112,108,111,116, 95,101,100,105,
+116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 11,101,100,105,116,101,
+110,100, 95, 99, 98, 0, 2, 0, 0, 0, 11, 69, 68, 73, 84, 69, 78, 68, 95, 67,
+ 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,112,112,108,111,116, 95,101,100,105,
+116,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 10,115,101,108,101, 99,116, 95,
+ 99, 98, 0, 2, 0, 0, 0, 10, 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0,
+ 0, 0, 20,105,117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,116, 95,
+ 99, 98, 0, 2, 0, 0, 0, 15,115,101,108,101, 99,116, 98,101,103,105,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 15, 83, 69, 76, 69, 67, 84, 66, 69, 71, 73, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95,112,112,108,111,116, 95,115,101,
+108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,
+108,101, 99,116,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69,
+ 67, 84, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,112,112,
+108,111,116, 95,115,101,108,101, 99,116,101,110,100, 95, 99, 98, 0, 2, 0, 0,
+ 0, 10,100,101,108,101,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 10, 68, 69, 76,
+ 69, 84, 69, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95,112,112,108,111,
+116, 95,100,101,108,101,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 15,100,101,108,
+101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 68, 69, 76,
+ 69, 84, 69, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117,112,
+ 95,112,112,108,111,116, 95,100,101,108,101,116,101, 98,101,103,105,110, 95, 99,
+ 98, 0, 2, 0, 0, 0, 13,100,101,108,101,116,101,101,110,100, 95, 99, 98, 0,
+ 2, 0, 0, 0, 13, 68, 69, 76, 69, 84, 69, 69, 78, 68, 95, 67, 66, 0, 2, 0,
+ 0, 0, 23,105,117,112, 95,112,112,108,111,116, 95,100,101,108,101,116,101,101,
+110,100, 95, 99, 98, 0, 2, 0, 0, 0, 11,112,114,101,100,114, 97,119, 95, 99,
+ 98, 0, 2, 0, 0, 0, 11, 80, 82, 69, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0,
+ 0, 0, 21,105,117,112, 95,112,112,108,111,116, 95,112,114,101,100,114, 97,119,
+ 95, 99, 98, 0, 2, 0, 0, 0, 12,112,111,115,116,100,114, 97,119, 95, 99, 98,
+ 0, 2, 0, 0, 0, 12, 80, 79, 83, 84, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0,
+ 0, 0, 22,105,117,112, 95,112,112,108,111,116, 95,112,111,115,116,100,114, 97,
+119, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua_pplot3/luapplot_le64w.lo");
+}
diff --git a/iup/srclua3/loh/sbox.loh b/iup/srclua3/loh/sbox.loh
new file mode 100755
index 0000000..4a5af85
--- /dev/null
+++ b/iup/srclua3/loh/sbox.loh
@@ -0,0 +1,27 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/sbox.lo");
+*/
+/* ../obj/iuplua3/sbox.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115, 98,111,120, 46,
+108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 0, 0,
+ 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68,
+ 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,
+101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,115, 98,111,120,
+ 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2,
+ 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83, 98,111,120, 0, 2, 0,
+ 0, 0, 8,105,117,112,115, 98,111,120, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10,
+ 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2,
+ 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111,
+ 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0,
+ 2, 0, 0, 0, 5,115, 98,111,120, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/sbox.lo");
+}
diff --git a/iup/srclua3/loh/sbox_be32.loh b/iup/srclua3/loh/sbox_be32.loh
new file mode 100755
index 0000000..5b50619
--- /dev/null
+++ b/iup/srclua3/loh/sbox_be32.loh
@@ -0,0 +1,27 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/sbox_be32.lo");
+*/
+/* ../obj/iuplua3/sbox_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115, 98,111,120, 46,
+108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 0, 0,
+ 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68,
+ 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,
+101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,115, 98,111,120,
+ 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2,
+ 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83, 98,111,120, 0, 2, 0,
+ 0, 0, 8,105,117,112,115, 98,111,120, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10,
+ 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2,
+ 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111,
+ 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0,
+ 2, 0, 0, 0, 5,115, 98,111,120, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/sbox_be32.lo");
+}
diff --git a/iup/srclua3/loh/sbox_be64.loh b/iup/srclua3/loh/sbox_be64.loh
new file mode 100755
index 0000000..eddb0ff
--- /dev/null
+++ b/iup/srclua3/loh/sbox_be64.loh
@@ -0,0 +1,27 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/sbox_be64.lo");
+*/
+/* ../obj/iuplua3/sbox_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115, 98,111,120, 46,
+108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 0, 0,
+ 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68,
+ 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,
+101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,115, 98,111,120,
+ 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2,
+ 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83, 98,111,120, 0, 2, 0,
+ 0, 0, 8,105,117,112,115, 98,111,120, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10,
+ 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2,
+ 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111,
+ 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0,
+ 2, 0, 0, 0, 5,115, 98,111,120, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/sbox_be64.lo");
+}
diff --git a/iup/srclua3/loh/sbox_le64.loh b/iup/srclua3/loh/sbox_le64.loh
new file mode 100755
index 0000000..089ccc2
--- /dev/null
+++ b/iup/srclua3/loh/sbox_le64.loh
@@ -0,0 +1,27 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/sbox_le64.lo");
+*/
+/* ../obj/iuplua3/sbox_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115, 98,111,120, 46,
+108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 0, 0,
+ 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0,
+ 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68,
+ 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,
+101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,115, 98,111,120,
+ 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2,
+ 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83, 98,111,120, 0, 2, 0,
+ 0, 0, 8,105,117,112,115, 98,111,120, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10,
+ 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2,
+ 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111,
+ 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0,
+ 2, 0, 0, 0, 5,115, 98,111,120, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/sbox_le64.lo");
+}
diff --git a/iup/srclua3/loh/sbox_le64w.loh b/iup/srclua3/loh/sbox_le64w.loh
new file mode 100755
index 0000000..cc44ebb
--- /dev/null
+++ b/iup/srclua3/loh/sbox_le64w.loh
@@ -0,0 +1,27 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luasbox_le64w.lo");
+*/
+/* ../obj/iupluacontrols3/luasbox_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,115, 98,
+111,120, 46,108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, 30,
+ 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66,
+ 79, 88, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7,
+ 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85,
+ 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 13, 64,108,
+117, 97,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13,
+ 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
+ 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83,
+ 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,115, 98,111,120, 0, 4, 0, 0,
+ 0, 7, 0, 0, 0, 13, 64,108,117, 97,115, 98,111,120, 46,108,117, 97, 0, 0,
+ 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66,
+ 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0,
+ 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,115, 98,111,120, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luasbox_le64w.lo");
+}
diff --git a/iup/srclua3/loh/spin.loh b/iup/srclua3/loh/spin.loh
new file mode 100755
index 0000000..cd4cc02
--- /dev/null
+++ b/iup/srclua3/loh/spin.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/spin.lo");
+*/
+/* ../obj/iuplua3/spin.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115,112,105,110, 46,
+108,117, 97, 0, 0, 0, 0, 82, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 22, 1,
+ 11, 1, 15, 2, 30, 0, 25, 9, 15, 9, 11, 3, 11, 10, 26, 11, 12, 25, 11, 15,
+ 7, 11, 13, 15, 11, 26, 15, 14, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26,
+ 15, 14, 11, 18, 15, 14, 18, 15, 26, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 0,
+ 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, 2, 0, 0, 0, 7,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17,
+ 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 3, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 8,
+ 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
+ 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83,
+112,105,110, 0, 2, 0, 0, 0, 8,105,117,112,115,112,105,110, 0, 4, 0, 0,
+ 0, 7, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 12,
+ 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,115,112,105,110, 0, 2, 0, 0, 0,
+ 11, 73, 85, 80, 83, 80, 73, 78, 66, 79, 88, 0, 4, 0, 0, 0, 14, 0, 0, 0,
+ 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13,
+ 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
+ 4,111, 98,106, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, 83,
+112,105,110, 98,111,120, 0, 2, 0, 0, 0, 11,105,117,112,115,112,105,110, 98,
+111,120, 0, 4, 0, 0, 0, 18, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117,
+ 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 83, 80, 73, 78, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,
+117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,112,105,110, 98,111,120, 0, 2,
+ 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0,
+ 0, 0, 7,115,112,105,110, 99, 98, 0, 2, 0, 0, 0, 8, 83, 80, 73, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,112,105,110, 95, 99, 98, 0,
+ 2, 0, 0, 0, 8,115,112,105,110, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/spin.lo");
+}
diff --git a/iup/srclua3/loh/spin_be32.loh b/iup/srclua3/loh/spin_be32.loh
new file mode 100755
index 0000000..9e1f9e4
--- /dev/null
+++ b/iup/srclua3/loh/spin_be32.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/spin_be32.lo");
+*/
+/* ../obj/iuplua3/spin_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115,112,105,110, 46,
+108,117, 97, 0, 0, 0, 0, 82, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 22, 1,
+ 11, 1, 15, 2, 30, 0, 25, 9, 15, 9, 11, 3, 11, 10, 26, 11, 12, 25, 11, 15,
+ 7, 11, 13, 15, 11, 26, 15, 14, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26,
+ 15, 14, 11, 18, 15, 14, 18, 15, 26, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 0,
+ 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, 2, 0, 0, 0, 7,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17,
+ 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 3, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 8,
+ 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
+ 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83,
+112,105,110, 0, 2, 0, 0, 0, 8,105,117,112,115,112,105,110, 0, 4, 0, 0,
+ 0, 7, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 12,
+ 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,115,112,105,110, 0, 2, 0, 0, 0,
+ 11, 73, 85, 80, 83, 80, 73, 78, 66, 79, 88, 0, 4, 0, 0, 0, 14, 0, 0, 0,
+ 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13,
+ 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
+ 4,111, 98,106, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, 83,
+112,105,110, 98,111,120, 0, 2, 0, 0, 0, 11,105,117,112,115,112,105,110, 98,
+111,120, 0, 4, 0, 0, 0, 18, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117,
+ 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 83, 80, 73, 78, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,
+117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,112,105,110, 98,111,120, 0, 2,
+ 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0,
+ 0, 0, 7,115,112,105,110, 99, 98, 0, 2, 0, 0, 0, 8, 83, 80, 73, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,112,105,110, 95, 99, 98, 0,
+ 2, 0, 0, 0, 8,115,112,105,110, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/spin_be32.lo");
+}
diff --git a/iup/srclua3/loh/spin_be64.loh b/iup/srclua3/loh/spin_be64.loh
new file mode 100755
index 0000000..12af7ac
--- /dev/null
+++ b/iup/srclua3/loh/spin_be64.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/spin_be64.lo");
+*/
+/* ../obj/iuplua3/spin_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115,112,105,110, 46,
+108,117, 97, 0, 0, 0, 0, 82, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 22, 1,
+ 11, 1, 15, 2, 30, 0, 25, 9, 15, 9, 11, 3, 11, 10, 26, 11, 12, 25, 11, 15,
+ 7, 11, 13, 15, 11, 26, 15, 14, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26,
+ 15, 14, 11, 18, 15, 14, 18, 15, 26, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 0,
+ 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, 2, 0, 0, 0, 7,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17,
+ 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 3, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 8,
+ 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
+ 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83,
+112,105,110, 0, 2, 0, 0, 0, 8,105,117,112,115,112,105,110, 0, 4, 0, 0,
+ 0, 7, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 12,
+ 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,115,112,105,110, 0, 2, 0, 0, 0,
+ 11, 73, 85, 80, 83, 80, 73, 78, 66, 79, 88, 0, 4, 0, 0, 0, 14, 0, 0, 0,
+ 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13,
+ 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
+ 4,111, 98,106, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, 83,
+112,105,110, 98,111,120, 0, 2, 0, 0, 0, 11,105,117,112,115,112,105,110, 98,
+111,120, 0, 4, 0, 0, 0, 18, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117,
+ 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 83, 80, 73, 78, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,
+117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,112,105,110, 98,111,120, 0, 2,
+ 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0,
+ 0, 0, 7,115,112,105,110, 99, 98, 0, 2, 0, 0, 0, 8, 83, 80, 73, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,112,105,110, 95, 99, 98, 0,
+ 2, 0, 0, 0, 8,115,112,105,110, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/spin_be64.lo");
+}
diff --git a/iup/srclua3/loh/spin_le64.loh b/iup/srclua3/loh/spin_le64.loh
new file mode 100755
index 0000000..1e7aea7
--- /dev/null
+++ b/iup/srclua3/loh/spin_le64.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/spin_le64.lo");
+*/
+/* ../obj/iuplua3/spin_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115,112,105,110, 46,
+108,117, 97, 0, 0, 0, 0, 82, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 22, 1,
+ 11, 1, 15, 2, 30, 0, 25, 9, 15, 9, 11, 3, 11, 10, 26, 11, 12, 25, 11, 15,
+ 7, 11, 13, 15, 11, 26, 15, 14, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26,
+ 15, 14, 11, 18, 15, 14, 18, 15, 26, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 0,
+ 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, 2, 0, 0, 0, 7,112, 97,114,101,
+110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17,
+ 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 3, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 8,
+ 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
+ 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83,
+112,105,110, 0, 2, 0, 0, 0, 8,105,117,112,115,112,105,110, 0, 4, 0, 0,
+ 0, 7, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 12,
+ 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,115,112,105,110, 0, 2, 0, 0, 0,
+ 11, 73, 85, 80, 83, 80, 73, 78, 66, 79, 88, 0, 4, 0, 0, 0, 14, 0, 0, 0,
+ 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13,
+ 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
+ 4,111, 98,106, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, 83,
+112,105,110, 98,111,120, 0, 2, 0, 0, 0, 11,105,117,112,115,112,105,110, 98,
+111,120, 0, 4, 0, 0, 0, 18, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117,
+ 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85,
+ 80, 83, 80, 73, 78, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,
+117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,112,105,110, 98,111,120, 0, 2,
+ 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0,
+ 0, 0, 7,115,112,105,110, 99, 98, 0, 2, 0, 0, 0, 8, 83, 80, 73, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,112,105,110, 95, 99, 98, 0,
+ 2, 0, 0, 0, 8,115,112,105,110, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/spin_le64.lo");
+}
diff --git a/iup/srclua3/loh/spin_le64w.loh b/iup/srclua3/loh/spin_le64w.loh
new file mode 100755
index 0000000..de49021
--- /dev/null
+++ b/iup/srclua3/loh/spin_le64w.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luaspin_le64w.lo");
+*/
+/* ../obj/iupluacontrols3/luaspin_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,115,112,
+105,110, 46,108,117, 97, 0, 0, 0, 0, 82, 5, 0, 22, 1, 11, 1, 15, 2, 30,
+ 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5,
+ 26, 22, 1, 11, 1, 15, 2, 30, 0, 25, 9, 15, 9, 11, 3, 11, 10, 26, 11, 12,
+ 25, 11, 15, 7, 11, 13, 15, 11, 26, 15, 14, 11, 15, 22, 2, 11, 16, 15, 17, 29,
+ 0, 2, 26, 15, 14, 11, 18, 15, 14, 18, 15, 26, 0, 0, 0, 0, 0, 0, 0, 0,
+ 19, 2, 0, 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, 2, 0, 0, 0, 7,112,
+ 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0,
+ 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0,
+ 4, 0, 0, 0, 3, 0, 0, 0, 13, 64,108,117, 97,115,112,105,110, 46,108,117,
+ 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,
+114,101, 97,116,101, 83,112,105,110, 0, 2, 0, 0, 0, 8,105,117,112,115,112,
+105,110, 0, 4, 0, 0, 0, 7, 0, 0, 0, 13, 64,108,117, 97,115,112,105,110,
+ 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0,
+ 8, 73, 85, 80, 83, 80, 73, 78, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,
+117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,
+115,112,105,110, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 80, 73, 78, 66, 79, 88,
+ 0, 4, 0, 0, 0, 14, 0, 0, 0, 13, 64,108,117, 97,115,112,105,110, 46,108,
+117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0,
+ 0, 17,105,117,112, 67,114,101, 97,116,101, 83,112,105,110, 98,111,120, 0, 2,
+ 0, 0, 0, 11,105,117,112,115,112,105,110, 98,111,120, 0, 4, 0, 0, 0, 18,
+ 0, 0, 0, 13, 64,108,117, 97,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0,
+ 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 80, 73, 78,
+ 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114,
+ 0, 2, 0, 0, 0, 8,115,112,105,110, 98,111,120, 0, 2, 0, 0, 0, 14,105,
+117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 7,115,112,
+105,110, 99, 98, 0, 2, 0, 0, 0, 8, 83, 80, 73, 78, 95, 67, 66, 0, 2, 0,
+ 0, 0, 12,105,117,112, 95,115,112,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 8,
+115,112,105,110, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luaspin_le64w.lo");
+}
diff --git a/iup/srclua3/loh/tabs.loh b/iup/srclua3/loh/tabs.loh
new file mode 100755
index 0000000..86c4ab0
--- /dev/null
+++ b/iup/srclua3/loh/tabs.loh
@@ -0,0 +1,33 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/tabs.lo");
+*/
+/* ../obj/iuplua3/tabs.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116, 97, 98,115, 46,
+108,117, 97, 0, 0, 0, 0, 54, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9,
+ 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 15, 9, 18, 10,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 8, 73, 85, 80, 84, 65,
+ 66, 83, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7,
+ 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85,
+ 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,116,
+ 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 17, 6, 2, 15, 1, 13, 1, 15, 2,
+ 13, 1, 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101,
+ 84, 97, 98,115, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, 2, 0, 0, 0, 8,
+105,117,112,116, 97, 98,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10, 64,116, 97,
+ 98,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 8, 73, 85, 80, 84, 65, 66, 83, 0, 2, 0, 0, 0, 12, 67,111,110,115,
+116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0,
+ 0, 5,116, 97, 98,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108,
+ 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,116, 97, 98, 99,104, 97,110,103,101,
+ 0, 2, 0, 0, 0, 13, 84, 65, 66, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2,
+ 0, 0, 0, 17,105,117,112, 95,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 13,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/tabs.lo");
+}
diff --git a/iup/srclua3/loh/tabs_be32.loh b/iup/srclua3/loh/tabs_be32.loh
new file mode 100755
index 0000000..4eb4b83
--- /dev/null
+++ b/iup/srclua3/loh/tabs_be32.loh
@@ -0,0 +1,33 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/tabs_be32.lo");
+*/
+/* ../obj/iuplua3/tabs_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116, 97, 98,115, 46,
+108,117, 97, 0, 0, 0, 0, 54, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9,
+ 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 15, 9, 18, 10,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 8, 73, 85, 80, 84, 65,
+ 66, 83, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7,
+ 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85,
+ 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,116,
+ 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 17, 6, 2, 15, 1, 13, 1, 15, 2,
+ 13, 1, 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101,
+ 84, 97, 98,115, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, 2, 0, 0, 0, 8,
+105,117,112,116, 97, 98,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10, 64,116, 97,
+ 98,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 8, 73, 85, 80, 84, 65, 66, 83, 0, 2, 0, 0, 0, 12, 67,111,110,115,
+116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0,
+ 0, 5,116, 97, 98,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108,
+ 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,116, 97, 98, 99,104, 97,110,103,101,
+ 0, 2, 0, 0, 0, 13, 84, 65, 66, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2,
+ 0, 0, 0, 17,105,117,112, 95,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 13,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/tabs_be32.lo");
+}
diff --git a/iup/srclua3/loh/tabs_be64.loh b/iup/srclua3/loh/tabs_be64.loh
new file mode 100755
index 0000000..c4ada05
--- /dev/null
+++ b/iup/srclua3/loh/tabs_be64.loh
@@ -0,0 +1,33 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/tabs_be64.lo");
+*/
+/* ../obj/iuplua3/tabs_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116, 97, 98,115, 46,
+108,117, 97, 0, 0, 0, 0, 54, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9,
+ 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 15, 9, 18, 10,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 8, 73, 85, 80, 84, 65,
+ 66, 83, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7,
+ 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85,
+ 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,116,
+ 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 17, 6, 2, 15, 1, 13, 1, 15, 2,
+ 13, 1, 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101,
+ 84, 97, 98,115, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, 2, 0, 0, 0, 8,
+105,117,112,116, 97, 98,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10, 64,116, 97,
+ 98,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 8, 73, 85, 80, 84, 65, 66, 83, 0, 2, 0, 0, 0, 12, 67,111,110,115,
+116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0,
+ 0, 5,116, 97, 98,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108,
+ 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,116, 97, 98, 99,104, 97,110,103,101,
+ 0, 2, 0, 0, 0, 13, 84, 65, 66, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2,
+ 0, 0, 0, 17,105,117,112, 95,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 13,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/tabs_be64.lo");
+}
diff --git a/iup/srclua3/loh/tabs_le64.loh b/iup/srclua3/loh/tabs_le64.loh
new file mode 100755
index 0000000..7a4c6b1
--- /dev/null
+++ b/iup/srclua3/loh/tabs_le64.loh
@@ -0,0 +1,33 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/tabs_le64.lo");
+*/
+/* ../obj/iuplua3/tabs_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116, 97, 98,115, 46,
+108,117, 97, 0, 0, 0, 0, 54, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9,
+ 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 15, 9, 18, 10,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 8, 73, 85, 80, 84, 65,
+ 66, 83, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7,
+ 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85,
+ 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,116,
+ 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 17, 6, 2, 15, 1, 13, 1, 15, 2,
+ 13, 1, 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101,
+ 84, 97, 98,115, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, 2, 0, 0, 0, 8,
+105,117,112,116, 97, 98,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10, 64,116, 97,
+ 98,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3,
+ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0,
+ 0, 0, 8, 73, 85, 80, 84, 65, 66, 83, 0, 2, 0, 0, 0, 12, 67,111,110,115,
+116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0,
+ 0, 5,116, 97, 98,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108,
+ 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,116, 97, 98, 99,104, 97,110,103,101,
+ 0, 2, 0, 0, 0, 13, 84, 65, 66, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2,
+ 0, 0, 0, 17,105,117,112, 95,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 13,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/tabs_le64.lo");
+}
diff --git a/iup/srclua3/loh/tabs_le64w.loh b/iup/srclua3/loh/tabs_le64w.loh
new file mode 100755
index 0000000..24a87dc
--- /dev/null
+++ b/iup/srclua3/loh/tabs_le64w.loh
@@ -0,0 +1,34 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luatabs_le64w.lo");
+*/
+/* ../obj/iupluacontrols3/luatabs_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,116, 97,
+ 98,115, 46,108,117, 97, 0, 0, 0, 0, 54, 5, 0, 22, 1, 11, 1, 15, 2, 30,
+ 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5,
+ 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 15,
+ 9, 18, 10, 26, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 8, 73, 85,
+ 80, 84, 65, 66, 83, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0,
+ 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,
+101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0,
+ 13, 64,108,117, 97,116, 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 17, 6, 2,
+ 15, 1, 13, 1, 15, 2, 13, 1, 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112,
+ 67,114,101, 97,116,101, 84, 97, 98,115, 0, 2, 0, 0, 0, 5,103,101,116,110,
+ 0, 2, 0, 0, 0, 8,105,117,112,116, 97, 98,115, 0, 4, 0, 0, 0, 7, 0,
+ 0, 0, 13, 64,108,117, 97,116, 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 12,
+ 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 65, 66, 83, 0,
+ 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0,
+ 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,116, 97, 98,115, 0, 2, 0, 0, 0,
+ 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,
+116, 97, 98, 99,104, 97,110,103,101, 0, 2, 0, 0, 0, 13, 84, 65, 66, 67, 72,
+ 65, 78, 71, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,116, 97, 98,
+ 99,104, 97,110,103,101, 95, 99, 98, 0, 2, 0, 0, 0, 13,116, 97, 98, 99,104,
+ 97,110,103,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luatabs_le64w.lo");
+}
diff --git a/iup/srclua3/loh/tree.loh b/iup/srclua3/loh/tree.loh
new file mode 100755
index 0000000..f3af92c
--- /dev/null
+++ b/iup/srclua3/loh/tree.loh
@@ -0,0 +1,115 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/tree.lo");
+*/
+/* ../obj/iupluacontrols3/tree.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116,114,101,101, 46,
+108,117, 97, 0, 0, 0, 1, 24, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 22, 0, 25, 3, 15, 0, 11, 4, 11, 5, 26, 11, 7, 25, 6, 15, 8, 11, 9, 15,
+ 6, 26, 11, 11, 25, 10, 11, 13, 25, 12, 15, 8, 11, 12, 15, 12, 26, 15, 14, 11,
+ 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 14, 11, 18, 22, 2, 11, 19, 15,
+ 20, 29, 0, 2, 26, 15, 14, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26, 15,
+ 14, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 14, 11, 27, 22, 2, 11,
+ 28, 15, 29, 29, 0, 2, 26, 15, 14, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0, 2,
+ 26, 15, 14, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 14, 11, 36, 22,
+ 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 14, 11, 39, 22, 2, 11, 40, 15, 41, 29,
+ 0, 2, 26, 15, 14, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 14, 11,
+ 45, 15, 14, 18, 15, 26, 15, 14, 11, 46, 15, 14, 18, 18, 26, 15, 14, 11, 47, 15,
+ 14, 18, 21, 26, 15, 14, 11, 48, 15, 14, 18, 24, 26, 15, 14, 11, 49, 15, 14, 18,
+ 27, 26, 15, 14, 11, 50, 15, 14, 18, 30, 26, 15, 14, 11, 51, 15, 14, 18, 33, 26,
+ 15, 14, 11, 52, 15, 14, 18, 36, 26, 15, 14, 11, 53, 15, 14, 18, 39, 26, 15, 14,
+ 11, 54, 15, 14, 18, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 55, 2, 0, 0, 0,
+ 8, 73, 85, 80, 84, 82, 69, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116,
+ 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 22, 73, 85,
+ 80, 84, 82, 69, 69, 82, 69, 70, 69, 82, 69, 78, 67, 69, 84, 65, 66, 76, 69, 0,
+ 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,
+116, 0, 4, 0, 0, 0, 4, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97,
+ 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,
+101, 97,116,101, 84,114,101,101, 0, 2, 0, 0, 0, 8,105,117,112,116,114,101,
+101, 0, 4, 0, 0, 0, 8, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97,
+ 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80,
+ 84, 82, 69, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,116,114,101,101,
+ 0, 2, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101,
+ 99, 0, 4, 0, 0, 0, 13, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97,
+ 0, 0, 0, 0,140, 9, 3, 13, 1, 4, 0, 32, 52, 2, 1, 3, 15, 4, 13, 1,
+ 2, 1, 1, 50,112, 15, 5, 13, 1, 13, 3, 16, 2, 1, 1, 11, 6, 32, 52, 66,
+ 13, 1, 13, 3, 16, 18, 7, 4, 0, 31, 52, 21, 15, 8, 13, 0, 11, 9, 13, 2,
+ 42, 13, 1, 13, 3, 16, 18, 7, 2, 0, 3, 50, 14, 15, 8, 13, 0, 11, 9, 13,
+ 2, 42, 11, 10, 2, 0, 3, 15, 11, 13, 0, 13, 1, 13, 3, 16, 13, 2, 7, 1,
+ 37, 2, 0, 3, 50, 24, 13, 1, 13, 3, 16, 52, 17, 15, 8, 13, 0, 11, 12, 13,
+ 2, 42, 13, 1, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 38, 23, 3, 13, 3, 7,
+ 0, 36, 54,119, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 7,104, 97,
+110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 3,105,100, 0,
+ 2, 0, 0, 0, 5, 99,111,110,116, 0, 2, 0, 0, 0, 5,103,101,116,110, 0,
+ 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101,
+ 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,101, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0,
+ 0, 0, 10, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 2, 0, 0, 0, 1, 0, 2,
+ 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0,
+ 2, 0, 0, 0, 8, 65, 68, 68, 76, 69, 65, 70, 0, 2, 0, 0, 0, 13, 84,114,
+101,101, 83,101,116, 86, 97,108,117,101, 0, 4, 0, 0, 0, 36, 0, 0, 0, 10,
+ 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 59, 6, 2, 15, 2, 13, 1,
+ 2, 1, 1, 11, 3, 31, 52, 11, 15, 4, 11, 5, 11, 6, 2, 0, 2, 1, 2, 13,
+ 1, 18, 7, 4, 0, 31, 52, 13, 15, 8, 13, 0, 11, 9, 13, 1, 18, 7, 2, 0,
+ 3, 15, 10, 13, 0, 13, 1, 7, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 11, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0,
+ 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101,
+ 0, 2, 0, 0, 0, 11, 73,117,112, 77,101,115,115, 97,103,101, 0, 2, 0, 0,
+ 0, 14, 84,114,101,101, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0,
+ 45, 73,110, 99,111,114,114,101, 99,116, 32, 97,114,103,117,109,101,110,116,115,
+ 32,116,111, 32,102,117,110, 99,116,105,111,110, 32, 84,114,101,101, 83,101,116,
+ 86, 97,108,117,101, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,
+101, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,
+116,101, 0, 2, 0, 0, 0, 5, 78, 65, 77, 69, 0, 2, 0, 0, 0, 16, 84,114,
+101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 2, 0, 0, 0, 14,105,
+117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,115,101,
+108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 73,
+ 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,116,114,101,101, 95,
+115,101,108,101, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,
+108,116,105,115,101,108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 18, 77, 85,
+ 76, 84, 73, 83, 69, 76, 69, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0,
+ 27,105,117,112, 95,116,114,101,101, 95,109,117,108,116,105,115,101,108,101, 99,
+116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,111,
+112,101,110, 0, 2, 0, 0, 0, 14, 66, 82, 65, 78, 67, 72, 79, 80, 69, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95, 98,114, 97,
+110, 99,104,111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 12, 98,114, 97,110,
+ 99,104, 99,108,111,115,101, 0, 2, 0, 0, 0, 15, 66, 82, 65, 78, 67, 72, 67,
+ 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,116,114,101,
+101, 95, 98,114, 97,110, 99,104, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 12,101,120,101, 99,117,116,101,108,101, 97,102, 0, 2, 0, 0, 0, 15, 69,
+ 88, 69, 67, 85, 84, 69, 76, 69, 65, 70, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,
+117,112, 95,116,114,101,101, 95,101,120,101, 99,117,116,101,108,101, 97,102, 95,
+ 99, 98, 0, 2, 0, 0, 0, 11,114,101,110, 97,109,101,110,111,100,101, 0, 2,
+ 0, 0, 0, 14, 82, 69, 78, 65, 77, 69, 78, 79, 68, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101,110,111,
+100,101, 95, 99, 98, 0, 2, 0, 0, 0, 9,114,101,110, 97,109,101, 99, 98, 0,
+ 2, 0, 0, 0, 10, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, 0, 0, 21,
+105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101, 99, 98, 95, 99, 98,
+ 0, 2, 0, 0, 0, 13,115,104,111,119,114,101,110, 97,109,101, 99, 98, 0, 2,
+ 0, 0, 0, 14, 83, 72, 79, 87, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 25,105,117,112, 95,116,114,101,101, 95,115,104,111,119,114,101,110, 97,
+109,101, 99, 98, 95, 99, 98, 0, 2, 0, 0, 0, 11,114,105,103,104,116, 99,108,
+105, 99,107, 0, 2, 0, 0, 0, 14, 82, 73, 71, 72, 84, 67, 76, 73, 67, 75, 95,
+ 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,105,103,
+104,116, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,100,114, 97,103,
+100,114,111,112, 0, 2, 0, 0, 0, 12, 68, 82, 65, 71, 68, 82, 79, 80, 95, 67,
+ 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,116,114,101,101, 95,100,114, 97,103,
+100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,105,
+111,110, 95, 99, 98, 0, 2, 0, 0, 0, 18,109,117,108,116,105,115,101,108,101,
+ 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 14, 98,114, 97,110, 99,104,
+111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 98,114, 97,110, 99,104, 99,
+108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 15,101,120,101, 99,117,116,101,
+108,101, 97,102, 95, 99, 98, 0, 2, 0, 0, 0, 14,114,101,110, 97,109,101,110,
+111,100,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,110, 97,109,101, 95, 99,
+ 98, 0, 2, 0, 0, 0, 14,115,104,111,119,114,101,110, 97,109,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 14,114,105,103,104,116, 99,108,105, 99,107, 95, 99, 98, 0,
+ 2, 0, 0, 0, 12,100,114, 97,103,100,114,111,112, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/tree.lo");
+}
diff --git a/iup/srclua3/loh/tree_be32.loh b/iup/srclua3/loh/tree_be32.loh
new file mode 100755
index 0000000..c7a5992
--- /dev/null
+++ b/iup/srclua3/loh/tree_be32.loh
@@ -0,0 +1,115 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/tree_be32.lo");
+*/
+/* ../obj/iupluacontrols3/tree_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116,114,101,101, 46,
+108,117, 97, 0, 0, 0, 1, 24, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 22, 0, 25, 3, 15, 0, 11, 4, 11, 5, 26, 11, 7, 25, 6, 15, 8, 11, 9, 15,
+ 6, 26, 11, 11, 25, 10, 11, 13, 25, 12, 15, 8, 11, 12, 15, 12, 26, 15, 14, 11,
+ 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 14, 11, 18, 22, 2, 11, 19, 15,
+ 20, 29, 0, 2, 26, 15, 14, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26, 15,
+ 14, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 14, 11, 27, 22, 2, 11,
+ 28, 15, 29, 29, 0, 2, 26, 15, 14, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0, 2,
+ 26, 15, 14, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 14, 11, 36, 22,
+ 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 14, 11, 39, 22, 2, 11, 40, 15, 41, 29,
+ 0, 2, 26, 15, 14, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 14, 11,
+ 45, 15, 14, 18, 15, 26, 15, 14, 11, 46, 15, 14, 18, 18, 26, 15, 14, 11, 47, 15,
+ 14, 18, 21, 26, 15, 14, 11, 48, 15, 14, 18, 24, 26, 15, 14, 11, 49, 15, 14, 18,
+ 27, 26, 15, 14, 11, 50, 15, 14, 18, 30, 26, 15, 14, 11, 51, 15, 14, 18, 33, 26,
+ 15, 14, 11, 52, 15, 14, 18, 36, 26, 15, 14, 11, 53, 15, 14, 18, 39, 26, 15, 14,
+ 11, 54, 15, 14, 18, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 55, 2, 0, 0, 0,
+ 8, 73, 85, 80, 84, 82, 69, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116,
+ 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 22, 73, 85,
+ 80, 84, 82, 69, 69, 82, 69, 70, 69, 82, 69, 78, 67, 69, 84, 65, 66, 76, 69, 0,
+ 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,
+116, 0, 4, 0, 0, 0, 4, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97,
+ 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,
+101, 97,116,101, 84,114,101,101, 0, 2, 0, 0, 0, 8,105,117,112,116,114,101,
+101, 0, 4, 0, 0, 0, 8, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97,
+ 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80,
+ 84, 82, 69, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,116,114,101,101,
+ 0, 2, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101,
+ 99, 0, 4, 0, 0, 0, 13, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97,
+ 0, 0, 0, 0,140, 9, 3, 13, 1, 4, 0, 32, 52, 2, 1, 3, 15, 4, 13, 1,
+ 2, 1, 1, 50,112, 15, 5, 13, 1, 13, 3, 16, 2, 1, 1, 11, 6, 32, 52, 66,
+ 13, 1, 13, 3, 16, 18, 7, 4, 0, 31, 52, 21, 15, 8, 13, 0, 11, 9, 13, 2,
+ 42, 13, 1, 13, 3, 16, 18, 7, 2, 0, 3, 50, 14, 15, 8, 13, 0, 11, 9, 13,
+ 2, 42, 11, 10, 2, 0, 3, 15, 11, 13, 0, 13, 1, 13, 3, 16, 13, 2, 7, 1,
+ 37, 2, 0, 3, 50, 24, 13, 1, 13, 3, 16, 52, 17, 15, 8, 13, 0, 11, 12, 13,
+ 2, 42, 13, 1, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 38, 23, 3, 13, 3, 7,
+ 0, 36, 54,119, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 7,104, 97,
+110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 3,105,100, 0,
+ 2, 0, 0, 0, 5, 99,111,110,116, 0, 2, 0, 0, 0, 5,103,101,116,110, 0,
+ 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101,
+ 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,101, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0,
+ 0, 0, 10, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 2, 0, 0, 0, 1, 0, 2,
+ 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0,
+ 2, 0, 0, 0, 8, 65, 68, 68, 76, 69, 65, 70, 0, 2, 0, 0, 0, 13, 84,114,
+101,101, 83,101,116, 86, 97,108,117,101, 0, 4, 0, 0, 0, 36, 0, 0, 0, 10,
+ 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 59, 6, 2, 15, 2, 13, 1,
+ 2, 1, 1, 11, 3, 31, 52, 11, 15, 4, 11, 5, 11, 6, 2, 0, 2, 1, 2, 13,
+ 1, 18, 7, 4, 0, 31, 52, 13, 15, 8, 13, 0, 11, 9, 13, 1, 18, 7, 2, 0,
+ 3, 15, 10, 13, 0, 13, 1, 7, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 11, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0,
+ 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101,
+ 0, 2, 0, 0, 0, 11, 73,117,112, 77,101,115,115, 97,103,101, 0, 2, 0, 0,
+ 0, 14, 84,114,101,101, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0,
+ 45, 73,110, 99,111,114,114,101, 99,116, 32, 97,114,103,117,109,101,110,116,115,
+ 32,116,111, 32,102,117,110, 99,116,105,111,110, 32, 84,114,101,101, 83,101,116,
+ 86, 97,108,117,101, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,
+101, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,
+116,101, 0, 2, 0, 0, 0, 5, 78, 65, 77, 69, 0, 2, 0, 0, 0, 16, 84,114,
+101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 2, 0, 0, 0, 14,105,
+117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,115,101,
+108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 73,
+ 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,116,114,101,101, 95,
+115,101,108,101, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,
+108,116,105,115,101,108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 18, 77, 85,
+ 76, 84, 73, 83, 69, 76, 69, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0,
+ 27,105,117,112, 95,116,114,101,101, 95,109,117,108,116,105,115,101,108,101, 99,
+116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,111,
+112,101,110, 0, 2, 0, 0, 0, 14, 66, 82, 65, 78, 67, 72, 79, 80, 69, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95, 98,114, 97,
+110, 99,104,111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 12, 98,114, 97,110,
+ 99,104, 99,108,111,115,101, 0, 2, 0, 0, 0, 15, 66, 82, 65, 78, 67, 72, 67,
+ 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,116,114,101,
+101, 95, 98,114, 97,110, 99,104, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 12,101,120,101, 99,117,116,101,108,101, 97,102, 0, 2, 0, 0, 0, 15, 69,
+ 88, 69, 67, 85, 84, 69, 76, 69, 65, 70, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,
+117,112, 95,116,114,101,101, 95,101,120,101, 99,117,116,101,108,101, 97,102, 95,
+ 99, 98, 0, 2, 0, 0, 0, 11,114,101,110, 97,109,101,110,111,100,101, 0, 2,
+ 0, 0, 0, 14, 82, 69, 78, 65, 77, 69, 78, 79, 68, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101,110,111,
+100,101, 95, 99, 98, 0, 2, 0, 0, 0, 9,114,101,110, 97,109,101, 99, 98, 0,
+ 2, 0, 0, 0, 10, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, 0, 0, 21,
+105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101, 99, 98, 95, 99, 98,
+ 0, 2, 0, 0, 0, 13,115,104,111,119,114,101,110, 97,109,101, 99, 98, 0, 2,
+ 0, 0, 0, 14, 83, 72, 79, 87, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 25,105,117,112, 95,116,114,101,101, 95,115,104,111,119,114,101,110, 97,
+109,101, 99, 98, 95, 99, 98, 0, 2, 0, 0, 0, 11,114,105,103,104,116, 99,108,
+105, 99,107, 0, 2, 0, 0, 0, 14, 82, 73, 71, 72, 84, 67, 76, 73, 67, 75, 95,
+ 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,105,103,
+104,116, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,100,114, 97,103,
+100,114,111,112, 0, 2, 0, 0, 0, 12, 68, 82, 65, 71, 68, 82, 79, 80, 95, 67,
+ 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,116,114,101,101, 95,100,114, 97,103,
+100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,105,
+111,110, 95, 99, 98, 0, 2, 0, 0, 0, 18,109,117,108,116,105,115,101,108,101,
+ 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 14, 98,114, 97,110, 99,104,
+111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 98,114, 97,110, 99,104, 99,
+108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 15,101,120,101, 99,117,116,101,
+108,101, 97,102, 95, 99, 98, 0, 2, 0, 0, 0, 14,114,101,110, 97,109,101,110,
+111,100,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,110, 97,109,101, 95, 99,
+ 98, 0, 2, 0, 0, 0, 14,115,104,111,119,114,101,110, 97,109,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 14,114,105,103,104,116, 99,108,105, 99,107, 95, 99, 98, 0,
+ 2, 0, 0, 0, 12,100,114, 97,103,100,114,111,112, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/tree_be32.lo");
+}
diff --git a/iup/srclua3/loh/tree_be64.loh b/iup/srclua3/loh/tree_be64.loh
new file mode 100755
index 0000000..d46105b
--- /dev/null
+++ b/iup/srclua3/loh/tree_be64.loh
@@ -0,0 +1,115 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/tree_be64.lo");
+*/
+/* ../obj/iupluacontrols3/tree_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116,114,101,101, 46,
+108,117, 97, 0, 0, 0, 1, 24, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 22, 0, 25, 3, 15, 0, 11, 4, 11, 5, 26, 11, 7, 25, 6, 15, 8, 11, 9, 15,
+ 6, 26, 11, 11, 25, 10, 11, 13, 25, 12, 15, 8, 11, 12, 15, 12, 26, 15, 14, 11,
+ 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 14, 11, 18, 22, 2, 11, 19, 15,
+ 20, 29, 0, 2, 26, 15, 14, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26, 15,
+ 14, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 14, 11, 27, 22, 2, 11,
+ 28, 15, 29, 29, 0, 2, 26, 15, 14, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0, 2,
+ 26, 15, 14, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 14, 11, 36, 22,
+ 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 14, 11, 39, 22, 2, 11, 40, 15, 41, 29,
+ 0, 2, 26, 15, 14, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 14, 11,
+ 45, 15, 14, 18, 15, 26, 15, 14, 11, 46, 15, 14, 18, 18, 26, 15, 14, 11, 47, 15,
+ 14, 18, 21, 26, 15, 14, 11, 48, 15, 14, 18, 24, 26, 15, 14, 11, 49, 15, 14, 18,
+ 27, 26, 15, 14, 11, 50, 15, 14, 18, 30, 26, 15, 14, 11, 51, 15, 14, 18, 33, 26,
+ 15, 14, 11, 52, 15, 14, 18, 36, 26, 15, 14, 11, 53, 15, 14, 18, 39, 26, 15, 14,
+ 11, 54, 15, 14, 18, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 55, 2, 0, 0, 0,
+ 8, 73, 85, 80, 84, 82, 69, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116,
+ 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 22, 73, 85,
+ 80, 84, 82, 69, 69, 82, 69, 70, 69, 82, 69, 78, 67, 69, 84, 65, 66, 76, 69, 0,
+ 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,
+116, 0, 4, 0, 0, 0, 4, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97,
+ 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,
+101, 97,116,101, 84,114,101,101, 0, 2, 0, 0, 0, 8,105,117,112,116,114,101,
+101, 0, 4, 0, 0, 0, 8, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97,
+ 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80,
+ 84, 82, 69, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,116,114,101,101,
+ 0, 2, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101,
+ 99, 0, 4, 0, 0, 0, 13, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97,
+ 0, 0, 0, 0,140, 9, 3, 13, 1, 4, 0, 32, 52, 2, 1, 3, 15, 4, 13, 1,
+ 2, 1, 1, 50,112, 15, 5, 13, 1, 13, 3, 16, 2, 1, 1, 11, 6, 32, 52, 66,
+ 13, 1, 13, 3, 16, 18, 7, 4, 0, 31, 52, 21, 15, 8, 13, 0, 11, 9, 13, 2,
+ 42, 13, 1, 13, 3, 16, 18, 7, 2, 0, 3, 50, 14, 15, 8, 13, 0, 11, 9, 13,
+ 2, 42, 11, 10, 2, 0, 3, 15, 11, 13, 0, 13, 1, 13, 3, 16, 13, 2, 7, 1,
+ 37, 2, 0, 3, 50, 24, 13, 1, 13, 3, 16, 52, 17, 15, 8, 13, 0, 11, 12, 13,
+ 2, 42, 13, 1, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 38, 23, 3, 13, 3, 7,
+ 0, 36, 54,119, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 7,104, 97,
+110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 3,105,100, 0,
+ 2, 0, 0, 0, 5, 99,111,110,116, 0, 2, 0, 0, 0, 5,103,101,116,110, 0,
+ 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101,
+ 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,101, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0,
+ 0, 0, 10, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 2, 0, 0, 0, 1, 0, 2,
+ 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0,
+ 2, 0, 0, 0, 8, 65, 68, 68, 76, 69, 65, 70, 0, 2, 0, 0, 0, 13, 84,114,
+101,101, 83,101,116, 86, 97,108,117,101, 0, 4, 0, 0, 0, 36, 0, 0, 0, 10,
+ 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 59, 6, 2, 15, 2, 13, 1,
+ 2, 1, 1, 11, 3, 31, 52, 11, 15, 4, 11, 5, 11, 6, 2, 0, 2, 1, 2, 13,
+ 1, 18, 7, 4, 0, 31, 52, 13, 15, 8, 13, 0, 11, 9, 13, 1, 18, 7, 2, 0,
+ 3, 15, 10, 13, 0, 13, 1, 7, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 11, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0,
+ 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101,
+ 0, 2, 0, 0, 0, 11, 73,117,112, 77,101,115,115, 97,103,101, 0, 2, 0, 0,
+ 0, 14, 84,114,101,101, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0,
+ 45, 73,110, 99,111,114,114,101, 99,116, 32, 97,114,103,117,109,101,110,116,115,
+ 32,116,111, 32,102,117,110, 99,116,105,111,110, 32, 84,114,101,101, 83,101,116,
+ 86, 97,108,117,101, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,
+101, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,
+116,101, 0, 2, 0, 0, 0, 5, 78, 65, 77, 69, 0, 2, 0, 0, 0, 16, 84,114,
+101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 2, 0, 0, 0, 14,105,
+117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,115,101,
+108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 73,
+ 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,116,114,101,101, 95,
+115,101,108,101, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,
+108,116,105,115,101,108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 18, 77, 85,
+ 76, 84, 73, 83, 69, 76, 69, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0,
+ 27,105,117,112, 95,116,114,101,101, 95,109,117,108,116,105,115,101,108,101, 99,
+116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,111,
+112,101,110, 0, 2, 0, 0, 0, 14, 66, 82, 65, 78, 67, 72, 79, 80, 69, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95, 98,114, 97,
+110, 99,104,111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 12, 98,114, 97,110,
+ 99,104, 99,108,111,115,101, 0, 2, 0, 0, 0, 15, 66, 82, 65, 78, 67, 72, 67,
+ 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,116,114,101,
+101, 95, 98,114, 97,110, 99,104, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 12,101,120,101, 99,117,116,101,108,101, 97,102, 0, 2, 0, 0, 0, 15, 69,
+ 88, 69, 67, 85, 84, 69, 76, 69, 65, 70, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,
+117,112, 95,116,114,101,101, 95,101,120,101, 99,117,116,101,108,101, 97,102, 95,
+ 99, 98, 0, 2, 0, 0, 0, 11,114,101,110, 97,109,101,110,111,100,101, 0, 2,
+ 0, 0, 0, 14, 82, 69, 78, 65, 77, 69, 78, 79, 68, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101,110,111,
+100,101, 95, 99, 98, 0, 2, 0, 0, 0, 9,114,101,110, 97,109,101, 99, 98, 0,
+ 2, 0, 0, 0, 10, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, 0, 0, 21,
+105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101, 99, 98, 95, 99, 98,
+ 0, 2, 0, 0, 0, 13,115,104,111,119,114,101,110, 97,109,101, 99, 98, 0, 2,
+ 0, 0, 0, 14, 83, 72, 79, 87, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 25,105,117,112, 95,116,114,101,101, 95,115,104,111,119,114,101,110, 97,
+109,101, 99, 98, 95, 99, 98, 0, 2, 0, 0, 0, 11,114,105,103,104,116, 99,108,
+105, 99,107, 0, 2, 0, 0, 0, 14, 82, 73, 71, 72, 84, 67, 76, 73, 67, 75, 95,
+ 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,105,103,
+104,116, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,100,114, 97,103,
+100,114,111,112, 0, 2, 0, 0, 0, 12, 68, 82, 65, 71, 68, 82, 79, 80, 95, 67,
+ 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,116,114,101,101, 95,100,114, 97,103,
+100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,105,
+111,110, 95, 99, 98, 0, 2, 0, 0, 0, 18,109,117,108,116,105,115,101,108,101,
+ 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 14, 98,114, 97,110, 99,104,
+111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 98,114, 97,110, 99,104, 99,
+108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 15,101,120,101, 99,117,116,101,
+108,101, 97,102, 95, 99, 98, 0, 2, 0, 0, 0, 14,114,101,110, 97,109,101,110,
+111,100,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,110, 97,109,101, 95, 99,
+ 98, 0, 2, 0, 0, 0, 14,115,104,111,119,114,101,110, 97,109,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 14,114,105,103,104,116, 99,108,105, 99,107, 95, 99, 98, 0,
+ 2, 0, 0, 0, 12,100,114, 97,103,100,114,111,112, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/tree_be64.lo");
+}
diff --git a/iup/srclua3/loh/tree_le64.loh b/iup/srclua3/loh/tree_le64.loh
new file mode 100755
index 0000000..e308539
--- /dev/null
+++ b/iup/srclua3/loh/tree_le64.loh
@@ -0,0 +1,115 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/tree_le64.lo");
+*/
+/* ../obj/iupluacontrols3/tree_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116,114,101,101, 46,
+108,117, 97, 0, 0, 0, 1, 24, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0,
+ 22, 0, 25, 3, 15, 0, 11, 4, 11, 5, 26, 11, 7, 25, 6, 15, 8, 11, 9, 15,
+ 6, 26, 11, 11, 25, 10, 11, 13, 25, 12, 15, 8, 11, 12, 15, 12, 26, 15, 14, 11,
+ 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 14, 11, 18, 22, 2, 11, 19, 15,
+ 20, 29, 0, 2, 26, 15, 14, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26, 15,
+ 14, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 14, 11, 27, 22, 2, 11,
+ 28, 15, 29, 29, 0, 2, 26, 15, 14, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0, 2,
+ 26, 15, 14, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 14, 11, 36, 22,
+ 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 14, 11, 39, 22, 2, 11, 40, 15, 41, 29,
+ 0, 2, 26, 15, 14, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 14, 11,
+ 45, 15, 14, 18, 15, 26, 15, 14, 11, 46, 15, 14, 18, 18, 26, 15, 14, 11, 47, 15,
+ 14, 18, 21, 26, 15, 14, 11, 48, 15, 14, 18, 24, 26, 15, 14, 11, 49, 15, 14, 18,
+ 27, 26, 15, 14, 11, 50, 15, 14, 18, 30, 26, 15, 14, 11, 51, 15, 14, 18, 33, 26,
+ 15, 14, 11, 52, 15, 14, 18, 36, 26, 15, 14, 11, 53, 15, 14, 18, 39, 26, 15, 14,
+ 11, 54, 15, 14, 18, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 55, 2, 0, 0, 0,
+ 8, 73, 85, 80, 84, 82, 69, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116,
+ 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 22, 73, 85,
+ 80, 84, 82, 69, 69, 82, 69, 70, 69, 82, 69, 78, 67, 69, 84, 65, 66, 76, 69, 0,
+ 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,
+116, 0, 4, 0, 0, 0, 4, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97,
+ 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,
+101, 97,116,101, 84,114,101,101, 0, 2, 0, 0, 0, 8,105,117,112,116,114,101,
+101, 0, 4, 0, 0, 0, 8, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97,
+ 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80,
+ 84, 82, 69, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,116,114,101,101,
+ 0, 2, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101,
+ 99, 0, 4, 0, 0, 0, 13, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97,
+ 0, 0, 0, 0,140, 9, 3, 13, 1, 4, 0, 32, 52, 2, 1, 3, 15, 4, 13, 1,
+ 2, 1, 1, 50,112, 15, 5, 13, 1, 13, 3, 16, 2, 1, 1, 11, 6, 32, 52, 66,
+ 13, 1, 13, 3, 16, 18, 7, 4, 0, 31, 52, 21, 15, 8, 13, 0, 11, 9, 13, 2,
+ 42, 13, 1, 13, 3, 16, 18, 7, 2, 0, 3, 50, 14, 15, 8, 13, 0, 11, 9, 13,
+ 2, 42, 11, 10, 2, 0, 3, 15, 11, 13, 0, 13, 1, 13, 3, 16, 13, 2, 7, 1,
+ 37, 2, 0, 3, 50, 24, 13, 1, 13, 3, 16, 52, 17, 15, 8, 13, 0, 11, 12, 13,
+ 2, 42, 13, 1, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 38, 23, 3, 13, 3, 7,
+ 0, 36, 54,119, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 7,104, 97,
+110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 3,105,100, 0,
+ 2, 0, 0, 0, 5, 99,111,110,116, 0, 2, 0, 0, 0, 5,103,101,116,110, 0,
+ 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101,
+ 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,101, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0,
+ 0, 0, 10, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 2, 0, 0, 0, 1, 0, 2,
+ 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0,
+ 2, 0, 0, 0, 8, 65, 68, 68, 76, 69, 65, 70, 0, 2, 0, 0, 0, 13, 84,114,
+101,101, 83,101,116, 86, 97,108,117,101, 0, 4, 0, 0, 0, 36, 0, 0, 0, 10,
+ 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 59, 6, 2, 15, 2, 13, 1,
+ 2, 1, 1, 11, 3, 31, 52, 11, 15, 4, 11, 5, 11, 6, 2, 0, 2, 1, 2, 13,
+ 1, 18, 7, 4, 0, 31, 52, 13, 15, 8, 13, 0, 11, 9, 13, 1, 18, 7, 2, 0,
+ 3, 15, 10, 13, 0, 13, 1, 7, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 11, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0,
+ 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101,
+ 0, 2, 0, 0, 0, 11, 73,117,112, 77,101,115,115, 97,103,101, 0, 2, 0, 0,
+ 0, 14, 84,114,101,101, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0,
+ 45, 73,110, 99,111,114,114,101, 99,116, 32, 97,114,103,117,109,101,110,116,115,
+ 32,116,111, 32,102,117,110, 99,116,105,111,110, 32, 84,114,101,101, 83,101,116,
+ 86, 97,108,117,101, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,
+101, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,
+116,101, 0, 2, 0, 0, 0, 5, 78, 65, 77, 69, 0, 2, 0, 0, 0, 16, 84,114,
+101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 2, 0, 0, 0, 14,105,
+117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,115,101,
+108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 73,
+ 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,116,114,101,101, 95,
+115,101,108,101, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,
+108,116,105,115,101,108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 18, 77, 85,
+ 76, 84, 73, 83, 69, 76, 69, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0,
+ 27,105,117,112, 95,116,114,101,101, 95,109,117,108,116,105,115,101,108,101, 99,
+116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,111,
+112,101,110, 0, 2, 0, 0, 0, 14, 66, 82, 65, 78, 67, 72, 79, 80, 69, 78, 95,
+ 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95, 98,114, 97,
+110, 99,104,111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 12, 98,114, 97,110,
+ 99,104, 99,108,111,115,101, 0, 2, 0, 0, 0, 15, 66, 82, 65, 78, 67, 72, 67,
+ 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,116,114,101,
+101, 95, 98,114, 97,110, 99,104, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 12,101,120,101, 99,117,116,101,108,101, 97,102, 0, 2, 0, 0, 0, 15, 69,
+ 88, 69, 67, 85, 84, 69, 76, 69, 65, 70, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,
+117,112, 95,116,114,101,101, 95,101,120,101, 99,117,116,101,108,101, 97,102, 95,
+ 99, 98, 0, 2, 0, 0, 0, 11,114,101,110, 97,109,101,110,111,100,101, 0, 2,
+ 0, 0, 0, 14, 82, 69, 78, 65, 77, 69, 78, 79, 68, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101,110,111,
+100,101, 95, 99, 98, 0, 2, 0, 0, 0, 9,114,101,110, 97,109,101, 99, 98, 0,
+ 2, 0, 0, 0, 10, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, 0, 0, 21,
+105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101, 99, 98, 95, 99, 98,
+ 0, 2, 0, 0, 0, 13,115,104,111,119,114,101,110, 97,109,101, 99, 98, 0, 2,
+ 0, 0, 0, 14, 83, 72, 79, 87, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0,
+ 0, 0, 25,105,117,112, 95,116,114,101,101, 95,115,104,111,119,114,101,110, 97,
+109,101, 99, 98, 95, 99, 98, 0, 2, 0, 0, 0, 11,114,105,103,104,116, 99,108,
+105, 99,107, 0, 2, 0, 0, 0, 14, 82, 73, 71, 72, 84, 67, 76, 73, 67, 75, 95,
+ 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,105,103,
+104,116, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,100,114, 97,103,
+100,114,111,112, 0, 2, 0, 0, 0, 12, 68, 82, 65, 71, 68, 82, 79, 80, 95, 67,
+ 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,116,114,101,101, 95,100,114, 97,103,
+100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,105,
+111,110, 95, 99, 98, 0, 2, 0, 0, 0, 18,109,117,108,116,105,115,101,108,101,
+ 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 14, 98,114, 97,110, 99,104,
+111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 98,114, 97,110, 99,104, 99,
+108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 15,101,120,101, 99,117,116,101,
+108,101, 97,102, 95, 99, 98, 0, 2, 0, 0, 0, 14,114,101,110, 97,109,101,110,
+111,100,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,110, 97,109,101, 95, 99,
+ 98, 0, 2, 0, 0, 0, 14,115,104,111,119,114,101,110, 97,109,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 14,114,105,103,104,116, 99,108,105, 99,107, 95, 99, 98, 0,
+ 2, 0, 0, 0, 12,100,114, 97,103,100,114,111,112, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/tree_le64.lo");
+}
diff --git a/iup/srclua3/loh/tree_le64w.loh b/iup/srclua3/loh/tree_le64w.loh
new file mode 100755
index 0000000..4db63e3
--- /dev/null
+++ b/iup/srclua3/loh/tree_le64w.loh
@@ -0,0 +1,116 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luatree_le64w.lo");
+*/
+/* ../obj/iupluacontrols3/luatree_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,116,114,
+101,101, 46,108,117, 97, 0, 0, 0, 1, 24, 5, 0, 22, 1, 11, 1, 15, 2, 30,
+ 0, 25, 0, 22, 0, 25, 3, 15, 0, 11, 4, 11, 5, 26, 11, 7, 25, 6, 15, 8,
+ 11, 9, 15, 6, 26, 11, 11, 25, 10, 11, 13, 25, 12, 15, 8, 11, 12, 15, 12, 26,
+ 15, 14, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 14, 11, 18, 22, 2,
+ 11, 19, 15, 20, 29, 0, 2, 26, 15, 14, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0,
+ 2, 26, 15, 14, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 14, 11, 27,
+ 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 14, 11, 30, 22, 2, 11, 31, 15, 32,
+ 29, 0, 2, 26, 15, 14, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 14,
+ 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 14, 11, 39, 22, 2, 11, 40,
+ 15, 41, 29, 0, 2, 26, 15, 14, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26,
+ 15, 14, 11, 45, 15, 14, 18, 15, 26, 15, 14, 11, 46, 15, 14, 18, 18, 26, 15, 14,
+ 11, 47, 15, 14, 18, 21, 26, 15, 14, 11, 48, 15, 14, 18, 24, 26, 15, 14, 11, 49,
+ 15, 14, 18, 27, 26, 15, 14, 11, 50, 15, 14, 18, 30, 26, 15, 14, 11, 51, 15, 14,
+ 18, 33, 26, 15, 14, 11, 52, 15, 14, 18, 36, 26, 15, 14, 11, 53, 15, 14, 18, 39,
+ 26, 15, 14, 11, 54, 15, 14, 18, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 55, 2,
+ 0, 0, 0, 8, 73, 85, 80, 84, 82, 69, 69, 0, 2, 0, 0, 0, 7,112, 97,114,
+101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0,
+ 22, 73, 85, 80, 84, 82, 69, 69, 82, 69, 70, 69, 82, 69, 78, 67, 69, 84, 65, 66,
+ 76, 69, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,
+109,101,110,116, 0, 4, 0, 0, 0, 4, 0, 0, 0, 13, 64,108,117, 97,116,114,
+101,101, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0,
+ 14,105,117,112, 67,114,101, 97,116,101, 84,114,101,101, 0, 2, 0, 0, 0, 8,
+105,117,112,116,114,101,101, 0, 4, 0, 0, 0, 8, 0, 0, 0, 13, 64,108,117,
+ 97,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2,
+ 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111,
+ 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 82, 69, 69, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0,
+ 2, 0, 0, 0, 5,116,114,101,101, 0, 2, 0, 0, 0, 16, 84,114,101,101, 83,
+101,116, 86, 97,108,117,101, 82,101, 99, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13,
+ 64,108,117, 97,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0,140, 9, 3, 13,
+ 1, 4, 0, 32, 52, 2, 1, 3, 15, 4, 13, 1, 2, 1, 1, 50,112, 15, 5, 13,
+ 1, 13, 3, 16, 2, 1, 1, 11, 6, 32, 52, 66, 13, 1, 13, 3, 16, 18, 7, 4,
+ 0, 31, 52, 21, 15, 8, 13, 0, 11, 9, 13, 2, 42, 13, 1, 13, 3, 16, 18, 7,
+ 2, 0, 3, 50, 14, 15, 8, 13, 0, 11, 9, 13, 2, 42, 11, 10, 2, 0, 3, 15,
+ 11, 13, 0, 13, 1, 13, 3, 16, 13, 2, 7, 1, 37, 2, 0, 3, 50, 24, 13, 1,
+ 13, 3, 16, 52, 17, 15, 8, 13, 0, 11, 12, 13, 2, 42, 13, 1, 13, 3, 16, 2,
+ 0, 3, 13, 3, 7, 1, 38, 23, 3, 13, 3, 7, 0, 36, 54,119, 0, 0, 0, 0,
+ 0, 0, 0, 0, 13, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0,
+ 0, 2,116, 0, 2, 0, 0, 0, 3,105,100, 0, 2, 0, 0, 0, 5, 99,111,110,
+116, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, 2, 0, 0, 0, 5,116,121,112,
+101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0, 11, 98,114,
+ 97,110, 99,104,110, 97,109,101, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116,
+ 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 10, 65, 68, 68, 66, 82,
+ 65, 78, 67, 72, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 16, 84,114,101,101,
+ 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 2, 0, 0, 0, 8, 65, 68, 68,
+ 76, 69, 65, 70, 0, 2, 0, 0, 0, 13, 84,114,101,101, 83,101,116, 86, 97,108,
+117,101, 0, 4, 0, 0, 0, 36, 0, 0, 0, 13, 64,108,117, 97,116,114,101,101,
+ 46,108,117, 97, 0, 0, 0, 0, 59, 6, 2, 15, 2, 13, 1, 2, 1, 1, 11, 3,
+ 31, 52, 11, 15, 4, 11, 5, 11, 6, 2, 0, 2, 1, 2, 13, 1, 18, 7, 4, 0,
+ 31, 52, 13, 15, 8, 13, 0, 11, 9, 13, 1, 18, 7, 2, 0, 3, 15, 10, 13, 0,
+ 13, 1, 7, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 0,
+ 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 5,
+116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0,
+ 11, 73,117,112, 77,101,115,115, 97,103,101, 0, 2, 0, 0, 0, 14, 84,114,101,
+101, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, 45, 73,110, 99,111,
+114,114,101, 99,116, 32, 97,114,103,117,109,101,110,116,115, 32,116,111, 32,102,
+117,110, 99,116,105,111,110, 32, 84,114,101,101, 83,101,116, 86, 97,108,117,101,
+ 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,101, 0, 2, 0, 0,
+ 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0,
+ 0, 0, 5, 78, 65, 77, 69, 0, 2, 0, 0, 0, 16, 84,114,101,101, 83,101,116,
+ 86, 97,108,117,101, 82,101, 99, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,
+108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,115,101,108,101, 99,116,105,
+111,110, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 73, 79, 78, 95, 67, 66,
+ 0, 2, 0, 0, 0, 22,105,117,112, 95,116,114,101,101, 95,115,101,108,101, 99,
+116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,108,116,105,115,101,
+108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 18, 77, 85, 76, 84, 73, 83, 69,
+ 76, 69, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 27,105,117,112, 95,
+116,114,101,101, 95,109,117,108,116,105,115,101,108,101, 99,116,105,111,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,111,112,101,110, 0, 2,
+ 0, 0, 0, 14, 66, 82, 65, 78, 67, 72, 79, 80, 69, 78, 95, 67, 66, 0, 2, 0,
+ 0, 0, 23,105,117,112, 95,116,114,101,101, 95, 98,114, 97,110, 99,104,111,112,
+101,110, 95, 99, 98, 0, 2, 0, 0, 0, 12, 98,114, 97,110, 99,104, 99,108,111,
+115,101, 0, 2, 0, 0, 0, 15, 66, 82, 65, 78, 67, 72, 67, 76, 79, 83, 69, 95,
+ 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,116,114,101,101, 95, 98,114, 97,
+110, 99,104, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 12,101,120,101,
+ 99,117,116,101,108,101, 97,102, 0, 2, 0, 0, 0, 15, 69, 88, 69, 67, 85, 84,
+ 69, 76, 69, 65, 70, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,116,114,
+101,101, 95,101,120,101, 99,117,116,101,108,101, 97,102, 95, 99, 98, 0, 2, 0,
+ 0, 0, 11,114,101,110, 97,109,101,110,111,100,101, 0, 2, 0, 0, 0, 14, 82,
+ 69, 78, 65, 77, 69, 78, 79, 68, 69, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,
+112, 95,116,114,101,101, 95,114,101,110, 97,109,101,110,111,100,101, 95, 99, 98,
+ 0, 2, 0, 0, 0, 9,114,101,110, 97,109,101, 99, 98, 0, 2, 0, 0, 0, 10,
+ 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,116,
+114,101,101, 95,114,101,110, 97,109,101, 99, 98, 95, 99, 98, 0, 2, 0, 0, 0,
+ 13,115,104,111,119,114,101,110, 97,109,101, 99, 98, 0, 2, 0, 0, 0, 14, 83,
+ 72, 79, 87, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117,
+112, 95,116,114,101,101, 95,115,104,111,119,114,101,110, 97,109,101, 99, 98, 95,
+ 99, 98, 0, 2, 0, 0, 0, 11,114,105,103,104,116, 99,108,105, 99,107, 0, 2,
+ 0, 0, 0, 14, 82, 73, 71, 72, 84, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0,
+ 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,105,103,104,116, 99,108,105,
+ 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,100,114, 97,103,100,114,111,112, 0,
+ 2, 0, 0, 0, 12, 68, 82, 65, 71, 68, 82, 79, 80, 95, 67, 66, 0, 2, 0, 0,
+ 0, 21,105,117,112, 95,116,114,101,101, 95,100,114, 97,103,100,114,111,112, 95,
+ 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,105,111,110, 95, 99, 98,
+ 0, 2, 0, 0, 0, 18,109,117,108,116,105,115,101,108,101, 99,116,105,111,110,
+ 95, 99, 98, 0, 2, 0, 0, 0, 14, 98,114, 97,110, 99,104,111,112,101,110, 95,
+ 99, 98, 0, 2, 0, 0, 0, 15, 98,114, 97,110, 99,104, 99,108,111,115,101, 95,
+ 99, 98, 0, 2, 0, 0, 0, 15,101,120,101, 99,117,116,101,108,101, 97,102, 95,
+ 99, 98, 0, 2, 0, 0, 0, 14,114,101,110, 97,109,101,110,111,100,101, 95, 99,
+ 98, 0, 2, 0, 0, 0, 10,114,101,110, 97,109,101, 95, 99, 98, 0, 2, 0, 0,
+ 0, 14,115,104,111,119,114,101,110, 97,109,101, 95, 99, 98, 0, 2, 0, 0, 0,
+ 14,114,105,103,104,116, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 12,
+100,114, 97,103,100,114,111,112, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luatree_le64w.lo");
+}
diff --git a/iup/srclua3/loh/val.loh b/iup/srclua3/loh/val.loh
new file mode 100755
index 0000000..19d0a55
--- /dev/null
+++ b/iup/srclua3/loh/val.loh
@@ -0,0 +1,45 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/val.lo");
+*/
+/* ../obj/iuplua3/val.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 9, 64,118, 97,108, 46,108,
+117, 97, 0, 0, 0, 0,109, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, 15,
+ 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9, 11,
+ 10, 22, 2, 11, 11, 4, 0, 29, 0, 2, 26, 15, 9, 11, 12, 15, 9, 18, 10, 26,
+ 15, 9, 18, 10, 11, 8, 15, 13, 26, 15, 9, 11, 14, 22, 2, 11, 15, 15, 16, 29,
+ 0, 2, 26, 15, 9, 11, 17, 22, 2, 11, 18, 15, 19, 29, 0, 2, 26, 15, 9, 11,
+ 20, 15, 9, 18, 14, 26, 15, 9, 11, 21, 15, 9, 18, 17, 26, 0, 0, 0, 0, 0,
+ 0, 0, 0, 22, 2, 0, 0, 0, 7, 73, 85, 80, 86, 65, 76, 0, 2, 0, 0, 0,
+ 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0,
+ 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,
+116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 9, 64,118, 97,108, 46,108,117, 97, 0,
+ 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 13,105,
+117,112, 67,114,101, 97,116,101, 86, 97,108, 0, 2, 0, 0, 0, 7,105,117,112,
+118, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 9, 64,118, 97,108, 46,108,117,
+ 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 7, 73, 85,
+ 80, 86, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 4,118, 97,108, 0,
+ 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2,
+ 0, 0, 0, 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 13, 77,
+ 79, 85, 83, 69, 77, 79, 86, 69, 95, 67, 66, 0, 2, 0, 0, 0, 13,109,111,117,
+115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, 21,105,117,112, 95,118,
+ 97,108, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0,
+ 12, 98,117,116,116,111,110,112,114,101,115,115, 0, 2, 0, 0, 0, 16, 66, 85,
+ 84, 84, 79, 78, 95, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,
+117,112, 95,118, 97,108, 95, 98,117,116,116,111,110, 95,112,114,101,115,115, 95,
+ 99, 98, 0, 2, 0, 0, 0, 14, 98,117,116,116,111,110,114,101,108,101, 97,115,
+101, 0, 2, 0, 0, 0, 18, 66, 85, 84, 84, 79, 78, 95, 82, 69, 76, 69, 65, 83,
+ 69, 95, 67, 66, 0, 2, 0, 0, 0, 26,105,117,112, 95,118, 97,108, 95, 98,117,
+116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, 2, 0, 0, 0,
+ 16, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0,
+ 0, 18, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0,
+
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/val.lo");
+}
diff --git a/iup/srclua3/loh/val_be32.loh b/iup/srclua3/loh/val_be32.loh
new file mode 100755
index 0000000..58971c8
--- /dev/null
+++ b/iup/srclua3/loh/val_be32.loh
@@ -0,0 +1,45 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/val_be32.lo");
+*/
+/* ../obj/iuplua3/val_be32.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 9, 64,118, 97,108, 46,108,
+117, 97, 0, 0, 0, 0,109, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, 15,
+ 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9, 11,
+ 10, 22, 2, 11, 11, 4, 0, 29, 0, 2, 26, 15, 9, 11, 12, 15, 9, 18, 10, 26,
+ 15, 9, 18, 10, 11, 8, 15, 13, 26, 15, 9, 11, 14, 22, 2, 11, 15, 15, 16, 29,
+ 0, 2, 26, 15, 9, 11, 17, 22, 2, 11, 18, 15, 19, 29, 0, 2, 26, 15, 9, 11,
+ 20, 15, 9, 18, 14, 26, 15, 9, 11, 21, 15, 9, 18, 17, 26, 0, 0, 0, 0, 0,
+ 0, 0, 0, 22, 2, 0, 0, 0, 7, 73, 85, 80, 86, 65, 76, 0, 2, 0, 0, 0,
+ 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0,
+ 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,
+116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 9, 64,118, 97,108, 46,108,117, 97, 0,
+ 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 13,105,
+117,112, 67,114,101, 97,116,101, 86, 97,108, 0, 2, 0, 0, 0, 7,105,117,112,
+118, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 9, 64,118, 97,108, 46,108,117,
+ 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 7, 73, 85,
+ 80, 86, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 4,118, 97,108, 0,
+ 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2,
+ 0, 0, 0, 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 13, 77,
+ 79, 85, 83, 69, 77, 79, 86, 69, 95, 67, 66, 0, 2, 0, 0, 0, 13,109,111,117,
+115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, 21,105,117,112, 95,118,
+ 97,108, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0,
+ 12, 98,117,116,116,111,110,112,114,101,115,115, 0, 2, 0, 0, 0, 16, 66, 85,
+ 84, 84, 79, 78, 95, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,
+117,112, 95,118, 97,108, 95, 98,117,116,116,111,110, 95,112,114,101,115,115, 95,
+ 99, 98, 0, 2, 0, 0, 0, 14, 98,117,116,116,111,110,114,101,108,101, 97,115,
+101, 0, 2, 0, 0, 0, 18, 66, 85, 84, 84, 79, 78, 95, 82, 69, 76, 69, 65, 83,
+ 69, 95, 67, 66, 0, 2, 0, 0, 0, 26,105,117,112, 95,118, 97,108, 95, 98,117,
+116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, 2, 0, 0, 0,
+ 16, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0,
+ 0, 18, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0,
+
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/val_be32.lo");
+}
diff --git a/iup/srclua3/loh/val_be64.loh b/iup/srclua3/loh/val_be64.loh
new file mode 100755
index 0000000..d65e14b
--- /dev/null
+++ b/iup/srclua3/loh/val_be64.loh
@@ -0,0 +1,45 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/val_be64.lo");
+*/
+/* ../obj/iuplua3/val_be64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 9, 64,118, 97,108, 46,108,
+117, 97, 0, 0, 0, 0,109, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, 15,
+ 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9, 11,
+ 10, 22, 2, 11, 11, 4, 0, 29, 0, 2, 26, 15, 9, 11, 12, 15, 9, 18, 10, 26,
+ 15, 9, 18, 10, 11, 8, 15, 13, 26, 15, 9, 11, 14, 22, 2, 11, 15, 15, 16, 29,
+ 0, 2, 26, 15, 9, 11, 17, 22, 2, 11, 18, 15, 19, 29, 0, 2, 26, 15, 9, 11,
+ 20, 15, 9, 18, 14, 26, 15, 9, 11, 21, 15, 9, 18, 17, 26, 0, 0, 0, 0, 0,
+ 0, 0, 0, 22, 2, 0, 0, 0, 7, 73, 85, 80, 86, 65, 76, 0, 2, 0, 0, 0,
+ 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0,
+ 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,
+116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 9, 64,118, 97,108, 46,108,117, 97, 0,
+ 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 13,105,
+117,112, 67,114,101, 97,116,101, 86, 97,108, 0, 2, 0, 0, 0, 7,105,117,112,
+118, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 9, 64,118, 97,108, 46,108,117,
+ 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 7, 73, 85,
+ 80, 86, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 4,118, 97,108, 0,
+ 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2,
+ 0, 0, 0, 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 13, 77,
+ 79, 85, 83, 69, 77, 79, 86, 69, 95, 67, 66, 0, 2, 0, 0, 0, 13,109,111,117,
+115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, 21,105,117,112, 95,118,
+ 97,108, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0,
+ 12, 98,117,116,116,111,110,112,114,101,115,115, 0, 2, 0, 0, 0, 16, 66, 85,
+ 84, 84, 79, 78, 95, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,
+117,112, 95,118, 97,108, 95, 98,117,116,116,111,110, 95,112,114,101,115,115, 95,
+ 99, 98, 0, 2, 0, 0, 0, 14, 98,117,116,116,111,110,114,101,108,101, 97,115,
+101, 0, 2, 0, 0, 0, 18, 66, 85, 84, 84, 79, 78, 95, 82, 69, 76, 69, 65, 83,
+ 69, 95, 67, 66, 0, 2, 0, 0, 0, 26,105,117,112, 95,118, 97,108, 95, 98,117,
+116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, 2, 0, 0, 0,
+ 16, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0,
+ 0, 18, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0,
+
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/val_be64.lo");
+}
diff --git a/iup/srclua3/loh/val_le64.loh b/iup/srclua3/loh/val_le64.loh
new file mode 100755
index 0000000..179e80a
--- /dev/null
+++ b/iup/srclua3/loh/val_le64.loh
@@ -0,0 +1,45 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iuplua3/val_le64.lo");
+*/
+/* ../obj/iuplua3/val_le64.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 9, 64,118, 97,108, 46,108,
+117, 97, 0, 0, 0, 0,109, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, 15,
+ 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9, 11,
+ 10, 22, 2, 11, 11, 4, 0, 29, 0, 2, 26, 15, 9, 11, 12, 15, 9, 18, 10, 26,
+ 15, 9, 18, 10, 11, 8, 15, 13, 26, 15, 9, 11, 14, 22, 2, 11, 15, 15, 16, 29,
+ 0, 2, 26, 15, 9, 11, 17, 22, 2, 11, 18, 15, 19, 29, 0, 2, 26, 15, 9, 11,
+ 20, 15, 9, 18, 14, 26, 15, 9, 11, 21, 15, 9, 18, 17, 26, 0, 0, 0, 0, 0,
+ 0, 0, 0, 22, 2, 0, 0, 0, 7, 73, 85, 80, 86, 65, 76, 0, 2, 0, 0, 0,
+ 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0,
+ 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,
+116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 9, 64,118, 97,108, 46,108,117, 97, 0,
+ 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 13,105,
+117,112, 67,114,101, 97,116,101, 86, 97,108, 0, 2, 0, 0, 0, 7,105,117,112,
+118, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 9, 64,118, 97,108, 46,108,117,
+ 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 7, 73, 85,
+ 80, 86, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,
+114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 4,118, 97,108, 0,
+ 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2,
+ 0, 0, 0, 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 13, 77,
+ 79, 85, 83, 69, 77, 79, 86, 69, 95, 67, 66, 0, 2, 0, 0, 0, 13,109,111,117,
+115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, 21,105,117,112, 95,118,
+ 97,108, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0,
+ 12, 98,117,116,116,111,110,112,114,101,115,115, 0, 2, 0, 0, 0, 16, 66, 85,
+ 84, 84, 79, 78, 95, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,
+117,112, 95,118, 97,108, 95, 98,117,116,116,111,110, 95,112,114,101,115,115, 95,
+ 99, 98, 0, 2, 0, 0, 0, 14, 98,117,116,116,111,110,114,101,108,101, 97,115,
+101, 0, 2, 0, 0, 0, 18, 66, 85, 84, 84, 79, 78, 95, 82, 69, 76, 69, 65, 83,
+ 69, 95, 67, 66, 0, 2, 0, 0, 0, 26,105,117,112, 95,118, 97,108, 95, 98,117,
+116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, 2, 0, 0, 0,
+ 16, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0,
+ 0, 18, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0,
+
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/val_le64.lo");
+}
diff --git a/iup/srclua3/loh/val_le64w.loh b/iup/srclua3/loh/val_le64w.loh
new file mode 100755
index 0000000..65ce1be
--- /dev/null
+++ b/iup/srclua3/loh/val_le64w.loh
@@ -0,0 +1,45 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ lua_dofile("../obj/iupluacontrols3/luaval_le64w.lo");
+*/
+/* ../obj/iupluacontrols3/luaval_le64w.lo */
+static unsigned char B1[]={
+ 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,108,117, 97,118, 97,
+108, 46,108,117, 97, 0, 0, 0, 0,109, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0,
+ 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26,
+ 15, 9, 11, 10, 22, 2, 11, 11, 4, 0, 29, 0, 2, 26, 15, 9, 11, 12, 15, 9,
+ 18, 10, 26, 15, 9, 18, 10, 11, 8, 15, 13, 26, 15, 9, 11, 14, 22, 2, 11, 15,
+ 15, 16, 29, 0, 2, 26, 15, 9, 11, 17, 22, 2, 11, 18, 15, 19, 29, 0, 2, 26,
+ 15, 9, 11, 20, 15, 9, 18, 14, 26, 15, 9, 11, 21, 15, 9, 18, 17, 26, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 7, 73, 85, 80, 86, 65, 76, 0, 2,
+ 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71,
+ 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,
+109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 12, 64,108,117, 97,118, 97,
+108, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3,
+ 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0,
+ 2, 0, 0, 0, 13,105,117,112, 67,114,101, 97,116,101, 86, 97,108, 0, 2, 0,
+ 0, 0, 7,105,117,112,118, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 12, 64,
+108,117, 97,118, 97,108, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20,
+ 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,
+111, 0, 2, 0, 0, 0, 7, 73, 85, 80, 86, 65, 76, 0, 2, 0, 0, 0, 12, 67,
+111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0,
+ 2, 0, 0, 0, 4,118, 97,108, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,
+108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,109,111,117,115,101,109,111,
+118,101, 0, 2, 0, 0, 0, 13, 77, 79, 85, 83, 69, 77, 79, 86, 69, 95, 67, 66,
+ 0, 2, 0, 0, 0, 13,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2,
+ 0, 0, 0, 21,105,117,112, 95,118, 97,108, 95,109,111,117,115,101,109,111,118,
+101, 95, 99, 98, 0, 2, 0, 0, 0, 12, 98,117,116,116,111,110,112,114,101,115,
+115, 0, 2, 0, 0, 0, 16, 66, 85, 84, 84, 79, 78, 95, 80, 82, 69, 83, 83, 95,
+ 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,118, 97,108, 95, 98,117,116,116,
+111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 14, 98,117,116,
+116,111,110,114,101,108,101, 97,115,101, 0, 2, 0, 0, 0, 18, 66, 85, 84, 84,
+ 79, 78, 95, 82, 69, 76, 69, 65, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 26,105,
+117,112, 95,118, 97,108, 95, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,
+101, 95, 99, 98, 0, 2, 0, 0, 0, 16, 98,117,116,116,111,110, 95,112,114,101,
+115,115, 95, 99, 98, 0, 2, 0, 0, 0, 18, 98,117,116,116,111,110, 95,114,101,
+108,101, 97,115,101, 95, 99, 98, 0,
+};
+
+ lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luaval_le64w.lo");
+}
diff --git a/iup/srclua3/make_uname b/iup/srclua3/make_uname
new file mode 100755
index 0000000..f87a836
--- /dev/null
+++ b/iup/srclua3/make_uname
@@ -0,0 +1,8 @@
+#This builds all the libraries of the folder for 1 uname
+
+tecmake $1 $2 $3 $4 $5 $6 $7 $8
+tecmake $1 MF=iupcd $2 $3 $4 $5 $6 $7 $8
+tecmake $1 MF=iupcontrols $2 $3 $4 $5 $6 $7 $8
+tecmake $1 MF=iup_pplot $2 $3 $4 $5 $6 $7 $8
+tecmake $1 MF=iupgl $2 $3 $4 $5 $6 $7 $8
+tecmake $1 MF=iupim $2 $3 $4 $5 $6 $7 $8
diff --git a/iup/srclua3/make_uname.bat b/iup/srclua3/make_uname.bat
new file mode 100755
index 0000000..0cb97de
--- /dev/null
+++ b/iup/srclua3/make_uname.bat
@@ -0,0 +1,10 @@
+@echo off
+REM This builds all the libraries of the folder for 1 uname
+
+call tecmake %1 %2 %3 %4 %5 %6 %7 %8
+call tecmake %1 "MF=iupcd" %2 %3 %4 %5 %6 %7 %8
+call tecmake %1 "MF=iupcontrols" %2 %3 %4 %5 %6 %7 %8
+call tecmake %1 "MF=iup_pplot" %2 %3 %4 %5 %6 %7 %8
+call tecmake %1 "MF=iupgl" %2 %3 %4 %5 %6 %7 %8
+call tecmake %1 "MF=iupim" %2 %3 %4 %5 %6 %7 %8
+call tecmake %1 "MF=iupole" %2 %3 %4 %5 %6 %7 %8
diff --git a/iup/srclua3/matrix.lua b/iup/srclua3/matrix.lua
new file mode 100755
index 0000000..26ca723
--- /dev/null
+++ b/iup/srclua3/matrix.lua
@@ -0,0 +1,54 @@
+IUPMATRIX = {parent = WIDGET}
+
+function IUPMATRIX:CreateIUPelement (obj)
+ return iupCreateMatrix ()
+end
+
+function IUPMATRIX:setcell(l,c,val)
+ IupSetAttribute(self,l..":"..c,val)
+end
+
+function IUPMATRIX:getcell(l,c,val)
+ return IupGetAttribute(self,l..":"..c)
+end
+
+function iupmatrix (o)
+ return IUPMATRIX:Constructor (o)
+end
+iup.matrix = iupmatrix
+
+
+iup_callbacks.actioncb.matrix = iup_mat_action_cb
+iup_callbacks.mousemove.matrix = iup_mat_mousemove_cb
+
+iup_callbacks.edition = {"EDITION_CB", iup_mat_edition_cb}
+iup_callbacks.drop = {"DROP_CB", iup_mat_drop_cb}
+iup_callbacks.dropselect = {"DROPSELECT_CB", iup_mat_dropselect_cb}
+iup_callbacks.enteritem = {"ENTERITEM_CB", iup_mat_enteritem_cb}
+iup_callbacks.leaveitem = {"LEAVEITEM_CB", iup_mat_leaveitem_cb}
+iup_callbacks.click = {"CLICK_CB", iup_mat_click_cb}
+iup_callbacks.scrolltop = {"SCROLLTOP_CB", iup_mat_scrolltop_cb}
+iup_callbacks.valuecb = {"VALUE_CB", iup_mat_value_cb}
+iup_callbacks.draw = {"DRAW_CB", iup_mat_draw_cb}
+iup_callbacks.dropcheck = {"DROPCHECK_CB", iup_mat_dropcheck_cb}
+iup_callbacks.fgcolorcb = {"FGCOLOR_CB", iup_mat_fgcolor_cb}
+iup_callbacks.bgcolorcb = {"BGCOLOR_CB", iup_mat_bgcolor_cb}
+iup_callbacks.value_edit = {"VALUE_EDIT_CB", iup_mat_value_edit_cb}
+iup_callbacks.markedit_cb = {"MARKEDIT_CB", iup_mat_markedit_cb}
+iup_callbacks.mark_cb = {"MARK_CB", iup_mat_mark_cb}
+iup_callbacks.mouse_cb = {"MOUSE_CB", iup_mat_mouse_cb}
+iup_callbacks.font_cb = {"FONT_CB", iup_mat_font_cb}
+
+iup_callbacks.edition_cb = iup_callbacks.edition
+iup_callbacks.drop_cb = iup_callbacks.drop
+iup_callbacks.dropselect_cb = iup_callbacks.dropselect
+iup_callbacks.enteritem_cb = iup_callbacks.enteritem
+iup_callbacks.leaveitem_cb = iup_callbacks.leaveitem
+iup_callbacks.click_cb = iup_callbacks.click
+iup_callbacks.scrolltop_cb = iup_callbacks.scrolltop
+iup_callbacks.value_cb = iup_callbacks.valuecb
+iup_callbacks.draw_cb = iup_callbacks.draw
+iup_callbacks.dropcheck_cb = iup_callbacks.dropcheck
+iup_callbacks.fgcolor_cb = iup_callbacks.fgcolorcb
+iup_callbacks.bgcolor_cb = iup_callbacks.bgcolorcb
+iup_callbacks.value_edit_cb = iup_callbacks.value_edit
diff --git a/iup/srclua3/pplot.lua b/iup/srclua3/pplot.lua
new file mode 100755
index 0000000..ba51893
--- /dev/null
+++ b/iup/srclua3/pplot.lua
@@ -0,0 +1,23 @@
+IUPPPLOT = {parent = WIDGET}
+
+function IUPPPLOT:CreateIUPelement (obj)
+ return iupCreatePPlot ()
+end
+
+function iuppplot (o)
+ return IUPPPLOT:Constructor (o)
+end
+iup.pplot = iuppplot
+
+iup_callbacks.edit_cb.pplot = iup_pplot_edit_cb
+
+iup_callbacks.editbegin_cb = {"EDITBEGIN_CB", iup_pplot_editbegin_cb}
+iup_callbacks.editend_cb = {"EDITEND_CB", iup_pplot_editend_cb}
+iup_callbacks.select_cb = {"SELECT_CB", iup_pplot_select_cb}
+iup_callbacks.selectbegin_cb = {"SELECTBEGIN_CB", iup_pplot_selectbegin_cb}
+iup_callbacks.selectend_cb = {"SELECTEND_CB", iup_pplot_selectend_cb}
+iup_callbacks.delete_cb = {"DELETE_CB", iup_pplot_delete_cb}
+iup_callbacks.deletebegin_cb = {"DELETEBEGIN_CB", iup_pplot_deletebegin_cb}
+iup_callbacks.deleteend_cb = {"DELETEEND_CB", iup_pplot_deleteend_cb}
+iup_callbacks.predraw_cb = {"PREDRAW_CB", iup_pplot_predraw_cb}
+iup_callbacks.postdraw_cb = {"POSTDRAW_CB", iup_pplot_postdraw_cb}
diff --git a/iup/srclua3/sbox.lua b/iup/srclua3/sbox.lua
new file mode 100755
index 0000000..d687e0a
--- /dev/null
+++ b/iup/srclua3/sbox.lua
@@ -0,0 +1,10 @@
+IUPSBOX = {parent = WIDGET}
+
+function IUPSBOX:CreateIUPelement (obj)
+ return iupCreateSbox(obj[1])
+end
+
+function iupsbox (o)
+ return IUPSBOX:Constructor (o)
+end
+iup.sbox = iupsbox
diff --git a/iup/srclua3/spin.lua b/iup/srclua3/spin.lua
new file mode 100755
index 0000000..b0b23fc
--- /dev/null
+++ b/iup/srclua3/spin.lua
@@ -0,0 +1,24 @@
+IUPSPIN = {parent = WIDGET}
+
+function IUPSPIN:CreateIUPelement (obj)
+ return iupCreateSpin ()
+end
+
+function iupspin (o)
+ return IUPSPIN:Constructor (o)
+end
+iup.spin = iupspin
+
+IUPSPINBOX = {parent = WIDGET}
+
+function IUPSPINBOX:CreateIUPelement (obj)
+ return iupCreateSpinbox (obj[1])
+end
+
+function iupspinbox (o)
+ return IUPSPINBOX:Constructor (o)
+end
+iup.spinbox = iupspinbox
+
+iup_callbacks.spincb = {"SPIN_CB", iup_spin_cb}
+iup_callbacks.spin_cb = iup_callbacks.spincb
diff --git a/iup/srclua3/tabs.lua b/iup/srclua3/tabs.lua
new file mode 100755
index 0000000..845e04b
--- /dev/null
+++ b/iup/srclua3/tabs.lua
@@ -0,0 +1,13 @@
+IUPTABS = {parent = WIDGET}
+
+function IUPTABS:CreateIUPelement (obj)
+ return iupCreateTabs (obj, getn(obj))
+end
+
+function iuptabs (o)
+ return IUPTABS:Constructor (o)
+end
+iup.tabs = iuptabs
+
+iup_callbacks.tabchange = {"TABCHANGE_CB", iup_tabchange_cb}
+iup_callbacks.tabchange_cb = iup_callbacks.tabchange \ No newline at end of file
diff --git a/iup/srclua3/tree.lua b/iup/srclua3/tree.lua
new file mode 100755
index 0000000..659afdb
--- /dev/null
+++ b/iup/srclua3/tree.lua
@@ -0,0 +1,68 @@
+IUPTREE = {parent = WIDGET}
+IUPTREEREFERENCETABLE = {} -- Used in C, see luatree.c
+
+function IUPTREE:CreateIUPelement (obj)
+ return iupCreateTree ()
+end
+
+function iuptree (o)
+ return IUPTREE:Constructor (o)
+end
+iup.tree = iuptree
+
+function TreeSetValueRec(handle, t, id)
+
+ if t == nil then return end
+
+ local cont = getn(t)
+
+ while cont >= 0 do
+ if type (t[cont]) == "table" then
+ if t[cont].branchname ~= nil then
+ IupSetAttribute(handle, "ADDBRANCH"..id, t[cont].branchname)
+ else
+ IupSetAttribute(handle, "ADDBRANCH"..id, "")
+ end
+ TreeSetValueRec(handle, t[cont], id+1)
+ else
+ if t[cont] then
+ IupSetAttribute(handle, "ADDLEAF"..id, t[cont])
+ end
+ end
+ cont = cont - 1
+ end
+end
+
+function TreeSetValue(handle, t)
+ if type(t) ~= "table" then
+ IupMessage("TreeLua Error", "Incorrect arguments to function TreeSetValue")
+ return
+ end
+ if t.branchname ~= nil then
+ IupSetAttribute(handle, "NAME", t.branchname)
+ end
+ TreeSetValueRec(handle, t, 0)
+end
+iup.TreeSetValue = TreeSetValue
+
+iup_callbacks.selection = {"SELECTION_CB", iup_tree_selection_cb}
+iup_callbacks.multiselection = {"MULTISELECTION_CB", iup_tree_multiselection_cb}
+iup_callbacks.branchopen = {"BRANCHOPEN_CB", iup_tree_branchopen_cb}
+iup_callbacks.branchclose = {"BRANCHCLOSE_CB", iup_tree_branchclose_cb}
+iup_callbacks.executeleaf = {"EXECUTELEAF_CB", iup_tree_executeleaf_cb}
+iup_callbacks.renamenode = {"RENAMENODE_CB", iup_tree_renamenode_cb}
+iup_callbacks.renamecb = {"RENAME_CB", iup_tree_renamecb_cb}
+iup_callbacks.showrenamecb = {"SHOWRENAME_CB", iup_tree_showrenamecb_cb}
+iup_callbacks.rightclick = {"RIGHTCLICK_CB", iup_tree_rightclick_cb}
+iup_callbacks.dragdrop = {"DRAGDROP_CB", iup_tree_dragdrop_cb}
+
+iup_callbacks.selection_cb = iup_callbacks.selection
+iup_callbacks.multiselection_cb = iup_callbacks.multiselection
+iup_callbacks.branchopen_cb = iup_callbacks.branchopen
+iup_callbacks.branchclose_cb = iup_callbacks.branchclose
+iup_callbacks.executeleaf_cb = iup_callbacks.executeleaf
+iup_callbacks.renamenode_cb = iup_callbacks.renamenode
+iup_callbacks.rename_cb = iup_callbacks.renamecb
+iup_callbacks.showrename_cb = iup_callbacks.showrenamecb
+iup_callbacks.rightclick_cb = iup_callbacks.rightclick
+iup_callbacks.dragdrop_cb = iup_callbacks.dragdrop
diff --git a/iup/srclua3/val.lua b/iup/srclua3/val.lua
new file mode 100755
index 0000000..e614421
--- /dev/null
+++ b/iup/srclua3/val.lua
@@ -0,0 +1,22 @@
+IUPVAL = {parent = WIDGET}
+
+function IUPVAL:CreateIUPelement (obj)
+ return iupCreateVal (obj[1])
+end
+
+function iupval (o)
+ return IUPVAL:Constructor (o)
+end
+iup.val = iupval
+
+
+-- must set here because it is also used elsewhere with a different signature
+iup_callbacks.mousemove = {"MOUSEMOVE_CB", nil}
+iup_callbacks.mousemove_cb = iup_callbacks.mousemove
+iup_callbacks.mousemove.val = iup_val_mousemove_cb
+
+iup_callbacks.buttonpress = {"BUTTON_PRESS_CB", iup_val_button_press_cb}
+iup_callbacks.buttonrelease = {"BUTTON_RELEASE_CB", iup_val_button_release_cb}
+
+iup_callbacks.button_press_cb = iup_callbacks.buttonpress
+iup_callbacks.button_release_cb = iup_callbacks.buttonrelease
diff --git a/iup/srclua5/Makefile b/iup/srclua5/Makefile
new file mode 100755
index 0000000..3942e79
--- /dev/null
+++ b/iup/srclua5/Makefile
@@ -0,0 +1,24 @@
+
+.PHONY: do_all iuplua iupluacd iupluacontrols iuplua_pplot iupluagl iupluaim iupluaimglib
+do_all: iuplua iupluacd iupluacontrols iuplua_pplot iupluagl iupluaim iupluaimglib
+
+iuplua:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak
+
+iupluacd:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupcd
+
+iupluacontrols:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupcontrols
+
+iuplua_pplot:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iup_pplot
+
+iupluagl:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupgl
+
+iupluaim:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupim
+
+iupluaimglib:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupimglib
diff --git a/iup/srclua5/button.lua b/iup/srclua5/button.lua
new file mode 100755
index 0000000..946a05e
--- /dev/null
+++ b/iup/srclua5/button.lua
@@ -0,0 +1,18 @@
+------------------------------------------------------------------------------
+-- Button class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "button",
+ parent = WIDGET,
+ creation = "S-",
+ callback = {
+ action = "",
+ }
+}
+
+function ctrl.createElement(class, arg)
+ return Button(arg.title)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/canvas.lua b/iup/srclua5/canvas.lua
new file mode 100755
index 0000000..562d671
--- /dev/null
+++ b/iup/srclua5/canvas.lua
@@ -0,0 +1,29 @@
+------------------------------------------------------------------------------
+-- Canvas class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "canvas",
+ parent = WIDGET,
+ creation = "-",
+ callback = {
+ action = "ff",
+ button_cb = "nnnns",
+ enterwindow_cb = "",
+ leavewindow_cb = "",
+ motion_cb = "nns",
+ resize_cb = "nn",
+ scroll_cb = "nff",
+ keypress_cb = "nn",
+ wom_cb = "n",
+ wheel_cb = "fnns",
+ mdiactivate_cb = "",
+ focus_cb = "n",
+ }
+}
+
+function ctrl.createElement(class, arg)
+ return Canvas()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/cbox.lua b/iup/srclua5/cbox.lua
new file mode 100755
index 0000000..3533970
--- /dev/null
+++ b/iup/srclua5/cbox.lua
@@ -0,0 +1,28 @@
+------------------------------------------------------------------------------
+-- Cbox class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "cbox",
+ parent = WIDGET,
+ creation = "v",
+ callback = {},
+ funcname = "Cboxv",
+ createfunc = [[
+static int Cboxv(lua_State *L)
+{
+ Ihandle **hlist = iuplua_checkihandle_array(L, 1);
+ Ihandle *h = IupCboxv(hlist);
+ iuplua_plugstate(L, h);
+ iuplua_pushihandle_raw(L, h);
+ free(hlist);
+ return 1;
+}
+ ]],
+}
+
+function ctrl.createElement(class, arg)
+ return Cboxv(arg)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/cells.lua b/iup/srclua5/cells.lua
new file mode 100755
index 0000000..9c914f2
--- /dev/null
+++ b/iup/srclua5/cells.lua
@@ -0,0 +1,32 @@
+------------------------------------------------------------------------------
+-- Cells class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "cells",
+ parent = WIDGET,
+ creation = "",
+ callback = {
+ mouseclick_cb = "nnnnnns",
+ mousemotion_cb = "nnnns",
+ scrolling_cb = "nn",
+-- draw_cb = "nnnnnnn", -- already registered by the matrix
+ width_cb = "n",
+ height_cb = "n",
+ nlines_cb = "",
+ ncols_cb = "",
+ hspan_cb = "nn",
+ vspan_cb = "nn",
+ },
+ include = "iupcontrols.h",
+}
+
+function ctrl.redraw(handle)
+ handle.repaint = "YES"
+end
+
+function ctrl.createElement(class, arg)
+ return Cells()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/clipboard.lua b/iup/srclua5/clipboard.lua
new file mode 100755
index 0000000..e60b8bd
--- /dev/null
+++ b/iup/srclua5/clipboard.lua
@@ -0,0 +1,17 @@
+------------------------------------------------------------------------------
+-- Clipboard class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "clipboard",
+ parent = WIDGET,
+ creation = "",
+ callback = {
+ },
+}
+
+function ctrl.createElement(class, arg)
+ return Clipboard()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/colorbar.lua b/iup/srclua5/colorbar.lua
new file mode 100755
index 0000000..524d5f3
--- /dev/null
+++ b/iup/srclua5/colorbar.lua
@@ -0,0 +1,26 @@
+------------------------------------------------------------------------------
+-- Colorbar class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "colorbar",
+ parent = WIDGET,
+ creation = "",
+ callback = {
+ select_cb = "nn",
+ cell_cb = {"n", ret = "s"},
+ switch_cb = "nn",
+ extended_cb = "n",
+ },
+ funcname = "Colorbar",
+ include = "iupcontrols.h",
+}
+
+PRIMARY = -1
+SECONDARY = -2
+
+function ctrl.createElement(class, arg)
+ return Colorbar(arg.action)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/colorbrowser.lua b/iup/srclua5/colorbrowser.lua
new file mode 100755
index 0000000..16ac58f
--- /dev/null
+++ b/iup/srclua5/colorbrowser.lua
@@ -0,0 +1,21 @@
+------------------------------------------------------------------------------
+-- ColorBrowser class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "colorbrowser",
+ parent = WIDGET,
+ creation = "",
+ callback = {
+ drag_cb = "ccc",
+ change_cb = "ccc",
+ },
+ funcname = "ColorBrowser",
+ include = "iupcontrols.h",
+}
+
+function ctrl.createElement(class, arg)
+ return ColorBrowser(arg.action)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/colordlg.lua b/iup/srclua5/colordlg.lua
new file mode 100755
index 0000000..6eea53b
--- /dev/null
+++ b/iup/srclua5/colordlg.lua
@@ -0,0 +1,26 @@
+------------------------------------------------------------------------------
+-- ColorDlg class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "colordlg",
+ parent = WIDGET,
+ creation = "",
+ funcname = "ColorDlg",
+ callback = {}
+}
+
+function ctrl.popup(handle, x, y)
+ Popup(handle,x,y)
+end
+
+function ctrl.destroy(handle)
+ return Destroy(handle)
+end
+
+function ctrl.createElement(class, arg)
+ return ColorDlg()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
+
diff --git a/iup/srclua5/config.mak b/iup/srclua5/config.mak
new file mode 100755
index 0000000..7979f0e
--- /dev/null
+++ b/iup/srclua5/config.mak
@@ -0,0 +1,31 @@
+PROJNAME = iup
+LIBNAME = iuplua51
+OPT = YES
+DEF_FILE = iuplua5.def
+
+DEFINES = IUPLUA_USELOH
+
+USE_LUA51 = Yes
+NO_LUALINK = Yes
+
+INCLUDES = ../include ../src
+LDIR = ../lib/$(TEC_UNAME)
+LIBS = iup
+
+CTRLUA = button.lua canvas.lua dialog.lua colordlg.lua clipboard.lua \
+ filedlg.lua fill.lua frame.lua hbox.lua normalizer.lua \
+ item.lua image.lua imagergb.lua imagergba.lua label.lua \
+ menu.lua multiline.lua list.lua separator.lua user.lua \
+ submenu.lua text.lua toggle.lua vbox.lua zbox.lua timer.lua \
+ sbox.lua spin.lua spinbox.lua cbox.lua messagedlg.lua \
+ radio.lua val.lua tabs.lua fontdlg.lua tree.lua progressbar.lua
+
+GC := $(addsuffix .c, $(basename $(CTRLUA)))
+GC := $(addprefix il_, $(GC))
+SRCLUA = iuplua.lua constants.lua $(CTRLUA)
+LOHDIR = loh
+
+$(GC) : il_%.c : %.lua generator.lua
+ $(LUABIN) generator.lua $<
+
+SRC = iuplua.c iuplua_api.c il_tree_aux.c il_scanf.c il_getparam.c il_getcolor.c $(GC)
diff --git a/iup/srclua5/constants.lua b/iup/srclua5/constants.lua
new file mode 100755
index 0000000..9a72f6a
--- /dev/null
+++ b/iup/srclua5/constants.lua
@@ -0,0 +1,72 @@
+-- This file is executed with the "iup" table already as the globalindex
+
+----------------------------------------------------------------------------
+-- Common return values
+----------------------------------------------------------------------------
+ERROR = 1
+NOERROR = 0
+OPENED = -1
+INVALID = -1
+
+----------------------------------------------------------------------------
+-- Callback return values
+----------------------------------------------------------------------------
+IGNORE = -1
+DEFAULT = -2
+CLOSE = -3
+CONTINUE = -4
+
+----------------------------------------------------------------------------
+-- IupPopup e IupShowXY
+----------------------------------------------------------------------------
+CENTER = 65535
+LEFT = 65534
+RIGHT = 65533
+MOUSEPOS = 65532
+CURRENT = 65531
+CENTERPARENT = 65530
+TOP = LEFT
+BOTTOM = RIGHT
+
+----------------------------------------------------------------------------
+-- Scrollbar
+----------------------------------------------------------------------------
+SBUP = 0
+SBDN = 1
+SBPGUP = 2
+SBPGDN = 3
+SBPOSV = 4
+SBDRAGV = 5
+SBLEFT = 6
+SBRIGHT = 7
+SBPGLEFT = 8
+SBPGRIGHT = 9
+SBPOSH = 10
+SBDRAGH = 11
+
+----------------------------------------------------------------------------
+-- SHOW_CB
+----------------------------------------------------------------------------
+SHOW = 0
+RESTORE = 1
+MINIMIZE = 2
+MAXIMIZE = 3
+HIDE = 4
+
+----------------------------------------------------------------------------
+-- BUTTON_CB
+----------------------------------------------------------------------------
+BUTTON1 = string.byte('1')
+BUTTON2 = string.byte('2')
+BUTTON3 = string.byte('3')
+BUTTON4 = string.byte('4')
+BUTTON5 = string.byte('5')
+
+----------------------------------------------------------------------------
+-- Pre-Defined Masks
+----------------------------------------------------------------------------
+MASK_FLOAT = "[+/-]?(/d+/.?/d*|/./d+)"
+MASK_UFLOAT = "(/d+/.?/d*|/./d+)"
+MASK_EFLOAT = "[+/-]?(/d+/.?/d*|/./d+)([eE][+/-]?/d+)?"
+MASK_INT = "[+/-]?/d+"
+MASK_UINT = "/d+"
diff --git a/iup/srclua5/ctrl_template.lua b/iup/srclua5/ctrl_template.lua
new file mode 100755
index 0000000..f314ac6
--- /dev/null
+++ b/iup/srclua5/ctrl_template.lua
@@ -0,0 +1,94 @@
+------------------------------------------------------------------------------
+-- Template to create control classes for IupLua5
+-- The Lua module is used by the "generator.lua" to build a C module,
+-- and loaded during iuplua_open to initialize the control.
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "mycontrol", -- name of the control, used in the control creation: iup.mycontrol{}
+ -- also used for the generated C module
+ parent = WIDGET, -- used to define a few methods used fro creation and set attribute
+ creation = "nn", -- the creation parameters in Lua
+ -- "n" = int
+ -- "d" = double
+ -- "s" = char*
+ -- "S" = optional char*, can be nil
+ -- "i" = Ihandle*
+ -- "-" = NULL, no parameters in Lua, but a NULL parameter in C
+ -- "a" = char* array in a table
+ -- "t" = int array in a table
+ -- "v" = Ihandle* array in a table
+
+ funcname = "myControl", -- [optional] name of the function used in C
+ -- default is ctrl.nick with first letter uppercase
+
+ callback = { -- partial list of callbacks
+ -- only the callbacks that are not already defined by other controls needs to be defined
+ action = "ff",
+ button_cb = "nnnns",
+ enterwindow_cb = "",
+ leavewindow_cb = "",
+ motion_cb = "nns",
+ resize_cb = "nn",
+ scroll_cb = "nff",
+ keypress_cb = "nn",
+ wom_cb = "n",
+ wheel_cb = "fnns",
+ mdiactivate_cb = "",
+ focus_cb = "n",
+ value_cb = {"nn", ret = "s"}, -- ret is return type, default is n ("int")
+
+ -- the following types can be used for callback parameters:
+ -- n = "int",
+ -- s = "char *",
+ -- i = "Ihandle *",
+ -- c = "unsigned char ",
+ -- d = "double",
+ -- f = "float",
+ -- v = "Ihandle **",
+ --
+ -- Other parameters must be implemented in C using the extrafuncs module
+
+ -- IMPORTANT: callbacks with the same name in different controls
+ -- are assumed to have the same parameters, that's why they are defined only once
+ -- When callbacks conflict using the same name, but different parameters
+ -- generator.lua must be edited to include the callback in the list of conflicting callbacks
+ -- "action" is a common callback that conflicts
+ -- In the callback list, just declare the callback with the parameters used in that control.
+ }
+
+ include = "iupmycontrol.h", -- [optional] header to be included, it is where the creation function is declared.
+ extrafuncs = 1, -- [optional] additional module in C called by the initialization function
+
+ createfunc = [[ -- [optional] creation function in C,
+ -- used if creation parameters needs some interpretation in C
+ -- not to be used together with funcname
+#include<stdlib.h>
+static int myControl (lua_State * L)
+{
+ xxxx;
+ yyyy;
+ return 1;
+}
+]]
+
+ extracode = [[ -- [optional] extra fucntions to be defined in C.
+int luaopen_iupluamycontrol51(lua_State* L)
+{
+ return iupmycontrollua_open(L);
+}
+]]
+
+}
+
+-- must be defined so the WIDGET constructor can call it
+function ctrl.createElement(class, arg)
+ return myControl()
+end
+
+-- here you can add some custom methods to the class
+function ctrl.popup(handle, x, y)
+ Popup(handle,x,y)
+end
+
+iupRegisterWidget(ctrl) -- will make iup.mycontrol available
+iupSetClass(ctrl, "iup widget") -- register the class in the registry
diff --git a/iup/srclua5/dial.lua b/iup/srclua5/dial.lua
new file mode 100755
index 0000000..0384b43
--- /dev/null
+++ b/iup/srclua5/dial.lua
@@ -0,0 +1,21 @@
+------------------------------------------------------------------------------
+-- Dial class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "dial",
+ parent = WIDGET,
+ creation = "s",
+ callback = {
+ mousemove_cb = "d", -- already registered by the val, but has a name conflict
+-- button_press_cb = "d", -- already registered by the val
+-- button_release_cb = "d", -- already registered by the val
+ },
+ include = "iupcontrols.h",
+}
+
+function ctrl.createElement(class, arg)
+ return Dial(arg[1])
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/dialog.lua b/iup/srclua5/dialog.lua
new file mode 100755
index 0000000..a996ad7
--- /dev/null
+++ b/iup/srclua5/dialog.lua
@@ -0,0 +1,36 @@
+------------------------------------------------------------------------------
+-- Dialog class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "dialog",
+ parent = WIDGET,
+ creation = "I",
+ callback = {
+ map_cb = "",
+ unmap_cb = "",
+ close_cb = "",
+ show_cb = "n",
+ move_cb = "nn",
+ trayclick_cb = "nnn",
+ dropfiles_cb = "snnn",
+ }
+}
+
+function ctrl.createElement(class, arg)
+ return Dialog(arg[1])
+end
+
+function ctrl.popup(handle, x, y)
+ Popup(handle,x,y)
+end
+
+function ctrl.showxy(handle, x, y)
+ return ShowXY(handle, x, y)
+end
+
+function ctrl.destroy(handle)
+ return Destroy(handle)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/filedlg.lua b/iup/srclua5/filedlg.lua
new file mode 100755
index 0000000..71c4bb4
--- /dev/null
+++ b/iup/srclua5/filedlg.lua
@@ -0,0 +1,28 @@
+------------------------------------------------------------------------------
+-- FileDlg class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "filedlg",
+ parent = WIDGET,
+ creation = "",
+ callback = {
+ file_cb = "ss",
+ },
+ funcname = "FileDlg"
+}
+
+function ctrl.popup(handle, x, y)
+ Popup(handle,x,y)
+end
+
+function ctrl.destroy(handle)
+ return Destroy(handle)
+end
+
+function ctrl.createElement(class, arg)
+ return FileDlg()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
+
diff --git a/iup/srclua5/fill.lua b/iup/srclua5/fill.lua
new file mode 100755
index 0000000..4bf7803
--- /dev/null
+++ b/iup/srclua5/fill.lua
@@ -0,0 +1,16 @@
+------------------------------------------------------------------------------
+-- Fill class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "fill",
+ parent = WIDGET,
+ creation = "",
+ callback = {}
+}
+
+function ctrl.createElement(class, arg)
+ return Fill()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/fontdlg.lua b/iup/srclua5/fontdlg.lua
new file mode 100755
index 0000000..2c88d26
--- /dev/null
+++ b/iup/srclua5/fontdlg.lua
@@ -0,0 +1,26 @@
+------------------------------------------------------------------------------
+-- FontDlg class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "fontdlg",
+ parent = WIDGET,
+ creation = "",
+ funcname = "FontDlg",
+ callback = {}
+}
+
+function ctrl.popup(handle, x, y)
+ Popup(handle,x,y)
+end
+
+function ctrl.destroy(handle)
+ return Destroy(handle)
+end
+
+function ctrl.createElement(class, arg)
+ return FontDlg()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
+
diff --git a/iup/srclua5/frame.lua b/iup/srclua5/frame.lua
new file mode 100755
index 0000000..7a1c1cc
--- /dev/null
+++ b/iup/srclua5/frame.lua
@@ -0,0 +1,16 @@
+------------------------------------------------------------------------------
+-- Frame class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "frame",
+ parent = WIDGET,
+ creation = "i",
+ callback = {}
+}
+
+function ctrl.createElement(class, arg)
+ return Frame(arg[1])
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/gauge.lua b/iup/srclua5/gauge.lua
new file mode 100755
index 0000000..45a72b3
--- /dev/null
+++ b/iup/srclua5/gauge.lua
@@ -0,0 +1,17 @@
+------------------------------------------------------------------------------
+-- Gauge class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "gauge",
+ parent = WIDGET,
+ creation = "",
+ callback = {},
+ include = "iupcontrols.h",
+}
+
+function ctrl.createElement(class, arg)
+ return Gauge(arg.action)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/generator.lua b/iup/srclua5/generator.lua
new file mode 100755
index 0000000..24fd325
--- /dev/null
+++ b/iup/srclua5/generator.lua
@@ -0,0 +1,222 @@
+
+function dofile(f)
+ pcall(loadfile(f))
+end
+
+-- compatibility functions (with iuplua.lua)
+function iupSetClass(ctrl, name)
+ element = ctrl
+end
+
+-- dummy functions
+iupluaNewClass = function() end
+iupSetMethod = iupluaNewClass
+iupRegisterWidget = iupluaNewClass
+
+c_types = {
+ n = "int",
+ s = "char *",
+ i = "Ihandle *",
+ c = "unsigned char ",
+ d = "double",
+ f = "float",
+ v = "Ihandle **",
+}
+
+-- Adjust the callbacks table
+function adjustcallbacktable(c)
+ d = {}
+ for i,j in pairs(c) do
+ if type(j) == "string" then
+ d[i] = { j, "IUP_".. string.upper(i)}
+ elseif type(j) == "table" then
+ d[i] = j
+ else
+ print("ERROR IN CALLBACK TABLE FORMAT")
+ end
+ end
+ return d
+end
+
+
+function header(o,i)
+ io.write [[
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don t change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+]]
+ if i then io.write('#include "',i,'"\n') end
+ io.write('#include "il.h"\n\n\n')
+end
+
+function firstupper(name)
+ return string.upper(string.sub(name,1,1)) .. string.sub(name,2,-1)
+end
+
+function write_creation(o, t)
+ local aux = {n = 1}
+ local u = firstupper(o)
+ local v = t.creation
+ local c = t.callback
+ if t.funcname then
+ u = t.funcname
+ end
+ io.write ("static int ",u,"(lua_State *L)\n")
+ io.write ("{\n")
+ if t.rettype == nil then io.write(" Ihandle *ih = Iup",u,"(")
+ elseif t.rettype == "n" then io.write(" int n = (Iup",u,"(")
+ elseif t.rettype == "s" then io.write(" char *s = (Iup",u,"(")
+ end
+ local max = string.len(v)
+ string.gsub(v, "(.)", function(p)
+ if p == "n" then io.write("luaL_checkint(L, ",aux.n,")")
+ elseif p == "d" then io.write("luaL_number(L, ",aux.n,")")
+ elseif p == "s" then io.write("(char *) luaL_checkstring(L, ",aux.n,")")
+ elseif p == "S" then io.write("(char *) luaL_optstring(L, ",aux.n,', NULL)')
+ elseif p == "i" then io.write("iuplua_checkihandle(L, ",aux.n,")")
+ elseif p == "I" then io.write("iuplua_checkihandleornil(L, ",aux.n,")")
+ elseif p == "-" then io.write("NULL")
+ elseif p == "a" then io.write("iuplua_checkstring_array(L, ",aux.n,")")
+ elseif p == "t" then io.write("iuplua_checkint_array(L, ",aux.n,")")
+ elseif p == "v" then io.write("iuplua_checkihandle_array(L, ",aux.n,")")
+ else io.write("FORMAT '", p, "' NOT SUPPORTED\n")
+ end
+ if aux.n < max then io.write(", ") end
+ aux.n = aux.n + 1
+ end)
+ io.write(");\n")
+
+ io.write(" iuplua_plugstate(L, ih);\n")
+ io.write(" iuplua_pushihandle_raw(L, ih);\n")
+ io.write(" return 1;\n")
+ io.write("}\n\n")
+end
+
+function write_callbacks(o, c)
+ local aux = { }
+ for i,v in pairs(c) do
+ local s = v[1]
+ local max = string.len(s)
+ aux.n = 0
+ io.write("static ")
+ if v.ret then
+ if v.ret == "s" then
+ io.write("char * ")
+ end
+ else
+ io.write("int ")
+ end
+ io.write(o, "_", i, "(Ihandle *self")
+ if max > 0 then io.write(", ") end
+ string.gsub(s, "(.)", function(p)
+ io.write(c_types[p], " p", aux.n)
+ aux.n = aux.n + 1
+ if aux.n < max then io.write(", ") end
+ end)
+ io.write(")\n{\n")
+ io.write(' lua_State *L = iuplua_call_start(self, "', i, '");')
+ aux.n = 0
+ string.gsub(s, "(.)", function(p)
+ if p == "n" or p == "f" or p == "d" or p == "c" then
+ io.write("\n lua_pushnumber(L, p"..aux.n..");")
+ elseif p == "s" then
+ io.write("\n lua_pushstring(L, p"..aux.n..");")
+ elseif p == "i" then
+ io.write("\n iuplua_pushihandle(L, p"..aux.n..");")
+ else
+ io.write("\n ERROR !! ")
+ end
+ aux.n = aux.n + 1
+ end)
+ if v.ret and v.ret == "s" then
+ io.write("\n return iuplua_call_rs(L, " .. max .. ");")
+ else
+ io.write("\n return iuplua_call(L, " .. max .. ");")
+ end
+ io.write("\n}\n\n")
+ end
+end
+
+function write_initialization(o,t)
+ local aux= {n=1}
+ local c = t.callback
+ local u = firstupper(o)
+ if t.extrafuncs then
+ io.write('void iuplua_', o,'funcs_open(lua_State *L);\n\n')
+ end
+ if t.openfuncname then
+ io.write("void ", t.openfuncname, "(lua_State * L)\n")
+ else
+ io.write("int iup", o,"lua_open(lua_State * L)\n")
+ end
+ io.write("{\n")
+ io.write(" iuplua_register(L, ")
+ if t.funcname then
+ u = t.funcname
+ end
+ io.write(u, ', "', u,'");\n\n')
+
+ for i,v in pairs(c) do
+ local type = "NULL"
+ if i == "action" or
+ i == "action_cb" or
+ i == "edit_cb" or
+ i == "mousemove_cb" then
+ type = '"'..string.lower(o)..'"'
+ end
+ io.write(' iuplua_register_cb(L, "',string.upper(i),'", (lua_CFunction)',o,'_',i,', ',type,');\n')
+ first = 0
+ end
+ io.write('\n')
+
+ if t.extrafuncs then
+ io.write(' iuplua_', o,'funcs_open(L);\n\n')
+ end
+ io.write('#ifdef IUPLUA_USELOH\n')
+ io.write('#ifdef TEC_BIGENDIAN\n')
+ io.write('#ifdef TEC_64\n')
+ io.write('#include "loh/', o,'_be64.loh"\n')
+ io.write('#else\n')
+ io.write('#include "loh/', o,'_be32.loh"\n')
+ io.write('#endif\n')
+ io.write('#else\n')
+ io.write('#ifdef TEC_64\n')
+ io.write('#ifdef WIN64\n')
+ io.write('#include "loh/', o,'_le64w.loh"\n')
+ io.write('#else\n')
+ io.write('#include "loh/', o,'_le64.loh"\n')
+ io.write('#endif\n')
+ io.write('#else\n')
+ io.write('#include "loh/', o,'.loh"\n')
+ io.write('#endif\n')
+ io.write('#endif\n')
+ io.write('#else\n')
+ io.write(' iuplua_dofile(L, "', o,'.lua");\n')
+ io.write('#endif\n\n')
+ io.write(' return 0;\n')
+ io.write("}\n\n")
+end
+
+dofile(arg[1])
+element.callback = adjustcallbacktable(element.callback)
+
+io.output("il_"..element.nick..".c")
+header(element.nick, element.include)
+write_callbacks(element.nick, element.callback)
+if element.createfunc == nil then
+ write_creation(element.nick, element)
+else
+ io.write(element.createfunc)
+end
+write_initialization(element.nick, element)
+if element.extracode then
+ io.write(element.extracode)
+end
diff --git a/iup/srclua5/glcanvas.lua b/iup/srclua5/glcanvas.lua
new file mode 100755
index 0000000..782e974
--- /dev/null
+++ b/iup/srclua5/glcanvas.lua
@@ -0,0 +1,46 @@
+------------------------------------------------------------------------------
+-- GLCanvas class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "glcanvas",
+ parent = WIDGET,
+ creation = "-",
+ funcname = "GLCanvas",
+ include = "iupgl.h",
+ callback = {
+ action = "nn",
+ },
+ extrafuncs = 1,
+ extracode = [[
+int iupgllua_open(lua_State * L)
+{
+ if (iuplua_opencall_internal(L))
+ IupGLCanvasOpen();
+
+ iuplua_changeEnv(L);
+ iupglcanvaslua_open(L);
+ iuplua_returnEnv(L);
+ return 0;
+}
+
+/* obligatory to use require"iupluagl" */
+int luaopen_iupluagl(lua_State* L)
+{
+ return iupgllua_open(L);
+}
+
+/* obligatory to use require"iupluagl51" */
+int luaopen_iupluagl51(lua_State* L)
+{
+ return iupgllua_open(L);
+}
+
+]]
+}
+
+function ctrl.createElement(class, arg)
+ return GLCanvas()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/hbox.lua b/iup/srclua5/hbox.lua
new file mode 100755
index 0000000..38213bb
--- /dev/null
+++ b/iup/srclua5/hbox.lua
@@ -0,0 +1,20 @@
+------------------------------------------------------------------------------
+-- HBox class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "hbox",
+ parent = BOX,
+ creation = "-",
+ callback = {}
+}
+
+function ctrl.append(handle, elem)
+ Append(handle, elem)
+end
+
+function ctrl.createElement(class, arg)
+ return Hbox()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/il.h b/iup/srclua5/il.h
new file mode 100755
index 0000000..81a0140
--- /dev/null
+++ b/iup/srclua5/il.h
@@ -0,0 +1,161 @@
+/** \file
+ * \brief IUPLua5 internal Functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IL_H
+#define __IL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int iuplistlua_open (lua_State * L);
+int iuplabellua_open (lua_State * L);
+int iupitemlua_open (lua_State * L);
+int iupimagelua_open (lua_State * L);
+int iuphboxlua_open (lua_State * L);
+int iupframelua_open (lua_State * L);
+int iupfilllua_open (lua_State * L);
+int iupfiledlglua_open (lua_State * L);
+int iupdialoglua_open (lua_State * L);
+int iupcanvaslua_open (lua_State * L);
+int iupbuttonlua_open (lua_State * L);
+int iupzboxlua_open (lua_State * L);
+int iupvboxlua_open (lua_State * L);
+int iuptogglelua_open (lua_State * L);
+int iuptimerlua_open (lua_State * L);
+int iuptextlua_open (lua_State * L);
+int iupsubmenulua_open (lua_State * L);
+int iupseparatorlua_open (lua_State * L);
+int iupradiolua_open (lua_State * L);
+int iupmultilinelua_open (lua_State * L);
+int iupmenulua_open (lua_State * L);
+int iupcboxlua_open (lua_State * L);
+int iupspinboxlua_open (lua_State * L);
+int iupspinlua_open (lua_State * L);
+int iupsboxlua_open (lua_State * L);
+int iupgclua_open (lua_State * L);
+int iupvallua_open (lua_State * L);
+int iuptabslua_open (lua_State * L);
+int iupfontdlglua_open(lua_State * L);
+int iupmessagedlglua_open(lua_State * L);
+int iupcolordlglua_open(lua_State * L);
+int iupimagergbalua_open(lua_State * L);
+int iupimagergblua_open(lua_State * L);
+int iupprogressbarlua_open(lua_State * L);
+int iupnormalizerlua_open(lua_State * L);
+int iupuserlua_open(lua_State * L);
+int iuptreelua_open(lua_State * L);
+int iupclipboardlua_open(lua_State * L);
+
+void iupgetparamlua_open (lua_State * L);
+
+int iupluaScanf(lua_State *L);
+int iupluaapi_open(lua_State * L);
+
+
+ /* Registration */
+
+/** Sets the global index as the table "iup".
+ * Used to simplify the registration of functions and constants in the "iup" namespace.
+ */
+void iuplua_changeEnv(lua_State *L);
+
+/** Resets the global index.
+ * Must match a iuplua_changeEnv call.
+ */
+void iuplua_returnEnv(lua_State *L);
+
+/** Returns true if IupOpen was called from inside the IupLua initialization function (iuplua_open).
+ * All the other C intialization functions are called from the respective IupLua initialization functions.
+ */
+int iuplua_opencall_internal(lua_State *L);
+
+/** Register a function.
+ */
+void iuplua_register(lua_State *L, lua_CFunction func, const char* name);
+
+/** Register a string.
+ */
+void iuplua_regstring(lua_State *L, const char* str, const char* name);
+
+
+ /* Callbacks */
+
+/** Stores the Lua State inside the IUP element,
+ * so it can be retreived from inside a callback.
+ * Used in the creation of the element.
+ */
+void iuplua_plugstate(lua_State *L, Ihandle *ih);
+
+/** Retrieve the Lua State. Used inside a callback.
+ */
+lua_State* iuplua_getstate(Ihandle *ih);
+
+/** First function called inside a callback.
+ * It prepares the stack for the call and returns the Lua state.
+ */
+lua_State * iuplua_call_start(Ihandle *ih, const char* name);
+
+/** Called when a callback in Lua should be called.
+ * nargs is the number of arguments after the first Ihandle*.
+ * Returns the callback return value. If nil returns IUP_DEFAULT.
+ * At the end clears the Lua stack.
+ */
+int iuplua_call(lua_State *L, int nargs);
+
+/** Same as /ref iuplua_call, but returns a string.
+ */
+char* iuplua_call_rs(lua_State *L, int nargs);
+
+/** Same as lua_pcall, but if an error occour then
+ * _ERRORMESSAGE is called.
+ */
+int iuplua_call_raw(lua_State* L, int nargs, int nresults);
+
+/** Register the callback in the iup.callbaks table.
+ * If type is not NULL, register in a sub table with the controls class name.
+ */
+void iuplua_register_cb(lua_State *L, const char* name, lua_CFunction func, const char* type);
+
+
+ /* Functions */
+
+/** Pushes a raw Ihandle into the stack (an userdata).
+ * Used by the control creation functions.
+ */
+void iuplua_pushihandle_raw(lua_State *L, Ihandle *h);
+
+/** Returns an array of string stored in a Lua table.
+ */
+char** iuplua_checkstring_array(lua_State *L, int pos);
+
+/** Returns an array of int stored in a Lua table.
+ */
+int* iuplua_checkint_array(lua_State *L, int pos);
+
+/** Returns an array of unsigned char stored in a Lua table.
+ * Must have count elements.
+ */
+unsigned char* iuplua_checkuchar_array(lua_State *L, int pos, int count);
+
+/** Returns an array of ihandle stored in a Lua table.
+ */
+Ihandle** iuplua_checkihandle_array(lua_State *L, int pos);
+
+/** Same as iuplua_checkihandle but also accepts nil.
+ */
+Ihandle *iuplua_checkihandleornil(lua_State *L, int pos);
+
+/** Removes the references in the Lua registry.
+ */
+void iuplua_removeihandle(lua_State *L, Ihandle *ih);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srclua5/il_button.c b/iup/srclua5/il_button.c
new file mode 100755
index 0000000..bd844a5
--- /dev/null
+++ b/iup/srclua5/il_button.c
@@ -0,0 +1,59 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int button_action(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "action");
+ return iuplua_call(L, 0);
+}
+
+static int Button(lua_State *L)
+{
+ Ihandle *ih = IupButton((char *) luaL_optstring(L, 1, NULL), NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupbuttonlua_open(lua_State * L)
+{
+ iuplua_register(L, Button, "Button");
+
+ iuplua_register_cb(L, "ACTION", (lua_CFunction)button_action, "button");
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/button_be64.loh"
+#else
+#include "loh/button_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/button_le64w.loh"
+#else
+#include "loh/button_le64.loh"
+#endif
+#else
+#include "loh/button.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "button.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_canvas.c b/iup/srclua5/il_canvas.c
new file mode 100755
index 0000000..8cff72a
--- /dev/null
+++ b/iup/srclua5/il_canvas.c
@@ -0,0 +1,159 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int canvas_action(Ihandle *self, float p0, float p1)
+{
+ lua_State *L = iuplua_call_start(self, "action");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int canvas_leavewindow_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "leavewindow_cb");
+ return iuplua_call(L, 0);
+}
+
+static int canvas_resize_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "resize_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int canvas_wheel_cb(Ihandle *self, float p0, int p1, int p2, char * p3)
+{
+ lua_State *L = iuplua_call_start(self, "wheel_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushstring(L, p3);
+ return iuplua_call(L, 4);
+}
+
+static int canvas_mdiactivate_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "mdiactivate_cb");
+ return iuplua_call(L, 0);
+}
+
+static int canvas_enterwindow_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "enterwindow_cb");
+ return iuplua_call(L, 0);
+}
+
+static int canvas_focus_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "focus_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int canvas_button_cb(Ihandle *self, int p0, int p1, int p2, int p3, char * p4)
+{
+ lua_State *L = iuplua_call_start(self, "button_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushnumber(L, p3);
+ lua_pushstring(L, p4);
+ return iuplua_call(L, 5);
+}
+
+static int canvas_keypress_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "keypress_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int canvas_motion_cb(Ihandle *self, int p0, int p1, char * p2)
+{
+ lua_State *L = iuplua_call_start(self, "motion_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushstring(L, p2);
+ return iuplua_call(L, 3);
+}
+
+static int canvas_wom_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "wom_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int canvas_scroll_cb(Ihandle *self, int p0, float p1, float p2)
+{
+ lua_State *L = iuplua_call_start(self, "scroll_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ return iuplua_call(L, 3);
+}
+
+static int Canvas(lua_State *L)
+{
+ Ihandle *ih = IupCanvas(NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupcanvaslua_open(lua_State * L)
+{
+ iuplua_register(L, Canvas, "Canvas");
+
+ iuplua_register_cb(L, "ACTION", (lua_CFunction)canvas_action, "canvas");
+ iuplua_register_cb(L, "LEAVEWINDOW_CB", (lua_CFunction)canvas_leavewindow_cb, NULL);
+ iuplua_register_cb(L, "RESIZE_CB", (lua_CFunction)canvas_resize_cb, NULL);
+ iuplua_register_cb(L, "WHEEL_CB", (lua_CFunction)canvas_wheel_cb, NULL);
+ iuplua_register_cb(L, "MDIACTIVATE_CB", (lua_CFunction)canvas_mdiactivate_cb, NULL);
+ iuplua_register_cb(L, "ENTERWINDOW_CB", (lua_CFunction)canvas_enterwindow_cb, NULL);
+ iuplua_register_cb(L, "FOCUS_CB", (lua_CFunction)canvas_focus_cb, NULL);
+ iuplua_register_cb(L, "BUTTON_CB", (lua_CFunction)canvas_button_cb, NULL);
+ iuplua_register_cb(L, "KEYPRESS_CB", (lua_CFunction)canvas_keypress_cb, NULL);
+ iuplua_register_cb(L, "MOTION_CB", (lua_CFunction)canvas_motion_cb, NULL);
+ iuplua_register_cb(L, "WOM_CB", (lua_CFunction)canvas_wom_cb, NULL);
+ iuplua_register_cb(L, "SCROLL_CB", (lua_CFunction)canvas_scroll_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/canvas_be64.loh"
+#else
+#include "loh/canvas_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/canvas_le64w.loh"
+#else
+#include "loh/canvas_le64.loh"
+#endif
+#else
+#include "loh/canvas.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "canvas.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_cbox.c b/iup/srclua5/il_cbox.c
new file mode 100755
index 0000000..66fdb4c
--- /dev/null
+++ b/iup/srclua5/il_cbox.c
@@ -0,0 +1,53 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int Cboxv(lua_State *L)
+{
+ Ihandle **hlist = iuplua_checkihandle_array(L, 1);
+ Ihandle *h = IupCboxv(hlist);
+ iuplua_plugstate(L, h);
+ iuplua_pushihandle_raw(L, h);
+ free(hlist);
+ return 1;
+}
+ int iupcboxlua_open(lua_State * L)
+{
+ iuplua_register(L, Cboxv, "Cboxv");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/cbox_be64.loh"
+#else
+#include "loh/cbox_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/cbox_le64w.loh"
+#else
+#include "loh/cbox_le64.loh"
+#endif
+#else
+#include "loh/cbox.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "cbox.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_cells.c b/iup/srclua5/il_cells.c
new file mode 100755
index 0000000..e0fbc0e
--- /dev/null
+++ b/iup/srclua5/il_cells.c
@@ -0,0 +1,136 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "iupcontrols.h"
+#include "il.h"
+
+
+static int cells_width_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "width_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int cells_mousemotion_cb(Ihandle *self, int p0, int p1, int p2, int p3, char * p4)
+{
+ lua_State *L = iuplua_call_start(self, "mousemotion_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushnumber(L, p3);
+ lua_pushstring(L, p4);
+ return iuplua_call(L, 5);
+}
+
+static int cells_mouseclick_cb(Ihandle *self, int p0, int p1, int p2, int p3, int p4, int p5, char * p6)
+{
+ lua_State *L = iuplua_call_start(self, "mouseclick_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushnumber(L, p3);
+ lua_pushnumber(L, p4);
+ lua_pushnumber(L, p5);
+ lua_pushstring(L, p6);
+ return iuplua_call(L, 7);
+}
+
+static int cells_ncols_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "ncols_cb");
+ return iuplua_call(L, 0);
+}
+
+static int cells_nlines_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "nlines_cb");
+ return iuplua_call(L, 0);
+}
+
+static int cells_scrolling_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "scrolling_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int cells_height_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "height_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int cells_hspan_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "hspan_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int cells_vspan_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "vspan_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int Cells(lua_State *L)
+{
+ Ihandle *ih = IupCells();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupcellslua_open(lua_State * L)
+{
+ iuplua_register(L, Cells, "Cells");
+
+ iuplua_register_cb(L, "WIDTH_CB", (lua_CFunction)cells_width_cb, NULL);
+ iuplua_register_cb(L, "MOUSEMOTION_CB", (lua_CFunction)cells_mousemotion_cb, NULL);
+ iuplua_register_cb(L, "MOUSECLICK_CB", (lua_CFunction)cells_mouseclick_cb, NULL);
+ iuplua_register_cb(L, "NCOLS_CB", (lua_CFunction)cells_ncols_cb, NULL);
+ iuplua_register_cb(L, "NLINES_CB", (lua_CFunction)cells_nlines_cb, NULL);
+ iuplua_register_cb(L, "SCROLLING_CB", (lua_CFunction)cells_scrolling_cb, NULL);
+ iuplua_register_cb(L, "HEIGHT_CB", (lua_CFunction)cells_height_cb, NULL);
+ iuplua_register_cb(L, "HSPAN_CB", (lua_CFunction)cells_hspan_cb, NULL);
+ iuplua_register_cb(L, "VSPAN_CB", (lua_CFunction)cells_vspan_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/cells_be64.loh"
+#else
+#include "loh/cells_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/cells_le64w.loh"
+#else
+#include "loh/cells_le64.loh"
+#endif
+#else
+#include "loh/cells.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "cells.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_clipboard.c b/iup/srclua5/il_clipboard.c
new file mode 100644
index 0000000..207b1b7
--- /dev/null
+++ b/iup/srclua5/il_clipboard.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int Clipboard(lua_State *L)
+{
+ Ihandle *ih = IupClipboard();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupclipboardlua_open(lua_State * L)
+{
+ iuplua_register(L, Clipboard, "Clipboard");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/clipboard_be64.loh"
+#else
+#include "loh/clipboard_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/clipboard_le64w.loh"
+#else
+#include "loh/clipboard_le64.loh"
+#endif
+#else
+#include "loh/clipboard.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "clipboard.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_colorbar.c b/iup/srclua5/il_colorbar.c
new file mode 100755
index 0000000..15dc73e
--- /dev/null
+++ b/iup/srclua5/il_colorbar.c
@@ -0,0 +1,87 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "iupcontrols.h"
+#include "il.h"
+
+
+static int colorbar_switch_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "switch_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int colorbar_select_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "select_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static char * colorbar_cell_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "cell_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call_rs(L, 1);
+}
+
+static int colorbar_extended_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "extended_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int Colorbar(lua_State *L)
+{
+ Ihandle *ih = IupColorbar();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupcolorbarlua_open(lua_State * L)
+{
+ iuplua_register(L, Colorbar, "Colorbar");
+
+ iuplua_register_cb(L, "SWITCH_CB", (lua_CFunction)colorbar_switch_cb, NULL);
+ iuplua_register_cb(L, "SELECT_CB", (lua_CFunction)colorbar_select_cb, NULL);
+ iuplua_register_cb(L, "CELL_CB", (lua_CFunction)colorbar_cell_cb, NULL);
+ iuplua_register_cb(L, "EXTENDED_CB", (lua_CFunction)colorbar_extended_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/colorbar_be64.loh"
+#else
+#include "loh/colorbar_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/colorbar_le64w.loh"
+#else
+#include "loh/colorbar_le64.loh"
+#endif
+#else
+#include "loh/colorbar.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "colorbar.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_colorbrowser.c b/iup/srclua5/il_colorbrowser.c
new file mode 100755
index 0000000..f0316dd
--- /dev/null
+++ b/iup/srclua5/il_colorbrowser.c
@@ -0,0 +1,73 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "iupcontrols.h"
+#include "il.h"
+
+
+static int colorbrowser_drag_cb(Ihandle *self, unsigned char p0, unsigned char p1, unsigned char p2)
+{
+ lua_State *L = iuplua_call_start(self, "drag_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ return iuplua_call(L, 3);
+}
+
+static int colorbrowser_change_cb(Ihandle *self, unsigned char p0, unsigned char p1, unsigned char p2)
+{
+ lua_State *L = iuplua_call_start(self, "change_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ return iuplua_call(L, 3);
+}
+
+static int ColorBrowser(lua_State *L)
+{
+ Ihandle *ih = IupColorBrowser();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupcolorbrowserlua_open(lua_State * L)
+{
+ iuplua_register(L, ColorBrowser, "ColorBrowser");
+
+ iuplua_register_cb(L, "DRAG_CB", (lua_CFunction)colorbrowser_drag_cb, NULL);
+ iuplua_register_cb(L, "CHANGE_CB", (lua_CFunction)colorbrowser_change_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/colorbrowser_be64.loh"
+#else
+#include "loh/colorbrowser_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/colorbrowser_le64w.loh"
+#else
+#include "loh/colorbrowser_le64.loh"
+#endif
+#else
+#include "loh/colorbrowser.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "colorbrowser.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_colordlg.c b/iup/srclua5/il_colordlg.c
new file mode 100755
index 0000000..c474c62
--- /dev/null
+++ b/iup/srclua5/il_colordlg.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int ColorDlg(lua_State *L)
+{
+ Ihandle *ih = IupColorDlg();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupcolordlglua_open(lua_State * L)
+{
+ iuplua_register(L, ColorDlg, "ColorDlg");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/colordlg_be64.loh"
+#else
+#include "loh/colordlg_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/colordlg_le64w.loh"
+#else
+#include "loh/colordlg_le64.loh"
+#endif
+#else
+#include "loh/colordlg.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "colordlg.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_controls.h b/iup/srclua5/il_controls.h
new file mode 100755
index 0000000..ab0aa67
--- /dev/null
+++ b/iup/srclua5/il_controls.h
@@ -0,0 +1,26 @@
+/** \file
+ * \brief IUPLua5 Controls internal Functions
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#ifndef __IL_CONTROLS_H
+#define __IL_CONTROLS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void iupmasklua_open (lua_State * L);
+int iupgaugelua_open (lua_State * L);
+int iupdiallua_open (lua_State * L);
+int iupcolorbrowserlua_open (lua_State * L);
+int iupcolorbarlua_open (lua_State * L);
+int iupcellslua_open (lua_State * L);
+int iupmatrixlua_open (lua_State * L);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/iup/srclua5/il_dial.c b/iup/srclua5/il_dial.c
new file mode 100755
index 0000000..76a395a
--- /dev/null
+++ b/iup/srclua5/il_dial.c
@@ -0,0 +1,61 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "iupcontrols.h"
+#include "il.h"
+
+
+static int dial_mousemove_cb(Ihandle *self, double p0)
+{
+ lua_State *L = iuplua_call_start(self, "mousemove_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int Dial(lua_State *L)
+{
+ Ihandle *ih = IupDial((char *) luaL_checkstring(L, 1));
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupdiallua_open(lua_State * L)
+{
+ iuplua_register(L, Dial, "Dial");
+
+ iuplua_register_cb(L, "MOUSEMOVE_CB", (lua_CFunction)dial_mousemove_cb, "dial");
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/dial_be64.loh"
+#else
+#include "loh/dial_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/dial_le64w.loh"
+#else
+#include "loh/dial_le64.loh"
+#endif
+#else
+#include "loh/dial.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "dial.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_dialog.c b/iup/srclua5/il_dialog.c
new file mode 100755
index 0000000..fafc5bd
--- /dev/null
+++ b/iup/srclua5/il_dialog.c
@@ -0,0 +1,111 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int dialog_move_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "move_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int dialog_map_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "map_cb");
+ return iuplua_call(L, 0);
+}
+
+static int dialog_unmap_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "unmap_cb");
+ return iuplua_call(L, 0);
+}
+
+static int dialog_dropfiles_cb(Ihandle *self, char * p0, int p1, int p2, int p3)
+{
+ lua_State *L = iuplua_call_start(self, "dropfiles_cb");
+ lua_pushstring(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushnumber(L, p3);
+ return iuplua_call(L, 4);
+}
+
+static int dialog_show_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "show_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int dialog_trayclick_cb(Ihandle *self, int p0, int p1, int p2)
+{
+ lua_State *L = iuplua_call_start(self, "trayclick_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ return iuplua_call(L, 3);
+}
+
+static int dialog_close_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "close_cb");
+ return iuplua_call(L, 0);
+}
+
+static int Dialog(lua_State *L)
+{
+ Ihandle *ih = IupDialog(iuplua_checkihandleornil(L, 1));
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupdialoglua_open(lua_State * L)
+{
+ iuplua_register(L, Dialog, "Dialog");
+
+ iuplua_register_cb(L, "MOVE_CB", (lua_CFunction)dialog_move_cb, NULL);
+ iuplua_register_cb(L, "MAP_CB", (lua_CFunction)dialog_map_cb, NULL);
+ iuplua_register_cb(L, "UNMAP_CB", (lua_CFunction)dialog_unmap_cb, NULL);
+ iuplua_register_cb(L, "DROPFILES_CB", (lua_CFunction)dialog_dropfiles_cb, NULL);
+ iuplua_register_cb(L, "SHOW_CB", (lua_CFunction)dialog_show_cb, NULL);
+ iuplua_register_cb(L, "TRAYCLICK_CB", (lua_CFunction)dialog_trayclick_cb, NULL);
+ iuplua_register_cb(L, "CLOSE_CB", (lua_CFunction)dialog_close_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/dialog_be64.loh"
+#else
+#include "loh/dialog_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/dialog_le64w.loh"
+#else
+#include "loh/dialog_le64.loh"
+#endif
+#else
+#include "loh/dialog.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "dialog.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_filedlg.c b/iup/srclua5/il_filedlg.c
new file mode 100755
index 0000000..fc30ca7
--- /dev/null
+++ b/iup/srclua5/il_filedlg.c
@@ -0,0 +1,61 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int filedlg_file_cb(Ihandle *self, char * p0, char * p1)
+{
+ lua_State *L = iuplua_call_start(self, "file_cb");
+ lua_pushstring(L, p0);
+ lua_pushstring(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int FileDlg(lua_State *L)
+{
+ Ihandle *ih = IupFileDlg();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupfiledlglua_open(lua_State * L)
+{
+ iuplua_register(L, FileDlg, "FileDlg");
+
+ iuplua_register_cb(L, "FILE_CB", (lua_CFunction)filedlg_file_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/filedlg_be64.loh"
+#else
+#include "loh/filedlg_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/filedlg_le64w.loh"
+#else
+#include "loh/filedlg_le64.loh"
+#endif
+#else
+#include "loh/filedlg.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "filedlg.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_fill.c b/iup/srclua5/il_fill.c
new file mode 100755
index 0000000..d3ebd0d
--- /dev/null
+++ b/iup/srclua5/il_fill.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int Fill(lua_State *L)
+{
+ Ihandle *ih = IupFill();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupfilllua_open(lua_State * L)
+{
+ iuplua_register(L, Fill, "Fill");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/fill_be64.loh"
+#else
+#include "loh/fill_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/fill_le64w.loh"
+#else
+#include "loh/fill_le64.loh"
+#endif
+#else
+#include "loh/fill.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "fill.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_fontdlg.c b/iup/srclua5/il_fontdlg.c
new file mode 100755
index 0000000..2be7c65
--- /dev/null
+++ b/iup/srclua5/il_fontdlg.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int FontDlg(lua_State *L)
+{
+ Ihandle *ih = IupFontDlg();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupfontdlglua_open(lua_State * L)
+{
+ iuplua_register(L, FontDlg, "FontDlg");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/fontdlg_be64.loh"
+#else
+#include "loh/fontdlg_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/fontdlg_le64w.loh"
+#else
+#include "loh/fontdlg_le64.loh"
+#endif
+#else
+#include "loh/fontdlg.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "fontdlg.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_frame.c b/iup/srclua5/il_frame.c
new file mode 100755
index 0000000..9b122ce
--- /dev/null
+++ b/iup/srclua5/il_frame.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int Frame(lua_State *L)
+{
+ Ihandle *ih = IupFrame(iuplua_checkihandle(L, 1));
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupframelua_open(lua_State * L)
+{
+ iuplua_register(L, Frame, "Frame");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/frame_be64.loh"
+#else
+#include "loh/frame_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/frame_le64w.loh"
+#else
+#include "loh/frame_le64.loh"
+#endif
+#else
+#include "loh/frame.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "frame.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_gauge.c b/iup/srclua5/il_gauge.c
new file mode 100755
index 0000000..402e78a
--- /dev/null
+++ b/iup/srclua5/il_gauge.c
@@ -0,0 +1,53 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "iupcontrols.h"
+#include "il.h"
+
+
+static int Gauge(lua_State *L)
+{
+ Ihandle *ih = IupGauge();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupgaugelua_open(lua_State * L)
+{
+ iuplua_register(L, Gauge, "Gauge");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/gauge_be64.loh"
+#else
+#include "loh/gauge_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/gauge_le64w.loh"
+#else
+#include "loh/gauge_le64.loh"
+#endif
+#else
+#include "loh/gauge.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "gauge.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_getcolor.c b/iup/srclua5/il_getcolor.c
new file mode 100755
index 0000000..d468d38
--- /dev/null
+++ b/iup/srclua5/il_getcolor.c
@@ -0,0 +1,46 @@
+/** \file
+ * \brief IupGetColor bindig to Lua 5.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+static int GetColor(lua_State *L)
+{
+ int x = (int)luaL_checknumber(L,1);
+ int y = (int)luaL_checknumber(L,2);
+ unsigned char r = (unsigned char) luaL_optnumber(L,3,0);
+ unsigned char g = (unsigned char) luaL_optnumber(L,4,0);
+ unsigned char b = (unsigned char) luaL_optnumber(L,5,0);
+ int ret = IupGetColor(x,y,&r,&g,&b);
+ if (ret)
+ {
+ lua_pushnumber(L, (int) r);
+ lua_pushnumber(L, (int) g);
+ lua_pushnumber(L, (int) b);
+ return 3;
+ }
+ else
+ {
+ lua_pushnil(L);
+ return 1;
+ }
+}
+int iupgclua_open(lua_State * L)
+{
+ lua_pushcfunction(L, GetColor);
+ lua_setglobal(L, "GetColor");
+ return 0;
+}
+
diff --git a/iup/srclua5/il_getparam.c b/iup/srclua5/il_getparam.c
new file mode 100755
index 0000000..c7f4936
--- /dev/null
+++ b/iup/srclua5/il_getparam.c
@@ -0,0 +1,177 @@
+/** \file
+ * \brief IupGetParam bindig to Lua 5.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+/* Used only by the Lua binding */
+int iupGetParamCount(const char *format, int *param_extra);
+char iupGetParamType(const char* format, int *line_size);
+
+
+typedef struct _getparam_data
+{
+ lua_State *L;
+ int has_func;
+ int func_ref;
+}getparam_data;
+
+static int param_action(Ihandle* dialog, int param_index, void* user_data)
+{
+ int ret = 1;
+ getparam_data* gp = (getparam_data*)user_data;
+ if (gp->has_func)
+ {
+ lua_State *L = gp->L;
+ lua_getref(L, gp->func_ref);
+ iuplua_pushihandle(L, dialog);
+ lua_pushnumber(L, param_index);
+ if (iuplua_call_raw(L, 2, 1) != 0) /* 2 args, 1 return */
+ {
+ ret = (int)lua_tonumber(L,-1);
+ lua_pop(L, 1);
+ }
+ }
+ return ret;
+}
+
+static int GetParam(lua_State *L)
+{
+ getparam_data gp;
+ const char* title = luaL_checkstring(L, 1);
+ void* user_data = (void*)&gp;
+ const char* format = luaL_checkstring(L, 3);
+ int param_count, param_extra, i, size, ret,
+ line_size = 0, lua_param_start = 4;
+ const char* f = format;
+ const char* s;
+ void* param_data[50];
+ char param_type[50];
+
+ gp.L = L;
+ gp.has_func = 0;
+ gp.func_ref = 0;
+
+ memset(param_data, 0, sizeof(void*)*50);
+ memset(param_type, 0, sizeof(char)*50);
+
+ param_count = iupGetParamCount(format, &param_extra);
+
+ for (i = 0; i < param_count; i++)
+ {
+ char t = iupGetParamType(f, &line_size);
+
+ if (t == 't') /* if separator */
+ {
+ f += line_size;
+ i--; /* compensate next increment */
+ continue;
+ }
+
+ switch(t)
+ {
+ case 'b':
+ case 'i':
+ case 'l':
+ param_data[i] = malloc(sizeof(int));
+ *(int*)(param_data[i]) = (int)luaL_checknumber(L, lua_param_start); lua_param_start++;
+ break;
+ case 'a':
+ case 'r':
+ param_data[i] = malloc(sizeof(float));
+ *(float*)(param_data[i]) = (float)luaL_checknumber(L, lua_param_start); lua_param_start++;
+ break;
+ case 's':
+ case 'm':
+ s = luaL_checkstring(L, lua_param_start); lua_param_start++;
+ size = strlen(s);
+ if (size < 512)
+ param_data[i] = malloc(512);
+ else
+ param_data[i] = malloc(2*size);
+ memcpy(param_data[i], s, size+1);
+ break;
+ }
+
+ param_type[i] = t;
+ f += line_size;
+ }
+
+ if (lua_isfunction(L, 2))
+ {
+ lua_pushvalue(L, 2);
+ gp.func_ref = lua_ref(L, 1);
+ gp.has_func = 1;
+ }
+
+ ret = IupGetParamv(title, param_action, user_data, format, param_count, param_extra, param_data);
+
+ lua_pushboolean(L, ret);
+
+ if (ret)
+ {
+ for (i = 0; i < param_count; i++)
+ {
+ switch(param_type[i])
+ {
+ case 'b':
+ case 'i':
+ case 'l':
+ lua_pushnumber(L, *(int*)(param_data[i]));
+ break;
+ case 'a':
+ case 'r':
+ lua_pushnumber(L, *(float*)(param_data[i]));
+ break;
+ case 's':
+ case 'm':
+ lua_pushstring(L, (char*)(param_data[i]));
+ break;
+ }
+ }
+ }
+
+ for (i = 0; i < param_count; i++)
+ {
+ free(param_data[i]);
+ }
+
+ if (gp.has_func)
+ lua_unref(L, gp.func_ref);
+
+ if (ret)
+ return param_count+1;
+ else
+ return 1;
+}
+
+static int GetParamParam(lua_State *L)
+{
+ Ihandle *dialog = iuplua_checkihandle(L, 1);
+ int param_index = (int)luaL_checknumber(L, 2);
+ Ihandle* param;
+ char param_str[50];
+ sprintf(param_str, "PARAM%d", param_index);
+ param = (Ihandle*)IupGetAttribute(dialog, param_str);
+ iuplua_pushihandle(L, param);
+ return 1;
+}
+
+void iupgetparamlua_open(lua_State * L)
+{
+ iuplua_register(L, GetParam, "GetParam");
+ iuplua_register(L, GetParamParam, "GetParamParam");
+}
diff --git a/iup/srclua5/il_glcanvas.c b/iup/srclua5/il_glcanvas.c
new file mode 100755
index 0000000..9f0dfb6
--- /dev/null
+++ b/iup/srclua5/il_glcanvas.c
@@ -0,0 +1,90 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "iupgl.h"
+#include "il.h"
+
+
+static int glcanvas_action(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "action");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int GLCanvas(lua_State *L)
+{
+ Ihandle *ih = IupGLCanvas(NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+void iuplua_glcanvasfuncs_open(lua_State *L);
+
+int iupglcanvaslua_open(lua_State * L)
+{
+ iuplua_register(L, GLCanvas, "GLCanvas");
+
+ iuplua_register_cb(L, "ACTION", (lua_CFunction)glcanvas_action, "glcanvas");
+
+ iuplua_glcanvasfuncs_open(L);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/glcanvas_be64.loh"
+#else
+#include "loh/glcanvas_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/glcanvas_le64w.loh"
+#else
+#include "loh/glcanvas_le64.loh"
+#endif
+#else
+#include "loh/glcanvas.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "glcanvas.lua");
+#endif
+
+ return 0;
+}
+
+
+int iupgllua_open(lua_State * L)
+{
+ if (iuplua_opencall_internal(L))
+ IupGLCanvasOpen();
+
+ iuplua_changeEnv(L);
+ iupglcanvaslua_open(L);
+ iuplua_returnEnv(L);
+ return 0;
+}
+
+/* obligatory to use require"iupluagl" */
+int luaopen_iupluagl(lua_State* L)
+{
+ return iupgllua_open(L);
+}
+
+/* obligatory to use require"iupluagl51" */
+int luaopen_iupluagl51(lua_State* L)
+{
+ return iupgllua_open(L);
+}
+
diff --git a/iup/srclua5/il_hbox.c b/iup/srclua5/il_hbox.c
new file mode 100755
index 0000000..5734540
--- /dev/null
+++ b/iup/srclua5/il_hbox.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int Hbox(lua_State *L)
+{
+ Ihandle *ih = IupHbox(NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iuphboxlua_open(lua_State * L)
+{
+ iuplua_register(L, Hbox, "Hbox");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/hbox_be64.loh"
+#else
+#include "loh/hbox_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/hbox_le64w.loh"
+#else
+#include "loh/hbox_le64.loh"
+#endif
+#else
+#include "loh/hbox.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "hbox.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_image.c b/iup/srclua5/il_image.c
new file mode 100755
index 0000000..b140855
--- /dev/null
+++ b/iup/srclua5/il_image.c
@@ -0,0 +1,119 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+
+static int Image (lua_State * L)
+{
+ int w, h, c, num_colors;
+ unsigned char *pixels;
+ Ihandle* ih;
+ char str[20];
+
+ if (lua_istable(L, 1))
+ {
+ int i, j;
+
+ /* get the number of lines */
+ h = luaL_getn(L, 1);
+
+ /* get the number of columns of the first line */
+ lua_pushnumber(L, 1);
+ lua_gettable(L, 1);
+ w = luaL_getn(L, -1);
+ lua_pop(L, 1);
+
+ pixels = (unsigned char *) malloc (h*w);
+
+ for (i=1; i<=h; i++)
+ {
+ lua_pushnumber(L, i);
+ lua_gettable(L, 1);
+ for (j=1; j<=w; j++)
+ {
+ int idx = (i-1)*w+(j-1);
+ lua_pushnumber(L, j);
+ lua_gettable(L, -2);
+ pixels[idx] = (unsigned char)lua_tonumber(L, -1);
+ lua_pop(L, 1);
+ }
+ lua_pop(L, 1);
+ }
+
+ ih = IupImage(w,h,pixels);
+ free(pixels);
+
+ num_colors = luaL_getn(L, 2);
+ num_colors = num_colors>255? 255: num_colors;
+ for(c=1; c<=num_colors; c++)
+ {
+ lua_rawgeti(L, 2, c);
+ sprintf(str, "%d", c);
+ IupStoreAttribute(ih, str, lua_tostring(L,-1));
+ lua_pop(L, 1);
+ }
+ }
+ else
+ {
+ w = luaL_checkint(L, 1);
+ h = luaL_checkint(L, 2);
+ pixels = iuplua_checkuchar_array(L, 3, w*h);
+ ih = IupImage(w, h, pixels);
+ free(pixels);
+
+ num_colors = luaL_getn(L, 4);
+ num_colors = num_colors>256? 256: num_colors;
+ for(c=1; c<=num_colors; c++)
+ {
+ lua_rawgeti(L, 4, c);
+ sprintf(str, "%d", c-1);
+ IupStoreAttribute(ih, str, lua_tostring(L,-1));
+ lua_pop(L, 1);
+ }
+ }
+
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupimagelua_open(lua_State * L)
+{
+ iuplua_register(L, Image, "Image");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/image_be64.loh"
+#else
+#include "loh/image_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/image_le64w.loh"
+#else
+#include "loh/image_le64.loh"
+#endif
+#else
+#include "loh/image.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "image.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_imagergb.c b/iup/srclua5/il_imagergb.c
new file mode 100755
index 0000000..f9d0318
--- /dev/null
+++ b/iup/srclua5/il_imagergb.c
@@ -0,0 +1,57 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+
+static int ImageRGB(lua_State *L)
+{
+ int w = luaL_checkint(L, 1);
+ int h = luaL_checkint(L, 2);
+ unsigned char *pixels = iuplua_checkuchar_array(L, 3, w*h*3);
+ Ihandle *ih = IupImageRGB(w, h, pixels);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ free(pixels);
+ return 1;
+}
+
+int iupimagergblua_open(lua_State * L)
+{
+ iuplua_register(L, ImageRGB, "ImageRGB");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/imagergb_be64.loh"
+#else
+#include "loh/imagergb_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/imagergb_le64w.loh"
+#else
+#include "loh/imagergb_le64.loh"
+#endif
+#else
+#include "loh/imagergb.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "imagergb.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_imagergba.c b/iup/srclua5/il_imagergba.c
new file mode 100755
index 0000000..4b67620
--- /dev/null
+++ b/iup/srclua5/il_imagergba.c
@@ -0,0 +1,57 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+
+static int ImageRGBA(lua_State *L)
+{
+ int w = luaL_checkint(L, 1);
+ int h = luaL_checkint(L, 2);
+ unsigned char *pixels = iuplua_checkuchar_array(L, 3, w*h*4);
+ Ihandle *ih = IupImageRGBA(w, h, pixels);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ free(pixels);
+ return 1;
+}
+
+int iupimagergbalua_open(lua_State * L)
+{
+ iuplua_register(L, ImageRGBA, "ImageRGBA");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/imagergba_be64.loh"
+#else
+#include "loh/imagergba_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/imagergba_le64w.loh"
+#else
+#include "loh/imagergba_le64.loh"
+#endif
+#else
+#include "loh/imagergba.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "imagergba.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_item.c b/iup/srclua5/il_item.c
new file mode 100755
index 0000000..401bf6e
--- /dev/null
+++ b/iup/srclua5/il_item.c
@@ -0,0 +1,66 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int item_action(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "action");
+ return iuplua_call(L, 0);
+}
+
+static int item_highlight_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "highlight_cb");
+ return iuplua_call(L, 0);
+}
+
+static int Item(lua_State *L)
+{
+ Ihandle *ih = IupItem((char *) luaL_optstring(L, 1, NULL), NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupitemlua_open(lua_State * L)
+{
+ iuplua_register(L, Item, "Item");
+
+ iuplua_register_cb(L, "ACTION", (lua_CFunction)item_action, "item");
+ iuplua_register_cb(L, "HIGHLIGHT_CB", (lua_CFunction)item_highlight_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/item_be64.loh"
+#else
+#include "loh/item_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/item_le64w.loh"
+#else
+#include "loh/item_le64.loh"
+#endif
+#else
+#include "loh/item.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "item.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_label.c b/iup/srclua5/il_label.c
new file mode 100755
index 0000000..bd4a276
--- /dev/null
+++ b/iup/srclua5/il_label.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int Label(lua_State *L)
+{
+ Ihandle *ih = IupLabel((char *) luaL_optstring(L, 1, NULL));
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iuplabellua_open(lua_State * L)
+{
+ iuplua_register(L, Label, "Label");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/label_be64.loh"
+#else
+#include "loh/label_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/label_le64w.loh"
+#else
+#include "loh/label_le64.loh"
+#endif
+#else
+#include "loh/label.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "label.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_list.c b/iup/srclua5/il_list.c
new file mode 100755
index 0000000..ac1dc2f
--- /dev/null
+++ b/iup/srclua5/il_list.c
@@ -0,0 +1,96 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int list_dropdown_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "dropdown_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int list_action(Ihandle *self, char * p0, int p1, int p2)
+{
+ lua_State *L = iuplua_call_start(self, "action");
+ lua_pushstring(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ return iuplua_call(L, 3);
+}
+
+static int list_dblclick_cb(Ihandle *self, int p0, char * p1)
+{
+ lua_State *L = iuplua_call_start(self, "dblclick_cb");
+ lua_pushnumber(L, p0);
+ lua_pushstring(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int list_edit_cb(Ihandle *self, int p0, char * p1)
+{
+ lua_State *L = iuplua_call_start(self, "edit_cb");
+ lua_pushnumber(L, p0);
+ lua_pushstring(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int list_multiselect_cb(Ihandle *self, char * p0)
+{
+ lua_State *L = iuplua_call_start(self, "multiselect_cb");
+ lua_pushstring(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int List(lua_State *L)
+{
+ Ihandle *ih = IupList(NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iuplistlua_open(lua_State * L)
+{
+ iuplua_register(L, List, "List");
+
+ iuplua_register_cb(L, "DROPDOWN_CB", (lua_CFunction)list_dropdown_cb, NULL);
+ iuplua_register_cb(L, "ACTION", (lua_CFunction)list_action, "list");
+ iuplua_register_cb(L, "DBLCLICK_CB", (lua_CFunction)list_dblclick_cb, NULL);
+ iuplua_register_cb(L, "EDIT_CB", (lua_CFunction)list_edit_cb, "list");
+ iuplua_register_cb(L, "MULTISELECT_CB", (lua_CFunction)list_multiselect_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/list_be64.loh"
+#else
+#include "loh/list_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/list_le64w.loh"
+#else
+#include "loh/list_le64.loh"
+#endif
+#else
+#include "loh/list.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "list.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_mask.c b/iup/srclua5/il_mask.c
new file mode 100755
index 0000000..f471242
--- /dev/null
+++ b/iup/srclua5/il_mask.c
@@ -0,0 +1,132 @@
+/** \file
+ * \brief iupmask binding for Lua 5.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iupmask.h"
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+
+static int cfMaskRemove (lua_State *L)
+{
+ iupmaskRemove(iuplua_checkihandle(L,1));
+ return 0;
+}
+
+static int cfMaskMatRemove(lua_State *L)
+{
+ iupmaskMatRemove(iuplua_checkihandle(L,1),
+ luaL_checkint(L,2),
+ luaL_checkint(L,3));
+ return 0;
+}
+
+static int cfMaskSet (lua_State *L)
+{
+ iupmaskSet(iuplua_checkihandle(L,1),
+ (char*)luaL_checkstring(L,2),
+ luaL_checkint(L,3),
+ luaL_checkint(L,4));
+ return 0;
+}
+
+static int cfMaskMatSet(lua_State *L)
+{
+ iupmaskMatSet(iuplua_checkihandle(L,1),
+ (char*)luaL_checkstring(L,2),
+ luaL_checkint(L,3),
+ luaL_checkint(L,4),
+ luaL_checkint(L,5),
+ luaL_checkint(L,6));
+ return 0;
+}
+
+static int cfMaskSetInt(lua_State *L)
+{
+ iupmaskSetInt(iuplua_checkihandle(L,1),
+ luaL_checkint(L,2),
+ luaL_checkint(L,3),
+ luaL_checkint(L,4));
+ return 0;
+}
+
+static int cfMaskSetFloat(lua_State *L)
+{
+ iupmaskSetFloat(iuplua_checkihandle(L,1),
+ luaL_checkint(L,2),
+ (float)luaL_checknumber(L,3),
+ (float)luaL_checknumber(L,4));
+ return 0;
+}
+
+static int cfMaskMatSetInt (lua_State *L)
+{
+ iupmaskMatSetInt(iuplua_checkihandle(L,1),
+ luaL_checkint(L,2),
+ luaL_checkint(L,3),
+ luaL_checkint(L,4),
+ luaL_checkint(L,5),
+ luaL_checkint(L,6));
+ return 0;
+}
+
+static int cfMaskMatSetFloat (lua_State *L)
+{
+ iupmaskMatSetFloat(iuplua_checkihandle(L,1),
+ luaL_checkint(L,2),
+ (float)luaL_checknumber(L,3),
+ (float)luaL_checknumber(L,4),
+ luaL_checkint(L,5),
+ luaL_checkint(L,6));
+ return 0;
+}
+
+static int cfMaskCheck (lua_State *L)
+{
+ iupmaskCheck(iuplua_checkihandle(L,1));
+ return 0;
+}
+
+static int cfMaskMatCheck (lua_State *L)
+{
+ iupmaskMatCheck(iuplua_checkihandle(L,1),
+ luaL_checkint(L,2),
+ luaL_checkint(L,3));
+ return 0;
+}
+
+static int match_cb (Ihandle *handle)
+{
+ lua_State *L = iuplua_call_start(handle, "match_cb");
+ return iuplua_call(L, 0);
+}
+
+void iupmasklua_open(lua_State *L)
+{
+ iuplua_regstring(L, IUP_MASK_FLOAT, "MASK_FLOAT");
+ iuplua_regstring(L, IUP_MASK_UFLOAT, "MASK_UFLOAT");
+ iuplua_regstring(L, IUP_MASK_EFLOAT, "MASK_EFLOAT");
+ iuplua_regstring(L, IUP_MASK_INT, "MASK_INT");
+ iuplua_regstring(L, IUP_MASK_UINT, "MASK_UINT");
+
+ iuplua_register(L, cfMaskRemove, "maskRemove");
+ iuplua_register(L, cfMaskMatRemove, "maskMatRemove");
+ iuplua_register(L, cfMaskSet, "maskSet");
+ iuplua_register(L, cfMaskMatSet, "maskMatSet");
+ iuplua_register(L, cfMaskSetInt, "maskSetInt");
+ iuplua_register(L, cfMaskSetFloat, "maskSetFloat");
+ iuplua_register(L, cfMaskMatSetInt, "maskMatSetInt");
+ iuplua_register(L, cfMaskMatSetFloat, "maskMatSetFloat");
+ iuplua_register(L, cfMaskCheck, "maskCheck");
+ iuplua_register(L, cfMaskMatCheck, "maskMatCheck");
+
+ iuplua_register_cb(L, "MATCH_CB", (lua_CFunction)match_cb, NULL);
+}
diff --git a/iup/srclua5/il_matrix.c b/iup/srclua5/il_matrix.c
new file mode 100755
index 0000000..e747536
--- /dev/null
+++ b/iup/srclua5/il_matrix.c
@@ -0,0 +1,247 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "iupcontrols.h"
+#include "il.h"
+
+
+static char * matrix_font_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "font_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call_rs(L, 2);
+}
+
+static int matrix_draw_cb(Ihandle *self, int p0, int p1, int p2, int p3, int p4, int p5, int p6)
+{
+ lua_State *L = iuplua_call_start(self, "draw_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushnumber(L, p3);
+ lua_pushnumber(L, p4);
+ lua_pushnumber(L, p5);
+ lua_pushnumber(L, p6);
+ return iuplua_call(L, 7);
+}
+
+static int matrix_edition_cb(Ihandle *self, int p0, int p1, int p2, int p3)
+{
+ lua_State *L = iuplua_call_start(self, "edition_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushnumber(L, p3);
+ return iuplua_call(L, 4);
+}
+
+static int matrix_mark_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "mark_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int matrix_markedit_cb(Ihandle *self, int p0, int p1, int p2)
+{
+ lua_State *L = iuplua_call_start(self, "markedit_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ return iuplua_call(L, 3);
+}
+
+static int matrix_bgcolor_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "bgcolor_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static char * matrix_value_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "value_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call_rs(L, 2);
+}
+
+static int matrix_dropselect_cb(Ihandle *self, int p0, int p1, Ihandle * p2, char * p3, int p4, int p5)
+{
+ lua_State *L = iuplua_call_start(self, "dropselect_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ iuplua_pushihandle(L, p2);
+ lua_pushstring(L, p3);
+ lua_pushnumber(L, p4);
+ lua_pushnumber(L, p5);
+ return iuplua_call(L, 6);
+}
+
+static int matrix_drop_cb(Ihandle *self, Ihandle * p0, int p1, int p2)
+{
+ lua_State *L = iuplua_call_start(self, "drop_cb");
+ iuplua_pushihandle(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ return iuplua_call(L, 3);
+}
+
+static int matrix_dropcheck_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "dropcheck_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int matrix_action_cb(Ihandle *self, int p0, int p1, int p2, int p3, char * p4)
+{
+ lua_State *L = iuplua_call_start(self, "action_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushnumber(L, p3);
+ lua_pushstring(L, p4);
+ return iuplua_call(L, 5);
+}
+
+static int matrix_enteritem_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "enteritem_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int matrix_leaveitem_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "leaveitem_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int matrix_scrolltop_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "scrolltop_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int matrix_fgcolor_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "fgcolor_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int matrix_release_cb(Ihandle *self, int p0, int p1, char * p2)
+{
+ lua_State *L = iuplua_call_start(self, "release_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushstring(L, p2);
+ return iuplua_call(L, 3);
+}
+
+static int matrix_mousemove_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "mousemove_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int matrix_value_edit_cb(Ihandle *self, int p0, int p1, char * p2)
+{
+ lua_State *L = iuplua_call_start(self, "value_edit_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushstring(L, p2);
+ return iuplua_call(L, 3);
+}
+
+static int matrix_click_cb(Ihandle *self, int p0, int p1, char * p2)
+{
+ lua_State *L = iuplua_call_start(self, "click_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushstring(L, p2);
+ return iuplua_call(L, 3);
+}
+
+static int Matrix(lua_State *L)
+{
+ Ihandle *ih = IupMatrix(NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+void iuplua_matrixfuncs_open(lua_State *L);
+
+int iupmatrixlua_open(lua_State * L)
+{
+ iuplua_register(L, Matrix, "Matrix");
+
+ iuplua_register_cb(L, "FONT_CB", (lua_CFunction)matrix_font_cb, NULL);
+ iuplua_register_cb(L, "DRAW_CB", (lua_CFunction)matrix_draw_cb, NULL);
+ iuplua_register_cb(L, "EDITION_CB", (lua_CFunction)matrix_edition_cb, NULL);
+ iuplua_register_cb(L, "MARK_CB", (lua_CFunction)matrix_mark_cb, NULL);
+ iuplua_register_cb(L, "MARKEDIT_CB", (lua_CFunction)matrix_markedit_cb, NULL);
+ iuplua_register_cb(L, "BGCOLOR_CB", (lua_CFunction)matrix_bgcolor_cb, NULL);
+ iuplua_register_cb(L, "VALUE_CB", (lua_CFunction)matrix_value_cb, NULL);
+ iuplua_register_cb(L, "DROPSELECT_CB", (lua_CFunction)matrix_dropselect_cb, NULL);
+ iuplua_register_cb(L, "DROP_CB", (lua_CFunction)matrix_drop_cb, NULL);
+ iuplua_register_cb(L, "DROPCHECK_CB", (lua_CFunction)matrix_dropcheck_cb, NULL);
+ iuplua_register_cb(L, "ACTION_CB", (lua_CFunction)matrix_action_cb, "matrix");
+ iuplua_register_cb(L, "ENTERITEM_CB", (lua_CFunction)matrix_enteritem_cb, NULL);
+ iuplua_register_cb(L, "LEAVEITEM_CB", (lua_CFunction)matrix_leaveitem_cb, NULL);
+ iuplua_register_cb(L, "SCROLLTOP_CB", (lua_CFunction)matrix_scrolltop_cb, NULL);
+ iuplua_register_cb(L, "FGCOLOR_CB", (lua_CFunction)matrix_fgcolor_cb, NULL);
+ iuplua_register_cb(L, "RELEASE_CB", (lua_CFunction)matrix_release_cb, NULL);
+ iuplua_register_cb(L, "MOUSEMOVE_CB", (lua_CFunction)matrix_mousemove_cb, "matrix");
+ iuplua_register_cb(L, "VALUE_EDIT_CB", (lua_CFunction)matrix_value_edit_cb, NULL);
+ iuplua_register_cb(L, "CLICK_CB", (lua_CFunction)matrix_click_cb, NULL);
+
+ iuplua_matrixfuncs_open(L);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/matrix_be64.loh"
+#else
+#include "loh/matrix_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/matrix_le64w.loh"
+#else
+#include "loh/matrix_le64.loh"
+#endif
+#else
+#include "loh/matrix.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "matrix.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_matrix_aux.c b/iup/srclua5/il_matrix_aux.c
new file mode 100755
index 0000000..240c837
--- /dev/null
+++ b/iup/srclua5/il_matrix_aux.c
@@ -0,0 +1,85 @@
+/** \file
+ * \brief matrix binding for Lua 5.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+#include <cd.h>
+#include <cdlua.h>
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+static int matrix_draw_cb(Ihandle *self, int p0, int p1, int p2, int p3, int p4, int p5, cdCanvas* cnv)
+{
+ lua_State *L = iuplua_call_start(self, "draw_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushnumber(L, p3);
+ lua_pushnumber(L, p4);
+ lua_pushnumber(L, p5);
+ cdlua_pushcanvas(L, cnv);
+ return iuplua_call(L, 7);
+}
+
+static int matrix_bgcolor_cb(Ihandle *self, int p0, int p1, unsigned int *p2, unsigned int *p3, unsigned int *p4)
+{
+ int ret;
+ lua_State *L = iuplua_call_start(self, "bgcolor_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ ret = iuplua_call_raw(L, 2+2, LUA_MULTRET); /* 2 args + 2 args(errormsg, handle), variable number of returns */
+ if (ret || lua_isnil(L, -1))
+ return IUP_DEFAULT;
+ ret = (int)lua_tonumber(L,-1);
+
+ if (ret == IUP_IGNORE)
+ {
+ lua_pop(L, 1);
+ return IUP_IGNORE;
+ }
+
+ *p2 = (unsigned int)lua_tonumber(L, -4);
+ *p3 = (unsigned int)lua_tonumber(L, -3);
+ *p4 = (unsigned int)lua_tonumber(L, -2);
+ lua_pop(L, 1);
+ return IUP_DEFAULT;
+}
+
+static int matrix_fgcolor_cb(Ihandle *self, int p0, int p1, unsigned int *p2, unsigned int *p3, unsigned int *p4)
+{
+ int ret;
+ lua_State *L = iuplua_call_start(self, "fgcolor_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ ret = iuplua_call_raw(L, 2+2, LUA_MULTRET); /* 2 args + 2 args(errormsg, handle), variable number of returns */
+ if (ret || lua_isnil(L, -1))
+ return IUP_DEFAULT;
+ ret = (int)lua_tonumber(L,-1);
+
+ if (ret == IUP_IGNORE)
+ {
+ lua_pop(L, 1);
+ return IUP_IGNORE;
+ }
+
+ *p2 = (unsigned int)lua_tonumber(L, -4);
+ *p3 = (unsigned int)lua_tonumber(L, -3);
+ *p4 = (unsigned int)lua_tonumber(L, -2);
+ lua_pop(L, 1);
+ return IUP_DEFAULT;
+}
+
+void iuplua_matrixfuncs_open (lua_State *L)
+{
+ iuplua_register_cb(L, "BGCOLOR_CB", (lua_CFunction)matrix_bgcolor_cb, NULL);
+ iuplua_register_cb(L, "FGCOLOR_CB", (lua_CFunction)matrix_fgcolor_cb, NULL);
+ iuplua_register_cb(L, "DRAW_CB", (lua_CFunction)matrix_draw_cb, NULL);
+}
diff --git a/iup/srclua5/il_menu.c b/iup/srclua5/il_menu.c
new file mode 100755
index 0000000..e8eede7
--- /dev/null
+++ b/iup/srclua5/il_menu.c
@@ -0,0 +1,66 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int menu_open_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "open_cb");
+ return iuplua_call(L, 0);
+}
+
+static int menu_menuclose_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "menuclose_cb");
+ return iuplua_call(L, 0);
+}
+
+static int Menu(lua_State *L)
+{
+ Ihandle *ih = IupMenu(NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupmenulua_open(lua_State * L)
+{
+ iuplua_register(L, Menu, "Menu");
+
+ iuplua_register_cb(L, "OPEN_CB", (lua_CFunction)menu_open_cb, NULL);
+ iuplua_register_cb(L, "MENUCLOSE_CB", (lua_CFunction)menu_menuclose_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/menu_be64.loh"
+#else
+#include "loh/menu_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/menu_le64w.loh"
+#else
+#include "loh/menu_le64.loh"
+#endif
+#else
+#include "loh/menu.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "menu.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_messagedlg.c b/iup/srclua5/il_messagedlg.c
new file mode 100755
index 0000000..fb1047d
--- /dev/null
+++ b/iup/srclua5/il_messagedlg.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int MessageDlg(lua_State *L)
+{
+ Ihandle *ih = IupMessageDlg();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupmessagedlglua_open(lua_State * L)
+{
+ iuplua_register(L, MessageDlg, "MessageDlg");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/messagedlg_be64.loh"
+#else
+#include "loh/messagedlg_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/messagedlg_le64w.loh"
+#else
+#include "loh/messagedlg_le64.loh"
+#endif
+#else
+#include "loh/messagedlg.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "messagedlg.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_multiline.c b/iup/srclua5/il_multiline.c
new file mode 100755
index 0000000..9108e3f
--- /dev/null
+++ b/iup/srclua5/il_multiline.c
@@ -0,0 +1,61 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int multiline_action(Ihandle *self, int p0, char * p1)
+{
+ lua_State *L = iuplua_call_start(self, "action");
+ lua_pushnumber(L, p0);
+ lua_pushstring(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int MultiLine(lua_State *L)
+{
+ Ihandle *ih = IupMultiLine(NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupmultilinelua_open(lua_State * L)
+{
+ iuplua_register(L, MultiLine, "MultiLine");
+
+ iuplua_register_cb(L, "ACTION", (lua_CFunction)multiline_action, "multiline");
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/multiline_be64.loh"
+#else
+#include "loh/multiline_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/multiline_le64w.loh"
+#else
+#include "loh/multiline_le64.loh"
+#endif
+#else
+#include "loh/multiline.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "multiline.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_normalizer.c b/iup/srclua5/il_normalizer.c
new file mode 100755
index 0000000..42097d8
--- /dev/null
+++ b/iup/srclua5/il_normalizer.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int Normalizer(lua_State *L)
+{
+ Ihandle *ih = IupNormalizer(NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupnormalizerlua_open(lua_State * L)
+{
+ iuplua_register(L, Normalizer, "Normalizer");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/normalizer_be64.loh"
+#else
+#include "loh/normalizer_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/normalizer_le64w.loh"
+#else
+#include "loh/normalizer_le64.loh"
+#endif
+#else
+#include "loh/normalizer.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "normalizer.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_olecontrol.c b/iup/srclua5/il_olecontrol.c
new file mode 100755
index 0000000..955b5da
--- /dev/null
+++ b/iup/srclua5/il_olecontrol.c
@@ -0,0 +1,77 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "iupole.h"
+#include "il.h"
+
+
+static int OleControl(lua_State *L)
+{
+ Ihandle *ih = IupOleControl((char *) luaL_checkstring(L, 1));
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupolecontrollua_open(lua_State * L)
+{
+ iuplua_register(L, OleControl, "OleControl");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/olecontrol_be64.loh"
+#else
+#include "loh/olecontrol_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/olecontrol_le64w.loh"
+#else
+#include "loh/olecontrol_le64.loh"
+#endif
+#else
+#include "loh/olecontrol.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "olecontrol.lua");
+#endif
+
+ return 0;
+}
+
+
+int iupolelua_open(lua_State* L)
+{
+ if (iuplua_opencall_internal(L))
+ IupOleControlOpen();
+
+ iuplua_changeEnv(L);
+ iupolecontrollua_open(L);
+ iuplua_returnEnv(L);
+ return 0;
+}
+
+/* obligatory to use require"iupluaole" */
+int luaopen_iupluaole(lua_State* L)
+{
+ return iupolelua_open(L);
+}
+
+/* obligatory to use require"iupluaole51" */
+int luaopen_iupluaole51(lua_State* L)
+{
+ return iupolelua_open(L);
+}
+
diff --git a/iup/srclua5/il_pplot.c b/iup/srclua5/il_pplot.c
new file mode 100755
index 0000000..8929d33
--- /dev/null
+++ b/iup/srclua5/il_pplot.c
@@ -0,0 +1,151 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "iup_pplot.h"
+#include "il.h"
+
+
+static int pplot_edit_cb(Ihandle *self, int p0, int p1, float p2, float p3, float p4, float p5)
+{
+ lua_State *L = iuplua_call_start(self, "edit_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushnumber(L, p3);
+ lua_pushnumber(L, p4);
+ lua_pushnumber(L, p5);
+ return iuplua_call(L, 6);
+}
+
+static int pplot_deleteend_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "deleteend_cb");
+ return iuplua_call(L, 0);
+}
+
+static int pplot_selectbegin_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "selectbegin_cb");
+ return iuplua_call(L, 0);
+}
+
+static int pplot_postdraw_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "postdraw_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int pplot_delete_cb(Ihandle *self, int p0, int p1, float p2, float p3)
+{
+ lua_State *L = iuplua_call_start(self, "delete_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushnumber(L, p3);
+ return iuplua_call(L, 4);
+}
+
+static int pplot_predraw_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "predraw_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int pplot_selectend_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "selectend_cb");
+ return iuplua_call(L, 0);
+}
+
+static int pplot_select_cb(Ihandle *self, int p0, int p1, float p2, float p3, int p4)
+{
+ lua_State *L = iuplua_call_start(self, "select_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushnumber(L, p3);
+ lua_pushnumber(L, p4);
+ return iuplua_call(L, 5);
+}
+
+static int pplot_deletebegin_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "deletebegin_cb");
+ return iuplua_call(L, 0);
+}
+
+static int pplot_editbegin_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "editbegin_cb");
+ return iuplua_call(L, 0);
+}
+
+static int pplot_editend_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "editend_cb");
+ return iuplua_call(L, 0);
+}
+
+static int PPlot(lua_State *L)
+{
+ Ihandle *ih = IupPPlot();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+void iuplua_pplotfuncs_open(lua_State *L);
+
+int iuppplotlua_open(lua_State * L)
+{
+ iuplua_register(L, PPlot, "PPlot");
+
+ iuplua_register_cb(L, "EDIT_CB", (lua_CFunction)pplot_edit_cb, "pplot");
+ iuplua_register_cb(L, "DELETEEND_CB", (lua_CFunction)pplot_deleteend_cb, NULL);
+ iuplua_register_cb(L, "SELECTBEGIN_CB", (lua_CFunction)pplot_selectbegin_cb, NULL);
+ iuplua_register_cb(L, "POSTDRAW_CB", (lua_CFunction)pplot_postdraw_cb, NULL);
+ iuplua_register_cb(L, "DELETE_CB", (lua_CFunction)pplot_delete_cb, NULL);
+ iuplua_register_cb(L, "PREDRAW_CB", (lua_CFunction)pplot_predraw_cb, NULL);
+ iuplua_register_cb(L, "SELECTEND_CB", (lua_CFunction)pplot_selectend_cb, NULL);
+ iuplua_register_cb(L, "SELECT_CB", (lua_CFunction)pplot_select_cb, NULL);
+ iuplua_register_cb(L, "DELETEBEGIN_CB", (lua_CFunction)pplot_deletebegin_cb, NULL);
+ iuplua_register_cb(L, "EDITBEGIN_CB", (lua_CFunction)pplot_editbegin_cb, NULL);
+ iuplua_register_cb(L, "EDITEND_CB", (lua_CFunction)pplot_editend_cb, NULL);
+
+ iuplua_pplotfuncs_open(L);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/pplot_be64.loh"
+#else
+#include "loh/pplot_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/pplot_le64w.loh"
+#else
+#include "loh/pplot_le64.loh"
+#endif
+#else
+#include "loh/pplot.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "pplot.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_progressbar.c b/iup/srclua5/il_progressbar.c
new file mode 100755
index 0000000..5dc789e
--- /dev/null
+++ b/iup/srclua5/il_progressbar.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int ProgressBar(lua_State *L)
+{
+ Ihandle *ih = IupProgressBar();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupprogressbarlua_open(lua_State * L)
+{
+ iuplua_register(L, ProgressBar, "ProgressBar");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/progressbar_be64.loh"
+#else
+#include "loh/progressbar_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/progressbar_le64w.loh"
+#else
+#include "loh/progressbar_le64.loh"
+#endif
+#else
+#include "loh/progressbar.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "progressbar.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_radio.c b/iup/srclua5/il_radio.c
new file mode 100755
index 0000000..ef05eef
--- /dev/null
+++ b/iup/srclua5/il_radio.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int Radio(lua_State *L)
+{
+ Ihandle *ih = IupRadio(iuplua_checkihandle(L, 1));
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupradiolua_open(lua_State * L)
+{
+ iuplua_register(L, Radio, "Radio");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/radio_be64.loh"
+#else
+#include "loh/radio_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/radio_le64w.loh"
+#else
+#include "loh/radio_le64.loh"
+#endif
+#else
+#include "loh/radio.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "radio.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_sbox.c b/iup/srclua5/il_sbox.c
new file mode 100755
index 0000000..9a2e6d5
--- /dev/null
+++ b/iup/srclua5/il_sbox.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int Sbox(lua_State *L)
+{
+ Ihandle *ih = IupSbox(iuplua_checkihandle(L, 1));
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupsboxlua_open(lua_State * L)
+{
+ iuplua_register(L, Sbox, "Sbox");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/sbox_be64.loh"
+#else
+#include "loh/sbox_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/sbox_le64w.loh"
+#else
+#include "loh/sbox_le64.loh"
+#endif
+#else
+#include "loh/sbox.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "sbox.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_scanf.c b/iup/srclua5/il_scanf.c
new file mode 100755
index 0000000..6f035a7
--- /dev/null
+++ b/iup/srclua5/il_scanf.c
@@ -0,0 +1,197 @@
+/** \file
+ * \brief IUP binding for Lua 5.
+ * IupScanf special implementation.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+
+#include "il.h"
+
+#include "iup_str.h"
+#include "iup_predial.h"
+
+#define ALLOC(n,t) ((t *)calloc((n),sizeof(t)))
+#define REQUIRE(b) {if (!(b)) goto cleanup;}
+
+int iupluaScanf(lua_State *L)
+{
+ char *format;
+ int i;
+ int fields;
+ int *width = NULL;
+ int *scroll = NULL;
+ char **prompt = NULL;
+ char **text = NULL;
+ char *title = NULL;
+ char *s = NULL;
+ char *s1 = NULL;
+ char *outf = NULL;
+ int indParam; /* va_list va; */
+ int total = 0;
+
+ format = (char*)luaL_checkstring(L, 1);
+ fields = iupStrCountChar(format, '\n') - 1;
+ REQUIRE(fields > 0);
+ width = ALLOC(fields, int);
+ REQUIRE(width != NULL);
+ scroll = ALLOC(fields, int);
+ REQUIRE(scroll != NULL);
+ prompt = ALLOC(fields, char *);
+ REQUIRE(prompt != NULL);
+ text = ALLOC(fields, char *);
+ REQUIRE(text != NULL);
+
+ indParam = 2; /* va_start(va,format); */
+ REQUIRE((s1 = s = (char *) iupStrDup(format)) != NULL);
+ title = iupStrCopyUntil(&s, '\n');
+ REQUIRE(title != NULL);
+ for (i = 0; i < fields; ++i) {
+ int n;
+ prompt[i] = iupStrCopyUntil(&s, '%');
+ REQUIRE(prompt[i] != NULL);
+ n = sscanf(s, "%d.%d", width + i, scroll + i);
+ REQUIRE(n == 2);
+ s = strchr(s, '%');
+ REQUIRE(s != NULL);
+ if (outf) free(outf);
+ outf = iupStrCopyUntil(&s, '\n');
+ text[i] = ALLOC(width[i] + 1, char);
+ REQUIRE(text[i] != NULL);
+
+ switch (s[-2]) {
+ case 'd':
+ case 'i':
+ case 'o':
+ case 'u':
+ case 'x':
+ case 'X':
+ if (s[-3] == 'l')
+ sprintf(text[i], outf, luaL_checklong(L, indParam++));
+ else if (s[-3] == 'h')
+ sprintf(text[i], outf, (short) luaL_checkint(L, indParam++));
+ else
+ sprintf(text[i], outf, luaL_checkint(L, indParam++));
+ break;
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'E':
+ case 'G':
+ if (s[-3] == 'l')
+ sprintf(text[i], outf, luaL_checknumber(L, indParam++));
+ else
+ sprintf(text[i], outf, (float)luaL_checknumber(L, indParam++));
+ break;
+ case 's':
+ sprintf(text[i], outf, (char *)luaL_checkstring(L, indParam++));
+ break;
+ default:
+ goto cleanup;
+ }
+ }
+ /* va_end(va); */
+
+ REQUIRE(iupDataEntry(fields, width, scroll, title, prompt, text)>0);
+
+ /* va_start(va,format); */
+ s = strchr(format, '\n') + 1;
+ for (i = 0; i < fields; ++i) {
+ s = strchr(s, '\n') + 1;
+ switch (s[-2]) {
+ case 'd':
+ case 'u':
+ if (s[-3] == 'l') {
+ long l = 0;
+ sscanf(text[i], "%ld", &l);
+ lua_pushnumber(L, l);
+ total++;
+ } else if (s[-3] == 'h') {
+ short l = 0;
+ sscanf(text[i], "%hd", &l);
+ lua_pushnumber(L, l);
+ total++;
+ } else {
+ int l = 0;
+ sscanf(text[i], "%d", &l);
+ lua_pushnumber(L, l);
+ total++;
+ }
+ break;
+ case 'i':
+ case 'o':
+ case 'x':
+ case 'X':
+ if (s[-3] == 'l') {
+ long l = 0;
+ sscanf(text[i], "%li", &l);
+ lua_pushnumber(L, l);
+ total++;
+ } else if (s[-3] == 'h') {
+ short l = 0;
+ sscanf(text[i], "%hi", &l);
+ lua_pushnumber(L, l);
+ total++;
+ } else {
+ int l = 0;
+ sscanf(text[i], "%i", &l);
+ lua_pushnumber(L, l);
+ total++;
+ }
+ break;
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'E':
+ case 'G':
+ if (s[-3] == 'l') {
+ double l = 0;
+ sscanf(text[i], "%lg", &l);
+ lua_pushnumber(L, l);
+ total++;
+ } else {
+ float l = 0;
+ sscanf(text[i], "%g", &l);
+ lua_pushnumber(L, l);
+ total++;
+ }
+ break;
+ case 's':
+ lua_pushstring(L, text[i]);
+ total++;
+ break;
+ }
+ }
+ /* va_end(va); */
+
+cleanup:
+ if (s1) free(s1);
+ if (title) free(title);
+ if (width) free(width);
+ if (scroll) free(scroll);
+ if (outf) free(outf);
+ if (prompt)
+ {
+ for (i = 0; i < fields; ++i)
+ if (prompt[i]) free(prompt[i]);
+ free(prompt);
+ }
+ if (text)
+ {
+ for (i = 0; i < fields; ++i)
+ if (text[i]) free(text[i]);
+ free(text);
+ }
+
+ return total;
+}
+
diff --git a/iup/srclua5/il_separator.c b/iup/srclua5/il_separator.c
new file mode 100755
index 0000000..cfd71b1
--- /dev/null
+++ b/iup/srclua5/il_separator.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int Separator(lua_State *L)
+{
+ Ihandle *ih = IupSeparator();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupseparatorlua_open(lua_State * L)
+{
+ iuplua_register(L, Separator, "Separator");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/separator_be64.loh"
+#else
+#include "loh/separator_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/separator_le64w.loh"
+#else
+#include "loh/separator_le64.loh"
+#endif
+#else
+#include "loh/separator.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "separator.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_spin.c b/iup/srclua5/il_spin.c
new file mode 100755
index 0000000..c3e5439
--- /dev/null
+++ b/iup/srclua5/il_spin.c
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int spin_spin_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "spin_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int Spin(lua_State *L)
+{
+ Ihandle *ih = IupSpin();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupspinlua_open(lua_State * L)
+{
+ iuplua_register(L, Spin, "Spin");
+
+ iuplua_register_cb(L, "SPIN_CB", (lua_CFunction)spin_spin_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/spin_be64.loh"
+#else
+#include "loh/spin_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/spin_le64w.loh"
+#else
+#include "loh/spin_le64.loh"
+#endif
+#else
+#include "loh/spin.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "spin.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_spinbox.c b/iup/srclua5/il_spinbox.c
new file mode 100755
index 0000000..843154e
--- /dev/null
+++ b/iup/srclua5/il_spinbox.c
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int spinbox_spin_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "spin_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int Spinbox(lua_State *L)
+{
+ Ihandle *ih = IupSpinbox(iuplua_checkihandle(L, 1));
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupspinboxlua_open(lua_State * L)
+{
+ iuplua_register(L, Spinbox, "Spinbox");
+
+ iuplua_register_cb(L, "SPIN_CB", (lua_CFunction)spinbox_spin_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/spinbox_be64.loh"
+#else
+#include "loh/spinbox_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/spinbox_le64w.loh"
+#else
+#include "loh/spinbox_le64.loh"
+#endif
+#else
+#include "loh/spinbox.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "spinbox.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_submenu.c b/iup/srclua5/il_submenu.c
new file mode 100755
index 0000000..b82dd4b
--- /dev/null
+++ b/iup/srclua5/il_submenu.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int Submenu(lua_State *L)
+{
+ Ihandle *ih = IupSubmenu((char *) luaL_optstring(L, 1, NULL), iuplua_checkihandle(L, 2));
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupsubmenulua_open(lua_State * L)
+{
+ iuplua_register(L, Submenu, "Submenu");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/submenu_be64.loh"
+#else
+#include "loh/submenu_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/submenu_le64w.loh"
+#else
+#include "loh/submenu_le64.loh"
+#endif
+#else
+#include "loh/submenu.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "submenu.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_tabs.c b/iup/srclua5/il_tabs.c
new file mode 100755
index 0000000..09c68aa
--- /dev/null
+++ b/iup/srclua5/il_tabs.c
@@ -0,0 +1,63 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int tabs_tabchange_cb(Ihandle *self, Ihandle * p0, Ihandle * p1)
+{
+ lua_State *L = iuplua_call_start(self, "tabchange_cb");
+ iuplua_pushihandle(L, p0);
+ iuplua_pushihandle(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int Tabsv(lua_State *L)
+{
+ Ihandle **hlist = iuplua_checkihandle_array(L, 1);
+ Ihandle *h = IupTabsv(hlist);
+ iuplua_plugstate(L, h);
+ iuplua_pushihandle_raw(L, h);
+ free(hlist);
+ return 1;
+}
+
+int iuptabslua_open(lua_State * L)
+{
+ iuplua_register(L, Tabsv, "Tabsv");
+
+ iuplua_register_cb(L, "TABCHANGE_CB", (lua_CFunction)tabs_tabchange_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/tabs_be64.loh"
+#else
+#include "loh/tabs_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/tabs_le64w.loh"
+#else
+#include "loh/tabs_le64.loh"
+#endif
+#else
+#include "loh/tabs.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "tabs.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_text.c b/iup/srclua5/il_text.c
new file mode 100755
index 0000000..f3751f2
--- /dev/null
+++ b/iup/srclua5/il_text.c
@@ -0,0 +1,78 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int text_caret_cb(Ihandle *self, int p0, int p1, int p2)
+{
+ lua_State *L = iuplua_call_start(self, "caret_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ return iuplua_call(L, 3);
+}
+
+static int text_action(Ihandle *self, int p0, char * p1)
+{
+ lua_State *L = iuplua_call_start(self, "action");
+ lua_pushnumber(L, p0);
+ lua_pushstring(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int text_valuechanged_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "valuechanged_cb");
+ return iuplua_call(L, 0);
+}
+
+static int Text(lua_State *L)
+{
+ Ihandle *ih = IupText(NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iuptextlua_open(lua_State * L)
+{
+ iuplua_register(L, Text, "Text");
+
+ iuplua_register_cb(L, "CARET_CB", (lua_CFunction)text_caret_cb, NULL);
+ iuplua_register_cb(L, "ACTION", (lua_CFunction)text_action, "text");
+ iuplua_register_cb(L, "VALUECHANGED_CB", (lua_CFunction)text_valuechanged_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/text_be64.loh"
+#else
+#include "loh/text_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/text_le64w.loh"
+#else
+#include "loh/text_le64.loh"
+#endif
+#else
+#include "loh/text.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "text.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_timer.c b/iup/srclua5/il_timer.c
new file mode 100755
index 0000000..b4845ee
--- /dev/null
+++ b/iup/srclua5/il_timer.c
@@ -0,0 +1,59 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int timer_action_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "action_cb");
+ return iuplua_call(L, 0);
+}
+
+static int Timer(lua_State *L)
+{
+ Ihandle *ih = IupTimer();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iuptimerlua_open(lua_State * L)
+{
+ iuplua_register(L, Timer, "Timer");
+
+ iuplua_register_cb(L, "ACTION_CB", (lua_CFunction)timer_action_cb, "timer");
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/timer_be64.loh"
+#else
+#include "loh/timer_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/timer_le64w.loh"
+#else
+#include "loh/timer_le64.loh"
+#endif
+#else
+#include "loh/timer.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "timer.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_toggle.c b/iup/srclua5/il_toggle.c
new file mode 100755
index 0000000..bea7099
--- /dev/null
+++ b/iup/srclua5/il_toggle.c
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int toggle_action(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "action");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int Toggle(lua_State *L)
+{
+ Ihandle *ih = IupToggle((char *) luaL_optstring(L, 1, NULL), NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iuptogglelua_open(lua_State * L)
+{
+ iuplua_register(L, Toggle, "Toggle");
+
+ iuplua_register_cb(L, "ACTION", (lua_CFunction)toggle_action, "toggle");
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/toggle_be64.loh"
+#else
+#include "loh/toggle_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/toggle_le64w.loh"
+#else
+#include "loh/toggle_le64.loh"
+#endif
+#else
+#include "loh/toggle.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "toggle.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_tree.c b/iup/srclua5/il_tree.c
new file mode 100755
index 0000000..a9eb407
--- /dev/null
+++ b/iup/srclua5/il_tree.c
@@ -0,0 +1,152 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int tree_branchopen_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "branchopen_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int tree_selection_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "selection_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int tree_dragdrop_cb(Ihandle *self, int p0, int p1, int p2, int p3)
+{
+ lua_State *L = iuplua_call_start(self, "dragdrop_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushnumber(L, p3);
+ return iuplua_call(L, 4);
+}
+
+static int tree_rename_cb(Ihandle *self, int p0, char * p1)
+{
+ lua_State *L = iuplua_call_start(self, "rename_cb");
+ lua_pushnumber(L, p0);
+ lua_pushstring(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int tree_renamenode_cb(Ihandle *self, int p0, char * p1)
+{
+ lua_State *L = iuplua_call_start(self, "renamenode_cb");
+ lua_pushnumber(L, p0);
+ lua_pushstring(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int tree_showrename_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "showrename_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int tree_multiselection_cb(Ihandle *self, int p0, int p1)
+{
+ lua_State *L = iuplua_call_start(self, "multiselection_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int tree_branchclose_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "branchclose_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int tree_executeleaf_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "executeleaf_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int tree_rightclick_cb(Ihandle *self, int p0)
+{
+ lua_State *L = iuplua_call_start(self, "rightclick_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int tree_noderemoved_cb(Ihandle *self, int p0, char * p1)
+{
+ lua_State *L = iuplua_call_start(self, "noderemoved_cb");
+ lua_pushnumber(L, p0);
+ lua_pushstring(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int Tree(lua_State *L)
+{
+ Ihandle *ih = IupTree();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+void iuplua_treefuncs_open(lua_State *L);
+
+int iuptreelua_open(lua_State * L)
+{
+ iuplua_register(L, Tree, "Tree");
+
+ iuplua_register_cb(L, "BRANCHOPEN_CB", (lua_CFunction)tree_branchopen_cb, NULL);
+ iuplua_register_cb(L, "SELECTION_CB", (lua_CFunction)tree_selection_cb, NULL);
+ iuplua_register_cb(L, "DRAGDROP_CB", (lua_CFunction)tree_dragdrop_cb, NULL);
+ iuplua_register_cb(L, "RENAME_CB", (lua_CFunction)tree_rename_cb, NULL);
+ iuplua_register_cb(L, "RENAMENODE_CB", (lua_CFunction)tree_renamenode_cb, NULL);
+ iuplua_register_cb(L, "SHOWRENAME_CB", (lua_CFunction)tree_showrename_cb, NULL);
+ iuplua_register_cb(L, "MULTISELECTION_CB", (lua_CFunction)tree_multiselection_cb, NULL);
+ iuplua_register_cb(L, "BRANCHCLOSE_CB", (lua_CFunction)tree_branchclose_cb, NULL);
+ iuplua_register_cb(L, "EXECUTELEAF_CB", (lua_CFunction)tree_executeleaf_cb, NULL);
+ iuplua_register_cb(L, "RIGHTCLICK_CB", (lua_CFunction)tree_rightclick_cb, NULL);
+ iuplua_register_cb(L, "NODEREMOVED_CB", (lua_CFunction)tree_noderemoved_cb, NULL);
+
+ iuplua_treefuncs_open(L);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/tree_be64.loh"
+#else
+#include "loh/tree_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/tree_le64w.loh"
+#else
+#include "loh/tree_le64.loh"
+#endif
+#else
+#include "loh/tree.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "tree.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_tree_aux.c b/iup/srclua5/il_tree_aux.c
new file mode 100755
index 0000000..99e721b
--- /dev/null
+++ b/iup/srclua5/il_tree_aux.c
@@ -0,0 +1,184 @@
+/** \file
+ * \brief iuptree binding for Lua 5.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+#include "iuplua.h"
+#include "il.h"
+#include "il_controls.h"
+
+/*
+ The REGISTRY is used to store references to the associated Lua objects.
+ Given an ID, to retreive a Lua object is quite simple.
+
+ But given a user_id to obtain the ID is more complicated.
+ The IUPTREEREFTABLE is used to do this mapping.
+ We use the object as the index to this table.
+*/
+
+/* iup.IUPTREEREFTABLE[object at pos] = ref */
+static void tree_settableref(lua_State *L, int pos, int ref)
+{
+ lua_getglobal(L, "iup");
+ lua_pushstring(L, "IUPTREEREFTABLE");
+ lua_gettable(L, -2);
+ lua_remove(L, -2);
+ lua_pushvalue(L, pos);
+ if(ref == LUA_NOREF)
+ lua_pushnil(L);
+ else
+ lua_pushnumber(L, ref);
+ lua_settable(L, -3);
+ lua_pop(L, 1);
+}
+
+/* ref = iup.IUPTREEREFTABLE[object at pos] */
+static int tree_gettableref(lua_State *L, int pos)
+{
+ lua_getglobal(L, "iup");
+ lua_pushstring(L, "IUPTREEREFTABLE");
+ lua_gettable(L, -2);
+ lua_remove(L, -2);
+ lua_pushvalue(L, pos);
+ lua_gettable(L, -2);
+ if (lua_isnil(L, -1))
+ {
+ lua_pop(L, 1);
+ return LUA_NOREF;
+ }
+ else
+ {
+ int ref = (int) lua_tonumber(L, -1);
+ lua_pop(L, 1);
+ return ref;
+ }
+}
+
+static void tree_push_userid(lua_State *L, void* userid)
+{
+ int ref = (int)userid;
+ if (ref == 0) /* userid is actually NULL */
+ lua_pushnil(L);
+ else
+ {
+ if (ref > 0) ref--; /* only positive references are shifted */
+ lua_getref(L, ref);
+ }
+}
+
+/*****************************************************************************
+ * Userdata/Table <-> id functions
+ ****************************************************************************/
+
+static int TreeGetId(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ int ref = tree_gettableref(L, 2);
+ if (ref == LUA_NOREF)
+ lua_pushnil(L);
+ else
+ {
+ int id;
+ if (ref >= 0) ref++; /* only positive references are shifted */
+ id = IupTreeGetId(ih, (void*)ref);
+ if (id == -1)
+ lua_pushnil(L);
+ else
+ lua_pushnumber(L, id);
+ }
+ return 1;
+}
+
+static int TreeGetUserId(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ int id = (int)luaL_checknumber(L,2);
+ tree_push_userid(L, IupTreeGetUserId(ih, id));
+ return 1;
+}
+
+static int TreeSetUserId(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ int id = (int)luaL_checknumber(L,2);
+ int ref = (int)IupTreeGetUserId(ih, id);
+ if (ref != 0) /* userid is not NULL */
+ {
+ if (ref > 0) ref--; /* only positive references are shifted */
+
+ /* release the previous object referenced there */
+ lua_getref(L, ref);
+ tree_settableref(L, 4, LUA_NOREF);
+ lua_unref(L, ref);
+ lua_pop(L, 1);
+ }
+
+ if (lua_isnil(L, 3))
+ IupTreeSetUserId(ih, id, NULL);
+ else
+ {
+ /* add a new reference */
+ lua_pushvalue(L, 3);
+ ref = lua_ref(L, 1);
+ tree_settableref(L, 3, ref);
+
+ if (ref >= 0) ref++; /* only positive references are shifted */
+ IupTreeSetUserId(ih, id, (char*)ref);
+ }
+
+ return 0;
+}
+
+static int tree_multiselection_cb(Ihandle *ih, int* ids, int p1)
+{
+ int i;
+ lua_State *L = iuplua_call_start(ih, "multiselection_cb");
+ lua_newtable(L);
+ for (i = 0; i < p1; i++)
+ {
+ lua_pushnumber(L,i+1);
+ lua_pushnumber(L,ids[i]);
+ lua_settable(L,-3);
+ }
+ lua_pushnumber(L, p1);
+ return iuplua_call(L, 2);
+}
+
+static int tree_noderemoved_cb(Ihandle *ih, int id, void* p1)
+{
+ lua_State *L = iuplua_call_start(ih, "noderemoved_cb");
+ lua_pushnumber(L, id);
+ tree_push_userid(L, p1);
+ return iuplua_call(L, 2);
+}
+
+void iuplua_treefuncs_open (lua_State *L)
+{
+ iuplua_dostring(L, "IUPTREEREFTABLE={}", "");
+
+ iuplua_register_cb(L, "MULTISELECTION_CB", (lua_CFunction)tree_multiselection_cb, NULL);
+ iuplua_register_cb(L, "NODEREMOVED_CB", (lua_CFunction)tree_noderemoved_cb, NULL);
+
+/* In Lua 5:
+ TreeSetTableId = TreeSetUserId
+ TreeGetTable = TreeGetUserId
+ TreeGetTableId = TreeGetId
+*/
+
+ /* Userdata <-> id */
+ iuplua_register(L, TreeGetId, "TreeGetId");
+ iuplua_register(L, TreeGetUserId, "TreeGetUserId");
+ iuplua_register(L, TreeSetUserId, "TreeSetUserId");
+
+ /* Table <-> id */
+ iuplua_register(L, TreeGetId, "TreeGetTableId");
+ iuplua_register(L, TreeGetUserId, "TreeGetTable");
+ iuplua_register(L, TreeSetUserId, "TreeSetTableId");
+}
diff --git a/iup/srclua5/il_user.c b/iup/srclua5/il_user.c
new file mode 100755
index 0000000..09475f2
--- /dev/null
+++ b/iup/srclua5/il_user.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int User(lua_State *L)
+{
+ Ihandle *ih = IupUser();
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupuserlua_open(lua_State * L)
+{
+ iuplua_register(L, User, "User");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/user_be64.loh"
+#else
+#include "loh/user_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/user_le64w.loh"
+#else
+#include "loh/user_le64.loh"
+#endif
+#else
+#include "loh/user.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "user.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_val.c b/iup/srclua5/il_val.c
new file mode 100755
index 0000000..e8918d7
--- /dev/null
+++ b/iup/srclua5/il_val.c
@@ -0,0 +1,76 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int val_button_press_cb(Ihandle *self, double p0)
+{
+ lua_State *L = iuplua_call_start(self, "button_press_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int val_mousemove_cb(Ihandle *self, double p0)
+{
+ lua_State *L = iuplua_call_start(self, "mousemove_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int val_button_release_cb(Ihandle *self, double p0)
+{
+ lua_State *L = iuplua_call_start(self, "button_release_cb");
+ lua_pushnumber(L, p0);
+ return iuplua_call(L, 1);
+}
+
+static int Val(lua_State *L)
+{
+ Ihandle *ih = IupVal((char *) luaL_checkstring(L, 1));
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupvallua_open(lua_State * L)
+{
+ iuplua_register(L, Val, "Val");
+
+ iuplua_register_cb(L, "BUTTON_PRESS_CB", (lua_CFunction)val_button_press_cb, NULL);
+ iuplua_register_cb(L, "MOUSEMOVE_CB", (lua_CFunction)val_mousemove_cb, "val");
+ iuplua_register_cb(L, "BUTTON_RELEASE_CB", (lua_CFunction)val_button_release_cb, NULL);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/val_be64.loh"
+#else
+#include "loh/val_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/val_le64w.loh"
+#else
+#include "loh/val_le64.loh"
+#endif
+#else
+#include "loh/val.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "val.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_vbox.c b/iup/srclua5/il_vbox.c
new file mode 100755
index 0000000..ff2c55d
--- /dev/null
+++ b/iup/srclua5/il_vbox.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int Vbox(lua_State *L)
+{
+ Ihandle *ih = IupVbox(NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupvboxlua_open(lua_State * L)
+{
+ iuplua_register(L, Vbox, "Vbox");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/vbox_be64.loh"
+#else
+#include "loh/vbox_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/vbox_le64w.loh"
+#else
+#include "loh/vbox_le64.loh"
+#endif
+#else
+#include "loh/vbox.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "vbox.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/il_zbox.c b/iup/srclua5/il_zbox.c
new file mode 100755
index 0000000..cdc47be
--- /dev/null
+++ b/iup/srclua5/il_zbox.c
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Automatically generated file (iuplua5). Please don't change anything. *
+ *****************************************************************************/
+
+#include <stdlib.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "il.h"
+
+
+static int Zbox(lua_State *L)
+{
+ Ihandle *ih = IupZbox(NULL);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+int iupzboxlua_open(lua_State * L)
+{
+ iuplua_register(L, Zbox, "Zbox");
+
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/zbox_be64.loh"
+#else
+#include "loh/zbox_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/zbox_le64w.loh"
+#else
+#include "loh/zbox_le64.loh"
+#endif
+#else
+#include "loh/zbox.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "zbox.lua");
+#endif
+
+ return 0;
+}
+
diff --git a/iup/srclua5/image.lua b/iup/srclua5/image.lua
new file mode 100755
index 0000000..38ef556
--- /dev/null
+++ b/iup/srclua5/image.lua
@@ -0,0 +1,96 @@
+------------------------------------------------------------------------------
+-- Image class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "image",
+ parent = WIDGET,
+ creation = "nns", -- fake definition
+ callback = {},
+ createfunc = [[
+static int Image (lua_State * L)
+{
+ int w, h, c, num_colors;
+ unsigned char *pixels;
+ Ihandle* ih;
+ char str[20];
+
+ if (lua_istable(L, 1))
+ {
+ int i, j;
+
+ /* get the number of lines */
+ h = luaL_getn(L, 1);
+
+ /* get the number of columns of the first line */
+ lua_pushnumber(L, 1);
+ lua_gettable(L, 1);
+ w = luaL_getn(L, -1);
+ lua_pop(L, 1);
+
+ pixels = (unsigned char *) malloc (h*w);
+
+ for (i=1; i<=h; i++)
+ {
+ lua_pushnumber(L, i);
+ lua_gettable(L, 1);
+ for (j=1; j<=w; j++)
+ {
+ int idx = (i-1)*w+(j-1);
+ lua_pushnumber(L, j);
+ lua_gettable(L, -2);
+ pixels[idx] = (unsigned char)lua_tonumber(L, -1);
+ lua_pop(L, 1);
+ }
+ lua_pop(L, 1);
+ }
+
+ ih = IupImage(w,h,pixels);
+ free(pixels);
+
+ num_colors = luaL_getn(L, 2);
+ num_colors = num_colors>255? 255: num_colors;
+ for(c=1; c<=num_colors; c++)
+ {
+ lua_rawgeti(L, 2, c);
+ sprintf(str, "%d", c);
+ IupStoreAttribute(ih, str, lua_tostring(L,-1));
+ lua_pop(L, 1);
+ }
+ }
+ else
+ {
+ w = luaL_checkint(L, 1);
+ h = luaL_checkint(L, 2);
+ pixels = iuplua_checkuchar_array(L, 3, w*h);
+ ih = IupImage(w, h, pixels);
+ free(pixels);
+
+ num_colors = luaL_getn(L, 4);
+ num_colors = num_colors>256? 256: num_colors;
+ for(c=1; c<=num_colors; c++)
+ {
+ lua_rawgeti(L, 4, c);
+ sprintf(str, "%d", c-1);
+ IupStoreAttribute(ih, str, lua_tostring(L,-1));
+ lua_pop(L, 1);
+ }
+ }
+
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ return 1;
+}
+
+]]
+}
+
+function ctrl.createElement(class, arg)
+ if (arg.width and arg.height and arg.pixels) then
+ return Image(arg.width, arg.height, arg.pixels, arg.colors)
+ else
+ return Image(arg, arg.colors)
+ end
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/imagergb.lua b/iup/srclua5/imagergb.lua
new file mode 100755
index 0000000..caab772
--- /dev/null
+++ b/iup/srclua5/imagergb.lua
@@ -0,0 +1,31 @@
+------------------------------------------------------------------------------
+-- ImageRGB class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "imagergb",
+ parent = WIDGET,
+ creation = "nns", -- fake definition
+ funcname = "ImageRGB",
+ callback = {},
+ createfunc = [[
+static int ImageRGB(lua_State *L)
+{
+ int w = luaL_checkint(L, 1);
+ int h = luaL_checkint(L, 2);
+ unsigned char *pixels = iuplua_checkuchar_array(L, 3, w*h*3);
+ Ihandle *ih = IupImageRGB(w, h, pixels);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ free(pixels);
+ return 1;
+}
+
+]]
+}
+
+function ctrl.createElement(class, arg)
+ return ImageRGB(arg.width, arg.height, arg.pixels)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/imagergba.lua b/iup/srclua5/imagergba.lua
new file mode 100755
index 0000000..87eb967
--- /dev/null
+++ b/iup/srclua5/imagergba.lua
@@ -0,0 +1,31 @@
+------------------------------------------------------------------------------
+-- ImageRGBA class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "imagergba",
+ parent = WIDGET,
+ creation = "nns", -- fake definition
+ funcname = "ImageRGBA",
+ callback = {},
+ createfunc = [[
+static int ImageRGBA(lua_State *L)
+{
+ int w = luaL_checkint(L, 1);
+ int h = luaL_checkint(L, 2);
+ unsigned char *pixels = iuplua_checkuchar_array(L, 3, w*h*4);
+ Ihandle *ih = IupImageRGBA(w, h, pixels);
+ iuplua_plugstate(L, ih);
+ iuplua_pushihandle_raw(L, ih);
+ free(pixels);
+ return 1;
+}
+
+]]
+}
+
+function ctrl.createElement(class, arg)
+ return ImageRGBA(arg.width, arg.height, arg.pixels)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/item.lua b/iup/srclua5/item.lua
new file mode 100755
index 0000000..cbd0c1e
--- /dev/null
+++ b/iup/srclua5/item.lua
@@ -0,0 +1,19 @@
+------------------------------------------------------------------------------
+-- Item class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "item",
+ parent = WIDGET,
+ creation = "S-",
+ callback = {
+ action = "",
+ highlight_cb = "",
+ }
+}
+
+function ctrl.createElement(class, arg)
+ return Item(arg.title)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/iup_pplot.mak b/iup/srclua5/iup_pplot.mak
new file mode 100755
index 0000000..b353fe7
--- /dev/null
+++ b/iup/srclua5/iup_pplot.mak
@@ -0,0 +1,26 @@
+PROJNAME = iup
+LIBNAME = iuplua_pplot51
+OPT = YES
+DEF_FILE = iuplua_pplot5.def
+
+IUP := ..
+
+DEFINES = IUPLUA_USELOH
+
+USE_IUP3 = Yes
+USE_IUPLUA = Yes
+USE_CDLUA = Yes
+LIBS = iup_pplot
+
+USE_LUA51 = Yes
+NO_LUALINK = Yes
+
+LOHDIR = loh
+SRCLUA = pplot.lua
+GC := $(addsuffix .c, $(basename $(SRCLUA)))
+GC := $(addprefix il_, $(GC))
+
+$(GC) : il_%.c : %.lua generator.lua
+ $(LUABIN) generator.lua $<
+
+SRC := iuplua_pplot.c $(GC)
diff --git a/iup/srclua5/iupcd.mak b/iup/srclua5/iupcd.mak
new file mode 100755
index 0000000..26cf9b8
--- /dev/null
+++ b/iup/srclua5/iupcd.mak
@@ -0,0 +1,21 @@
+PROJNAME = iup
+LIBNAME = iupluacd51
+OPT = YES
+
+DEFINES = CD_NO_OLD_INTERFACE
+SRC = iuplua_cd.c
+DEF_FILE = iupluacd5.def
+
+# Can not use USE_IUPLUA because Tecmake will include "iupluacd51" in linker
+
+INCLUDES = ../include
+LIBS = iuplua51
+LDIR = ../lib/$(TEC_UNAME)
+
+IUP := ..
+
+USE_CD = YES
+USE_IUP3 = YES
+USE_LUA51 = Yes
+NO_LUALINK = Yes
+USE_CDLUA = YES
diff --git a/iup/srclua5/iupcontrols.mak b/iup/srclua5/iupcontrols.mak
new file mode 100755
index 0000000..ea1e59f
--- /dev/null
+++ b/iup/srclua5/iupcontrols.mak
@@ -0,0 +1,26 @@
+PROJNAME = iup
+LIBNAME = iupluacontrols51
+OPT = YES
+DEF_FILE = iupluacontrols5.def
+
+IUP := ..
+
+DEFINES = IUPLUA_USELOH
+
+USE_IUP3 = Yes
+USE_IUPLUA = Yes
+USE_CDLUA = Yes
+LIBS = iupcontrols
+
+USE_LUA51 = Yes
+NO_LUALINK = Yes
+
+LOHDIR = loh
+SRCLUA = dial.lua gauge.lua colorbrowser.lua colorbar.lua matrix.lua cells.lua
+GC := $(addsuffix .c, $(basename $(SRCLUA)))
+GC := $(addprefix il_, $(GC))
+
+$(GC) : il_%.c : %.lua generator.lua
+ $(LUABIN) generator.lua $<
+
+SRC := iuplua_controls.c il_mask.c il_matrix_aux.c $(GC)
diff --git a/iup/srclua5/iupgl.mak b/iup/srclua5/iupgl.mak
new file mode 100755
index 0000000..6e9f45d
--- /dev/null
+++ b/iup/srclua5/iupgl.mak
@@ -0,0 +1,27 @@
+PROJNAME = iup
+LIBNAME = iupluagl51
+OPT = YES
+
+DEF_FILE = iupluagl5.def
+DEFINES = IUPLUA_USELOH
+
+IUP := ..
+
+# Can not use USE_IUPLUA because Tecmake will include "iupluagl51" in linker
+
+USE_IUP3 = Yes
+USE_OPENGL = Yes
+LIBS = iuplua51
+
+USE_LUA51 = Yes
+NO_LUALINK = Yes
+
+LOHDIR = loh
+SRCLUA = glcanvas.lua
+GC = $(addsuffix .c, $(basename $(SRCLUA)))
+GC := $(addprefix il_, $(GC))
+
+$(GC) : il_%.c : %.lua generator.lua
+ $(LUABIN) generator.lua $<
+
+SRC = iuplua_glcanvas.c $(GC)
diff --git a/iup/srclua5/iupim.mak b/iup/srclua5/iupim.mak
new file mode 100755
index 0000000..1355c42
--- /dev/null
+++ b/iup/srclua5/iupim.mak
@@ -0,0 +1,17 @@
+PROJNAME = iup
+LIBNAME = iupluaim51
+OPT = YES
+
+DEF_FILE = iupluaim5.def
+SRC = iuplua_im.c
+
+INCLUDES = ../src
+LIBS = iupim
+
+IUP := ..
+
+USE_IUP3 = Yes
+USE_IUPLUA = Yes
+USE_IM = Yes
+USE_LUA51 = Yes
+NO_LUALINK = Yes
diff --git a/iup/srclua5/iupimglib.mak b/iup/srclua5/iupimglib.mak
new file mode 100755
index 0000000..5b74dfb
--- /dev/null
+++ b/iup/srclua5/iupimglib.mak
@@ -0,0 +1,17 @@
+PROJNAME = iup
+LIBNAME = iupluaimglib51
+OPT = YES
+
+SRC = iuplua_imglib.c
+DEF_FILE = iupluaimglib5.def
+
+INCLUDES = ../include
+LIBS = iupimglib
+LDIR = ../lib/$(TEC_UNAME)
+
+IUP := ..
+
+USE_IUP3 = Yes
+USE_IUPLUA = Yes
+USE_LUA51 = Yes
+NO_LUALINK = Yes
diff --git a/iup/srclua5/iuplua.c b/iup/srclua5/iuplua.c
new file mode 100755
index 0000000..fd001a0
--- /dev/null
+++ b/iup/srclua5/iuplua.c
@@ -0,0 +1,918 @@
+/** \file
+* \brief IUP binding for Lua 5.
+*
+* See Copyright Notice in "iup.h"
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iup_str.h"
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iuplua.h"
+#include "il.h"
+
+
+/*****************************************************************************
+* Auxiliary functions *
+****************************************************************************/
+
+
+ /*************************************/
+ /* iuplua_dostring and iuplua_dofile */
+
+static void error_message(lua_State *L, const char *msg, const char* traceback)
+{
+ lua_getglobal(L, "iup");
+ lua_pushstring(L, "_ERRORMESSAGE");
+ lua_gettable(L, -2);
+ lua_remove(L, -2);
+
+ if(lua_isnil(L, -1))
+ {
+ /* Panic mode */
+ if (traceback != NULL)
+ fprintf(stderr, "%s\n%s\n", msg, traceback);
+ else
+ fprintf(stderr, "%s\n", msg);
+ fflush(stderr);
+ return;
+ }
+ lua_pushstring(L, msg);
+ lua_pushstring(L, traceback);
+ lua_call(L, 2, 0);
+}
+
+static int report (lua_State *L, int status, int concat_traceback)
+{
+ if (status && !lua_isnil(L, -1))
+ {
+ const char *msg = lua_tostring(L, -2);
+
+
+
+ const char *traceback;
+ if (msg == NULL) {
+ msg = "(error with no message)";
+ traceback = NULL;
+ }
+ else if (concat_traceback) {
+ lua_concat(L, 2);
+ msg = lua_tostring(L, -1);
+ traceback = NULL;
+ }
+ else {
+ traceback = lua_tostring(L, -1);
+ }
+ error_message(L, msg, traceback);
+ lua_pop(L, 2);
+ }
+ return status;
+}
+
+static int traceback (lua_State *L) {
+ lua_getfield(L, LUA_GLOBALSINDEX, "debug");
+ if (!lua_istable(L, -1)) {
+ lua_pop(L, 1);
+ return 1;
+ }
+ lua_getfield(L, -1, "traceback");
+ if (!lua_isfunction(L, -1)) {
+ lua_pop(L, 2);
+ return 1;
+ }
+
+ lua_remove(L, 2);
+ lua_pushliteral(L, "");
+ lua_pushinteger(L, 2); /* skip this function */
+ lua_call(L, 2, 1); /* call debug.traceback */
+ lua_getglobal(L, "iup"); /* store traceback in iup._LASTTRACEBACK */
+ lua_pushstring(L, "_LASTTRACEBACK");
+ lua_pushvalue(L, -3);
+ lua_settable(L, -3);
+ lua_pop(L, 2);
+ return 1;
+}
+
+static int docall (lua_State *L, int narg, int nret)
+{
+ int status;
+ int base = lua_gettop(L) - narg; /* function index */
+ lua_pushcfunction(L, traceback); /* push traceback function */
+ lua_insert(L, base); /* put it under chunk and args */
+ status = lua_pcall(L, narg, nret, base);
+ lua_remove(L, base); /* remove traceback function */
+ if (status != 0) {
+ /* force a complete garbage collection in case of errors */
+ lua_gc(L, LUA_GCCOLLECT, 0);
+ /* put _LASTTRACEBACK at stack position 2 */
+ lua_getglobal(L, "iup");
+ lua_pushliteral(L, "_LASTTRACEBACK");
+ lua_gettable(L, -2);
+ lua_remove(L, -2);
+ if (!lua_isstring(L, -1)) {
+ lua_pop(L, 1);
+ lua_pushliteral(L, "");
+ /* set _LASTTRACEBACK as nil */
+ lua_getglobal(L, "iup");
+ lua_pushliteral(L, "_LASTTRACEBACK");
+ lua_pushnil(L);
+ lua_settable(L, -3);
+ lua_pop(L, 1);
+ }
+ }
+ return status;
+}
+
+int iuplua_dofile(lua_State *L, const char *filename)
+{
+ int status = luaL_loadfile(L, filename);
+ if (status == 0)
+ status = docall(L, 0, 0);
+ return report(L, status, 1);
+}
+
+int iuplua_dostring(lua_State *L, const char *s, const char *name)
+{
+ int status = luaL_loadbuffer(L, s, strlen(s), name);
+ if (status == 0)
+ status = docall(L, 0, 0);
+ return report(L, status, 1);
+}
+
+ /*************************************/
+ /* Utilities */
+
+Ihandle *iuplua_checkihandleornil(lua_State *L, int pos)
+{
+ if (lua_isnil(L, pos))
+ return NULL;
+ else
+ return iuplua_checkihandle(L, pos);
+}
+
+Ihandle *iuplua_checkihandle(lua_State *L, int pos)
+{
+ lua_getmetatable(L, pos); /* t2 = metatable(stack(pos)) */
+ lua_pushstring(L, "iup handle");
+ lua_gettable(L, LUA_REGISTRYINDEX); /* t = registry["iup handle"] */
+ if (lua_equal(L, -2, -1)) /* check (t2==t)? */
+ {
+ lua_pop (L, 2);
+ return *(Ihandle**)lua_touserdata(L, pos);
+ }
+ else
+ {
+ luaL_argerror(L, pos, "iup handle expected");
+ return NULL;
+ }
+}
+
+void iuplua_pushihandle_raw(lua_State *L, Ihandle *ih)
+{
+ if (ih)
+ {
+ Ihandle** new_pointer = (Ihandle**)lua_newuserdata(L, sizeof(Ihandle*));
+ *new_pointer = ih;
+ }
+ else
+ lua_pushnil(L);
+}
+
+void iuplua_pushihandle(lua_State *L, Ihandle *ih)
+{
+ if (ih)
+ {
+ /* not created in Lua? */
+ char* sref = IupGetAttribute(ih, "_IUPLUA_WIDGET_TABLE_REF");
+ if (!sref)
+ {
+ lua_getglobal(L,"iup");
+ lua_pushstring(L,"RegisterHandle");
+ lua_gettable(L, -2); /* f = iup.RegisterHandle */
+ lua_remove(L, -2);
+ iuplua_pushihandle_raw(L, ih); /* push ih */
+ lua_pushstring(L, IupGetClassName(ih)); /* push type */
+ lua_call(L, 2, 1); /* call f(ih, type) */
+ }
+ else
+ {
+ iuplua_pushihandle_raw(L, ih); /* push ih */
+ lua_pushstring(L, "iup handle");
+ lua_gettable(L, LUA_REGISTRYINDEX); /* t = registry["iup handle"] */
+ lua_setmetatable(L, -2); /* metatable(ih) = t */
+ }
+ }
+ else
+ lua_pushnil(L);
+}
+
+void iuplua_removeihandle(lua_State *L, Ihandle *ih)
+{
+ char* sref;
+
+ /* called from Destroy.
+ must also remove references from the children. */
+ Ihandle* child = IupGetNextChild(ih, NULL);
+ while(child)
+ {
+ iuplua_removeihandle(L, child);
+ child = IupGetNextChild(ih, child);
+ }
+
+ sref = IupGetAttribute(ih, "_IUPLUA_WIDGET_TABLE_REF");
+ if (sref)
+ {
+ int ref = atoi(sref);
+
+ /* removes the ihandle reference in the lua table */
+ /* object.handle = nil */
+ lua_getref(L, ref); /* push object */
+ lua_pushstring(L, "handle");
+ lua_pushnil(L);
+ lua_settable(L, -3);
+ lua_pop(L,1);
+
+ /* removes the association of the ihandle with the lua table */
+ lua_unref(L, ref); /* this is the complement of SetWidget */
+ IupSetAttribute(ih, "_IUPLUA_WIDGET_TABLE_REF", NULL);
+ }
+}
+
+char ** iuplua_checkstring_array(lua_State *L, int pos)
+{
+ int i,n;
+ char **v;
+ n = luaL_getn(L,pos);
+ v = (char **) malloc (n*sizeof(char *));
+ for(i=1; i<=n; i++)
+ {
+ lua_pushnumber(L,i);
+ lua_gettable(L,pos);
+ v[i-1] = (char*)lua_tostring(L, -1);
+ lua_pop(L,1);
+ }
+ return v;
+}
+
+int * iuplua_checkint_array(lua_State *L, int pos)
+{
+ int i,n;
+ int *v;
+ n = luaL_getn(L,pos);
+ v = (int *) malloc (n*sizeof(int));
+ for(i=1; i<=n; i++)
+ {
+ lua_pushnumber(L,i);
+ lua_gettable(L,pos);
+ v[i-1] = (int)lua_tonumber(L, -1);
+ lua_pop(L,1);
+ }
+ return v;
+}
+
+unsigned char* iuplua_checkuchar_array(lua_State *L, int pos, int count)
+{
+ int i,n;
+ unsigned char *v;
+ n = luaL_getn(L,pos);
+ if (n != count)
+ {
+ lua_pushstring(L, "invalid number of elements in array");
+ lua_error(L);
+ }
+ v = (unsigned char *) malloc (n*sizeof(unsigned char));
+ for(i=1; i<=n; i++)
+ {
+ lua_pushnumber(L,i);
+ lua_gettable(L,pos);
+ v[i-1] = (unsigned char)lua_tonumber(L, -1);
+ lua_pop(L,1);
+ }
+ return v;
+}
+
+Ihandle ** iuplua_checkihandle_array(lua_State *L, int pos)
+{
+ Ihandle **v;
+ int i, n = luaL_getn(L, pos);
+ v = (Ihandle **) malloc ((n+1)*sizeof(Ihandle *));
+ for (i=1; i<=n; i++)
+ {
+ lua_pushnumber(L,i);
+ lua_gettable(L,pos);
+ v[i-1] = iuplua_checkihandle(L, -1);
+ lua_pop(L,1);
+ }
+ v[i-1] = NULL;
+ return v;
+}
+
+ /*************************************/
+ /* used by callbacks */
+
+void iuplua_plugstate(lua_State *L, Ihandle *ih)
+{
+ IupSetAttribute(ih, "_IUPLUA_STATE_CONTEXT",(char *) L);
+}
+
+lua_State* iuplua_getstate(Ihandle *ih)
+{
+ return (lua_State *) IupGetAttribute(ih, "_IUPLUA_STATE_CONTEXT");
+}
+
+lua_State* iuplua_call_start(Ihandle *ih, const char* name)
+{
+ lua_State *L = iuplua_getstate(ih);
+
+ /* prepare to call iupCallMethod(name, handle, ...) */
+ lua_getglobal(L,"iup");
+ lua_pushstring(L,"iupCallMethod");
+ lua_gettable(L, -2);
+ lua_remove(L, -2);
+
+ lua_pushstring(L, name);
+ iuplua_pushihandle(L, ih);
+ return L;
+}
+
+int iuplua_call(lua_State* L, int nargs)
+{
+ int status = docall(L, nargs+2, 1);
+ report(L, status, 0);
+
+ if (status)
+ return IUP_DEFAULT;
+ else
+ {
+ int tmp = (int) lua_isnil(L, -1) ? IUP_DEFAULT : (int)lua_tonumber(L,-1);
+ lua_pop(L, 1);
+ return tmp;
+ }
+}
+
+char* iuplua_call_rs(lua_State *L, int nargs)
+{
+ int status = docall(L, nargs+2, 1);
+ report(L, status, 0);
+
+ if (status)
+ return NULL;
+ else
+ {
+ char* tmp = lua_isnil(L, -1) ? NULL: (char*)lua_tostring(L,-1);
+ lua_pop(L, 1);
+ return tmp;
+ }
+}
+
+int iuplua_call_raw(lua_State* L, int nargs, int nresults)
+{
+ int status = docall(L, nargs, nresults);
+ report(L, status, 0);
+ return status;
+}
+
+void iuplua_register_cb(lua_State *L, const char* name, lua_CFunction func, const char* type)
+{
+ lua_getglobal(L, "RegisterCallback");
+ lua_pushstring(L, name);
+ lua_pushcfunction(L, func);
+ lua_pushstring(L, type);
+ lua_call(L, 3, 0);
+}
+
+/* iupSetCallback(handle, name, func, value) */
+static int SetCallback(lua_State *L)
+{
+ Icallback func;
+
+ Ihandle* ih = iuplua_checkihandle(L, 1);
+ const char* name = luaL_checkstring(L, 2);
+
+ if (!lua_iscfunction(L, 3))
+ {
+ lua_pushstring(L, "invalid function when set callback");
+ lua_error(L);
+ }
+ func = (Icallback)lua_tocfunction(L, 3);
+
+ if (lua_isnil(L, 4)) /* value is only used here to remove the callback */
+ IupSetCallback(ih, name, (Icallback)NULL);
+ else
+ IupSetCallback(ih, name, func);
+
+ /* value, when not nil, is always the same name of a C callback in lowercase */
+
+ return 0;
+}
+
+ /*************************************/
+ /* metatable */
+
+/* iupNewClass(class_name)
+ Calls:
+ iupNewClass("iup handle")
+ iupNewClass("iup widget")
+*/
+static int NewClass(lua_State *L)
+{
+ lua_newtable(L); /* push t */
+ lua_pushstring(L, "class"); /* push "class" */
+ lua_pushvalue(L, 1); /* push again the class_name to the stack, because settable will remove it */
+ lua_settable(L, -3); /* t.class = class_name */
+ lua_settable(L, LUA_REGISTRYINDEX); /* registry[class_name] = t */
+ return 0;
+}
+
+/* iupSetClass(t, class_name)
+ Calls:
+ iupSetClass(handle, "iup handle") --Used only in RegisterHandle and WIDGET.constructor
+ iupSetClass(object, "iup widget") --Used whenever a new control class is created.
+*/
+static int SetClass(lua_State *L)
+{
+ lua_gettable(L, LUA_REGISTRYINDEX); /* t2 = registry[class_name] */
+ if (lua_isnil(L, -1))
+ {
+ lua_pushstring(L, "invalid class name");
+ lua_error(L);
+ }
+ lua_setmetatable(L, -2); /* metatable(t) = t2 */
+ return 0;
+}
+
+/* class_name = iupGetClass(t) */
+static int GetClass(lua_State *L)
+{
+ if (lua_istable(L, 1) || lua_isuserdata(L, 1))
+ {
+ lua_getmetatable(L, 1); /* t2 = metatable(t) */
+ if (lua_istable(L, -1))
+ {
+ lua_pushstring(L, "class");
+ lua_gettable(L, -2); /* class_name = t2.class */
+ return 1;
+ }
+ }
+ lua_pushnil(L);
+ return 1;
+}
+
+/* iupSetMethod(class_name, method, function)
+ For ex:
+ iupSetMethod("iup handle", "__index", ihandle_gettable)
+*/
+static int SetMethod(lua_State *L)
+{
+ lua_pushvalue(L, 1); /* push class_name */
+ lua_gettable(L, LUA_REGISTRYINDEX); /* t = registry[class_name] */
+ if (lua_isnil(L, -1))
+ {
+ lua_pushstring(L, "invalid class name");
+ lua_error(L);
+ }
+ lua_pushvalue(L, -3); /* push method */
+ lua_pushvalue(L, -3); /* push function */
+ lua_settable(L, -3); /* t.method = function */
+ return 0;
+}
+
+static int ihandle_tostring (lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L, 1);
+ if (!ih)
+ lua_pushstring (L, "(not an IUP handle)");
+ else
+ lua_pushfstring (L, "IUP(%s): %p", IupGetClassName(ih), ih);
+ return 1;
+}
+
+static int ihandle_compare(lua_State *L)
+{
+ Ihandle *a = iuplua_checkihandle(L, 1);
+ Ihandle *b = iuplua_checkihandle(L, 2);
+ if(a == b)
+ lua_pushboolean(L, 1);
+ else
+ lua_pushboolean(L, 0);
+ return 1;
+}
+
+ /*************************************/
+ /* table <-> ihandle */
+
+/* local object = iupGetWidget(handle) */
+static int GetWidget(lua_State *L)
+{
+ /* Pushes a table that is associanted with an ihandle */
+ /* Used by the "__index" metamethod of the "iup handle" */
+ Ihandle * ih = iuplua_checkihandle(L,1);
+ char* sref = IupGetAttribute(ih, "_IUPLUA_WIDGET_TABLE_REF");
+ if (!sref)
+ lua_pushnil(L);
+ else
+ lua_getref(L, atoi(sref));
+ return 1;
+}
+
+/* iupSetWidget(handle, object) */
+static int SetWidget(lua_State *L)
+{
+ /* Saves the object table reference as an attribute,
+ i.e. associates a table with the ihandle.
+ Used by the "iup widget" constructor and by RegisterHandle */
+ Ihandle * ih = iuplua_checkihandle(L,1);
+ char* sref = IupGetAttribute(ih, "_IUPLUA_WIDGET_TABLE_REF");
+ if (!sref)
+ {
+ int ref = lua_ref(L, 1);
+ IupSetfAttribute(ih, "_IUPLUA_WIDGET_TABLE_REF", "%d", ref); /* this must be a non-inheritable attribute */
+ }
+ return 0;
+}
+
+ /*************************************/
+ /* registration */
+
+void iuplua_changeEnv(lua_State *L)
+{
+ /* Replaces global environment */
+ lua_pushvalue(L, LUA_GLOBALSINDEX);
+ lua_getglobal(L, "iup");
+ lua_replace(L, LUA_GLOBALSINDEX);
+}
+
+void iuplua_returnEnv(lua_State *L)
+{
+ /* reestablishes global environment */
+ lua_replace(L, LUA_GLOBALSINDEX);
+}
+
+int iuplua_opencall_internal(lua_State * L)
+{
+ int ret = 0;
+ const char* s;
+ lua_getglobal(L, "iup");
+ lua_pushliteral(L,"_IUPOPEN_CALL");
+ lua_gettable(L, -2);
+ s = lua_tostring(L, -1);
+ if (s && strcmp(s, "INTERNAL")==0)
+ ret = 1;
+ lua_pop(L,2);
+ return ret;
+}
+
+void iuplua_register(lua_State *L, lua_CFunction func, const char* name)
+{
+ lua_pushcfunction(L, func);
+ lua_setglobal(L, name);
+}
+
+void iuplua_regstring(lua_State *L, const char* s, const char* name)
+{
+ lua_pushstring(L, s);
+ lua_setglobal(L, name);
+}
+
+/*****************************************************************************
+* Common Callbacks *
+****************************************************************************/
+
+static int help_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "help_cb");
+ return iuplua_call(L, 0);
+}
+
+static int getfocus_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "getfocus_cb");
+ return iuplua_call(L, 0);
+}
+
+static int k_any(Ihandle *self, int c)
+{
+ lua_State *L = iuplua_call_start(self, "k_any");
+ lua_pushnumber(L, c);
+ return iuplua_call(L, 1);
+}
+
+static int killfocus_cb(Ihandle *self)
+{
+ lua_State *L = iuplua_call_start(self, "killfocus_cb");
+ return iuplua_call(L, 0);
+}
+
+static int Idlecall(void)
+{
+ int ret = 0;
+ lua_State *L = (lua_State *) IupGetGlobal("_IUP_LUA_DEFAULT_STATE");
+ lua_getglobal(L, "_IUP_LUA_IDLE_FUNC_");
+ lua_call(L, 0, 1);
+ ret = (int) lua_tonumber(L, -1);
+ lua_pop(L, 1);
+ return ret;
+}
+
+static int SetIdle(lua_State *L)
+{
+ if lua_isnoneornil(L,1)
+ IupSetFunction("IDLE_ACTION", NULL);
+ else
+ {
+ luaL_checktype(L, 1, LUA_TFUNCTION);
+ lua_pushvalue(L,1);
+ lua_setglobal(L, "_IUP_LUA_IDLE_FUNC_");
+ IupSetFunction("IDLE_ACTION", (Icallback) Idlecall);
+ }
+ return 0;
+}
+
+/*****************************************************************************
+* Iuplua bind functions *
+****************************************************************************/
+
+
+static int GetFromC(lua_State *L)
+{
+ Ihandle *n;
+ const char *a;
+ if (!lua_istable(L, -1))
+ {
+ lua_pushstring(L, "IupGetFromC: wrong arguments to function");
+ lua_error(L);
+ return 0;
+ }
+ lua_pushnumber(L, 1);
+ lua_gettable(L, -2);
+ if (!lua_isstring(L, -1))
+ {
+ lua_pushstring(L, "IupGetFromC: wrong arguments to function");
+ lua_error(L);
+ return 0;
+ }
+ a = lua_tostring(L, -1);
+ n = IupGetHandle((char*)a);
+ if(n)
+ iuplua_pushihandle(L, n);
+ else
+ lua_pushnil(L);
+ return 1;
+}
+
+
+/*****************************************************************************
+ * iupkey *
+ ****************************************************************************/
+
+
+static void register_key(char *name, int code, void* user_data)
+{
+ lua_State *L = (lua_State*)user_data;
+ lua_pushnumber(L, code); lua_setglobal(L, name);
+}
+
+/* from iupkey.c */
+void iupKeyForEach(void (*func)(char *name, int code, void* user_data), void* user_data);
+
+int iupkey_open(lua_State *L)
+{
+ (void)L;
+ /* does nothing, kept for backward compatibility */
+ return 0;
+}
+
+
+/*****************************************************************************
+* iuplua_open *
+****************************************************************************/
+
+
+static int il_open(lua_State * L)
+{
+ int ret, argc = 0;
+ char **argv = NULL;
+
+ lua_getglobal(L, "arg");
+ if (lua_istable(L, -1))
+ {
+ int i;
+ argc = luaL_getn(L, -1);
+ argv = malloc(sizeof(char*)*argc);
+ for(i=1; i<=argc; i++)
+ {
+ lua_pushnumber(L,i);
+ lua_gettable(L,-2);
+ argv[i-1] = (char*)lua_tostring(L, -1);
+ lua_pop(L,1);
+ }
+ }
+ lua_pop(L, 1);
+
+ ret = IupOpen(&argc, &argv);
+ if (ret == IUP_ERROR)
+ {
+ if (argv) free(argv);
+ lua_pushstring(L, "IupOpen: could not initialize");
+ lua_error(L);
+ return 0;
+ }
+
+ if (argv) free(argv);
+ lua_pushinteger(L, ret);
+ return 1;
+}
+
+int iuplua_close(lua_State * L)
+{
+ if (iuplua_opencall_internal(L))
+ IupClose();
+ return 0; /* nothing in stack */
+}
+
+static void setinfo (lua_State *L)
+{
+ /* table "iup" is at the stack */
+
+ lua_pushliteral (L, "_COPYRIGHT");
+ lua_pushliteral (L, IUP_COPYRIGHT);
+ lua_settable (L, -3);
+
+ lua_pushliteral (L, "_DESCRIPTION");
+ lua_pushliteral (L, IUP_DESCRIPTION);
+ lua_settable (L, -3);
+
+ lua_pushliteral (L, "_NAME");
+ lua_pushliteral (L, IUP_NAME);
+ lua_settable (L, -3);
+
+ lua_pushliteral (L, "_VERSION");
+ lua_pushstring (L, IupVersion());
+ lua_settable (L, -3);
+
+ lua_pushliteral (L, "_VERSION_DATE");
+ lua_pushliteral (L, IUP_VERSION_DATE);
+ lua_settable (L, -3);
+
+ lua_pushliteral (L, "_VERSION_NUMBER");
+ lua_pushinteger (L, IupVersionNumber());
+ lua_settable (L, -3);
+}
+
+int iuplua_open(lua_State * L)
+{
+ int ret;
+
+ struct luaL_reg funcs[] = {
+ {"key_open", iupkey_open},
+ {"Open", il_open},
+ {"Close", iuplua_close},
+ {"SetIdle", SetIdle},
+ {"GetFromC", GetFromC},
+ {"iupGetWidget", GetWidget},
+ {"iupSetWidget", SetWidget},
+ {"iupNewClass", NewClass},
+ {"iupSetClass", SetClass},
+ {"iupGetClass", GetClass},
+ {"iupSetMethod", SetMethod},
+ {"iupSetCallback", SetCallback},
+ {"ihandle_compare", ihandle_compare},
+ {"ihandle_tostring", ihandle_tostring},
+ {NULL, NULL},
+ };
+
+ if (!il_open(L))
+ return 0;
+
+ ret = lua_tointeger(L, -1); /* retrieve IupOpen return value */
+ lua_pop(L, -1);
+
+ /* Creating global namespace iup */
+ lua_newtable(L);
+ lua_setglobal(L, "iup");
+
+ /* Registers functions in iup namespace */
+ luaL_openlib(L, "iup", funcs, 0);
+ iupluaapi_open(L);
+
+ /* set version info */
+ setinfo(L);
+
+ /* register if IupOpen was called here or from outside IupLua */
+ lua_pushliteral (L, "_IUPOPEN_CALL");
+ if (ret == IUP_OPENED) lua_pushliteral (L, "EXTERNAL");
+ else lua_pushliteral (L, "INTERNAL");
+ lua_settable (L, -3);
+
+ /* used by Idle */
+ IupSetGlobal("_IUP_LUA_DEFAULT_STATE", (char *) L);
+
+ /* Creating new environment with metamethod __index
+ * (so that normal Lua functions will be found while GLOBALSINDEX is the "iup" environment) */
+ iuplua_dostring(L, "iup._G = _G\
+ setmetatable(iup, {__index = iup._G})", "iuplua_setmetatable_global");
+
+ /* Changing environment to iup
+ * (all created variables and functions from now on will be put in "iup" environment) */
+ iuplua_changeEnv(L);
+
+#ifdef IUPLUA_USELOH
+#ifdef TEC_BIGENDIAN
+#ifdef TEC_64
+#include "loh/iuplua_be64.loh"
+#include "loh/constants_be64.loh"
+#else
+#include "loh/iuplua_be32.loh"
+#include "loh/constants_be32.loh"
+#endif
+#else
+#ifdef TEC_64
+#ifdef WIN64
+#include "loh/iuplua_le64w.loh"
+#include "loh/constants_le64w.loh"
+#else
+#include "loh/iuplua_le64.loh"
+#include "loh/constants_le64.loh"
+#endif
+#else
+#include "loh/iuplua.loh"
+#include "loh/constants.loh"
+#endif
+#endif
+#else
+ iuplua_dofile(L, "iuplua.lua");
+ iuplua_dofile(L, "constants.lua");
+#endif
+
+ /* Register the common callbacks */
+ iuplua_register_cb(L, "HELP_CB", (lua_CFunction)help_cb, NULL);
+ iuplua_register_cb(L, "GETFOCUS_CB", (lua_CFunction)getfocus_cb, NULL);
+ iuplua_register_cb(L, "K_ANY", (lua_CFunction)k_any, NULL);
+ iuplua_register_cb(L, "KILLFOCUS_CB", (lua_CFunction)killfocus_cb, NULL);
+
+ /* Register Keys */
+ iupKeyForEach(register_key, (void*)L);
+
+ /* Iup Modules initialization */
+ iupbuttonlua_open(L);
+ iupcanvaslua_open(L);
+ iupdialoglua_open(L);
+ iupfilllua_open(L);
+ iupframelua_open(L);
+ iupfiledlglua_open(L);
+ iuphboxlua_open(L);
+ iupitemlua_open(L);
+ iupimagelua_open(L);
+ iuplabellua_open(L);
+ iuplistlua_open(L);
+ iupmenulua_open(L);
+ iupmultilinelua_open(L);
+ iupradiolua_open(L);
+ iupseparatorlua_open(L);
+ iupsubmenulua_open(L);
+ iuptextlua_open(L);
+ iuptogglelua_open(L);
+ iupvboxlua_open(L);
+ iupzboxlua_open(L);
+ iuptimerlua_open(L);
+ iupsboxlua_open(L);
+ iupspinlua_open(L);
+ iupspinboxlua_open(L);
+ iupcboxlua_open(L);
+ iupgclua_open(L);
+ iupgetparamlua_open(L);
+ iupvallua_open(L);
+ iuptabslua_open(L);
+ iupfontdlglua_open(L);
+ iupmessagedlglua_open(L);
+ iupcolordlglua_open(L);
+ iupimagergbalua_open(L);
+ iupimagergblua_open(L);
+ iupprogressbarlua_open(L);
+ iupnormalizerlua_open(L);
+ iupuserlua_open(L);
+ iuptreelua_open(L);
+ iupclipboardlua_open(L);
+
+ iuplua_returnEnv(L);
+
+ return 0; /* nothing in stack */
+}
+
+/* obligatory to use require"iuplua" */
+int luaopen_iuplua(lua_State* L)
+{
+ return iuplua_open(L);
+}
+
+/* obligatory to use require"iuplua51" */
+int luaopen_iuplua51(lua_State* L)
+{
+ return iuplua_open(L);
+}
diff --git a/iup/srclua5/iuplua.lua b/iup/srclua5/iuplua.lua
new file mode 100755
index 0000000..b0f644a
--- /dev/null
+++ b/iup/srclua5/iuplua.lua
@@ -0,0 +1,285 @@
+-- This file is executed with the "iup" table already as the globalindex
+
+------------------------------------------------------------------------------
+-- Callback handler
+------------------------------------------------------------------------------
+
+callbacks = {}
+
+function iupCallMethod(name, ...)
+ local handle = arg[1] -- always the handle
+ local func = handle[name]
+ if (not func) then
+ return
+ end
+
+ if type(func) == "function" then
+ return func(unpack(arg))
+ elseif type(func) == "string" then
+ local temp = self
+ self = handle
+ local result = iup.dostring(func)
+ self = temp
+ return result
+ else
+ return iup.ERROR
+ end
+end
+
+function RegisterCallback(name, func, type)
+ if not callbacks[name] then callbacks[name] = {} end
+ local cb = callbacks[name]
+ if type then
+ cb[type] = func
+ else
+ cb[1] = func
+ end
+end
+
+------------------------------------------------------------------------------
+-- Meta Methods
+------------------------------------------------------------------------------
+
+
+local widget_gettable = function(object, index)
+ local p = object
+ local v
+ while 1 do
+ v = rawget(p, index)
+ if v then return v end
+ p = rawget(p, "parent")
+ if not p then return nil end
+ end
+end
+
+iupNewClass("iup widget")
+iupSetMethod("iup widget", "__index", widget_gettable)
+
+
+local ihandle_gettable = function(handle, index)
+ local INDEX = string.upper(index)
+ if (callbacks[INDEX]) then
+ local object = iupGetWidget(handle)
+ if (not object or type(object)~="table") then error("invalid iup handle") end
+ return object[index]
+ else
+ local value = GetAttribute(handle, INDEX)
+ if (not value) then
+ local object = iupGetWidget(handle)
+ if (not object or type(object)~="table") then error("invalid iup handle") end
+ return object[index]
+ elseif type(value)== "number" or type(value) == "string" then
+ local ih = GetHandle(value)
+ if ih then return ih
+ else return value end
+ else
+ return value
+ end
+ end
+end
+
+local ihandle_settable = function(handle, index, value)
+ local ti = type(index)
+ local tv = type(value)
+ local object = iupGetWidget(handle)
+ if (not object or type(object)~="table") then error("invalid iup handle") end
+ if ti == "number" or ti == "string" then -- check if a valid C name
+ local INDEX = string.upper(index)
+ local cb = callbacks[INDEX]
+ if (cb) then -- if a callback name
+ local func = cb[1]
+ if (not func) then
+ func = cb[GetClassName(handle)]
+ end
+ iupSetCallback(handle, INDEX, func, value) -- register the pre-defined C callback
+ object[index] = value -- store also in Lua
+ elseif iupGetClass(value) == "iup handle" then -- if a iup handle
+ local name = ihandle_setname(value)
+ SetAttribute(handle, INDEX, name)
+ object[index] = nil -- if there was something in Lua remove it
+ elseif tv == "string" or tv == "number" or tv == "nil" then -- if a common value
+ SetAttribute(handle, INDEX, value)
+ object[index] = nil -- if there was something in Lua remove it
+ else
+ object[index] = value -- store also in Lua
+ end
+ else
+ object[index] = value -- store also in Lua
+ end
+end
+
+iupNewClass("iup handle")
+iupSetMethod("iup handle", "__index", ihandle_gettable)
+iupSetMethod("iup handle", "__newindex", ihandle_settable)
+iupSetMethod("iup handle", "__tostring", ihandle_tostring)
+iupSetMethod("iup handle", "__eq", ihandle_compare) -- implemented in C
+
+
+------------------------------------------------------------------------------
+-- Utilities
+------------------------------------------------------------------------------
+
+function ihandle_setname(v) -- used also by radio and zbox
+ local name = GetName(v)
+ if not name then
+ local autoname = string.format("_IUPLUA_NAME(%s)", tostring(v))
+ SetHandle(autoname, v)
+ return autoname
+ end
+ return name
+end
+
+function iupRegisterWidget(ctrl) -- called by all the controls initialization functions
+ iup[ctrl.nick] = function(arg)
+ return ctrl:constructor(arg)
+ end
+end
+
+function RegisterHandle(handle, typename)
+
+ iupSetClass(handle, "iup handle")
+
+ local object = iupGetWidget(handle)
+ if not object then
+
+ local class = iup[string.upper(typename)]
+ if not class then
+ class = WIDGET
+ end
+
+ local object = { parent=class, handle=handle }
+ iupSetClass(object, "iup widget")
+ iupSetWidget(handle, object)
+ end
+
+ return handle
+end
+
+------------------------------------------------------------------------------
+-- Widget class (top class)
+------------------------------------------------------------------------------
+
+WIDGET = {
+ callback = {}
+}
+
+function WIDGET.show(object)
+ Show(object.handle)
+end
+
+function WIDGET.hide(object)
+ Hide(object.handle)
+end
+
+function WIDGET.map(object)
+ Map(object.handle)
+end
+
+function WIDGET.constructor(class, arg)
+ local handle = class:createElement(arg)
+ local object = {
+ parent = class,
+ handle = handle
+ }
+ iupSetClass(handle, "iup handle")
+ iupSetClass(object, "iup widget")
+ iupSetWidget(handle, object)
+ object:setAttributes(arg)
+ return handle
+end
+
+function WIDGET.setAttributes(object, arg)
+ local handle = object.handle
+ for i,v in pairs(arg) do
+ if type(i) == "number" and iupGetClass(v) == "iup handle" then
+ -- We should not set this or other elements (such as iuptext)
+ -- will erroneosly inherit it
+ rawset(object, i, v)
+ else
+ -- this will call settable metamethod
+ handle[i] = v
+ end
+ end
+end
+
+-- all the objects in the hierarchy must be "iup widget"
+-- Must repeat this call for every new widget
+iupSetClass(WIDGET, "iup widget")
+
+
+------------------------------------------------------------------------------
+-- Box class (inherits from WIDGET)
+------------------------------------------------------------------------------
+
+BOX = {
+ parent = WIDGET
+}
+
+function BOX.setAttributes(object, arg)
+ local handle = rawget(object, "handle")
+ local n = #arg
+ for i = 1, n do
+ if iupGetClass(arg[i]) == "iup handle" then
+ Append(handle, arg[i])
+ end
+ end
+ WIDGET.setAttributes(object, arg)
+end
+
+iupSetClass(BOX, "iup widget")
+
+
+------------------------------------------------------------------------------
+-- Compatibility functions.
+------------------------------------------------------------------------------
+
+error_message_popup = nil
+
+function _ERRORMESSAGE(err,traceback)
+ err = err..(traceback or "")
+ if (error_message_popup) then
+ error_message_popup.value = err
+ else
+ local bt = button{title="Ok", size="60", action="error_message_popup = nil; return iup.CLOSE"}
+ local ml = multiline{expand="YES", readonly="YES", value=err, size="300x150"}
+ local vb = vbox{ml, bt; alignment="ACENTER", margin="10x10", gap="10"}
+ local dg = dialog{vb; title="Error Message",defaultesc=bt,defaultenter=bt,startfocus=bt}
+ error_message_popup = ml
+ dg:popup(CENTER, CENTER)
+ dg:destroy()
+ error_message_popup = nil
+ end
+end
+
+pack = function (...) return arg end
+
+function protectedcall_(f, err)
+ if not f then
+ _ERRORMESSAGE(err)
+ return
+ end
+ local ret = pack(pcall(f))
+ if not ret[1] then
+ _ERRORMESSAGE(ret[2])
+ return
+ else
+ table.remove(ret, 1)
+ return unpack(ret)
+ end
+end
+
+function dostring(s) return protectedcall_(loadstring(s)) end
+function dofile(f) return protectedcall_(loadfile(f)) end
+
+function RGB(r, g, b)
+ return string.format("%d %d %d", 255*r, 255*g, 255*b)
+end
+
+-- This will allow both names to be used in the same application
+-- also will allow static linking to work with require
+if _G.package then
+ _G.package.loaded["iuplua"] = iup
+ _G.package.loaded["iuplua51"] = iup
+ iup._M = iup
+ iup._PACKAGE = "iuplua"
+end
diff --git a/iup/srclua5/iuplua5.def b/iup/srclua5/iuplua5.def
new file mode 100755
index 0000000..78b2a6f
--- /dev/null
+++ b/iup/srclua5/iuplua5.def
@@ -0,0 +1,27 @@
+EXPORTS
+ iuplua_open
+ iuplua_close
+ iuplua_plugstate
+ iuplua_getstate
+ iuplua_checkihandle
+ iuplua_checkihandle_array
+ iuplua_call
+ iuplua_call_rs
+ iuplua_call_raw
+ iuplua_pushihandle
+ iuplua_pushihandle_raw
+ iuplua_dofile
+ iuplua_dostring
+ iupkey_open
+ iuplua_returnEnv
+ iuplua_changeEnv
+ iuplua_opencall_internal
+ luaopen_iuplua
+ luaopen_iuplua51
+ iuplua_register
+ iuplua_regstring
+ iuplua_checkstring_array
+ iuplua_checkint_array
+ iuplua_call_start
+ iuplua_register_cb
+ \ No newline at end of file
diff --git a/iup/srclua5/iuplua51.dep b/iup/srclua5/iuplua51.dep
new file mode 100644
index 0000000..ed11fe6
--- /dev/null
+++ b/iup/srclua5/iuplua51.dep
@@ -0,0 +1,177 @@
+$(OBJDIR)/iuplua.o: iuplua.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../src/iup_str.h ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iuplua.h il.h loh/iuplua_le64.loh \
+ loh/constants_le64.loh
+$(OBJDIR)/iuplua_api.o: iuplua_api.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iuplua.h il.h ../src/iup_attrib.h \
+ ../src/iup_globalattrib.h ../src/iup_object.h ../src/iup_class.h \
+ ../src/iup_table.h ../src/iup_classbase.h ../src/iup_str.h
+$(OBJDIR)/il_tree_aux.o: il_tree_aux.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcontrols.h ../include/iuplua.h il.h \
+ il_controls.h
+$(OBJDIR)/il_scanf.o: il_scanf.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h ../src/iup_str.h \
+ ../src/iup_predial.h
+$(OBJDIR)/il_getparam.o: il_getparam.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h il_controls.h
+$(OBJDIR)/il_getcolor.o: il_getcolor.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h il_controls.h
+$(OBJDIR)/il_button.o: il_button.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/button_le64.loh
+$(OBJDIR)/il_canvas.o: il_canvas.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/canvas_le64.loh
+$(OBJDIR)/il_dialog.o: il_dialog.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/dialog_le64.loh
+$(OBJDIR)/il_colordlg.o: il_colordlg.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/colordlg_le64.loh
+$(OBJDIR)/il_clipboard.o: il_clipboard.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/clipboard_le64.loh
+$(OBJDIR)/il_filedlg.o: il_filedlg.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/filedlg_le64.loh
+$(OBJDIR)/il_fill.o: il_fill.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/fill_le64.loh
+$(OBJDIR)/il_frame.o: il_frame.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/frame_le64.loh
+$(OBJDIR)/il_hbox.o: il_hbox.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/hbox_le64.loh
+$(OBJDIR)/il_normalizer.o: il_normalizer.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/normalizer_le64.loh
+$(OBJDIR)/il_item.o: il_item.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/item_le64.loh
+$(OBJDIR)/il_image.o: il_image.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/image_le64.loh
+$(OBJDIR)/il_imagergb.o: il_imagergb.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/imagergb_le64.loh
+$(OBJDIR)/il_imagergba.o: il_imagergba.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/imagergba_le64.loh
+$(OBJDIR)/il_label.o: il_label.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/label_le64.loh
+$(OBJDIR)/il_menu.o: il_menu.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/menu_le64.loh
+$(OBJDIR)/il_multiline.o: il_multiline.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/multiline_le64.loh
+$(OBJDIR)/il_list.o: il_list.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/list_le64.loh
+$(OBJDIR)/il_separator.o: il_separator.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/separator_le64.loh
+$(OBJDIR)/il_user.o: il_user.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/user_le64.loh
+$(OBJDIR)/il_submenu.o: il_submenu.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/submenu_le64.loh
+$(OBJDIR)/il_text.o: il_text.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/text_le64.loh
+$(OBJDIR)/il_toggle.o: il_toggle.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/toggle_le64.loh
+$(OBJDIR)/il_vbox.o: il_vbox.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/vbox_le64.loh
+$(OBJDIR)/il_zbox.o: il_zbox.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/zbox_le64.loh
+$(OBJDIR)/il_timer.o: il_timer.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/timer_le64.loh
+$(OBJDIR)/il_sbox.o: il_sbox.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/sbox_le64.loh
+$(OBJDIR)/il_spin.o: il_spin.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/spin_le64.loh
+$(OBJDIR)/il_spinbox.o: il_spinbox.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/spinbox_le64.loh
+$(OBJDIR)/il_cbox.o: il_cbox.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/cbox_le64.loh
+$(OBJDIR)/il_messagedlg.o: il_messagedlg.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/messagedlg_le64.loh
+$(OBJDIR)/il_radio.o: il_radio.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/radio_le64.loh
+$(OBJDIR)/il_val.o: il_val.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/val_le64.loh
+$(OBJDIR)/il_tabs.o: il_tabs.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/tabs_le64.loh
+$(OBJDIR)/il_fontdlg.o: il_fontdlg.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/fontdlg_le64.loh
+$(OBJDIR)/il_tree.o: il_tree.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/tree_le64.loh
+$(OBJDIR)/il_progressbar.o: il_progressbar.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h il.h loh/progressbar_le64.loh
diff --git a/iup/srclua5/iuplua_api.c b/iup/srclua5/iuplua_api.c
new file mode 100755
index 0000000..8673442
--- /dev/null
+++ b/iup/srclua5/iuplua_api.c
@@ -0,0 +1,874 @@
+/** \file
+* \brief IUP binding for Lua 5.
+*
+* See Copyright Notice in "iup.h"
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupkey.h"
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iuplua.h"
+#include "il.h"
+
+#include "iup_attrib.h"
+#include "iup_globalattrib.h"
+#include "iup_object.h"
+#include "iup_str.h"
+
+
+static int SaveImageAsText(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L, 1);
+ const char *file_name = luaL_checkstring(L, 2);
+ const char *format = luaL_checkstring(L, 3);
+ const char *name = luaL_optstring(L, 4, NULL);
+ lua_pushboolean(L, IupSaveImageAsText(ih, file_name, format, name));
+ return 1;
+}
+
+static int Reparent(lua_State *L)
+{
+ lua_pushnumber(L, IupReparent(iuplua_checkihandle(L,1),
+ iuplua_checkihandle(L,2)));
+ return 1;
+}
+
+static int Insert(lua_State *L)
+{
+ iuplua_pushihandle(L, IupInsert(iuplua_checkihandle(L,1),
+ iuplua_checkihandleornil(L,2),
+ iuplua_checkihandle(L,3)));
+ return 1;
+}
+
+static int Append(lua_State *L)
+{
+ iuplua_pushihandle(L, IupAppend(iuplua_checkihandle(L,1),
+ iuplua_checkihandle(L,2)));
+ return 1;
+}
+
+static int Destroy(lua_State *L)
+{
+ Ihandle* ih = iuplua_checkihandle(L,1);
+ iuplua_removeihandle(L, ih);
+ IupDestroy(ih);
+ return 0;
+}
+
+static int Detach(lua_State *L)
+{
+ IupDetach(iuplua_checkihandle(L,1));
+ return 0;
+}
+
+static int Flush(lua_State *L)
+{
+ (void)L; /* not used */
+ IupFlush();
+ return 0;
+}
+
+static int Version(lua_State *L)
+{
+ lua_pushstring(L, IupVersion());
+ return 1;
+}
+
+static int GetAttributeData (lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ const char *name = luaL_checkstring(L,2);
+ const char *value = IupGetAttribute(ih, name);
+ if (!value)
+ lua_pushnil(L);
+ else
+ lua_pushlightuserdata(L, (void*)value);
+ return 1;
+}
+
+static int GetAttribute (lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ const char *name = luaL_checkstring(L,2);
+ const char *value = IupGetAttribute(ih, name);
+ if (!value || iupAttribIsInternal(name))
+ lua_pushnil(L);
+ else
+ {
+ if (iupAttribIsPointer(ih, name))
+ {
+ if (iupObjectCheck((Ihandle*)value))
+ iuplua_pushihandle(L, (Ihandle*)value);
+ else
+ lua_pushlightuserdata(L, (void*)value);
+ }
+ else
+ lua_pushstring(L,value);
+ }
+ return 1;
+}
+
+static int GetAttributes(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ const char *value = IupGetAttributes(ih);
+ lua_pushstring(L,value);
+ return 1;
+}
+
+static int GetAllDialogs(lua_State *L)
+{
+ int i, max_n = luaL_checkint(L,1);
+ char **names = (char **) malloc (max_n * sizeof(char *));
+ int n = IupGetAllDialogs(names, max_n);
+ lua_newtable(L);
+ for (i=0; i<n; i++)
+ {
+ lua_pushnumber(L,i+1);
+ lua_pushstring(L,names[i]);
+ lua_settable(L,-3);
+ }
+ lua_pushnumber(L,n);
+ free(names);
+ return 2;
+}
+
+static int GetAllNames(lua_State *L)
+{
+ int i, max_n = luaL_checkint(L,1);
+ char **names = (char **) malloc (max_n * sizeof(char *));
+ int n = IupGetAllNames(names,max_n);
+ lua_newtable(L);
+ for (i=0; i<n; i++)
+ {
+ lua_pushnumber(L,i+1);
+ lua_pushstring(L,names[i]);
+ lua_settable(L,-3);
+ }
+ lua_pushnumber(L,n);
+ free(names);
+ return 2;
+}
+
+static int GetAllAttributes(lua_State *L)
+{
+ int i, max_n = luaL_checkint(L,2);
+ char **names = (char **) malloc (max_n * sizeof(char *));
+ int n = IupGetAllAttributes(iuplua_checkihandle(L,1),names,max_n);
+ lua_newtable(L);
+ for (i=0; i<n; i++)
+ {
+ lua_pushnumber(L,i+1);
+ lua_pushstring(L,names[i]);
+ lua_settable(L,-3);
+ }
+ lua_pushnumber(L,n);
+ free(names);
+ return 2;
+}
+
+static int GetClassAttributes(lua_State *L)
+{
+ int i, max_n = luaL_checkint(L,2);
+ char **names = (char **) malloc (max_n * sizeof(char *));
+ int n = IupGetClassAttributes(luaL_checkstring(L,1),names,max_n);
+
+ if (n == -1)
+ {
+ lua_pushnil(L);
+ return 1;
+ }
+
+ lua_newtable(L);
+ for (i=0; i<n; i++)
+ {
+ lua_pushnumber(L,i+1);
+ lua_pushstring(L,names[i]);
+ lua_settable(L,-3);
+ }
+ lua_pushnumber(L,n);
+ free(names);
+ return 2;
+}
+
+static int SetClassDefaultAttribute(lua_State *L)
+{
+ IupSetClassDefaultAttribute(luaL_checkstring(L,1), luaL_checkstring(L,2), luaL_optstring(L,3,NULL));
+ return 0;
+}
+
+static int GetDialog(lua_State *L)
+{
+ iuplua_pushihandle(L, IupGetDialog(iuplua_checkihandle(L,1)));
+ return 1;
+}
+
+static int GetFile (lua_State *L)
+{
+ const char *fname = luaL_checkstring(L,1);
+ char returned_fname[10240];
+ int ret;
+ iupStrCopyN(returned_fname, 10240, fname);
+ ret = IupGetFile(returned_fname);
+ lua_pushstring(L, returned_fname);
+ lua_pushnumber(L, ret);
+ return 2;
+}
+
+static int GetFocus(lua_State *L)
+{
+ iuplua_pushihandle(L, IupGetFocus());
+ return 1;
+}
+
+static int GetClassName(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L, 1);
+ lua_pushstring(L, IupGetClassName(ih));
+ return 1;
+}
+
+static int GetClassType(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L, 1);
+ lua_pushstring(L, IupGetClassType(ih));
+ return 1;
+}
+
+static int GetGlobal(lua_State *L)
+{
+ const char *a = luaL_checkstring(L,1);
+ const char *v = IupGetGlobal(a);
+ if (iupGlobalIsPointer(a))
+ lua_pushlightuserdata(L, (void*)v);
+ else
+ lua_pushstring(L,v);
+ return 1;
+}
+
+static int GetHandle(lua_State *L)
+{
+ const char *name = luaL_checkstring(L,1);
+ Ihandle *ih = IupGetHandle(name);
+ iuplua_pushihandle(L,ih);
+ return 1;
+}
+
+static int GetLanguage (lua_State *L)
+{
+ char * value = IupGetLanguage();
+ lua_pushstring(L,value);
+ return 1;
+}
+
+static int GetName(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ char * name = IupGetName(ih);
+ lua_pushstring(L,name);
+ return 1;
+}
+
+static int Help(lua_State *L)
+{
+ const char *url = luaL_checkstring(L,1);
+ IupHelp(url);
+ return 0;
+}
+
+static int Hide(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ lua_pushnumber(L, IupHide(ih));
+ return 1;
+}
+
+static int Load(lua_State *L)
+{
+ const char *s = luaL_checkstring(L,1);
+ const char *r = IupLoad(s);
+ lua_pushstring(L,r);
+ return 1;
+}
+
+static int LoadBuffer(lua_State *L)
+{
+ const char *s = luaL_checkstring(L,1);
+ const char *r = IupLoadBuffer(s);
+ lua_pushstring(L,r);
+ return 1;
+}
+
+static int LoopStep(lua_State *L)
+{
+ lua_pushnumber(L,IupLoopStep());
+ return 1;
+}
+
+static int ExitLoop(lua_State *L)
+{
+ (void)L;
+ IupExitLoop();
+ return 0;
+}
+
+static int MainLoop(lua_State *L)
+{
+ lua_pushnumber(L,IupMainLoop());
+ return 1;
+}
+
+static int MainLoopLevel(lua_State *L)
+{
+ lua_pushnumber(L,IupMainLoopLevel());
+ return 1;
+}
+
+static int Map(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ lua_pushnumber(L, IupMap(ih));
+ return 1;
+}
+
+static int Unmap(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ IupUnmap(ih);
+ return 0;
+}
+
+static int MapFont(lua_State *L)
+{
+ const char *font = luaL_checkstring(L,1);
+ const char *nfont = IupMapFont(font);
+ lua_pushstring(L, nfont);
+ return 1;
+}
+
+static int Message(lua_State *L)
+{
+ const char *title = luaL_checkstring(L,1);
+ const char *message = luaL_checkstring(L,2);
+ IupMessage(title, message);
+ return 0;
+}
+
+static int Alarm(lua_State *L)
+{
+ int n = IupAlarm(luaL_checkstring(L, 1),
+ luaL_checkstring(L, 2),
+ luaL_checkstring(L, 3),
+ luaL_optstring(L, 4, NULL),
+ luaL_optstring(L, 5, NULL));
+ lua_pushnumber(L, n);
+ return 1;
+}
+
+static int ListDialog(lua_State *L)
+{
+ int type = luaL_checkint(L,1);
+ int size = luaL_checkint(L,3);
+ char** list = iuplua_checkstring_array(L, 4);
+ int* marks = lua_isnoneornil(L, 8)? NULL: iuplua_checkint_array(L,8);
+ int i, ret;
+
+ if (size != luaL_getn(L, 4))
+ luaL_error(L, "invalid number of elements in the list.");
+ if (!marks && type==2)
+ luaL_error(L, "invalid marks, must not be nil.");
+ if (marks && type==2 && size != luaL_getn(L, 8))
+ luaL_error(L, "invalid number of elements in the marks.");
+
+ ret = IupListDialog(type, luaL_checkstring(L, 2),
+ size,
+ list,
+ luaL_checkint(L, 5),
+ luaL_checkint(L, 6),
+ luaL_checkint(L, 7),
+ marks);
+
+ if (marks && type==2 && ret!=-1)
+ {
+ for (i=0; i<size; i++)
+ {
+ lua_pushnumber(L, i+1);
+ lua_pushnumber(L, marks[i]);
+ lua_settable(L, 8);
+ }
+ }
+
+ lua_pushnumber(L, ret);
+
+ if (marks) free(marks);
+ free(list);
+
+ return 1;
+}
+
+static int GetText(lua_State *L)
+{
+ char buffer[10240];
+ const char *title = luaL_checkstring(L,1);
+ const char *text = luaL_checkstring(L,2);
+ iupStrCopyN(buffer, 10240, text);
+ if (IupGetText(title, buffer))
+ {
+ lua_pushstring(L, buffer);
+ return 1;
+ }
+ return 0;
+}
+
+static int NextField(lua_State *L)
+{
+ Ihandle *h1 = iuplua_checkihandle(L,1);
+ Ihandle *h2 = IupNextField(h1);
+ iuplua_pushihandle(L,h2);
+ return 1;
+}
+
+static int PreviousField(lua_State *L)
+{
+ Ihandle *h1 = iuplua_checkihandle(L,1);
+ Ihandle *h2 = IupNextField(h1);
+ iuplua_pushihandle(L,h2);
+ return 1;
+}
+
+static int Popup(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ int x = luaL_optint(L,2, IUP_CURRENT);
+ int y = luaL_optint(L,3, IUP_CURRENT);
+ lua_pushnumber(L,IupPopup(ih,x,y));
+ return 1;
+}
+
+static int cf_isprint(lua_State *L)
+{
+ int value = luaL_checkint(L, 1);
+ lua_pushnumber(L, iup_isprint(value));
+ return 1;
+}
+
+static int cf_xCODE(lua_State *L)
+{
+ int value = luaL_checkint(L, 1);
+ lua_pushnumber(L, IUPxCODE(value));
+ return 1;
+}
+
+static int cf_isxkey(lua_State *L)
+{
+ int value = luaL_checkint(L, 1);
+ lua_pushboolean(L, iup_isXkey(value));
+ return 1;
+}
+
+static int cf_isShiftXkey(lua_State *L)
+{
+ int value = luaL_checkint(L, 1);
+ lua_pushboolean(L, iup_isShiftXkey(value));
+ return 1;
+}
+
+static int cf_isCtrlXkey(lua_State *L)
+{
+ int value = luaL_checkint(L, 1);
+ lua_pushboolean(L, iup_isCtrlXkey(value));
+ return 1;
+}
+
+static int cf_isAltXkey(lua_State *L)
+{
+ int value = luaL_checkint(L, 1);
+ lua_pushboolean(L, iup_isAltXkey(value));
+ return 1;
+}
+
+static int cf_isSysXkey(lua_State *L)
+{
+ int value = luaL_checkint(L, 1);
+ lua_pushboolean(L, iup_isSysXkey(value));
+ return 1;
+}
+
+static int cf_isbutton1(lua_State *L)
+{
+ const char *value = luaL_checkstring(L, 1);
+ lua_pushboolean(L, iup_isbutton1(value));
+ return 1;
+}
+
+static int cf_isbutton2(lua_State *L)
+{
+ const char *value = luaL_checkstring(L, 1);
+ lua_pushboolean(L, iup_isbutton2(value));
+ return 1;
+}
+
+static int cf_isbutton3(lua_State *L)
+{
+ const char *value = luaL_checkstring(L, 1);
+ lua_pushboolean(L, iup_isbutton3(value));
+ return 1;
+}
+
+static int cf_isshift(lua_State *L)
+{
+ const char *value = luaL_checkstring(L, 1);
+ lua_pushboolean(L, iup_isshift(value));
+ return 1;
+}
+
+static int cf_iscontrol(lua_State *L)
+{
+ const char *value = luaL_checkstring(L, 1);
+ lua_pushboolean(L, iup_iscontrol(value));
+ return 1;
+}
+
+static int cf_isdouble(lua_State *L)
+{
+ const char *value = luaL_checkstring(L, 1);
+ lua_pushboolean(L, iup_isdouble(value));
+ return 1;
+}
+
+static int cf_isalt(lua_State *L)
+{
+ const char *value = luaL_checkstring(L, 1);
+ lua_pushboolean(L, iup_isalt(value));
+ return 1;
+}
+
+static int cf_issys(lua_State *L)
+{
+ const char *value = luaL_checkstring(L, 1);
+ lua_pushboolean(L, iup_issys(value));
+ return 1;
+}
+
+static int cf_isbutton4(lua_State *L)
+{
+ const char *value = luaL_checkstring(L, 1);
+ lua_pushboolean(L, iup_isbutton4(value));
+ return 1;
+}
+
+static int cf_isbutton5(lua_State *L)
+{
+ const char *value = luaL_checkstring(L, 1);
+ lua_pushboolean(L, iup_isbutton5(value));
+ return 1;
+}
+
+static int GetParent(lua_State *L)
+{
+ Ihandle * ih = iuplua_checkihandle(L,1);
+ Ihandle * parent = IupGetParent(ih);
+ iuplua_pushihandle(L, parent);
+ return 1;
+}
+
+static int VersionNumber(lua_State *L)
+{
+ lua_pushnumber(L, IupVersionNumber());
+ return 1;
+}
+
+static int GetNextChild(lua_State *L)
+{
+ Ihandle* parent = iuplua_checkihandle(L,1);
+ Ihandle* next = iuplua_checkihandleornil(L,2);
+ Ihandle* nextchild = IupGetNextChild(parent, next);
+ iuplua_pushihandle(L, nextchild);
+ return 1;
+}
+
+static int GetChildPos(lua_State *L)
+{
+ Ihandle* ih = iuplua_checkihandle(L,1);
+ Ihandle* child = iuplua_checkihandle(L,2);
+ lua_pushnumber(L, IupGetChildPos(ih, child));
+ return 1;
+}
+
+static int GetBrother(lua_State *L)
+{
+ Ihandle * ih = iuplua_checkihandle(L,1);
+ Ihandle * brother = IupGetBrother(ih);
+ iuplua_pushihandle(L, brother);
+ return 1;
+}
+
+static int GetDialogChild(lua_State *L)
+{
+ Ihandle * ih = iuplua_checkihandle(L,1);
+ const char* name = luaL_checkstring(L,2);
+ Ihandle * child = IupGetDialogChild(ih, name);
+ iuplua_pushihandle(L, child);
+ return 1;
+}
+
+static int ConvertXYToPos(lua_State *L)
+{
+ lua_pushinteger(L, IupConvertXYToPos(iuplua_checkihandle(L,1), luaL_checkinteger(L, 2), luaL_checkinteger(L, 3)));
+ return 1;
+}
+
+static int TextConvertLinColToPos(lua_State *L)
+{
+ int pos;
+ IupTextConvertLinColToPos(iuplua_checkihandle(L,1), luaL_checkinteger(L, 2), luaL_checkinteger(L, 3), &pos);
+ lua_pushinteger(L, pos);
+ return 1;
+}
+
+static int TextConvertPosToLinCol(lua_State *L)
+{
+ int lin, col;
+ IupTextConvertPosToLinCol(iuplua_checkihandle(L,1), luaL_checkinteger(L, 2), &lin, &col);
+ lua_pushinteger(L, lin);
+ lua_pushinteger(L, col);
+ return 2;
+}
+
+static int SetAttributes(lua_State *L)
+{
+ Ihandle * ih = iuplua_checkihandle(L,1);
+ const char *attributes = luaL_checkstring(L,2);
+ IupSetAttributes(ih, attributes);
+ iuplua_pushihandle(L,ih);
+ return 1;
+}
+
+static int SetFocus(lua_State *L)
+{
+ Ihandle *h1 = iuplua_checkihandle(L,1);
+ Ihandle *h2 = IupSetFocus(h1);
+ iuplua_pushihandle(L,h2);
+ return 1;
+}
+
+static int SetGlobal(lua_State *L)
+{
+ const char *a = luaL_checkstring(L,1);
+ const char *v = luaL_checkstring(L,2);
+ IupSetGlobal(a,v);
+ return 0;
+}
+
+static int SetHandle(lua_State *L)
+{
+ const char *name = luaL_checkstring(L,1);
+ Ihandle *ih = iuplua_checkihandle(L,2);
+ Ihandle *last = IupSetHandle(name, ih);
+ iuplua_pushihandle(L, last);
+ return 1;
+}
+
+static int SetLanguage(lua_State *L)
+{
+ IupSetLanguage(luaL_checkstring(L,1));
+ return 0;
+}
+
+static int GetChildCount (lua_State *L)
+{
+ lua_pushnumber(L, IupGetChildCount(iuplua_checkihandle(L,1)));
+ return 1;
+}
+
+static int Show (lua_State *L)
+{
+ lua_pushnumber(L, IupShow(iuplua_checkihandle(L,1)));
+ return 1;
+}
+
+static int Refresh (lua_State *L)
+{
+ IupRefresh(iuplua_checkihandle(L,1));
+ return 0;
+}
+
+static int Update (lua_State *L)
+{
+ IupUpdate(iuplua_checkihandle(L,1));
+ return 0;
+}
+
+static int UpdateChildren (lua_State *L)
+{
+ IupUpdateChildren(iuplua_checkihandle(L,1));
+ return 0;
+}
+
+static int Redraw(lua_State *L)
+{
+ IupRedraw(iuplua_checkihandle(L,1), luaL_checkinteger(L, 2));
+ return 0;
+}
+
+static int ShowXY(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ int x = luaL_optint(L,2, IUP_CURRENT);
+ int y = luaL_optint(L,3, IUP_CURRENT);
+ lua_pushnumber(L,IupShowXY(ih,x,y));
+ return 1;
+}
+
+static int StoreAttribute(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ const char *a = luaL_checkstring(L,2);
+
+ if (lua_isnil(L,3))
+ IupSetAttribute(ih,a,NULL);
+ else
+ {
+ const char *v;
+ if(lua_isuserdata(L,3))
+ {
+ v = lua_touserdata(L,3);
+ IupSetAttribute(ih,a,v);
+ }
+ else
+ {
+ v = luaL_checkstring(L,3);
+ IupStoreAttribute(ih,a,v);
+ }
+ }
+ return 0;
+}
+
+static int StoreGlobal(lua_State *L)
+{
+ const char *a = luaL_checkstring(L,1);
+ const char *v = luaL_checkstring(L,2);
+ IupStoreGlobal(a,v);
+ return 0;
+}
+
+static int UnMapFont (lua_State *L)
+{
+ const char *s = luaL_checkstring(L,1);
+ const char *n = IupUnMapFont(s);
+ lua_pushstring(L,n);
+ return 1;
+}
+
+
+/*****************************************************************************
+* iupluaapi_open *
+****************************************************************************/
+
+
+int iupluaapi_open(lua_State * L)
+{
+ struct luaL_reg funcs[] = {
+ {"Append", Append},
+ {"Insert", Insert},
+ {"Reparent", Reparent},
+ {"Destroy", Destroy},
+ {"Detach", Detach},
+ {"Flush", Flush},
+ {"Version", Version},
+ {"GetAttribute", GetAttribute},
+ {"GetAttributeData", GetAttributeData},
+ {"GetAttributes", GetAttributes},
+ {"GetAllAttributes", GetAllAttributes},
+ {"SetClassDefaultAttribute", SetClassDefaultAttribute},
+ {"GetClassAttributes", GetClassAttributes},
+ {"GetAllDialogs", GetAllDialogs},
+ {"GetAllNames", GetAllNames},
+ {"GetDialog", GetDialog},
+ {"GetFile", GetFile},
+ {"GetFocus", GetFocus},
+ {"GetClassName", GetClassName},
+ {"GetClassType", GetClassType},
+ {"GetGlobal", GetGlobal},
+ {"GetHandle", GetHandle},
+ {"GetLanguage", GetLanguage},
+ {"GetName", GetName},
+ {"Help", Help},
+ {"Hide", Hide},
+ {"Load", Load},
+ {"LoadBuffer", LoadBuffer},
+ {"LoopStep", LoopStep},
+ {"ExitLoop", ExitLoop},
+ {"MainLoop", MainLoop},
+ {"MainLoopLevel", MainLoopLevel},
+ {"Map", Map},
+ {"Unmap", Unmap},
+ {"MapFont", MapFont},
+ {"Message", Message},
+ {"Alarm", Alarm},
+ {"ListDialog", ListDialog},
+ {"GetText", GetText},
+ {"NextField", NextField},
+ {"Popup", Popup},
+ {"PreviousField", PreviousField},
+ {"SetAttribute", StoreAttribute},
+ {"SetAttributes", SetAttributes},
+ {"isbutton1", cf_isbutton1},
+ {"isbutton2", cf_isbutton2},
+ {"isbutton3", cf_isbutton3},
+ {"isshift", cf_isshift},
+ {"iscontrol", cf_iscontrol},
+ {"isdouble", cf_isdouble},
+ {"isalt", cf_isalt},
+ {"issys", cf_issys},
+ {"isbutton4", cf_isbutton4},
+ {"isbutton5", cf_isbutton5},
+ {"GetParent", GetParent},
+ {"GetNextChild", GetNextChild},
+ {"GetChildPos", GetChildPos},
+ {"VersionNumber", VersionNumber},
+ {"GetBrother", GetBrother},
+ {"GetDialogChild", GetDialogChild},
+ {"SetFocus", SetFocus},
+ {"SetGlobal", SetGlobal},
+ {"SetHandle", SetHandle},
+ {"SetLanguage", SetLanguage},
+ {"Show", Show},
+ {"GetChildCount", GetChildCount},
+ {"Refresh", Refresh},
+ {"Update", Update},
+ {"UpdateChildren", UpdateChildren},
+ {"SaveImageAsText", SaveImageAsText},
+ {"Redraw", Redraw},
+ {"ShowXY", ShowXY},
+ {"StoreAttribute", StoreAttribute},
+ {"StoreGlobal", StoreGlobal},
+ {"UnMapFont", UnMapFont},
+ {"Scanf", iupluaScanf},
+ {"isprint", cf_isprint},
+ {"IUPxCODE", cf_xCODE},
+ {"isxkey", cf_isxkey},
+ {"isXkey", cf_isxkey},
+ {"isShiftXkey", cf_isShiftXkey},
+ {"isCtrlXkey", cf_isCtrlXkey},
+ {"isAltXkey", cf_isAltXkey},
+ {"isSysXkey", cf_isSysXkey},
+ {"TextConvertLinColToPos", TextConvertLinColToPos},
+ {"TextConvertPosToLinCol", TextConvertPosToLinCol},
+ {"ConvertXYToPos", ConvertXYToPos},
+ {NULL, NULL},
+ };
+
+ /* Registers functions in iup namespace */
+ luaL_openlib(L, NULL, funcs, 0);
+
+ return 0; /* nothing in stack */
+}
diff --git a/iup/srclua5/iuplua_cd.c b/iup/srclua5/iuplua_cd.c
new file mode 100755
index 0000000..c14932a
--- /dev/null
+++ b/iup/srclua5/iuplua_cd.c
@@ -0,0 +1,56 @@
+/** \file
+ * \brief IUP Canvas Lua 5 Binding
+ *
+ * See Copyright Notice in cd.h
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <cd.h>
+#include <cdiup.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+
+#include <cdlua.h>
+#include <cdluaiup.h>
+#include <cdlua5_private.h>
+
+
+static void *cdiup_checkdata(lua_State *L, int param)
+{
+ return iuplua_checkihandle(L, param);
+}
+
+static cdluaContext cdluaiupctx =
+{
+ 0,
+ "IUP",
+ cdContextIup,
+ cdiup_checkdata,
+ NULL,
+ 0
+};
+
+int cdluaiup_open (lua_State *L)
+{
+ cdluaLuaState* cdL = cdlua_getstate(L);
+ lua_pushstring(L, "cd");
+ lua_gettable(L, LUA_GLOBALSINDEX); /* leave "cd" table at the top of the stack */
+ cdlua_addcontext(L, cdL, &cdluaiupctx);
+ return 1;
+}
+
+int luaopen_iupluacd(lua_State* L)
+{
+ return cdluaiup_open(L);
+}
+
+int luaopen_iupluacd51(lua_State* L)
+{
+ return cdluaiup_open(L);
+}
diff --git a/iup/srclua5/iuplua_controls.c b/iup/srclua5/iuplua_controls.c
new file mode 100755
index 0000000..bd961bf
--- /dev/null
+++ b/iup/srclua5/iuplua_controls.c
@@ -0,0 +1,55 @@
+/** \file
+ * \brief Bindig of iupcontrols to Lua 5.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <lua.h>
+#include <lualib.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+#include "iuplua.h"
+#include "iupluacontrols.h"
+#include "il.h"
+#include "il_controls.h"
+
+int iupcontrolslua_open(lua_State * L)
+{
+ if (iuplua_opencall_internal(L))
+ IupControlsOpen();
+
+ iuplua_changeEnv(L);
+
+ iupgaugelua_open(L);
+ iupmatrixlua_open(L);
+ iupmasklua_open(L);
+ iupdiallua_open(L);
+ iupcolorbrowserlua_open(L);
+ iupcellslua_open(L);
+ iupcolorbarlua_open(L);
+
+ iuplua_returnEnv(L);
+
+ return 0;
+}
+
+int iupcontrolslua_close(lua_State * L)
+{
+ if (iuplua_opencall_internal(L))
+ IupControlsClose();
+ return 0;
+}
+
+/* obligatory to use require"iupluacontrols" */
+int luaopen_iupluacontrols(lua_State* L)
+{
+ return iupcontrolslua_open(L);
+}
+
+/* obligatory to use require"iupluacontrols51" */
+int luaopen_iupluacontrols51(lua_State* L)
+{
+ return iupcontrolslua_open(L);
+}
diff --git a/iup/srclua5/iuplua_glcanvas.c b/iup/srclua5/iuplua_glcanvas.c
new file mode 100755
index 0000000..c50ba8f
--- /dev/null
+++ b/iup/srclua5/iuplua_glcanvas.c
@@ -0,0 +1,82 @@
+/** \file
+ * \brief iupgl binding for Lua 5.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iupgl.h"
+
+#include "iuplua.h"
+#include "iupluagl.h"
+#include "il.h"
+
+#ifdef _WIN32
+#include <windows.h>
+#endif
+#include <GL/gl.h>
+
+static int GLIsCurrent(lua_State *L)
+{
+ lua_pushboolean(L, IupGLIsCurrent(iuplua_checkihandle(L,1)));
+ return 1;
+}
+
+static int GLMakeCurrent(lua_State *L)
+{
+ IupGLMakeCurrent(iuplua_checkihandle(L,1));
+
+ iuplua_changeEnv(L);
+ iuplua_regstring(L, (const char*)glGetString(GL_VENDOR), "GL_VENDOR");
+ iuplua_regstring(L, (const char*)glGetString(GL_RENDERER), "GL_RENDERER");
+ iuplua_regstring(L, (const char*)glGetString(GL_VERSION), "GL_VERSION");
+ iuplua_returnEnv(L);
+
+ return 0;
+}
+
+static int GLSwapBuffers(lua_State *L)
+{
+ IupGLSwapBuffers(iuplua_checkihandle(L,1));
+ return 0;
+}
+
+static int GLPalette(lua_State *L)
+{
+ Ihandle *self = iuplua_checkihandle(L,1);
+ int index = luaL_checkint(L,2);
+ float r = (float)luaL_checknumber(L,3);
+ float g = (float)luaL_checknumber(L,4);
+ float b = (float)luaL_checknumber(L,5);
+ IupGLPalette(self, index, r, g, b);
+ return 0;
+}
+
+static int GLUseFont(lua_State *L)
+{
+ Ihandle *self = iuplua_checkihandle(L,1);
+ int first = luaL_checkint(L,2);
+ int count = luaL_checkint(L,3);
+ int list_base = luaL_checkint(L,4);
+ IupGLUseFont(self, first, count, list_base);
+ return 0;
+}
+
+static int GLWait(lua_State *L)
+{
+ IupGLWait(luaL_checkint(L,1));
+ return 0;
+}
+
+void iuplua_glcanvasfuncs_open (lua_State *L)
+{
+ iuplua_register(L, GLSwapBuffers, "GLSwapBuffers");
+ iuplua_register(L, GLIsCurrent, "GLIsCurrent");
+ iuplua_register(L, GLMakeCurrent, "GLMakeCurrent");
+ iuplua_register(L, GLPalette, "GLPalette");
+ iuplua_register(L, GLUseFont, "GLUseFont");
+ iuplua_register(L, GLWait, "GLWait");
+}
diff --git a/iup/srclua5/iuplua_im.c b/iup/srclua5/iuplua_im.c
new file mode 100755
index 0000000..b700e1a
--- /dev/null
+++ b/iup/srclua5/iuplua_im.c
@@ -0,0 +1,54 @@
+/** \file
+ * \brief IULUA core - Bindig of iup to Lua 5.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include "iup.h"
+#include "iupim.h"
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iuplua.h"
+#include "iupluaim.h"
+#include "il.h"
+
+static int SaveImage(lua_State *L)
+{
+ Ihandle *image = iuplua_checkihandle(L,1);
+ const char *filename = luaL_checkstring(L, 2);
+ const char *format = luaL_checkstring(L, 3);
+ lua_pushboolean(L, IupSaveImage(image, filename, format));
+ return 1;
+}
+
+static int LoadImage(lua_State *L)
+{
+ const char *filename = luaL_checkstring(L, 1);
+ Ihandle* image = IupLoadImage(filename);
+ iuplua_plugstate(L, image);
+ iuplua_pushihandle(L, image);
+ return 1;
+}
+
+int iupimlua_open(lua_State *L)
+{
+ iuplua_changeEnv(L);
+ iuplua_register(L, LoadImage, "LoadImage");
+ iuplua_register(L, SaveImage, "SaveImage");
+ iuplua_returnEnv(L);
+ return 0; /* nothing in stack */
+}
+
+/* obligatory to use require"iupluaim" */
+int luaopen_iupluaim(lua_State* L)
+{
+ return iupimlua_open(L);
+}
+
+/* obligatory to use require"iupluaim51" */
+int luaopen_iupluaim51(lua_State* L)
+{
+ return iupimlua_open(L);
+}
diff --git a/iup/srclua5/iuplua_imglib.c b/iup/srclua5/iuplua_imglib.c
new file mode 100755
index 0000000..bece6d5
--- /dev/null
+++ b/iup/srclua5/iuplua_imglib.c
@@ -0,0 +1,44 @@
+/** \file
+ * \brief Iup Image Library Lua 5 Binding
+ *
+ * See Copyright Notice in cd.h
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iuplua.h"
+#include "iupcontrols.h"
+#include "il.h"
+
+
+static int imagelibopen(lua_State *L)
+{
+ (void)L;
+ IupImageLibOpen();
+ return 0;
+}
+
+static int iupluaimglib_open (lua_State *L)
+{
+ IupImageLibOpen();
+
+ iuplua_changeEnv(L);
+ iuplua_register(L, imagelibopen, "ImageLibOpen");
+ iuplua_returnEnv(L);
+ return 0; /* nothing in stack */
+}
+
+int luaopen_iupluaimglib(lua_State* L)
+{
+ return iupluaimglib_open(L);
+}
+
+int luaopen_iupluaimglib51(lua_State* L)
+{
+ return iupluaimglib_open(L);
+}
diff --git a/iup/srclua5/iuplua_pplot.c b/iup/srclua5/iuplua_pplot.c
new file mode 100755
index 0000000..08b04bd
--- /dev/null
+++ b/iup/srclua5/iuplua_pplot.c
@@ -0,0 +1,159 @@
+/** \file
+ * \brief pplot binding for Lua 5.
+ *
+ * See Copyright Notice in "iup.h"
+ */
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "iup.h"
+#include "iup_pplot.h"
+
+#include <cd.h>
+#include <cdlua.h>
+
+#include "iuplua.h"
+#include "iuplua_pplot.h"
+#include "il.h"
+
+
+static int pplot_edit_cb(Ihandle *self, int p0, int p1, float p2, float p3, float *p4, float *p5)
+{
+ int ret;
+ lua_State *L = iuplua_call_start(self, "edit_cb");
+ lua_pushnumber(L, p0);
+ lua_pushnumber(L, p1);
+ lua_pushnumber(L, p2);
+ lua_pushnumber(L, p3);
+ ret = iuplua_call_raw(L, 4+2, LUA_MULTRET); /* 4 args + 2 args(errormsg, handle), variable number of returns */
+ if (ret || lua_isnil(L, -1))
+ return IUP_DEFAULT;
+ ret = (int)lua_tonumber(L,-1);
+
+ if (ret == IUP_IGNORE)
+ {
+ lua_pop(L, 1);
+ return IUP_IGNORE;
+ }
+
+ *p4 = (float)lua_tonumber(L, -3);
+ *p5 = (float)lua_tonumber(L, -2);
+ lua_pop(L, 1);
+ return IUP_DEFAULT;
+}
+
+static int pplot_postdraw_cb(Ihandle *self, cdCanvas* cnv)
+{
+ lua_State *L = iuplua_call_start(self, "postdraw_cb");
+ cdlua_pushcanvas(L, cnv);
+ return iuplua_call(L, 1);
+}
+
+static int pplot_predraw_cb(Ihandle *self, cdCanvas* cnv)
+{
+ lua_State *L = iuplua_call_start(self, "predraw_cb");
+ cdlua_pushcanvas(L, cnv);
+ return iuplua_call(L, 1);
+}
+
+static int PPlotBegin(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ IupPPlotBegin(ih, luaL_checkint(L,2));
+ return 0;
+}
+
+static int PPlotAdd(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ IupPPlotAdd(ih, (float)luaL_checknumber(L,2), (float)luaL_checknumber(L,3));
+ return 0;
+}
+
+static int PPlotAddStr(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ IupPPlotAddStr(ih, luaL_checkstring(L,2), (float)luaL_checknumber(L,3));
+ return 0;
+}
+
+static int PPlotEnd(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ int ret = IupPPlotEnd(ih);
+ lua_pushnumber(L, ret);
+ return 1;
+}
+
+static int PPlotInsertStr(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ IupPPlotInsertStr(ih, luaL_checkint(L,2), luaL_checkint(L,3), luaL_checkstring(L,4), (float)luaL_checknumber(L,5));
+ return 0;
+}
+
+static int PPlotInsert(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ IupPPlotInsert(ih, luaL_checkint(L,2), luaL_checkint(L,3), (float)luaL_checknumber(L,4), (float)luaL_checknumber(L,5));
+ return 0;
+}
+
+static int PPlotTransform(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ int ix, iy;
+ IupPPlotTransform(ih, (float)luaL_checknumber(L,2), (float)luaL_checknumber(L,3), &ix, &iy);
+ lua_pushnumber(L, ix);
+ lua_pushnumber(L, iy);
+ return 2;
+}
+
+static int PPlotPaintTo(lua_State *L)
+{
+ Ihandle *ih = iuplua_checkihandle(L,1);
+ IupPPlotPaintTo(ih, cdlua_checkcanvas(L,2));
+ return 0;
+}
+
+void iuplua_pplotfuncs_open (lua_State *L)
+{
+ iuplua_register_cb(L, "EDIT_CB", (lua_CFunction)pplot_edit_cb, "pplot");
+ iuplua_register_cb(L, "PREDRAW_CB", (lua_CFunction)pplot_predraw_cb, NULL);
+ iuplua_register_cb(L, "POSTDRAW_CB", (lua_CFunction)pplot_postdraw_cb, NULL);
+
+ iuplua_register(L, PPlotBegin ,"PPlotBegin");
+ iuplua_register(L, PPlotAdd ,"PPlotAdd");
+ iuplua_register(L, PPlotAddStr ,"PPlotAddStr");
+ iuplua_register(L, PPlotEnd ,"PPlotEnd");
+ iuplua_register(L, PPlotInsertStr ,"PPlotInsertStr");
+ iuplua_register(L, PPlotInsert ,"PPlotInsert");
+ iuplua_register(L, PPlotTransform ,"PPlotTransform");
+ iuplua_register(L, PPlotPaintTo ,"PPlotPaintTo");
+}
+
+int iuppplotlua_open(lua_State * L);
+
+int iup_pplotlua_open(lua_State * L)
+{
+ if (iuplua_opencall_internal(L))
+ IupPPlotOpen();
+
+ iuplua_changeEnv(L);
+ iuppplotlua_open(L);
+ iuplua_returnEnv(L);
+ return 0;
+}
+
+/* obligatory to use require"iuplua_pplot" */
+int luaopen_iuplua_pplot(lua_State* L)
+{
+ return iup_pplotlua_open(L);
+}
+
+/* obligatory to use require"iuplua_pplot51" */
+int luaopen_iuplua_pplot51(lua_State* L)
+{
+ return iup_pplotlua_open(L);
+}
diff --git a/iup/srclua5/iuplua_pplot5.def b/iup/srclua5/iuplua_pplot5.def
new file mode 100755
index 0000000..3b2ce41
--- /dev/null
+++ b/iup/srclua5/iuplua_pplot5.def
@@ -0,0 +1,4 @@
+EXPORTS
+ iup_pplotlua_open
+ luaopen_iuplua_pplot
+ luaopen_iuplua_pplot51
diff --git a/iup/srclua5/iuplua_pplot51.dep b/iup/srclua5/iuplua_pplot51.dep
new file mode 100644
index 0000000..ed004dc
--- /dev/null
+++ b/iup/srclua5/iuplua_pplot51.dep
@@ -0,0 +1,11 @@
+$(OBJDIR)/iuplua_pplot.o: iuplua_pplot.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iup_pplot.h ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../../cd/include/cdlua.h ../include/iuplua.h \
+ ../include/iuplua_pplot.h il.h
+$(OBJDIR)/il_pplot.o: il_pplot.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h ../include/iup_pplot.h il.h \
+ loh/pplot_le64.loh
diff --git a/iup/srclua5/iupluacd5.def b/iup/srclua5/iupluacd5.def
new file mode 100755
index 0000000..c56c231
--- /dev/null
+++ b/iup/srclua5/iupluacd5.def
@@ -0,0 +1,4 @@
+EXPORTS
+ cdluaiup_open
+ luaopen_iupluacd
+ luaopen_iupluacd51 \ No newline at end of file
diff --git a/iup/srclua5/iupluacd51.dep b/iup/srclua5/iupluacd51.dep
new file mode 100644
index 0000000..1378e85
--- /dev/null
+++ b/iup/srclua5/iupluacd51.dep
@@ -0,0 +1,6 @@
+$(OBJDIR)/iuplua_cd.o: iuplua_cd.c ../../cd/include/cd.h ../../cd/include/cdiup.h \
+ ../../lua5.1/include/lua.h ../../lua5.1/include/luaconf.h \
+ ../../lua5.1/include/lauxlib.h ../../lua5.1/include/lua.h \
+ ../include/iup.h ../include/iupkey.h ../include/iupdef.h \
+ ../include/iuplua.h ../../cd/include/cdlua.h \
+ ../../cd/include/cdluaiup.h ../../cd/include/cdlua5_private.h
diff --git a/iup/srclua5/iupluacontrols5.def b/iup/srclua5/iupluacontrols5.def
new file mode 100755
index 0000000..0317d30
--- /dev/null
+++ b/iup/srclua5/iupluacontrols5.def
@@ -0,0 +1,6 @@
+EXPORTS
+ iupcontrolslua_open
+ iupcontrolslua_close
+ luaopen_iupluacontrols
+ luaopen_iupluacontrols51
+ \ No newline at end of file
diff --git a/iup/srclua5/iupluacontrols51.dep b/iup/srclua5/iupluacontrols51.dep
new file mode 100644
index 0000000..d020fd9
--- /dev/null
+++ b/iup/srclua5/iupluacontrols51.dep
@@ -0,0 +1,46 @@
+$(OBJDIR)/iuplua_controls.o: iuplua_controls.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lualib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcontrols.h ../include/iuplua.h \
+ ../include/iupluacontrols.h il.h il_controls.h
+$(OBJDIR)/il_mask.o: il_mask.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupmask.h ../include/iuplua.h il.h \
+ il_controls.h
+$(OBJDIR)/il_matrix_aux.o: il_matrix_aux.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcontrols.h ../../cd/include/cd.h \
+ ../../cd/include/cd_old.h ../../cd/include/cdlua.h ../include/iuplua.h \
+ il.h il_controls.h
+$(OBJDIR)/il_dial.o: il_dial.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h \
+ loh/dial_le64.loh
+$(OBJDIR)/il_gauge.o: il_gauge.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h \
+ loh/gauge_le64.loh
+$(OBJDIR)/il_colorbrowser.o: il_colorbrowser.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h \
+ loh/colorbrowser_le64.loh
+$(OBJDIR)/il_colorbar.o: il_colorbar.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h \
+ loh/colorbar_le64.loh
+$(OBJDIR)/il_matrix.o: il_matrix.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h \
+ loh/matrix_le64.loh
+$(OBJDIR)/il_cells.o: il_cells.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h \
+ loh/cells_le64.loh
diff --git a/iup/srclua5/iupluagl5.def b/iup/srclua5/iupluagl5.def
new file mode 100755
index 0000000..577d9cf
--- /dev/null
+++ b/iup/srclua5/iupluagl5.def
@@ -0,0 +1,5 @@
+EXPORTS
+ iupgllua_open
+ luaopen_iupluagl
+ luaopen_iupluagl51
+ \ No newline at end of file
diff --git a/iup/srclua5/iupluagl51.dep b/iup/srclua5/iupluagl51.dep
new file mode 100644
index 0000000..592207a
--- /dev/null
+++ b/iup/srclua5/iupluagl51.dep
@@ -0,0 +1,10 @@
+$(OBJDIR)/iuplua_glcanvas.o: iuplua_glcanvas.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupgl.h ../include/iuplua.h \
+ ../include/iupluagl.h il.h
+$(OBJDIR)/il_glcanvas.o: il_glcanvas.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h ../include/iupgl.h il.h \
+ loh/glcanvas_le64.loh
diff --git a/iup/srclua5/iupluaim5.def b/iup/srclua5/iupluaim5.def
new file mode 100755
index 0000000..063df5a
--- /dev/null
+++ b/iup/srclua5/iupluaim5.def
@@ -0,0 +1,5 @@
+EXPORTS
+ iupimlua_open
+ luaopen_iupluaim
+ luaopen_iupluaim51
+ \ No newline at end of file
diff --git a/iup/srclua5/iupluaim51.dep b/iup/srclua5/iupluaim51.dep
new file mode 100644
index 0000000..488ebfa
--- /dev/null
+++ b/iup/srclua5/iupluaim51.dep
@@ -0,0 +1,5 @@
+$(OBJDIR)/iuplua_im.o: iuplua_im.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupim.h ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iuplua.h ../include/iupluaim.h \
+ il.h
diff --git a/iup/srclua5/iupluaimglib5.def b/iup/srclua5/iupluaimglib5.def
new file mode 100755
index 0000000..134abb7
--- /dev/null
+++ b/iup/srclua5/iupluaimglib5.def
@@ -0,0 +1,4 @@
+EXPORTS
+ luaopen_iupluaimglib
+ luaopen_iupluaimglib51
+ \ No newline at end of file
diff --git a/iup/srclua5/iupluaimglib51.dep b/iup/srclua5/iupluaimglib51.dep
new file mode 100644
index 0000000..cbbc352
--- /dev/null
+++ b/iup/srclua5/iupluaimglib51.dep
@@ -0,0 +1,4 @@
+$(OBJDIR)/iuplua_imglib.o: iuplua_imglib.c ../../lua5.1/include/lua.h \
+ ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \
+ ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h
diff --git a/iup/srclua5/iupluaole5.def b/iup/srclua5/iupluaole5.def
new file mode 100755
index 0000000..ab781ed
--- /dev/null
+++ b/iup/srclua5/iupluaole5.def
@@ -0,0 +1,5 @@
+EXPORTS
+ iupolelua_open
+ luaopen_iupluaole
+ luaopen_iupluaole51
+ \ No newline at end of file
diff --git a/iup/srclua5/iupole.mak b/iup/srclua5/iupole.mak
new file mode 100755
index 0000000..6a3f9ec
--- /dev/null
+++ b/iup/srclua5/iupole.mak
@@ -0,0 +1,23 @@
+PROJNAME = iup
+LIBNAME = iupluaole51
+OPT = YES
+DEF_FILE = iupluaole5.def
+
+IUP := ..
+
+DEFINES = IUPLUA_USELOH
+
+USE_IUPLUA = Yes
+LIBS = iupole
+USE_LUA51 = Yes
+NO_LUALINK = Yes
+
+LOHDIR = loh
+SRCLUA = olecontrol.lua
+GC = $(addsuffix .c, $(basename $(SRCLUA)))
+GC := $(addprefix il_, $(GC))
+
+$(GC) : il_%.c : %.lua generator.lua
+ $(LUABIN) generator.lua $<
+
+SRC = $(GC)
diff --git a/iup/srclua5/label.lua b/iup/srclua5/label.lua
new file mode 100755
index 0000000..11894a6
--- /dev/null
+++ b/iup/srclua5/label.lua
@@ -0,0 +1,16 @@
+------------------------------------------------------------------------------
+-- Label class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "label",
+ parent = WIDGET,
+ creation = "S",
+ callback = {}
+}
+
+function ctrl.createElement(class, arg)
+ return Label(arg.title)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/list.lua b/iup/srclua5/list.lua
new file mode 100755
index 0000000..5c927f2
--- /dev/null
+++ b/iup/srclua5/list.lua
@@ -0,0 +1,22 @@
+------------------------------------------------------------------------------
+-- List class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "list",
+ parent = WIDGET,
+ creation = "-",
+ callback = {
+ action = "snn",
+ multiselect_cb = "s",
+ edit_cb = "ns",
+ dropdown_cb = "n",
+ dblclick_cb = "ns",
+ }
+}
+
+function ctrl.createElement(class, arg)
+ return List()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/loh/button.loh b/iup/srclua5/loh/button.loh
new file mode 100755
index 0000000..9ffb6aa
--- /dev/null
+++ b/iup/srclua5/loh/button.loh
@@ -0,0 +1,38 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/button.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/button.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 12, 0, 0, 0, 64, 98,117,116,
+116,111,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4,
+ 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129,
+ 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,100, 0, 0, 0,
+ 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,
+128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0,
+ 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 98,117,116,116,111,
+110, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0,
+ 4, 3, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0,
+ 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133,
+ 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2,
+ 0, 0, 0, 4, 7, 0, 0, 0, 66,117,116,116,111,110, 0, 4, 6, 0, 0, 0,
+116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 14, 0,
+ 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 0,
+ 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0,
+ 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0,
+ 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
+ 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0,
+ 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/button.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/button_be32.loh b/iup/srclua5/loh/button_be32.loh
new file mode 100755
index 0000000..d7c1b69
--- /dev/null
+++ b/iup/srclua5/loh/button_be32.loh
@@ -0,0 +1,38 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/button_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/button_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 12, 64, 98,117,116,
+116,111,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4,
+ 0, 0, 0, 18, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,
+130, 65, 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9, 0, 0, 0,100,
+132,128, 64, 9, 0, 2,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,192, 69,
+ 0, 0, 0,128, 0, 3, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 13,
+ 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 7, 98,117,116,116,111,
+110, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0,
+ 4, 0, 0, 0, 3, 83, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0, 0, 1, 0,
+ 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 2, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0,133, 0,192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0,
+ 0, 0, 2, 4, 0, 0, 0, 7, 66,117,116,116,111,110, 0, 4, 0, 0, 0, 6,
+116,105,116,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0,
+ 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0,
+ 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4,
+ 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18,
+ 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5,
+ 99,116,114,108, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/button_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/button_be64.loh b/iup/srclua5/loh/button_be64.loh
new file mode 100755
index 0000000..50b2ba6
--- /dev/null
+++ b/iup/srclua5/loh/button_be64.loh
@@ -0,0 +1,42 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/button_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/button_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64, 98,117,116,116,111,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,
+100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1,
+ 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0,
+ 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133,
+ 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2,
+ 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 66,117,116,116,111,110, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0,
+ 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+ 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/button_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/button_le64.loh b/iup/srclua5/loh/button_le64.loh
new file mode 100755
index 0000000..8c74526
--- /dev/null
+++ b/iup/srclua5/loh/button_le64.loh
@@ -0,0 +1,42 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/button_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/button_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64, 98,117,116,116,111,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,
+100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1,
+ 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0,
+ 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133,
+ 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2,
+ 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 66,117,116,116,111,110, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0,
+ 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+ 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/button_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/button_le64w.loh b/iup/srclua5/loh/button_le64w.loh
new file mode 100755
index 0000000..21840c9
--- /dev/null
+++ b/iup/srclua5/loh/button_le64w.loh
@@ -0,0 +1,42 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/button_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/button_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64, 98,117,116,116,111,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,
+100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1,
+ 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0,
+ 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133,
+ 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2,
+ 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 66,117,116,116,111,110, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0,
+ 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+ 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/button_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/canvas.loh b/iup/srclua5/loh/canvas.loh
new file mode 100755
index 0000000..2533ce8
--- /dev/null
+++ b/iup/srclua5/loh/canvas.loh
@@ -0,0 +1,54 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/canvas.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/canvas.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 12, 0, 0, 0, 64, 99, 97,110,
+118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4,
+ 29, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129,
+ 9, 64, 65,130, 74, 0, 3, 0, 73, 0,194,131, 73,128,194,132, 73, 0,195,133,
+ 73, 0,195,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137, 73, 64, 68,138,
+ 73,128,197,138, 73, 0,198,139, 73, 0,195,140, 73,128, 69,141, 9, 64, 0,131,
+100, 0, 0, 0, 9, 64,128,141, 69, 0, 7, 0,128, 0, 0, 0, 92, 64, 0, 1,
+ 69, 64, 7, 0,128, 0, 0, 0,193,128, 7, 0, 92, 64,128, 1, 30, 0,128, 0,
+ 31, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 99,
+ 97,110,118, 97,115, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0,
+ 0, 0,102,102, 0, 4, 10, 0, 0, 0, 98,117,116,116,111,110, 95, 99, 98, 0,
+ 4, 6, 0, 0, 0,110,110,110,110,115, 0, 4, 15, 0, 0, 0,101,110,116,101,
+114,119,105,110,100,111,119, 95, 99, 98, 0, 4, 1, 0, 0, 0, 0, 4, 15, 0,
+ 0, 0,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 4, 10, 0,
+ 0, 0,109,111,116,105,111,110, 95, 99, 98, 0, 4, 4, 0, 0, 0,110,110,115,
+ 0, 4, 10, 0, 0, 0,114,101,115,105,122,101, 95, 99, 98, 0, 4, 3, 0, 0,
+ 0,110,110, 0, 4, 10, 0, 0, 0,115, 99,114,111,108,108, 95, 99, 98, 0, 4,
+ 4, 0, 0, 0,110,102,102, 0, 4, 12, 0, 0, 0,107,101,121,112,114,101,115,
+115, 95, 99, 98, 0, 4, 7, 0, 0, 0,119,111,109, 95, 99, 98, 0, 4, 2, 0,
+ 0, 0,110, 0, 4, 9, 0, 0, 0,119,104,101,101,108, 95, 99, 98, 0, 4, 5,
+ 0, 0, 0,102,110,110,115, 0, 4, 15, 0, 0, 0,109,100,105, 97, 99,116,105,
+118, 97,116,101, 95, 99, 98, 0, 4, 9, 0, 0, 0,102,111, 99,117,115, 95, 99,
+ 98, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116,
+ 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115,
+ 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 24, 0, 0, 0, 26, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0,
+ 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0,
+ 0, 4, 7, 0, 0, 0, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0,
+ 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4,
+ 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 29,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12,
+ 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17,
+ 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 26,
+ 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29,
+ 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 19, 0, 0, 0, 28, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/canvas.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/canvas_be32.loh b/iup/srclua5/loh/canvas_be32.loh
new file mode 100755
index 0000000..7950cd4
--- /dev/null
+++ b/iup/srclua5/loh/canvas_be32.loh
@@ -0,0 +1,54 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/canvas_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/canvas_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 12, 64, 99, 97,110,
+118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4,
+ 0, 0, 0, 29, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,
+130, 65, 64, 9, 0, 3, 0, 74,131,194, 0, 73,132,194,128, 73,133,195, 0, 73,
+134,195, 0, 73,135, 67,192, 73,136, 68, 64, 73,137, 68,192, 73,138, 68, 64, 73,
+138,197,128, 73,139,198, 0, 73,140,195, 0, 73,141, 69,128, 73,131, 0, 64, 9,
+ 0, 0, 0,100,141,128, 64, 9, 0, 7, 0, 69, 0, 0, 0,128, 1, 0, 64, 92,
+ 0, 7, 64, 69, 0, 0, 0,128, 0, 7,128,193, 1,128, 64, 92, 0,128, 0, 30,
+ 0, 0, 0, 31, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 7, 99,
+ 97,110,118, 97,115, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0,
+ 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,
+105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0,
+ 0, 3,102,102, 0, 4, 0, 0, 0, 10, 98,117,116,116,111,110, 95, 99, 98, 0,
+ 4, 0, 0, 0, 6,110,110,110,110,115, 0, 4, 0, 0, 0, 15,101,110,116,101,
+114,119,105,110,100,111,119, 95, 99, 98, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0,
+ 0, 15,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 4, 0, 0,
+ 0, 10,109,111,116,105,111,110, 95, 99, 98, 0, 4, 0, 0, 0, 4,110,110,115,
+ 0, 4, 0, 0, 0, 10,114,101,115,105,122,101, 95, 99, 98, 0, 4, 0, 0, 0,
+ 3,110,110, 0, 4, 0, 0, 0, 10,115, 99,114,111,108,108, 95, 99, 98, 0, 4,
+ 0, 0, 0, 4,110,102,102, 0, 4, 0, 0, 0, 12,107,101,121,112,114,101,115,
+115, 95, 99, 98, 0, 4, 0, 0, 0, 7,119,111,109, 95, 99, 98, 0, 4, 0, 0,
+ 0, 2,110, 0, 4, 0, 0, 0, 9,119,104,101,101,108, 95, 99, 98, 0, 4, 0,
+ 0, 0, 5,102,110,110,115, 0, 4, 0, 0, 0, 15,109,100,105, 97, 99,116,105,
+118, 97,116,101, 95, 99, 98, 0, 4, 0, 0, 0, 9,102,111, 99,117,115, 95, 99,
+ 98, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116,
+ 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115,
+ 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 26, 0, 2, 0, 3, 0, 0, 0,
+ 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0,
+ 1, 4, 0, 0, 0, 7, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0,
+ 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0,
+ 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0,
+ 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0,
+ 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0,
+ 0, 0, 26, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0,
+ 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0,
+ 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 19, 0, 0, 0, 28,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/canvas_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/canvas_be64.loh b/iup/srclua5/loh/canvas_be64.loh
new file mode 100755
index 0000000..2cdb93c
--- /dev/null
+++ b/iup/srclua5/loh/canvas_be64.loh
@@ -0,0 +1,61 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/canvas_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/canvas_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99, 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 29, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74, 0, 3, 0, 73, 0,194,131, 73,128,194,132,
+ 73, 0,195,133, 73, 0,195,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137,
+ 73, 64, 68,138, 73,128,197,138, 73, 0,198,139, 73, 0,195,140, 73,128, 69,141,
+ 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,141, 69, 0, 7, 0,128, 0, 0, 0,
+ 92, 64, 0, 1, 69, 64, 7, 0,128, 0, 0, 0,193,128, 7, 0, 92, 64,128, 1,
+ 30, 0,128, 0, 31, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,
+107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 99, 97,110,118, 97,115, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0, 0, 0,
+ 0, 0,102,102, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110,
+ 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4,
+ 15, 0, 0, 0, 0, 0, 0, 0,101,110,116,101,114,119,105,110,100,111,119, 95,
+ 99, 98, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0,
+ 0, 0,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 4, 10, 0,
+ 0, 0, 0, 0, 0, 0,109,111,116,105,111,110, 95, 99, 98, 0, 4, 4, 0, 0,
+ 0, 0, 0, 0, 0,110,110,115, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,114,101,
+115,105,122,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0,
+ 4, 10, 0, 0, 0, 0, 0, 0, 0,115, 99,114,111,108,108, 95, 99, 98, 0, 4,
+ 4, 0, 0, 0, 0, 0, 0, 0,110,102,102, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0,119,111,109, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0,119,104,101,101,108, 95, 99, 98, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,102,110,110,115, 0, 4, 15, 0, 0, 0, 0, 0, 0,
+ 0,109,100,105, 97, 99,116,105,118, 97,116,101, 95, 99, 98, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0,102,111, 99,117,115, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0,
+ 0, 26, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 25, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0,
+ 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11,
+ 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21,
+ 0, 0, 0, 26, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28,
+ 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 19, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/canvas_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/canvas_le64.loh b/iup/srclua5/loh/canvas_le64.loh
new file mode 100755
index 0000000..ad64990
--- /dev/null
+++ b/iup/srclua5/loh/canvas_le64.loh
@@ -0,0 +1,61 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/canvas_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/canvas_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99, 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 29, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74, 0, 3, 0, 73, 0,194,131, 73,128,194,132,
+ 73, 0,195,133, 73, 0,195,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137,
+ 73, 64, 68,138, 73,128,197,138, 73, 0,198,139, 73, 0,195,140, 73,128, 69,141,
+ 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,141, 69, 0, 7, 0,128, 0, 0, 0,
+ 92, 64, 0, 1, 69, 64, 7, 0,128, 0, 0, 0,193,128, 7, 0, 92, 64,128, 1,
+ 30, 0,128, 0, 31, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,
+107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 99, 97,110,118, 97,115, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0, 0, 0,
+ 0, 0,102,102, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110,
+ 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4,
+ 15, 0, 0, 0, 0, 0, 0, 0,101,110,116,101,114,119,105,110,100,111,119, 95,
+ 99, 98, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0,
+ 0, 0,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 4, 10, 0,
+ 0, 0, 0, 0, 0, 0,109,111,116,105,111,110, 95, 99, 98, 0, 4, 4, 0, 0,
+ 0, 0, 0, 0, 0,110,110,115, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,114,101,
+115,105,122,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0,
+ 4, 10, 0, 0, 0, 0, 0, 0, 0,115, 99,114,111,108,108, 95, 99, 98, 0, 4,
+ 4, 0, 0, 0, 0, 0, 0, 0,110,102,102, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0,119,111,109, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0,119,104,101,101,108, 95, 99, 98, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,102,110,110,115, 0, 4, 15, 0, 0, 0, 0, 0, 0,
+ 0,109,100,105, 97, 99,116,105,118, 97,116,101, 95, 99, 98, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0,102,111, 99,117,115, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0,
+ 0, 26, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 25, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0,
+ 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11,
+ 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21,
+ 0, 0, 0, 26, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28,
+ 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 19, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/canvas_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/canvas_le64w.loh b/iup/srclua5/loh/canvas_le64w.loh
new file mode 100755
index 0000000..8712464
--- /dev/null
+++ b/iup/srclua5/loh/canvas_le64w.loh
@@ -0,0 +1,61 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/canvas_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/canvas_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99, 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 29, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74, 0, 3, 0, 73, 0,194,131, 73,128,194,132,
+ 73, 0,195,133, 73, 0,195,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137,
+ 73, 64, 68,138, 73,128,197,138, 73, 0,198,139, 73, 0,195,140, 73,128, 69,141,
+ 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,141, 69, 0, 7, 0,128, 0, 0, 0,
+ 92, 64, 0, 1, 69, 64, 7, 0,128, 0, 0, 0,193,128, 7, 0, 92, 64,128, 1,
+ 30, 0,128, 0, 31, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,
+107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 99, 97,110,118, 97,115, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0, 0, 0,
+ 0, 0,102,102, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110,
+ 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4,
+ 15, 0, 0, 0, 0, 0, 0, 0,101,110,116,101,114,119,105,110,100,111,119, 95,
+ 99, 98, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0,
+ 0, 0,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 4, 10, 0,
+ 0, 0, 0, 0, 0, 0,109,111,116,105,111,110, 95, 99, 98, 0, 4, 4, 0, 0,
+ 0, 0, 0, 0, 0,110,110,115, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,114,101,
+115,105,122,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0,
+ 4, 10, 0, 0, 0, 0, 0, 0, 0,115, 99,114,111,108,108, 95, 99, 98, 0, 4,
+ 4, 0, 0, 0, 0, 0, 0, 0,110,102,102, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0,119,111,109, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0,119,104,101,101,108, 95, 99, 98, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,102,110,110,115, 0, 4, 15, 0, 0, 0, 0, 0, 0,
+ 0,109,100,105, 97, 99,116,105,118, 97,116,101, 95, 99, 98, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0,102,111, 99,117,115, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0,
+ 0, 26, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 25, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0,
+ 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11,
+ 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21,
+ 0, 0, 0, 26, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28,
+ 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 19, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/canvas_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/cbox.loh b/iup/srclua5/loh/cbox.loh
new file mode 100755
index 0000000..23cd8e5
--- /dev/null
+++ b/iup/srclua5/loh/cbox.loh
@@ -0,0 +1,50 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/cbox.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/cbox.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64, 99, 98,111,
+120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 19, 0,
+ 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131, 9,128,194,132,100, 0,
+ 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64,
+ 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0,
+ 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 99, 98,111,
+120, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0,
+ 4, 2, 0, 0, 0,118, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0,
+ 67, 98,111,120,118, 0, 4, 11, 0, 0, 0, 99,114,101, 97,116,101,102,117,110,
+ 99, 0, 4,208, 0, 0, 0,115,116, 97,116,105, 99, 32,105,110,116, 32, 67, 98,
+111,120,118, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 76, 41, 10,123, 10,
+ 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42,104,108,105,115,116, 32, 61, 32,
+105,117,112,108,117, 97, 95, 99,104,101, 99,107,105,104, 97,110,100,108,101, 95,
+ 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 73,104, 97,110,100,
+108,101, 32, 42,104, 32, 61, 32, 73,117,112, 67, 98,111,120,118, 40,104,108,105,
+115,116, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116,
+ 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,
+112,117,115,104,105,104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,104,
+ 41, 59, 10, 32, 32,102,114,101,101, 40,104,108,105,115,116, 41, 59, 10, 32, 32,
+114,101,116,117,114,110, 32, 49, 59, 10,125, 10, 32, 32, 0, 4, 14, 0, 0, 0,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,
+117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 23, 0,
+ 0, 0, 25, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,192, 0,
+128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 6,
+ 0, 0, 0, 67, 98,111,120,118, 0, 0, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0,
+ 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0,
+ 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4,
+ 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 20, 0, 0, 0, 25,
+ 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/cbox.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/cbox_be32.loh b/iup/srclua5/loh/cbox_be32.loh
new file mode 100755
index 0000000..b9bbb51
--- /dev/null
+++ b/iup/srclua5/loh/cbox_be32.loh
@@ -0,0 +1,52 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/cbox_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/cbox_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64, 99, 98,111,
+120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 20, 0, 1,192, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0, 0, 74,131, 0, 64, 9,131,194, 0, 9,132,194,128, 9,133,195,
+ 0, 9, 0, 0, 0,100,134,128, 64, 9, 0, 3,128, 69, 0, 0, 0,128, 1, 0,
+ 64, 92, 0, 3,192, 69, 0, 0, 0,128, 0, 4, 0,193, 1,128, 64, 92, 0,128,
+ 0, 30, 0, 0, 0, 17, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0,
+ 5, 99, 98,111,120, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0,
+ 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,
+105,111,110, 0, 4, 0, 0, 0, 2,118, 0, 4, 0, 0, 0, 9, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 0, 0, 0, 8,105,110, 99,108,117,100,101, 0, 4, 0,
+ 0, 0, 10,105,117,112, 99, 98,111,120, 46,104, 0, 4, 0, 0, 0, 9,102,117,
+110, 99,110, 97,109,101, 0, 4, 0, 0, 0, 6, 67, 98,111,120,118, 0, 4, 0,
+ 0, 0, 11, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 0, 0, 0,208,115,
+116, 97,116,105, 99, 32,105,110,116, 32, 67, 98,111,120,118, 40,108,117, 97, 95,
+ 83,116, 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,
+101, 32, 42, 42,104,108,105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,
+104,101, 99,107,105,104, 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44,
+ 32, 49, 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32,
+ 73,117,112, 67, 98,111,120,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,
+117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104,
+ 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,
+100,108,101, 95,114, 97,119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,
+101, 40,104,108,105,115,116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49,
+ 59, 10,125, 10, 32, 32, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,
+101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,
+101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116,
+ 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,
+116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 26, 0, 2,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,128, 0,192, 1, 0, 0,157, 0, 0,
+ 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 6, 67, 98,111,120,118,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,
+115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 4, 0,
+ 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0,
+ 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 21, 0, 0, 0, 26, 0,
+ 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0,
+ 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 1, 0,
+ 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0,
+
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cbox_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/cbox_be64.loh b/iup/srclua5/loh/cbox_be64.loh
new file mode 100755
index 0000000..b75e9c3
--- /dev/null
+++ b/iup/srclua5/loh/cbox_be64.loh
@@ -0,0 +1,54 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/cbox_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/cbox_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131, 9,128,
+194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,
+128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0, 99, 98,111,120, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+ 67, 98,111,120,118, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101,102,117,110, 99, 0, 4,208, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,105,
+ 99, 32,105,110,116, 32, 67, 98,111,120,118, 40,108,117, 97, 95, 83,116, 97,116,
+101, 32, 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42,
+104,108,105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,
+105,104, 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59,
+ 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,112, 67,
+ 98,111,120,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,108,117,
+ 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32,
+ 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,
+114, 97,119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,104,108,
+105,115,116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10,
+ 32, 32, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,
+101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,
+103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 2, 0, 4, 5, 0,
+ 0, 0,133, 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,
+128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 67, 98,111,120,118,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0,
+ 0, 24, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0,
+ 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 20, 0, 0, 0, 25,
+ 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0,
+ 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/cbox_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/cbox_le64.loh b/iup/srclua5/loh/cbox_le64.loh
new file mode 100755
index 0000000..d4161cb
--- /dev/null
+++ b/iup/srclua5/loh/cbox_le64.loh
@@ -0,0 +1,56 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/cbox_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/cbox_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 20, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131, 9,128,
+194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0,
+ 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,
+128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 99, 98,111,120, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0,
+ 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 10, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 99, 98,111,120, 46,104, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+ 67, 98,111,120,118, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101,102,117,110, 99, 0, 4,208, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,105,
+ 99, 32,105,110,116, 32, 67, 98,111,120,118, 40,108,117, 97, 95, 83,116, 97,116,
+101, 32, 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42,
+104,108,105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,
+105,104, 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59,
+ 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,112, 67,
+ 98,111,120,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,108,117,
+ 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32,
+ 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,
+114, 97,119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,104,108,
+105,115,116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10,
+ 32, 32, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,
+101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,
+103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 26, 0, 0, 0, 0, 2, 0, 4, 5, 0,
+ 0, 0,133, 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,
+128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 67, 98,111,120,118,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0,
+ 0, 25, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0,
+ 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 21,
+ 0, 0, 0, 26, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28,
+ 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cbox_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/cbox_le64w.loh b/iup/srclua5/loh/cbox_le64w.loh
new file mode 100755
index 0000000..7320ebe
--- /dev/null
+++ b/iup/srclua5/loh/cbox_le64w.loh
@@ -0,0 +1,54 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/cbox_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/cbox_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131, 9,128,
+194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,
+128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0, 99, 98,111,120, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+ 67, 98,111,120,118, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101,102,117,110, 99, 0, 4,208, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,105,
+ 99, 32,105,110,116, 32, 67, 98,111,120,118, 40,108,117, 97, 95, 83,116, 97,116,
+101, 32, 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42,
+104,108,105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,
+105,104, 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59,
+ 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,112, 67,
+ 98,111,120,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,108,117,
+ 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32,
+ 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,
+114, 97,119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,104,108,
+105,115,116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10,
+ 32, 32, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,
+101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,
+103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 2, 0, 4, 5, 0,
+ 0, 0,133, 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,
+128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 67, 98,111,120,118,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0,
+ 0, 24, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0,
+ 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 20, 0, 0, 0, 25,
+ 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0,
+ 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/cbox_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/cells.loh b/iup/srclua5/loh/cells.loh
new file mode 100755
index 0000000..f424f00
--- /dev/null
+++ b/iup/srclua5/loh/cells.loh
@@ -0,0 +1,57 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/cells.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/cells.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64, 99,101,108,
+108,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 29,
+ 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9,
+ 64, 65,130, 74, 64, 2, 0, 73, 0,194,131, 73,128,194,132, 73, 0,195,133, 73,
+128,195,134, 73,128,195,135, 73, 64, 65,136, 73, 64,193,136, 73, 0, 67,137, 73,
+ 0,195,137, 9, 64, 0,131, 9, 64, 69,138,100, 0, 0, 0, 9, 64, 0,139,100,
+ 64, 0, 0, 9, 64,128,139, 69, 0, 6, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+ 64, 6, 0,128, 0, 0, 0,193,128, 6, 0, 92, 64,128, 1, 30, 0,128, 0, 27,
+ 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 99,101,
+108,108,115, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 14, 0, 0, 0,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98,
+ 0, 4, 8, 0, 0, 0,110,110,110,110,110,110,115, 0, 4, 15, 0, 0, 0,109,
+111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 4, 6, 0, 0, 0,110,
+110,110,110,115, 0, 4, 13, 0, 0, 0,115, 99,114,111,108,108,105,110,103, 95,
+ 99, 98, 0, 4, 3, 0, 0, 0,110,110, 0, 4, 9, 0, 0, 0,119,105,100,116,
+104, 95, 99, 98, 0, 4, 2, 0, 0, 0,110, 0, 4, 10, 0, 0, 0,104,101,105,
+103,104,116, 95, 99, 98, 0, 4, 10, 0, 0, 0,110,108,105,110,101,115, 95, 99,
+ 98, 0, 4, 9, 0, 0, 0,110, 99,111,108,115, 95, 99, 98, 0, 4, 9, 0, 0,
+ 0,104,115,112, 97,110, 95, 99, 98, 0, 4, 9, 0, 0, 0,118,115,112, 97,110,
+ 95, 99, 98, 0, 4, 8, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 14, 0,
+ 0, 0,105,117,112, 99,111,110,116,114,111,108,115, 46,104, 0, 4, 7, 0, 0,
+ 0,114,101,100,114, 97,119, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,
+108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,
+116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,
+101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0,
+ 1, 0, 2, 2, 0, 0, 0, 9, 64, 64,128, 30, 0,128, 0, 2, 0, 0, 0, 4,
+ 8, 0, 0, 0,114,101,112, 97,105,110,116, 0, 4, 4, 0, 0, 0, 89, 69, 83,
+ 0, 0, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0,
+ 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 29, 0, 0, 0, 0, 2, 0, 3,
+ 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0,
+ 1, 0, 0, 0, 4, 6, 0, 0, 0, 67,101,108,108,115, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 2,
+ 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0,
+ 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0,
+ 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0,
+ 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 25, 0, 0, 0, 23, 0, 0,
+ 0, 29, 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0,
+ 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,
+ 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 17, 0, 0, 0, 28, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cells.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/cells_be32.loh b/iup/srclua5/loh/cells_be32.loh
new file mode 100755
index 0000000..73e7cb0
--- /dev/null
+++ b/iup/srclua5/loh/cells_be32.loh
@@ -0,0 +1,57 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/cells_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/cells_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64, 99,101,108,
+108,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0,
+ 0, 0, 29, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130,
+ 65, 64, 9, 0, 2, 64, 74,131,194, 0, 73,132,194,128, 73,133,195, 0, 73,134,
+195,128, 73,135,195,128, 73,136, 65, 64, 73,136,193, 64, 73,137, 67, 0, 73,137,
+195, 0, 73,131, 0, 64, 9,138, 69, 64, 9, 0, 0, 0,100,139, 0, 64, 9, 0,
+ 0, 64,100,139,128, 64, 9, 0, 6, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0,
+ 6, 64, 69, 0, 0, 0,128, 0, 6,128,193, 1,128, 64, 92, 0,128, 0, 30, 0,
+ 0, 0, 27, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 6, 99,101,
+108,108,115, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0,
+ 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,
+110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 0, 0, 0, 14,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98,
+ 0, 4, 0, 0, 0, 8,110,110,110,110,110,110,115, 0, 4, 0, 0, 0, 15,109,
+111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 4, 0, 0, 0, 6,110,
+110,110,110,115, 0, 4, 0, 0, 0, 13,115, 99,114,111,108,108,105,110,103, 95,
+ 99, 98, 0, 4, 0, 0, 0, 3,110,110, 0, 4, 0, 0, 0, 9,119,105,100,116,
+104, 95, 99, 98, 0, 4, 0, 0, 0, 2,110, 0, 4, 0, 0, 0, 10,104,101,105,
+103,104,116, 95, 99, 98, 0, 4, 0, 0, 0, 10,110,108,105,110,101,115, 95, 99,
+ 98, 0, 4, 0, 0, 0, 9,110, 99,111,108,115, 95, 99, 98, 0, 4, 0, 0, 0,
+ 9,104,115,112, 97,110, 95, 99, 98, 0, 4, 0, 0, 0, 9,118,115,112, 97,110,
+ 95, 99, 98, 0, 4, 0, 0, 0, 8,105,110, 99,108,117,100,101, 0, 4, 0, 0,
+ 0, 11,105,117,112, 99,101,108,108,115, 46,104, 0, 4, 0, 0, 0, 7,114,101,
+100,114, 97,119, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114,
+ 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108,
+ 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0,
+ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 1, 0, 2,
+ 0, 0, 0, 2,128, 64, 64, 9, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0,
+ 8,114,101,112, 97,105,110,116, 0, 4, 0, 0, 0, 4, 89, 69, 83, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0,
+ 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 29, 0, 2, 0, 3, 0, 0, 0,
+ 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0,
+ 1, 4, 0, 0, 0, 6, 67,101,108,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 2,
+ 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0,
+ 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0,
+ 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0,
+ 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 25, 0, 0, 0, 23, 0, 0,
+ 0, 29, 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0,
+ 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,
+ 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 17, 0, 0, 0, 28, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cells_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/cells_be64.loh b/iup/srclua5/loh/cells_be64.loh
new file mode 100755
index 0000000..ff5fc7d
--- /dev/null
+++ b/iup/srclua5/loh/cells_be64.loh
@@ -0,0 +1,64 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/cells_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/cells_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 29, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 64, 2, 0, 73, 0,194,131, 73,128,194,132, 73,
+ 0,195,133, 73,128,195,134, 73,128,195,135, 73, 64, 65,136, 73, 64,193,136, 73,
+ 0, 67,137, 73, 0,195,137, 9, 64, 0,131, 9, 64, 69,138,100, 0, 0, 0, 9,
+ 64, 0,139,100, 64, 0, 0, 9, 64,128,139, 69, 0, 6, 0,128, 0, 0, 0, 92,
+ 64, 0, 1, 69, 64, 6, 0,128, 0, 0, 0,193,128, 6, 0, 92, 64,128, 1, 30,
+ 0,128, 0, 27, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107,
+ 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,101,108,108,115, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 4, 8, 0,
+ 0, 0, 0, 0, 0, 0,110,110,110,110,110,110,115, 0, 4, 15, 0, 0, 0, 0,
+ 0, 0, 0,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, 13, 0, 0, 0, 0, 0,
+ 0, 0,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 4, 3, 0, 0, 0,
+ 0, 0, 0, 0,110,110, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,119,105,100,116,
+104, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 10, 0, 0,
+ 0, 0, 0, 0, 0,104,101,105,103,104,116, 95, 99, 98, 0, 4, 10, 0, 0, 0,
+ 0, 0, 0, 0,110,108,105,110,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0,110, 99,111,108,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0,104,115,112, 97,110, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,118,
+115,112, 97,110, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,
+108,117,100,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,101,108,
+108,115, 46,104, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,100,114, 97,119,
+ 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 0,
+ 9, 64, 64,128, 30, 0,128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0,
+ 0,114,101,112, 97,105,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69,
+ 83, 0, 0, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 1, 0,
+ 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0,
+ 0, 29, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0, 67,101,108,108,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 28, 0, 0, 0,
+ 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0,
+ 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0,
+ 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0,
+ 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 25, 0, 0, 0, 23, 0,
+ 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0,
+ 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0,
+ 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 17,
+ 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cells_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/cells_le64.loh b/iup/srclua5/loh/cells_le64.loh
new file mode 100755
index 0000000..0a49dbc
--- /dev/null
+++ b/iup/srclua5/loh/cells_le64.loh
@@ -0,0 +1,64 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/cells_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/cells_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 29, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 64, 2, 0, 73, 0,194,131, 73,128,194,132, 73,
+ 0,195,133, 73,128,195,134, 73,128,195,135, 73, 64, 65,136, 73, 64,193,136, 73,
+ 0, 67,137, 73, 0,195,137, 9, 64, 0,131, 9, 64, 69,138,100, 0, 0, 0, 9,
+ 64, 0,139,100, 64, 0, 0, 9, 64,128,139, 69, 0, 6, 0,128, 0, 0, 0, 92,
+ 64, 0, 1, 69, 64, 6, 0,128, 0, 0, 0,193,128, 6, 0, 92, 64,128, 1, 30,
+ 0,128, 0, 27, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107,
+ 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,101,108,108,115, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 4, 8, 0,
+ 0, 0, 0, 0, 0, 0,110,110,110,110,110,110,115, 0, 4, 15, 0, 0, 0, 0,
+ 0, 0, 0,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, 13, 0, 0, 0, 0, 0,
+ 0, 0,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 4, 3, 0, 0, 0,
+ 0, 0, 0, 0,110,110, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,119,105,100,116,
+104, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 10, 0, 0,
+ 0, 0, 0, 0, 0,104,101,105,103,104,116, 95, 99, 98, 0, 4, 10, 0, 0, 0,
+ 0, 0, 0, 0,110,108,105,110,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0,110, 99,111,108,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0,104,115,112, 97,110, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,118,
+115,112, 97,110, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,
+108,117,100,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,101,108,
+108,115, 46,104, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,100,114, 97,119,
+ 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 0,
+ 9, 64, 64,128, 30, 0,128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0,
+ 0,114,101,112, 97,105,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69,
+ 83, 0, 0, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 1, 0,
+ 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0,
+ 0, 29, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0, 67,101,108,108,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 28, 0, 0, 0,
+ 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0,
+ 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0,
+ 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0,
+ 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 25, 0, 0, 0, 23, 0,
+ 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0,
+ 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0,
+ 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 17,
+ 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cells_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/cells_le64w.loh b/iup/srclua5/loh/cells_le64w.loh
new file mode 100755
index 0000000..ed300df
--- /dev/null
+++ b/iup/srclua5/loh/cells_le64w.loh
@@ -0,0 +1,64 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/cells_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/cells_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 29, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 64, 2, 0, 73, 0,194,131, 73,128,194,132, 73,
+ 0,195,133, 73,128,195,134, 73,128,195,135, 73, 64, 65,136, 73, 64,193,136, 73,
+ 0, 67,137, 73, 0,195,137, 9, 64, 0,131, 9, 64, 69,138,100, 0, 0, 0, 9,
+ 64, 0,139,100, 64, 0, 0, 9, 64,128,139, 69, 0, 6, 0,128, 0, 0, 0, 92,
+ 64, 0, 1, 69, 64, 6, 0,128, 0, 0, 0,193,128, 6, 0, 92, 64,128, 1, 30,
+ 0,128, 0, 27, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107,
+ 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,101,108,108,115, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 4, 8, 0,
+ 0, 0, 0, 0, 0, 0,110,110,110,110,110,110,115, 0, 4, 15, 0, 0, 0, 0,
+ 0, 0, 0,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, 13, 0, 0, 0, 0, 0,
+ 0, 0,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 4, 3, 0, 0, 0,
+ 0, 0, 0, 0,110,110, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,119,105,100,116,
+104, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 10, 0, 0,
+ 0, 0, 0, 0, 0,104,101,105,103,104,116, 95, 99, 98, 0, 4, 10, 0, 0, 0,
+ 0, 0, 0, 0,110,108,105,110,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0,110, 99,111,108,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0,104,115,112, 97,110, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,118,
+115,112, 97,110, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,
+108,117,100,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,101,108,
+108,115, 46,104, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,100,114, 97,119,
+ 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 0,
+ 9, 64, 64,128, 30, 0,128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0,
+ 0,114,101,112, 97,105,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69,
+ 83, 0, 0, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 1, 0,
+ 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0,
+ 0, 29, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0, 67,101,108,108,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 28, 0, 0, 0,
+ 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0,
+ 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0,
+ 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0,
+ 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 25, 0, 0, 0, 23, 0,
+ 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0,
+ 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0,
+ 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 17,
+ 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cells_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/clipboard.loh b/iup/srclua5/loh/clipboard.loh
new file mode 100644
index 0000000..0f5d067
--- /dev/null
+++ b/iup/srclua5/loh/clipboard.loh
@@ -0,0 +1,36 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/clipboard.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/clipboard.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 15, 0, 0, 0, 64, 99,108,105,
+112, 98,111, 97,114,100, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9,
+ 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128,
+ 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4,
+ 5, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0, 0, 0, 99,108,105,112, 98,111,
+ 97,114,100, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116,
+ 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115,
+ 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0,
+ 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0,
+ 0, 4, 10, 0, 0, 0, 67,108,105,112, 98,111, 97,114,100, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0,
+ 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5, 0,
+ 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/clipboard.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/clipboard_be32.loh b/iup/srclua5/loh/clipboard_be32.loh
new file mode 100755
index 0000000..96be360
--- /dev/null
+++ b/iup/srclua5/loh/clipboard_be32.loh
@@ -0,0 +1,36 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/clipboard_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/clipboard_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 15, 64, 99,108,105,
+112, 98,111, 97,114,100, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 0, 0, 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129,
+ 0, 64, 9,130, 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,
+128, 64, 9, 0, 2, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0,
+ 0, 0,128, 0, 2,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4,
+ 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 10, 99,108,105,112, 98,111,
+ 97,114,100, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0,
+ 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,
+110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116,
+ 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115,
+ 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 2, 0, 3, 0, 0, 0,
+ 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0,
+ 1, 4, 0, 0, 0, 10, 67,108,105,112, 98,111, 97,114,100, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14,
+ 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0,
+ 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0,
+ 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0,
+ 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0,
+ 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/clipboard_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/clipboard_be64.loh b/iup/srclua5/loh/clipboard_be64.loh
new file mode 100644
index 0000000..b7566e7
--- /dev/null
+++ b/iup/srclua5/loh/clipboard_be64.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/clipboard_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/clipboard_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,108,105,112, 98,111, 97,114,100, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,
+192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100,
+ 0, 0, 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+ 64, 2, 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0,
+ 0, 0, 0, 0, 0, 0, 99,108,105,112, 98,111, 97,114,100, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0,
+ 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0,
+ 0, 0, 67,108,105,112, 98,111, 97,114,100, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0,
+ 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16,
+ 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/clipboard_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/clipboard_le64.loh b/iup/srclua5/loh/clipboard_le64.loh
new file mode 100755
index 0000000..f4f856b
--- /dev/null
+++ b/iup/srclua5/loh/clipboard_le64.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/clipboard_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/clipboard_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,108,105,112, 98,111, 97,114,100, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,
+192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100,
+ 0, 0, 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+ 64, 2, 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0,
+ 0, 0, 0, 0, 0, 0, 99,108,105,112, 98,111, 97,114,100, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0,
+ 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0,
+ 0, 0, 67,108,105,112, 98,111, 97,114,100, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0,
+ 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16,
+ 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/clipboard_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/colorbar.loh b/iup/srclua5/loh/colorbar.loh
new file mode 100755
index 0000000..73e4cc3
--- /dev/null
+++ b/iup/srclua5/loh/colorbar.loh
@@ -0,0 +1,53 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbar.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/colorbar.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 14, 0, 0, 0, 64, 99,111,108,
+111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 31, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 1, 0, 73, 0,194,131,138, 64,128, 0,193,128,
+ 2, 0,137, 0,195,133,162, 64,128, 0, 73,128,128,132, 73, 0,194,134, 73,128,
+ 66,135, 9, 64, 0,131, 9, 0,196,135, 9,128,196,136, 65, 0, 5, 0, 71,192,
+ 4, 0, 65,128, 5, 0, 71, 64, 5, 0,100, 0, 0, 0, 9, 64,128,139, 69, 0,
+ 6, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 6, 0,128, 0, 0, 0,193,128,
+ 6, 0, 92, 64,128, 1, 30, 0,128, 0, 27, 0, 0, 0, 4, 5, 0, 0, 0,110,
+105, 99,107, 0, 4, 9, 0, 0, 0, 99,111,108,111,114, 98, 97,114, 0, 4, 7,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69,
+ 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0,
+ 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0,
+ 0,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 3, 0, 0, 0,110,110, 0, 4,
+ 8, 0, 0, 0, 99,101,108,108, 95, 99, 98, 0, 4, 2, 0, 0, 0,110, 0, 4,
+ 4, 0, 0, 0,114,101,116, 0, 4, 2, 0, 0, 0,115, 0, 4, 10, 0, 0, 0,
+115,119,105,116, 99,104, 95, 99, 98, 0, 4, 12, 0, 0, 0,101,120,116,101,110,
+100,101,100, 95, 99, 98, 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101,
+ 0, 4, 9, 0, 0, 0, 67,111,108,111,114, 98, 97,114, 0, 4, 8, 0, 0, 0,
+105,110, 99,108,117,100,101, 0, 4, 14, 0, 0, 0,105,117,112, 99,111,110,116,
+114,111,108,115, 46,104, 0, 4, 8, 0, 0, 0, 80, 82, 73, 77, 65, 82, 89, 0,
+ 3, 0, 0, 0, 0, 0, 0,240,191, 4, 10, 0, 0, 0, 83, 69, 67, 79, 78, 68,
+ 65, 82, 89, 0, 3, 0, 0, 0, 0, 0, 0, 0,192, 4, 14, 0, 0, 0, 99,114,
+101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112,
+ 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112,
+ 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0,
+ 23, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,
+157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 9, 0, 0,
+ 0, 67,111,108,111,114, 98, 97,114, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,
+110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0,
+ 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0,
+ 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0,
+ 15, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 23, 0, 0, 0, 21, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0,
+ 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 17, 0, 0, 0, 30, 0, 0,
+ 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbar.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/colorbar_be32.loh b/iup/srclua5/loh/colorbar_be32.loh
new file mode 100755
index 0000000..0d516ae
--- /dev/null
+++ b/iup/srclua5/loh/colorbar_be32.loh
@@ -0,0 +1,49 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbar_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/colorbar_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 14, 64, 99,111,108,
+111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 0, 0, 0, 27, 0, 1,128, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0,
+ 64, 9,130, 65, 64, 9, 0, 1, 0, 74,131,194, 0, 73, 0,128, 64,138, 0, 2,
+128,193,133,195, 0,137, 0,128, 64,162,132,128,128, 73,134,194, 0, 73,135, 66,
+128, 73,131, 0, 64, 9,135,196, 0, 9,136,196,128, 9, 0, 0, 0,100,137,128,
+ 64, 9, 0, 5, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 5, 64, 69, 0, 0,
+ 0,128, 0, 5,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 23, 4, 0,
+ 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 9, 99,111,108,111,114, 98, 97,
+114, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0,
+ 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0,
+ 4, 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 0, 0, 0, 3,
+110,110, 0, 4, 0, 0, 0, 8, 99,101,108,108, 95, 99, 98, 0, 4, 0, 0, 0,
+ 2,110, 0, 4, 0, 0, 0, 4,114,101,116, 0, 4, 0, 0, 0, 2,115, 0, 4,
+ 0, 0, 0, 10,115,119,105,116, 99,104, 95, 99, 98, 0, 4, 0, 0, 0, 12,101,
+120,116,101,110,100,101,100, 95, 99, 98, 0, 4, 0, 0, 0, 9,102,117,110, 99,
+110, 97,109,101, 0, 4, 0, 0, 0, 9, 67,111,108,111,114, 98, 97,114, 0, 4,
+ 0, 0, 0, 8,105,110, 99,108,117,100,101, 0, 4, 0, 0, 0, 14,105,117,112,
+ 99,111,108,111,114, 98, 97,114, 46,104, 0, 4, 0, 0, 0, 14, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,
+103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,
+112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,
+105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0,
+ 0, 20, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192, 64,198, 1, 0,
+ 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 9, 67,
+111,108,111,114, 98, 97,114, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19,
+ 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0,
+ 0, 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0,
+ 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0,
+ 0, 15, 0, 0, 0, 20, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0,
+ 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0,
+ 0, 23, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 17, 0,
+ 0, 0, 26, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbar_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/colorbar_be64.loh b/iup/srclua5/loh/colorbar_be64.loh
new file mode 100755
index 0000000..e16bce6
--- /dev/null
+++ b/iup/srclua5/loh/colorbar_be64.loh
@@ -0,0 +1,59 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbar_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/colorbar_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 31, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192,
+ 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 1, 0, 73, 0,194,131,138, 64,
+128, 0,193,128, 2, 0,137, 0,195,133,162, 64,128, 0, 73,128,128,132, 73, 0,
+194,134, 73,128, 66,135, 9, 64, 0,131, 9, 0,196,135, 9,128,196,136, 65, 0,
+ 5, 0, 71,192, 4, 0, 65,128, 5, 0, 71, 64, 5, 0,100, 0, 0, 0, 9, 64,
+128,139, 69, 0, 6, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 6, 0,128, 0,
+ 0, 0,193,128, 6, 0, 92, 64,128, 1, 30, 0,128, 0, 27, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99,111,108,111,114, 98, 97,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69,
+ 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0,
+ 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+ 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,115,101,108,
+101, 99,116, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0, 99,101,108,108, 95, 99, 98, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0,
+ 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,
+115,119,105,116, 99,104, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,101,
+120,116,101,110,100,101,100, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111,
+108,111,114, 98, 97,114, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,
+117,100,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,111,108,111,
+114, 98, 97,114, 46,104, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 80, 82, 73, 77,
+ 65, 82, 89, 0, 3, 0, 0, 0, 0, 0, 0,240,191, 4, 10, 0, 0, 0, 0, 0,
+ 0, 0, 83, 69, 67, 79, 78, 68, 65, 82, 89, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+192, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,
+133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0,
+ 2, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 98, 97,
+114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 0, 0,
+ 0, 0, 5, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0,
+ 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
+ 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
+ 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0,
+ 10, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0,
+ 14, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0,
+ 19, 0, 0, 0, 23, 0, 0, 0, 21, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0,
+ 26, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108,
+ 0, 17, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbar_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/colorbar_le64.loh b/iup/srclua5/loh/colorbar_le64.loh
new file mode 100755
index 0000000..83d07b1
--- /dev/null
+++ b/iup/srclua5/loh/colorbar_le64.loh
@@ -0,0 +1,55 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbar_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/colorbar_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 27, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192,
+ 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 1, 0, 73, 0,194,131,138, 64,
+128, 0,193,128, 2, 0,137, 0,195,133,162, 64,128, 0, 73,128,128,132, 73, 0,
+194,134, 73,128, 66,135, 9, 64, 0,131, 9, 0,196,135, 9,128,196,136,100, 0,
+ 0, 0, 9, 64,128,137, 69, 0, 5, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64,
+ 5, 0,128, 0, 0, 0,193,128, 5, 0, 92, 64,128, 1, 30, 0,128, 0, 23, 0,
+ 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,111,108,111,114, 98, 97,114, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0,
+ 0,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,
+110,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,101,108,108, 95, 99, 98, 0,
+ 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,
+114,101,116, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 10, 0, 0, 0,
+ 0, 0, 0, 0,115,119,105,116, 99,104, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0,101,120,116,101,110,100,101,100, 95, 99, 98, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 67,111,108,111,114, 98, 97,114, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+105,110, 99,108,117,100,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+ 99,111,108,111,114, 98, 97,114, 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116,
+ 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,
+115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,
+116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 20, 0,
+ 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0,
+ 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 67,111,108,111,114, 98, 97,114, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0,
+ 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0,
+ 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 11, 0,
+ 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 20, 0,
+ 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0,
+ 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 17, 0, 0, 0, 26,
+ 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbar_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/colorbar_le64w.loh b/iup/srclua5/loh/colorbar_le64w.loh
new file mode 100755
index 0000000..c599965
--- /dev/null
+++ b/iup/srclua5/loh/colorbar_le64w.loh
@@ -0,0 +1,59 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbar_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/colorbar_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 31, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192,
+ 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 1, 0, 73, 0,194,131,138, 64,
+128, 0,193,128, 2, 0,137, 0,195,133,162, 64,128, 0, 73,128,128,132, 73, 0,
+194,134, 73,128, 66,135, 9, 64, 0,131, 9, 0,196,135, 9,128,196,136, 65, 0,
+ 5, 0, 71,192, 4, 0, 65,128, 5, 0, 71, 64, 5, 0,100, 0, 0, 0, 9, 64,
+128,139, 69, 0, 6, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 6, 0,128, 0,
+ 0, 0,193,128, 6, 0, 92, 64,128, 1, 30, 0,128, 0, 27, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99,111,108,111,114, 98, 97,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69,
+ 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0,
+ 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+ 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,115,101,108,
+101, 99,116, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0, 99,101,108,108, 95, 99, 98, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0,
+ 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,
+115,119,105,116, 99,104, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,101,
+120,116,101,110,100,101,100, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111,
+108,111,114, 98, 97,114, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,
+117,100,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,111,108,111,
+114, 98, 97,114, 46,104, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 80, 82, 73, 77,
+ 65, 82, 89, 0, 3, 0, 0, 0, 0, 0, 0,240,191, 4, 10, 0, 0, 0, 0, 0,
+ 0, 0, 83, 69, 67, 79, 78, 68, 65, 82, 89, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+192, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,
+133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0,
+ 2, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 98, 97,
+114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 0, 0,
+ 0, 0, 5, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0,
+ 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
+ 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
+ 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0,
+ 10, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0,
+ 14, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0,
+ 19, 0, 0, 0, 23, 0, 0, 0, 21, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0,
+ 26, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108,
+ 0, 17, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbar_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/colorbrowser.loh b/iup/srclua5/loh/colorbrowser.loh
new file mode 100755
index 0000000..9dd12d5
--- /dev/null
+++ b/iup/srclua5/loh/colorbrowser.loh
@@ -0,0 +1,45 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbrowser.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/colorbrowser.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 18, 0, 0, 0, 64, 99,111,108,
+111,114, 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 21, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192,
+ 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,
+194,132, 9, 64, 0,131, 9,192, 66,133, 9, 64, 67,134,100, 0, 0, 0, 9, 64,
+ 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 4, 0,128, 0,
+ 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, 0, 0, 4, 5,
+ 0, 0, 0,110,105, 99,107, 0, 4, 13, 0, 0, 0, 99,111,108,111,114, 98,114,
+111,119,115,101,114, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98,
+ 97, 99,107, 0, 4, 8, 0, 0, 0,100,114, 97,103, 95, 99, 98, 0, 4, 4, 0,
+ 0, 0, 99, 99, 99, 0, 4, 10, 0, 0, 0, 99,104, 97,110,103,101, 95, 99, 98,
+ 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 13, 0, 0, 0,
+ 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 4, 8, 0, 0, 0,105,110,
+ 99,108,117,100,101, 0, 4, 14, 0, 0, 0,105,117,112, 99,111,110,116,114,111,
+108,115, 46,104, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114,
+ 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108,
+ 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4,
+ 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0,
+ 30, 0,128, 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 67,111,108,111,114, 66,114,
+111,119,115,101,114, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 0, 0,
+ 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,
+ 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0,
+ 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0,
+ 16, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0,
+ 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0,
+ 5, 0, 0, 0, 99,116,114,108, 0, 11, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbrowser.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/colorbrowser_be32.loh b/iup/srclua5/loh/colorbrowser_be32.loh
new file mode 100755
index 0000000..fff8f43
--- /dev/null
+++ b/iup/srclua5/loh/colorbrowser_be32.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbrowser_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/colorbrowser_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 18, 64, 99,111,108,
+111,114, 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 0, 0, 0, 21, 0, 1,128, 10,128, 64, 64, 9, 0, 0,
+192, 69,129, 0, 64, 9,130, 65, 64, 9, 0, 0,128, 74,131,194, 0, 73,132,194,
+ 0, 73,131, 0, 64, 9,133, 66,192, 9,134, 67, 64, 9, 0, 0, 0,100,135, 0,
+ 64, 9, 0, 3,192, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 4, 0, 69, 0, 0,
+ 0,128, 0, 4, 64,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 18, 4, 0,
+ 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 13, 99,111,108,111,114, 98,114,
+111,119,115,101,114, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0,
+ 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,
+105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98,
+ 97, 99,107, 0, 4, 0, 0, 0, 8,100,114, 97,103, 95, 99, 98, 0, 4, 0, 0,
+ 0, 4, 99, 99, 99, 0, 4, 0, 0, 0, 10, 99,104, 97,110,103,101, 95, 99, 98,
+ 0, 4, 0, 0, 0, 9,102,117,110, 99,110, 97,109,101, 0, 4, 0, 0, 0, 13,
+ 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 4, 0, 0, 0, 8,105,110,
+ 99,108,117,100,101, 0, 4, 0, 0, 0, 8,105,117,112, 99, 98, 46,104, 0, 4,
+ 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0,
+ 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116,
+ 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0,
+ 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0,
+ 0,133, 0,192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0,
+ 0, 2, 4, 0, 0, 0, 13, 67,111,108,111,114, 66,114,111,119,115,101,114, 0,
+ 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18,
+ 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 21, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0,
+ 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0,
+ 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0,
+ 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,
+114,108, 0, 0, 0, 0, 11, 0, 0, 0, 20, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbrowser_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/colorbrowser_be64.loh b/iup/srclua5/loh/colorbrowser_be64.loh
new file mode 100755
index 0000000..0f25250
--- /dev/null
+++ b/iup/srclua5/loh/colorbrowser_be64.loh
@@ -0,0 +1,49 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbrowser_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/colorbrowser_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,108,111,114, 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 21, 0, 0, 0, 10,128, 1, 0, 9, 64,
+ 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,
+194,131, 73, 0,194,132, 9, 64, 0,131, 9,192, 66,133, 9, 64, 67,134,100, 0,
+ 0, 0, 9, 64, 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0,
+ 4, 0,128, 0, 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0,
+ 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 13, 0, 0,
+ 0, 0, 0, 0, 0, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0,
+ 0, 0, 0, 0, 0,100,114, 97,103, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0,
+ 0, 0, 99, 99, 99, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99,104, 97,110,103,
+101, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,
+109,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 66,114,111,
+119,115,101,114, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,
+101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99, 98, 46,104, 0, 4,
+ 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,
+116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,
+101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0,
+ 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0,
+ 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 66,114,111,119,
+115,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 21, 0,
+ 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0,
+ 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,
+114,108, 0, 11, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbrowser_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/colorbrowser_le64.loh b/iup/srclua5/loh/colorbrowser_le64.loh
new file mode 100755
index 0000000..5ea6381
--- /dev/null
+++ b/iup/srclua5/loh/colorbrowser_le64.loh
@@ -0,0 +1,49 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbrowser_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/colorbrowser_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,108,111,114, 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 21, 0, 0, 0, 10,128, 1, 0, 9, 64,
+ 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,
+194,131, 73, 0,194,132, 9, 64, 0,131, 9,192, 66,133, 9, 64, 67,134,100, 0,
+ 0, 0, 9, 64, 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0,
+ 4, 0,128, 0, 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0,
+ 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 13, 0, 0,
+ 0, 0, 0, 0, 0, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0,
+ 0, 0, 0, 0, 0,100,114, 97,103, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0,
+ 0, 0, 99, 99, 99, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99,104, 97,110,103,
+101, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,
+109,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 66,114,111,
+119,115,101,114, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,
+101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99, 98, 46,104, 0, 4,
+ 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,
+116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,
+101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0,
+ 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0,
+ 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 66,114,111,119,
+115,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 21, 0,
+ 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0,
+ 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,
+114,108, 0, 11, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbrowser_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/colorbrowser_le64w.loh b/iup/srclua5/loh/colorbrowser_le64w.loh
new file mode 100755
index 0000000..f4625d8
--- /dev/null
+++ b/iup/srclua5/loh/colorbrowser_le64w.loh
@@ -0,0 +1,49 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbrowser_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/colorbrowser_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,108,111,114, 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 21, 0, 0, 0, 10,128, 1, 0, 9, 64,
+ 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,
+194,131, 73, 0,194,132, 9, 64, 0,131, 9,192, 66,133, 9, 64, 67,134,100, 0,
+ 0, 0, 9, 64, 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0,
+ 4, 0,128, 0, 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0,
+ 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 13, 0, 0,
+ 0, 0, 0, 0, 0, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0,
+ 0, 0, 0, 0, 0,100,114, 97,103, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0,
+ 0, 0, 99, 99, 99, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99,104, 97,110,103,
+101, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,
+109,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 66,114,111,
+119,115,101,114, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,
+101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99, 98, 46,104, 0, 4,
+ 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,
+116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,
+101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0,
+ 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0,
+ 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 66,114,111,119,
+115,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 21, 0,
+ 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0,
+ 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,
+114,108, 0, 11, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbrowser_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/colordlg.loh b/iup/srclua5/loh/colordlg.loh
new file mode 100755
index 0000000..4bff37b
--- /dev/null
+++ b/iup/srclua5/loh/colordlg.loh
@@ -0,0 +1,54 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/colordlg.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/colordlg.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 14, 0, 0, 0, 64, 99,111,108,
+111,114,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,132,100, 0,
+ 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, 0, 0, 9, 64,
+128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0,
+ 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5,
+ 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, 0, 99,111,108,111,114,100,108,
+103, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0,
+ 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0,
+ 4, 9, 0, 0, 0, 67,111,108,111,114, 68,108,103, 0, 4, 9, 0, 0, 0, 99,
+ 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0,112,111,112,117,112, 0, 4,
+ 8, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,
+119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14,
+ 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64,
+ 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4,
+ 6, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0,
+ 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0,
+ 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0,
+ 0, 5, 0, 0, 0, 2, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,
+ 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0,
+ 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0,
+ 0, 4, 8, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0,
+ 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0,
+ 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 67,111,108,111,114, 68,
+108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21,
+ 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115,
+ 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0,
+ 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0,
+ 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0,
+ 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0,
+ 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/colordlg.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/colordlg_be32.loh b/iup/srclua5/loh/colordlg_be32.loh
new file mode 100755
index 0000000..166799a
--- /dev/null
+++ b/iup/srclua5/loh/colordlg_be32.loh
@@ -0,0 +1,54 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/colordlg_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/colordlg_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 14, 64, 99,111,108,
+111,114,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 0, 0, 0, 22, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0,
+ 64, 9,130, 65, 64, 9,131, 65,192, 9, 0, 0, 0, 74,132, 0, 64, 9, 0, 0,
+ 0,100,132,128, 64, 9, 0, 0, 64,100,133, 0, 64, 9, 0, 0,128,100,133,128,
+ 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 3, 64, 69, 0, 0,
+ 0,128, 0, 3,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 15, 4, 0,
+ 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 9, 99,111,108,111,114,100,108,
+103, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0,
+ 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9,102,117,110, 99,110, 97,109,101, 0,
+ 4, 0, 0, 0, 9, 67,111,108,111,114, 68,108,103, 0, 4, 0, 0, 0, 9, 99,
+ 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 6,112,111,112,117,112, 0, 4,
+ 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0, 14, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,
+119,105,100,103,101,116, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 12, 0,
+ 0, 0, 14, 0, 3, 0, 7, 0, 0, 0, 6, 0, 0, 0,197, 0, 0, 1, 0, 0,
+128, 1, 64, 1, 0, 1,128, 2, 0, 64,220, 0,128, 0, 30, 0, 0, 0, 1, 4,
+ 0, 0, 0, 6, 80,111,112,117,112, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0,
+ 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0,
+ 0, 14, 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 2,120, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 1, 0, 3, 0, 0, 0, 5, 0, 0, 0,
+ 69, 0, 0, 0,128, 1, 0, 0, 93, 0, 0, 0, 94, 0,128, 0, 30, 0, 0, 0,
+ 1, 4, 0, 0, 0, 8, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0,
+ 0, 18, 0, 0, 0, 1, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0,
+ 22, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,
+158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 9, 67,111,108,111,114, 68,
+108,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0,
+ 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0,
+ 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 8, 0, 0,
+ 0, 21, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/colordlg_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/colordlg_be64.loh b/iup/srclua5/loh/colordlg_be64.loh
new file mode 100755
index 0000000..90f29eb
--- /dev/null
+++ b/iup/srclua5/loh/colordlg_be64.loh
@@ -0,0 +1,60 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/colordlg_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/colordlg_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,108,111,114,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192,
+ 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64,
+ 0,132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128,
+ 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64,
+ 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0,
+ 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,111,108,111,114,100,108,103, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 67,111,108,111,114, 68,108,103, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+ 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,
+117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0,
+ 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197,
+ 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30,
+ 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,
+112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0,
+ 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0,
+ 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101,
+115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0,
+ 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111,
+108,111,114, 68,108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21,
+ 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0,
+ 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0,
+ 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0,
+ 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0,
+ 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/colordlg_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/colordlg_le64.loh b/iup/srclua5/loh/colordlg_le64.loh
new file mode 100755
index 0000000..834a8bd
--- /dev/null
+++ b/iup/srclua5/loh/colordlg_le64.loh
@@ -0,0 +1,60 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/colordlg_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/colordlg_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,108,111,114,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192,
+ 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64,
+ 0,132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128,
+ 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64,
+ 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0,
+ 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,111,108,111,114,100,108,103, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 67,111,108,111,114, 68,108,103, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+ 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,
+117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0,
+ 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197,
+ 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30,
+ 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,
+112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0,
+ 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0,
+ 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101,
+115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0,
+ 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111,
+108,111,114, 68,108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21,
+ 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0,
+ 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0,
+ 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0,
+ 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0,
+ 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/colordlg_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/colordlg_le64w.loh b/iup/srclua5/loh/colordlg_le64w.loh
new file mode 100755
index 0000000..6a612da
--- /dev/null
+++ b/iup/srclua5/loh/colordlg_le64w.loh
@@ -0,0 +1,60 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/colordlg_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/colordlg_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,108,111,114,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192,
+ 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64,
+ 0,132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128,
+ 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64,
+ 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0,
+ 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,111,108,111,114,100,108,103, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 67,111,108,111,114, 68,108,103, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+ 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,
+117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0,
+ 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197,
+ 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30,
+ 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,
+112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0,
+ 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0,
+ 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101,
+115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0,
+ 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111,
+108,111,114, 68,108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21,
+ 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0,
+ 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0,
+ 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0,
+ 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0,
+ 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/colordlg_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/constants.loh b/iup/srclua5/loh/constants.loh
new file mode 100755
index 0000000..a84103c
--- /dev/null
+++ b/iup/srclua5/loh/constants.loh
@@ -0,0 +1,102 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/constants.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/constants.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 15, 0, 0, 0, 64, 99,111,110,
+115,116, 97,110,116,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 2,102, 0, 0, 0, 1, 64, 0, 0, 7, 0, 0, 0, 1,192, 0, 0, 7,
+128, 0, 0, 1, 64, 1, 0, 7, 0, 1, 0, 1, 64, 1, 0, 7,128, 1, 0, 1,
+ 64, 1, 0, 7,192, 1, 0, 1, 64, 2, 0, 7, 0, 2, 0, 1,192, 2, 0, 7,
+128, 2, 0, 1, 64, 3, 0, 7, 0, 3, 0, 1,192, 3, 0, 7,128, 3, 0, 1,
+ 64, 4, 0, 7, 0, 4, 0, 1,192, 4, 0, 7,128, 4, 0, 1, 64, 5, 0, 7,
+ 0, 5, 0, 1,192, 5, 0, 7,128, 5, 0, 1, 64, 6, 0, 7, 0, 6, 0, 5,
+ 0, 4, 0, 7,128, 6, 0, 5,128, 4, 0, 7,192, 6, 0, 1,192, 0, 0, 7,
+ 0, 7, 0, 1, 64, 0, 0, 7, 64, 7, 0, 1,192, 7, 0, 7,128, 7, 0, 1,
+ 64, 8, 0, 7, 0, 8, 0, 1,192, 8, 0, 7,128, 8, 0, 1, 64, 9, 0, 7,
+ 0, 9, 0, 1,192, 9, 0, 7,128, 9, 0, 1, 64, 10, 0, 7, 0, 10, 0, 1,
+192, 10, 0, 7,128, 10, 0, 1, 64, 11, 0, 7, 0, 11, 0, 1,192, 11, 0, 7,
+128, 11, 0, 1, 64, 12, 0, 7, 0, 12, 0, 1,192, 0, 0, 7,128, 12, 0, 1,
+ 64, 0, 0, 7,192, 12, 0, 1,192, 7, 0, 7, 0, 13, 0, 1, 64, 8, 0, 7,
+ 64, 13, 0, 1,192, 8, 0, 7,128, 13, 0, 5, 0, 14, 0, 6, 64, 78, 0, 65,
+128, 14, 0, 28,128, 0, 1, 7,192, 13, 0, 5, 0, 14, 0, 6, 64, 78, 0, 65,
+ 0, 15, 0, 28,128, 0, 1, 7,192, 14, 0, 5, 0, 14, 0, 6, 64, 78, 0, 65,
+128, 15, 0, 28,128, 0, 1, 7, 64, 15, 0, 5, 0, 14, 0, 6, 64, 78, 0, 65,
+ 0, 16, 0, 28,128, 0, 1, 7,192, 15, 0, 5, 0, 14, 0, 6, 64, 78, 0, 65,
+128, 16, 0, 28,128, 0, 1, 7, 64, 16, 0, 1, 0, 17, 0, 7,192, 16, 0, 1,
+128, 17, 0, 7, 64, 17, 0, 1, 0, 18, 0, 7,192, 17, 0, 1,128, 18, 0, 7,
+ 64, 18, 0, 1, 0, 19, 0, 7,192, 18, 0, 30, 0,128, 0, 77, 0, 0, 0, 4,
+ 6, 0, 0, 0, 69, 82, 82, 79, 82, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4,
+ 8, 0, 0, 0, 78, 79, 69, 82, 82, 79, 82, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4, 7, 0, 0, 0, 79, 80, 69, 78, 69, 68, 0, 3, 0, 0, 0, 0, 0, 0,
+240,191, 4, 8, 0, 0, 0, 73, 78, 86, 65, 76, 73, 68, 0, 4, 7, 0, 0, 0,
+ 73, 71, 78, 79, 82, 69, 0, 4, 8, 0, 0, 0, 68, 69, 70, 65, 85, 76, 84, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0,192, 4, 6, 0, 0, 0, 67, 76, 79, 83, 69, 0,
+ 3, 0, 0, 0, 0, 0, 0, 8,192, 4, 9, 0, 0, 0, 67, 79, 78, 84, 73, 78,
+ 85, 69, 0, 3, 0, 0, 0, 0, 0, 0, 16,192, 4, 7, 0, 0, 0, 67, 69, 78,
+ 84, 69, 82, 0, 3, 0, 0, 0, 0,224,255,239, 64, 4, 5, 0, 0, 0, 76, 69,
+ 70, 84, 0, 3, 0, 0, 0, 0,192,255,239, 64, 4, 6, 0, 0, 0, 82, 73, 71,
+ 72, 84, 0, 3, 0, 0, 0, 0,160,255,239, 64, 4, 9, 0, 0, 0, 77, 79, 85,
+ 83, 69, 80, 79, 83, 0, 3, 0, 0, 0, 0,128,255,239, 64, 4, 8, 0, 0, 0,
+ 67, 85, 82, 82, 69, 78, 84, 0, 3, 0, 0, 0, 0, 96,255,239, 64, 4, 13, 0,
+ 0, 0, 67, 69, 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 3, 0, 0, 0, 0,
+ 64,255,239, 64, 4, 4, 0, 0, 0, 84, 79, 80, 0, 4, 7, 0, 0, 0, 66, 79,
+ 84, 84, 79, 77, 0, 4, 5, 0, 0, 0, 83, 66, 85, 80, 0, 4, 5, 0, 0, 0,
+ 83, 66, 68, 78, 0, 4, 7, 0, 0, 0, 83, 66, 80, 71, 85, 80, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 64, 4, 7, 0, 0, 0, 83, 66, 80, 71, 68, 78, 0, 3, 0,
+ 0, 0, 0, 0, 0, 8, 64, 4, 7, 0, 0, 0, 83, 66, 80, 79, 83, 86, 0, 3,
+ 0, 0, 0, 0, 0, 0, 16, 64, 4, 8, 0, 0, 0, 83, 66, 68, 82, 65, 71, 86,
+ 0, 3, 0, 0, 0, 0, 0, 0, 20, 64, 4, 7, 0, 0, 0, 83, 66, 76, 69, 70,
+ 84, 0, 3, 0, 0, 0, 0, 0, 0, 24, 64, 4, 8, 0, 0, 0, 83, 66, 82, 73,
+ 71, 72, 84, 0, 3, 0, 0, 0, 0, 0, 0, 28, 64, 4, 9, 0, 0, 0, 83, 66,
+ 80, 71, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0, 0, 0, 32, 64, 4, 10, 0, 0,
+ 0, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 3, 0, 0, 0, 0, 0, 0, 34, 64,
+ 4, 7, 0, 0, 0, 83, 66, 80, 79, 83, 72, 0, 3, 0, 0, 0, 0, 0, 0, 36,
+ 64, 4, 8, 0, 0, 0, 83, 66, 68, 82, 65, 71, 72, 0, 3, 0, 0, 0, 0, 0,
+ 0, 38, 64, 4, 5, 0, 0, 0, 83, 72, 79, 87, 0, 4, 8, 0, 0, 0, 82, 69,
+ 83, 84, 79, 82, 69, 0, 4, 9, 0, 0, 0, 77, 73, 78, 73, 77, 73, 90, 69, 0,
+ 4, 9, 0, 0, 0, 77, 65, 88, 73, 77, 73, 90, 69, 0, 4, 5, 0, 0, 0, 72,
+ 73, 68, 69, 0, 4, 8, 0, 0, 0, 66, 85, 84, 84, 79, 78, 49, 0, 4, 7, 0,
+ 0, 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 98,121,116,101, 0, 4,
+ 2, 0, 0, 0, 49, 0, 4, 8, 0, 0, 0, 66, 85, 84, 84, 79, 78, 50, 0, 4,
+ 2, 0, 0, 0, 50, 0, 4, 8, 0, 0, 0, 66, 85, 84, 84, 79, 78, 51, 0, 4,
+ 2, 0, 0, 0, 51, 0, 4, 8, 0, 0, 0, 66, 85, 84, 84, 79, 78, 52, 0, 4,
+ 2, 0, 0, 0, 52, 0, 4, 8, 0, 0, 0, 66, 85, 84, 84, 79, 78, 53, 0, 4,
+ 2, 0, 0, 0, 53, 0, 4, 11, 0, 0, 0, 77, 65, 83, 75, 95, 70, 76, 79, 65,
+ 84, 0, 4, 24, 0, 0, 0, 91, 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63,
+ 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 4, 12, 0, 0, 0, 77, 65, 83, 75,
+ 95, 85, 70, 76, 79, 65, 84, 0, 4, 18, 0, 0, 0, 40, 47,100, 43, 47, 46, 63,
+ 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 4, 12, 0, 0, 0, 77, 65, 83, 75,
+ 95, 69, 70, 76, 79, 65, 84, 0, 4, 40, 0, 0, 0, 91, 43, 47, 45, 93, 63, 40,
+ 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 40, 91,101, 69,
+ 93, 91, 43, 47, 45, 93, 63, 47,100, 43, 41, 63, 0, 4, 9, 0, 0, 0, 77, 65,
+ 83, 75, 95, 73, 78, 84, 0, 4, 10, 0, 0, 0, 91, 43, 47, 45, 93, 63, 47,100,
+ 43, 0, 4, 10, 0, 0, 0, 77, 65, 83, 75, 95, 85, 73, 78, 84, 0, 4, 4, 0,
+ 0, 0, 47,100, 43, 0, 0, 0, 0, 0,102, 0, 0, 0, 6, 0, 0, 0, 6, 0,
+ 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 22, 0,
+ 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0,
+ 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 29, 0,
+ 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0,
+ 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 38, 0,
+ 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 40, 0, 0, 0, 41, 0,
+ 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 43, 0,
+ 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 50, 0,
+ 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0,
+ 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 59, 0,
+ 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 60, 0,
+ 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0,
+ 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 62, 0,
+ 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0,
+ 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 68, 0,
+ 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 70, 0,
+ 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/constants.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/constants_be32.loh b/iup/srclua5/loh/constants_be32.loh
new file mode 100755
index 0000000..eff05cc
--- /dev/null
+++ b/iup/srclua5/loh/constants_be32.loh
@@ -0,0 +1,88 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/constants_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/constants_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 15, 64, 99,111,110,
+115,116, 97,110,116,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 2, 0, 0, 0, 92, 0, 0, 64, 1, 0, 0, 0, 7, 0, 0,192, 1, 0,
+ 0,128, 7, 0, 1, 64, 1, 0, 1, 0, 7, 0, 1,192, 1, 0, 1,128, 7, 0,
+ 2, 64, 1, 0, 2, 0, 7, 0, 2,192, 1, 0, 2,128, 7, 0, 3, 64, 1, 0,
+ 3, 0, 7, 0, 3,192, 1, 0, 3,128, 7, 0, 4, 64, 1, 0, 4, 0, 7, 0,
+ 4,192, 1, 0, 4,128, 7, 0, 2,128, 5, 0, 5, 0, 7, 0, 3, 0, 5, 0,
+ 5, 64, 7, 0, 5,192, 1, 0, 5,128, 7, 0, 6, 64, 1, 0, 6, 0, 7, 0,
+ 6,192, 1, 0, 6,128, 7, 0, 7, 64, 1, 0, 7, 0, 7, 0, 7,192, 1, 0,
+ 7,128, 7, 0, 8, 64, 1, 0, 8, 0, 7, 0, 8,192, 1, 0, 8,128, 7, 0,
+ 9, 64, 1, 0, 9, 0, 7, 0, 9,192, 1, 0, 9,128, 7, 0, 10, 64, 1, 0,
+ 10, 0, 7, 0, 10,192, 1, 0, 10,128, 7, 0, 11, 64, 1, 0, 11, 0, 7, 0,
+ 5,192, 1, 0, 11,128, 7, 0, 6, 64, 1, 0, 11,192, 7, 0, 6,192, 1, 0,
+ 12, 0, 7, 0, 7, 64, 1, 0, 12, 64, 7, 0, 7,192, 1, 0, 12,128, 7, 0,
+ 13, 0, 5, 0, 77, 64, 6, 0, 13,128, 65, 1, 0,128, 28, 0, 12,192, 7, 0,
+ 13, 0, 5, 0, 77, 64, 6, 0, 14, 0, 65, 1, 0,128, 28, 0, 13,192, 7, 0,
+ 13, 0, 5, 0, 77, 64, 6, 0, 14,128, 65, 1, 0,128, 28, 0, 14, 64, 7, 0,
+ 13, 0, 5, 0, 77, 64, 6, 0, 15, 0, 65, 1, 0,128, 28, 0, 14,192, 7, 0,
+ 13, 0, 5, 0, 77, 64, 6, 0, 15,128, 65, 1, 0,128, 28, 0, 15, 64, 7, 0,
+ 6, 64, 1, 0, 15,192, 7, 0, 5,192, 1, 0, 16, 0, 7, 0, 0, 64, 1, 0,
+ 16, 64, 7, 0, 0, 64, 1, 0, 16,128, 7, 0,128, 0, 30, 0, 0, 0, 67, 4,
+ 0, 0, 0, 7, 73, 71, 78, 79, 82, 69, 0, 3,191,240, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 8, 68, 69, 70, 65, 85, 76, 84, 0, 3,192, 0, 0, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 6, 67, 76, 79, 83, 69, 0, 3,192, 8, 0, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 9, 67, 79, 78, 84, 73, 78, 85, 69, 0, 3,192, 16, 0,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 3, 64,239,
+255,224, 0, 0, 0, 0, 4, 0, 0, 0, 5, 76, 69, 70, 84, 0, 3, 64,239,255,
+192, 0, 0, 0, 0, 4, 0, 0, 0, 6, 82, 73, 71, 72, 84, 0, 3, 64,239,255,
+160, 0, 0, 0, 0, 4, 0, 0, 0, 9, 77, 79, 85, 83, 69, 80, 79, 83, 0, 3,
+ 64,239,255,128, 0, 0, 0, 0, 4, 0, 0, 0, 8, 67, 85, 82, 82, 69, 78, 84,
+ 0, 3, 64,239,255, 96, 0, 0, 0, 0, 4, 0, 0, 0, 13, 67, 69, 78, 84, 69,
+ 82, 80, 65, 82, 69, 78, 84, 0, 3, 64,239,255, 64, 0, 0, 0, 0, 4, 0, 0,
+ 0, 4, 84, 79, 80, 0, 4, 0, 0, 0, 7, 66, 79, 84, 84, 79, 77, 0, 4, 0,
+ 0, 0, 5, 83, 66, 85, 80, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 5, 83, 66, 68, 78, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 7, 83, 66, 80, 71, 85, 80, 0, 3, 64, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 7, 83, 66, 80, 71, 68, 78, 0, 3, 64, 8, 0, 0, 0, 0, 0, 0, 4, 0,
+ 0, 0, 7, 83, 66, 80, 79, 83, 86, 0, 3, 64, 16, 0, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 8, 83, 66, 68, 82, 65, 71, 86, 0, 3, 64, 20, 0, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 7, 83, 66, 76, 69, 70, 84, 0, 3, 64, 24, 0, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 8, 83, 66, 82, 73, 71, 72, 84, 0, 3, 64, 28, 0, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 9, 83, 66, 80, 71, 76, 69, 70, 84, 0, 3, 64,
+ 32, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 10, 83, 66, 80, 71, 82, 73, 71, 72,
+ 84, 0, 3, 64, 34, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 7, 83, 66, 80, 79,
+ 83, 72, 0, 3, 64, 36, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 8, 83, 66, 68,
+ 82, 65, 71, 72, 0, 3, 64, 38, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 83,
+ 72, 79, 87, 0, 4, 0, 0, 0, 8, 82, 69, 83, 84, 79, 82, 69, 0, 4, 0, 0,
+ 0, 9, 77, 73, 78, 73, 77, 73, 90, 69, 0, 4, 0, 0, 0, 9, 77, 65, 88, 73,
+ 77, 73, 90, 69, 0, 4, 0, 0, 0, 5, 72, 73, 68, 69, 0, 4, 0, 0, 0, 8,
+ 66, 85, 84, 84, 79, 78, 49, 0, 4, 0, 0, 0, 7,115,116,114,105,110,103, 0,
+ 4, 0, 0, 0, 5, 98,121,116,101, 0, 4, 0, 0, 0, 2, 49, 0, 4, 0, 0,
+ 0, 8, 66, 85, 84, 84, 79, 78, 50, 0, 4, 0, 0, 0, 2, 50, 0, 4, 0, 0,
+ 0, 8, 66, 85, 84, 84, 79, 78, 51, 0, 4, 0, 0, 0, 2, 51, 0, 4, 0, 0,
+ 0, 8, 66, 85, 84, 84, 79, 78, 52, 0, 4, 0, 0, 0, 2, 52, 0, 4, 0, 0,
+ 0, 8, 66, 85, 84, 84, 79, 78, 53, 0, 4, 0, 0, 0, 2, 53, 0, 4, 0, 0,
+ 0, 6, 69, 82, 82, 79, 82, 0, 4, 0, 0, 0, 8, 78, 79, 69, 82, 82, 79, 82,
+ 0, 4, 0, 0, 0, 7, 79, 80, 69, 78, 69, 68, 0, 4, 0, 0, 0, 8, 73, 78,
+ 86, 65, 76, 73, 68, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 6, 0, 0,
+ 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0,
+ 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0,
+ 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0,
+ 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0,
+ 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0,
+ 0, 29, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0,
+ 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0,
+ 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0,
+ 0, 37, 0, 0, 0, 37, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0,
+ 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0,
+ 0, 46, 0, 0, 0, 46, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0,
+ 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0,
+ 0, 52, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0,
+ 0, 53, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0,
+ 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0,
+ 0, 55, 0, 0, 0, 55, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0,
+ 0, 61, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,
+ 0, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/constants_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/constants_be64.loh b/iup/srclua5/loh/constants_be64.loh
new file mode 100755
index 0000000..4f434b6
--- /dev/null
+++ b/iup/srclua5/loh/constants_be64.loh
@@ -0,0 +1,113 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/constants_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/constants_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,110,115,116, 97,110,116,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2,102, 0, 0, 0, 1, 64, 0, 0, 7, 0, 0, 0, 1,
+192, 0, 0, 7,128, 0, 0, 1, 64, 1, 0, 7, 0, 1, 0, 1, 64, 1, 0, 7,
+128, 1, 0, 1, 64, 1, 0, 7,192, 1, 0, 1, 64, 2, 0, 7, 0, 2, 0, 1,
+192, 2, 0, 7,128, 2, 0, 1, 64, 3, 0, 7, 0, 3, 0, 1,192, 3, 0, 7,
+128, 3, 0, 1, 64, 4, 0, 7, 0, 4, 0, 1,192, 4, 0, 7,128, 4, 0, 1,
+ 64, 5, 0, 7, 0, 5, 0, 1,192, 5, 0, 7,128, 5, 0, 1, 64, 6, 0, 7,
+ 0, 6, 0, 5, 0, 4, 0, 7,128, 6, 0, 5,128, 4, 0, 7,192, 6, 0, 1,
+192, 0, 0, 7, 0, 7, 0, 1, 64, 0, 0, 7, 64, 7, 0, 1,192, 7, 0, 7,
+128, 7, 0, 1, 64, 8, 0, 7, 0, 8, 0, 1,192, 8, 0, 7,128, 8, 0, 1,
+ 64, 9, 0, 7, 0, 9, 0, 1,192, 9, 0, 7,128, 9, 0, 1, 64, 10, 0, 7,
+ 0, 10, 0, 1,192, 10, 0, 7,128, 10, 0, 1, 64, 11, 0, 7, 0, 11, 0, 1,
+192, 11, 0, 7,128, 11, 0, 1, 64, 12, 0, 7, 0, 12, 0, 1,192, 0, 0, 7,
+128, 12, 0, 1, 64, 0, 0, 7,192, 12, 0, 1,192, 7, 0, 7, 0, 13, 0, 1,
+ 64, 8, 0, 7, 64, 13, 0, 1,192, 8, 0, 7,128, 13, 0, 5, 0, 14, 0, 6,
+ 64, 78, 0, 65,128, 14, 0, 28,128, 0, 1, 7,192, 13, 0, 5, 0, 14, 0, 6,
+ 64, 78, 0, 65, 0, 15, 0, 28,128, 0, 1, 7,192, 14, 0, 5, 0, 14, 0, 6,
+ 64, 78, 0, 65,128, 15, 0, 28,128, 0, 1, 7, 64, 15, 0, 5, 0, 14, 0, 6,
+ 64, 78, 0, 65, 0, 16, 0, 28,128, 0, 1, 7,192, 15, 0, 5, 0, 14, 0, 6,
+ 64, 78, 0, 65,128, 16, 0, 28,128, 0, 1, 7, 64, 16, 0, 1, 0, 17, 0, 7,
+192, 16, 0, 1,128, 17, 0, 7, 64, 17, 0, 1, 0, 18, 0, 7,192, 17, 0, 1,
+128, 18, 0, 7, 64, 18, 0, 1, 0, 19, 0, 7,192, 18, 0, 30, 0,128, 0, 77,
+ 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 69, 82, 82, 79, 82, 0, 3, 0,
+ 0, 0, 0, 0, 0,240, 63, 4, 8, 0, 0, 0, 0, 0, 0, 0, 78, 79, 69, 82,
+ 82, 79, 82, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0, 79, 80, 69, 78, 69, 68, 0, 3, 0, 0, 0, 0, 0, 0,240,191, 4, 8,
+ 0, 0, 0, 0, 0, 0, 0, 73, 78, 86, 65, 76, 73, 68, 0, 4, 7, 0, 0, 0,
+ 0, 0, 0, 0, 73, 71, 78, 79, 82, 69, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+ 68, 69, 70, 65, 85, 76, 84, 0, 3, 0, 0, 0, 0, 0, 0, 0,192, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0, 67, 76, 79, 83, 69, 0, 3, 0, 0, 0, 0, 0, 0, 8,
+192, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67, 79, 78, 84, 73, 78, 85, 69, 0, 3,
+ 0, 0, 0, 0, 0, 0, 16,192, 4, 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78,
+ 84, 69, 82, 0, 3, 0, 0, 0, 0,224,255,239, 64, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0,192,255,239, 64, 4, 6, 0, 0,
+ 0, 0, 0, 0, 0, 82, 73, 71, 72, 84, 0, 3, 0, 0, 0, 0,160,255,239, 64,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 79, 85, 83, 69, 80, 79, 83, 0, 3, 0,
+ 0, 0, 0,128,255,239, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 67, 85, 82, 82,
+ 69, 78, 84, 0, 3, 0, 0, 0, 0, 96,255,239, 64, 4, 13, 0, 0, 0, 0, 0,
+ 0, 0, 67, 69, 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 3, 0, 0, 0, 0,
+ 64,255,239, 64, 4, 4, 0, 0, 0, 0, 0, 0, 0, 84, 79, 80, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0, 66, 79, 84, 84, 79, 77, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 83, 66, 85, 80, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 83, 66, 68, 78,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 85, 80, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 68,
+ 78, 0, 3, 0, 0, 0, 0, 0, 0, 8, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0,
+ 83, 66, 80, 79, 83, 86, 0, 3, 0, 0, 0, 0, 0, 0, 16, 64, 4, 8, 0, 0,
+ 0, 0, 0, 0, 0, 83, 66, 68, 82, 65, 71, 86, 0, 3, 0, 0, 0, 0, 0, 0,
+ 20, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 76, 69, 70, 84, 0, 3, 0,
+ 0, 0, 0, 0, 0, 24, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83, 66, 82, 73,
+ 71, 72, 84, 0, 3, 0, 0, 0, 0, 0, 0, 28, 64, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 83, 66, 80, 71, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0, 0, 0, 32, 64,
+ 4, 10, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 3,
+ 0, 0, 0, 0, 0, 0, 34, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80,
+ 79, 83, 72, 0, 3, 0, 0, 0, 0, 0, 0, 36, 64, 4, 8, 0, 0, 0, 0, 0,
+ 0, 0, 83, 66, 68, 82, 65, 71, 72, 0, 3, 0, 0, 0, 0, 0, 0, 38, 64, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0, 83, 72, 79, 87, 0, 4, 8, 0, 0, 0, 0, 0,
+ 0, 0, 82, 69, 83, 84, 79, 82, 69, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77,
+ 73, 78, 73, 77, 73, 90, 69, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 65, 88,
+ 73, 77, 73, 90, 69, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72, 73, 68, 69, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 49, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 98,121,116,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 49, 0, 4, 8,
+ 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 50, 0, 4, 2, 0, 0, 0,
+ 0, 0, 0, 0, 50, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79,
+ 78, 51, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 51, 0, 4, 8, 0, 0, 0, 0,
+ 0, 0, 0, 66, 85, 84, 84, 79, 78, 52, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,
+ 52, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 53, 0, 4,
+ 2, 0, 0, 0, 0, 0, 0, 0, 53, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 77,
+ 65, 83, 75, 95, 70, 76, 79, 65, 84, 0, 4, 24, 0, 0, 0, 0, 0, 0, 0, 91,
+ 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100,
+ 43, 41, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 77, 65, 83, 75, 95, 85, 70, 76,
+ 79, 65, 84, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 40, 47,100, 43, 47, 46, 63,
+ 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+ 77, 65, 83, 75, 95, 69, 70, 76, 79, 65, 84, 0, 4, 40, 0, 0, 0, 0, 0, 0,
+ 0, 91, 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46,
+ 47,100, 43, 41, 40, 91,101, 69, 93, 91, 43, 47, 45, 93, 63, 47,100, 43, 41, 63,
+ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 65, 83, 75, 95, 73, 78, 84, 0, 4,
+ 10, 0, 0, 0, 0, 0, 0, 0, 91, 43, 47, 45, 93, 63, 47,100, 43, 0, 4, 10,
+ 0, 0, 0, 0, 0, 0, 0, 77, 65, 83, 75, 95, 85, 73, 78, 84, 0, 4, 4, 0,
+ 0, 0, 0, 0, 0, 0, 47,100, 43, 0, 0, 0, 0, 0,102, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0,
+ 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0,
+ 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0,
+ 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0,
+ 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0,
+ 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0,
+ 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 38, 0,
+ 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 40, 0,
+ 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0,
+ 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0,
+ 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0,
+ 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0,
+ 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0,
+ 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0,
+ 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0,
+ 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0,
+ 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0,
+ 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 70, 0,
+ 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 72, 0,
+ 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/constants_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/constants_le64.loh b/iup/srclua5/loh/constants_le64.loh
new file mode 100755
index 0000000..9771f6f
--- /dev/null
+++ b/iup/srclua5/loh/constants_le64.loh
@@ -0,0 +1,97 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/constants_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/constants_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,110,115,116, 97,110,116,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2, 92, 0, 0, 0, 1, 64, 0, 0, 7, 0, 0, 0, 1,
+192, 0, 0, 7,128, 0, 0, 1, 64, 1, 0, 7, 0, 1, 0, 1,192, 1, 0, 7,
+128, 1, 0, 1, 64, 2, 0, 7, 0, 2, 0, 1,192, 2, 0, 7,128, 2, 0, 1,
+ 64, 3, 0, 7, 0, 3, 0, 1,192, 3, 0, 7,128, 3, 0, 1, 64, 4, 0, 7,
+ 0, 4, 0, 1,192, 4, 0, 7,128, 4, 0, 5,128, 2, 0, 7, 0, 5, 0, 5,
+ 0, 3, 0, 7, 64, 5, 0, 1,192, 5, 0, 7,128, 5, 0, 1, 64, 6, 0, 7,
+ 0, 6, 0, 1,192, 6, 0, 7,128, 6, 0, 1, 64, 7, 0, 7, 0, 7, 0, 1,
+192, 7, 0, 7,128, 7, 0, 1, 64, 8, 0, 7, 0, 8, 0, 1,192, 8, 0, 7,
+128, 8, 0, 1, 64, 9, 0, 7, 0, 9, 0, 1,192, 9, 0, 7,128, 9, 0, 1,
+ 64, 10, 0, 7, 0, 10, 0, 1,192, 10, 0, 7,128, 10, 0, 1, 64, 11, 0, 7,
+ 0, 11, 0, 1,192, 5, 0, 7,128, 11, 0, 1, 64, 6, 0, 7,192, 11, 0, 1,
+192, 6, 0, 7, 0, 12, 0, 1, 64, 7, 0, 7, 64, 12, 0, 1,192, 7, 0, 7,
+128, 12, 0, 5, 0, 13, 0, 6, 64, 77, 0, 65,128, 13, 0, 28,128, 0, 1, 7,
+192, 12, 0, 5, 0, 13, 0, 6, 64, 77, 0, 65, 0, 14, 0, 28,128, 0, 1, 7,
+192, 13, 0, 5, 0, 13, 0, 6, 64, 77, 0, 65,128, 14, 0, 28,128, 0, 1, 7,
+ 64, 14, 0, 5, 0, 13, 0, 6, 64, 77, 0, 65, 0, 15, 0, 28,128, 0, 1, 7,
+192, 14, 0, 5, 0, 13, 0, 6, 64, 77, 0, 65,128, 15, 0, 28,128, 0, 1, 7,
+ 64, 15, 0, 1, 64, 6, 0, 7,192, 15, 0, 1,192, 5, 0, 7, 0, 16, 0, 1,
+ 64, 0, 0, 7, 64, 16, 0, 1, 64, 0, 0, 7,128, 16, 0, 30, 0,128, 0, 67,
+ 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 73, 71, 78, 79, 82, 69, 0, 3,
+ 0, 0, 0, 0, 0, 0,240,191, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68, 69, 70,
+ 65, 85, 76, 84, 0, 3, 0, 0, 0, 0, 0, 0, 0,192, 4, 6, 0, 0, 0, 0,
+ 0, 0, 0, 67, 76, 79, 83, 69, 0, 3, 0, 0, 0, 0, 0, 0, 8,192, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 67, 79, 78, 84, 73, 78, 85, 69, 0, 3, 0, 0, 0,
+ 0, 0, 0, 16,192, 4, 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82,
+ 0, 3, 0, 0, 0, 0,224,255,239, 64, 4, 5, 0, 0, 0, 0, 0, 0, 0, 76,
+ 69, 70, 84, 0, 3, 0, 0, 0, 0,192,255,239, 64, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0, 82, 73, 71, 72, 84, 0, 3, 0, 0, 0, 0,160,255,239, 64, 4, 9, 0,
+ 0, 0, 0, 0, 0, 0, 77, 79, 85, 83, 69, 80, 79, 83, 0, 3, 0, 0, 0, 0,
+128,255,239, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 67, 85, 82, 82, 69, 78, 84,
+ 0, 3, 0, 0, 0, 0, 96,255,239, 64, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,
+ 69, 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 3, 0, 0, 0, 0, 64,255,239,
+ 64, 4, 4, 0, 0, 0, 0, 0, 0, 0, 84, 79, 80, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 66, 79, 84, 84, 79, 77, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 83,
+ 66, 85, 80, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 83, 66, 68, 78, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0, 83, 66, 80, 71, 85, 80, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 68, 78, 0, 3, 0, 0,
+ 0, 0, 0, 0, 8, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 79, 83,
+ 86, 0, 3, 0, 0, 0, 0, 0, 0, 16, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+ 83, 66, 68, 82, 65, 71, 86, 0, 3, 0, 0, 0, 0, 0, 0, 20, 64, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0, 83, 66, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0, 0, 0,
+ 24, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83, 66, 82, 73, 71, 72, 84, 0, 3,
+ 0, 0, 0, 0, 0, 0, 28, 64, 4, 9, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80,
+ 71, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0, 0, 0, 32, 64, 4, 10, 0, 0, 0,
+ 0, 0, 0, 0, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 3, 0, 0, 0, 0, 0,
+ 0, 34, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 79, 83, 72, 0, 3,
+ 0, 0, 0, 0, 0, 0, 36, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83, 66, 68,
+ 82, 65, 71, 72, 0, 3, 0, 0, 0, 0, 0, 0, 38, 64, 4, 5, 0, 0, 0, 0,
+ 0, 0, 0, 83, 72, 79, 87, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 82, 69, 83,
+ 84, 79, 82, 69, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 73, 78, 73, 77, 73,
+ 90, 69, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 65, 88, 73, 77, 73, 90, 69,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72, 73, 68, 69, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 49, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 98,121,116,
+101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 49, 0, 4, 8, 0, 0, 0, 0, 0,
+ 0, 0, 66, 85, 84, 84, 79, 78, 50, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 50,
+ 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 51, 0, 4, 2,
+ 0, 0, 0, 0, 0, 0, 0, 51, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85,
+ 84, 84, 79, 78, 52, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 52, 0, 4, 8, 0,
+ 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 53, 0, 4, 2, 0, 0, 0, 0,
+ 0, 0, 0, 53, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 69, 82, 82, 79, 82, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0, 78, 79, 69, 82, 82, 79, 82, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0, 79, 80, 69, 78, 69, 68, 0, 4, 8, 0, 0, 0, 0, 0,
+ 0, 0, 73, 78, 86, 65, 76, 73, 68, 0, 0, 0, 0, 0, 92, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0,
+ 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0,
+ 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 26, 0, 0, 0, 26, 0,
+ 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0,
+ 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0,
+ 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 34, 0,
+ 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0,
+ 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0,
+ 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0,
+ 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0,
+ 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
+ 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 53, 0,
+ 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0,
+ 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0,
+ 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0,
+ 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 63, 0,
+ 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/constants_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/constants_le64w.loh b/iup/srclua5/loh/constants_le64w.loh
new file mode 100755
index 0000000..b2eb2a8
--- /dev/null
+++ b/iup/srclua5/loh/constants_le64w.loh
@@ -0,0 +1,113 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/constants_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/constants_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64, 99,111,110,115,116, 97,110,116,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2,102, 0, 0, 0, 1, 64, 0, 0, 7, 0, 0, 0, 1,
+192, 0, 0, 7,128, 0, 0, 1, 64, 1, 0, 7, 0, 1, 0, 1, 64, 1, 0, 7,
+128, 1, 0, 1, 64, 1, 0, 7,192, 1, 0, 1, 64, 2, 0, 7, 0, 2, 0, 1,
+192, 2, 0, 7,128, 2, 0, 1, 64, 3, 0, 7, 0, 3, 0, 1,192, 3, 0, 7,
+128, 3, 0, 1, 64, 4, 0, 7, 0, 4, 0, 1,192, 4, 0, 7,128, 4, 0, 1,
+ 64, 5, 0, 7, 0, 5, 0, 1,192, 5, 0, 7,128, 5, 0, 1, 64, 6, 0, 7,
+ 0, 6, 0, 5, 0, 4, 0, 7,128, 6, 0, 5,128, 4, 0, 7,192, 6, 0, 1,
+192, 0, 0, 7, 0, 7, 0, 1, 64, 0, 0, 7, 64, 7, 0, 1,192, 7, 0, 7,
+128, 7, 0, 1, 64, 8, 0, 7, 0, 8, 0, 1,192, 8, 0, 7,128, 8, 0, 1,
+ 64, 9, 0, 7, 0, 9, 0, 1,192, 9, 0, 7,128, 9, 0, 1, 64, 10, 0, 7,
+ 0, 10, 0, 1,192, 10, 0, 7,128, 10, 0, 1, 64, 11, 0, 7, 0, 11, 0, 1,
+192, 11, 0, 7,128, 11, 0, 1, 64, 12, 0, 7, 0, 12, 0, 1,192, 0, 0, 7,
+128, 12, 0, 1, 64, 0, 0, 7,192, 12, 0, 1,192, 7, 0, 7, 0, 13, 0, 1,
+ 64, 8, 0, 7, 64, 13, 0, 1,192, 8, 0, 7,128, 13, 0, 5, 0, 14, 0, 6,
+ 64, 78, 0, 65,128, 14, 0, 28,128, 0, 1, 7,192, 13, 0, 5, 0, 14, 0, 6,
+ 64, 78, 0, 65, 0, 15, 0, 28,128, 0, 1, 7,192, 14, 0, 5, 0, 14, 0, 6,
+ 64, 78, 0, 65,128, 15, 0, 28,128, 0, 1, 7, 64, 15, 0, 5, 0, 14, 0, 6,
+ 64, 78, 0, 65, 0, 16, 0, 28,128, 0, 1, 7,192, 15, 0, 5, 0, 14, 0, 6,
+ 64, 78, 0, 65,128, 16, 0, 28,128, 0, 1, 7, 64, 16, 0, 1, 0, 17, 0, 7,
+192, 16, 0, 1,128, 17, 0, 7, 64, 17, 0, 1, 0, 18, 0, 7,192, 17, 0, 1,
+128, 18, 0, 7, 64, 18, 0, 1, 0, 19, 0, 7,192, 18, 0, 30, 0,128, 0, 77,
+ 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 69, 82, 82, 79, 82, 0, 3, 0,
+ 0, 0, 0, 0, 0,240, 63, 4, 8, 0, 0, 0, 0, 0, 0, 0, 78, 79, 69, 82,
+ 82, 79, 82, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0, 79, 80, 69, 78, 69, 68, 0, 3, 0, 0, 0, 0, 0, 0,240,191, 4, 8,
+ 0, 0, 0, 0, 0, 0, 0, 73, 78, 86, 65, 76, 73, 68, 0, 4, 7, 0, 0, 0,
+ 0, 0, 0, 0, 73, 71, 78, 79, 82, 69, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+ 68, 69, 70, 65, 85, 76, 84, 0, 3, 0, 0, 0, 0, 0, 0, 0,192, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0, 67, 76, 79, 83, 69, 0, 3, 0, 0, 0, 0, 0, 0, 8,
+192, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67, 79, 78, 84, 73, 78, 85, 69, 0, 3,
+ 0, 0, 0, 0, 0, 0, 16,192, 4, 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78,
+ 84, 69, 82, 0, 3, 0, 0, 0, 0,224,255,239, 64, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0,192,255,239, 64, 4, 6, 0, 0,
+ 0, 0, 0, 0, 0, 82, 73, 71, 72, 84, 0, 3, 0, 0, 0, 0,160,255,239, 64,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 79, 85, 83, 69, 80, 79, 83, 0, 3, 0,
+ 0, 0, 0,128,255,239, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 67, 85, 82, 82,
+ 69, 78, 84, 0, 3, 0, 0, 0, 0, 96,255,239, 64, 4, 13, 0, 0, 0, 0, 0,
+ 0, 0, 67, 69, 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 3, 0, 0, 0, 0,
+ 64,255,239, 64, 4, 4, 0, 0, 0, 0, 0, 0, 0, 84, 79, 80, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0, 66, 79, 84, 84, 79, 77, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 83, 66, 85, 80, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 83, 66, 68, 78,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 85, 80, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 68,
+ 78, 0, 3, 0, 0, 0, 0, 0, 0, 8, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0,
+ 83, 66, 80, 79, 83, 86, 0, 3, 0, 0, 0, 0, 0, 0, 16, 64, 4, 8, 0, 0,
+ 0, 0, 0, 0, 0, 83, 66, 68, 82, 65, 71, 86, 0, 3, 0, 0, 0, 0, 0, 0,
+ 20, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 76, 69, 70, 84, 0, 3, 0,
+ 0, 0, 0, 0, 0, 24, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83, 66, 82, 73,
+ 71, 72, 84, 0, 3, 0, 0, 0, 0, 0, 0, 28, 64, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 83, 66, 80, 71, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0, 0, 0, 32, 64,
+ 4, 10, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 3,
+ 0, 0, 0, 0, 0, 0, 34, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80,
+ 79, 83, 72, 0, 3, 0, 0, 0, 0, 0, 0, 36, 64, 4, 8, 0, 0, 0, 0, 0,
+ 0, 0, 83, 66, 68, 82, 65, 71, 72, 0, 3, 0, 0, 0, 0, 0, 0, 38, 64, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0, 83, 72, 79, 87, 0, 4, 8, 0, 0, 0, 0, 0,
+ 0, 0, 82, 69, 83, 84, 79, 82, 69, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77,
+ 73, 78, 73, 77, 73, 90, 69, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 65, 88,
+ 73, 77, 73, 90, 69, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72, 73, 68, 69, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 49, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 98,121,116,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 49, 0, 4, 8,
+ 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 50, 0, 4, 2, 0, 0, 0,
+ 0, 0, 0, 0, 50, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79,
+ 78, 51, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 51, 0, 4, 8, 0, 0, 0, 0,
+ 0, 0, 0, 66, 85, 84, 84, 79, 78, 52, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,
+ 52, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 53, 0, 4,
+ 2, 0, 0, 0, 0, 0, 0, 0, 53, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 77,
+ 65, 83, 75, 95, 70, 76, 79, 65, 84, 0, 4, 24, 0, 0, 0, 0, 0, 0, 0, 91,
+ 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100,
+ 43, 41, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 77, 65, 83, 75, 95, 85, 70, 76,
+ 79, 65, 84, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 40, 47,100, 43, 47, 46, 63,
+ 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+ 77, 65, 83, 75, 95, 69, 70, 76, 79, 65, 84, 0, 4, 40, 0, 0, 0, 0, 0, 0,
+ 0, 91, 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46,
+ 47,100, 43, 41, 40, 91,101, 69, 93, 91, 43, 47, 45, 93, 63, 47,100, 43, 41, 63,
+ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 65, 83, 75, 95, 73, 78, 84, 0, 4,
+ 10, 0, 0, 0, 0, 0, 0, 0, 91, 43, 47, 45, 93, 63, 47,100, 43, 0, 4, 10,
+ 0, 0, 0, 0, 0, 0, 0, 77, 65, 83, 75, 95, 85, 73, 78, 84, 0, 4, 4, 0,
+ 0, 0, 0, 0, 0, 0, 47,100, 43, 0, 0, 0, 0, 0,102, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0,
+ 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0,
+ 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0,
+ 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0,
+ 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0,
+ 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0,
+ 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 38, 0,
+ 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 40, 0,
+ 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0,
+ 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0,
+ 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0,
+ 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0,
+ 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0,
+ 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0,
+ 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0,
+ 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0,
+ 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0,
+ 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 70, 0,
+ 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 72, 0,
+ 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/constants_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/dial.loh b/iup/srclua5/loh/dial.loh
new file mode 100755
index 0000000..ff16026
--- /dev/null
+++ b/iup/srclua5/loh/dial.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/dial.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/dial.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,100,105, 97,
+108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 19, 0,
+ 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,194,132,100, 0,
+ 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64,
+ 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0,
+ 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0,100,105, 97,
+108, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0,
+ 4, 2, 0, 0, 0,115, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 13, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4,
+ 2, 0, 0, 0,100, 0, 4, 8, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4,
+ 14, 0, 0, 0,105,117,112, 99,111,110,116,114,111,108,115, 46,104, 0, 4, 14,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0,
+ 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0,
+ 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0,
+ 0, 4, 5, 0, 0, 0, 68,105, 97,108, 0, 3, 0, 0, 0, 0, 0, 0,240, 63,
+ 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,
+114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/dial.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/dial_be32.loh b/iup/srclua5/loh/dial_be32.loh
new file mode 100755
index 0000000..e883239
--- /dev/null
+++ b/iup/srclua5/loh/dial_be32.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/dial_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/dial_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,100,105, 97,
+108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 19, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9,132,194,128, 9, 0, 0,
+ 0,100,133,128, 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 3,
+ 64, 69, 0, 0, 0,128, 0, 3,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0,
+ 0, 15, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 5,100,105, 97,
+108, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0,
+ 4, 0, 0, 0, 2,115, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 0, 0, 0, 13,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4,
+ 0, 0, 0, 2,100, 0, 4, 0, 0, 0, 8,105,110, 99,108,117,100,101, 0, 4,
+ 0, 0, 0, 14,105,117,112, 99,111,110,116,114,111,108,115, 46,104, 0, 4, 0,
+ 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0,
+ 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0,
+ 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,
+133, 0,192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0,
+ 2, 4, 0, 0, 0, 5, 68,105, 97,108, 0, 3, 63,240, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0,
+ 0, 9, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0,
+ 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,
+114,108, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/dial_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/dial_be64.loh b/iup/srclua5/loh/dial_be64.loh
new file mode 100755
index 0000000..86901b2
--- /dev/null
+++ b/iup/srclua5/loh/dial_be64.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/dial_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/dial_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,100,105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,
+194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,
+128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0, 0, 0,
+ 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, 2, 0, 0, 0,
+ 0, 0, 0, 0,100, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,
+100,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,111,110,116,114,
+111,108,115, 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0,
+ 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0,
+ 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 68,105,
+ 97,108, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/dial_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/dial_le64.loh b/iup/srclua5/loh/dial_le64.loh
new file mode 100755
index 0000000..44ab7a5
--- /dev/null
+++ b/iup/srclua5/loh/dial_le64.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/dial_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/dial_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,100,105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,
+194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,
+128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0, 0, 0,
+ 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, 2, 0, 0, 0,
+ 0, 0, 0, 0,100, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,
+100,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,111,110,116,114,
+111,108,115, 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0,
+ 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0,
+ 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 68,105,
+ 97,108, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/dial_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/dial_le64w.loh b/iup/srclua5/loh/dial_le64w.loh
new file mode 100755
index 0000000..38c2cc0
--- /dev/null
+++ b/iup/srclua5/loh/dial_le64w.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/dial_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/dial_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,100,105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,
+194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,
+128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0, 0, 0,
+ 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, 2, 0, 0, 0,
+ 0, 0, 0, 0,100, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,
+100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,117,112,100,105, 97,108, 46,
+104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,
+109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,
+105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0,
+ 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128,
+ 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 68,105, 97,108, 0, 3,
+ 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 12, 0,
+ 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,
+114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/dial_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/dialog.loh b/iup/srclua5/loh/dialog.loh
new file mode 100755
index 0000000..c4c8760
--- /dev/null
+++ b/iup/srclua5/loh/dialog.loh
@@ -0,0 +1,72 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/dialog.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/dialog.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 12, 0, 0, 0, 64,100,105, 97,
+108,111,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4,
+ 30, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129,
+ 9, 64, 65,130, 74,192, 1, 0, 73, 0,194,131, 73, 0,194,132, 73, 0, 66,133,
+ 73, 0,195,133, 73,128,195,134, 73, 0,196,135, 73,128,196,136, 9, 64, 0,131,
+100, 0, 0, 0, 9, 64,128,137,100, 64, 0, 0, 9, 64, 0,138,100,128, 0, 0,
+ 9, 64,128,138,100,192, 0, 0, 9, 64, 0,139, 69,192, 5, 0,128, 0, 0, 0,
+ 92, 64, 0, 1, 69, 0, 6, 0,128, 0, 0, 0,193, 64, 6, 0, 92, 64,128, 1,
+ 30, 0,128, 0, 26, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 7,
+ 0, 0, 0,100,105, 97,108,111,103, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 73, 0, 4, 9, 0, 0, 0,
+ 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0,109, 97,112, 95, 99, 98,
+ 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0,117,110,109, 97,112, 95, 99, 98,
+ 0, 4, 9, 0, 0, 0, 99,108,111,115,101, 95, 99, 98, 0, 4, 8, 0, 0, 0,
+115,104,111,119, 95, 99, 98, 0, 4, 2, 0, 0, 0,110, 0, 4, 8, 0, 0, 0,
+109,111,118,101, 95, 99, 98, 0, 4, 3, 0, 0, 0,110,110, 0, 4, 13, 0, 0,
+ 0,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 4, 4, 0, 0, 0,110,
+110,110, 0, 4, 13, 0, 0, 0,100,114,111,112,102,105,108,101,115, 95, 99, 98,
+ 0, 4, 5, 0, 0, 0,115,110,110,110, 0, 4, 14, 0, 0, 0, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 6, 0, 0, 0,112,111,112,117,112,
+ 0, 4, 7, 0, 0, 0,115,104,111,119,120,121, 0, 4, 8, 0, 0, 0,100,101,
+115,116,114,111,121, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,
+101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116,
+ 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,
+116, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 0, 2,
+ 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0,
+ 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 7, 0, 0, 0, 68,105, 97,108,111,
+103, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 2,
+ 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0,
+ 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0,
+ 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 80,111,112,117,112, 0,
+ 0, 0, 0, 0, 6, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0,
+ 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,
+104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,120,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,121, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 29, 0, 0, 0, 0,
+ 3, 0, 7, 7, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128,
+ 1, 0, 1,221, 0, 0, 2,222, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4,
+ 7, 0, 0, 0, 83,104,111,119, 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 28,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28,
+ 0, 0, 0, 29, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,
+101, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0,120, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 2, 0, 0, 0,121, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 33, 0, 0, 0, 0, 1, 0, 3, 5, 0,
+ 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,
+128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0,
+ 0, 0, 0, 5, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,
+101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 4, 0,
+ 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0,
+ 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0,
+ 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 21, 0, 0, 0, 19, 0,
+ 0, 0, 25, 0, 0, 0, 23, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 33, 0,
+ 0, 0, 31, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0,
+ 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 1, 0,
+ 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 14, 0, 0, 0, 29, 0, 0, 0, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/dialog.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/dialog_be32.loh b/iup/srclua5/loh/dialog_be32.loh
new file mode 100755
index 0000000..5f280fd
--- /dev/null
+++ b/iup/srclua5/loh/dialog_be32.loh
@@ -0,0 +1,72 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/dialog_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/dialog_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 12, 64,100,105, 97,
+108,111,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4,
+ 0, 0, 0, 30, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,
+130, 65, 64, 9, 0, 1,192, 74,131,194, 0, 73,132,194, 0, 73,133, 66, 0, 73,
+133,195, 0, 73,134,195,128, 73,135,196, 0, 73,136,196,128, 73,131, 0, 64, 9,
+ 0, 0, 0,100,137,128, 64, 9, 0, 0, 64,100,138, 0, 64, 9, 0, 0,128,100,
+138,128, 64, 9, 0, 0,192,100,139, 0, 64, 9, 0, 5,192, 69, 0, 0, 0,128,
+ 1, 0, 64, 92, 0, 6, 0, 69, 0, 0, 0,128, 0, 6, 64,193, 1,128, 64, 92,
+ 0,128, 0, 30, 0, 0, 0, 26, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0,
+ 0, 0, 7,100,105, 97,108,111,103, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,
+116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,
+114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 73, 0, 4, 0, 0, 0, 9,
+ 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 7,109, 97,112, 95, 99, 98,
+ 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9,117,110,109, 97,112, 95, 99, 98,
+ 0, 4, 0, 0, 0, 9, 99,108,111,115,101, 95, 99, 98, 0, 4, 0, 0, 0, 8,
+115,104,111,119, 95, 99, 98, 0, 4, 0, 0, 0, 2,110, 0, 4, 0, 0, 0, 8,
+109,111,118,101, 95, 99, 98, 0, 4, 0, 0, 0, 3,110,110, 0, 4, 0, 0, 0,
+ 13,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 4, 0, 0, 0, 4,110,
+110,110, 0, 4, 0, 0, 0, 13,100,114,111,112,102,105,108,101,115, 95, 99, 98,
+ 0, 4, 0, 0, 0, 5,115,110,110,110, 0, 4, 0, 0, 0, 14, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 6,112,111,112,117,112,
+ 0, 4, 0, 0, 0, 7,115,104,111,119,120,121, 0, 4, 0, 0, 0, 8,100,101,
+115,116,114,111,121, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,
+101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116,
+ 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,
+116, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 21, 0, 2,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192, 64,198, 1, 0, 0,157, 0, 0,
+ 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 7, 68,105, 97,108,111,
+103, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0,
+ 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 3, 0, 7, 0, 0, 0,
+ 6, 0, 0, 0,197, 0, 0, 1, 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 64,
+220, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 6, 80,111,112,117,112, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24,
+ 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 3, 0, 0, 0, 7,
+104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,120,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,121, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 29, 0,
+ 3, 0, 7, 0, 0, 0, 7, 0, 0, 0,197, 0, 0, 1, 0, 0,128, 1, 64, 1,
+ 0, 1,128, 2, 0, 0,221, 0, 0, 0,222, 0,128, 0, 30, 0, 0, 0, 1, 4,
+ 0, 0, 0, 7, 83,104,111,119, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
+ 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0,
+ 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,
+101, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2,120, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 33, 0, 1, 0, 3, 0, 0,
+ 0, 5, 0, 0, 0, 69, 0, 0, 0,128, 1, 0, 0, 93, 0, 0, 0, 94, 0,128,
+ 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 8, 68,101,115,116,114,111,121, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0,
+ 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 7,104, 97,110,100,108,
+101, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0,
+ 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 21, 0, 0,
+ 0, 19, 0, 0, 0, 25, 0, 0, 0, 23, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0,
+ 0, 33, 0, 0, 0, 31, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0,
+ 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0,
+ 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 14, 0, 0, 0, 29, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/dialog_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/dialog_be64.loh b/iup/srclua5/loh/dialog_be64.loh
new file mode 100755
index 0000000..94b0b30
--- /dev/null
+++ b/iup/srclua5/loh/dialog_be64.loh
@@ -0,0 +1,81 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/dialog_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/dialog_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64,100,105, 97,108,111,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 30, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74,192, 1, 0, 73, 0,194,131, 73, 0,194,132,
+ 73, 0, 66,133, 73, 0,195,133, 73,128,195,134, 73, 0,196,135, 73,128,196,136,
+ 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,137,100, 64, 0, 0, 9, 64, 0,138,
+100,128, 0, 0, 9, 64,128,138,100,192, 0, 0, 9, 64, 0,139, 69,192, 5, 0,
+128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 6, 0,128, 0, 0, 0,193, 64, 6, 0,
+ 92, 64,128, 1, 30, 0,128, 0, 26, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111,
+103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0,
+ 0, 73, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,112, 95, 99, 98, 0, 4, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,117,110,109, 97,
+112, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 95,
+ 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,104,111,119, 95, 99, 98, 0,
+ 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+109,111,118,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0,
+ 4, 13, 0, 0, 0, 0, 0, 0, 0,116,114, 97,121, 99,108,105, 99,107, 95, 99,
+ 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 13, 0, 0, 0,
+ 0, 0, 0, 0,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 4, 5, 0,
+ 0, 0, 0, 0, 0, 0,115,110,110,110, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 6, 0, 0, 0, 0,
+ 0, 0, 0,112,111,112,117,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,104,
+111,119,120,121, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,
+121, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,
+101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 32,119,105,100,103,101,116, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0,
+ 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0,
+ 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 68,105, 97,108,111,103, 0, 3, 0,
+ 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 2, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0,
+ 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128,
+ 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0,
+ 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0,
+ 25, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,
+ 0, 0, 0, 29, 0, 0, 0, 0, 3, 0, 7, 7, 0, 0, 0,197, 0, 0, 0, 0,
+ 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0, 0, 2,222, 0, 0, 0, 30,
+ 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83,104,111,119,
+ 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 3,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 6, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 33, 0,
+ 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0,
+ 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0,
+ 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 1,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0,
+ 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 25, 0,
+ 0, 0, 23, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 33, 0, 0, 0, 31, 0,
+ 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0,
+ 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 1, 0, 0, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 14, 0, 0, 0, 29, 0, 0, 0, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/dialog_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/dialog_le64.loh b/iup/srclua5/loh/dialog_le64.loh
new file mode 100755
index 0000000..b3f4995
--- /dev/null
+++ b/iup/srclua5/loh/dialog_le64.loh
@@ -0,0 +1,81 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/dialog_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/dialog_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64,100,105, 97,108,111,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 30, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74,192, 1, 0, 73, 0,194,131, 73, 0,194,132,
+ 73, 0, 66,133, 73, 0,195,133, 73,128,195,134, 73, 0,196,135, 73,128,196,136,
+ 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,137,100, 64, 0, 0, 9, 64, 0,138,
+100,128, 0, 0, 9, 64,128,138,100,192, 0, 0, 9, 64, 0,139, 69,192, 5, 0,
+128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 6, 0,128, 0, 0, 0,193, 64, 6, 0,
+ 92, 64,128, 1, 30, 0,128, 0, 26, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111,
+103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0,
+ 0, 73, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,112, 95, 99, 98, 0, 4, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,117,110,109, 97,
+112, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 95,
+ 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,104,111,119, 95, 99, 98, 0,
+ 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+109,111,118,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0,
+ 4, 13, 0, 0, 0, 0, 0, 0, 0,116,114, 97,121, 99,108,105, 99,107, 95, 99,
+ 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 13, 0, 0, 0,
+ 0, 0, 0, 0,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 4, 5, 0,
+ 0, 0, 0, 0, 0, 0,115,110,110,110, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 6, 0, 0, 0, 0,
+ 0, 0, 0,112,111,112,117,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,104,
+111,119,120,121, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,
+121, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,
+101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 32,119,105,100,103,101,116, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0,
+ 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0,
+ 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 68,105, 97,108,111,103, 0, 3, 0,
+ 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 2, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0,
+ 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128,
+ 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0,
+ 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0,
+ 25, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,
+ 0, 0, 0, 29, 0, 0, 0, 0, 3, 0, 7, 7, 0, 0, 0,197, 0, 0, 0, 0,
+ 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0, 0, 2,222, 0, 0, 0, 30,
+ 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83,104,111,119,
+ 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 3,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 6, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 33, 0,
+ 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0,
+ 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0,
+ 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 1,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0,
+ 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 25, 0,
+ 0, 0, 23, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 33, 0, 0, 0, 31, 0,
+ 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0,
+ 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 1, 0, 0, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 14, 0, 0, 0, 29, 0, 0, 0, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/dialog_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/dialog_le64w.loh b/iup/srclua5/loh/dialog_le64w.loh
new file mode 100755
index 0000000..ef19de9
--- /dev/null
+++ b/iup/srclua5/loh/dialog_le64w.loh
@@ -0,0 +1,79 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/dialog_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/dialog_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64,100,105, 97,108,111,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 29, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74,128, 1, 0, 73, 0,194,131, 73, 0,194,132,
+ 73, 0, 66,133, 73, 0,195,133, 73,128,195,134, 73, 0,196,135, 9, 64, 0,131,
+100, 0, 0, 0, 9, 64,128,136,100, 64, 0, 0, 9, 64, 0,137,100,128, 0, 0,
+ 9, 64,128,137,100,192, 0, 0, 9, 64, 0,138, 69, 64, 5, 0,128, 0, 0, 0,
+ 92, 64, 0, 1, 69,128, 5, 0,128, 0, 0, 0,193,192, 5, 0, 92, 64,128, 1,
+ 30, 0,128, 0, 24, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,
+107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0,109, 97,112, 95, 99, 98, 0, 4, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,117,110,109, 97,112, 95, 99, 98,
+ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 95, 99, 98, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0,115,104,111,119, 95, 99, 98, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0,110, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,116,114, 97,121,
+ 99,108,105, 99,107, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,
+110, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,102,105,108,101,115,
+ 95, 99, 98, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,115,110,110,110, 0, 4, 14,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116,
+ 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,115,104,111,119,120,121, 0, 4, 8, 0, 0, 0, 0, 0, 0,
+ 0,100,101,115,116,114,111,121, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 0, 2, 0,
+ 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0,
+ 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 68,105,
+ 97,108,111,103, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0,
+ 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0,
+ 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 22, 0, 0, 0, 24, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0,
+ 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0,
+ 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23,
+ 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 3, 0, 7, 7, 0,
+ 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0,
+ 0, 2,222, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 83,104,111,119, 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 28, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,
+110,100,108,101, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
+ 0,120, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121,
+ 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0,
+ 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0,
+ 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0,
+ 0, 0, 5, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0,
+ 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,
+110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0,
+ 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 20, 0, 0, 0, 18, 0, 0,
+ 0, 24, 0, 0, 0, 22, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 32, 0, 0,
+ 0, 30, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0,
+ 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 13, 0, 0, 0, 28, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/dialog_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/filedlg.loh b/iup/srclua5/loh/filedlg.loh
new file mode 100755
index 0000000..01ac3e4
--- /dev/null
+++ b/iup/srclua5/loh/filedlg.loh
@@ -0,0 +1,55 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/filedlg.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/filedlg.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 13, 0, 0, 0, 64,102,105,108,
+101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 4, 23, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,
+129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,194,
+132,100, 0, 0, 0, 9, 64,128,133,100, 64, 0, 0, 9, 64, 0,134,100,128, 0,
+ 0, 9, 64,128,134, 69,128, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 3,
+ 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 17, 0, 0,
+ 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,102,105,108,101,
+100,108,103, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 8, 0, 0, 0,102,105,108,101, 95, 99, 98, 0, 4, 3, 0, 0, 0,
+115,115, 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 8, 0,
+ 0, 0, 70,105,108,101, 68,108,103, 0, 4, 6, 0, 0, 0,112,111,112,117,112,
+ 0, 4, 8, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0, 0, 0, 99,
+114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0,
+ 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,
+112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0,
+ 0, 16, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0,
+ 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0,
+ 0, 4, 6, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0,
+ 0, 2, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69,
+ 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1,
+ 0, 0, 0, 4, 8, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0,
+ 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 20, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 24,
+ 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158,
+ 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 70,105,108,101,
+ 68,108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0,
+ 23, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20, 0,
+ 0, 0, 18, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 26, 0,
+ 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 9,
+ 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/filedlg.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/filedlg_be32.loh b/iup/srclua5/loh/filedlg_be32.loh
new file mode 100755
index 0000000..13c492c
--- /dev/null
+++ b/iup/srclua5/loh/filedlg_be32.loh
@@ -0,0 +1,55 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/filedlg_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/filedlg_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 13, 64,102,105,108,
+101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 4, 0, 0, 0, 23, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64,
+ 9,130, 65, 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9,132,194,128,
+ 9, 0, 0, 0,100,133,128, 64, 9, 0, 0, 64,100,134, 0, 64, 9, 0, 0,128,
+100,134,128, 64, 9, 0, 3,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 3,192,
+ 69, 0, 0, 0,128, 0, 4, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0,
+ 17, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 8,102,105,108,101,
+100,108,103, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0,
+ 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,
+110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 0, 0, 0, 8,102,105,108,101, 95, 99, 98, 0, 4, 0, 0, 0, 3,
+115,115, 0, 4, 0, 0, 0, 9,102,117,110, 99,110, 97,109,101, 0, 4, 0, 0,
+ 0, 8, 70,105,108,101, 68,108,103, 0, 4, 0, 0, 0, 6,112,111,112,117,112,
+ 0, 4, 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0, 14, 99,
+114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0,
+ 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,
+112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 14, 0, 0, 0, 16, 0, 3, 0, 7, 0, 0, 0, 6, 0, 0, 0,197, 0, 0, 1,
+ 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 64,220, 0,128, 0, 30, 0, 0, 0,
+ 1, 4, 0, 0, 0, 6, 80,111,112,117,112, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15,
+ 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,120, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5, 0, 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 1, 0, 3, 0, 0, 0, 5, 0,
+ 0, 0, 69, 0, 0, 0,128, 1, 0, 0, 93, 0, 0, 0, 94, 0,128, 0, 30, 0,
+ 0, 0, 1, 4, 0, 0, 0, 8, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19,
+ 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 24, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157, 0,
+ 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 8, 70,105,108,101,
+ 68,108,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 23, 0, 0, 0, 23,
+ 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0,
+ 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0,
+ 0, 20, 0, 0, 0, 18, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0,
+ 0, 26, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0,
+ 0, 27, 0, 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0,
+ 0, 0, 9, 0, 0, 0, 22, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/filedlg_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/filedlg_be64.loh b/iup/srclua5/loh/filedlg_be64.loh
new file mode 100755
index 0000000..1495118
--- /dev/null
+++ b/iup/srclua5/loh/filedlg_be64.loh
@@ -0,0 +1,61 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/filedlg_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/filedlg_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 64,102,105,108,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 23, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0,
+ 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,
+131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133,100, 64, 0, 0, 9, 64, 0,
+134,100,128, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, 0, 0, 92, 64, 0,
+ 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,128, 1, 30, 0,128,
+ 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0,
+ 0, 0, 0,102,105,108,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,
+115,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101,
+ 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,105,108,101, 68,108,103, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0, 0, 0, 0,
+ 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0,
+ 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115,
+ 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0,
+ 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128,
+ 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,
+ 0, 0, 0, 20, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128,
+ 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0,
+ 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 20, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 22, 0, 0, 0, 24, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133,
+ 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0, 70,105,108,101, 68,108,103, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20, 0,
+ 0, 0, 18, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 26, 0,
+ 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,
+114,108, 0, 9, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/filedlg_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/filedlg_le64.loh b/iup/srclua5/loh/filedlg_le64.loh
new file mode 100755
index 0000000..5bffda4
--- /dev/null
+++ b/iup/srclua5/loh/filedlg_le64.loh
@@ -0,0 +1,61 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/filedlg_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/filedlg_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 64,102,105,108,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 23, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0,
+ 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,
+131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133,100, 64, 0, 0, 9, 64, 0,
+134,100,128, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, 0, 0, 92, 64, 0,
+ 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,128, 1, 30, 0,128,
+ 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0,
+ 0, 0, 0,102,105,108,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,
+115,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101,
+ 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,105,108,101, 68,108,103, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0, 0, 0, 0,
+ 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0,
+ 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115,
+ 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0,
+ 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128,
+ 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,
+ 0, 0, 0, 20, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128,
+ 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0,
+ 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 20, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 22, 0, 0, 0, 24, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133,
+ 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0, 70,105,108,101, 68,108,103, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20, 0,
+ 0, 0, 18, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 26, 0,
+ 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,
+114,108, 0, 9, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/filedlg_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/filedlg_le64w.loh b/iup/srclua5/loh/filedlg_le64w.loh
new file mode 100755
index 0000000..14ed985
--- /dev/null
+++ b/iup/srclua5/loh/filedlg_le64w.loh
@@ -0,0 +1,61 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/filedlg_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/filedlg_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 64,102,105,108,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 23, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0,
+ 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,
+131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133,100, 64, 0, 0, 9, 64, 0,
+134,100,128, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, 0, 0, 92, 64, 0,
+ 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,128, 1, 30, 0,128,
+ 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0,
+ 0, 0, 0,102,105,108,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,
+115,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101,
+ 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,105,108,101, 68,108,103, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0, 0, 0, 0,
+ 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0,
+ 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115,
+ 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0,
+ 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128,
+ 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,
+ 0, 0, 0, 20, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128,
+ 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0,
+ 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 20, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 22, 0, 0, 0, 24, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133,
+ 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0, 70,105,108,101, 68,108,103, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20, 0,
+ 0, 0, 18, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 26, 0,
+ 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,
+114,108, 0, 9, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/filedlg_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/fill.loh b/iup/srclua5/loh/fill.loh
new file mode 100755
index 0000000..a3d0a19
--- /dev/null
+++ b/iup/srclua5/loh/fill.loh
@@ -0,0 +1,36 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/fill.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/fill.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,102,105,108,
+108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 17, 0,
+ 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131, 69, 0,
+ 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, 0, 0,193,128,
+ 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0,102,105,108,108, 0, 4, 7, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9,
+ 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,
+119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13,
+ 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158,
+ 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 70,105,108,108,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0,
+ 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13,
+ 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16,
+ 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fill.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/fill_be32.loh b/iup/srclua5/loh/fill_be32.loh
new file mode 100755
index 0000000..0a07884
--- /dev/null
+++ b/iup/srclua5/loh/fill_be32.loh
@@ -0,0 +1,36 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/fill_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/fill_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,102,105,108,
+108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, 2,
+ 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, 0, 0,128, 0, 2,
+128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0, 0, 5,110,
+105, 99,107, 0, 4, 0, 0, 0, 5,102,105,108,108, 0, 4, 0, 0, 0, 7,112,
+ 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0,
+ 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0,
+ 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 14, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,
+119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0,
+ 0, 0, 13, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157, 0,
+ 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 5, 70,105,108,108,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
+ 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0,
+ 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
+ 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 16,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fill_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/fill_be64.loh b/iup/srclua5/loh/fill_be64.loh
new file mode 100755
index 0000000..a1b3504
--- /dev/null
+++ b/iup/srclua5/loh/fill_be64.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/fill_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/fill_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,102,105,108,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0,
+ 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,102,105,108,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98,
+ 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,
+108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 3, 4,
+ 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 70,105,108,108, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0,
+ 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8,
+ 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15,
+ 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fill_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/fill_le64.loh b/iup/srclua5/loh/fill_le64.loh
new file mode 100755
index 0000000..837ca1b
--- /dev/null
+++ b/iup/srclua5/loh/fill_le64.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/fill_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/fill_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,102,105,108,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0,
+ 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,102,105,108,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98,
+ 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,
+108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 3, 4,
+ 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 70,105,108,108, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0,
+ 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8,
+ 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15,
+ 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fill_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/fill_le64w.loh b/iup/srclua5/loh/fill_le64w.loh
new file mode 100755
index 0000000..a0edb97
--- /dev/null
+++ b/iup/srclua5/loh/fill_le64w.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/fill_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/fill_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,102,105,108,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0,
+ 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,102,105,108,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98,
+ 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,
+108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 3, 4,
+ 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 70,105,108,108, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0,
+ 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8,
+ 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15,
+ 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fill_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/fontdlg.loh b/iup/srclua5/loh/fontdlg.loh
new file mode 100755
index 0000000..9ddd288
--- /dev/null
+++ b/iup/srclua5/loh/fontdlg.loh
@@ -0,0 +1,54 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/fontdlg.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/fontdlg.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 13, 0, 0, 0, 64,102,111,110,
+116,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,
+129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,132,100, 0, 0,
+ 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, 0, 0, 9, 64,128,
+133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0,
+ 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0,
+ 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,102,111,110,116,100,108,103, 0,
+ 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1,
+ 0, 0, 0, 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 8,
+ 0, 0, 0, 70,111,110,116, 68,108,103, 0, 4, 9, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 6, 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0,
+ 0,100,101,115,116,114,111,121, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101,
+ 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,
+101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,
+103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0,
+ 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,
+128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0,
+ 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13,
+ 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3,
+ 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 2, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,
+121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0,
+ 0, 0, 18, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0,
+ 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8,
+ 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1,
+ 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 0, 2,
+ 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,
+128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 70,111,110,116, 68,108,103, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22,
+ 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0,
+ 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0,
+ 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0,
+ 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fontdlg.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/fontdlg_be32.loh b/iup/srclua5/loh/fontdlg_be32.loh
new file mode 100755
index 0000000..70d46ff
--- /dev/null
+++ b/iup/srclua5/loh/fontdlg_be32.loh
@@ -0,0 +1,54 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/fontdlg_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/fontdlg_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 13, 64,102,111,110,
+116,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 4, 0, 0, 0, 22, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64,
+ 9,130, 65, 64, 9,131, 65,192, 9, 0, 0, 0, 74,132, 0, 64, 9, 0, 0, 0,
+100,132,128, 64, 9, 0, 0, 64,100,133, 0, 64, 9, 0, 0,128,100,133,128, 64,
+ 9, 0, 3, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 3, 64, 69, 0, 0, 0,
+128, 0, 3,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 15, 4, 0, 0,
+ 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 8,102,111,110,116,100,108,103, 0,
+ 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68,
+ 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0,
+ 0, 0, 1, 0, 4, 0, 0, 0, 9,102,117,110, 99,110, 97,109,101, 0, 4, 0,
+ 0, 0, 8, 70,111,110,116, 68,108,103, 0, 4, 0, 0, 0, 9, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 0, 0, 0, 6,112,111,112,117,112, 0, 4, 0, 0, 0,
+ 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101,
+ 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,
+101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,
+103,101,116, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14,
+ 0, 3, 0, 7, 0, 0, 0, 6, 0, 0, 0,197, 0, 0, 1, 0, 0,128, 1, 64,
+ 1, 0, 1,128, 2, 0, 64,220, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0,
+ 6, 80,111,112,117,112, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0,
+ 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0,
+ 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 0, 0, 0, 2,120, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,
+121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 16, 0, 0, 0, 18, 0, 1, 0, 3, 0, 0, 0, 5, 0, 0, 0, 69, 0, 0,
+ 0,128, 1, 0, 0, 93, 0, 0, 0, 94, 0,128, 0, 30, 0, 0, 0, 1, 4, 0,
+ 0, 0, 8, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0,
+ 0, 0, 1, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 2,
+ 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128,
+ 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 8, 70,111,110,116, 68,108,103, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,
+ 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0,
+ 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0,
+ 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0,
+ 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 8, 0, 0, 0, 21, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fontdlg_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/fontdlg_be64.loh b/iup/srclua5/loh/fontdlg_be64.loh
new file mode 100755
index 0000000..0d6acdd
--- /dev/null
+++ b/iup/srclua5/loh/fontdlg_be64.loh
@@ -0,0 +1,59 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/fontdlg_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/fontdlg_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 64,102,111,110,116,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0,
+ 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,
+132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, 0,
+ 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 3,
+ 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, 0,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0,102,111,110,116,100,108,103, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0,102,117,110, 99,110, 97,109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,
+111,110,116, 68,108,103, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0,
+ 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0,
+ 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114,
+ 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,
+101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+ 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0,
+ 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0,
+ 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13,
+ 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, 3, 5, 0,
+ 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,
+128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114,
+111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 0, 2,
+ 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,
+128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,111,110,116, 68,
+108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21,
+ 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0,
+ 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0,
+ 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
+ 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fontdlg_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/fontdlg_le64.loh b/iup/srclua5/loh/fontdlg_le64.loh
new file mode 100755
index 0000000..d7acd56
--- /dev/null
+++ b/iup/srclua5/loh/fontdlg_le64.loh
@@ -0,0 +1,59 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/fontdlg_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/fontdlg_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 64,102,111,110,116,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0,
+ 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,
+132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, 0,
+ 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 3,
+ 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, 0,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0,102,111,110,116,100,108,103, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0,102,117,110, 99,110, 97,109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,
+111,110,116, 68,108,103, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0,
+ 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0,
+ 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114,
+ 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,
+101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+ 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0,
+ 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0,
+ 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13,
+ 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, 3, 5, 0,
+ 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,
+128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114,
+111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 0, 2,
+ 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,
+128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,111,110,116, 68,
+108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21,
+ 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0,
+ 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0,
+ 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
+ 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fontdlg_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/fontdlg_le64w.loh b/iup/srclua5/loh/fontdlg_le64w.loh
new file mode 100755
index 0000000..1d3b92e
--- /dev/null
+++ b/iup/srclua5/loh/fontdlg_le64w.loh
@@ -0,0 +1,59 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/fontdlg_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/fontdlg_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 64,102,111,110,116,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0,
+ 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,
+132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, 0,
+ 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 3,
+ 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, 0,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0,102,111,110,116,100,108,103, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0,102,117,110, 99,110, 97,109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,
+111,110,116, 68,108,103, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0,
+ 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0,
+ 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114,
+ 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,
+101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+ 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0,
+ 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0,
+ 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13,
+ 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, 3, 5, 0,
+ 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,
+128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114,
+111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 0, 2,
+ 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,
+128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,111,110,116, 68,
+108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21,
+ 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0,
+ 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0,
+ 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
+ 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fontdlg_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/frame.loh b/iup/srclua5/loh/frame.loh
new file mode 100755
index 0000000..c243823
--- /dev/null
+++ b/iup/srclua5/loh/frame.loh
@@ -0,0 +1,37 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/frame.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/frame.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,102,114, 97,
+109,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 17,
+ 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9,
+ 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131, 69,
+ 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, 0, 0,193,
+128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, 0, 0, 0,
+110,105, 99,107, 0, 4, 6, 0, 0, 0,102,114, 97,109,101, 0, 4, 7, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0,
+ 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0,105,
+ 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,
+117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0,
+ 0, 0, 13, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,
+192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6,
+ 0, 0, 0, 70,114, 97,109,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0,
+ 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0,
+ 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,
+ 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0,
+ 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
+ 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0,
+ 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/frame.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/frame_be32.loh b/iup/srclua5/loh/frame_be32.loh
new file mode 100755
index 0000000..afbd184
--- /dev/null
+++ b/iup/srclua5/loh/frame_be32.loh
@@ -0,0 +1,37 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/frame_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/frame_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,102,114, 97,
+109,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0,
+ 0, 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130,
+ 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0,
+ 2, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, 0, 0,128, 0,
+ 2,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0, 0, 5,
+110,105, 99,107, 0, 4, 0, 0, 0, 6,102,114, 97,109,101, 0, 4, 0, 0, 0,
+ 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0,
+ 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2,105,
+ 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 14,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0,
+ 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,
+117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 11, 0, 0, 0, 13, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192,
+ 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0,
+ 0, 0, 6, 70,114, 97,109,101, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0,
+ 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8,
+ 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15,
+ 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0,
+ 16, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/frame_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/frame_be64.loh b/iup/srclua5/loh/frame_be64.loh
new file mode 100755
index 0000000..b15a60f
--- /dev/null
+++ b/iup/srclua5/loh/frame_be64.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/frame_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/frame_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,102,114, 97,109,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9,
+ 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128,
+ 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0,102,114, 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,
+101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2,
+ 0, 0, 0, 0, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,
+108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2,
+ 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0,
+ 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 70,
+114, 97,109,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0,
+ 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0,
+ 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
+ 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108,
+ 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/frame_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/frame_le64.loh b/iup/srclua5/loh/frame_le64.loh
new file mode 100755
index 0000000..f95d1bf
--- /dev/null
+++ b/iup/srclua5/loh/frame_le64.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/frame_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/frame_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,102,114, 97,109,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9,
+ 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128,
+ 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0,102,114, 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,
+101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2,
+ 0, 0, 0, 0, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,
+108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2,
+ 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0,
+ 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 70,
+114, 97,109,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0,
+ 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0,
+ 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
+ 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108,
+ 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/frame_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/frame_le64w.loh b/iup/srclua5/loh/frame_le64w.loh
new file mode 100755
index 0000000..6f2d88e
--- /dev/null
+++ b/iup/srclua5/loh/frame_le64w.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/frame_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/frame_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,102,114, 97,109,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9,
+ 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128,
+ 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0,102,114, 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,
+101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2,
+ 0, 0, 0, 0, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,
+108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2,
+ 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0,
+ 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 70,
+114, 97,109,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0,
+ 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0,
+ 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
+ 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108,
+ 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/frame_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/gauge.loh b/iup/srclua5/loh/gauge.loh
new file mode 100755
index 0000000..0c990ee
--- /dev/null
+++ b/iup/srclua5/loh/gauge.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/gauge.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/gauge.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,103, 97,117,
+103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 18,
+ 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9,
+ 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100, 0, 0, 0, 9,
+ 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128,
+ 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4,
+ 5, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0,103, 97,117,103,101, 0,
+ 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1,
+ 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8,
+ 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 14, 0, 0, 0,105,117,112, 99,
+111,110,116,114,111,108,115, 46,104, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,
+105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112,
+ 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0,
+ 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0,
+ 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 71, 97,
+117,103,101, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0,
+ 5, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
+ 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17,
+ 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/gauge.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/gauge_be32.loh b/iup/srclua5/loh/gauge_be32.loh
new file mode 100755
index 0000000..ede646b
--- /dev/null
+++ b/iup/srclua5/loh/gauge_be32.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/gauge_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/gauge_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,103, 97,117,
+103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0,
+ 0, 0, 18, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130,
+ 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9,131,194, 0, 9, 0, 0, 0,100,132,
+128, 64, 9, 0, 2,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,192, 69, 0,
+ 0, 0,128, 0, 3, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 13, 4,
+ 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 6,103, 97,117,103,101, 0,
+ 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68,
+ 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0,
+ 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0,
+ 0, 0, 8,105,110, 99,108,117,100,101, 0, 4, 0, 0, 0, 11,105,117,112,103,
+ 97,117,103,101, 46,104, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,
+101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,
+101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116,
+ 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,
+116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 2,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192, 64,198, 1, 0, 0,157, 0, 0,
+ 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 6, 71, 97,117,103,101,
+ 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
+ 14, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 8, 0, 0, 0, 17,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/gauge_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/gauge_be64.loh b/iup/srclua5/loh/gauge_be64.loh
new file mode 100755
index 0000000..75fbf2d
--- /dev/null
+++ b/iup/srclua5/loh/gauge_be64.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/gauge_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/gauge_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100,
+ 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,103, 97,117,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,
+110, 99,108,117,100,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112,103,
+ 97,117,103,101, 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2,
+ 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0,
+ 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 71,
+ 97,117,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0,
+ 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0,
+ 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12,
+ 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/gauge_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/gauge_le64.loh b/iup/srclua5/loh/gauge_le64.loh
new file mode 100755
index 0000000..afd4adf
--- /dev/null
+++ b/iup/srclua5/loh/gauge_le64.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/gauge_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/gauge_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100,
+ 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,103, 97,117,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,
+110, 99,108,117,100,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112,103,
+ 97,117,103,101, 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2,
+ 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0,
+ 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 71,
+ 97,117,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0,
+ 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0,
+ 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12,
+ 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/gauge_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/gauge_le64w.loh b/iup/srclua5/loh/gauge_le64w.loh
new file mode 100755
index 0000000..74d6621
--- /dev/null
+++ b/iup/srclua5/loh/gauge_le64w.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/gauge_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/gauge_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100,
+ 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,103, 97,117,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,
+110, 99,108,117,100,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112,103,
+ 97,117,103,101, 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2,
+ 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0,
+ 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 71,
+ 97,117,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0,
+ 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0,
+ 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12,
+ 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/gauge_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/glcanvas.loh b/iup/srclua5/loh/glcanvas.loh
new file mode 100755
index 0000000..7411f43
--- /dev/null
+++ b/iup/srclua5/loh/glcanvas.loh
@@ -0,0 +1,65 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluagl51/glcanvas.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluagl51/glcanvas.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 14, 0, 0, 0, 64,103,108, 99,
+ 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 22, 0, 0, 0, 10, 0, 2, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 9,192, 65,131, 9, 64, 66,132, 74, 64, 0, 0, 73, 0,
+195,133, 9, 64, 0,133, 9,128,195,134, 9, 0,196,135,100, 0, 0, 0, 9, 64,
+128,136, 69,128, 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 4, 0,128, 0,
+ 0, 0,193, 0, 5, 0, 92, 64,128, 1, 30, 0,128, 0, 21, 0, 0, 0, 4, 5,
+ 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, 0,103,108, 99, 97,110,118, 97,
+115, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0,
+ 4, 2, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101,
+ 0, 4, 9, 0, 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 4, 8, 0, 0, 0,
+105,110, 99,108,117,100,101, 0, 4, 8, 0, 0, 0,105,117,112,103,108, 46,104,
+ 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0,
+ 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0,110,110, 0, 4, 11, 0, 0, 0,
+101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63,
+ 4, 10, 0, 0, 0,101,120,116,114, 97, 99,111,100,101, 0, 4,150, 1, 0, 0,
+ 32, 10,105,110,116, 32,105,117,112,103,108,108,117, 97, 95,111,112,101,110, 40,
+108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32, 32,105,
+102, 32, 40,105,117,112,108,117, 97, 95,111,112,101,110, 99, 97,108,108, 95,105,
+110,116,101,114,110, 97,108, 40, 76, 41, 41, 10, 32, 32, 32, 32, 73,117,112, 71,
+ 76, 67, 97,110,118, 97,115, 79,112,101,110, 40, 41, 59, 10, 10, 32, 32,105,117,
+112,108,117, 97, 95, 99,104, 97,110,103,101, 69,110,118, 40, 76, 41, 59, 10, 32,
+ 32,105,117,112,103,108, 99, 97,110,118, 97,115,108,117, 97, 95,111,112,101,110,
+ 40, 76, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,114,101,116,117,114,110,
+ 69,110,118, 40, 76, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 48, 59, 10,
+125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32,
+117,115,101, 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,103,108,
+ 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117,112,
+108,117, 97,103,108, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,
+123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,103,108,108,117, 97, 95,
+111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103,
+ 97,116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,101,
+ 34,105,117,112,108,117, 97,103,108, 53, 49, 34, 32, 42, 47, 10,105,110,116, 32,
+108,117, 97,111,112,101,110, 95,105,117,112,108,117, 97,103,108, 53, 49, 40,108,
+117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,
+117,114,110, 32,105,117,112,103,108,108,117, 97, 95,111,112,101,110, 40, 76, 41,
+ 59, 10,125, 10, 10, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,
+109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,
+114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 43, 0, 0, 0, 0, 2, 0,
+ 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128,
+ 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43,
+ 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0,
+ 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0,
+ 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 38, 0, 0, 0, 43, 0, 0,
+ 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0,
+ 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 99,116,114,108, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluagl51/glcanvas.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/glcanvas_be32.loh b/iup/srclua5/loh/glcanvas_be32.loh
new file mode 100755
index 0000000..c6c7ee9
--- /dev/null
+++ b/iup/srclua5/loh/glcanvas_be32.loh
@@ -0,0 +1,65 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluagl51/glcanvas_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluagl51/glcanvas_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 14, 64,103,108, 99,
+ 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 0, 0, 0, 22, 0, 2, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0,
+ 64, 9,130, 65, 64, 9,131, 65,192, 9,132, 66, 64, 9, 0, 0, 64, 74,133,195,
+ 0, 73,133, 0, 64, 9,134,195,128, 9,135,196, 0, 9, 0, 0, 0,100,136,128,
+ 64, 9, 0, 4,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 4,192, 69, 0, 0,
+ 0,128, 0, 5, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 21, 4, 0,
+ 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 9,103,108, 99, 97,110,118, 97,
+115, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0,
+ 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0, 9,102,117,110, 99,110, 97,109,101,
+ 0, 4, 0, 0, 0, 9, 71, 76, 67, 97,110,118, 97,115, 0, 4, 0, 0, 0, 8,
+105,110, 99,108,117,100,101, 0, 4, 0, 0, 0, 8,105,117,112,103,108, 46,104,
+ 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 7,
+ 97, 99,116,105,111,110, 0, 4, 0, 0, 0, 3,110,110, 0, 4, 0, 0, 0, 11,
+101,120,116,114, 97,102,117,110, 99,115, 0, 3, 63,240, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 10,101,120,116,114, 97, 99,111,100,101, 0, 4, 0, 0, 1,150,
+ 32, 10,105,110,116, 32,105,117,112,103,108,108,117, 97, 95,111,112,101,110, 40,
+108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32, 32,105,
+102, 32, 40,105,117,112,108,117, 97, 95,111,112,101,110, 99, 97,108,108, 95,105,
+110,116,101,114,110, 97,108, 40, 76, 41, 41, 10, 32, 32, 32, 32, 73,117,112, 71,
+ 76, 67, 97,110,118, 97,115, 79,112,101,110, 40, 41, 59, 10, 10, 32, 32,105,117,
+112,108,117, 97, 95, 99,104, 97,110,103,101, 69,110,118, 40, 76, 41, 59, 10, 32,
+ 32,105,117,112,103,108, 99, 97,110,118, 97,115,108,117, 97, 95,111,112,101,110,
+ 40, 76, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,114,101,116,117,114,110,
+ 69,110,118, 40, 76, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 48, 59, 10,
+125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32,
+117,115,101, 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,103,108,
+ 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117,112,
+108,117, 97,103,108, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,
+123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,103,108,108,117, 97, 95,
+111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103,
+ 97,116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,101,
+ 34,105,117,112,108,117, 97,103,108, 53, 49, 34, 32, 42, 47, 10,105,110,116, 32,
+108,117, 97,111,112,101,110, 95,105,117,112,108,117, 97,103,108, 53, 49, 40,108,
+117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,
+117,114,110, 32,105,117,112,103,108,108,117, 97, 95,111,112,101,110, 40, 76, 41,
+ 59, 10,125, 10, 10, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,
+109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,
+114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,
+108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 43, 0, 2, 0,
+ 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0,
+ 30, 0, 0, 0, 1, 4, 0, 0, 0, 9, 71, 76, 67, 97,110,118, 97,115, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0,
+ 0, 0, 43, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,
+ 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0,
+ 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 38, 0, 0, 0,
+ 43, 0, 0, 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0,
+ 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0,
+ 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 12, 0, 0, 0, 21, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluagl51/glcanvas_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/glcanvas_be64.loh b/iup/srclua5/loh/glcanvas_be64.loh
new file mode 100755
index 0000000..ad012a5
--- /dev/null
+++ b/iup/srclua5/loh/glcanvas_be64.loh
@@ -0,0 +1,70 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluagl51/glcanvas_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluagl51/glcanvas_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64,103,108, 99, 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 0, 2, 0, 9, 64, 64,128, 69,192,
+ 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 9, 64, 66,132, 74, 64,
+ 0, 0, 73, 0,195,133, 9, 64, 0,133, 9,128,195,134, 9, 0,196,135,100, 0,
+ 0, 0, 9, 64,128,136, 69,128, 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192,
+ 4, 0,128, 0, 0, 0,193, 0, 5, 0, 92, 64,128, 1, 30, 0,128, 0, 21, 0,
+ 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0,103,108, 99, 97,110,118, 97,115, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+105,110, 99,108,117,100,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+103,108, 46,104, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97,
+ 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4,
+ 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63,
+ 4, 10, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97, 99,111,100,101, 0, 4,
+150, 1, 0, 0, 0, 0, 0, 0, 32, 10,105,110,116, 32,105,117,112,103,108,108,
+117, 97, 95,111,112,101,110, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32,
+ 76, 41, 10,123, 10, 32, 32,105,102, 32, 40,105,117,112,108,117, 97, 95,111,112,
+101,110, 99, 97,108,108, 95,105,110,116,101,114,110, 97,108, 40, 76, 41, 41, 10,
+ 32, 32, 32, 32, 73,117,112, 71, 76, 67, 97,110,118, 97,115, 79,112,101,110, 40,
+ 41, 59, 10, 10, 32, 32,105,117,112,108,117, 97, 95, 99,104, 97,110,103,101, 69,
+110,118, 40, 76, 41, 59, 10, 32, 32,105,117,112,103,108, 99, 97,110,118, 97,115,
+108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10, 32, 32,105,117,112,108,117,
+ 97, 95,114,101,116,117,114,110, 69,110,118, 40, 76, 41, 59, 10, 32, 32,114,101,
+116,117,114,110, 32, 48, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97,
+116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,101, 34,
+105,117,112,108,117, 97,103,108, 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97,
+111,112,101,110, 95,105,117,112,108,117, 97,103,108, 40,108,117, 97, 95, 83,116,
+ 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105,
+117,112,103,108,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10,
+ 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32,117,115,101,
+ 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,103,108, 53, 49, 34,
+ 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117,112,108,
+117, 97,103,108, 53, 49, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41,
+ 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,103,108,108,117, 97,
+ 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0,
+ 0, 43, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 42,
+ 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 2, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0,
+ 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0,
+ 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 38, 0, 0, 0, 43, 0, 0,
+ 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0,
+ 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 12, 0, 0, 0, 21, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluagl51/glcanvas_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/glcanvas_le64.loh b/iup/srclua5/loh/glcanvas_le64.loh
new file mode 100755
index 0000000..64b6ef4
--- /dev/null
+++ b/iup/srclua5/loh/glcanvas_le64.loh
@@ -0,0 +1,70 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluagl51/glcanvas_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluagl51/glcanvas_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64,103,108, 99, 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 0, 2, 0, 9, 64, 64,128, 69,192,
+ 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 9, 64, 66,132, 74, 64,
+ 0, 0, 73, 0,195,133, 9, 64, 0,133, 9,128,195,134, 9, 0,196,135,100, 0,
+ 0, 0, 9, 64,128,136, 69,128, 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192,
+ 4, 0,128, 0, 0, 0,193, 0, 5, 0, 92, 64,128, 1, 30, 0,128, 0, 21, 0,
+ 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0,103,108, 99, 97,110,118, 97,115, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+105,110, 99,108,117,100,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+103,108, 46,104, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97,
+ 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4,
+ 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63,
+ 4, 10, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97, 99,111,100,101, 0, 4,
+150, 1, 0, 0, 0, 0, 0, 0, 32, 10,105,110,116, 32,105,117,112,103,108,108,
+117, 97, 95,111,112,101,110, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32,
+ 76, 41, 10,123, 10, 32, 32,105,102, 32, 40,105,117,112,108,117, 97, 95,111,112,
+101,110, 99, 97,108,108, 95,105,110,116,101,114,110, 97,108, 40, 76, 41, 41, 10,
+ 32, 32, 32, 32, 73,117,112, 71, 76, 67, 97,110,118, 97,115, 79,112,101,110, 40,
+ 41, 59, 10, 10, 32, 32,105,117,112,108,117, 97, 95, 99,104, 97,110,103,101, 69,
+110,118, 40, 76, 41, 59, 10, 32, 32,105,117,112,103,108, 99, 97,110,118, 97,115,
+108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10, 32, 32,105,117,112,108,117,
+ 97, 95,114,101,116,117,114,110, 69,110,118, 40, 76, 41, 59, 10, 32, 32,114,101,
+116,117,114,110, 32, 48, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97,
+116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,101, 34,
+105,117,112,108,117, 97,103,108, 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97,
+111,112,101,110, 95,105,117,112,108,117, 97,103,108, 40,108,117, 97, 95, 83,116,
+ 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105,
+117,112,103,108,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10,
+ 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32,117,115,101,
+ 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,103,108, 53, 49, 34,
+ 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117,112,108,
+117, 97,103,108, 53, 49, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41,
+ 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,103,108,108,117, 97,
+ 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0,
+ 0, 43, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 42,
+ 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 2, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0,
+ 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0,
+ 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 38, 0, 0, 0, 43, 0, 0,
+ 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0,
+ 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 12, 0, 0, 0, 21, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluagl51/glcanvas_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/glcanvas_le64w.loh b/iup/srclua5/loh/glcanvas_le64w.loh
new file mode 100755
index 0000000..607c204
--- /dev/null
+++ b/iup/srclua5/loh/glcanvas_le64w.loh
@@ -0,0 +1,70 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluagl51/glcanvas_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluagl51/glcanvas_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64,103,108, 99, 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 0, 2, 0, 9, 64, 64,128, 69,192,
+ 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 9, 64, 66,132, 74, 64,
+ 0, 0, 73, 0,195,133, 9, 64, 0,133, 9,128,195,134, 9, 0,196,135,100, 0,
+ 0, 0, 9, 64,128,136, 69,128, 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192,
+ 4, 0,128, 0, 0, 0,193, 0, 5, 0, 92, 64,128, 1, 30, 0,128, 0, 21, 0,
+ 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0,103,108, 99, 97,110,118, 97,115, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+105,110, 99,108,117,100,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+103,108, 46,104, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97,
+ 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4,
+ 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63,
+ 4, 10, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97, 99,111,100,101, 0, 4,
+150, 1, 0, 0, 0, 0, 0, 0, 32, 10,105,110,116, 32,105,117,112,103,108,108,
+117, 97, 95,111,112,101,110, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32,
+ 76, 41, 10,123, 10, 32, 32,105,102, 32, 40,105,117,112,108,117, 97, 95,111,112,
+101,110, 99, 97,108,108, 95,105,110,116,101,114,110, 97,108, 40, 76, 41, 41, 10,
+ 32, 32, 32, 32, 73,117,112, 71, 76, 67, 97,110,118, 97,115, 79,112,101,110, 40,
+ 41, 59, 10, 10, 32, 32,105,117,112,108,117, 97, 95, 99,104, 97,110,103,101, 69,
+110,118, 40, 76, 41, 59, 10, 32, 32,105,117,112,103,108, 99, 97,110,118, 97,115,
+108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10, 32, 32,105,117,112,108,117,
+ 97, 95,114,101,116,117,114,110, 69,110,118, 40, 76, 41, 59, 10, 32, 32,114,101,
+116,117,114,110, 32, 48, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97,
+116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,101, 34,
+105,117,112,108,117, 97,103,108, 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97,
+111,112,101,110, 95,105,117,112,108,117, 97,103,108, 40,108,117, 97, 95, 83,116,
+ 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105,
+117,112,103,108,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10,
+ 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32,117,115,101,
+ 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,103,108, 53, 49, 34,
+ 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117,112,108,
+117, 97,103,108, 53, 49, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41,
+ 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,103,108,108,117, 97,
+ 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0,
+ 0, 43, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 42,
+ 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 2, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0,
+ 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0,
+ 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 38, 0, 0, 0, 43, 0, 0,
+ 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0,
+ 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 12, 0, 0, 0, 21, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluagl51/glcanvas_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/hbox.loh b/iup/srclua5/loh/hbox.loh
new file mode 100755
index 0000000..2ab8faa
--- /dev/null
+++ b/iup/srclua5/loh/hbox.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/hbox.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/hbox.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,104, 98,111,
+120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 19, 0,
+ 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131,100, 64,
+ 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128,
+ 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, 0,
+ 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0,104, 98,111,
+120, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 66,
+ 79, 88, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0,
+ 0, 0, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7,
+ 0, 0, 0, 97,112,112,101,110,100, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,
+105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112,
+ 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0,
+ 0, 0, 2, 0, 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128,
+ 0,156, 64,128, 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 65,112,
+112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0,
+ 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0,
+ 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,
+101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 15, 0, 0, 0, 17, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0,
+ 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0,
+ 0, 0, 72, 98,111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103,
+ 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0,
+ 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0,
+ 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0,
+ 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/hbox.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/hbox_be32.loh b/iup/srclua5/loh/hbox_be32.loh
new file mode 100755
index 0000000..dda429c
--- /dev/null
+++ b/iup/srclua5/loh/hbox_be32.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/hbox_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/hbox_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,104, 98,111,
+120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 19, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, 0,
+ 64,100,132, 0, 64, 9, 0, 2, 64, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,
+128, 69, 0, 0, 0,128, 0, 2,192,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0,
+ 0, 12, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 5,104, 98,111,
+120, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 4, 66,
+ 79, 88, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0,
+ 0, 2, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0,
+ 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,
+105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112,
+ 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,
+100,103,101,116, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0,
+ 13, 0, 2, 0, 5, 0, 0, 0, 5, 0, 0, 0,133, 0, 0, 0,192, 0,128, 1,
+ 0, 1,128, 64,156, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 7, 65,112,
+112,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0,
+ 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0,
+ 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5,
+101,108,101,109, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,
+133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0,
+ 0, 5, 72, 98,111,120, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
+ 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, 0,
+ 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0,
+ 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0,
+ 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 18, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/hbox_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/hbox_be64.loh b/iup/srclua5/loh/hbox_be64.loh
new file mode 100755
index 0000000..cfb75a5
--- /dev/null
+++ b/iup/srclua5/loh/hbox_be64.loh
@@ -0,0 +1,48 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/hbox_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/hbox_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,104, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,
+128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66,
+ 79, 88, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110,
+ 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,
+112,112,101,110,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0,
+ 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128,
+ 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,
+112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0,
+ 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0,
+ 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72, 98,
+111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0,
+ 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/hbox_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/hbox_le64.loh b/iup/srclua5/loh/hbox_le64.loh
new file mode 100755
index 0000000..fe0e07e
--- /dev/null
+++ b/iup/srclua5/loh/hbox_le64.loh
@@ -0,0 +1,48 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/hbox_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/hbox_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,104, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,
+128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66,
+ 79, 88, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110,
+ 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,
+112,112,101,110,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0,
+ 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128,
+ 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,
+112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0,
+ 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0,
+ 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72, 98,
+111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0,
+ 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/hbox_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/hbox_le64w.loh b/iup/srclua5/loh/hbox_le64w.loh
new file mode 100755
index 0000000..b56d7f4
--- /dev/null
+++ b/iup/srclua5/loh/hbox_le64w.loh
@@ -0,0 +1,48 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/hbox_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/hbox_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,104, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,
+128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66,
+ 79, 88, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110,
+ 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,
+112,112,101,110,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0,
+ 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128,
+ 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,
+112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0,
+ 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0,
+ 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72, 98,
+111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0,
+ 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/hbox_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/image.loh b/iup/srclua5/loh/image.loh
new file mode 100755
index 0000000..7dc84a1
--- /dev/null
+++ b/iup/srclua5/loh/image.loh
@@ -0,0 +1,127 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/image.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/image.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,105,109, 97,
+103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 18,
+ 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9,
+ 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100, 0, 0, 0, 9,
+ 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128,
+ 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4,
+ 5, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0,105,109, 97,103,101, 0,
+ 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4,
+ 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 11, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 59, 6,
+ 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101,
+ 32, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32,
+ 32,105,110,116, 32,119, 44, 32,104, 44, 32, 99, 44, 32,110,117,109, 95, 99,111,
+108,111,114,115, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97,
+114, 32, 42,112,105,120,101,108,115, 59, 10, 32, 32, 73,104, 97,110,100,108,101,
+ 42, 32,105,104, 59, 10, 32, 32, 99,104, 97,114, 32,115,116,114, 91, 50, 48, 93,
+ 59, 10, 10, 32, 32,105,102, 32, 40,108,117, 97, 95,105,115,116, 97, 98,108,101,
+ 40, 76, 44, 32, 49, 41, 41, 10, 32, 32,123, 10, 32, 32, 32, 32,105,110,116, 32,
+105, 44, 32,106, 59, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32,116,104,
+101, 32,110,117,109, 98,101,114, 32,111,102, 32,108,105,110,101,115, 32, 42, 47,
+ 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76,
+ 44, 32, 49, 41, 59, 32, 32, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32,
+116,104,101, 32,110,117,109, 98,101,114, 32,111,102, 32, 99,111,108,117,109,110,
+115, 32,111,102, 32,116,104,101, 32,102,105,114,115,116, 32,108,105,110,101, 32,
+ 42, 47, 10, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,101,
+114, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,108,117, 97, 95,103,101,116,
+116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,119, 32, 61,
+ 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, 32, 45, 49, 41, 59, 32, 32,
+ 10, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10,
+ 32, 32, 32, 32, 10, 32, 32, 32, 32,112,105,120,101,108,115, 32, 61, 32, 40,117,
+110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42, 41, 32,109, 97,108,108,
+111, 99, 32, 40,104, 42,119, 41, 59, 10, 10, 32, 32, 32, 32,102,111,114, 32, 40,
+105, 61, 49, 59, 32,105, 60, 61,104, 59, 32,105, 43, 43, 41, 10, 32, 32, 32, 32,
+123, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,
+101,114, 40, 76, 44, 32,105, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,
+103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,
+ 32, 32,102,111,114, 32, 40,106, 61, 49, 59, 32,106, 60, 61,119, 59, 32,106, 43,
+ 43, 41, 10, 32, 32, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,
+110,116, 32,105,100,120, 32, 61, 32, 40,105, 45, 49, 41, 42,119, 43, 40,106, 45,
+ 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,
+110,117,109, 98,101,114, 40, 76, 44, 32,106, 41, 59, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 45, 50,
+ 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,105,120,101,108,115, 91,105,100,
+120, 93, 32, 61, 32, 40,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 41,
+108,117, 97, 95,116,111,110,117,109, 98,101,114, 40, 76, 44, 32, 45, 49, 41, 59,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32,
+ 49, 41, 59, 10, 32, 32, 32, 32, 32, 32,125, 10, 32, 32, 32, 32, 32, 32,108,117,
+ 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32,
+ 32, 32, 32, 10, 32, 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,
+101, 40,119, 44,104, 44,112,105,120,101,108,115, 41, 59, 32, 32, 10, 32, 32, 32,
+ 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32,
+110,117,109, 95, 99,111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101,
+116,110, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111,
+108,111,114,115, 32, 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53,
+ 53, 63, 32, 50, 53, 53, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10,
+ 32, 32, 32, 32,102,111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95,
+ 99,111,108,111,114,115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32,
+ 32, 32, 32, 32, 32,108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32,
+ 50, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102,
+ 40,115,116,114, 44, 32, 34, 37,100, 34, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32,
+ 32, 32, 73,117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40,
+105,104, 44, 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110,
+103, 40, 76, 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,
+112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125,
+ 10, 32, 32,101,108,115,101, 10, 32, 32,123, 10, 32, 32, 32, 32,119, 32, 61, 32,
+108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59,
+ 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,
+110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,112,105,120,101,108,115,
+ 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114,
+ 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 41, 59, 10, 32,
+ 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 40,119, 44, 32,
+104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32, 32, 32,102,114,101,101,
+ 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32,110,117,109, 95, 99,
+111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44,
+ 32, 52, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111,108,111,114,115, 32,
+ 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53, 54, 63, 32, 50, 53,
+ 54, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10, 32, 32, 32, 32,102,
+111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95, 99,111,108,111,114,
+115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32,
+108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32, 52, 44, 32, 99, 41,
+ 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102, 40,115,116,114, 44,
+ 32, 34, 37,100, 34, 44, 32, 99, 45, 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 73,
+117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40,105,104, 44,
+ 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110,103, 40, 76,
+ 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112,
+ 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125, 10, 10, 32,
+ 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44,
+ 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,
+104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32,
+ 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 32, 10, 32, 10, 0, 4, 14, 0,
+ 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0,
+ 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4,
+ 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 87, 0, 0, 0, 93, 0, 0, 0, 0, 2, 0, 7, 23, 0, 0, 0,134, 0,192, 0,
+154, 0, 0, 0, 22, 64, 3,128,134, 64,192, 0,154, 0, 0, 0, 22,128, 2,128,
+134,128,192, 0,154, 0, 0, 0, 22,192, 1,128,133,192, 0, 0,198, 0,192, 0,
+ 6, 65,192, 0, 70,129,192, 0,134, 1,193, 0,157, 0,128, 2,158, 0, 0, 0,
+ 22, 0, 1,128,133,192, 0, 0,192, 0,128, 0, 6, 1,193, 0,157, 0,128, 1,
+158, 0, 0, 0, 30, 0,128, 0, 5, 0, 0, 0, 4, 6, 0, 0, 0,119,105,100,
+116,104, 0, 4, 7, 0, 0, 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0,
+112,105,120,101,108,115, 0, 4, 6, 0, 0, 0, 73,109, 97,103,101, 0, 4, 7,
+ 0, 0, 0, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 23, 0, 0, 0, 88, 0,
+ 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0,
+ 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0,
+ 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0,
+ 0, 0, 89, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0,
+ 0, 0, 91, 0, 0, 0, 93, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 8, 0, 0, 0, 84, 0, 0, 0, 93, 0, 0, 0, 87, 0, 0, 0, 95, 0, 0, 0,
+ 95, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0,
+ 96, 0, 0, 0, 96, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108,
+ 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/image.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/image_be32.loh b/iup/srclua5/loh/image_be32.loh
new file mode 100755
index 0000000..87231d9
--- /dev/null
+++ b/iup/srclua5/loh/image_be32.loh
@@ -0,0 +1,127 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/image_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/image_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,105,109, 97,
+103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0,
+ 0, 0, 18, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130,
+ 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9,131,194, 0, 9, 0, 0, 0,100,132,
+128, 64, 9, 0, 2,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,192, 69, 0,
+ 0, 0,128, 0, 3, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 13, 4,
+ 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 6,105,109, 97,103,101, 0,
+ 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68,
+ 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0,
+ 0, 0, 4,110,110,115, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 0, 0, 0, 11, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 0, 0,
+ 6, 59, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101,
+ 32, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32,
+ 32,105,110,116, 32,119, 44, 32,104, 44, 32, 99, 44, 32,110,117,109, 95, 99,111,
+108,111,114,115, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97,
+114, 32, 42,112,105,120,101,108,115, 59, 10, 32, 32, 73,104, 97,110,100,108,101,
+ 42, 32,105,104, 59, 10, 32, 32, 99,104, 97,114, 32,115,116,114, 91, 50, 48, 93,
+ 59, 10, 10, 32, 32,105,102, 32, 40,108,117, 97, 95,105,115,116, 97, 98,108,101,
+ 40, 76, 44, 32, 49, 41, 41, 10, 32, 32,123, 10, 32, 32, 32, 32,105,110,116, 32,
+105, 44, 32,106, 59, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32,116,104,
+101, 32,110,117,109, 98,101,114, 32,111,102, 32,108,105,110,101,115, 32, 42, 47,
+ 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76,
+ 44, 32, 49, 41, 59, 32, 32, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32,
+116,104,101, 32,110,117,109, 98,101,114, 32,111,102, 32, 99,111,108,117,109,110,
+115, 32,111,102, 32,116,104,101, 32,102,105,114,115,116, 32,108,105,110,101, 32,
+ 42, 47, 10, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,101,
+114, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,108,117, 97, 95,103,101,116,
+116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,119, 32, 61,
+ 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, 32, 45, 49, 41, 59, 32, 32,
+ 10, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10,
+ 32, 32, 32, 32, 10, 32, 32, 32, 32,112,105,120,101,108,115, 32, 61, 32, 40,117,
+110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42, 41, 32,109, 97,108,108,
+111, 99, 32, 40,104, 42,119, 41, 59, 10, 10, 32, 32, 32, 32,102,111,114, 32, 40,
+105, 61, 49, 59, 32,105, 60, 61,104, 59, 32,105, 43, 43, 41, 10, 32, 32, 32, 32,
+123, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,
+101,114, 40, 76, 44, 32,105, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,
+103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,
+ 32, 32,102,111,114, 32, 40,106, 61, 49, 59, 32,106, 60, 61,119, 59, 32,106, 43,
+ 43, 41, 10, 32, 32, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,
+110,116, 32,105,100,120, 32, 61, 32, 40,105, 45, 49, 41, 42,119, 43, 40,106, 45,
+ 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,
+110,117,109, 98,101,114, 40, 76, 44, 32,106, 41, 59, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 45, 50,
+ 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,105,120,101,108,115, 91,105,100,
+120, 93, 32, 61, 32, 40,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 41,
+108,117, 97, 95,116,111,110,117,109, 98,101,114, 40, 76, 44, 32, 45, 49, 41, 59,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32,
+ 49, 41, 59, 10, 32, 32, 32, 32, 32, 32,125, 10, 32, 32, 32, 32, 32, 32,108,117,
+ 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32,
+ 32, 32, 32, 10, 32, 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,
+101, 40,119, 44,104, 44,112,105,120,101,108,115, 41, 59, 32, 32, 10, 32, 32, 32,
+ 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32,
+110,117,109, 95, 99,111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101,
+116,110, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111,
+108,111,114,115, 32, 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53,
+ 53, 63, 32, 50, 53, 53, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10,
+ 32, 32, 32, 32,102,111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95,
+ 99,111,108,111,114,115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32,
+ 32, 32, 32, 32, 32,108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32,
+ 50, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102,
+ 40,115,116,114, 44, 32, 34, 37,100, 34, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32,
+ 32, 32, 73,117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40,
+105,104, 44, 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110,
+103, 40, 76, 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,
+112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125,
+ 10, 32, 32,101,108,115,101, 10, 32, 32,123, 10, 32, 32, 32, 32,119, 32, 61, 32,
+108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59,
+ 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,
+110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,112,105,120,101,108,115,
+ 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114,
+ 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 41, 59, 10, 32,
+ 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 40,119, 44, 32,
+104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32, 32, 32,102,114,101,101,
+ 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32,110,117,109, 95, 99,
+111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44,
+ 32, 52, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111,108,111,114,115, 32,
+ 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53, 54, 63, 32, 50, 53,
+ 54, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10, 32, 32, 32, 32,102,
+111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95, 99,111,108,111,114,
+115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32,
+108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32, 52, 44, 32, 99, 41,
+ 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102, 40,115,116,114, 44,
+ 32, 34, 37,100, 34, 44, 32, 99, 45, 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 73,
+117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40,105,104, 44,
+ 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110,103, 40, 76,
+ 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112,
+ 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125, 10, 10, 32,
+ 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44,
+ 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,
+104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32,
+ 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 32, 10, 32, 10, 0, 4, 0, 0,
+ 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0,
+ 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4,
+ 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0,
+ 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 87, 0, 0, 0, 93, 0, 2, 0, 7, 0, 0, 0, 23, 0,192, 0,134,
+ 0, 0, 0,154,128, 3, 64, 22, 0,192, 64,134, 0, 0, 0,154,128, 2,128, 22,
+ 0,192,128,134, 0, 0, 0,154,128, 1,192, 22, 0, 0,192,133, 0,192, 0,198,
+ 0,192, 65, 6, 0,192,129, 70, 0,193, 1,134, 2,128, 0,157, 0, 0, 0,158,
+128, 1, 0, 22, 0, 0,192,133, 0,128, 0,192, 0,193, 1, 6, 1,128, 0,157,
+ 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 5, 4, 0, 0, 0, 6,119,105,100,
+116,104, 0, 4, 0, 0, 0, 7,104,101,105,103,104,116, 0, 4, 0, 0, 0, 7,
+112,105,120,101,108,115, 0, 4, 0, 0, 0, 6, 73,109, 97,103,101, 0, 4, 0,
+ 0, 0, 7, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0,
+ 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0,
+ 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0,
+ 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0,
+ 0, 89, 0, 0, 0, 89, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0,
+ 0, 91, 0, 0, 0, 91, 0, 0, 0, 93, 0, 0, 0, 2, 0, 0, 0, 6, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 97,114,103, 0,
+ 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4,
+ 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8,
+ 0, 0, 0, 8, 0, 0, 0, 84, 0, 0, 0, 93, 0, 0, 0, 87, 0, 0, 0, 95,
+ 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96,
+ 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108,
+ 0, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/image_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/image_be64.loh b/iup/srclua5/loh/image_be64.loh
new file mode 100755
index 0000000..d82ee9b
--- /dev/null
+++ b/iup/srclua5/loh/image_be64.loh
@@ -0,0 +1,132 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/image_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/image_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,109, 97,103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100,
+ 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,105,109, 97,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 59, 6, 0, 0, 0, 0,
+ 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101,
+ 32, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32,
+ 32,105,110,116, 32,119, 44, 32,104, 44, 32, 99, 44, 32,110,117,109, 95, 99,111,
+108,111,114,115, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97,
+114, 32, 42,112,105,120,101,108,115, 59, 10, 32, 32, 73,104, 97,110,100,108,101,
+ 42, 32,105,104, 59, 10, 32, 32, 99,104, 97,114, 32,115,116,114, 91, 50, 48, 93,
+ 59, 10, 10, 32, 32,105,102, 32, 40,108,117, 97, 95,105,115,116, 97, 98,108,101,
+ 40, 76, 44, 32, 49, 41, 41, 10, 32, 32,123, 10, 32, 32, 32, 32,105,110,116, 32,
+105, 44, 32,106, 59, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32,116,104,
+101, 32,110,117,109, 98,101,114, 32,111,102, 32,108,105,110,101,115, 32, 42, 47,
+ 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76,
+ 44, 32, 49, 41, 59, 32, 32, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32,
+116,104,101, 32,110,117,109, 98,101,114, 32,111,102, 32, 99,111,108,117,109,110,
+115, 32,111,102, 32,116,104,101, 32,102,105,114,115,116, 32,108,105,110,101, 32,
+ 42, 47, 10, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,101,
+114, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,108,117, 97, 95,103,101,116,
+116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,119, 32, 61,
+ 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, 32, 45, 49, 41, 59, 32, 32,
+ 10, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10,
+ 32, 32, 32, 32, 10, 32, 32, 32, 32,112,105,120,101,108,115, 32, 61, 32, 40,117,
+110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42, 41, 32,109, 97,108,108,
+111, 99, 32, 40,104, 42,119, 41, 59, 10, 10, 32, 32, 32, 32,102,111,114, 32, 40,
+105, 61, 49, 59, 32,105, 60, 61,104, 59, 32,105, 43, 43, 41, 10, 32, 32, 32, 32,
+123, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,
+101,114, 40, 76, 44, 32,105, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,
+103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,
+ 32, 32,102,111,114, 32, 40,106, 61, 49, 59, 32,106, 60, 61,119, 59, 32,106, 43,
+ 43, 41, 10, 32, 32, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,
+110,116, 32,105,100,120, 32, 61, 32, 40,105, 45, 49, 41, 42,119, 43, 40,106, 45,
+ 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,
+110,117,109, 98,101,114, 40, 76, 44, 32,106, 41, 59, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 45, 50,
+ 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,105,120,101,108,115, 91,105,100,
+120, 93, 32, 61, 32, 40,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 41,
+108,117, 97, 95,116,111,110,117,109, 98,101,114, 40, 76, 44, 32, 45, 49, 41, 59,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32,
+ 49, 41, 59, 10, 32, 32, 32, 32, 32, 32,125, 10, 32, 32, 32, 32, 32, 32,108,117,
+ 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32,
+ 32, 32, 32, 10, 32, 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,
+101, 40,119, 44,104, 44,112,105,120,101,108,115, 41, 59, 32, 32, 10, 32, 32, 32,
+ 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32,
+110,117,109, 95, 99,111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101,
+116,110, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111,
+108,111,114,115, 32, 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53,
+ 53, 63, 32, 50, 53, 53, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10,
+ 32, 32, 32, 32,102,111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95,
+ 99,111,108,111,114,115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32,
+ 32, 32, 32, 32, 32,108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32,
+ 50, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102,
+ 40,115,116,114, 44, 32, 34, 37,100, 34, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32,
+ 32, 32, 73,117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40,
+105,104, 44, 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110,
+103, 40, 76, 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,
+112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125,
+ 10, 32, 32,101,108,115,101, 10, 32, 32,123, 10, 32, 32, 32, 32,119, 32, 61, 32,
+108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59,
+ 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,
+110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,112,105,120,101,108,115,
+ 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114,
+ 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 41, 59, 10, 32,
+ 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 40,119, 44, 32,
+104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32, 32, 32,102,114,101,101,
+ 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32,110,117,109, 95, 99,
+111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44,
+ 32, 52, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111,108,111,114,115, 32,
+ 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53, 54, 63, 32, 50, 53,
+ 54, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10, 32, 32, 32, 32,102,
+111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95, 99,111,108,111,114,
+115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32,
+108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32, 52, 44, 32, 99, 41,
+ 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102, 40,115,116,114, 44,
+ 32, 34, 37,100, 34, 44, 32, 99, 45, 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 73,
+117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40,105,104, 44,
+ 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110,103, 40, 76,
+ 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112,
+ 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125, 10, 10, 32,
+ 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44,
+ 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,
+104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32,
+ 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 32, 10, 32, 10, 0, 4, 14, 0,
+ 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0,
+ 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114,
+ 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,
+101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+ 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 87, 0, 0, 0, 93, 0, 0, 0, 0, 2, 0, 7, 23, 0, 0, 0,134, 0,192, 0,
+154, 0, 0, 0, 22, 64, 3,128,134, 64,192, 0,154, 0, 0, 0, 22,128, 2,128,
+134,128,192, 0,154, 0, 0, 0, 22,192, 1,128,133,192, 0, 0,198, 0,192, 0,
+ 6, 65,192, 0, 70,129,192, 0,134, 1,193, 0,157, 0,128, 2,158, 0, 0, 0,
+ 22, 0, 1,128,133,192, 0, 0,192, 0,128, 0, 6, 1,193, 0,157, 0,128, 1,
+158, 0, 0, 0, 30, 0,128, 0, 5, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0,
+ 0,119,105,100,116,104, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104,101,105,103,
+104,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,105,120,101,108,115, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 23, 0, 0, 0, 88, 0,
+ 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0,
+ 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0,
+ 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0,
+ 0, 0, 89, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0,
+ 0, 0, 91, 0, 0, 0, 93, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 84, 0, 0, 0, 93, 0, 0, 0,
+ 87, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0,
+ 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 1, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0,
+ 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/image_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/image_le64.loh b/iup/srclua5/loh/image_le64.loh
new file mode 100755
index 0000000..64ea753
--- /dev/null
+++ b/iup/srclua5/loh/image_le64.loh
@@ -0,0 +1,132 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/image_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/image_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,109, 97,103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100,
+ 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,105,109, 97,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 59, 6, 0, 0, 0, 0,
+ 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101,
+ 32, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32,
+ 32,105,110,116, 32,119, 44, 32,104, 44, 32, 99, 44, 32,110,117,109, 95, 99,111,
+108,111,114,115, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97,
+114, 32, 42,112,105,120,101,108,115, 59, 10, 32, 32, 73,104, 97,110,100,108,101,
+ 42, 32,105,104, 59, 10, 32, 32, 99,104, 97,114, 32,115,116,114, 91, 50, 48, 93,
+ 59, 10, 10, 32, 32,105,102, 32, 40,108,117, 97, 95,105,115,116, 97, 98,108,101,
+ 40, 76, 44, 32, 49, 41, 41, 10, 32, 32,123, 10, 32, 32, 32, 32,105,110,116, 32,
+105, 44, 32,106, 59, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32,116,104,
+101, 32,110,117,109, 98,101,114, 32,111,102, 32,108,105,110,101,115, 32, 42, 47,
+ 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76,
+ 44, 32, 49, 41, 59, 32, 32, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32,
+116,104,101, 32,110,117,109, 98,101,114, 32,111,102, 32, 99,111,108,117,109,110,
+115, 32,111,102, 32,116,104,101, 32,102,105,114,115,116, 32,108,105,110,101, 32,
+ 42, 47, 10, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,101,
+114, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,108,117, 97, 95,103,101,116,
+116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,119, 32, 61,
+ 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, 32, 45, 49, 41, 59, 32, 32,
+ 10, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10,
+ 32, 32, 32, 32, 10, 32, 32, 32, 32,112,105,120,101,108,115, 32, 61, 32, 40,117,
+110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42, 41, 32,109, 97,108,108,
+111, 99, 32, 40,104, 42,119, 41, 59, 10, 10, 32, 32, 32, 32,102,111,114, 32, 40,
+105, 61, 49, 59, 32,105, 60, 61,104, 59, 32,105, 43, 43, 41, 10, 32, 32, 32, 32,
+123, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,
+101,114, 40, 76, 44, 32,105, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,
+103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,
+ 32, 32,102,111,114, 32, 40,106, 61, 49, 59, 32,106, 60, 61,119, 59, 32,106, 43,
+ 43, 41, 10, 32, 32, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,
+110,116, 32,105,100,120, 32, 61, 32, 40,105, 45, 49, 41, 42,119, 43, 40,106, 45,
+ 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,
+110,117,109, 98,101,114, 40, 76, 44, 32,106, 41, 59, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 45, 50,
+ 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,105,120,101,108,115, 91,105,100,
+120, 93, 32, 61, 32, 40,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 41,
+108,117, 97, 95,116,111,110,117,109, 98,101,114, 40, 76, 44, 32, 45, 49, 41, 59,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32,
+ 49, 41, 59, 10, 32, 32, 32, 32, 32, 32,125, 10, 32, 32, 32, 32, 32, 32,108,117,
+ 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32,
+ 32, 32, 32, 10, 32, 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,
+101, 40,119, 44,104, 44,112,105,120,101,108,115, 41, 59, 32, 32, 10, 32, 32, 32,
+ 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32,
+110,117,109, 95, 99,111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101,
+116,110, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111,
+108,111,114,115, 32, 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53,
+ 53, 63, 32, 50, 53, 53, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10,
+ 32, 32, 32, 32,102,111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95,
+ 99,111,108,111,114,115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32,
+ 32, 32, 32, 32, 32,108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32,
+ 50, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102,
+ 40,115,116,114, 44, 32, 34, 37,100, 34, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32,
+ 32, 32, 73,117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40,
+105,104, 44, 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110,
+103, 40, 76, 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,
+112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125,
+ 10, 32, 32,101,108,115,101, 10, 32, 32,123, 10, 32, 32, 32, 32,119, 32, 61, 32,
+108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59,
+ 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,
+110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,112,105,120,101,108,115,
+ 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114,
+ 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 41, 59, 10, 32,
+ 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 40,119, 44, 32,
+104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32, 32, 32,102,114,101,101,
+ 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32,110,117,109, 95, 99,
+111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44,
+ 32, 52, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111,108,111,114,115, 32,
+ 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53, 54, 63, 32, 50, 53,
+ 54, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10, 32, 32, 32, 32,102,
+111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95, 99,111,108,111,114,
+115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32,
+108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32, 52, 44, 32, 99, 41,
+ 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102, 40,115,116,114, 44,
+ 32, 34, 37,100, 34, 44, 32, 99, 45, 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 73,
+117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40,105,104, 44,
+ 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110,103, 40, 76,
+ 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112,
+ 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125, 10, 10, 32,
+ 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44,
+ 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,
+104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32,
+ 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 32, 10, 32, 10, 0, 4, 14, 0,
+ 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0,
+ 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114,
+ 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,
+101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+ 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 87, 0, 0, 0, 93, 0, 0, 0, 0, 2, 0, 7, 23, 0, 0, 0,134, 0,192, 0,
+154, 0, 0, 0, 22, 64, 3,128,134, 64,192, 0,154, 0, 0, 0, 22,128, 2,128,
+134,128,192, 0,154, 0, 0, 0, 22,192, 1,128,133,192, 0, 0,198, 0,192, 0,
+ 6, 65,192, 0, 70,129,192, 0,134, 1,193, 0,157, 0,128, 2,158, 0, 0, 0,
+ 22, 0, 1,128,133,192, 0, 0,192, 0,128, 0, 6, 1,193, 0,157, 0,128, 1,
+158, 0, 0, 0, 30, 0,128, 0, 5, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0,
+ 0,119,105,100,116,104, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104,101,105,103,
+104,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,105,120,101,108,115, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 23, 0, 0, 0, 88, 0,
+ 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0,
+ 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0,
+ 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0,
+ 0, 0, 89, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0,
+ 0, 0, 91, 0, 0, 0, 93, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 84, 0, 0, 0, 93, 0, 0, 0,
+ 87, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0,
+ 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 1, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0,
+ 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/image_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/image_le64w.loh b/iup/srclua5/loh/image_le64w.loh
new file mode 100755
index 0000000..c732956
--- /dev/null
+++ b/iup/srclua5/loh/image_le64w.loh
@@ -0,0 +1,90 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/image_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/image_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,109, 97,103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100,
+ 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,105,109, 97,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4,170, 3, 0, 0, 0, 0,
+ 0, 0, 32, 10, 35,105,110, 99,108,117,100,101, 60,115,116,100,108,105, 98, 46,
+104, 62, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101, 32,
+ 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32, 32,
+105,110,116, 32,119, 44, 32,104, 44, 32,105, 44, 32,106, 59, 10, 32, 32,117,110,
+115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42,105,109,103, 59, 10, 32, 32,
+ 73,104, 97,110,100,108,101, 32, 42,105,109, 97,103,101, 59, 10, 32, 32, 10, 32,
+ 32,104, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, 32, 49, 41,
+ 59, 10, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,101,114, 40, 76,
+ 44, 32, 49, 41, 59, 10, 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101,
+ 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,119, 32, 61, 32,108,117, 97, 76, 95,103,
+101,116,110, 40, 76, 44, 32, 45, 49, 41, 59, 10, 32, 32,108,117, 97, 95,112,111,
+112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 10, 32, 32,105,109,103, 32, 61, 32,
+ 40,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42, 41, 32,109, 97,
+108,108,111, 99, 32, 40,104, 42,119, 41, 59, 10, 10, 32, 32,102,111,114, 32, 40,
+105, 61, 49, 59, 32,105, 60, 61,104, 59, 32,105, 43, 43, 41, 10, 32, 32,123, 10,
+ 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,101,114, 40, 76,
+ 44, 32,105, 41, 59, 10, 32, 32, 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,
+108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,102,111,114, 32, 40,106,
+ 61, 49, 59, 32,106, 60, 61,119, 59, 32,106, 43, 43, 41, 10, 32, 32, 32, 32,123,
+ 10, 32, 32, 32, 32, 32, 32,105,110,116, 32,105,100,120, 32, 61, 32, 40,105, 45,
+ 49, 41, 42,119, 43, 40,106, 45, 49, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117,
+ 97, 95,112,117,115,104,110,117,109, 98,101,114, 40, 76, 44, 32,106, 41, 59, 10,
+ 32, 32, 32, 32, 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101, 40, 76,
+ 44, 32, 45, 50, 41, 59, 10, 32, 32, 32, 32, 32, 32,105,109,103, 91,105,100,120,
+ 93, 32, 61, 32, 40,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 41,108,
+117, 97, 95,116,111,110,117,109, 98,101,114, 40, 76, 44, 32, 45, 49, 41, 59, 10,
+ 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59,
+ 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76,
+ 44, 32, 49, 41, 59, 10, 32, 32,125, 10, 32, 32, 10, 32, 32,105,109, 97,103,101,
+ 32, 61, 32, 73,117,112, 73,109, 97,103,101, 40,119, 44,104, 44,105,109,103, 41,
+ 59, 32, 32, 10, 32, 32,102,114,101,101, 40,105,109,103, 41, 59, 10, 10, 32, 32,
+119, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, 32, 50, 41, 59,
+ 10, 10, 32, 32,102,111,114, 40,105, 61, 49, 59, 32,105, 60, 61,119, 59, 32,105,
+ 43, 43, 41, 10, 32, 32,123, 10, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,
+110,117,109, 98,101,114, 40, 76, 44,105, 41, 59, 10, 32, 32, 32, 32,108,117, 97,
+ 95,112,117,115,104,110,117,109, 98,101,114, 40, 76, 44,105, 41, 59, 10, 32, 32,
+ 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 50, 41,
+ 59, 10, 32, 32, 32, 32, 73,117,112, 83,116,111,114,101, 65,116,116,114,105, 98,
+117,116,101, 40,105,109, 97,103,101, 44, 32, 40, 99,104, 97,114, 32, 42, 41, 32,
+108,117, 97, 95,116,111,115,116,114,105,110,103, 40, 76, 44, 45, 50, 41, 44, 32,
+ 40, 99,104, 97,114, 32, 42, 41, 32,108,117, 97, 95,116,111,115,116,114,105,110,
+103, 40, 76, 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32,108,117, 97, 95,112,111,
+112, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,125, 10, 32, 32, 10, 32, 32,105,117,
+112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,105,109,
+ 97,103,101, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,
+104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,109, 97,103,101, 41,
+ 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 32, 10, 32, 10, 0,
+ 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 62, 0, 0, 0, 64, 0, 0, 0, 0, 2, 0, 5, 6, 0, 0, 0,133,
+ 0, 0, 0,192, 0,128, 0, 6, 65,192, 0,157, 0,128, 1,158, 0, 0, 0, 30,
+ 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,
+101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 99,111,108,111,114,115, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0,
+ 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+ 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 59, 0, 0, 0, 64, 0, 0, 0,
+ 62, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0,
+ 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 1, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0,
+ 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/image_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/imagergb.loh b/iup/srclua5/loh/imagergb.loh
new file mode 100755
index 0000000..dd73833
--- /dev/null
+++ b/iup/srclua5/loh/imagergb.loh
@@ -0,0 +1,58 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/imagergb.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/imagergb.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 14, 0, 0, 0, 64,105,109, 97,
+103,101,114,103, 98, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,132, 9,128,
+194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,
+128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0,
+ 0,105,109, 97,103,101,114,103, 98, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0,110,110,115, 0, 4, 9, 0,
+ 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 73,109, 97,103,
+101, 82, 71, 66, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4,
+ 11, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 44, 1, 0, 0,
+ 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101, 82, 71,
+ 66, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32,
+105,110,116, 32,119, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110,
+116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105,110,116, 32,104, 32, 61, 32,108,
+117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 50, 41, 59, 10,
+ 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42,112,105,120,
+101,108,115, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,117, 99,
+104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 42,
+ 51, 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,105,104, 32, 61, 32,
+ 73,117,112, 73,109, 97,103,101, 82, 71, 66, 40,119, 44, 32,104, 44, 32,112,105,
+120,101,108,115, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,108,117,103,
+115,116, 97,116,101, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,
+117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,114, 97,119, 40, 76,
+ 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101,101, 40,112,105,120,101,108,115,
+ 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10, 32, 10, 0,
+ 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 6, 7, 0, 0, 0,133,
+ 0, 0, 0,198, 64,192, 0, 6,129,192, 0, 70,193,192, 0,157, 0, 0, 2,158,
+ 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, 9, 0, 0, 0, 73,109, 97,103,
+101, 82, 71, 66, 0, 4, 6, 0, 0, 0,119,105,100,116,104, 0, 4, 7, 0, 0,
+ 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0,112,105,120,101,108,115, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0,
+ 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0,
+ 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0,
+ 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0,
+ 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0,
+ 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0,
+ 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergb.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/imagergb_be32.loh b/iup/srclua5/loh/imagergb_be32.loh
new file mode 100755
index 0000000..5825d4d
--- /dev/null
+++ b/iup/srclua5/loh/imagergb_be32.loh
@@ -0,0 +1,58 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/imagergb_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/imagergb_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 14, 64,105,109, 97,
+103,101,114,103, 98, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 0, 0, 0, 19, 0, 1,128, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0,
+ 64, 9,130, 65, 64, 9,131, 65,192, 9, 0, 0, 0, 74,132, 0, 64, 9,132,194,
+128, 9, 0, 0, 0,100,133,128, 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1, 0,
+ 64, 92, 0, 3, 64, 69, 0, 0, 0,128, 0, 3,128,193, 1,128, 64, 92, 0,128,
+ 0, 30, 0, 0, 0, 15, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0,
+ 9,105,109, 97,103,101,114,103, 98, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,
+116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,
+114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 4,110,110,115, 0, 4, 0, 0,
+ 0, 9,102,117,110, 99,110, 97,109,101, 0, 4, 0, 0, 0, 9, 73,109, 97,103,
+101, 82, 71, 66, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4,
+ 0, 0, 0, 11, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 0, 0, 1, 44,
+ 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101, 82, 71,
+ 66, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32,
+105,110,116, 32,119, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110,
+116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105,110,116, 32,104, 32, 61, 32,108,
+117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 50, 41, 59, 10,
+ 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42,112,105,120,
+101,108,115, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,117, 99,
+104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 42,
+ 51, 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,105,104, 32, 61, 32,
+ 73,117,112, 73,109, 97,103,101, 82, 71, 66, 40,119, 44, 32,104, 44, 32,112,105,
+120,101,108,115, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,108,117,103,
+115,116, 97,116,101, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,
+117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,114, 97,119, 40, 76,
+ 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101,101, 40,112,105,120,101,108,115,
+ 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10, 32, 10, 0,
+ 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 2, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0,133, 0,192, 64,198, 0,192,129, 6, 0,192,193, 70, 2, 0, 0,157, 0,
+ 0, 0,158, 0,128, 0, 30, 0, 0, 0, 4, 4, 0, 0, 0, 9, 73,109, 97,103,
+101, 82, 71, 66, 0, 4, 0, 0, 0, 6,119,105,100,116,104, 0, 4, 0, 0, 0,
+ 7,104,101,105,103,104,116, 0, 4, 0, 0, 0, 7,112,105,120,101,108,115, 0,
+ 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27,
+ 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2,
+ 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0,
+ 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0,
+ 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0,
+ 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 23, 0, 0,
+ 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0,
+ 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0,
+ 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergb_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/imagergb_be64.loh b/iup/srclua5/loh/imagergb_be64.loh
new file mode 100755
index 0000000..b0d488f
--- /dev/null
+++ b/iup/srclua5/loh/imagergb_be64.loh
@@ -0,0 +1,62 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/imagergb_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/imagergb_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,109, 97,103,101,114,103, 98, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192,
+ 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64,
+ 0,132, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0,
+ 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,
+128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,
+105, 99,107, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101,114,103,
+ 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0, 0, 0, 0,
+ 0,110,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,
+109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, 66,
+ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4,
+ 44, 1, 0, 0, 0, 0, 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116,
+ 32, 73,109, 97,103,101, 82, 71, 66, 40,108,117, 97, 95, 83,116, 97,116,101, 32,
+ 42, 76, 41, 10,123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32,108,117, 97, 76,
+ 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105,
+110,116, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116,
+ 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,
+104, 97,114, 32, 42,112,105,120,101,108,115, 32, 61, 32,105,117,112,108,117, 97,
+ 95, 99,104,101, 99,107,117, 99,104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44,
+ 32, 51, 44, 32,119, 42,104, 42, 51, 41, 59, 10, 32, 32, 73,104, 97,110,100,108,
+101, 32, 42,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 82, 71, 66, 40,
+119, 44, 32,104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32,105,117,112,
+108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,105,104, 41,
+ 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,
+108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101,
+101, 40,112,105,120,101,108,115, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32,
+ 49, 59, 10,125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0,
+ 2, 0, 6, 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6,129,192, 0, 70,
+193,192, 0,157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, 66, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,119,105,100,116,104, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,105,120,
+101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0,
+ 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0,
+ 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0,
+ 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergb_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/imagergb_le64.loh b/iup/srclua5/loh/imagergb_le64.loh
new file mode 100755
index 0000000..c73e537
--- /dev/null
+++ b/iup/srclua5/loh/imagergb_le64.loh
@@ -0,0 +1,62 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/imagergb_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/imagergb_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,109, 97,103,101,114,103, 98, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192,
+ 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64,
+ 0,132, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0,
+ 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,
+128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,
+105, 99,107, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101,114,103,
+ 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0, 0, 0, 0,
+ 0,110,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,
+109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, 66,
+ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4,
+ 44, 1, 0, 0, 0, 0, 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116,
+ 32, 73,109, 97,103,101, 82, 71, 66, 40,108,117, 97, 95, 83,116, 97,116,101, 32,
+ 42, 76, 41, 10,123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32,108,117, 97, 76,
+ 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105,
+110,116, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116,
+ 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,
+104, 97,114, 32, 42,112,105,120,101,108,115, 32, 61, 32,105,117,112,108,117, 97,
+ 95, 99,104,101, 99,107,117, 99,104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44,
+ 32, 51, 44, 32,119, 42,104, 42, 51, 41, 59, 10, 32, 32, 73,104, 97,110,100,108,
+101, 32, 42,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 82, 71, 66, 40,
+119, 44, 32,104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32,105,117,112,
+108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,105,104, 41,
+ 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,
+108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101,
+101, 40,112,105,120,101,108,115, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32,
+ 49, 59, 10,125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0,
+ 2, 0, 6, 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6,129,192, 0, 70,
+193,192, 0,157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, 66, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,119,105,100,116,104, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,105,120,
+101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0,
+ 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0,
+ 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0,
+ 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergb_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/imagergb_le64w.loh b/iup/srclua5/loh/imagergb_le64w.loh
new file mode 100755
index 0000000..f5ce332
--- /dev/null
+++ b/iup/srclua5/loh/imagergb_le64w.loh
@@ -0,0 +1,62 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/imagergb_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/imagergb_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,109, 97,103,101,114,103, 98, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192,
+ 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64,
+ 0,132, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0,
+ 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,
+128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,
+105, 99,107, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101,114,103,
+ 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0, 0, 0, 0,
+ 0,110,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,
+109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, 66,
+ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4,
+ 44, 1, 0, 0, 0, 0, 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116,
+ 32, 73,109, 97,103,101, 82, 71, 66, 40,108,117, 97, 95, 83,116, 97,116,101, 32,
+ 42, 76, 41, 10,123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32,108,117, 97, 76,
+ 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105,
+110,116, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116,
+ 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,
+104, 97,114, 32, 42,112,105,120,101,108,115, 32, 61, 32,105,117,112,108,117, 97,
+ 95, 99,104,101, 99,107,117, 99,104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44,
+ 32, 51, 44, 32,119, 42,104, 42, 51, 41, 59, 10, 32, 32, 73,104, 97,110,100,108,
+101, 32, 42,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 82, 71, 66, 40,
+119, 44, 32,104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32,105,117,112,
+108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,105,104, 41,
+ 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,
+108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101,
+101, 40,112,105,120,101,108,115, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32,
+ 49, 59, 10,125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0,
+ 2, 0, 6, 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6,129,192, 0, 70,
+193,192, 0,157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, 66, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,119,105,100,116,104, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,105,120,
+101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0,
+ 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0,
+ 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0,
+ 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergb_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/imagergba.loh b/iup/srclua5/loh/imagergba.loh
new file mode 100755
index 0000000..777450b
--- /dev/null
+++ b/iup/srclua5/loh/imagergba.loh
@@ -0,0 +1,58 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/imagergba.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/imagergba.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 15, 0, 0, 0, 64,105,109, 97,
+103,101,114,103, 98, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,132, 9,
+128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92,
+ 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30,
+ 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0,
+ 0, 0,105,109, 97,103,101,114,103, 98, 97, 0, 4, 7, 0, 0, 0,112, 97,114,
+101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0,110,110,115, 0, 4,
+ 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 10, 0, 0, 0, 73,109,
+ 97,103,101, 82, 71, 66, 65, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 11, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 46,
+ 1, 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,
+101, 82, 71, 66, 65, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 76, 41, 10,
+123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32,108,117, 97, 76, 95, 99,104,101,
+ 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105,110,116, 32,104,
+ 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32,
+ 50, 41, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 32,
+ 42,112,105,120,101,108,115, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101,
+ 99,107,117, 99,104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,
+119, 42,104, 42, 52, 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,105,
+104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 82, 71, 66, 65, 40,119, 44, 32,
+104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32,105,117,112,108,117, 97,
+ 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,105,104, 41, 59, 10, 32,
+ 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,
+114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101,101, 40,112,
+105,120,101,108,115, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,
+125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114,
+ 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108,
+ 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 6,
+ 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6,129,192, 0, 70,193,192, 0,
+157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, 10, 0, 0,
+ 0, 73,109, 97,103,101, 82, 71, 66, 65, 0, 4, 6, 0, 0, 0,119,105,100,116,
+104, 0, 4, 7, 0, 0, 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0,112,
+105,120,101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0,
+ 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0,
+ 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0,
+ 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0,
+ 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0,
+ 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0,
+ 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergba.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/imagergba_be32.loh b/iup/srclua5/loh/imagergba_be32.loh
new file mode 100755
index 0000000..78ae5a6
--- /dev/null
+++ b/iup/srclua5/loh/imagergba_be32.loh
@@ -0,0 +1,58 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/imagergba_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/imagergba_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 15, 64,105,109, 97,
+103,101,114,103, 98, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 0, 0, 0, 19, 0, 1,128, 10,128, 64, 64, 9, 0, 0,192, 69,129,
+ 0, 64, 9,130, 65, 64, 9,131, 65,192, 9, 0, 0, 0, 74,132, 0, 64, 9,132,
+194,128, 9, 0, 0, 0,100,133,128, 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1,
+ 0, 64, 92, 0, 3, 64, 69, 0, 0, 0,128, 0, 3,128,193, 1,128, 64, 92, 0,
+128, 0, 30, 0, 0, 0, 15, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0,
+ 0, 10,105,109, 97,103,101,114,103, 98, 97, 0, 4, 0, 0, 0, 7,112, 97,114,
+101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0,
+ 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 4,110,110,115, 0, 4,
+ 0, 0, 0, 9,102,117,110, 99,110, 97,109,101, 0, 4, 0, 0, 0, 10, 73,109,
+ 97,103,101, 82, 71, 66, 65, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 0, 0, 0, 11, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 0,
+ 0, 1, 46, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,
+101, 82, 71, 66, 65, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 76, 41, 10,
+123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32,108,117, 97, 76, 95, 99,104,101,
+ 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105,110,116, 32,104,
+ 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32,
+ 50, 41, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 32,
+ 42,112,105,120,101,108,115, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101,
+ 99,107,117, 99,104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,
+119, 42,104, 42, 52, 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,105,
+104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 82, 71, 66, 65, 40,119, 44, 32,
+104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32,105,117,112,108,117, 97,
+ 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,105,104, 41, 59, 10, 32,
+ 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,
+114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101,101, 40,112,
+105,120,101,108,115, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,
+125, 10, 32, 10, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114,
+ 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108,
+ 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 2, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0,133, 0,192, 64,198, 0,192,129, 6, 0,192,193, 70,
+ 2, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 4, 4, 0, 0, 0,
+ 10, 73,109, 97,103,101, 82, 71, 66, 65, 0, 4, 0, 0, 0, 6,119,105,100,116,
+104, 0, 4, 0, 0, 0, 7,104,101,105,103,104,116, 0, 4, 0, 0, 0, 7,112,
+105,120,101,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0,
+ 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0,
+ 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9,
+ 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30,
+ 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31,
+ 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0,
+ 9, 0, 0, 0, 18, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergba_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/imagergba_be64.loh b/iup/srclua5/loh/imagergba_be64.loh
new file mode 100755
index 0000000..4a1db93
--- /dev/null
+++ b/iup/srclua5/loh/imagergba_be64.loh
@@ -0,0 +1,63 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/imagergba_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/imagergba_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,109, 97,103,101,114,103, 98, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,
+192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9,
+ 64, 0,132, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128,
+ 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92,
+ 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+110,105, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101,114,
+103, 98, 97, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0, 0,
+ 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,
+110, 97,109,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82,
+ 71, 66, 65, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,117,110,
+ 99, 0, 4, 46, 1, 0, 0, 0, 0, 0, 0, 32, 10,115,116, 97,116,105, 99, 32,
+105,110,116, 32, 73,109, 97,103,101, 82, 71, 66, 65, 40,108,117, 97, 95, 83,116,
+ 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32,
+108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59,
+ 10, 32, 32,105,110,116, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,
+107,105,110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,117,110,115,105,103,110,
+101,100, 32, 99,104, 97,114, 32, 42,112,105,120,101,108,115, 32, 61, 32,105,117,
+112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114, 95, 97,114,114, 97,
+121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 42, 52, 41, 59, 10, 32, 32, 73,104,
+ 97,110,100,108,101, 32, 42,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101,
+ 82, 71, 66, 65, 40,119, 44, 32,104, 44, 32,112,105,120,101,108,115, 41, 59, 10,
+ 32, 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76,
+ 44, 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,
+105,104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10,
+ 32, 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 32, 32,114,101,
+116,117,114,110, 32, 49, 59, 10,125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 0, 0,
+ 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,
+101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108,
+ 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,
+103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
+ 28, 0, 0, 0, 0, 2, 0, 6, 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,
+ 6,129,192, 0, 70,193,192, 0,157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0,
+ 4, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71,
+ 66, 65, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,119,105,100,116,104, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112,105,120,101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 97,114,103, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
+ 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0,
+ 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0,
+ 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0,
+ 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergba_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/imagergba_le64.loh b/iup/srclua5/loh/imagergba_le64.loh
new file mode 100755
index 0000000..66b8966
--- /dev/null
+++ b/iup/srclua5/loh/imagergba_le64.loh
@@ -0,0 +1,63 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/imagergba_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/imagergba_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,109, 97,103,101,114,103, 98, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,
+192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9,
+ 64, 0,132, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128,
+ 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92,
+ 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+110,105, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101,114,
+103, 98, 97, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0, 0,
+ 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,
+110, 97,109,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82,
+ 71, 66, 65, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,117,110,
+ 99, 0, 4, 46, 1, 0, 0, 0, 0, 0, 0, 32, 10,115,116, 97,116,105, 99, 32,
+105,110,116, 32, 73,109, 97,103,101, 82, 71, 66, 65, 40,108,117, 97, 95, 83,116,
+ 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32,
+108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59,
+ 10, 32, 32,105,110,116, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,
+107,105,110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,117,110,115,105,103,110,
+101,100, 32, 99,104, 97,114, 32, 42,112,105,120,101,108,115, 32, 61, 32,105,117,
+112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114, 95, 97,114,114, 97,
+121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 42, 52, 41, 59, 10, 32, 32, 73,104,
+ 97,110,100,108,101, 32, 42,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101,
+ 82, 71, 66, 65, 40,119, 44, 32,104, 44, 32,112,105,120,101,108,115, 41, 59, 10,
+ 32, 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76,
+ 44, 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,
+105,104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10,
+ 32, 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 32, 32,114,101,
+116,117,114,110, 32, 49, 59, 10,125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 0, 0,
+ 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,
+101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108,
+ 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,
+103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
+ 28, 0, 0, 0, 0, 2, 0, 6, 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,
+ 6,129,192, 0, 70,193,192, 0,157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0,
+ 4, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71,
+ 66, 65, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,119,105,100,116,104, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112,105,120,101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 97,114,103, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
+ 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0,
+ 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0,
+ 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0,
+ 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergba_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/imagergba_le64w.loh b/iup/srclua5/loh/imagergba_le64w.loh
new file mode 100755
index 0000000..eedbfad
--- /dev/null
+++ b/iup/srclua5/loh/imagergba_le64w.loh
@@ -0,0 +1,63 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/imagergba_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/imagergba_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,109, 97,103,101,114,103, 98, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,
+192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9,
+ 64, 0,132, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128,
+ 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92,
+ 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+110,105, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101,114,
+103, 98, 97, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0, 0,
+ 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,
+110, 97,109,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82,
+ 71, 66, 65, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,117,110,
+ 99, 0, 4, 46, 1, 0, 0, 0, 0, 0, 0, 32, 10,115,116, 97,116,105, 99, 32,
+105,110,116, 32, 73,109, 97,103,101, 82, 71, 66, 65, 40,108,117, 97, 95, 83,116,
+ 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32,
+108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59,
+ 10, 32, 32,105,110,116, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,
+107,105,110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,117,110,115,105,103,110,
+101,100, 32, 99,104, 97,114, 32, 42,112,105,120,101,108,115, 32, 61, 32,105,117,
+112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114, 95, 97,114,114, 97,
+121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 42, 52, 41, 59, 10, 32, 32, 73,104,
+ 97,110,100,108,101, 32, 42,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101,
+ 82, 71, 66, 65, 40,119, 44, 32,104, 44, 32,112,105,120,101,108,115, 41, 59, 10,
+ 32, 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76,
+ 44, 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,
+105,104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10,
+ 32, 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 32, 32,114,101,
+116,117,114,110, 32, 49, 59, 10,125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 0, 0,
+ 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,
+101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108,
+ 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,
+103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
+ 28, 0, 0, 0, 0, 2, 0, 6, 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,
+ 6,129,192, 0, 70,193,192, 0,157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0,
+ 4, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71,
+ 66, 65, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,119,105,100,116,104, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112,105,120,101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 97,114,103, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
+ 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0,
+ 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0,
+ 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0,
+ 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergba_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/item.loh b/iup/srclua5/loh/item.loh
new file mode 100755
index 0000000..b17b36b
--- /dev/null
+++ b/iup/srclua5/loh/item.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/item.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/item.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,105,116,101,
+109, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 19, 0,
+ 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64, 0,131,100, 0,
+ 0, 0, 9, 64, 0,133, 69,192, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0,
+ 3, 0,128, 0, 0, 0,193, 64, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 14, 0,
+ 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0,105,116,101,
+109, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0,
+ 4, 3, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0,
+ 4, 13, 0, 0, 0,104,105,103,104,108,105,103,104,116, 95, 99, 98, 0, 4, 14,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0,
+ 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0,
+ 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0,
+ 0, 4, 5, 0, 0, 0, 73,116,101,109, 0, 4, 6, 0, 0, 0,116,105,116,108,
+101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0,
+ 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0,
+ 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/item.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/item_be32.loh b/iup/srclua5/loh/item_be32.loh
new file mode 100755
index 0000000..f707f78
--- /dev/null
+++ b/iup/srclua5/loh/item_be32.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/item_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/item_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,105,116,101,
+109, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 19, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0,128, 74,131,194, 0, 73,132,194, 0, 73,131, 0, 64, 9, 0, 0,
+ 0,100,133, 0, 64, 9, 0, 2,192, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 3,
+ 0, 69, 0, 0, 0,128, 0, 3, 64,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0,
+ 0, 14, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 5,105,116,101,
+109, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0,
+ 4, 0, 0, 0, 3, 83, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0, 0, 1, 0,
+ 4, 0, 0, 0, 13,104,105,103,104,108,105,103,104,116, 95, 99, 98, 0, 4, 0,
+ 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0,
+ 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0,
+ 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,
+133, 0,192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0,
+ 2, 4, 0, 0, 0, 5, 73,116,101,109, 0, 4, 0, 0, 0, 6,116,105,116,108,
+101, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4,
+ 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8,
+ 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14,
+ 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19,
+ 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5,
+ 99,116,114,108, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/item_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/item_be64.loh b/iup/srclua5/loh/item_be64.loh
new file mode 100755
index 0000000..45ac562
--- /dev/null
+++ b/iup/srclua5/loh/item_be64.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/item_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/item_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,116,101,109, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64,
+ 0,131,100, 0, 0, 0, 9, 64, 0,133, 69,192, 2, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69, 0, 3, 0,128, 0, 0, 0,193, 64, 3, 0, 92, 64,128, 1, 30, 0,
+128, 0, 14, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 13, 0, 0, 0, 0, 0, 0, 0,104,105,103,104,108,105,103,104,116, 95, 99,
+ 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,
+109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,
+105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0,
+ 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128,
+ 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0,
+ 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0,
+ 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/item_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/item_le64.loh b/iup/srclua5/loh/item_le64.loh
new file mode 100755
index 0000000..6f43478
--- /dev/null
+++ b/iup/srclua5/loh/item_le64.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/item_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/item_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,116,101,109, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64,
+ 0,131,100, 0, 0, 0, 9, 64, 0,133, 69,192, 2, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69, 0, 3, 0,128, 0, 0, 0,193, 64, 3, 0, 92, 64,128, 1, 30, 0,
+128, 0, 14, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 13, 0, 0, 0, 0, 0, 0, 0,104,105,103,104,108,105,103,104,116, 95, 99,
+ 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,
+109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,
+105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0,
+ 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128,
+ 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0,
+ 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0,
+ 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/item_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/item_le64w.loh b/iup/srclua5/loh/item_le64w.loh
new file mode 100755
index 0000000..4c635a0
--- /dev/null
+++ b/iup/srclua5/loh/item_le64w.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/item_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/item_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,116,101,109, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64,
+ 0,131,100, 0, 0, 0, 9, 64, 0,133, 69,192, 2, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69, 0, 3, 0,128, 0, 0, 0,193, 64, 3, 0, 92, 64,128, 1, 30, 0,
+128, 0, 14, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 13, 0, 0, 0, 0, 0, 0, 0,104,105,103,104,108,105,103,104,116, 95, 99,
+ 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,
+109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,
+105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0,
+ 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128,
+ 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0,
+ 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0,
+ 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/item_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/iuplua.loh b/iup/srclua5/loh/iuplua.loh
new file mode 100755
index 0000000..8f7ee10
--- /dev/null
+++ b/iup/srclua5/loh/iuplua.loh
@@ -0,0 +1,487 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/iuplua.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/iuplua.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 12, 0, 0, 0, 64,105,117,112,
+108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7,
+114, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 36, 0, 0, 0, 7, 64, 0, 0,
+ 36, 64, 0, 0, 7,128, 0, 0, 36,128, 0, 0, 69,192, 0, 0,129, 0, 1, 0,
+ 92, 64, 0, 1, 69, 64, 1, 0,129, 0, 1, 0,193,128, 1, 0, 0, 1, 0, 0,
+ 92, 64, 0, 2,100,192, 0, 0,164, 0, 1, 0,197,192, 0, 0, 1,193, 1, 0,
+220, 64, 0, 1,197, 64, 1, 0, 1,193, 1, 0, 65,129, 1, 0,128, 1,128, 0,
+220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 1, 2, 0,128, 1, 0, 1,
+220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 65, 2, 0,133,129, 2, 0,
+220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65,193, 2, 0,133, 1, 3, 0,
+220, 64, 0, 2,228, 64, 1, 0,199, 64, 3, 0,228,128, 1, 0,199,128, 3, 0,
+228,192, 1, 0,199,192, 3, 0,202, 64, 0, 0, 10, 1, 0, 0,201, 0,129,136,
+199, 0, 4, 0,197, 0, 4, 0, 36, 1, 2, 0,201, 0, 1,137,197, 0, 4, 0,
+ 36, 65, 2, 0,201, 0,129,137,197, 0, 4, 0, 36,129, 2, 0,201, 0, 1,138,
+197, 0, 4, 0, 36,193, 2, 0,201, 0,129,138,197, 0, 4, 0, 36, 1, 3, 0,
+201, 0, 1,139,197,192, 5, 0, 5, 1, 4, 0, 65, 1, 1, 0,220, 64,128, 1,
+202, 64, 0, 0, 5, 1, 4, 0,201, 0,129,140,199, 0, 6, 0,197, 0, 6, 0,
+ 36, 65, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 6, 0, 65, 1, 1, 0,
+220, 64,128, 1,195, 0,128, 1,199,128, 6, 0,228,128, 3, 0,199,192, 6, 0,
+228,192, 3, 0,199, 0, 7, 0,228, 0, 4, 0,199, 64, 7, 0,228, 64, 4, 0,
+199,128, 7, 0,228,128, 4, 0,199,192, 7, 0,228,192, 4, 0,199, 0, 8, 0,
+197, 64, 8, 0,198,128,200, 1,218, 0, 0, 0, 22,128, 3,128,197, 64, 8, 0,
+198,128,200, 1,198,192,200, 1, 5, 65, 9, 0,201, 0, 1,146,197, 64, 8, 0,
+198,128,200, 1,198,192,200, 1, 5, 65, 9, 0,201, 0, 1,147,197, 64, 9, 0,
+ 5, 65, 9, 0,201, 0,129,147,197, 64, 9, 0,201, 0, 73,148, 30, 0,128, 0,
+ 41, 0, 0, 0, 4, 10, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,115, 0, 4,
+ 14, 0, 0, 0,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 17,
+ 0, 0, 0, 82,101,103,105,115,116,101,114, 67, 97,108,108, 98, 97, 99,107, 0,
+ 4, 12, 0, 0, 0,105,117,112, 78,101,119, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0,105,117,
+112, 83,101,116, 77,101,116,104,111,100, 0, 4, 8, 0, 0, 0, 95, 95,105,110,
+100,101,120, 0, 4, 11, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0,
+ 4, 11, 0, 0, 0, 95, 95,110,101,119,105,110,100,101,120, 0, 4, 11, 0, 0,
+ 0, 95, 95,116,111,115,116,114,105,110,103, 0, 4, 17, 0, 0, 0,105,104, 97,
+110,100,108,101, 95,116,111,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 95,
+ 95,101,113, 0, 4, 16, 0, 0, 0,105,104, 97,110,100,108,101, 95, 99,111,109,
+112, 97,114,101, 0, 4, 16, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,
+116,110, 97,109,101, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,
+101,114, 87,105,100,103,101,116, 0, 4, 15, 0, 0, 0, 82,101,103,105,115,116,
+101,114, 72, 97,110,100,108,101, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84,
+ 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 5, 0, 0, 0,
+115,104,111,119, 0, 4, 5, 0, 0, 0,104,105,100,101, 0, 4, 4, 0, 0, 0,
+109, 97,112, 0, 4, 12, 0, 0, 0, 99,111,110,115,116,114,117, 99,116,111,114,
+ 0, 4, 14, 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0,
+ 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 4, 0,
+ 0, 0, 66, 79, 88, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 20,
+ 0, 0, 0,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112,
+117,112, 0, 4, 14, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71,
+ 69, 0, 4, 5, 0, 0, 0,112, 97, 99,107, 0, 4, 15, 0, 0, 0,112,114,111,
+116,101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 9, 0, 0, 0,100,111,115,
+116,114,105,110,103, 0, 4, 7, 0, 0, 0,100,111,102,105,108,101, 0, 4, 4,
+ 0, 0, 0, 82, 71, 66, 0, 4, 3, 0, 0, 0, 95, 71, 0, 4, 8, 0, 0, 0,
+112, 97, 99,107, 97,103,101, 0, 4, 7, 0, 0, 0,108,111, 97,100,101,100, 0,
+ 4, 7, 0, 0, 0,105,117,112,108,117, 97, 0, 4, 4, 0, 0, 0,105,117,112,
+ 0, 4, 9, 0, 0, 0,105,117,112,108,117, 97, 53, 49, 0, 4, 3, 0, 0, 0,
+ 95, 77, 0, 4, 9, 0, 0, 0, 95, 80, 65, 67, 75, 65, 71, 69, 0, 20, 0, 0,
+ 0, 0, 0, 0, 0, 9, 0, 0, 0, 27, 0, 0, 0, 0, 1, 7, 7, 35, 0, 0,
+ 0,134, 0,192, 0,198, 0, 0, 1,218, 64, 0, 0, 22, 0, 0,128, 30, 0,128,
+ 0, 5, 65, 0, 0, 64, 1,128, 1, 28,129, 0, 1, 23,128, 64, 2, 22,128, 1,
+128, 0, 1,128, 1, 69,193, 0, 0,128, 1,128, 0, 92, 1, 0, 1, 29, 1, 0,
+ 0, 30, 1, 0, 0, 22, 0, 4,128, 5, 65, 0, 0, 64, 1,128, 1, 28,129, 0,
+ 1, 23, 0, 65, 2, 22, 0, 2,128, 5, 65, 1, 0,135, 64, 1, 0, 69,129, 1,
+ 0, 70,193,193, 2,128, 1,128, 1, 92,129, 0, 1, 7, 65, 1, 0, 94, 1, 0,
+ 1, 22,128, 0,128, 5,129, 1, 0, 6, 1, 66, 2, 30, 1, 0, 1, 30, 0,128,
+ 0, 9, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 5, 0, 0, 0,116,
+121,112,101, 0, 4, 9, 0, 0, 0,102,117,110, 99,116,105,111,110, 0, 4, 7,
+ 0, 0, 0,117,110,112, 97, 99,107, 0, 4, 7, 0, 0, 0,115,116,114,105,110,
+103, 0, 4, 5, 0, 0, 0,115,101,108,102, 0, 4, 4, 0, 0, 0,105,117,112,
+ 0, 4, 9, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0,
+ 69, 82, 82, 79, 82, 0, 0, 0, 0, 0, 35, 0, 0, 0, 10, 0, 0, 0, 11, 0,
+ 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 16, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0,
+ 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 25, 0,
+ 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0, 6, 0, 0, 0, 5, 0,
+ 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 97,
+114,103, 0, 0, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,
+101, 0, 1, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0,102,117,110, 99, 0, 2,
+ 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0,116,101,109,112, 0, 23, 0, 0, 0,
+ 30, 0, 0, 0, 7, 0, 0, 0,114,101,115,117,108,116, 0, 28, 0, 0, 0, 30,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 0,
+ 3, 0, 5, 15, 0, 0, 0,197, 0, 0, 0,198, 0,128, 1,218, 64, 0, 0, 22,
+128, 0,128,197, 0, 0, 0, 10, 1, 0, 0,201, 0, 1, 0,197, 0, 0, 0,198,
+ 0,128, 1,154, 0, 0, 0, 22, 64, 0,128,201, 64, 0, 1, 22, 0, 0,128,201,
+ 64,128,128, 30, 0,128, 0, 2, 0, 0, 0, 4, 10, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 15,
+ 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30,
+ 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 37,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0,
+ 14, 0, 0, 0, 5, 0, 0, 0,102,117,110, 99, 0, 0, 0, 0, 0, 14, 0, 0,
+ 0, 5, 0, 0, 0,116,121,112,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 3, 0,
+ 0, 0, 99, 98, 0, 9, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 44, 0, 0, 0, 53, 0, 0, 0, 0, 2, 0, 7, 21, 0, 0, 0,128, 0, 0,
+ 0,195, 0,128, 1, 5, 1, 0, 0, 64, 1, 0, 1,128, 1,128, 0, 28,129,128,
+ 1,192, 0, 0, 2,218, 0, 0, 0, 22, 0, 0,128,222, 0, 0, 1, 5, 1, 0,
+ 0, 64, 1, 0, 1,129, 65, 0, 0, 28,129,128, 1,128, 0, 0, 2,154, 64, 0,
+ 0, 22, 0,252,127, 3, 1, 0, 2, 30, 1, 0, 1, 22, 64,251,127, 30, 0,128,
+ 0, 2, 0, 0, 0, 4, 7, 0, 0, 0,114, 97,119,103,101,116, 0, 4, 7, 0,
+ 0, 0,112, 97,114,101,110,116, 0, 0, 0, 0, 0, 21, 0, 0, 0, 45, 0, 0,
+ 0, 46, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0,
+ 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 50, 0, 0,
+ 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0,
+ 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 53, 0, 0,
+ 0, 4, 0, 0, 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0,
+ 20, 0, 0, 0, 6, 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 20, 0,
+ 0, 0, 2, 0, 0, 0,112, 0, 1, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0,
+118, 0, 2, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0,
+ 0, 0, 79, 0, 0, 0, 0, 2, 0, 7, 67, 0, 0, 0,133, 0, 0, 0,134, 64,
+ 64, 1,192, 0,128, 0,156,128, 0, 1,197,128, 0, 0,198,128,128, 1,218, 0,
+ 0, 0, 22,192, 3,128,197,192, 0, 0, 0, 1, 0, 0,220,128, 0, 1,218, 0,
+ 0, 0, 22, 0, 1,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 87, 64,
+ 65, 2, 22,128, 0,128, 5,129, 1, 0, 65,193, 1, 0, 28, 65, 0, 1, 6, 65,
+128, 1, 30, 1, 0, 1, 22, 64, 10,128,197, 0, 2, 0, 0, 1, 0, 0, 64, 1,
+ 0, 1,220,128,128, 1,218, 64, 0, 0, 22,192, 3,128, 5,193, 0, 0, 64, 1,
+ 0, 0, 28,129, 0, 1, 26, 1, 0, 0, 22, 0, 1,128, 69, 1, 1, 0,128, 1,
+ 0, 2, 92,129, 0, 1, 87, 64,193, 2, 22,128, 0,128, 69,129, 1, 0,129,193,
+ 1, 0, 92, 65, 0, 1, 70, 65, 0, 2, 94, 1, 0, 1, 22,192, 4,128, 5, 1,
+ 1, 0, 64, 1,128, 1, 28,129, 0, 1, 87, 64, 66, 2, 22, 0, 1,128, 5, 1,
+ 1, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 64, 2, 22, 0, 2,128, 5,129,
+ 2, 0, 64, 1,128, 1, 28,129, 0, 1, 26, 1, 0, 0, 22, 64, 0,128, 30, 1,
+ 0, 1, 22,128, 0,128,222, 0, 0, 1, 22, 0, 0,128,222, 0, 0, 1, 30, 0,
+128, 0, 11, 0, 0, 0, 4, 7, 0, 0, 0,115,116,114,105,110,103, 0, 4, 6,
+ 0, 0, 0,117,112,112,101,114, 0, 4, 10, 0, 0, 0, 99, 97,108,108, 98, 97,
+ 99,107,115, 0, 4, 13, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101,
+116, 0, 4, 5, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0,116, 97, 98,
+108,101, 0, 4, 6, 0, 0, 0,101,114,114,111,114, 0, 4, 19, 0, 0, 0,105,
+110,118, 97,108,105,100, 32,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 13,
+ 0, 0, 0, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 7, 0, 0,
+ 0,110,117,109, 98,101,114, 0, 4, 10, 0, 0, 0, 71,101,116, 72, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 67, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60,
+ 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61,
+ 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 64,
+ 0, 0, 0, 64, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66,
+ 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68,
+ 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69,
+ 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69,
+ 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 71,
+ 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71,
+ 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 72,
+ 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73,
+ 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 76, 0, 0, 0, 79, 0, 0, 0, 7,
+ 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 66, 0,
+ 0, 0, 6, 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 66, 0, 0, 0,
+ 6, 0, 0, 0, 73, 78, 68, 69, 88, 0, 4, 0, 0, 0, 66, 0, 0, 0, 7, 0,
+ 0, 0,111, 98,106,101, 99,116, 0, 11, 0, 0, 0, 23, 0, 0, 0, 6, 0, 0,
+ 0,118, 97,108,117,101, 0, 28, 0, 0, 0, 66, 0, 0, 0, 7, 0, 0, 0,111,
+ 98,106,101, 99,116, 0, 33, 0, 0, 0, 45, 0, 0, 0, 3, 0, 0, 0,105,104,
+ 0, 59, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0,
+ 0,109, 0, 0, 0, 0, 3, 0, 14, 78, 0, 0, 0,197, 0, 0, 0, 0, 1,128,
+ 0,220,128, 0, 1, 5, 1, 0, 0, 64, 1, 0, 1, 28,129, 0, 1, 69, 65, 0,
+ 0,128, 1, 0, 0, 92,129, 0, 1, 90, 1, 0, 0, 22, 0, 1,128,133, 1, 0,
+ 0,192, 1,128, 2,156,129, 0, 1, 87,128, 64, 3, 22,128, 0,128,133,193, 0,
+ 0,193, 1, 1, 0,156, 65, 0, 1, 87, 64,193, 1, 22, 64, 0,128, 23,128,193,
+ 1, 22, 0, 13,128,133,129, 1, 0,134,193, 65, 3,192, 1,128, 0,156,129, 0,
+ 1,197, 1, 2, 0,198,129,129, 3,218, 1, 0, 0, 22,128, 3,128, 6, 66,194,
+ 3, 26, 66, 0, 0, 22,192, 0,128, 69,130, 2, 0,128, 2, 0, 0, 92,130, 0,
+ 1, 6, 66,130, 3, 69,194, 2, 0,128, 2, 0, 0,192, 2, 0, 3, 0, 3, 0,
+ 4, 64, 3, 0, 1, 92, 66,128, 2, 73,129,128, 0, 22,128, 7,128, 5, 2, 3,
+ 0, 64, 2, 0, 1, 28,130, 0, 1, 23, 64, 67, 4, 22, 64, 2,128, 5,130, 3,
+ 0, 64, 2, 0, 1, 28,130, 0, 1, 69,194, 3, 0,128, 2, 0, 0,192, 2, 0,
+ 3, 0, 3, 0, 4, 92, 66, 0, 2, 73, 1,196, 0, 22,192, 3,128, 87,128, 65,
+ 2, 22,192, 0,128, 87, 64, 65, 2, 22, 64, 0,128, 23, 64, 68, 2, 22,128, 1,
+128, 5,194, 3, 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2, 0, 1, 28, 66, 0,
+ 2, 73, 1,196, 0, 22,128, 0,128, 73,129,128, 0, 22, 0, 0,128, 73,129,128,
+ 0, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, 0, 0, 0,116,121,112,101, 0, 4,
+ 13, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101,116, 0, 4, 6, 0,
+ 0, 0,116, 97, 98,108,101, 0, 4, 6, 0, 0, 0,101,114,114,111,114, 0, 4,
+ 19, 0, 0, 0,105,110,118, 97,108,105,100, 32,105,117,112, 32,104, 97,110,100,
+108,101, 0, 4, 7, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 7, 0, 0, 0,
+115,116,114,105,110,103, 0, 4, 6, 0, 0, 0,117,112,112,101,114, 0, 4, 10,
+ 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,115, 0, 3, 0, 0, 0, 0, 0, 0,
+240, 63, 4, 13, 0, 0, 0, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0,
+ 4, 15, 0, 0, 0,105,117,112, 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0,
+ 4, 12, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 16, 0, 0, 0,105,104,
+ 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 13, 0, 0, 0, 83,
+101,116, 65,116,116,114,105, 98,117,116,101, 0, 0, 4, 4, 0, 0, 0,110,105,
+108, 0, 0, 0, 0, 0, 78, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0,
+ 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 84, 0,
+ 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0,
+ 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0,
+ 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0,
+ 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 88, 0,
+ 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 90, 0, 0, 0, 91, 0,
+ 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 92, 0, 0, 0, 92, 0, 0, 0, 92, 0,
+ 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0,
+ 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 96, 0,
+ 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 97, 0,
+ 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 98, 0,
+ 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0,100, 0, 0, 0,100, 0,
+ 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,101, 0,
+ 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,102, 0,
+ 0, 0,102, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0,107, 0, 0, 0,109, 0,
+ 0, 0, 10, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0,
+ 0, 77, 0, 0, 0, 6, 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 77,
+ 0, 0, 0, 6, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 77, 0, 0,
+ 0, 3, 0, 0, 0,116,105, 0, 3, 0, 0, 0, 77, 0, 0, 0, 3, 0, 0, 0,
+116,118, 0, 6, 0, 0, 0, 77, 0, 0, 0, 7, 0, 0, 0,111, 98,106,101, 99,
+116, 0, 9, 0, 0, 0, 77, 0, 0, 0, 6, 0, 0, 0, 73, 78, 68, 69, 88, 0,
+ 27, 0, 0, 0, 75, 0, 0, 0, 3, 0, 0, 0, 99, 98, 0, 29, 0, 0, 0, 75,
+ 0, 0, 0, 5, 0, 0, 0,102,117,110, 99, 0, 32, 0, 0, 0, 45, 0, 0, 0,
+ 5, 0, 0, 0,110, 97,109,101, 0, 54, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,122, 0, 0, 0,130, 0, 0, 0, 0, 1, 0, 6, 19, 0, 0,
+ 0, 69, 0, 0, 0,128, 0, 0, 0, 92,128, 0, 1, 90, 64, 0, 0, 22,192, 2,
+128,133, 64, 0, 0,134,128, 64, 1,193,192, 0, 0, 5, 1, 1, 0, 64, 1, 0,
+ 0, 28, 1, 0, 1,156,128, 0, 0,197, 64, 1, 0, 0, 1, 0, 1, 64, 1, 0,
+ 0,220, 64,128, 1,158, 0, 0, 1, 94, 0, 0, 1, 30, 0,128, 0, 6, 0, 0,
+ 0, 4, 8, 0, 0, 0, 71,101,116, 78, 97,109,101, 0, 4, 7, 0, 0, 0,115,
+116,114,105,110,103, 0, 4, 7, 0, 0, 0,102,111,114,109, 97,116, 0, 4, 17,
+ 0, 0, 0, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77, 69, 40, 37,115, 41, 0,
+ 4, 9, 0, 0, 0,116,111,115,116,114,105,110,103, 0, 4, 10, 0, 0, 0, 83,
+101,116, 72, 97,110,100,108,101, 0, 0, 0, 0, 0, 19, 0, 0, 0,123, 0, 0,
+ 0,123, 0, 0, 0,123, 0, 0, 0,124, 0, 0, 0,124, 0, 0, 0,125, 0, 0,
+ 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0,
+ 0,125, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0,
+ 0,127, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0,
+ 0,118, 0, 0, 0, 0, 0, 18, 0, 0, 0, 5, 0, 0, 0,110, 97,109,101, 0,
+ 3, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0, 97,117,116,111,110, 97,109,101,
+ 0, 12, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 0, 0,
+ 0,136, 0, 0, 0, 0, 1, 0, 4, 6, 0, 0, 0, 69, 0, 0, 0,134, 64, 64,
+ 0,228, 0, 0, 0, 0, 0, 0, 0, 73,192, 0, 1, 30, 0,128, 0, 2, 0, 0,
+ 0, 4, 4, 0, 0, 0,105,117,112, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0,133, 0, 0, 0,135, 0, 0, 0, 1, 1, 0, 4,
+ 6, 0, 0, 0, 68, 0, 0, 0, 75, 0,192, 0,192, 0, 0, 0, 93, 0,128, 1,
+ 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 12, 0, 0, 0, 99,111,110,
+115,116,114,117, 99,116,111,114, 0, 0, 0, 0, 0, 6, 0, 0, 0,134, 0, 0,
+ 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,135, 0, 0,
+ 0, 1, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 5, 0, 0,
+ 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 6, 0, 0, 0,133, 0,
+ 0, 0,133, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,136, 0,
+ 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,138, 0, 0, 0,156, 0, 0, 0, 0,
+ 2, 0, 8, 31, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, 65, 0, 0,156,
+ 64,128, 1,133,128, 0, 0,192, 0, 0, 0,156,128, 0, 1,154, 64, 0, 0, 22,
+192, 4,128,197,192, 0, 0, 5, 1, 1, 0, 6, 65, 65, 2, 64, 1,128, 0, 28,
+129, 0, 1,198, 0,129, 1,218, 64, 0, 0, 22, 0, 0,128,197,128, 1, 0, 10,
+129, 0, 0, 9,193,128,131, 9, 1, 0,132, 69, 1, 0, 0,128, 1, 0, 2,193,
+ 65, 2, 0, 92, 65,128, 1, 69,129, 2, 0,128, 1, 0, 0,192, 1, 0, 2, 92,
+ 65,128, 1, 30, 0, 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 12, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112,
+ 32,104, 97,110,100,108,101, 0, 4, 13, 0, 0, 0,105,117,112, 71,101,116, 87,
+105,100,103,101,116, 0, 4, 4, 0, 0, 0,105,117,112, 0, 4, 7, 0, 0, 0,
+115,116,114,105,110,103, 0, 4, 6, 0, 0, 0,117,112,112,101,114, 0, 4, 7,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0,105,
+117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0,105,117,112, 83,101,
+116, 87,105,100,103,101,116, 0, 0, 0, 0, 0, 31, 0, 0, 0,140, 0, 0, 0,
+140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,142, 0, 0, 0,142, 0, 0, 0,
+142, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,
+145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,146, 0, 0, 0,
+146, 0, 0, 0,147, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,
+151, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,152, 0, 0, 0,
+152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,155, 0, 0, 0,156, 0, 0, 0,
+ 5, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 30,
+ 0, 0, 0, 9, 0, 0, 0,116,121,112,101,110, 97,109,101, 0, 0, 0, 0, 0,
+ 30, 0, 0, 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 7, 0, 0, 0, 30,
+ 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 15, 0, 0, 0, 29, 0, 0,
+ 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 21, 0, 0, 0, 29, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0,168, 0, 0, 0, 0, 1, 0, 3,
+ 4, 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0, 92, 64, 0, 1, 30, 0,128, 0,
+ 2, 0, 0, 0, 4, 5, 0, 0, 0, 83,104,111,119, 0, 4, 7, 0, 0, 0,104,
+ 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,167, 0, 0, 0,167, 0,
+ 0, 0,167, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,111, 98,
+106,101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,170, 0, 0, 0,172, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0,
+ 0,134, 64, 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0,
+ 0, 0, 72,105,100,101, 0, 4, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0,172,
+ 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, 0, 0, 0,176, 0,
+ 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0, 92, 64,
+ 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 77, 97,112, 0, 4,
+ 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,175,
+ 0, 0, 0,175, 0, 0, 0,175, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 7,
+ 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,178, 0, 0, 0,189, 0, 0, 0, 0, 2, 0, 7, 23, 0,
+ 0, 0,139, 0, 64, 0, 0, 1,128, 0,156,128,128, 1,202,128, 0, 0,201, 0,
+128,128,201,128, 0,129, 5,193, 0, 0, 64, 1, 0, 1,129, 1, 1, 0, 28, 65,
+128, 1, 5,193, 0, 0, 64, 1,128, 1,129, 65, 1, 0, 28, 65,128, 1, 5,129,
+ 1, 0, 64, 1, 0, 1,128, 1,128, 1, 28, 65,128, 1, 11,193,193, 1,128, 1,
+128, 0, 28, 65,128, 1,158, 0, 0, 1, 30, 0,128, 0, 8, 0, 0, 0, 4, 14,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 7, 0,
+ 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0,104, 97,110,100,108,101,
+ 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0,105,
+117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0,105,117,112, 83,101,
+116, 87,105,100,103,101,116, 0, 4, 14, 0, 0, 0,115,101,116, 65,116,116,114,
+105, 98,117,116,101,115, 0, 0, 0, 0, 0, 23, 0, 0, 0,179, 0, 0, 0,179,
+ 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 0, 0,182, 0, 0, 0,184,
+ 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,185, 0, 0, 0,185,
+ 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186,
+ 0, 0, 0,186, 0, 0, 0,187, 0, 0, 0,187, 0, 0, 0,187, 0, 0, 0,188,
+ 0, 0, 0,189, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115,
+ 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0,
+ 0, 22, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 3, 0, 0, 0,
+ 22, 0, 0, 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 6, 0, 0, 0, 22,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 0, 0, 0,203, 0, 0, 0, 0,
+ 2, 0, 12, 25, 0, 0, 0,134, 0, 64, 0,197, 64, 0, 0, 0, 1,128, 0,220,
+ 0, 1, 1, 22, 0, 4,128, 5,130, 0, 0, 64, 2, 0, 3, 28,130, 0, 1, 23,
+192, 64, 4, 22,128, 2,128, 5, 2, 1, 0, 64, 2,128, 3, 28,130, 0, 1, 23,
+ 64, 65, 4, 22, 64, 1,128, 5,130, 1, 0, 64, 2, 0, 0,128, 2, 0, 3,192,
+ 2,128, 3, 28, 66, 0, 2, 22, 0, 0,128,137,192, 1, 3,225,128, 0, 0, 22,
+ 0,251,127, 30, 0,128, 0, 7, 0, 0, 0, 4, 7, 0, 0, 0,104, 97,110,100,
+108,101, 0, 4, 6, 0, 0, 0,112, 97,105,114,115, 0, 4, 5, 0, 0, 0,116,
+121,112,101, 0, 4, 7, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 12, 0, 0,
+ 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,
+112, 32,104, 97,110,100,108,101, 0, 4, 7, 0, 0, 0,114, 97,119,115,101,116,
+ 0, 0, 0, 0, 0, 25, 0, 0, 0,192, 0, 0, 0,193, 0, 0, 0,193, 0, 0,
+ 0,193, 0, 0, 0,193, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0,
+ 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0,
+ 0,194, 0, 0, 0,194, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0,
+ 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,200, 0, 0, 0,193, 0, 0,
+ 0,201, 0, 0, 0,203, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0,111, 98,106,
+101, 99,116, 0, 0, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 24, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 1,
+ 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 40,102,111,114, 32,103,101,110,101,
+114, 97,116,111,114, 41, 0, 4, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 40,
+102,111,114, 32,115,116, 97,116,101, 41, 0, 4, 0, 0, 0, 24, 0, 0, 0, 14,
+ 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 4, 0, 0,
+ 0, 24, 0, 0, 0, 2, 0, 0, 0,105, 0, 5, 0, 0, 0, 22, 0, 0, 0, 2,
+ 0, 0, 0,118, 0, 5, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,218, 0, 0, 0,227, 0, 0, 0, 0, 2, 0, 11, 25, 0, 0, 0,133, 0, 0,
+ 0,192, 0, 0, 0, 1, 65, 0, 0,156,128,128, 1,212, 0,128, 0, 1,129, 0,
+ 0, 64, 1,128, 1,129,129, 0, 0, 32, 1, 2,128, 5,194, 0, 0, 70,194,129,
+ 0, 28,130, 0, 1, 23, 0, 65, 4, 22,192, 0,128, 5, 66, 1, 0, 64, 2, 0,
+ 1,134,194,129, 0, 28, 66,128, 1, 31, 65,253,127, 5,129, 1, 0, 6,193, 65,
+ 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128, 1, 30, 0,128, 0, 8, 0, 0,
+ 0, 4, 7, 0, 0, 0,114, 97,119,103,101,116, 0, 4, 7, 0, 0, 0,104, 97,
+110,100,108,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 12, 0, 0, 0,105,
+117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,
+104, 97,110,100,108,101, 0, 4, 7, 0, 0, 0, 65,112,112,101,110,100, 0, 4,
+ 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 14, 0, 0, 0,115,101,116, 65,
+116,116,114,105, 98,117,116,101,115, 0, 0, 0, 0, 0, 25, 0, 0, 0,219, 0,
+ 0, 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,220, 0, 0, 0,221, 0,
+ 0, 0,221, 0, 0, 0,221, 0, 0, 0,221, 0, 0, 0,222, 0, 0, 0,222, 0,
+ 0, 0,222, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,223, 0, 0, 0,223, 0,
+ 0, 0,223, 0, 0, 0,223, 0, 0, 0,221, 0, 0, 0,226, 0, 0, 0,226, 0,
+ 0, 0,226, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,227, 0, 0, 0, 8, 0,
+ 0, 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 24, 0, 0,
+ 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 24, 0, 0, 0, 7, 0, 0,
+ 0,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0,
+110, 0, 5, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 40,102,111,114, 32,105,
+110,100,101,120, 41, 0, 8, 0, 0, 0, 19, 0, 0, 0, 12, 0, 0, 0, 40,102,
+111,114, 32,108,105,109,105,116, 41, 0, 8, 0, 0, 0, 19, 0, 0, 0, 11, 0,
+ 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 8, 0, 0, 0, 19, 0, 0,
+ 0, 2, 0, 0, 0,105, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,238, 0, 0, 0,252, 0, 0, 0, 0, 2, 0, 10, 52, 0, 0, 0,128,
+ 0, 0, 0,219, 64,128, 0, 22, 0, 0,128,193, 0, 0, 0, 21,192, 0, 1,133,
+ 64, 0, 0,154, 0, 0, 0, 22,128, 0,128,133, 64, 0, 0,137, 0, 0,129, 22,
+192, 9,128,133,192, 0, 0,202,192, 0, 0,201, 64, 65,130,201,192, 65,131,201,
+ 64, 66,132,156,128, 0, 1,197,128, 2, 0, 10, 1, 1, 0, 9, 1,195,133, 9,
+ 1,195,134, 9, 1, 0,129, 9,129, 67,131,220,128, 0, 1, 5,193, 3, 0, 74,
+193, 0, 1,128, 1,128, 1,192, 1, 0, 1, 73, 65, 68,136, 73,193, 68,137, 73,
+ 65, 69,138, 98, 65, 0, 1, 28,129, 0, 1, 69,129, 5, 0,138, 1,129, 0,192,
+ 1, 0, 2,137,193, 69,130,137,129, 0,140,137,129,128,140,137,129, 0,141,162,
+ 65,128, 0, 92,129, 0, 1,199, 64, 0, 0,139,193,198, 2, 5, 2, 7, 0, 69,
+ 2, 7, 0,156, 65, 0, 2,139, 65,199, 2,156, 65, 0, 1,131, 1, 0, 3,135,
+ 65, 0, 0, 30, 0,128, 0, 30, 0, 0, 0, 4, 1, 0, 0, 0, 0, 4, 20, 0,
+ 0, 0,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112,117,
+112, 0, 4, 6, 0, 0, 0,118, 97,108,117,101, 0, 4, 7, 0, 0, 0, 98,117,
+116,116,111,110, 0, 4, 6, 0, 0, 0,116,105,116,108,101, 0, 4, 3, 0, 0,
+ 0, 79,107, 0, 4, 5, 0, 0, 0,115,105,122,101, 0, 4, 3, 0, 0, 0, 54,
+ 48, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 44, 0, 0, 0,101,
+114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112,117,112, 32, 61,
+ 32,110,105,108, 59, 32,114,101,116,117,114,110, 32,105,117,112, 46, 67, 76, 79,
+ 83, 69, 0, 4, 10, 0, 0, 0,109,117,108,116,105,108,105,110,101, 0, 4, 7,
+ 0, 0, 0,101,120,112, 97,110,100, 0, 4, 4, 0, 0, 0, 89, 69, 83, 0, 4,
+ 9, 0, 0, 0,114,101, 97,100,111,110,108,121, 0, 4, 8, 0, 0, 0, 51, 48,
+ 48,120, 49, 53, 48, 0, 4, 5, 0, 0, 0,118, 98,111,120, 0, 4, 10, 0, 0,
+ 0, 97,108,105,103,110,109,101,110,116, 0, 4, 8, 0, 0, 0, 65, 67, 69, 78,
+ 84, 69, 82, 0, 4, 7, 0, 0, 0,109, 97,114,103,105,110, 0, 4, 6, 0, 0,
+ 0, 49, 48,120, 49, 48, 0, 4, 4, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0,
+ 0, 49, 48, 0, 4, 7, 0, 0, 0,100,105, 97,108,111,103, 0, 4, 14, 0, 0,
+ 0, 69,114,114,111,114, 32, 77,101,115,115, 97,103,101, 0, 4, 11, 0, 0, 0,
+100,101,102, 97,117,108,116,101,115, 99, 0, 4, 13, 0, 0, 0,100,101,102, 97,
+117,108,116,101,110,116,101,114, 0, 4, 11, 0, 0, 0,115,116, 97,114,116,102,
+111, 99,117,115, 0, 4, 6, 0, 0, 0,112,111,112,117,112, 0, 4, 7, 0, 0,
+ 0, 67, 69, 78, 84, 69, 82, 0, 4, 8, 0, 0, 0,100,101,115,116,114,111,121,
+ 0, 0, 0, 0, 0, 52, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0,
+ 0,239, 0, 0, 0,239, 0, 0, 0,240, 0, 0, 0,240, 0, 0, 0,240, 0, 0,
+ 0,241, 0, 0, 0,241, 0, 0, 0,241, 0, 0, 0,243, 0, 0, 0,243, 0, 0,
+ 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,244, 0, 0,
+ 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0,
+ 0,244, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0,
+ 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0,
+ 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0,
+ 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,247, 0, 0,
+ 0,248, 0, 0, 0,248, 0, 0, 0,248, 0, 0, 0,248, 0, 0, 0,249, 0, 0,
+ 0,249, 0, 0, 0,250, 0, 0, 0,250, 0, 0, 0,252, 0, 0, 0, 6, 0, 0,
+ 0, 4, 0, 0, 0,101,114,114, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0,
+ 0,116,114, 97, 99,101, 98, 97, 99,107, 0, 0, 0, 0, 0, 51, 0, 0, 0, 3,
+ 0, 0, 0, 98,116, 0, 17, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, 0,109,108,
+ 0, 24, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, 0,118, 98, 0, 33, 0, 0, 0,
+ 51, 0, 0, 0, 3, 0, 0, 0,100,103, 0, 42, 0, 0, 0, 51, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,254, 0, 0, 0,254, 0, 0, 0, 0, 0, 7, 2, 2,
+ 0, 0, 0, 30, 0, 0, 1, 30, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 0, 0, 0,254, 0, 0, 0,254, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 97,
+114,103, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 13, 1, 0, 0, 0, 2, 0, 6, 29, 0, 0, 0, 26, 64, 0, 0, 22,
+192, 0,128,133, 0, 0, 0,192, 0,128, 0,156, 64, 0, 1, 30, 0,128, 0,133,
+ 64, 0, 0,197,128, 0, 0, 0, 1, 0, 0,220, 0, 0, 1,156,128, 0, 0,198,
+192, 64, 1,218, 64, 0, 0, 22, 0, 1,128,197, 0, 0, 0, 6, 1, 65, 1,220,
+ 64, 0, 1, 30, 0,128, 0, 22, 0, 2,128,197, 64, 1, 0,198,128,193, 1, 0,
+ 1, 0, 1, 65,193, 0, 0,220, 64,128, 1,197,192, 1, 0, 0, 1, 0, 1,221,
+ 0, 0, 1,222, 0, 0, 0, 30, 0,128, 0, 8, 0, 0, 0, 4, 14, 0, 0, 0,
+ 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71, 69, 0, 4, 5, 0, 0, 0,112,
+ 97, 99,107, 0, 4, 6, 0, 0, 0,112, 99, 97,108,108, 0, 3, 0, 0, 0, 0,
+ 0, 0,240, 63, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4, 6, 0, 0, 0,116, 97,
+ 98,108,101, 0, 4, 7, 0, 0, 0,114,101,109,111,118,101, 0, 4, 7, 0, 0,
+ 0,117,110,112, 97, 99,107, 0, 0, 0, 0, 0, 29, 0, 0, 0, 1, 1, 0, 0,
+ 1, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 3, 1, 0, 0,
+ 5, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0,
+ 6, 1, 0, 0, 6, 1, 0, 0, 6, 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0,
+ 7, 1, 0, 0, 8, 1, 0, 0, 8, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0,
+ 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0,
+ 11, 1, 0, 0, 11, 1, 0, 0, 13, 1, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0,
+102, 0, 0, 0, 0, 0, 28, 0, 0, 0, 4, 0, 0, 0,101,114,114, 0, 0, 0,
+ 0, 0, 28, 0, 0, 0, 4, 0, 0, 0,114,101,116, 0, 11, 0, 0, 0, 28, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 0, 1,
+ 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133, 64, 0, 0,192, 0, 0, 0,156, 0,
+ 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 15,
+ 0, 0, 0,112,114,111,116,101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 11,
+ 0, 0, 0,108,111, 97,100,115,116,114,105,110,103, 0, 0, 0, 0, 0, 7, 0,
+ 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1,
+ 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0,115, 0,
+ 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 0, 0,
+ 16, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133, 64, 0, 0,
+192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30, 0,128, 0,
+ 2, 0, 0, 0, 4, 15, 0, 0, 0,112,114,111,116,101, 99,116,101,100, 99, 97,
+108,108, 95, 0, 4, 9, 0, 0, 0,108,111, 97,100,102,105,108,101, 0, 0, 0,
+ 0, 0, 7, 0, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1,
+ 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 1, 0, 0, 0, 2, 0,
+ 0, 0,102, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 18, 1, 0, 0, 20, 1, 0, 0, 0, 3, 0, 8, 9, 0, 0, 0,197, 0, 0, 0,
+198, 64,192, 1, 1,129, 0, 0, 78, 1,128,129,142, 65,128,129,206,129,128,129,
+221, 0,128, 2,222, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, 7, 0, 0,
+ 0,115,116,114,105,110,103, 0, 4, 7, 0, 0, 0,102,111,114,109, 97,116, 0,
+ 4, 9, 0, 0, 0, 37,100, 32, 37,100, 32, 37,100, 0, 3, 0, 0, 0, 0, 0,
+224,111, 64, 0, 0, 0, 0, 9, 0, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19,
+ 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19,
+ 1, 0, 0, 20, 1, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0,114, 0, 0, 0, 0,
+ 0, 8, 0, 0, 0, 2, 0, 0, 0,103, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2,
+ 0, 0, 0, 98, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,114, 0, 0,
+ 0, 7, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 37, 0, 0,
+ 0, 29, 0, 0, 0, 53, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0,
+ 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0,
+ 0, 79, 0, 0, 0,109, 0, 0, 0,111, 0, 0, 0,111, 0, 0, 0,111, 0, 0,
+ 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0,
+ 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0,
+ 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0,
+ 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0,
+ 0,130, 0, 0, 0,122, 0, 0, 0,136, 0, 0, 0,132, 0, 0, 0,156, 0, 0,
+ 0,138, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,164, 0, 0,
+ 0,166, 0, 0, 0,168, 0, 0, 0,166, 0, 0, 0,170, 0, 0, 0,172, 0, 0,
+ 0,170, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,174, 0, 0, 0,178, 0, 0,
+ 0,189, 0, 0, 0,178, 0, 0, 0,191, 0, 0, 0,203, 0, 0, 0,191, 0, 0,
+ 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,214, 0, 0,
+ 0,215, 0, 0, 0,215, 0, 0, 0,216, 0, 0, 0,218, 0, 0, 0,227, 0, 0,
+ 0,218, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,229, 0, 0,
+ 0,236, 0, 0, 0,236, 0, 0, 0,252, 0, 0, 0,238, 0, 0, 0,254, 0, 0,
+ 0,254, 0, 0, 0, 13, 1, 0, 0, 0, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0,
+ 0, 16, 1, 0, 0, 16, 1, 0, 0, 20, 1, 0, 0, 18, 1, 0, 0, 24, 1, 0,
+ 0, 24, 1, 0, 0, 24, 1, 0, 0, 24, 1, 0, 0, 25, 1, 0, 0, 25, 1, 0,
+ 0, 25, 1, 0, 0, 25, 1, 0, 0, 25, 1, 0, 0, 26, 1, 0, 0, 26, 1, 0,
+ 0, 26, 1, 0, 0, 26, 1, 0, 0, 26, 1, 0, 0, 27, 1, 0, 0, 27, 1, 0,
+ 0, 27, 1, 0, 0, 28, 1, 0, 0, 28, 1, 0, 0, 29, 1, 0, 0, 3, 0, 0,
+ 0, 16, 0, 0, 0,119,105,100,103,101,116, 95,103,101,116,116, 97, 98,108,101,
+ 0, 7, 0, 0, 0,113, 0, 0, 0, 17, 0, 0, 0,105,104, 97,110,100,108,101,
+ 95,103,101,116,116, 97, 98,108,101, 0, 16, 0, 0, 0,113, 0, 0, 0, 17, 0,
+ 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,116, 97, 98,108,101, 0, 17,
+ 0, 0, 0,113, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/iuplua.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/iuplua_be32.loh b/iup/srclua5/loh/iuplua_be32.loh
new file mode 100755
index 0000000..07dc238
--- /dev/null
+++ b/iup/srclua5/loh/iuplua_be32.loh
@@ -0,0 +1,489 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/iuplua_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/iuplua_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 12, 64,105,117,112,
+108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7,
+ 0, 0, 0,114, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 36, 0, 0, 64, 7,
+ 0, 0, 64, 36, 0, 0,128, 7, 0, 0,128, 36, 0, 0,192, 69, 0, 1, 0,129,
+ 1, 0, 64, 92, 0, 1, 64, 69, 0, 1, 0,129, 0, 1,128,193, 0, 0, 1, 0,
+ 2, 0, 64, 92, 0, 0,192,100, 0, 1, 0,164, 0, 0,192,197, 0, 1,193, 1,
+ 1, 0, 64,220, 0, 1, 64,197, 0, 1,193, 1, 0, 1,129, 65, 0,128, 1,128,
+ 2, 0, 64,220, 0, 1, 64,197, 0, 1,193, 1, 0, 2, 1, 65, 1, 0, 1,128,
+ 2, 0, 64,220, 0, 1, 64,197, 0, 1,193, 1, 0, 2, 65, 65, 0, 2,129,133,
+ 2, 0, 64,220, 0, 1, 64,197, 0, 1,193, 1, 0, 2,193, 65, 0, 3, 1,133,
+ 2, 0, 64,220, 0, 1, 64,228, 0, 3, 64,199, 0, 1,128,228, 0, 3,128,199,
+ 0, 1,192,228, 0, 3,192,199, 0, 0, 64,202, 0, 0, 1, 10,136,129, 0,201,
+ 0, 4, 0,199, 0, 4, 0,197, 0, 2, 1, 36,137, 1, 0,201, 0, 4, 0,197,
+ 0, 2, 65, 36,137,129, 0,201, 0, 4, 0,197, 0, 2,129, 36,138, 1, 0,201,
+ 0, 4, 0,197, 0, 2,193, 36,138,129, 0,201, 0, 4, 0,197, 0, 3, 1, 36,
+139, 1, 0,201, 0, 5,192,197, 0, 4, 1, 5, 0, 1, 1, 65, 1,128, 64,220,
+ 0, 0, 64,202, 0, 4, 1, 5,140,129, 0,201, 0, 6, 0,199, 0, 6, 0,197,
+ 0, 3, 65, 36,139, 1, 0,201, 0, 5,192,197, 0, 6, 1, 5, 0, 1, 1, 65,
+ 1,128, 64,220, 1,128, 0,195, 0, 6,128,199, 0, 3,128,228, 0, 6,192,199,
+ 0, 3,192,228, 0, 7, 0,199, 0, 4, 0,228, 0, 7, 64,199, 0, 4, 64,228,
+ 0, 7,128,199, 0, 4,128,228, 0, 7,192,199, 0, 4,192,228, 0, 8, 0,199,
+ 0, 8, 64,197, 1,200,128,198, 0, 0, 0,218,128, 3,128, 22, 0, 8, 64,197,
+ 1,200,128,198, 1,200,192,198, 0, 9, 65, 5,146, 1, 0,201, 0, 8, 64,197,
+ 1,200,128,198, 1,200,192,198, 0, 9, 65, 5,147, 1, 0,201, 0, 9, 64,197,
+ 0, 9, 65, 5,147,129, 0,201, 0, 9, 64,197,148, 73, 0,201, 0,128, 0, 30,
+ 0, 0, 0, 41, 4, 0, 0, 0, 10, 99, 97,108,108, 98, 97, 99,107,115, 0, 4,
+ 0, 0, 0, 14,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 0,
+ 0, 0, 17, 82,101,103,105,115,116,101,114, 67, 97,108,108, 98, 97, 99,107, 0,
+ 4, 0, 0, 0, 12,105,117,112, 78,101,119, 67,108, 97,115,115, 0, 4, 0, 0,
+ 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 4, 0, 0, 0, 13,105,117,
+112, 83,101,116, 77,101,116,104,111,100, 0, 4, 0, 0, 0, 8, 95, 95,105,110,
+100,101,120, 0, 4, 0, 0, 0, 11,105,117,112, 32,104, 97,110,100,108,101, 0,
+ 4, 0, 0, 0, 11, 95, 95,110,101,119,105,110,100,101,120, 0, 4, 0, 0, 0,
+ 11, 95, 95,116,111,115,116,114,105,110,103, 0, 4, 0, 0, 0, 17,105,104, 97,
+110,100,108,101, 95,116,111,115,116,114,105,110,103, 0, 4, 0, 0, 0, 5, 95,
+ 95,101,113, 0, 4, 0, 0, 0, 16,105,104, 97,110,100,108,101, 95, 99,111,109,
+112, 97,114,101, 0, 4, 0, 0, 0, 16,105,104, 97,110,100,108,101, 95,115,101,
+116,110, 97,109,101, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,
+101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 15, 82,101,103,105,115,116,
+101,114, 72, 97,110,100,108,101, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84,
+ 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 5,
+115,104,111,119, 0, 4, 0, 0, 0, 5,104,105,100,101, 0, 4, 0, 0, 0, 4,
+109, 97,112, 0, 4, 0, 0, 0, 12, 99,111,110,115,116,114,117, 99,116,111,114,
+ 0, 4, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0,
+ 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0,
+ 0, 4, 66, 79, 88, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0,
+ 0, 0, 20,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112,
+117,112, 0, 4, 0, 0, 0, 14, 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71,
+ 69, 0, 4, 0, 0, 0, 5,112, 97, 99,107, 0, 4, 0, 0, 0, 15,112,114,111,
+116,101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 0, 0, 0, 9,100,111,115,
+116,114,105,110,103, 0, 4, 0, 0, 0, 7,100,111,102,105,108,101, 0, 4, 0,
+ 0, 0, 4, 82, 71, 66, 0, 4, 0, 0, 0, 3, 95, 71, 0, 4, 0, 0, 0, 8,
+112, 97, 99,107, 97,103,101, 0, 4, 0, 0, 0, 7,108,111, 97,100,101,100, 0,
+ 4, 0, 0, 0, 7,105,117,112,108,117, 97, 0, 4, 0, 0, 0, 4,105,117,112,
+ 0, 4, 0, 0, 0, 9,105,117,112,108,117, 97, 53, 49, 0, 4, 0, 0, 0, 3,
+ 95, 77, 0, 4, 0, 0, 0, 9, 95, 80, 65, 67, 75, 65, 71, 69, 0, 0, 0, 0,
+ 20, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 27, 0, 1, 7, 7, 0, 0, 0,
+ 35, 0,192, 0,134, 1, 0, 0,198, 0, 0, 64,218,128, 0, 0, 22, 0,128, 0,
+ 30, 0, 0, 65, 5, 1,128, 1, 64, 1, 0,129, 28, 2, 64,128, 23,128, 1,128,
+ 22, 1,128, 1, 0, 0, 0,193, 69, 0,128, 1,128, 1, 0, 1, 92, 0, 0, 1,
+ 29, 0, 0, 1, 30,128, 4, 0, 22, 0, 0, 65, 5, 1,128, 1, 64, 1, 0,129,
+ 28, 2, 65, 0, 23,128, 2, 0, 22, 0, 1, 65, 5, 0, 1, 64,135, 0, 1,129,
+ 69, 2,193,193, 70, 1,128, 1,128, 1, 0,129, 92, 0, 1, 65, 7, 1, 0, 1,
+ 94,128, 0,128, 22, 0, 1,129, 5, 2, 66, 1, 6, 1, 0, 1, 30, 0,128, 0,
+ 30, 0, 0, 0, 9, 3, 63,240, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5,116,
+121,112,101, 0, 4, 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 4, 0,
+ 0, 0, 7,117,110,112, 97, 99,107, 0, 4, 0, 0, 0, 7,115,116,114,105,110,
+103, 0, 4, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, 0, 4,105,117,112,
+ 0, 4, 0, 0, 0, 9,100,111,115,116,114,105,110,103, 0, 4, 0, 0, 0, 6,
+ 69, 82, 82, 79, 82, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 10, 0, 0,
+ 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0,
+ 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0,
+ 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0,
+ 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0,
+ 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0, 6, 0, 0,
+ 0, 5,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 4, 97,
+114,103, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 7,104, 97,110,100,108,
+101, 0, 0, 0, 0, 1, 0, 0, 0, 34, 0, 0, 0, 5,102,117,110, 99, 0, 0,
+ 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 5,116,101,109,112, 0, 0, 0, 0, 23,
+ 0, 0, 0, 30, 0, 0, 0, 7,114,101,115,117,108,116, 0, 0, 0, 0, 28, 0,
+ 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 0,
+ 3, 0, 5, 0, 0, 0, 15, 0, 0, 0,197, 1,128, 0,198, 0, 0, 64,218,128,
+ 0,128, 22, 0, 0, 0,197, 0, 0, 1, 10, 0, 1, 0,201, 0, 0, 0,197, 1,
+128, 0,198, 0, 0, 0,154,128, 0, 64, 22, 1, 0, 64,201,128, 0, 0, 22,128,
+128, 64,201, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 10, 99, 97,108,108,
+ 98, 97, 99,107,115, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 15, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0,
+ 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0,
+ 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 35, 0,
+ 0, 0, 37, 0, 0, 0, 4, 0, 0, 0, 5,110, 97,109,101, 0, 0, 0, 0, 0,
+ 0, 0, 0, 14, 0, 0, 0, 5,102,117,110, 99, 0, 0, 0, 0, 0, 0, 0, 0,
+ 14, 0, 0, 0, 5,116,121,112,101, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0,
+ 0, 3, 99, 98, 0, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 44, 0, 0, 0, 53, 0, 2, 0, 7, 0, 0, 0, 21, 0, 0, 0,
+128, 1,128, 0,195, 0, 0, 1, 5, 1, 0, 1, 64, 0,128, 1,128, 1,128,129,
+ 28, 2, 0, 0,192, 0, 0, 0,218,128, 0, 0, 22, 1, 0, 0,222, 0, 0, 1,
+ 5, 1, 0, 1, 64, 0, 0, 65,129, 1,128,129, 28, 2, 0, 0,128, 0, 0, 64,
+154,127,252, 0, 22, 2, 0, 1, 3, 1, 0, 1, 30,127,251, 64, 22, 0,128, 0,
+ 30, 0, 0, 0, 2, 4, 0, 0, 0, 7,114, 97,119,103,101,116, 0, 4, 0, 0,
+ 0, 7,112, 97,114,101,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0,
+ 45, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0,
+ 48, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0,
+ 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0,
+ 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0,
+ 53, 0, 0, 0, 4, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0, 0,
+ 0, 0, 0, 20, 0, 0, 0, 6,105,110,100,101,120, 0, 0, 0, 0, 0, 0, 0,
+ 0, 20, 0, 0, 0, 2,112, 0, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 2,
+118, 0, 0, 0, 0, 2, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 59, 0, 0, 0, 79, 0, 2, 0, 7, 0, 0, 0, 67, 0, 0, 0,133, 1, 64,
+ 64,134, 0,128, 0,192, 1, 0,128,156, 0, 0,128,197, 1,128,128,198, 0, 0,
+ 0,218,128, 3,192, 22, 0, 0,192,197, 0, 0, 1, 0, 1, 0,128,220, 0, 0,
+ 0,218,128, 1, 0, 22, 0, 1, 1, 5, 1,128, 1, 64, 1, 0,129, 28, 2, 65,
+ 64, 87,128, 0,128, 22, 0, 1,129, 5, 0, 1,193, 65, 1, 0, 65, 28, 1,128,
+ 65, 6, 1, 0, 1, 30,128, 10, 64, 22, 0, 2, 0,197, 0, 0, 1, 0, 1, 0,
+ 1, 64, 1,128,128,220, 0, 0, 64,218,128, 3,192, 22, 0, 0,193, 5, 0, 0,
+ 1, 64, 1, 0,129, 28, 0, 0, 1, 26,128, 1, 0, 22, 0, 1, 1, 69, 2, 0,
+ 1,128, 1, 0,129, 92, 2,193, 64, 87,128, 0,128, 22, 0, 1,129, 69, 0, 1,
+193,129, 1, 0, 65, 92, 2, 0, 65, 70, 1, 0, 1, 94,128, 4,192, 22, 0, 1,
+ 1, 5, 1,128, 1, 64, 1, 0,129, 28, 2, 66, 64, 87,128, 1, 0, 22, 0, 1,
+ 1, 5, 1,128, 1, 64, 1, 0,129, 28, 2, 64, 0, 23,128, 2, 0, 22, 0, 2,
+129, 5, 1,128, 1, 64, 1, 0,129, 28, 0, 0, 1, 26,128, 0, 64, 22, 1, 0,
+ 1, 30,128, 0,128, 22, 1, 0, 0,222,128, 0, 0, 22, 1, 0, 0,222, 0,128,
+ 0, 30, 0, 0, 0, 11, 4, 0, 0, 0, 7,115,116,114,105,110,103, 0, 4, 0,
+ 0, 0, 6,117,112,112,101,114, 0, 4, 0, 0, 0, 10, 99, 97,108,108, 98, 97,
+ 99,107,115, 0, 4, 0, 0, 0, 13,105,117,112, 71,101,116, 87,105,100,103,101,
+116, 0, 4, 0, 0, 0, 5,116,121,112,101, 0, 4, 0, 0, 0, 6,116, 97, 98,
+108,101, 0, 4, 0, 0, 0, 6,101,114,114,111,114, 0, 4, 0, 0, 0, 19,105,
+110,118, 97,108,105,100, 32,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 0,
+ 0, 0, 13, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 0, 0, 0,
+ 7,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 10, 71,101,116, 72, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 60, 0, 0, 0, 60, 0,
+ 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0,
+ 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0,
+ 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0,
+ 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 64, 0,
+ 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0,
+ 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 68, 0,
+ 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0,
+ 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0,
+ 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 71, 0,
+ 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0,
+ 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 72, 0,
+ 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, 0,
+ 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 76, 0, 0, 0, 79, 0,
+ 0, 0, 7, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0,
+ 0, 66, 0, 0, 0, 6,105,110,100,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 66,
+ 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 0, 0, 0, 4, 0, 0, 0, 66, 0, 0,
+ 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0, 11, 0, 0, 0, 23, 0, 0, 0,
+ 6,118, 97,108,117,101, 0, 0, 0, 0, 28, 0, 0, 0, 66, 0, 0, 0, 7,111,
+ 98,106,101, 99,116, 0, 0, 0, 0, 33, 0, 0, 0, 45, 0, 0, 0, 3,105,104,
+ 0, 0, 0, 0, 59, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 81, 0, 0, 0,109, 0, 3, 0, 14, 0, 0, 0, 78, 0, 0, 0,197, 0,128, 1,
+ 0, 1, 0,128,220, 0, 0, 1, 5, 1, 0, 1, 64, 1, 0,129, 28, 0, 0, 65,
+ 69, 0, 0, 1,128, 1, 0,129, 92, 0, 0, 1, 90,128, 1, 0, 22, 0, 0, 1,
+133, 2,128, 1,192, 1, 0,129,156, 3, 64,128, 87,128, 0,128, 22, 0, 0,193,
+133, 0, 1, 1,193, 1, 0, 65,156, 1,193, 64, 87,128, 0, 64, 22, 1,193,128,
+ 23,128, 13, 0, 22, 0, 1,129,133, 3, 65,193,134, 0,128, 1,192, 1, 0,129,
+156, 0, 2, 1,197, 3,129,129,198, 0, 0, 1,218,128, 3,128, 22, 3,194, 66,
+ 6, 0, 0, 66, 26,128, 0,192, 22, 0, 2,130, 69, 0, 0, 2,128, 1, 0,130,
+ 92, 3,130, 66, 6, 0, 2,194, 69, 0, 0, 2,128, 3, 0, 2,192, 4, 0, 3,
+ 0, 1, 0, 3, 64, 2,128, 66, 92, 0,128,129, 73,128, 7,128, 22, 0, 3, 2,
+ 5, 1, 0, 2, 64, 1, 0,130, 28, 4, 67, 64, 23,128, 2, 64, 22, 0, 3,130,
+ 5, 1, 0, 2, 64, 1, 0,130, 28, 0, 3,194, 69, 0, 0, 2,128, 3, 0, 2,
+192, 4, 0, 3, 0, 2, 0, 66, 92, 0,196, 1, 73,128, 3,192, 22, 2, 65,128,
+ 87,128, 0,192, 22, 2, 65, 64, 87,128, 0, 64, 22, 2, 68, 64, 23,128, 1,128,
+ 22, 0, 3,194, 5, 0, 0, 2, 64, 3, 0, 2,128, 1, 0, 2,192, 2, 0, 66,
+ 28, 0,196, 1, 73,128, 0,128, 22, 0,128,129, 73,128, 0, 0, 22, 0,128,129,
+ 73, 0,128, 0, 30, 0, 0, 0, 18, 4, 0, 0, 0, 5,116,121,112,101, 0, 4,
+ 0, 0, 0, 13,105,117,112, 71,101,116, 87,105,100,103,101,116, 0, 4, 0, 0,
+ 0, 6,116, 97, 98,108,101, 0, 4, 0, 0, 0, 6,101,114,114,111,114, 0, 4,
+ 0, 0, 0, 19,105,110,118, 97,108,105,100, 32,105,117,112, 32,104, 97,110,100,
+108,101, 0, 4, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 7,
+115,116,114,105,110,103, 0, 4, 0, 0, 0, 6,117,112,112,101,114, 0, 4, 0,
+ 0, 0, 10, 99, 97,108,108, 98, 97, 99,107,115, 0, 3, 63,240, 0, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 13, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0,
+ 4, 0, 0, 0, 15,105,117,112, 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0,
+ 4, 0, 0, 0, 12,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 0, 0,
+ 0, 11,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 16,105,104,
+ 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 0, 0, 0, 15, 83,
+116,111,114,101, 65,116,116,114,105, 98,117,116,101, 0, 0, 4, 0, 0, 0, 4,
+110,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 82, 0, 0, 0, 82,
+ 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 84,
+ 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85,
+ 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85,
+ 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86,
+ 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87,
+ 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 90,
+ 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 92, 0, 0, 0, 92,
+ 0, 0, 0, 92, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94,
+ 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96,
+ 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 97,
+ 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 98,
+ 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0,100,
+ 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100,
+ 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101,
+ 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0,107,
+ 0, 0, 0,109, 0, 0, 0, 10, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6,105,110,100,101,120, 0, 0, 0, 0,
+ 0, 0, 0, 0, 77, 0, 0, 0, 6,118, 97,108,117,101, 0, 0, 0, 0, 0, 0,
+ 0, 0, 77, 0, 0, 0, 3,116,105, 0, 0, 0, 0, 3, 0, 0, 0, 77, 0, 0,
+ 0, 3,116,118, 0, 0, 0, 0, 6, 0, 0, 0, 77, 0, 0, 0, 7,111, 98,106,
+101, 99,116, 0, 0, 0, 0, 9, 0, 0, 0, 77, 0, 0, 0, 6, 73, 78, 68, 69,
+ 88, 0, 0, 0, 0, 27, 0, 0, 0, 75, 0, 0, 0, 3, 99, 98, 0, 0, 0, 0,
+ 29, 0, 0, 0, 75, 0, 0, 0, 5,102,117,110, 99, 0, 0, 0, 0, 32, 0, 0,
+ 0, 45, 0, 0, 0, 5,110, 97,109,101, 0, 0, 0, 0, 54, 0, 0, 0, 60, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 0, 0, 0,130, 0, 1, 0, 6, 0,
+ 0, 0, 19, 0, 0, 0, 69, 0, 0, 0,128, 1, 0,128, 92, 0, 0, 64, 90,128,
+ 2,192, 22, 0, 0, 64,133, 1, 64,128,134, 0, 0,192,193, 0, 1, 1, 5, 0,
+ 0, 1, 64, 1, 0, 1, 28, 0, 0,128,156, 0, 1, 64,197, 1, 0, 1, 0, 0,
+ 0, 1, 64, 1,128, 64,220, 1, 0, 0,158, 1, 0, 0, 94, 0,128, 0, 30, 0,
+ 0, 0, 6, 4, 0, 0, 0, 8, 71,101,116, 78, 97,109,101, 0, 4, 0, 0, 0,
+ 7,115,116,114,105,110,103, 0, 4, 0, 0, 0, 7,102,111,114,109, 97,116, 0,
+ 4, 0, 0, 0, 17, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77, 69, 40, 37,115,
+ 41, 0, 4, 0, 0, 0, 9,116,111,115,116,114,105,110,103, 0, 4, 0, 0, 0,
+ 10, 83,101,116, 72, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
+ 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,124, 0, 0, 0,124, 0,
+ 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0,
+ 0, 0,125, 0, 0, 0,125, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0,
+ 0, 0,126, 0, 0, 0,127, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0, 3, 0,
+ 0, 0, 2,118, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 5,110, 97,109,
+101, 0, 0, 0, 0, 3, 0, 0, 0, 18, 0, 0, 0, 9, 97,117,116,111,110, 97,
+109,101, 0, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,132, 0, 0, 0,136, 0, 1, 0, 4, 0, 0, 0, 6, 0, 0, 0, 69, 0,
+ 64, 64,134, 0, 0, 0,228, 0, 0, 0, 0, 1, 0,192, 73, 0,128, 0, 30, 0,
+ 0, 0, 2, 4, 0, 0, 0, 4,105,117,112, 0, 4, 0, 0, 0, 5,110,105, 99,
+107, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,133, 0, 0, 0,135, 1, 1,
+ 0, 4, 0, 0, 0, 6, 0, 0, 0, 68, 0,192, 0, 75, 0, 0, 0,192, 1,128,
+ 0, 93, 0, 0, 0, 94, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 12, 99,
+111,110,115,116,114,117, 99,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0,
+ 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0,
+ 0, 0,135, 0, 0, 0, 1, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 6,
+ 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,135,
+ 0, 0, 0,136, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,138, 0, 0, 0,
+156, 0, 2, 0, 8, 0, 0, 0, 31, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 65,
+ 1, 1,128, 64,156, 0, 0,128,133, 0, 0, 0,192, 1, 0,128,156, 0, 0, 64,
+154,128, 4,192, 22, 0, 0,192,197, 0, 1, 1, 5, 2, 65, 65, 6, 0,128, 1,
+ 64, 1, 0,129, 28, 1,129, 0,198, 0, 0, 64,218,128, 0, 0, 22, 0, 1,128,
+197, 0, 0,129, 10,131,128,193, 9,132, 0, 1, 9, 0, 0, 1, 69, 2, 0, 1,
+128, 0, 2, 65,193, 1,128, 65, 92, 0, 2,129, 69, 0, 0, 1,128, 2, 0, 1,
+192, 1,128, 65, 92, 1, 0, 0, 30, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0,
+ 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,
+117,112, 32,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 13,105,117,112, 71,101,
+116, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 4,105,117,112, 0, 4, 0, 0,
+ 0, 7,115,116,114,105,110,103, 0, 4, 0, 0, 0, 6,117,112,112,101,114, 0,
+ 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 7,112, 97,114,
+101,110,116, 0, 4, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 4, 0, 0, 0,
+ 11,105,117,112, 32,119,105,100,103,101,116, 0, 4, 0, 0, 0, 13,105,117,112,
+ 83,101,116, 87,105,100,103,101,116, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,142, 0, 0,
+ 0,142, 0, 0, 0,142, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0,145, 0, 0,
+ 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0,
+ 0,146, 0, 0, 0,146, 0, 0, 0,147, 0, 0, 0,150, 0, 0, 0,150, 0, 0,
+ 0,150, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, 0,
+ 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,155, 0, 0,
+ 0,156, 0, 0, 0, 5, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0,
+ 0, 0, 0, 0, 30, 0, 0, 0, 9,116,121,112,101,110, 97,109,101, 0, 0, 0,
+ 0, 0, 0, 0, 0, 30, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0,
+ 7, 0, 0, 0, 30, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 15, 0,
+ 0, 0, 29, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0, 21, 0, 0,
+ 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0,168, 0, 1,
+ 0, 3, 0, 0, 0, 4, 0, 0, 0, 69, 0, 64, 64,134, 1, 0, 64, 92, 0,128,
+ 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 5, 83,104,111,119, 0, 4, 0, 0, 0,
+ 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,167,
+ 0, 0, 0,167, 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 7,
+111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,170, 0, 0, 0,172, 0, 1, 0, 3, 0, 0, 0, 4, 0,
+ 0, 0, 69, 0, 64, 64,134, 1, 0, 64, 92, 0,128, 0, 30, 0, 0, 0, 2, 4,
+ 0, 0, 0, 5, 72,105,100,101, 0, 4, 0, 0, 0, 7,104, 97,110,100,108,101,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0,
+171, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 7,111, 98,106,101, 99,116, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174,
+ 0, 0, 0,176, 0, 1, 0, 3, 0, 0, 0, 4, 0, 0, 0, 69, 0, 64, 64,134,
+ 1, 0, 64, 92, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 4, 77, 97,112,
+ 0, 4, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0,175, 0, 0, 0,175, 0, 0, 0,175, 0, 0, 0,176, 0, 0, 0,
+ 1, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,178, 0, 0, 0,189, 0, 2, 0, 7,
+ 0, 0, 0, 23, 0, 64, 0,139, 0,128, 1, 0, 1,128,128,156, 0, 0,128,202,
+128,128, 0,201,129, 0,128,201, 0, 0,193, 5, 1, 0, 1, 64, 0, 1, 1,129,
+ 1,128, 65, 28, 0, 0,193, 5, 1,128, 1, 64, 0, 1, 65,129, 1,128, 65, 28,
+ 0, 1,129, 5, 1, 0, 1, 64, 1,128, 1,128, 1,128, 65, 28, 1,193,193, 11,
+ 0,128, 1,128, 1,128, 65, 28, 1, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 8,
+ 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7,104, 97,110,100,
+108,101, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0,
+ 4, 0, 0, 0, 11,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 0, 0, 0,
+ 11,105,117,112, 32,119,105,100,103,101,116, 0, 4, 0, 0, 0, 13,105,117,112,
+ 83,101,116, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 14,115,101,116, 65,116,
+116,114,105, 98,117,116,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0,
+179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 0, 0,
+182, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,
+185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0,
+186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,187, 0, 0, 0,187, 0, 0, 0,
+187, 0, 0, 0,188, 0, 0, 0,189, 0, 0, 0, 4, 0, 0, 0, 6, 99,108, 97,
+115,115, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 97,114,103, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0,
+ 0, 3, 0, 0, 0, 22, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0,
+ 6, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 0, 0, 0,
+203, 0, 2, 0, 12, 0, 0, 0, 25, 0, 64, 0,134, 0, 0, 64,197, 0,128, 1,
+ 0, 1, 1, 0,220,128, 4, 0, 22, 0, 0,130, 5, 3, 0, 2, 64, 1, 0,130,
+ 28, 4, 64,192, 23,128, 2,128, 22, 0, 1, 2, 5, 3,128, 2, 64, 1, 0,130,
+ 28, 4, 65, 64, 23,128, 1, 64, 22, 0, 1,130, 5, 0, 0, 2, 64, 3, 0, 2,
+128, 3,128, 2,192, 2, 0, 66, 28,128, 0, 0, 22, 3, 1,192,137, 0, 0,128,
+225,127,251, 0, 22, 0,128, 0, 30, 0, 0, 0, 7, 4, 0, 0, 0, 7,104, 97,
+110,100,108,101, 0, 4, 0, 0, 0, 6,112, 97,105,114,115, 0, 4, 0, 0, 0,
+ 5,116,121,112,101, 0, 4, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 4, 0,
+ 0, 0, 12,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,
+105,117,112, 32,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 7,114, 97,119,115,
+101,116, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,192, 0, 0, 0,193, 0,
+ 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,194, 0, 0, 0,194, 0,
+ 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0,
+ 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,197, 0, 0, 0,197, 0,
+ 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,200, 0,
+ 0, 0,193, 0, 0, 0,201, 0, 0, 0,203, 0, 0, 0, 8, 0, 0, 0, 7,111,
+ 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 4, 97,114,
+103, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 7,104, 97,110,100,108,101,
+ 0, 0, 0, 0, 1, 0, 0, 0, 24, 0, 0, 0, 16, 40,102,111,114, 32,103,101,
+110,101,114, 97,116,111,114, 41, 0, 0, 0, 0, 4, 0, 0, 0, 24, 0, 0, 0,
+ 12, 40,102,111,114, 32,115,116, 97,116,101, 41, 0, 0, 0, 0, 4, 0, 0, 0,
+ 24, 0, 0, 0, 14, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 0,
+ 0, 0, 4, 0, 0, 0, 24, 0, 0, 0, 2,105, 0, 0, 0, 0, 5, 0, 0, 0,
+ 22, 0, 0, 0, 2,118, 0, 0, 0, 0, 5, 0, 0, 0, 22, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,218, 0, 0, 0,227, 0, 2, 0, 11, 0, 0, 0, 28, 0,
+ 0, 0,133, 0, 0, 0,192, 0, 0, 65, 1, 1,128,128,156, 0, 0,128,197, 1,
+192,192,198, 0,128, 1, 0, 1, 0,128,220, 0, 1, 1, 1, 1,128, 1, 64, 0,
+ 1, 1,129,128, 2, 1, 32, 0, 1, 66, 5, 0,129,194, 70, 1, 0,130, 28, 4,
+ 65,128, 23,128, 0,192, 22, 0, 1,194, 5, 1, 0, 2, 64, 0,129,194,134, 1,
+128, 66, 28,127,253, 65, 31, 0, 2, 1, 5, 2, 66, 65, 6, 0, 0, 1, 64, 0,
+128, 1,128, 1,128, 65, 28, 0,128, 0, 30, 0, 0, 0, 10, 4, 0, 0, 0, 7,
+114, 97,119,103,101,116, 0, 4, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 4,
+ 0, 0, 0, 6,116, 97, 98,108,101, 0, 4, 0, 0, 0, 5,103,101,116,110, 0,
+ 3, 63,240, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12,105,117,112, 71,101,116,
+ 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,104, 97,110,100,108,
+101, 0, 4, 0, 0, 0, 7, 65,112,112,101,110,100, 0, 4, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,
+117,116,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0,219, 0, 0, 0,
+219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,220, 0, 0, 0,220, 0, 0, 0,
+220, 0, 0, 0,220, 0, 0, 0,221, 0, 0, 0,221, 0, 0, 0,221, 0, 0, 0,
+221, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,
+222, 0, 0, 0,223, 0, 0, 0,223, 0, 0, 0,223, 0, 0, 0,223, 0, 0, 0,
+221, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,
+226, 0, 0, 0,227, 0, 0, 0, 8, 0, 0, 0, 7,111, 98,106,101, 99,116, 0,
+ 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0,
+ 0, 0, 0, 27, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 4, 0,
+ 0, 0, 27, 0, 0, 0, 2,110, 0, 0, 0, 0, 8, 0, 0, 0, 27, 0, 0, 0,
+ 12, 40,102,111,114, 32,105,110,100,101,120, 41, 0, 0, 0, 0, 11, 0, 0, 0,
+ 22, 0, 0, 0, 12, 40,102,111,114, 32,108,105,109,105,116, 41, 0, 0, 0, 0,
+ 11, 0, 0, 0, 22, 0, 0, 0, 11, 40,102,111,114, 32,115,116,101,112, 41, 0,
+ 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 2,105, 0, 0, 0, 0, 12, 0, 0,
+ 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 0, 0, 0,252, 0, 2,
+ 0, 10, 0, 0, 0, 52, 0, 0, 0,128, 0,128, 64,219,128, 0, 0, 22, 0, 0,
+ 0,193, 1, 0,192, 21, 0, 0, 64,133, 0, 0, 0,154,128, 0,128, 22, 0, 0,
+ 64,133,129, 0, 0,137,128, 9,192, 22, 0, 0,192,133, 0, 0,192,202,130, 65,
+ 64,201,131, 65,192,201,132, 66, 64,201, 1, 0,128,156, 0, 2,128,197, 0, 1,
+ 1, 10,133,195, 1, 9,134,195, 1, 9,129, 0, 1, 9,131, 67,129, 9, 1, 0,
+128,220, 0, 3,193, 5, 1, 0,193, 74, 1,128, 1,128, 1, 0, 1,192,136, 68,
+ 65, 73,137, 68,193, 73,138, 69, 65, 73, 1, 0, 65, 98, 1, 0,129, 28, 0, 5,
+129, 69, 0,129, 1,138, 2, 0, 1,192,130, 69,193,137,140, 0,129,137,140,128,
+129,137,141, 0,129,137, 0,128, 65,162, 1, 0,129, 92, 0, 0, 64,199, 2,198,
+193,139, 0, 7, 2, 5, 0, 7, 2, 69, 2, 0, 65,156, 2,199, 65,139, 1, 0,
+ 65,156, 3, 0, 1,131, 0, 0, 65,135, 0,128, 0, 30, 0, 0, 0, 30, 4, 0,
+ 0, 0, 1, 0, 4, 0, 0, 0, 20,101,114,114,111,114, 95,109,101,115,115, 97,
+103,101, 95,112,111,112,117,112, 0, 4, 0, 0, 0, 6,118, 97,108,117,101, 0,
+ 4, 0, 0, 0, 7, 98,117,116,116,111,110, 0, 4, 0, 0, 0, 6,116,105,116,
+108,101, 0, 4, 0, 0, 0, 3, 79,107, 0, 4, 0, 0, 0, 5,115,105,122,101,
+ 0, 4, 0, 0, 0, 3, 54, 48, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110,
+ 0, 4, 0, 0, 0, 44,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95,
+112,111,112,117,112, 32, 61, 32,110,105,108, 59, 32,114,101,116,117,114,110, 32,
+105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 0, 0, 0, 10,109,117,108,116,105,
+108,105,110,101, 0, 4, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 4, 0, 0,
+ 0, 4, 89, 69, 83, 0, 4, 0, 0, 0, 9,114,101, 97,100,111,110,108,121, 0,
+ 4, 0, 0, 0, 8, 51, 48, 48,120, 49, 53, 48, 0, 4, 0, 0, 0, 5,118, 98,
+111,120, 0, 4, 0, 0, 0, 10, 97,108,105,103,110,109,101,110,116, 0, 4, 0,
+ 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 4, 0, 0, 0, 7,109, 97,114,103,
+105,110, 0, 4, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 4, 0, 0, 0, 4,103,
+ 97,112, 0, 4, 0, 0, 0, 3, 49, 48, 0, 4, 0, 0, 0, 7,100,105, 97,108,
+111,103, 0, 4, 0, 0, 0, 14, 69,114,114,111,114, 32, 77,101,115,115, 97,103,
+101, 0, 4, 0, 0, 0, 11,100,101,102, 97,117,108,116,101,115, 99, 0, 4, 0,
+ 0, 0, 13,100,101,102, 97,117,108,116,101,110,116,101,114, 0, 4, 0, 0, 0,
+ 11,115,116, 97,114,116,102,111, 99,117,115, 0, 4, 0, 0, 0, 6,112,111,112,
+117,112, 0, 4, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 4, 0, 0, 0, 8,
+100,101,115,116,114,111,121, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,239,
+ 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,240,
+ 0, 0, 0,240, 0, 0, 0,240, 0, 0, 0,241, 0, 0, 0,241, 0, 0, 0,241,
+ 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243,
+ 0, 0, 0,243, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244,
+ 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,245, 0, 0, 0,245,
+ 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245,
+ 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246,
+ 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246,
+ 0, 0, 0,246, 0, 0, 0,247, 0, 0, 0,248, 0, 0, 0,248, 0, 0, 0,248,
+ 0, 0, 0,248, 0, 0, 0,249, 0, 0, 0,249, 0, 0, 0,250, 0, 0, 0,250,
+ 0, 0, 0,252, 0, 0, 0, 6, 0, 0, 0, 4,101,114,114, 0, 0, 0, 0, 0,
+ 0, 0, 0, 51, 0, 0, 0, 10,116,114, 97, 99,101, 98, 97, 99,107, 0, 0, 0,
+ 0, 0, 0, 0, 0, 51, 0, 0, 0, 3, 98,116, 0, 0, 0, 0, 17, 0, 0, 0,
+ 51, 0, 0, 0, 3,109,108, 0, 0, 0, 0, 24, 0, 0, 0, 51, 0, 0, 0, 3,
+118, 98, 0, 0, 0, 0, 33, 0, 0, 0, 51, 0, 0, 0, 3,100,103, 0, 0, 0,
+ 0, 42, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 0, 0,
+ 0,254, 0, 0, 7, 2, 0, 0, 0, 2, 1, 0, 0, 30, 0,128, 0, 30, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,254, 0, 0, 0,254, 0, 0,
+ 0, 1, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 2, 0, 6, 0, 0,
+ 0, 29, 0, 0, 64, 26,128, 0,192, 22, 0, 0, 0,133, 0,128, 0,192, 1, 0,
+ 64,156, 0,128, 0, 30, 0, 0, 64,133, 0, 0,128,197, 0, 0, 1, 0, 1, 0,
+ 0,220, 0, 0,128,156, 1, 64,192,198, 0, 0, 64,218,128, 1, 0, 22, 0, 0,
+ 0,197, 1, 65, 1, 6, 1, 0, 64,220, 0,128, 0, 30,128, 2, 0, 22, 0, 1,
+ 64,197, 1,193,128,198, 1, 0, 1, 0, 0, 0,193, 65, 1,128, 64,220, 0, 1,
+192,197, 1, 0, 1, 0, 1, 0, 0,221, 0, 0, 0,222, 0,128, 0, 30, 0, 0,
+ 0, 8, 4, 0, 0, 0, 14, 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71, 69,
+ 0, 4, 0, 0, 0, 5,112, 97, 99,107, 0, 4, 0, 0, 0, 6,112, 99, 97,108,
+108, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 3, 64, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 6,116, 97, 98,108,101, 0, 4, 0, 0, 0, 7,114,101,109,111,
+118,101, 0, 4, 0, 0, 0, 7,117,110,112, 97, 99,107, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 2, 0, 0, 1, 2, 0,
+ 0, 1, 2, 0, 0, 1, 3, 0, 0, 1, 5, 0, 0, 1, 5, 0, 0, 1, 5, 0,
+ 0, 1, 5, 0, 0, 1, 5, 0, 0, 1, 6, 0, 0, 1, 6, 0, 0, 1, 6, 0,
+ 0, 1, 7, 0, 0, 1, 7, 0, 0, 1, 7, 0, 0, 1, 8, 0, 0, 1, 8, 0,
+ 0, 1, 10, 0, 0, 1, 10, 0, 0, 1, 10, 0, 0, 1, 10, 0, 0, 1, 10, 0,
+ 0, 1, 11, 0, 0, 1, 11, 0, 0, 1, 11, 0, 0, 1, 11, 0, 0, 1, 13, 0,
+ 0, 0, 3, 0, 0, 0, 2,102, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0,
+ 4,101,114,114, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 4,114,101,116,
+ 0, 0, 0, 0, 11, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 15, 0, 0, 1, 15, 0, 1, 0, 4, 0, 0, 0, 7, 0, 0, 0, 69, 0, 0, 64,
+133, 0, 0, 0,192, 1, 0, 0,156, 0, 0, 0, 93, 0, 0, 0, 94, 0,128, 0,
+ 30, 0, 0, 0, 2, 4, 0, 0, 0, 15,112,114,111,116,101, 99,116,101,100, 99,
+ 97,108,108, 95, 0, 4, 0, 0, 0, 11,108,111, 97,100,115,116,114,105,110,103,
+ 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 1, 15, 0, 0, 1, 15, 0, 0, 1,
+ 15, 0, 0, 1, 15, 0, 0, 1, 15, 0, 0, 1, 15, 0, 0, 1, 15, 0, 0, 0,
+ 1, 0, 0, 0, 2,115, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 16, 0, 0, 1, 16, 0, 1, 0, 4, 0, 0, 0, 7, 0,
+ 0, 0, 69, 0, 0, 64,133, 0, 0, 0,192, 1, 0, 0,156, 0, 0, 0, 93, 0,
+ 0, 0, 94, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 15,112,114,111,116,
+101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 0, 0, 0, 9,108,111, 97,100,
+102,105,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 1, 16, 0, 0, 1,
+ 16, 0, 0, 1, 16, 0, 0, 1, 16, 0, 0, 1, 16, 0, 0, 1, 16, 0, 0, 1,
+ 16, 0, 0, 0, 1, 0, 0, 0, 2,102, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 0, 0, 1, 20, 0, 3, 0, 8, 0,
+ 0, 0, 9, 0, 0, 0,197, 1,192, 64,198, 0, 0,129, 1,129,128, 1, 78,129,
+128, 65,142,129,128,129,206, 2,128, 0,221, 0, 0, 0,222, 0,128, 0, 30, 0,
+ 0, 0, 4, 4, 0, 0, 0, 7,115,116,114,105,110,103, 0, 4, 0, 0, 0, 7,
+102,111,114,109, 97,116, 0, 4, 0, 0, 0, 9, 37,100, 32, 37,100, 32, 37,100,
+ 0, 3, 64,111,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0,
+ 1, 19, 0, 0, 1, 19, 0, 0, 1, 19, 0, 0, 1, 19, 0, 0, 1, 19, 0, 0,
+ 1, 19, 0, 0, 1, 19, 0, 0, 1, 19, 0, 0, 1, 20, 0, 0, 0, 3, 0, 0,
+ 0, 2,114, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2,103, 0, 0, 0,
+ 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 98, 0, 0, 0, 0, 0, 0, 0, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 27,
+ 0, 0, 0, 9, 0, 0, 0, 37, 0, 0, 0, 29, 0, 0, 0, 53, 0, 0, 0, 55,
+ 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56,
+ 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 79, 0, 0, 0,109, 0, 0, 0,111,
+ 0, 0, 0,111, 0, 0, 0,111, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112,
+ 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113,
+ 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114,
+ 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115,
+ 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,130, 0, 0, 0,122, 0, 0, 0,136,
+ 0, 0, 0,132, 0, 0, 0,156, 0, 0, 0,138, 0, 0, 0,162, 0, 0, 0,163,
+ 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,166, 0, 0, 0,168, 0, 0, 0,166,
+ 0, 0, 0,170, 0, 0, 0,172, 0, 0, 0,170, 0, 0, 0,174, 0, 0, 0,176,
+ 0, 0, 0,174, 0, 0, 0,178, 0, 0, 0,189, 0, 0, 0,178, 0, 0, 0,191,
+ 0, 0, 0,203, 0, 0, 0,191, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207,
+ 0, 0, 0,207, 0, 0, 0,214, 0, 0, 0,215, 0, 0, 0,215, 0, 0, 0,216,
+ 0, 0, 0,218, 0, 0, 0,227, 0, 0, 0,218, 0, 0, 0,229, 0, 0, 0,229,
+ 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,236, 0, 0, 0,236, 0, 0, 0,252,
+ 0, 0, 0,238, 0, 0, 0,254, 0, 0, 0,254, 0, 0, 1, 13, 0, 0, 1, 0,
+ 0, 0, 1, 15, 0, 0, 1, 15, 0, 0, 1, 16, 0, 0, 1, 16, 0, 0, 1, 20,
+ 0, 0, 1, 18, 0, 0, 1, 24, 0, 0, 1, 24, 0, 0, 1, 24, 0, 0, 1, 24,
+ 0, 0, 1, 25, 0, 0, 1, 25, 0, 0, 1, 25, 0, 0, 1, 25, 0, 0, 1, 25,
+ 0, 0, 1, 26, 0, 0, 1, 26, 0, 0, 1, 26, 0, 0, 1, 26, 0, 0, 1, 26,
+ 0, 0, 1, 27, 0, 0, 1, 27, 0, 0, 1, 27, 0, 0, 1, 28, 0, 0, 1, 28,
+ 0, 0, 1, 29, 0, 0, 0, 3, 0, 0, 0, 16,119,105,100,103,101,116, 95,103,
+101,116,116, 97, 98,108,101, 0, 0, 0, 0, 7, 0, 0, 0,113, 0, 0, 0, 17,
+105,104, 97,110,100,108,101, 95,103,101,116,116, 97, 98,108,101, 0, 0, 0, 0,
+ 16, 0, 0, 0,113, 0, 0, 0, 17,105,104, 97,110,100,108,101, 95,115,101,116,
+116, 97, 98,108,101, 0, 0, 0, 0, 17, 0, 0, 0,113, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/iuplua_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/iuplua_be64.loh b/iup/srclua5/loh/iuplua_be64.loh
new file mode 100755
index 0000000..94837b6
--- /dev/null
+++ b/iup/srclua5/loh/iuplua_be64.loh
@@ -0,0 +1,545 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/iuplua_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/iuplua_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 7,114, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 36, 0, 0, 0,
+ 7, 64, 0, 0, 36, 64, 0, 0, 7,128, 0, 0, 36,128, 0, 0, 69,192, 0, 0,
+129, 0, 1, 0, 92, 64, 0, 1, 69, 64, 1, 0,129, 0, 1, 0,193,128, 1, 0,
+ 0, 1, 0, 0, 92, 64, 0, 2,100,192, 0, 0,164, 0, 1, 0,197,192, 0, 0,
+ 1,193, 1, 0,220, 64, 0, 1,197, 64, 1, 0, 1,193, 1, 0, 65,129, 1, 0,
+128, 1,128, 0,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 1, 2, 0,
+128, 1, 0, 1,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 65, 2, 0,
+133,129, 2, 0,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65,193, 2, 0,
+133, 1, 3, 0,220, 64, 0, 2,228, 64, 1, 0,199, 64, 3, 0,228,128, 1, 0,
+199,128, 3, 0,228,192, 1, 0,199,192, 3, 0,202, 64, 0, 0, 10, 1, 0, 0,
+201, 0,129,136,199, 0, 4, 0,197, 0, 4, 0, 36, 1, 2, 0,201, 0, 1,137,
+197, 0, 4, 0, 36, 65, 2, 0,201, 0,129,137,197, 0, 4, 0, 36,129, 2, 0,
+201, 0, 1,138,197, 0, 4, 0, 36,193, 2, 0,201, 0,129,138,197, 0, 4, 0,
+ 36, 1, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 4, 0, 65, 1, 1, 0,
+220, 64,128, 1,202, 64, 0, 0, 5, 1, 4, 0,201, 0,129,140,199, 0, 6, 0,
+197, 0, 6, 0, 36, 65, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 6, 0,
+ 65, 1, 1, 0,220, 64,128, 1,195, 0,128, 1,199,128, 6, 0,228,128, 3, 0,
+199,192, 6, 0,228,192, 3, 0,199, 0, 7, 0,228, 0, 4, 0,199, 64, 7, 0,
+228, 64, 4, 0,199,128, 7, 0,228,128, 4, 0,199,192, 7, 0,228,192, 4, 0,
+199, 0, 8, 0,197, 64, 8, 0,198,128,200, 1,218, 0, 0, 0, 22,128, 3,128,
+197, 64, 8, 0,198,128,200, 1,198,192,200, 1, 5, 65, 9, 0,201, 0, 1,146,
+197, 64, 8, 0,198,128,200, 1,198,192,200, 1, 5, 65, 9, 0,201, 0, 1,147,
+197, 64, 9, 0, 5, 65, 9, 0,201, 0,129,147,197, 64, 9, 0,201, 0, 73,148,
+ 30, 0,128, 0, 41, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,
+108, 98, 97, 99,107,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112, 67,
+ 97,108,108, 77,101,116,104,111,100, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 82,
+101,103,105,115,116,101,114, 67, 97,108,108, 98, 97, 99,107, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 78,101,119, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 77,101,116,104,111,100, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0, 95, 95,105,110,100,101,120, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0, 95, 95,110,101,119,105,110,100,101,120, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0, 95, 95,116,111,115,116,114,105,110,103, 0, 4, 17, 0, 0,
+ 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,116,111,115,116,114,105,110,
+103, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 95, 95,101,113, 0, 4, 16, 0, 0,
+ 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95, 99,111,109,112, 97,114,101,
+ 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,
+116,110, 97,109,101, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,
+103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 15, 0, 0, 0, 0, 0,
+ 0, 0, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+115,104,111,119, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,104,105,100,101, 0, 4,
+ 4, 0, 0, 0, 0, 0, 0, 0,109, 97,112, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0, 99,111,110,115,116,114,117, 99,116,111,114, 0, 4, 14, 0, 0, 0, 0, 0,
+ 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 4, 0,
+ 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114,
+ 95,109,101,115,115, 97,103,101, 95,112,111,112,117,112, 0, 4, 14, 0, 0, 0,
+ 0, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71, 69, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,112, 97, 99,107, 0, 4, 15, 0, 0, 0, 0, 0, 0,
+ 0,112,114,111,116,101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,100,111,102,105,108,101, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 82,
+ 71, 66, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 95, 71, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0,112, 97, 99,107, 97,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,108,111, 97,100,101,100, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+108,117, 97, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 9, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112,108,117, 97, 53, 49, 0, 4, 3, 0, 0, 0,
+ 0, 0, 0, 0, 95, 77, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 95, 80, 65, 67,
+ 75, 65, 71, 69, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0,
+ 0, 27, 0, 0, 0, 0, 1, 7, 7, 35, 0, 0, 0,134, 0,192, 0,198, 0, 0,
+ 1,218, 64, 0, 0, 22, 0, 0,128, 30, 0,128, 0, 5, 65, 0, 0, 64, 1,128,
+ 1, 28,129, 0, 1, 23,128, 64, 2, 22,128, 1,128, 0, 1,128, 1, 69,193, 0,
+ 0,128, 1,128, 0, 92, 1, 0, 1, 29, 1, 0, 0, 30, 1, 0, 0, 22, 0, 4,
+128, 5, 65, 0, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 65, 2, 22, 0, 2,
+128, 5, 65, 1, 0,135, 64, 1, 0, 69,129, 1, 0, 70,193,193, 2,128, 1,128,
+ 1, 92,129, 0, 1, 7, 65, 1, 0, 94, 1, 0, 1, 22,128, 0,128, 5,129, 1,
+ 0, 6, 1, 66, 2, 30, 1, 0, 1, 30, 0,128, 0, 9, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0,240, 63, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,116,105,111,110, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,117,110,112, 97, 99,107, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,115,
+101,108,102, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 9, 0,
+ 0, 0, 0, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0,
+ 0, 0, 0, 0, 69, 82, 82, 79, 82, 0, 0, 0, 0, 0, 35, 0, 0, 0, 10, 0,
+ 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0,
+ 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0,
+ 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0, 6, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, 34,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 34,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 1, 0,
+ 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 2,
+ 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,116,101,109,112, 0,
+ 23, 0, 0, 0, 30, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,114,101,115,117,
+108,116, 0, 28, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 0, 3, 0, 5, 15, 0, 0, 0,197,
+ 0, 0, 0,198, 0,128, 1,218, 64, 0, 0, 22,128, 0,128,197, 0, 0, 0, 10,
+ 1, 0, 0,201, 0, 1, 0,197, 0, 0, 0,198, 0,128, 1,154, 0, 0, 0, 22,
+ 64, 0,128,201, 64, 0, 1, 22, 0, 0,128,201, 64,128,128, 30, 0,128, 0, 2,
+ 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 15, 0, 0, 0, 30,
+ 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30,
+ 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 37, 0, 0, 0, 4,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0,
+ 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 0, 0, 0,
+ 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 0, 0,
+ 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 99, 98, 0, 9, 0, 0,
+ 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0,
+ 0, 53, 0, 0, 0, 0, 2, 0, 7, 21, 0, 0, 0,128, 0, 0, 0,195, 0,128,
+ 1, 5, 1, 0, 0, 64, 1, 0, 1,128, 1,128, 0, 28,129,128, 1,192, 0, 0,
+ 2,218, 0, 0, 0, 22, 0, 0,128,222, 0, 0, 1, 5, 1, 0, 0, 64, 1, 0,
+ 1,129, 65, 0, 0, 28,129,128, 1,128, 0, 0, 2,154, 64, 0, 0, 22, 0,252,
+127, 3, 1, 0, 2, 30, 1, 0, 1, 22, 64,251,127, 30, 0,128, 0, 2, 0, 0,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103,101,116, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 0, 0, 0, 0, 21, 0, 0,
+ 0, 45, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0,
+ 0, 48, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0,
+ 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0,
+ 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0,
+ 0, 53, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,
+101, 99,116, 0, 0, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+105,110,100,101,120, 0, 0, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0,112, 0, 1, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+118, 0, 2, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 59, 0, 0, 0, 79, 0, 0, 0, 0, 2, 0, 7, 67, 0, 0, 0,133, 0,
+ 0, 0,134, 64, 64, 1,192, 0,128, 0,156,128, 0, 1,197,128, 0, 0,198,128,
+128, 1,218, 0, 0, 0, 22,192, 3,128,197,192, 0, 0, 0, 1, 0, 0,220,128,
+ 0, 1,218, 0, 0, 0, 22, 0, 1,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129,
+ 0, 1, 87, 64, 65, 2, 22,128, 0,128, 5,129, 1, 0, 65,193, 1, 0, 28, 65,
+ 0, 1, 6, 65,128, 1, 30, 1, 0, 1, 22, 64, 10,128,197, 0, 2, 0, 0, 1,
+ 0, 0, 64, 1, 0, 1,220,128,128, 1,218, 64, 0, 0, 22,192, 3,128, 5,193,
+ 0, 0, 64, 1, 0, 0, 28,129, 0, 1, 26, 1, 0, 0, 22, 0, 1,128, 69, 1,
+ 1, 0,128, 1, 0, 2, 92,129, 0, 1, 87, 64,193, 2, 22,128, 0,128, 69,129,
+ 1, 0,129,193, 1, 0, 92, 65, 0, 1, 70, 65, 0, 2, 94, 1, 0, 1, 22,192,
+ 4,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 87, 64, 66, 2, 22, 0,
+ 1,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 64, 2, 22, 0,
+ 2,128, 5,129, 2, 0, 64, 1,128, 1, 28,129, 0, 1, 26, 1, 0, 0, 22, 64,
+ 0,128, 30, 1, 0, 1, 22,128, 0,128,222, 0, 0, 1, 22, 0, 0,128,222, 0,
+ 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,
+116,114,105,110,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,117,112,112,101,114,
+ 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,115, 0,
+ 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101,
+116, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0,
+ 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+101,114,114,111,114, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0,105,110,118, 97,108,
+105,100, 32,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 13, 0, 0, 0, 0,
+ 0, 0, 0, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 10, 0, 0, 0, 0, 0, 0,
+ 0, 71,101,116, 72, 97,110,100,108,101, 0, 0, 0, 0, 0, 67, 0, 0, 0, 60,
+ 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 61,
+ 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 66, 0, 0, 0, 66,
+ 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 68,
+ 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69,
+ 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69,
+ 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 70,
+ 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71,
+ 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71,
+ 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 73,
+ 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 76,
+ 0, 0, 0, 79, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104,
+ 97,110,100,108,101, 0, 0, 0, 0, 0, 66, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 66, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 73, 78, 68, 69, 88, 0, 4, 0, 0, 0, 66, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 11, 0, 0, 0, 23, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 28, 0, 0, 0, 66,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 33, 0,
+ 0, 0, 45, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,104, 0, 59, 0, 0,
+ 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0,
+ 0,109, 0, 0, 0, 0, 3, 0, 14, 78, 0, 0, 0,197, 0, 0, 0, 0, 1,128,
+ 0,220,128, 0, 1, 5, 1, 0, 0, 64, 1, 0, 1, 28,129, 0, 1, 69, 65, 0,
+ 0,128, 1, 0, 0, 92,129, 0, 1, 90, 1, 0, 0, 22, 0, 1,128,133, 1, 0,
+ 0,192, 1,128, 2,156,129, 0, 1, 87,128, 64, 3, 22,128, 0,128,133,193, 0,
+ 0,193, 1, 1, 0,156, 65, 0, 1, 87, 64,193, 1, 22, 64, 0,128, 23,128,193,
+ 1, 22, 0, 13,128,133,129, 1, 0,134,193, 65, 3,192, 1,128, 0,156,129, 0,
+ 1,197, 1, 2, 0,198,129,129, 3,218, 1, 0, 0, 22,128, 3,128, 6, 66,194,
+ 3, 26, 66, 0, 0, 22,192, 0,128, 69,130, 2, 0,128, 2, 0, 0, 92,130, 0,
+ 1, 6, 66,130, 3, 69,194, 2, 0,128, 2, 0, 0,192, 2, 0, 3, 0, 3, 0,
+ 4, 64, 3, 0, 1, 92, 66,128, 2, 73,129,128, 0, 22,128, 7,128, 5, 2, 3,
+ 0, 64, 2, 0, 1, 28,130, 0, 1, 23, 64, 67, 4, 22, 64, 2,128, 5,130, 3,
+ 0, 64, 2, 0, 1, 28,130, 0, 1, 69,194, 3, 0,128, 2, 0, 0,192, 2, 0,
+ 3, 0, 3, 0, 4, 92, 66, 0, 2, 73, 1,196, 0, 22,192, 3,128, 87,128, 65,
+ 2, 22,192, 0,128, 87, 64, 65, 2, 22, 64, 0,128, 23, 64, 68, 2, 22,128, 1,
+128, 5,194, 3, 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2, 0, 1, 28, 66, 0,
+ 2, 73, 1,196, 0, 22,128, 0,128, 73,129,128, 0, 22, 0, 0,128, 73,129,128,
+ 0, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,
+112,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,
+100,103,101,116, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0,
+ 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0, 4, 19, 0, 0, 0,
+ 0, 0, 0, 0,105,110,118, 97,108,105,100, 32,105,117,112, 32,104, 97,110,100,
+108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0,
+ 0, 0, 0, 0,117,112,112,101,114, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99,
+ 97,108,108, 98, 97, 99,107,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 13,
+ 0, 0, 0, 0, 0, 0, 0, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0,
+ 4, 15, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, 97,108,108, 98,
+ 97, 99,107, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,
+110,100,108,101, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,
+101, 95,115,101,116,110, 97,109,101, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 83,
+116,111,114,101, 65,116,116,114,105, 98,117,116,101, 0, 0, 4, 4, 0, 0, 0,
+ 0, 0, 0, 0,110,105,108, 0, 0, 0, 0, 0, 78, 0, 0, 0, 82, 0, 0, 0,
+ 82, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0,
+ 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0,
+ 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0,
+ 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0,
+ 86, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0,
+ 87, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0,
+ 90, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 92, 0, 0, 0,
+ 92, 0, 0, 0, 92, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0,
+ 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0,
+ 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0,
+ 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0,
+ 98, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0,
+100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,
+100, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,
+101, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0,
+107, 0, 0, 0,109, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+104, 97,110,100,108,101, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6, 0, 0,
+ 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 77, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0,116,105, 0, 3, 0, 0, 0, 77, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0,116,118, 0, 6, 0, 0, 0, 77, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 9, 0, 0, 0, 77, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 73, 78, 68, 69, 88, 0, 27, 0, 0, 0, 75, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 99, 98, 0, 29, 0, 0, 0, 75, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 32, 0, 0, 0, 45, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 54, 0, 0, 0, 60,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 0, 0, 0,130,
+ 0, 0, 0, 0, 1, 0, 6, 19, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 92,
+128, 0, 1, 90, 64, 0, 0, 22,192, 2,128,133, 64, 0, 0,134,128, 64, 1,193,
+192, 0, 0, 5, 1, 1, 0, 64, 1, 0, 0, 28, 1, 0, 1,156,128, 0, 0,197,
+ 64, 1, 0, 0, 1, 0, 1, 64, 1, 0, 0,220, 64,128, 1,158, 0, 0, 1, 94,
+ 0, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+ 71,101,116, 78, 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,116,114,
+105,110,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,111,114,109, 97,116, 0,
+ 4, 17, 0, 0, 0, 0, 0, 0, 0, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77,
+ 69, 40, 37,115, 41, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,116,111,115,116,114,
+105,110,103, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 72, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 19, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123,
+ 0, 0, 0,124, 0, 0, 0,124, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125,
+ 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,126,
+ 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,127, 0, 0, 0,129,
+ 0, 0, 0,130, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,118,
+ 0, 0, 0, 0, 0, 18, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,
+101, 0, 3, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 97,117,
+116,111,110, 97,109,101, 0, 12, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,132, 0, 0, 0,136, 0, 0, 0, 0, 1, 0, 4, 6,
+ 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0,228, 0, 0, 0, 0, 0, 0, 0, 73,
+192, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 0, 0, 0,135, 0, 0, 0, 1, 1,
+ 0, 4, 6, 0, 0, 0, 68, 0, 0, 0, 75, 0,192, 0,192, 0, 0, 0, 93, 0,
+128, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0, 99,111,110,115,116,114,117, 99,116,111,114, 0, 0, 0, 0, 0, 6,
+ 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134,
+ 0, 0, 0,135, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,
+114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 99,116,114,108, 0, 6, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,
+135, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,136, 0, 0, 0, 1, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 0, 0, 0, 0, 5, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,138, 0, 0, 0,156, 0, 0,
+ 0, 0, 2, 0, 8, 31, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, 65, 0,
+ 0,156, 64,128, 1,133,128, 0, 0,192, 0, 0, 0,156,128, 0, 1,154, 64, 0,
+ 0, 22,192, 4,128,197,192, 0, 0, 5, 1, 1, 0, 6, 65, 65, 2, 64, 1,128,
+ 0, 28,129, 0, 1,198, 0,129, 1,218, 64, 0, 0, 22, 0, 0,128,197,128, 1,
+ 0, 10,129, 0, 0, 9,193,128,131, 9, 1, 0,132, 69, 1, 0, 0,128, 1, 0,
+ 2,193, 65, 2, 0, 92, 65,128, 1, 69,129, 2, 0,128, 1, 0, 0,192, 1, 0,
+ 2, 92, 65,128, 1, 30, 0, 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 13,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101,116, 0,
+ 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,117,112,
+112,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 83,101,116, 87,105,100,103,101,116, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,142, 0,
+ 0, 0,142, 0, 0, 0,142, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0,145, 0,
+ 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0,
+ 0, 0,146, 0, 0, 0,146, 0, 0, 0,147, 0, 0, 0,150, 0, 0, 0,150, 0,
+ 0, 0,150, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0,
+ 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,155, 0,
+ 0, 0,156, 0, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,
+110,100,108,101, 0, 0, 0, 0, 0, 30, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0,
+ 0,116,121,112,101,110, 97,109,101, 0, 0, 0, 0, 0, 30, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 7, 0, 0, 0, 30, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 15, 0, 0, 0, 29,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 21, 0,
+ 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 0,
+ 0, 0,168, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64,
+ 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0,
+ 0, 0, 0, 83,104,111,119, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,
+100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,167, 0, 0, 0,167, 0, 0, 0,
+167, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,172, 0, 0, 0, 0, 1, 0, 3, 4,
+ 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72,105,100,101, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0,171, 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0,172, 0, 0, 0, 1, 0, 0,
+ 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, 0, 0, 0,
+176, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0,
+ 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0,
+ 0, 77, 97,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0,175, 0, 0, 0,175, 0, 0, 0,175, 0, 0,
+ 0,176, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,
+101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,178, 0, 0, 0,189, 0, 0, 0, 0, 2, 0, 7, 23, 0, 0, 0,
+139, 0, 64, 0, 0, 1,128, 0,156,128,128, 1,202,128, 0, 0,201, 0,128,128,
+201,128, 0,129, 5,193, 0, 0, 64, 1, 0, 1,129, 1, 1, 0, 28, 65,128, 1,
+ 5,193, 0, 0, 64, 1,128, 1,129, 65, 1, 0, 28, 65,128, 1, 5,129, 1, 0,
+ 64, 1, 0, 1,128, 1,128, 1, 28, 65,128, 1, 11,193,193, 1,128, 1,128, 0,
+ 28, 65,128, 1,158, 0, 0, 1, 30, 0,128, 0, 8, 0, 0, 0, 4, 14, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0,
+ 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 83,101,116, 87,105,100,103,101,116, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 0, 0, 0,
+ 0, 23, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,180, 0, 0,
+ 0,181, 0, 0, 0,182, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,184, 0, 0,
+ 0,184, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0,
+ 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,187, 0, 0,
+ 0,187, 0, 0, 0,187, 0, 0, 0,188, 0, 0, 0,189, 0, 0, 0, 4, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 22,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 22,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 3, 0,
+ 0, 0, 22, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116,
+ 0, 6, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,191, 0, 0, 0,203, 0, 0, 0, 0, 2, 0, 12, 25, 0, 0, 0,134, 0, 64,
+ 0,197, 64, 0, 0, 0, 1,128, 0,220, 0, 1, 1, 22, 0, 4,128, 5,130, 0,
+ 0, 64, 2, 0, 3, 28,130, 0, 1, 23,192, 64, 4, 22,128, 2,128, 5, 2, 1,
+ 0, 64, 2,128, 3, 28,130, 0, 1, 23, 64, 65, 4, 22, 64, 1,128, 5,130, 1,
+ 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2,128, 3, 28, 66, 0, 2, 22, 0, 0,
+128,137,192, 1, 3,225,128, 0, 0, 22, 0,251,127, 30, 0,128, 0, 7, 0, 0,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,112, 97,105,114,115, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,116,121,112,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,
+114, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,
+115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,
+108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,115,101,116, 0, 0,
+ 0, 0, 0, 25, 0, 0, 0,192, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193,
+ 0, 0, 0,193, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194,
+ 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194,
+ 0, 0, 0,194, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197,
+ 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,200, 0, 0, 0,193, 0, 0, 0,201,
+ 0, 0, 0,203, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111,
+ 98,106,101, 99,116, 0, 0, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 24, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+ 0, 0,104, 97,110,100,108,101, 0, 1, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0,
+ 0, 0, 0, 0, 0, 40,102,111,114, 32,103,101,110,101,114, 97,116,111,114, 41,
+ 0, 4, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,
+114, 32,115,116, 97,116,101, 41, 0, 4, 0, 0, 0, 24, 0, 0, 0, 14, 0, 0,
+ 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 4,
+ 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 5, 0, 0,
+ 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 5, 0, 0, 0, 22,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 0, 0, 0,227,
+ 0, 0, 0, 0, 2, 0, 11, 28, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1,
+ 65, 0, 0,156,128,128, 1,197,128, 0, 0,198,192,192, 1, 0, 1,128, 0,220,
+128, 0, 1, 1, 1, 1, 0, 64, 1,128, 1,129, 1, 1, 0, 32, 1, 2,128, 5,
+ 66, 1, 0, 70,194,129, 0, 28,130, 0, 1, 23,128, 65, 4, 22,192, 0,128, 5,
+194, 1, 0, 64, 2, 0, 1,134,194,129, 0, 28, 66,128, 1, 31, 65,253,127, 5,
+ 1, 2, 0, 6, 65, 66, 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128, 1, 30,
+ 0,128, 0, 10, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103,
+101,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 5, 0, 0, 0, 0,
+ 0, 0, 0,103,101,116,110, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,
+101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 0, 0, 0, 0, 28, 0, 0,
+ 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,220, 0, 0,
+ 0,220, 0, 0, 0,220, 0, 0, 0,220, 0, 0, 0,221, 0, 0, 0,221, 0, 0,
+ 0,221, 0, 0, 0,221, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,222, 0, 0,
+ 0,222, 0, 0, 0,222, 0, 0, 0,223, 0, 0, 0,223, 0, 0, 0,223, 0, 0,
+ 0,223, 0, 0, 0,221, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,226, 0, 0,
+ 0,226, 0, 0, 0,226, 0, 0, 0,227, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 27, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 27, 0, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 27,
+ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 8, 0, 0, 0, 27, 0, 0,
+ 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110,100,101,120, 41,
+ 0, 11, 0, 0, 0, 22, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,
+114, 32,108,105,109,105,116, 41, 0, 11, 0, 0, 0, 22, 0, 0, 0, 11, 0, 0,
+ 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 11, 0, 0, 0,
+ 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 12, 0, 0, 0, 21, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 0, 0, 0,252, 0,
+ 0, 0, 0, 2, 0, 10, 52, 0, 0, 0,128, 0, 0, 0,219, 64,128, 0, 22, 0,
+ 0,128,193, 0, 0, 0, 21,192, 0, 1,133, 64, 0, 0,154, 0, 0, 0, 22,128,
+ 0,128,133, 64, 0, 0,137, 0, 0,129, 22,192, 9,128,133,192, 0, 0,202,192,
+ 0, 0,201, 64, 65,130,201,192, 65,131,201, 64, 66,132,156,128, 0, 1,197,128,
+ 2, 0, 10, 1, 1, 0, 9, 1,195,133, 9, 1,195,134, 9, 1, 0,129, 9,129,
+ 67,131,220,128, 0, 1, 5,193, 3, 0, 74,193, 0, 1,128, 1,128, 1,192, 1,
+ 0, 1, 73, 65, 68,136, 73,193, 68,137, 73, 65, 69,138, 98, 65, 0, 1, 28,129,
+ 0, 1, 69,129, 5, 0,138, 1,129, 0,192, 1, 0, 2,137,193, 69,130,137,129,
+ 0,140,137,129,128,140,137,129, 0,141,162, 65,128, 0, 92,129, 0, 1,199, 64,
+ 0, 0,139,193,198, 2, 5, 2, 7, 0, 69, 2, 7, 0,156, 65, 0, 2,139, 65,
+199, 2,156, 65, 0, 1,131, 1, 0, 3,135, 65, 0, 0, 30, 0,128, 0, 30, 0,
+ 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20, 0, 0, 0, 0, 0, 0,
+ 0,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112,117,112,
+ 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0, 98,117,116,116,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0,
+ 0,116,105,116,108,101, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 79,107, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0,115,105,122,101, 0, 4, 3, 0, 0, 0, 0, 0,
+ 0, 0, 54, 48, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110,
+ 0, 4, 44, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 95,109,101,115,115,
+ 97,103,101, 95,112,111,112,117,112, 32, 61, 32,110,105,108, 59, 32,114,101,116,
+117,114,110, 32,105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 10, 0, 0, 0, 0,
+ 0, 0, 0,109,117,108,116,105,108,105,110,101, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0,101,120,112, 97,110,100, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69,
+ 83, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,114,101, 97,100,111,110,108,121, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0, 51, 48, 48,120, 49, 53, 48, 0, 4, 5, 0,
+ 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,
+ 97,108,105,103,110,109,101,110,116, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65,
+ 67, 69, 78, 84, 69, 82, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,114,103,
+105,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 49, 48,120, 49, 48, 0, 4, 4,
+ 0, 0, 0, 0, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,
+ 49, 48, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103, 0, 4,
+ 14, 0, 0, 0, 0, 0, 0, 0, 69,114,114,111,114, 32, 77,101,115,115, 97,103,
+101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,116,101,115,
+ 99, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,116,101,110,
+116,101,114, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,115,116, 97,114,116,102,111,
+ 99,117,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,
+240, 0, 0, 0,240, 0, 0, 0,240, 0, 0, 0,241, 0, 0, 0,241, 0, 0, 0,
+241, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,
+243, 0, 0, 0,243, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,
+244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,245, 0, 0, 0,
+245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,
+245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,
+246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,
+246, 0, 0, 0,246, 0, 0, 0,247, 0, 0, 0,248, 0, 0, 0,248, 0, 0, 0,
+248, 0, 0, 0,248, 0, 0, 0,249, 0, 0, 0,249, 0, 0, 0,250, 0, 0, 0,
+250, 0, 0, 0,252, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+101,114,114, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+116,114, 97, 99,101, 98, 97, 99,107, 0, 0, 0, 0, 0, 51, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0, 98,116, 0, 17, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0,109,108, 0, 24, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0,118, 98, 0, 33, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0,100,103, 0, 42, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,254, 0, 0, 0,254, 0, 0, 0, 0, 0, 7, 2, 2, 0,
+ 0, 0, 30, 0, 0, 1, 30, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,
+ 0, 0,254, 0, 0, 0,254, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0, 0, 0, 2, 0, 6, 29, 0,
+ 0, 0, 26, 64, 0, 0, 22,192, 0,128,133, 0, 0, 0,192, 0,128, 0,156, 64,
+ 0, 1, 30, 0,128, 0,133, 64, 0, 0,197,128, 0, 0, 0, 1, 0, 0,220, 0,
+ 0, 1,156,128, 0, 0,198,192, 64, 1,218, 64, 0, 0, 22, 0, 1,128,197, 0,
+ 0, 0, 6, 1, 65, 1,220, 64, 0, 1, 30, 0,128, 0, 22, 0, 2,128,197, 64,
+ 1, 0,198,128,193, 1, 0, 1, 0, 1, 65,193, 0, 0,220, 64,128, 1,197,192,
+ 1, 0, 0, 1, 0, 1,221, 0, 0, 1,222, 0, 0, 0, 30, 0,128, 0, 8, 0,
+ 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77, 69, 83,
+ 83, 65, 71, 69, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,112, 97, 99,107, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0,112, 99, 97,108,108, 0, 3, 0, 0, 0, 0, 0,
+ 0,240, 63, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4, 6, 0, 0, 0, 0, 0, 0,
+ 0,116, 97, 98,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,109,111,
+118,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,117,110,112, 97, 99,107, 0, 0,
+ 0, 0, 0, 29, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 1, 0, 0, 2,
+ 1, 0, 0, 2, 1, 0, 0, 3, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 5,
+ 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 6, 1, 0, 0, 6, 1, 0, 0, 6,
+ 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 8, 1, 0, 0, 8,
+ 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10,
+ 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 13,
+ 1, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,102, 0, 0, 0, 0,
+ 0, 28, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,101,114,114, 0, 0, 0, 0,
+ 0, 28, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, 11, 0, 0,
+ 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 1, 0,
+ 0, 15, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133, 64, 0,
+ 0,192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30, 0,128,
+ 0, 2, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,112,114,111,116,101, 99,
+116,101,100, 99, 97,108,108, 95, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,108,111,
+ 97,100,115,116,114,105,110,103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 1, 0,
+ 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0,
+ 0, 15, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
+ 1, 0, 0, 16, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133,
+ 64, 0, 0,192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30,
+ 0,128, 0, 2, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,112,114,111,116,
+101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+108,111, 97,100,102,105,108,101, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 1, 0,
+ 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0,
+ 0, 16, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,102, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,
+ 1, 0, 0, 20, 1, 0, 0, 0, 3, 0, 8, 9, 0, 0, 0,197, 0, 0, 0,198,
+ 64,192, 1, 1,129, 0, 0, 78, 1,128,129,142, 65,128,129,206,129,128,129,221,
+ 0,128, 2,222, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, 7, 0, 0, 0,
+ 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,
+102,111,114,109, 97,116, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 37,100, 32, 37,
+100, 32, 37,100, 0, 3, 0, 0, 0, 0, 0,224,111, 64, 0, 0, 0, 0, 9, 0,
+ 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1,
+ 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 20, 1, 0, 0, 3, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0, 0, 0, 8, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0,103, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
+114, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0,
+ 37, 0, 0, 0, 29, 0, 0, 0, 53, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0,
+ 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0,
+ 56, 0, 0, 0, 79, 0, 0, 0,109, 0, 0, 0,111, 0, 0, 0,111, 0, 0, 0,
+111, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,
+112, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,
+113, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,
+114, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,
+115, 0, 0, 0,130, 0, 0, 0,122, 0, 0, 0,136, 0, 0, 0,132, 0, 0, 0,
+156, 0, 0, 0,138, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,
+164, 0, 0, 0,166, 0, 0, 0,168, 0, 0, 0,166, 0, 0, 0,170, 0, 0, 0,
+172, 0, 0, 0,170, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,174, 0, 0, 0,
+178, 0, 0, 0,189, 0, 0, 0,178, 0, 0, 0,191, 0, 0, 0,203, 0, 0, 0,
+191, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,
+214, 0, 0, 0,215, 0, 0, 0,215, 0, 0, 0,216, 0, 0, 0,218, 0, 0, 0,
+227, 0, 0, 0,218, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,
+229, 0, 0, 0,236, 0, 0, 0,236, 0, 0, 0,252, 0, 0, 0,238, 0, 0, 0,
+254, 0, 0, 0,254, 0, 0, 0, 13, 1, 0, 0, 0, 1, 0, 0, 15, 1, 0, 0,
+ 15, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 20, 1, 0, 0, 18, 1, 0, 0,
+ 24, 1, 0, 0, 24, 1, 0, 0, 24, 1, 0, 0, 24, 1, 0, 0, 25, 1, 0, 0,
+ 25, 1, 0, 0, 25, 1, 0, 0, 25, 1, 0, 0, 25, 1, 0, 0, 26, 1, 0, 0,
+ 26, 1, 0, 0, 26, 1, 0, 0, 26, 1, 0, 0, 26, 1, 0, 0, 27, 1, 0, 0,
+ 27, 1, 0, 0, 27, 1, 0, 0, 28, 1, 0, 0, 28, 1, 0, 0, 29, 1, 0, 0,
+ 3, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,119,105,100,103,101,116, 95,103,
+101,116,116, 97, 98,108,101, 0, 7, 0, 0, 0,113, 0, 0, 0, 17, 0, 0, 0,
+ 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,103,101,116,116, 97, 98,108,101,
+ 0, 16, 0, 0, 0,113, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,105,104, 97,
+110,100,108,101, 95,115,101,116,116, 97, 98,108,101, 0, 17, 0, 0, 0,113, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/iuplua_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/iuplua_le64.loh b/iup/srclua5/loh/iuplua_le64.loh
new file mode 100755
index 0000000..fb4a432
--- /dev/null
+++ b/iup/srclua5/loh/iuplua_le64.loh
@@ -0,0 +1,545 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/iuplua_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/iuplua_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 7,114, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 36, 0, 0, 0,
+ 7, 64, 0, 0, 36, 64, 0, 0, 7,128, 0, 0, 36,128, 0, 0, 69,192, 0, 0,
+129, 0, 1, 0, 92, 64, 0, 1, 69, 64, 1, 0,129, 0, 1, 0,193,128, 1, 0,
+ 0, 1, 0, 0, 92, 64, 0, 2,100,192, 0, 0,164, 0, 1, 0,197,192, 0, 0,
+ 1,193, 1, 0,220, 64, 0, 1,197, 64, 1, 0, 1,193, 1, 0, 65,129, 1, 0,
+128, 1,128, 0,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 1, 2, 0,
+128, 1, 0, 1,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 65, 2, 0,
+133,129, 2, 0,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65,193, 2, 0,
+133, 1, 3, 0,220, 64, 0, 2,228, 64, 1, 0,199, 64, 3, 0,228,128, 1, 0,
+199,128, 3, 0,228,192, 1, 0,199,192, 3, 0,202, 64, 0, 0, 10, 1, 0, 0,
+201, 0,129,136,199, 0, 4, 0,197, 0, 4, 0, 36, 1, 2, 0,201, 0, 1,137,
+197, 0, 4, 0, 36, 65, 2, 0,201, 0,129,137,197, 0, 4, 0, 36,129, 2, 0,
+201, 0, 1,138,197, 0, 4, 0, 36,193, 2, 0,201, 0,129,138,197, 0, 4, 0,
+ 36, 1, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 4, 0, 65, 1, 1, 0,
+220, 64,128, 1,202, 64, 0, 0, 5, 1, 4, 0,201, 0,129,140,199, 0, 6, 0,
+197, 0, 6, 0, 36, 65, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 6, 0,
+ 65, 1, 1, 0,220, 64,128, 1,195, 0,128, 1,199,128, 6, 0,228,128, 3, 0,
+199,192, 6, 0,228,192, 3, 0,199, 0, 7, 0,228, 0, 4, 0,199, 64, 7, 0,
+228, 64, 4, 0,199,128, 7, 0,228,128, 4, 0,199,192, 7, 0,228,192, 4, 0,
+199, 0, 8, 0,197, 64, 8, 0,198,128,200, 1,218, 0, 0, 0, 22,128, 3,128,
+197, 64, 8, 0,198,128,200, 1,198,192,200, 1, 5, 65, 9, 0,201, 0, 1,146,
+197, 64, 8, 0,198,128,200, 1,198,192,200, 1, 5, 65, 9, 0,201, 0, 1,147,
+197, 64, 9, 0, 5, 65, 9, 0,201, 0,129,147,197, 64, 9, 0,201, 0, 73,148,
+ 30, 0,128, 0, 41, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,
+108, 98, 97, 99,107,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112, 67,
+ 97,108,108, 77,101,116,104,111,100, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 82,
+101,103,105,115,116,101,114, 67, 97,108,108, 98, 97, 99,107, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 78,101,119, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 77,101,116,104,111,100, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0, 95, 95,105,110,100,101,120, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0, 95, 95,110,101,119,105,110,100,101,120, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0, 95, 95,116,111,115,116,114,105,110,103, 0, 4, 17, 0, 0,
+ 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,116,111,115,116,114,105,110,
+103, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 95, 95,101,113, 0, 4, 16, 0, 0,
+ 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95, 99,111,109,112, 97,114,101,
+ 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,
+116,110, 97,109,101, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,
+103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 15, 0, 0, 0, 0, 0,
+ 0, 0, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+115,104,111,119, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,104,105,100,101, 0, 4,
+ 4, 0, 0, 0, 0, 0, 0, 0,109, 97,112, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0, 99,111,110,115,116,114,117, 99,116,111,114, 0, 4, 14, 0, 0, 0, 0, 0,
+ 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 4, 0,
+ 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114,
+ 95,109,101,115,115, 97,103,101, 95,112,111,112,117,112, 0, 4, 14, 0, 0, 0,
+ 0, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71, 69, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,112, 97, 99,107, 0, 4, 15, 0, 0, 0, 0, 0, 0,
+ 0,112,114,111,116,101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,100,111,102,105,108,101, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 82,
+ 71, 66, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 95, 71, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0,112, 97, 99,107, 97,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,108,111, 97,100,101,100, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+108,117, 97, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 9, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112,108,117, 97, 53, 49, 0, 4, 3, 0, 0, 0,
+ 0, 0, 0, 0, 95, 77, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 95, 80, 65, 67,
+ 75, 65, 71, 69, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0,
+ 0, 27, 0, 0, 0, 0, 1, 7, 7, 35, 0, 0, 0,134, 0,192, 0,198, 0, 0,
+ 1,218, 64, 0, 0, 22, 0, 0,128, 30, 0,128, 0, 5, 65, 0, 0, 64, 1,128,
+ 1, 28,129, 0, 1, 23,128, 64, 2, 22,128, 1,128, 0, 1,128, 1, 69,193, 0,
+ 0,128, 1,128, 0, 92, 1, 0, 1, 29, 1, 0, 0, 30, 1, 0, 0, 22, 0, 4,
+128, 5, 65, 0, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 65, 2, 22, 0, 2,
+128, 5, 65, 1, 0,135, 64, 1, 0, 69,129, 1, 0, 70,193,193, 2,128, 1,128,
+ 1, 92,129, 0, 1, 7, 65, 1, 0, 94, 1, 0, 1, 22,128, 0,128, 5,129, 1,
+ 0, 6, 1, 66, 2, 30, 1, 0, 1, 30, 0,128, 0, 9, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0,240, 63, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,116,105,111,110, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,117,110,112, 97, 99,107, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,115,
+101,108,102, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 9, 0,
+ 0, 0, 0, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0,
+ 0, 0, 0, 0, 69, 82, 82, 79, 82, 0, 0, 0, 0, 0, 35, 0, 0, 0, 10, 0,
+ 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0,
+ 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0,
+ 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0, 6, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, 34,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 34,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 1, 0,
+ 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 2,
+ 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,116,101,109,112, 0,
+ 23, 0, 0, 0, 30, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,114,101,115,117,
+108,116, 0, 28, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 0, 3, 0, 5, 15, 0, 0, 0,197,
+ 0, 0, 0,198, 0,128, 1,218, 64, 0, 0, 22,128, 0,128,197, 0, 0, 0, 10,
+ 1, 0, 0,201, 0, 1, 0,197, 0, 0, 0,198, 0,128, 1,154, 0, 0, 0, 22,
+ 64, 0,128,201, 64, 0, 1, 22, 0, 0,128,201, 64,128,128, 30, 0,128, 0, 2,
+ 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 15, 0, 0, 0, 30,
+ 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30,
+ 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 37, 0, 0, 0, 4,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0,
+ 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 0, 0, 0,
+ 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 0, 0,
+ 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 99, 98, 0, 9, 0, 0,
+ 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0,
+ 0, 53, 0, 0, 0, 0, 2, 0, 7, 21, 0, 0, 0,128, 0, 0, 0,195, 0,128,
+ 1, 5, 1, 0, 0, 64, 1, 0, 1,128, 1,128, 0, 28,129,128, 1,192, 0, 0,
+ 2,218, 0, 0, 0, 22, 0, 0,128,222, 0, 0, 1, 5, 1, 0, 0, 64, 1, 0,
+ 1,129, 65, 0, 0, 28,129,128, 1,128, 0, 0, 2,154, 64, 0, 0, 22, 0,252,
+127, 3, 1, 0, 2, 30, 1, 0, 1, 22, 64,251,127, 30, 0,128, 0, 2, 0, 0,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103,101,116, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 0, 0, 0, 0, 21, 0, 0,
+ 0, 45, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0,
+ 0, 48, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0,
+ 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0,
+ 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0,
+ 0, 53, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,
+101, 99,116, 0, 0, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+105,110,100,101,120, 0, 0, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0,112, 0, 1, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+118, 0, 2, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 59, 0, 0, 0, 79, 0, 0, 0, 0, 2, 0, 7, 67, 0, 0, 0,133, 0,
+ 0, 0,134, 64, 64, 1,192, 0,128, 0,156,128, 0, 1,197,128, 0, 0,198,128,
+128, 1,218, 0, 0, 0, 22,192, 3,128,197,192, 0, 0, 0, 1, 0, 0,220,128,
+ 0, 1,218, 0, 0, 0, 22, 0, 1,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129,
+ 0, 1, 87, 64, 65, 2, 22,128, 0,128, 5,129, 1, 0, 65,193, 1, 0, 28, 65,
+ 0, 1, 6, 65,128, 1, 30, 1, 0, 1, 22, 64, 10,128,197, 0, 2, 0, 0, 1,
+ 0, 0, 64, 1, 0, 1,220,128,128, 1,218, 64, 0, 0, 22,192, 3,128, 5,193,
+ 0, 0, 64, 1, 0, 0, 28,129, 0, 1, 26, 1, 0, 0, 22, 0, 1,128, 69, 1,
+ 1, 0,128, 1, 0, 2, 92,129, 0, 1, 87, 64,193, 2, 22,128, 0,128, 69,129,
+ 1, 0,129,193, 1, 0, 92, 65, 0, 1, 70, 65, 0, 2, 94, 1, 0, 1, 22,192,
+ 4,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 87, 64, 66, 2, 22, 0,
+ 1,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 64, 2, 22, 0,
+ 2,128, 5,129, 2, 0, 64, 1,128, 1, 28,129, 0, 1, 26, 1, 0, 0, 22, 64,
+ 0,128, 30, 1, 0, 1, 22,128, 0,128,222, 0, 0, 1, 22, 0, 0,128,222, 0,
+ 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,
+116,114,105,110,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,117,112,112,101,114,
+ 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,115, 0,
+ 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101,
+116, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0,
+ 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+101,114,114,111,114, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0,105,110,118, 97,108,
+105,100, 32,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 13, 0, 0, 0, 0,
+ 0, 0, 0, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 10, 0, 0, 0, 0, 0, 0,
+ 0, 71,101,116, 72, 97,110,100,108,101, 0, 0, 0, 0, 0, 67, 0, 0, 0, 60,
+ 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 61,
+ 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 66, 0, 0, 0, 66,
+ 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 68,
+ 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69,
+ 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69,
+ 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 70,
+ 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71,
+ 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71,
+ 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 73,
+ 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 76,
+ 0, 0, 0, 79, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104,
+ 97,110,100,108,101, 0, 0, 0, 0, 0, 66, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 66, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 73, 78, 68, 69, 88, 0, 4, 0, 0, 0, 66, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 11, 0, 0, 0, 23, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 28, 0, 0, 0, 66,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 33, 0,
+ 0, 0, 45, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,104, 0, 59, 0, 0,
+ 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0,
+ 0,109, 0, 0, 0, 0, 3, 0, 14, 78, 0, 0, 0,197, 0, 0, 0, 0, 1,128,
+ 0,220,128, 0, 1, 5, 1, 0, 0, 64, 1, 0, 1, 28,129, 0, 1, 69, 65, 0,
+ 0,128, 1, 0, 0, 92,129, 0, 1, 90, 1, 0, 0, 22, 0, 1,128,133, 1, 0,
+ 0,192, 1,128, 2,156,129, 0, 1, 87,128, 64, 3, 22,128, 0,128,133,193, 0,
+ 0,193, 1, 1, 0,156, 65, 0, 1, 87, 64,193, 1, 22, 64, 0,128, 23,128,193,
+ 1, 22, 0, 13,128,133,129, 1, 0,134,193, 65, 3,192, 1,128, 0,156,129, 0,
+ 1,197, 1, 2, 0,198,129,129, 3,218, 1, 0, 0, 22,128, 3,128, 6, 66,194,
+ 3, 26, 66, 0, 0, 22,192, 0,128, 69,130, 2, 0,128, 2, 0, 0, 92,130, 0,
+ 1, 6, 66,130, 3, 69,194, 2, 0,128, 2, 0, 0,192, 2, 0, 3, 0, 3, 0,
+ 4, 64, 3, 0, 1, 92, 66,128, 2, 73,129,128, 0, 22,128, 7,128, 5, 2, 3,
+ 0, 64, 2, 0, 1, 28,130, 0, 1, 23, 64, 67, 4, 22, 64, 2,128, 5,130, 3,
+ 0, 64, 2, 0, 1, 28,130, 0, 1, 69,194, 3, 0,128, 2, 0, 0,192, 2, 0,
+ 3, 0, 3, 0, 4, 92, 66, 0, 2, 73, 1,196, 0, 22,192, 3,128, 87,128, 65,
+ 2, 22,192, 0,128, 87, 64, 65, 2, 22, 64, 0,128, 23, 64, 68, 2, 22,128, 1,
+128, 5,194, 3, 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2, 0, 1, 28, 66, 0,
+ 2, 73, 1,196, 0, 22,128, 0,128, 73,129,128, 0, 22, 0, 0,128, 73,129,128,
+ 0, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,
+112,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,
+100,103,101,116, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0,
+ 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0, 4, 19, 0, 0, 0,
+ 0, 0, 0, 0,105,110,118, 97,108,105,100, 32,105,117,112, 32,104, 97,110,100,
+108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0,
+ 0, 0, 0, 0,117,112,112,101,114, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99,
+ 97,108,108, 98, 97, 99,107,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 13,
+ 0, 0, 0, 0, 0, 0, 0, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0,
+ 4, 15, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, 97,108,108, 98,
+ 97, 99,107, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,
+110,100,108,101, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,
+101, 95,115,101,116,110, 97,109,101, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 83,
+116,111,114,101, 65,116,116,114,105, 98,117,116,101, 0, 0, 4, 4, 0, 0, 0,
+ 0, 0, 0, 0,110,105,108, 0, 0, 0, 0, 0, 78, 0, 0, 0, 82, 0, 0, 0,
+ 82, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0,
+ 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0,
+ 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0,
+ 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0,
+ 86, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0,
+ 87, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0,
+ 90, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 92, 0, 0, 0,
+ 92, 0, 0, 0, 92, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0,
+ 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0,
+ 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0,
+ 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0,
+ 98, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0,
+100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,
+100, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,
+101, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0,
+107, 0, 0, 0,109, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+104, 97,110,100,108,101, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6, 0, 0,
+ 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 77, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0,116,105, 0, 3, 0, 0, 0, 77, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0,116,118, 0, 6, 0, 0, 0, 77, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 9, 0, 0, 0, 77, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 73, 78, 68, 69, 88, 0, 27, 0, 0, 0, 75, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 99, 98, 0, 29, 0, 0, 0, 75, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 32, 0, 0, 0, 45, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 54, 0, 0, 0, 60,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 0, 0, 0,130,
+ 0, 0, 0, 0, 1, 0, 6, 19, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 92,
+128, 0, 1, 90, 64, 0, 0, 22,192, 2,128,133, 64, 0, 0,134,128, 64, 1,193,
+192, 0, 0, 5, 1, 1, 0, 64, 1, 0, 0, 28, 1, 0, 1,156,128, 0, 0,197,
+ 64, 1, 0, 0, 1, 0, 1, 64, 1, 0, 0,220, 64,128, 1,158, 0, 0, 1, 94,
+ 0, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,
+ 71,101,116, 78, 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,116,114,
+105,110,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,111,114,109, 97,116, 0,
+ 4, 17, 0, 0, 0, 0, 0, 0, 0, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77,
+ 69, 40, 37,115, 41, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,116,111,115,116,114,
+105,110,103, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 72, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 19, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123,
+ 0, 0, 0,124, 0, 0, 0,124, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125,
+ 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,126,
+ 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,127, 0, 0, 0,129,
+ 0, 0, 0,130, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,118,
+ 0, 0, 0, 0, 0, 18, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,
+101, 0, 3, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 97,117,
+116,111,110, 97,109,101, 0, 12, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,132, 0, 0, 0,136, 0, 0, 0, 0, 1, 0, 4, 6,
+ 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0,228, 0, 0, 0, 0, 0, 0, 0, 73,
+192, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 0, 0, 0,135, 0, 0, 0, 1, 1,
+ 0, 4, 6, 0, 0, 0, 68, 0, 0, 0, 75, 0,192, 0,192, 0, 0, 0, 93, 0,
+128, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0, 99,111,110,115,116,114,117, 99,116,111,114, 0, 0, 0, 0, 0, 6,
+ 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134,
+ 0, 0, 0,135, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,
+114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 99,116,114,108, 0, 6, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,
+135, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,136, 0, 0, 0, 1, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 0, 0, 0, 0, 5, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,138, 0, 0, 0,156, 0, 0,
+ 0, 0, 2, 0, 8, 31, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, 65, 0,
+ 0,156, 64,128, 1,133,128, 0, 0,192, 0, 0, 0,156,128, 0, 1,154, 64, 0,
+ 0, 22,192, 4,128,197,192, 0, 0, 5, 1, 1, 0, 6, 65, 65, 2, 64, 1,128,
+ 0, 28,129, 0, 1,198, 0,129, 1,218, 64, 0, 0, 22, 0, 0,128,197,128, 1,
+ 0, 10,129, 0, 0, 9,193,128,131, 9, 1, 0,132, 69, 1, 0, 0,128, 1, 0,
+ 2,193, 65, 2, 0, 92, 65,128, 1, 69,129, 2, 0,128, 1, 0, 0,192, 1, 0,
+ 2, 92, 65,128, 1, 30, 0, 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 13,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101,116, 0,
+ 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,117,112,
+112,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 83,101,116, 87,105,100,103,101,116, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,142, 0,
+ 0, 0,142, 0, 0, 0,142, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0,145, 0,
+ 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0,
+ 0, 0,146, 0, 0, 0,146, 0, 0, 0,147, 0, 0, 0,150, 0, 0, 0,150, 0,
+ 0, 0,150, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0,
+ 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,155, 0,
+ 0, 0,156, 0, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,
+110,100,108,101, 0, 0, 0, 0, 0, 30, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0,
+ 0,116,121,112,101,110, 97,109,101, 0, 0, 0, 0, 0, 30, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 7, 0, 0, 0, 30, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 15, 0, 0, 0, 29,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 21, 0,
+ 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 0,
+ 0, 0,168, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64,
+ 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0,
+ 0, 0, 0, 83,104,111,119, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,
+100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,167, 0, 0, 0,167, 0, 0, 0,
+167, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,172, 0, 0, 0, 0, 1, 0, 3, 4,
+ 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72,105,100,101, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0,171, 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0,172, 0, 0, 0, 1, 0, 0,
+ 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, 0, 0, 0,
+176, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0,
+ 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0,
+ 0, 77, 97,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0,175, 0, 0, 0,175, 0, 0, 0,175, 0, 0,
+ 0,176, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,
+101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,178, 0, 0, 0,189, 0, 0, 0, 0, 2, 0, 7, 23, 0, 0, 0,
+139, 0, 64, 0, 0, 1,128, 0,156,128,128, 1,202,128, 0, 0,201, 0,128,128,
+201,128, 0,129, 5,193, 0, 0, 64, 1, 0, 1,129, 1, 1, 0, 28, 65,128, 1,
+ 5,193, 0, 0, 64, 1,128, 1,129, 65, 1, 0, 28, 65,128, 1, 5,129, 1, 0,
+ 64, 1, 0, 1,128, 1,128, 1, 28, 65,128, 1, 11,193,193, 1,128, 1,128, 0,
+ 28, 65,128, 1,158, 0, 0, 1, 30, 0,128, 0, 8, 0, 0, 0, 4, 14, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0,
+ 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 83,101,116, 87,105,100,103,101,116, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 0, 0, 0,
+ 0, 23, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,180, 0, 0,
+ 0,181, 0, 0, 0,182, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,184, 0, 0,
+ 0,184, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0,
+ 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,187, 0, 0,
+ 0,187, 0, 0, 0,187, 0, 0, 0,188, 0, 0, 0,189, 0, 0, 0, 4, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 22,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 22,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 3, 0,
+ 0, 0, 22, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116,
+ 0, 6, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,191, 0, 0, 0,203, 0, 0, 0, 0, 2, 0, 12, 25, 0, 0, 0,134, 0, 64,
+ 0,197, 64, 0, 0, 0, 1,128, 0,220, 0, 1, 1, 22, 0, 4,128, 5,130, 0,
+ 0, 64, 2, 0, 3, 28,130, 0, 1, 23,192, 64, 4, 22,128, 2,128, 5, 2, 1,
+ 0, 64, 2,128, 3, 28,130, 0, 1, 23, 64, 65, 4, 22, 64, 1,128, 5,130, 1,
+ 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2,128, 3, 28, 66, 0, 2, 22, 0, 0,
+128,137,192, 1, 3,225,128, 0, 0, 22, 0,251,127, 30, 0,128, 0, 7, 0, 0,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,112, 97,105,114,115, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,116,121,112,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,
+114, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,
+115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,
+108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,115,101,116, 0, 0,
+ 0, 0, 0, 25, 0, 0, 0,192, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193,
+ 0, 0, 0,193, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194,
+ 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194,
+ 0, 0, 0,194, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197,
+ 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,200, 0, 0, 0,193, 0, 0, 0,201,
+ 0, 0, 0,203, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111,
+ 98,106,101, 99,116, 0, 0, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 24, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+ 0, 0,104, 97,110,100,108,101, 0, 1, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0,
+ 0, 0, 0, 0, 0, 40,102,111,114, 32,103,101,110,101,114, 97,116,111,114, 41,
+ 0, 4, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,
+114, 32,115,116, 97,116,101, 41, 0, 4, 0, 0, 0, 24, 0, 0, 0, 14, 0, 0,
+ 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 4,
+ 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 5, 0, 0,
+ 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 5, 0, 0, 0, 22,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 0, 0, 0,227,
+ 0, 0, 0, 0, 2, 0, 11, 28, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1,
+ 65, 0, 0,156,128,128, 1,197,128, 0, 0,198,192,192, 1, 0, 1,128, 0,220,
+128, 0, 1, 1, 1, 1, 0, 64, 1,128, 1,129, 1, 1, 0, 32, 1, 2,128, 5,
+ 66, 1, 0, 70,194,129, 0, 28,130, 0, 1, 23,128, 65, 4, 22,192, 0,128, 5,
+194, 1, 0, 64, 2, 0, 1,134,194,129, 0, 28, 66,128, 1, 31, 65,253,127, 5,
+ 1, 2, 0, 6, 65, 66, 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128, 1, 30,
+ 0,128, 0, 10, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103,
+101,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 5, 0, 0, 0, 0,
+ 0, 0, 0,103,101,116,110, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,
+101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 0, 0, 0, 0, 28, 0, 0,
+ 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,220, 0, 0,
+ 0,220, 0, 0, 0,220, 0, 0, 0,220, 0, 0, 0,221, 0, 0, 0,221, 0, 0,
+ 0,221, 0, 0, 0,221, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,222, 0, 0,
+ 0,222, 0, 0, 0,222, 0, 0, 0,223, 0, 0, 0,223, 0, 0, 0,223, 0, 0,
+ 0,223, 0, 0, 0,221, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,226, 0, 0,
+ 0,226, 0, 0, 0,226, 0, 0, 0,227, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 27, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 27, 0, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 27,
+ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 8, 0, 0, 0, 27, 0, 0,
+ 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110,100,101,120, 41,
+ 0, 11, 0, 0, 0, 22, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,
+114, 32,108,105,109,105,116, 41, 0, 11, 0, 0, 0, 22, 0, 0, 0, 11, 0, 0,
+ 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 11, 0, 0, 0,
+ 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 12, 0, 0, 0, 21, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 0, 0, 0,252, 0,
+ 0, 0, 0, 2, 0, 10, 52, 0, 0, 0,128, 0, 0, 0,219, 64,128, 0, 22, 0,
+ 0,128,193, 0, 0, 0, 21,192, 0, 1,133, 64, 0, 0,154, 0, 0, 0, 22,128,
+ 0,128,133, 64, 0, 0,137, 0, 0,129, 22,192, 9,128,133,192, 0, 0,202,192,
+ 0, 0,201, 64, 65,130,201,192, 65,131,201, 64, 66,132,156,128, 0, 1,197,128,
+ 2, 0, 10, 1, 1, 0, 9, 1,195,133, 9, 1,195,134, 9, 1, 0,129, 9,129,
+ 67,131,220,128, 0, 1, 5,193, 3, 0, 74,193, 0, 1,128, 1,128, 1,192, 1,
+ 0, 1, 73, 65, 68,136, 73,193, 68,137, 73, 65, 69,138, 98, 65, 0, 1, 28,129,
+ 0, 1, 69,129, 5, 0,138, 1,129, 0,192, 1, 0, 2,137,193, 69,130,137,129,
+ 0,140,137,129,128,140,137,129, 0,141,162, 65,128, 0, 92,129, 0, 1,199, 64,
+ 0, 0,139,193,198, 2, 5, 2, 7, 0, 69, 2, 7, 0,156, 65, 0, 2,139, 65,
+199, 2,156, 65, 0, 1,131, 1, 0, 3,135, 65, 0, 0, 30, 0,128, 0, 30, 0,
+ 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20, 0, 0, 0, 0, 0, 0,
+ 0,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112,117,112,
+ 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0, 98,117,116,116,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0,
+ 0,116,105,116,108,101, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 79,107, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0,115,105,122,101, 0, 4, 3, 0, 0, 0, 0, 0,
+ 0, 0, 54, 48, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110,
+ 0, 4, 44, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 95,109,101,115,115,
+ 97,103,101, 95,112,111,112,117,112, 32, 61, 32,110,105,108, 59, 32,114,101,116,
+117,114,110, 32,105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 10, 0, 0, 0, 0,
+ 0, 0, 0,109,117,108,116,105,108,105,110,101, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0,101,120,112, 97,110,100, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69,
+ 83, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,114,101, 97,100,111,110,108,121, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0, 51, 48, 48,120, 49, 53, 48, 0, 4, 5, 0,
+ 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,
+ 97,108,105,103,110,109,101,110,116, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65,
+ 67, 69, 78, 84, 69, 82, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,114,103,
+105,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 49, 48,120, 49, 48, 0, 4, 4,
+ 0, 0, 0, 0, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,
+ 49, 48, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103, 0, 4,
+ 14, 0, 0, 0, 0, 0, 0, 0, 69,114,114,111,114, 32, 77,101,115,115, 97,103,
+101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,116,101,115,
+ 99, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,116,101,110,
+116,101,114, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,115,116, 97,114,116,102,111,
+ 99,117,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,
+240, 0, 0, 0,240, 0, 0, 0,240, 0, 0, 0,241, 0, 0, 0,241, 0, 0, 0,
+241, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,
+243, 0, 0, 0,243, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,
+244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,245, 0, 0, 0,
+245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,
+245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,
+246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,
+246, 0, 0, 0,246, 0, 0, 0,247, 0, 0, 0,248, 0, 0, 0,248, 0, 0, 0,
+248, 0, 0, 0,248, 0, 0, 0,249, 0, 0, 0,249, 0, 0, 0,250, 0, 0, 0,
+250, 0, 0, 0,252, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+101,114,114, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+116,114, 97, 99,101, 98, 97, 99,107, 0, 0, 0, 0, 0, 51, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0, 98,116, 0, 17, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0,109,108, 0, 24, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0,118, 98, 0, 33, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0,100,103, 0, 42, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,254, 0, 0, 0,254, 0, 0, 0, 0, 0, 7, 2, 2, 0,
+ 0, 0, 30, 0, 0, 1, 30, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,
+ 0, 0,254, 0, 0, 0,254, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0, 0, 0, 2, 0, 6, 29, 0,
+ 0, 0, 26, 64, 0, 0, 22,192, 0,128,133, 0, 0, 0,192, 0,128, 0,156, 64,
+ 0, 1, 30, 0,128, 0,133, 64, 0, 0,197,128, 0, 0, 0, 1, 0, 0,220, 0,
+ 0, 1,156,128, 0, 0,198,192, 64, 1,218, 64, 0, 0, 22, 0, 1,128,197, 0,
+ 0, 0, 6, 1, 65, 1,220, 64, 0, 1, 30, 0,128, 0, 22, 0, 2,128,197, 64,
+ 1, 0,198,128,193, 1, 0, 1, 0, 1, 65,193, 0, 0,220, 64,128, 1,197,192,
+ 1, 0, 0, 1, 0, 1,221, 0, 0, 1,222, 0, 0, 0, 30, 0,128, 0, 8, 0,
+ 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77, 69, 83,
+ 83, 65, 71, 69, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,112, 97, 99,107, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0,112, 99, 97,108,108, 0, 3, 0, 0, 0, 0, 0,
+ 0,240, 63, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4, 6, 0, 0, 0, 0, 0, 0,
+ 0,116, 97, 98,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,109,111,
+118,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,117,110,112, 97, 99,107, 0, 0,
+ 0, 0, 0, 29, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 1, 0, 0, 2,
+ 1, 0, 0, 2, 1, 0, 0, 3, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 5,
+ 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 6, 1, 0, 0, 6, 1, 0, 0, 6,
+ 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 8, 1, 0, 0, 8,
+ 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10,
+ 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 13,
+ 1, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,102, 0, 0, 0, 0,
+ 0, 28, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,101,114,114, 0, 0, 0, 0,
+ 0, 28, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, 11, 0, 0,
+ 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 1, 0,
+ 0, 15, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133, 64, 0,
+ 0,192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30, 0,128,
+ 0, 2, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,112,114,111,116,101, 99,
+116,101,100, 99, 97,108,108, 95, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,108,111,
+ 97,100,115,116,114,105,110,103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 1, 0,
+ 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0,
+ 0, 15, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
+ 1, 0, 0, 16, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133,
+ 64, 0, 0,192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30,
+ 0,128, 0, 2, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,112,114,111,116,
+101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+108,111, 97,100,102,105,108,101, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 1, 0,
+ 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0,
+ 0, 16, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,102, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,
+ 1, 0, 0, 20, 1, 0, 0, 0, 3, 0, 8, 9, 0, 0, 0,197, 0, 0, 0,198,
+ 64,192, 1, 1,129, 0, 0, 78, 1,128,129,142, 65,128,129,206,129,128,129,221,
+ 0,128, 2,222, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, 7, 0, 0, 0,
+ 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,
+102,111,114,109, 97,116, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 37,100, 32, 37,
+100, 32, 37,100, 0, 3, 0, 0, 0, 0, 0,224,111, 64, 0, 0, 0, 0, 9, 0,
+ 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1,
+ 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 20, 1, 0, 0, 3, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0, 0, 0, 8, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0,103, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
+114, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0,
+ 37, 0, 0, 0, 29, 0, 0, 0, 53, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0,
+ 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0,
+ 56, 0, 0, 0, 79, 0, 0, 0,109, 0, 0, 0,111, 0, 0, 0,111, 0, 0, 0,
+111, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,
+112, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,
+113, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,
+114, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,
+115, 0, 0, 0,130, 0, 0, 0,122, 0, 0, 0,136, 0, 0, 0,132, 0, 0, 0,
+156, 0, 0, 0,138, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,
+164, 0, 0, 0,166, 0, 0, 0,168, 0, 0, 0,166, 0, 0, 0,170, 0, 0, 0,
+172, 0, 0, 0,170, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,174, 0, 0, 0,
+178, 0, 0, 0,189, 0, 0, 0,178, 0, 0, 0,191, 0, 0, 0,203, 0, 0, 0,
+191, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,
+214, 0, 0, 0,215, 0, 0, 0,215, 0, 0, 0,216, 0, 0, 0,218, 0, 0, 0,
+227, 0, 0, 0,218, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,
+229, 0, 0, 0,236, 0, 0, 0,236, 0, 0, 0,252, 0, 0, 0,238, 0, 0, 0,
+254, 0, 0, 0,254, 0, 0, 0, 13, 1, 0, 0, 0, 1, 0, 0, 15, 1, 0, 0,
+ 15, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 20, 1, 0, 0, 18, 1, 0, 0,
+ 24, 1, 0, 0, 24, 1, 0, 0, 24, 1, 0, 0, 24, 1, 0, 0, 25, 1, 0, 0,
+ 25, 1, 0, 0, 25, 1, 0, 0, 25, 1, 0, 0, 25, 1, 0, 0, 26, 1, 0, 0,
+ 26, 1, 0, 0, 26, 1, 0, 0, 26, 1, 0, 0, 26, 1, 0, 0, 27, 1, 0, 0,
+ 27, 1, 0, 0, 27, 1, 0, 0, 28, 1, 0, 0, 28, 1, 0, 0, 29, 1, 0, 0,
+ 3, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,119,105,100,103,101,116, 95,103,
+101,116,116, 97, 98,108,101, 0, 7, 0, 0, 0,113, 0, 0, 0, 17, 0, 0, 0,
+ 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,103,101,116,116, 97, 98,108,101,
+ 0, 16, 0, 0, 0,113, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,105,104, 97,
+110,100,108,101, 95,115,101,116,116, 97, 98,108,101, 0, 17, 0, 0, 0,113, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/iuplua_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/iuplua_le64w.loh b/iup/srclua5/loh/iuplua_le64w.loh
new file mode 100755
index 0000000..2a2302b
--- /dev/null
+++ b/iup/srclua5/loh/iuplua_le64w.loh
@@ -0,0 +1,531 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/iuplua_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/iuplua_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 7, 95, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 36, 0, 0, 0,
+ 7, 64, 0, 0, 36, 64, 0, 0, 7,128, 0, 0, 36,128, 0, 0, 69,192, 0, 0,
+129, 0, 1, 0, 92, 64, 0, 1, 69, 64, 1, 0,129, 0, 1, 0,193,128, 1, 0,
+ 0, 1, 0, 0, 92, 64, 0, 2,100,192, 0, 0,164, 0, 1, 0,197,192, 0, 0,
+ 1,193, 1, 0,220, 64, 0, 1,197, 64, 1, 0, 1,193, 1, 0, 65,129, 1, 0,
+128, 1,128, 0,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 1, 2, 0,
+128, 1, 0, 1,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 65, 2, 0,
+133,129, 2, 0,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65,193, 2, 0,
+133, 1, 3, 0,220, 64, 0, 2,228, 64, 1, 0,199, 64, 3, 0,228,128, 1, 0,
+199,128, 3, 0,228,192, 1, 0,199,192, 3, 0,202, 64, 0, 0, 10, 1, 0, 0,
+201, 0,129,136,199, 0, 4, 0,197, 0, 4, 0, 36, 1, 2, 0,201, 0, 1,137,
+197, 0, 4, 0, 36, 65, 2, 0,201, 0,129,137,197, 0, 4, 0, 36,129, 2, 0,
+201, 0, 1,138,197, 0, 4, 0, 36,193, 2, 0,201, 0,129,138,197, 0, 4, 0,
+ 36, 1, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 4, 0, 65, 1, 1, 0,
+220, 64,128, 1,202, 64, 0, 0, 5, 1, 4, 0,201, 0,129,140,199, 0, 6, 0,
+197, 0, 6, 0, 36, 65, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 6, 0,
+ 65, 1, 1, 0,220, 64,128, 1,195, 0,128, 1,199,128, 6, 0,228,128, 3, 0,
+199,192, 6, 0,228,192, 3, 0,199, 0, 7, 0,228, 0, 4, 0,199, 64, 7, 0,
+228, 64, 4, 0,199,128, 7, 0,228,128, 4, 0,199,192, 7, 0,228,192, 4, 0,
+199, 0, 8, 0, 30, 0,128, 0, 33, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 17, 0, 0, 0, 0,
+ 0, 0, 0, 82,101,103,105,115,116,101,114, 67, 97,108,108, 98, 97, 99,107, 0,
+ 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 78,101,119, 67,108, 97,115,115,
+ 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116,
+ 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 77,101,116,104,
+111,100, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 95, 95,105,110,100,101,120, 0,
+ 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0,
+ 4, 11, 0, 0, 0, 0, 0, 0, 0, 95, 95,110,101,119,105,110,100,101,120, 0,
+ 4, 11, 0, 0, 0, 0, 0, 0, 0, 95, 95,116,111,115,116,114,105,110,103, 0,
+ 4, 17, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,116,111,115,
+116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 95, 95,101,113, 0,
+ 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95, 99,111,109,
+112, 97,114,101, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,
+101, 95,115,101,116,110, 97,109,101, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 15, 0,
+ 0, 0, 0, 0, 0, 0, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0,
+ 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0,115,104,111,119, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,104,105,
+100,101, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,109, 97,112, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0, 99,111,110,115,116,114,117, 99,116,111,114, 0, 4, 14, 0,
+ 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0,
+ 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115,
+ 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0,101,
+114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112,117,112, 0, 4,
+ 14, 0, 0, 0, 0, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71,
+ 69, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,112, 97, 99,107, 0, 4, 15, 0, 0,
+ 0, 0, 0, 0, 0,112,114,111,116,101, 99,116,101,100, 99, 97,108,108, 95, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,100,111,102,105,108,101, 0, 4, 4, 0, 0, 0, 0,
+ 0, 0, 0, 82, 71, 66, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 27, 0, 0, 0, 0, 1, 7, 7, 35, 0, 0, 0,134, 0,192, 0,198,
+ 0, 0, 1,218, 64, 0, 0, 22, 0, 0,128, 30, 0,128, 0, 5, 65, 0, 0, 64,
+ 1,128, 1, 28,129, 0, 1, 23,128, 64, 2, 22,128, 1,128, 0, 1,128, 1, 69,
+193, 0, 0,128, 1,128, 0, 92, 1, 0, 1, 29, 1, 0, 0, 30, 1, 0, 0, 22,
+ 0, 4,128, 5, 65, 0, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 65, 2, 22,
+ 0, 2,128, 5, 65, 1, 0,135, 64, 1, 0, 69,129, 1, 0, 70,193,193, 2,128,
+ 1,128, 1, 92,129, 0, 1, 7, 65, 1, 0, 94, 1, 0, 1, 22,128, 0,128, 5,
+129, 1, 0, 6, 1, 66, 2, 30, 1, 0, 1, 30, 0,128, 0, 9, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0,240, 63, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,
+101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,116,105,111,110, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0,117,110,112, 97, 99,107, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,115,101,108,102, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0, 69, 82, 82, 79, 82, 0, 0, 0, 0, 0, 35, 0, 0, 0,
+ 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0,
+ 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0,
+ 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0,
+ 23, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0,
+ 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0,
+ 1, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,
+ 0, 2, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,116,101,109,
+112, 0, 23, 0, 0, 0, 30, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,114,101,
+115,117,108,116, 0, 28, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 0, 3, 0, 5, 15, 0, 0,
+ 0,197, 0, 0, 0,198, 0,128, 1,218, 64, 0, 0, 22,128, 0,128,197, 0, 0,
+ 0, 10, 1, 0, 0,201, 0, 1, 0,197, 0, 0, 0,198, 0,128, 1,154, 0, 0,
+ 0, 22, 64, 0,128,201, 64, 0, 1, 22, 0, 0,128,201, 64,128,128, 30, 0,128,
+ 0, 2, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97,
+ 99,107,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 15, 0, 0,
+ 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0,
+ 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0,
+ 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 37, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 0, 0,
+ 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 0,
+ 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0,
+ 0, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 99, 98, 0, 9,
+ 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,
+ 0, 0, 0, 53, 0, 0, 0, 0, 2, 0, 7, 21, 0, 0, 0,128, 0, 0, 0,195,
+ 0,128, 1, 5, 1, 0, 0, 64, 1, 0, 1,128, 1,128, 0, 28,129,128, 1,192,
+ 0, 0, 2,218, 0, 0, 0, 22, 0, 0,128,222, 0, 0, 1, 5, 1, 0, 0, 64,
+ 1, 0, 1,129, 65, 0, 0, 28,129,128, 1,128, 0, 0, 2,154, 64, 0, 0, 22,
+ 0,252,127, 3, 1, 0, 2, 30, 1, 0, 1, 22, 64,251,127, 30, 0,128, 0, 2,
+ 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103,101,116, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 0, 0, 0, 0, 21,
+ 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48,
+ 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49,
+ 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50,
+ 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51,
+ 0, 0, 0, 53, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111,
+ 98,106,101, 99,116, 0, 0, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0,112, 0, 1, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0,118, 0, 2, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 59, 0, 0, 0, 79, 0, 0, 0, 0, 2, 0, 7, 67, 0, 0, 0,
+133, 0, 0, 0,134, 64, 64, 1,192, 0,128, 0,156,128, 0, 1,197,128, 0, 0,
+198,128,128, 1,218, 0, 0, 0, 22,192, 3,128,197,192, 0, 0, 0, 1, 0, 0,
+220,128, 0, 1,218, 0, 0, 0, 22, 0, 1,128, 5, 1, 1, 0, 64, 1,128, 1,
+ 28,129, 0, 1, 87, 64, 65, 2, 22,128, 0,128, 5,129, 1, 0, 65,193, 1, 0,
+ 28, 65, 0, 1, 6, 65,128, 1, 30, 1, 0, 1, 22, 64, 10,128,197, 0, 2, 0,
+ 0, 1, 0, 0, 64, 1, 0, 1,220,128,128, 1,218, 64, 0, 0, 22,192, 3,128,
+ 5,193, 0, 0, 64, 1, 0, 0, 28,129, 0, 1, 26, 1, 0, 0, 22, 0, 1,128,
+ 69, 1, 1, 0,128, 1, 0, 2, 92,129, 0, 1, 87, 64,193, 2, 22,128, 0,128,
+ 69,129, 1, 0,129,193, 1, 0, 92, 65, 0, 1, 70, 65, 0, 2, 94, 1, 0, 1,
+ 22,192, 4,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 87, 64, 66, 2,
+ 22, 0, 1,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 64, 2,
+ 22, 0, 2,128, 5,129, 2, 0, 64, 1,128, 1, 28,129, 0, 1, 26, 1, 0, 0,
+ 22, 64, 0,128, 30, 1, 0, 1, 22,128, 0,128,222, 0, 0, 1, 22, 0, 0,128,
+222, 0, 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,117,112,112,
+101,114, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+115, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,
+103,101,116, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0,101,114,114,111,114, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0,105,110,118,
+ 97,108,105,100, 32,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 13, 0, 0,
+ 0, 0, 0, 0, 0, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 10, 0, 0, 0, 0,
+ 0, 0, 0, 71,101,116, 72, 97,110,100,108,101, 0, 0, 0, 0, 0, 67, 0, 0,
+ 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0,
+ 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0,
+ 0, 62, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,
+ 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,
+ 0, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 66, 0, 0,
+ 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0,
+ 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0,
+ 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0,
+ 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0,
+ 0, 70, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0,
+ 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0,
+ 0, 71, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0,
+ 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0,
+ 0, 76, 0, 0, 0, 79, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+ 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 66, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 66, 0, 0, 0, 6, 0,
+ 0, 0, 0, 0, 0, 0, 73, 78, 68, 69, 88, 0, 4, 0, 0, 0, 66, 0, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 11, 0, 0, 0, 23,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 28, 0, 0,
+ 0, 66, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0,
+ 33, 0, 0, 0, 45, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,104, 0, 59,
+ 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,
+ 0, 0, 0,109, 0, 0, 0, 0, 3, 0, 14, 78, 0, 0, 0,197, 0, 0, 0, 0,
+ 1,128, 0,220,128, 0, 1, 5, 1, 0, 0, 64, 1, 0, 1, 28,129, 0, 1, 69,
+ 65, 0, 0,128, 1, 0, 0, 92,129, 0, 1, 90, 1, 0, 0, 22, 0, 1,128,133,
+ 1, 0, 0,192, 1,128, 2,156,129, 0, 1, 87,128, 64, 3, 22,128, 0,128,133,
+193, 0, 0,193, 1, 1, 0,156, 65, 0, 1, 87, 64,193, 1, 22, 64, 0,128, 23,
+128,193, 1, 22, 0, 13,128,133,129, 1, 0,134,193, 65, 3,192, 1,128, 0,156,
+129, 0, 1,197, 1, 2, 0,198,129,129, 3,218, 1, 0, 0, 22,128, 3,128, 6,
+ 66,194, 3, 26, 66, 0, 0, 22,192, 0,128, 69,130, 2, 0,128, 2, 0, 0, 92,
+130, 0, 1, 6, 66,130, 3, 69,194, 2, 0,128, 2, 0, 0,192, 2, 0, 3, 0,
+ 3, 0, 4, 64, 3, 0, 1, 92, 66,128, 2, 73,129,128, 0, 22,128, 7,128, 5,
+ 2, 3, 0, 64, 2, 0, 1, 28,130, 0, 1, 23, 64, 67, 4, 22, 64, 2,128, 5,
+130, 3, 0, 64, 2, 0, 1, 28,130, 0, 1, 69,194, 3, 0,128, 2, 0, 0,192,
+ 2, 0, 3, 0, 3, 0, 4, 92, 66, 0, 2, 73, 1,196, 0, 22,192, 3,128, 87,
+128, 65, 2, 22,192, 0,128, 87, 64, 65, 2, 22, 64, 0,128, 23, 64, 68, 2, 22,
+128, 1,128, 5,194, 3, 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2, 0, 1, 28,
+ 66, 0, 2, 73, 1,196, 0, 22,128, 0,128, 73,129,128, 0, 22, 0, 0,128, 73,
+129,128, 0, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+116,121,112,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116,
+ 87,105,100,103,101,116, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,
+101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0, 4, 19, 0,
+ 0, 0, 0, 0, 0, 0,105,110,118, 97,108,105,100, 32,105,117,112, 32,104, 97,
+110,100,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,117,112,112,101,114, 0, 4, 10, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63,
+ 4, 13, 0, 0, 0, 0, 0, 0, 0, 71,101,116, 67,108, 97,115,115, 78, 97,109,
+101, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, 97,108,
+108, 98, 97, 99,107, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,
+116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,
+104, 97,110,100,108,101, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,
+100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 15, 0, 0, 0, 0, 0, 0,
+ 0, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 0, 0, 4, 4, 0,
+ 0, 0, 0, 0, 0, 0,110,105,108, 0, 0, 0, 0, 0, 78, 0, 0, 0, 82, 0,
+ 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 83, 0,
+ 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0,
+ 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0,
+ 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86, 0,
+ 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0,
+ 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0,
+ 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 92, 0,
+ 0, 0, 92, 0, 0, 0, 92, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0,
+ 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 95, 0,
+ 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0,
+ 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 98, 0,
+ 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 99, 0,
+ 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0,
+ 0, 0,100, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0,
+ 0, 0,101, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0,105, 0,
+ 0, 0,107, 0, 0, 0,109, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+ 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6, 0, 0,
+ 0, 0, 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 77, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0,116,105, 0, 3, 0, 0, 0, 77, 0, 0, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0,116,118, 0, 6, 0, 0, 0, 77, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 9, 0, 0, 0, 77, 0,
+ 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 73, 78, 68, 69, 88, 0, 27, 0, 0, 0,
+ 75, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 99, 98, 0, 29, 0, 0, 0, 75,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 32, 0, 0, 0,
+ 45, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 54, 0, 0,
+ 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 0, 0,
+ 0,130, 0, 0, 0, 0, 1, 0, 6, 19, 0, 0, 0, 69, 0, 0, 0,128, 0, 0,
+ 0, 92,128, 0, 1, 90, 64, 0, 0, 22,192, 2,128,133, 64, 0, 0,134,128, 64,
+ 1,193,192, 0, 0, 5, 1, 1, 0, 64, 1, 0, 0, 28, 1, 0, 1,156,128, 0,
+ 0,197, 64, 1, 0, 0, 1, 0, 1, 64, 1, 0, 0,220, 64,128, 1,158, 0, 0,
+ 1, 94, 0, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0,
+ 0, 0, 71,101,116, 78, 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,
+116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,111,114,109, 97,
+116, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 95, 73, 85, 80, 76, 85, 65, 95, 78,
+ 65, 77, 69, 40, 37,115, 41, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,116,111,115,
+116,114,105,110,103, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 72, 97,
+110,100,108,101, 0, 0, 0, 0, 0, 19, 0, 0, 0,123, 0, 0, 0,123, 0, 0,
+ 0,123, 0, 0, 0,124, 0, 0, 0,124, 0, 0, 0,125, 0, 0, 0,125, 0, 0,
+ 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0,
+ 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,127, 0, 0,
+ 0,129, 0, 0, 0,130, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
+ 0,118, 0, 0, 0, 0, 0, 18, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110,
+ 97,109,101, 0, 3, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+ 97,117,116,111,110, 97,109,101, 0, 12, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 0, 0, 0,136, 0, 0, 0, 0, 1, 0,
+ 4, 6, 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0,228, 0, 0, 0, 0, 0, 0,
+ 0, 73,192, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 0, 0, 0,135, 0, 0, 0,
+ 1, 1, 0, 4, 6, 0, 0, 0, 68, 0, 0, 0, 75, 0,192, 0,192, 0, 0, 0,
+ 93, 0,128, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0, 99,111,110,115,116,114,117, 99,116,111,114, 0, 0, 0, 0,
+ 0, 6, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0,
+ 0,134, 0, 0, 0,135, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0,
+ 0, 0, 0, 0, 0, 99,116,114,108, 0, 6, 0, 0, 0,133, 0, 0, 0,133, 0,
+ 0, 0,135, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,136, 0, 0, 0, 1, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,138, 0, 0, 0,156,
+ 0, 0, 0, 0, 2, 0, 8, 31, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1,
+ 65, 0, 0,156, 64,128, 1,133,128, 0, 0,192, 0, 0, 0,156,128, 0, 1,154,
+ 64, 0, 0, 22,192, 4,128,197,192, 0, 0, 5, 1, 1, 0, 6, 65, 65, 2, 64,
+ 1,128, 0, 28,129, 0, 1,198, 0,129, 1,218, 64, 0, 0, 22, 0, 0,128,197,
+128, 1, 0, 10,129, 0, 0, 9,193,128,131, 9, 1, 0,132, 69, 1, 0, 0,128,
+ 1, 0, 2,193, 65, 2, 0, 92, 65,128, 1, 69,129, 2, 0,128, 1, 0, 0,192,
+ 1, 0, 2, 92, 65,128, 1, 30, 0, 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4,
+ 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0,
+ 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0,
+ 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101,
+116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 7, 0, 0, 0,
+ 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+117,112,112,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69,
+ 84, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 83,101,116, 87,105,100,103,101,116, 0, 0, 0, 0, 0,
+ 31, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,
+142, 0, 0, 0,142, 0, 0, 0,142, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0,
+145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,
+145, 0, 0, 0,146, 0, 0, 0,146, 0, 0, 0,147, 0, 0, 0,150, 0, 0, 0,
+150, 0, 0, 0,150, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,
+151, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,
+155, 0, 0, 0,156, 0, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+104, 97,110,100,108,101, 0, 0, 0, 0, 0, 30, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0,116,121,112,101,110, 97,109,101, 0, 0, 0, 0, 0, 30, 0, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 7, 0, 0, 0, 30,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 15, 0, 0,
+ 0, 29, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0,
+ 21, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+166, 0, 0, 0,168, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0,
+134, 64, 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0, 83,104,111,119, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104,
+ 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,167, 0, 0, 0,167, 0,
+ 0, 0,167, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+ 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,172, 0, 0, 0, 0, 1, 0,
+ 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0, 92, 64, 0, 1, 30, 0,128,
+ 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72,105,100,101, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0,172, 0, 0, 0, 1,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, 0,
+ 0, 0,176, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64,
+ 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 0,
+ 0, 0, 0, 77, 97,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,175, 0, 0, 0,175, 0, 0, 0,175,
+ 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111,
+ 98,106,101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,178, 0, 0, 0,189, 0, 0, 0, 0, 2, 0, 7, 23, 0,
+ 0, 0,139, 0, 64, 0, 0, 1,128, 0,156,128,128, 1,202,128, 0, 0,201, 0,
+128,128,201,128, 0,129, 5,193, 0, 0, 64, 1, 0, 1,129, 1, 1, 0, 28, 65,
+128, 1, 5,193, 0, 0, 64, 1,128, 1,129, 65, 1, 0, 28, 65,128, 1, 5,129,
+ 1, 0, 64, 1, 0, 1,128, 1,128, 1, 28, 65,128, 1, 11,193,193, 1,128, 1,
+128, 0, 28, 65,128, 1,158, 0, 0, 1, 30, 0,128, 0, 8, 0, 0, 0, 4, 14,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 12, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 83,101,116, 87,105,100,103,101,116, 0, 4, 14, 0, 0,
+ 0, 0, 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 0,
+ 0, 0, 0, 23, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,180,
+ 0, 0, 0,181, 0, 0, 0,182, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,184,
+ 0, 0, 0,184, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185,
+ 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,187,
+ 0, 0, 0,187, 0, 0, 0,187, 0, 0, 0,188, 0, 0, 0,189, 0, 0, 0, 4,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 22, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0,
+ 0, 22, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0,
+ 3, 0, 0, 0, 22, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101,
+ 99,116, 0, 6, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,191, 0, 0, 0,203, 0, 0, 0, 0, 2, 0, 12, 25, 0, 0, 0,134,
+ 0, 64, 0,197, 64, 0, 0, 0, 1,128, 0,220, 0, 1, 1, 22, 0, 4,128, 5,
+130, 0, 0, 64, 2, 0, 3, 28,130, 0, 1, 23,192, 64, 4, 22,128, 2,128, 5,
+ 2, 1, 0, 64, 2,128, 3, 28,130, 0, 1, 23, 64, 65, 4, 22, 64, 1,128, 5,
+130, 1, 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2,128, 3, 28, 66, 0, 2, 22,
+ 0, 0,128,137,192, 1, 3,225,128, 0, 0, 22, 0,251,127, 30, 0,128, 0, 7,
+ 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4,
+ 6, 0, 0, 0, 0, 0, 0, 0,112, 97,105,114,115, 0, 4, 5, 0, 0, 0, 0,
+ 0, 0, 0,116,121,112,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109,
+ 98,101,114, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,
+110,100,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,115,101,116,
+ 0, 0, 0, 0, 0, 25, 0, 0, 0,192, 0, 0, 0,193, 0, 0, 0,193, 0, 0,
+ 0,193, 0, 0, 0,193, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0,
+ 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0,
+ 0,194, 0, 0, 0,194, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0,
+ 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,200, 0, 0, 0,193, 0, 0,
+ 0,201, 0, 0, 0,203, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+ 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 24, 0, 0, 0, 7, 0, 0, 0,
+ 0, 0, 0, 0,104, 97,110,100,108,101, 0, 1, 0, 0, 0, 24, 0, 0, 0, 16,
+ 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,103,101,110,101,114, 97,116,111,
+114, 41, 0, 4, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,
+102,111,114, 32,115,116, 97,116,101, 41, 0, 4, 0, 0, 0, 24, 0, 0, 0, 14,
+ 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41,
+ 0, 4, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 5,
+ 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 5, 0, 0,
+ 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 0, 0,
+ 0,227, 0, 0, 0, 0, 2, 0, 11, 28, 0, 0, 0,133, 0, 0, 0,192, 0, 0,
+ 0, 1, 65, 0, 0,156,128,128, 1,197,128, 0, 0,198,192,192, 1, 0, 1,128,
+ 0,220,128, 0, 1, 1, 1, 1, 0, 64, 1,128, 1,129, 1, 1, 0, 32, 1, 2,
+128, 5, 66, 1, 0, 70,194,129, 0, 28,130, 0, 1, 23,128, 65, 4, 22,192, 0,
+128, 5,194, 1, 0, 64, 2, 0, 1,134,194,129, 0, 28, 66,128, 1, 31, 65,253,
+127, 5, 1, 2, 0, 6, 65, 66, 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128,
+ 1, 30, 0,128, 0, 10, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,
+119,103,101,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101,
+ 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0,103,101,116,110, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4,
+ 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0,
+ 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 14, 0, 0, 0, 0, 0, 0,
+ 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 0, 0, 0, 0, 28,
+ 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,220,
+ 0, 0, 0,220, 0, 0, 0,220, 0, 0, 0,220, 0, 0, 0,221, 0, 0, 0,221,
+ 0, 0, 0,221, 0, 0, 0,221, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,222,
+ 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,223, 0, 0, 0,223, 0, 0, 0,223,
+ 0, 0, 0,223, 0, 0, 0,221, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,226,
+ 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,227, 0, 0, 0, 8, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 27, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 27, 0,
+ 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 0, 0,
+ 0, 27, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 8, 0, 0, 0, 27,
+ 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110,100,101,
+120, 41, 0, 11, 0, 0, 0, 22, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,
+102,111,114, 32,108,105,109,105,116, 41, 0, 11, 0, 0, 0, 22, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 11, 0,
+ 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 12, 0, 0, 0,
+ 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 0, 0, 0,
+252, 0, 0, 0, 0, 2, 0, 10, 52, 0, 0, 0,128, 0, 0, 0,219, 64,128, 0,
+ 22, 0, 0,128,193, 0, 0, 0, 21,192, 0, 1,133, 64, 0, 0,154, 0, 0, 0,
+ 22,128, 0,128,133, 64, 0, 0,137, 0, 0,129, 22,192, 9,128,133,192, 0, 0,
+202,192, 0, 0,201, 64, 65,130,201,192, 65,131,201, 64, 66,132,156,128, 0, 1,
+197,128, 2, 0, 10, 1, 1, 0, 9, 1,195,133, 9, 1,195,134, 9, 1, 0,129,
+ 9,129, 67,131,220,128, 0, 1, 5,193, 3, 0, 74,193, 0, 1,128, 1,128, 1,
+192, 1, 0, 1, 73, 65, 68,136, 73,193, 68,137, 73, 65, 69,138, 98, 65, 0, 1,
+ 28,129, 0, 1, 69,129, 5, 0,138, 1,129, 0,192, 1, 0, 2,137,193, 69,130,
+137,129, 0,140,137,129,128,140,137,129, 0,141,162, 65,128, 0, 92,129, 0, 1,
+199, 64, 0, 0,139,193,198, 2, 5, 2, 7, 0, 69, 2, 7, 0,156, 65, 0, 2,
+139, 65,199, 2,156, 65, 0, 1,131, 1, 0, 3,135, 65, 0, 0, 30, 0,128, 0,
+ 30, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20, 0, 0, 0, 0,
+ 0, 0, 0,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112,
+117,112, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110, 0, 4, 6, 0, 0, 0, 0,
+ 0, 0, 0,116,105,116,108,101, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 79,107,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,115,105,122,101, 0, 4, 3, 0, 0, 0,
+ 0, 0, 0, 0, 54, 48, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,
+111,110, 0, 4, 44, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 95,109,101,
+115,115, 97,103,101, 95,112,111,112,117,112, 32, 61, 32,110,105,108, 59, 32,114,
+101,116,117,114,110, 32,105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 10, 0, 0,
+ 0, 0, 0, 0, 0,109,117,108,116,105,108,105,110,101, 0, 4, 7, 0, 0, 0,
+ 0, 0, 0, 0,101,120,112, 97,110,100, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,
+ 89, 69, 83, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,114,101, 97,100,111,110,108,
+121, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 51, 48, 48,120, 49, 53, 48, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, 4, 10, 0, 0, 0, 0, 0,
+ 0, 0, 97,108,105,103,110,109,101,110,116, 0, 4, 8, 0, 0, 0, 0, 0, 0,
+ 0, 65, 67, 69, 78, 84, 69, 82, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,
+114,103,105,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 49, 48,120, 49, 48, 0,
+ 4, 4, 0, 0, 0, 0, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0, 0, 0, 0,
+ 0, 0, 49, 48, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103,
+ 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 69,114,114,111,114, 32, 77,101,115,115,
+ 97,103,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,116,
+101,115, 99, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,116,
+101,110,116,101,114, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,115,116, 97,114,116,
+102,111, 99,117,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112,
+ 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82, 0, 4, 8, 0,
+ 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 0, 0, 0, 0, 52, 0,
+ 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0,
+ 0, 0,240, 0, 0, 0,240, 0, 0, 0,240, 0, 0, 0,241, 0, 0, 0,241, 0,
+ 0, 0,241, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0,
+ 0, 0,243, 0, 0, 0,243, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0,
+ 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,245, 0,
+ 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0,
+ 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,246, 0, 0, 0,246, 0,
+ 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0,
+ 0, 0,246, 0, 0, 0,246, 0, 0, 0,247, 0, 0, 0,248, 0, 0, 0,248, 0,
+ 0, 0,248, 0, 0, 0,248, 0, 0, 0,249, 0, 0, 0,249, 0, 0, 0,250, 0,
+ 0, 0,250, 0, 0, 0,252, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0,101,114,114, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0, 0, 0, 0,
+ 0, 0,116,114, 97, 99,101, 98, 97, 99,107, 0, 0, 0, 0, 0, 51, 0, 0, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0, 98,116, 0, 17, 0, 0, 0, 51, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0,109,108, 0, 24, 0, 0, 0, 51, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0,118, 98, 0, 33, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0,100,103, 0, 42, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,254, 0, 0, 0,254, 0, 0, 0, 0, 0, 7, 2,
+ 2, 0, 0, 0, 30, 0, 0, 1, 30, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0,254, 0, 0, 0,254, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0, 0, 0, 2, 0, 6,
+ 29, 0, 0, 0, 26, 64, 0, 0, 22,192, 0,128,133, 0, 0, 0,192, 0,128, 0,
+156, 64, 0, 1, 30, 0,128, 0,133, 64, 0, 0,197,128, 0, 0, 0, 1, 0, 0,
+220, 0, 0, 1,156,128, 0, 0,198,192, 64, 1,218, 64, 0, 0, 22, 0, 1,128,
+197, 0, 0, 0, 6, 1, 65, 1,220, 64, 0, 1, 30, 0,128, 0, 22, 0, 2,128,
+197, 64, 1, 0,198,128,193, 1, 0, 1, 0, 1, 65,193, 0, 0,220, 64,128, 1,
+197,192, 1, 0, 0, 1, 0, 1,221, 0, 0, 1,222, 0, 0, 0, 30, 0,128, 0,
+ 8, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77,
+ 69, 83, 83, 65, 71, 69, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,112, 97, 99,107,
+ 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112, 99, 97,108,108, 0, 3, 0, 0, 0,
+ 0, 0, 0,240, 63, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4, 6, 0, 0, 0, 0,
+ 0, 0, 0,116, 97, 98,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,
+109,111,118,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,117,110,112, 97, 99,107,
+ 0, 0, 0, 0, 0, 29, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 1, 0,
+ 0, 2, 1, 0, 0, 2, 1, 0, 0, 3, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0,
+ 0, 5, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 6, 1, 0, 0, 6, 1, 0,
+ 0, 6, 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 8, 1, 0,
+ 0, 8, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0,
+ 0, 10, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0,
+ 0, 13, 1, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,102, 0, 0,
+ 0, 0, 0, 28, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,101,114,114, 0, 0,
+ 0, 0, 0, 28, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, 11,
+ 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
+ 1, 0, 0, 15, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133,
+ 64, 0, 0,192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30,
+ 0,128, 0, 2, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,112,114,111,116,
+101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+108,111, 97,100,115,116,114,105,110,103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15,
+ 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15,
+ 1, 0, 0, 15, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,115,
+ 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 16, 1, 0, 0, 16, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0,
+ 0,133, 64, 0, 0,192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0,
+ 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,112,114,
+111,116,101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 9, 0, 0, 0, 0, 0,
+ 0, 0,108,111, 97,100,102,105,108,101, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16,
+ 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16,
+ 1, 0, 0, 16, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,102,
+ 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 18, 1, 0, 0, 20, 1, 0, 0, 0, 3, 0, 8, 9, 0, 0, 0,197, 0, 0,
+ 0,198, 64,192, 1, 1,129, 0, 0, 78, 1,128,129,142, 65,128,129,206,129,128,
+129,221, 0,128, 2,222, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0,102,111,114,109, 97,116, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 37,100,
+ 32, 37,100, 32, 37,100, 0, 3, 0, 0, 0, 0, 0,224,111, 64, 0, 0, 0, 0,
+ 9, 0, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0,
+ 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 20, 1, 0, 0,
+ 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0, 0, 0, 8, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,103, 0, 0, 0, 0, 0, 8, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,
+ 0, 0, 95, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 9, 0,
+ 0, 0, 37, 0, 0, 0, 29, 0, 0, 0, 53, 0, 0, 0, 55, 0, 0, 0, 55, 0,
+ 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
+ 0, 0, 56, 0, 0, 0, 79, 0, 0, 0,109, 0, 0, 0,111, 0, 0, 0,111, 0,
+ 0, 0,111, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0,
+ 0, 0,112, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0,
+ 0, 0,113, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0,
+ 0, 0,114, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0,
+ 0, 0,115, 0, 0, 0,130, 0, 0, 0,122, 0, 0, 0,136, 0, 0, 0,132, 0,
+ 0, 0,156, 0, 0, 0,138, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0,163, 0,
+ 0, 0,164, 0, 0, 0,166, 0, 0, 0,168, 0, 0, 0,166, 0, 0, 0,170, 0,
+ 0, 0,172, 0, 0, 0,170, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,174, 0,
+ 0, 0,178, 0, 0, 0,189, 0, 0, 0,178, 0, 0, 0,191, 0, 0, 0,203, 0,
+ 0, 0,191, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0,
+ 0, 0,214, 0, 0, 0,215, 0, 0, 0,215, 0, 0, 0,216, 0, 0, 0,218, 0,
+ 0, 0,227, 0, 0, 0,218, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,229, 0,
+ 0, 0,229, 0, 0, 0,236, 0, 0, 0,236, 0, 0, 0,252, 0, 0, 0,238, 0,
+ 0, 0,254, 0, 0, 0,254, 0, 0, 0, 13, 1, 0, 0, 0, 1, 0, 0, 15, 1,
+ 0, 0, 15, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 20, 1, 0, 0, 18, 1,
+ 0, 0, 20, 1, 0, 0, 3, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,119,105,
+100,103,101,116, 95,103,101,116,116, 97, 98,108,101, 0, 7, 0, 0, 0, 94, 0,
+ 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,103,101,
+116,116, 97, 98,108,101, 0, 16, 0, 0, 0, 94, 0, 0, 0, 17, 0, 0, 0, 0,
+ 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,116, 97, 98,108,101, 0,
+ 17, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/iuplua_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/label.loh b/iup/srclua5/loh/label.loh
new file mode 100755
index 0000000..3aa72b7
--- /dev/null
+++ b/iup/srclua5/loh/label.loh
@@ -0,0 +1,37 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/label.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/label.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,108, 97, 98,
+101,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 17,
+ 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9,
+ 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131, 69,
+ 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, 0, 0,193,
+128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, 0, 0, 0,
+110,105, 99,107, 0, 4, 6, 0, 0, 0,108, 97, 98,101,108, 0, 4, 7, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0,
+ 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 83,
+ 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,
+117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0,
+ 0, 0, 13, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,
+192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6,
+ 0, 0, 0, 76, 97, 98,101,108, 0, 4, 6, 0, 0, 0,116,105,116,108,101, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
+ 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0,
+ 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
+ 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16,
+ 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/label.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/label_be32.loh b/iup/srclua5/loh/label_be32.loh
new file mode 100755
index 0000000..ef70ed4
--- /dev/null
+++ b/iup/srclua5/loh/label_be32.loh
@@ -0,0 +1,37 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/label_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/label_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,108, 97, 98,
+101,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0,
+ 0, 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130,
+ 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0,
+ 2, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, 0, 0,128, 0,
+ 2,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0, 0, 5,
+110,105, 99,107, 0, 4, 0, 0, 0, 6,108, 97, 98,101,108, 0, 4, 0, 0, 0,
+ 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0,
+ 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 83,
+ 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 14,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0,
+ 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,
+117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 11, 0, 0, 0, 13, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192,
+ 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0,
+ 0, 0, 6, 76, 97, 98,101,108, 0, 4, 0, 0, 0, 6,116,105,116,108,101, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12,
+ 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0,
+ 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
+ 0, 16, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0,
+ 0, 0, 16, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/label_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/label_be64.loh b/iup/srclua5/loh/label_be64.loh
new file mode 100755
index 0000000..4d528c0
--- /dev/null
+++ b/iup/srclua5/loh/label_be64.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/label_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/label_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,108, 97, 98,101,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9,
+ 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128,
+ 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0,108, 97, 98,101,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,
+101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2,
+ 0, 0, 0, 0, 0, 0, 0, 83, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,
+108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2,
+ 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0,
+ 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 76,
+ 97, 98,101,108, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
+ 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0,
+ 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0,
+ 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/label_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/label_le64.loh b/iup/srclua5/loh/label_le64.loh
new file mode 100755
index 0000000..554b5da
--- /dev/null
+++ b/iup/srclua5/loh/label_le64.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/label_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/label_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,108, 97, 98,101,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9,
+ 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128,
+ 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0,108, 97, 98,101,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,
+101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2,
+ 0, 0, 0, 0, 0, 0, 0, 83, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,
+108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2,
+ 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0,
+ 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 76,
+ 97, 98,101,108, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
+ 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0,
+ 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0,
+ 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/label_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/label_le64w.loh b/iup/srclua5/loh/label_le64w.loh
new file mode 100755
index 0000000..d622b47
--- /dev/null
+++ b/iup/srclua5/loh/label_le64w.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/label_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/label_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,108, 97, 98,101,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9,
+ 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128,
+ 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0,108, 97, 98,101,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,
+101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0,
+ 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2,
+ 0, 0, 0, 0, 0, 0, 0, 83, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,
+108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2,
+ 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0,
+ 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 76,
+ 97, 98,101,108, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
+ 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0,
+ 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0,
+ 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/label_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/list.loh b/iup/srclua5/loh/list.loh
new file mode 100755
index 0000000..860d071
--- /dev/null
+++ b/iup/srclua5/loh/list.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/list.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/list.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,108,105,115,
+116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 22, 0,
+ 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74, 64, 1, 0, 73, 0,194,131, 73,128,194,132, 73, 0,195,133, 73,128,
+195,134, 73, 0,195,135, 9, 64, 0,131,100, 0, 0, 0, 9, 64, 0,136, 69, 64,
+ 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 4, 0,128, 0, 0, 0,193,192,
+ 4, 0, 92, 64,128, 1, 30, 0,128, 0, 20, 0, 0, 0, 4, 5, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0,108,105,115,116, 0, 4, 7, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4,
+ 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 97, 99,
+116,105,111,110, 0, 4, 4, 0, 0, 0,115,110,110, 0, 4, 15, 0, 0, 0,109,
+117,108,116,105,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 2, 0, 0, 0,115,
+ 0, 4, 8, 0, 0, 0,101,100,105,116, 95, 99, 98, 0, 4, 3, 0, 0, 0,110,
+115, 0, 4, 12, 0, 0, 0,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 4,
+ 2, 0, 0, 0,110, 0, 4, 12, 0, 0, 0,100, 98,108, 99,108,105, 99,107, 95,
+ 99, 98, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,
+116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,
+100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,
+115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 19, 0, 0, 0, 0, 2, 0, 3, 4, 0,
+ 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0,
+ 0, 0, 4, 5, 0, 0, 0, 76,105,115,116, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 2, 0, 0, 0,
+ 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0,
+ 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 19, 0, 0, 0, 17, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0,
+ 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,
+114,108, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/list.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/list_be32.loh b/iup/srclua5/loh/list_be32.loh
new file mode 100755
index 0000000..1e70e44
--- /dev/null
+++ b/iup/srclua5/loh/list_be32.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/list_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/list_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,108,105,115,
+116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 20, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0,192, 74,131,194, 0, 73,132,194,128, 73,133,195, 0, 73,131, 0,
+ 64, 9, 0, 0, 0,100,134,128, 64, 9, 0, 3,128, 69, 0, 0, 0,128, 1, 0,
+ 64, 92, 0, 3,192, 69, 0, 0, 0,128, 0, 4, 0,193, 1,128, 64, 92, 0,128,
+ 0, 30, 0, 0, 0, 17, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0,
+ 5,108,105,115,116, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0,
+ 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,
+105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0,
+ 0, 4,115,110,110, 0, 4, 0, 0, 0, 15,109,117,108,116,105,115,101,108,101,
+ 99,116, 95, 99, 98, 0, 4, 0, 0, 0, 2,115, 0, 4, 0, 0, 0, 8,101,100,
+105,116, 95, 99, 98, 0, 4, 0, 0, 0, 3,110,115, 0, 4, 0, 0, 0, 14, 99,
+114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0,
+ 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,
+112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 15, 0, 0, 0, 17, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,
+157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 5, 76,105,
+115,116, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0,
+ 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0,
+ 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0,
+ 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0,
+ 5, 99,116,114,108, 0, 0, 0, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/list_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/list_be64.loh b/iup/srclua5/loh/list_be64.loh
new file mode 100755
index 0000000..1a3776c
--- /dev/null
+++ b/iup/srclua5/loh/list_be64.loh
@@ -0,0 +1,48 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/list_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/list_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,108,105,115,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 22, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 64, 1, 0, 73, 0,194,131, 73,128,194,132, 73, 0,
+195,133, 73,128,195,134, 73, 0,195,135, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+ 0,136, 69, 64, 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 4, 0,128, 0,
+ 0, 0,193,192, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 20, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,108,105,115,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110,
+ 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,115,110,110, 0, 4, 15, 0, 0, 0, 0,
+ 0, 0, 0,109,117,108,116,105,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 2,
+ 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,101,100,
+105,116, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,115, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 4,
+ 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,100,
+ 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116,
+ 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,
+115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,
+116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 19, 0,
+ 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0,
+ 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 76,
+105,115,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 18, 0, 0, 0, 19, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0,
+ 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 19, 0, 0, 0, 17, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0,
+ 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/list_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/list_le64.loh b/iup/srclua5/loh/list_le64.loh
new file mode 100755
index 0000000..995a457
--- /dev/null
+++ b/iup/srclua5/loh/list_le64.loh
@@ -0,0 +1,45 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/list_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/list_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,108,105,115,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 20, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74,192, 0, 0, 73, 0,194,131, 73,128,194,132, 73, 0,
+195,133, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0,
+ 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,
+128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,108,105,115,116, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 4, 0, 0, 0, 0, 0,
+ 0, 0,115,110,110, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105,
+115,101,108,101, 99,116, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115,
+ 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,101,100,105,116, 95, 99, 98, 0, 4, 3,
+ 0, 0, 0, 0, 0, 0, 0,110,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0,
+ 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115,
+ 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0,
+ 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 76,105,
+115,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0,
+ 0, 17, 0, 0, 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0,
+ 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 10, 0,
+ 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/list_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/list_le64w.loh b/iup/srclua5/loh/list_le64w.loh
new file mode 100755
index 0000000..1859883
--- /dev/null
+++ b/iup/srclua5/loh/list_le64w.loh
@@ -0,0 +1,48 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/list_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/list_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,108,105,115,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 22, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 64, 1, 0, 73, 0,194,131, 73,128,194,132, 73, 0,
+195,133, 73,128,195,134, 73, 0,195,135, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+ 0,136, 69, 64, 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 4, 0,128, 0,
+ 0, 0,193,192, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 20, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,108,105,115,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110,
+ 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,115,110,110, 0, 4, 15, 0, 0, 0, 0,
+ 0, 0, 0,109,117,108,116,105,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 2,
+ 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,101,100,
+105,116, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,115, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 4,
+ 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,100,
+ 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116,
+ 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,
+115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,
+116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 19, 0,
+ 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0,
+ 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 76,
+105,115,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 18, 0, 0, 0, 19, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0,
+ 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 19, 0, 0, 0, 17, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0,
+ 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/list_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/matrix.loh b/iup/srclua5/loh/matrix.loh
new file mode 100755
index 0000000..cb1d401
--- /dev/null
+++ b/iup/srclua5/loh/matrix.loh
@@ -0,0 +1,94 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/matrix.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/matrix.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 12, 0, 0, 0, 64,109, 97,116,
+114,105,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4,
+ 50, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129,
+ 9, 64, 65,130, 74,128, 4, 0, 73, 0,194,131, 73,128,194,132, 73,128,194,133,
+ 73, 64, 67,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137, 73, 64, 69,138,
+ 73,192, 67,139, 73,192,195,139, 73,192, 67,140, 73,192,195,140, 73,192, 67,141,
+ 73,192,195,141,138, 64,128, 0,193,192, 3, 0,137,128,199,142,162, 64,128, 0,
+ 73,128, 0,142,138, 64,128, 0,193,192, 3, 0,137,128,199,142,162, 64,128, 0,
+ 73,128,128,143, 73,128, 66,144, 73,192,195,144, 73,192, 72,145, 9, 64, 0,131,
+ 9, 64, 73,146, 9,192, 73,147,100, 0, 0, 0, 9, 64, 0,148,100, 64, 0, 0,
+ 9, 64,128,148,100,128, 0, 0, 9, 64, 0,149, 69,192, 10, 0,128, 0, 0, 0,
+ 92, 64, 0, 1, 69, 0, 11, 0,128, 0, 0, 0,193, 64, 11, 0, 92, 64,128, 1,
+ 30, 0,128, 0, 46, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 7,
+ 0, 0, 0,109, 97,116,114,105,120, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0,
+ 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 97, 99,116,105,111,110,
+ 95, 99, 98, 0, 4, 6, 0, 0, 0,110,110,110,110,115, 0, 4, 9, 0, 0, 0,
+ 99,108,105, 99,107, 95, 99, 98, 0, 4, 4, 0, 0, 0,110,110,115, 0, 4, 11,
+ 0, 0, 0,114,101,108,101, 97,115,101, 95, 99, 98, 0, 4, 8, 0, 0, 0,100,
+114,111,112, 95, 99, 98, 0, 4, 4, 0, 0, 0,105,110,110, 0, 4, 13, 0, 0,
+ 0,100,114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 4, 3, 0, 0, 0,110,
+110, 0, 4, 8, 0, 0, 0,100,114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0,
+110,110,110,110,110,110,110, 0, 4, 14, 0, 0, 0,100,114,111,112,115,101,108,
+101, 99,116, 95, 99, 98, 0, 4, 7, 0, 0, 0,110,110,105,115,110,110, 0, 4,
+ 11, 0, 0, 0,101,100,105,116,105,111,110, 95, 99, 98, 0, 4, 5, 0, 0, 0,
+110,110,110,110, 0, 4, 13, 0, 0, 0,101,110,116,101,114,105,116,101,109, 95,
+ 99, 98, 0, 4, 13, 0, 0, 0,108,101, 97,118,101,105,116,101,109, 95, 99, 98,
+ 0, 4, 13, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4,
+ 13, 0, 0, 0,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0, 4, 11, 0,
+ 0, 0,102,103, 99,111,108,111,114, 95, 99, 98, 0, 4, 11, 0, 0, 0, 98,103,
+ 99,111,108,111,114, 95, 99, 98, 0, 4, 8, 0, 0, 0,102,111,110,116, 95, 99,
+ 98, 0, 4, 4, 0, 0, 0,114,101,116, 0, 4, 2, 0, 0, 0,115, 0, 4, 9,
+ 0, 0, 0,118, 97,108,117,101, 95, 99, 98, 0, 4, 14, 0, 0, 0,118, 97,108,
+117,101, 95,101,100,105,116, 95, 99, 98, 0, 4, 8, 0, 0, 0,109, 97,114,107,
+ 95, 99, 98, 0, 4, 12, 0, 0, 0,109, 97,114,107,101,100,105,116, 95, 99, 98,
+ 0, 4, 4, 0, 0, 0,110,110,110, 0, 4, 8, 0, 0, 0,105,110, 99,108,117,
+100,101, 0, 4, 14, 0, 0, 0,105,117,112, 99,111,110,116,114,111,108,115, 46,
+104, 0, 4, 11, 0, 0, 0,101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0,
+ 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,
+101,109,101,110,116, 0, 4, 8, 0, 0, 0,115,101,116, 99,101,108,108, 0, 4,
+ 8, 0, 0, 0,103,101,116, 99,101,108,108, 0, 4, 18, 0, 0, 0,105,117,112,
+ 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112,
+ 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0,
+ 35, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,
+157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 7, 0, 0,
+ 0, 77, 97,116,114,105,120, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0,
+ 34, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 39, 0,
+ 0, 0, 0, 4, 0, 9, 9, 0, 0, 0, 5, 1, 0, 0, 64, 1, 0, 0,128, 1,
+128, 0,193, 65, 0, 0, 0, 2, 0, 1,149, 1, 2, 3,192, 1,128, 1, 28, 65,
+ 0, 2, 30, 0,128, 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 83,101,116, 65,116,
+116,114,105, 98,117,116,101, 0, 4, 2, 0, 0, 0, 58, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38,
+ 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 4,
+ 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 8, 0,
+ 0, 0, 2, 0, 0, 0,108, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0,
+ 99, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0,118, 97,108, 0, 0, 0,
+ 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 43, 0,
+ 0, 0, 0, 3, 0, 8, 9, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,
+128, 0,129, 65, 0, 0,192, 1, 0, 1, 85,193,129, 2,221, 0,128, 1,222, 0,
+ 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 71,101,116, 65,116,
+116,114,105, 98,117,116,101, 0, 4, 2, 0, 0, 0, 58, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42,
+ 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 3,
+ 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 8, 0,
+ 0, 0, 2, 0, 0, 0,108, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0,
+ 99, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 4, 0,
+ 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0,
+ 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0,
+ 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0,
+ 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0,
+ 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0,
+ 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0,
+ 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0,
+ 0, 0, 35, 0, 0, 0, 33, 0, 0, 0, 39, 0, 0, 0, 37, 0, 0, 0, 43, 0,
+ 0, 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0,
+ 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0,
+ 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 36, 0, 0, 0, 49, 0, 0, 0, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/matrix.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/matrix_be32.loh b/iup/srclua5/loh/matrix_be32.loh
new file mode 100755
index 0000000..3d83422
--- /dev/null
+++ b/iup/srclua5/loh/matrix_be32.loh
@@ -0,0 +1,94 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/matrix_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/matrix_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 12, 64,109, 97,116,
+114,105,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4,
+ 0, 0, 0, 50, 0, 1,128, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,
+130, 65, 64, 9, 0, 4,128, 74,131,194, 0, 73,132,194,128, 73,133,194,128, 73,
+134, 67, 64, 73,135, 67,192, 73,136, 68, 64, 73,137, 68,192, 73,138, 69, 64, 73,
+139, 67,192, 73,139,195,192, 73,140, 67,192, 73,140,195,192, 73,141, 67,192, 73,
+141,195,192, 73, 0,128, 64,138, 0, 3,192,193,142,199,128,137, 0,128, 64,162,
+142, 0,128, 73, 0,128, 64,138, 0, 3,192,193,142,199,128,137, 0,128, 64,162,
+143,128,128, 73,144, 66,128, 73,144,195,192, 73,145, 72,192, 73,131, 0, 64, 9,
+146, 73, 64, 9,147, 73,192, 9, 0, 0, 0,100,148, 0, 64, 9, 0, 0, 64,100,
+148,128, 64, 9, 0, 0,128,100,149, 0, 64, 9, 0, 10,192, 69, 0, 0, 0,128,
+ 1, 0, 64, 92, 0, 11, 0, 69, 0, 0, 0,128, 0, 11, 64,193, 1,128, 64, 92,
+ 0,128, 0, 30, 0, 0, 0, 46, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0,
+ 0, 0, 7,109, 97,116,114,105,120, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,
+116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,
+114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0, 9,
+ 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 10, 97, 99,116,105,111,110,
+ 95, 99, 98, 0, 4, 0, 0, 0, 6,110,110,110,110,115, 0, 4, 0, 0, 0, 9,
+ 99,108,105, 99,107, 95, 99, 98, 0, 4, 0, 0, 0, 4,110,110,115, 0, 4, 0,
+ 0, 0, 11,114,101,108,101, 97,115,101, 95, 99, 98, 0, 4, 0, 0, 0, 8,100,
+114,111,112, 95, 99, 98, 0, 4, 0, 0, 0, 4,105,110,110, 0, 4, 0, 0, 0,
+ 13,100,114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 4, 0, 0, 0, 3,110,
+110, 0, 4, 0, 0, 0, 8,100,114, 97,119, 95, 99, 98, 0, 4, 0, 0, 0, 8,
+110,110,110,110,110,110,110, 0, 4, 0, 0, 0, 14,100,114,111,112,115,101,108,
+101, 99,116, 95, 99, 98, 0, 4, 0, 0, 0, 7,110,110,105,115,110,110, 0, 4,
+ 0, 0, 0, 11,101,100,105,116,105,111,110, 95, 99, 98, 0, 4, 0, 0, 0, 5,
+110,110,110,110, 0, 4, 0, 0, 0, 13,101,110,116,101,114,105,116,101,109, 95,
+ 99, 98, 0, 4, 0, 0, 0, 13,108,101, 97,118,101,105,116,101,109, 95, 99, 98,
+ 0, 4, 0, 0, 0, 13,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4,
+ 0, 0, 0, 13,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0, 4, 0, 0,
+ 0, 11,102,103, 99,111,108,111,114, 95, 99, 98, 0, 4, 0, 0, 0, 11, 98,103,
+ 99,111,108,111,114, 95, 99, 98, 0, 4, 0, 0, 0, 8,102,111,110,116, 95, 99,
+ 98, 0, 4, 0, 0, 0, 4,114,101,116, 0, 4, 0, 0, 0, 2,115, 0, 4, 0,
+ 0, 0, 9,118, 97,108,117,101, 95, 99, 98, 0, 4, 0, 0, 0, 14,118, 97,108,
+117,101, 95,101,100,105,116, 95, 99, 98, 0, 4, 0, 0, 0, 8,109, 97,114,107,
+ 95, 99, 98, 0, 4, 0, 0, 0, 12,109, 97,114,107,101,100,105,116, 95, 99, 98,
+ 0, 4, 0, 0, 0, 4,110,110,110, 0, 4, 0, 0, 0, 8,105,110, 99,108,117,
+100,101, 0, 4, 0, 0, 0, 14,105,117,112, 99,111,110,116,114,111,108,115, 46,
+104, 0, 4, 0, 0, 0, 11,101,120,116,114, 97,102,117,110, 99,115, 0, 3, 63,
+240, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,
+101,109,101,110,116, 0, 4, 0, 0, 0, 8,115,101,116, 99,101,108,108, 0, 4,
+ 0, 0, 0, 8,103,101,116, 99,101,108,108, 0, 4, 0, 0, 0, 18,105,117,112,
+ 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112,
+ 32,119,105,100,103,101,116, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 33,
+ 0, 0, 0, 35, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192, 64,198,
+ 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0,
+ 7, 77, 97,116,114,105,120, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34,
+ 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0,
+ 0, 39, 0, 4, 0, 9, 0, 0, 0, 9, 0, 0, 1, 5, 0, 0, 1, 64, 0,128,
+ 1,128, 0, 0, 65,193, 1, 0, 2, 0, 3, 2, 1,149, 1,128, 1,192, 2, 0,
+ 65, 28, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 13, 83,101,116, 65,116,
+116,114,105, 98,117,116,101, 0, 4, 0, 0, 0, 2, 58, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0,
+ 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 39, 0,
+ 0, 0, 4, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0,
+ 0, 8, 0, 0, 0, 2,108, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2,
+ 99, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4,118, 97,108, 0, 0, 0,
+ 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0,
+ 0, 43, 0, 3, 0, 8, 0, 0, 0, 9, 0, 0, 0,197, 0, 0, 1, 0, 0,128,
+ 1, 64, 0, 0, 65,129, 1, 0, 1,192, 2,129,193, 85, 1,128, 0,221, 0, 0,
+ 0,222, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 13, 71,101,116, 65,116,
+116,114,105, 98,117,116,101, 0, 4, 0, 0, 0, 2, 58, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0,
+ 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0,
+ 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0,
+ 0, 8, 0, 0, 0, 2,108, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2,
+ 99, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0,
+ 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0,
+ 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0,
+ 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0,
+ 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0,
+ 0, 25, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0,
+ 0, 30, 0, 0, 0, 35, 0, 0, 0, 33, 0, 0, 0, 39, 0, 0, 0, 37, 0, 0,
+ 0, 43, 0, 0, 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0,
+ 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0,
+ 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 36, 0, 0, 0, 49, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/matrix_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/matrix_be64.loh b/iup/srclua5/loh/matrix_be64.loh
new file mode 100755
index 0000000..b119ef9
--- /dev/null
+++ b/iup/srclua5/loh/matrix_be64.loh
@@ -0,0 +1,107 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/matrix_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/matrix_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 50, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74,128, 4, 0, 73, 0,194,131, 73,128,194,132,
+ 73,128,194,133, 73, 64, 67,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137,
+ 73, 64, 69,138, 73,192, 67,139, 73,192,195,139, 73,192, 67,140, 73,192,195,140,
+ 73,192, 67,141, 73,192,195,141,138, 64,128, 0,193,192, 3, 0,137,128,199,142,
+162, 64,128, 0, 73,128, 0,142,138, 64,128, 0,193,192, 3, 0,137,128,199,142,
+162, 64,128, 0, 73,128,128,143, 73,128, 66,144, 73,192,195,144, 73,192, 72,145,
+ 9, 64, 0,131, 9, 64, 73,146, 9,192, 73,147,100, 0, 0, 0, 9, 64, 0,148,
+100, 64, 0, 0, 9, 64,128,148,100,128, 0, 0, 9, 64, 0,149, 69,192, 10, 0,
+128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 11, 0,128, 0, 0, 0,193, 64, 11, 0,
+ 92, 64,128, 1, 30, 0,128, 0, 46, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,116,114,105,
+120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0,
+ 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 95, 99, 98, 0,
+ 4, 6, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99,108,105, 99,107, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0,
+ 0, 0,110,110,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,114,101,108,101, 97,
+115,101, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,114,111,112, 95,
+ 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,110,110, 0, 4, 13, 0, 0,
+ 0, 0, 0, 0, 0,100,114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 4, 3,
+ 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,
+114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,
+110,110,110, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,115,101,108,
+101, 99,116, 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,110,105,115,
+110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,105,111,110, 95,
+ 99, 98, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,110,110,110, 0, 4, 13, 0,
+ 0, 0, 0, 0, 0, 0,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 4,
+ 13, 0, 0, 0, 0, 0, 0, 0,108,101, 97,118,101,105,116,101,109, 95, 99, 98,
+ 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95,
+ 99, 98, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,115, 99,114,111,108,108,116,111,
+112, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,102,103, 99,111,108,111,
+114, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 98,103, 99,111,108,111,
+114, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,102,111,110,116, 95, 99,
+ 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, 4, 2, 0, 0, 0,
+ 0, 0, 0, 0,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101,
+ 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 95,101,
+100,105,116, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107,
+ 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107,101,100,105,
+116, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 8,
+ 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 14, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 99,111,110,116,114,111,108,115, 46,104, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0,
+ 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,
+101,116, 99,101,108,108, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,103,101,116, 99,
+101,108,108, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,
+133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0,
+ 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,114,105,120, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0,
+ 5, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0,
+ 35, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,
+103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 37, 0, 0, 0, 39, 0, 0, 0, 0, 4, 0, 9, 9, 0, 0, 0, 5, 1,
+ 0, 0, 64, 1, 0, 0,128, 1,128, 0,193, 65, 0, 0, 0, 2, 0, 1,149, 1,
+ 2, 3,192, 1,128, 1, 28, 65, 0, 2, 30, 0,128, 0, 2, 0, 0, 0, 4, 13,
+ 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0,
+ 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 9, 0, 0, 0, 38,
+ 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38,
+ 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 4, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 8, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0, 0, 0, 8, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0,118, 97,108, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 43, 0, 0, 0, 0, 3,
+ 0, 8, 9, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,129, 65,
+ 0, 0,192, 1, 0, 1, 85,193,129, 2,221, 0,128, 1,222, 0, 0, 0, 30, 0,
+128, 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 71,101,116, 65,116,
+116,114,105, 98,117,116,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42,
+ 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43,
+ 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,
+101, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,108, 0,
+ 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0,
+ 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0,
+ 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0,
+ 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0,
+ 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0,
+ 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0,
+ 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 35, 0,
+ 0, 0, 33, 0, 0, 0, 39, 0, 0, 0, 37, 0, 0, 0, 43, 0, 0, 0, 41, 0,
+ 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 46, 0,
+ 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 36, 0, 0, 0, 49, 0, 0, 0, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/matrix_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/matrix_le64.loh b/iup/srclua5/loh/matrix_le64.loh
new file mode 100755
index 0000000..4fbccff
--- /dev/null
+++ b/iup/srclua5/loh/matrix_le64.loh
@@ -0,0 +1,107 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/matrix_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluacontrols51/matrix_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 50, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74,128, 4, 0, 73, 0,194,131, 73,128,194,132,
+ 73,128,194,133, 73, 64, 67,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137,
+ 73, 64, 69,138, 73,192, 67,139, 73,192,195,139, 73,192, 67,140, 73,192,195,140,
+ 73,192, 67,141, 73,192,195,141,138, 64,128, 0,193,192, 3, 0,137,128,199,142,
+162, 64,128, 0, 73,128, 0,142,138, 64,128, 0,193,192, 3, 0,137,128,199,142,
+162, 64,128, 0, 73,128,128,143, 73,128, 66,144, 73,192,195,144, 73,192, 72,145,
+ 9, 64, 0,131, 9, 64, 73,146, 9,192, 73,147,100, 0, 0, 0, 9, 64, 0,148,
+100, 64, 0, 0, 9, 64,128,148,100,128, 0, 0, 9, 64, 0,149, 69,192, 10, 0,
+128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 11, 0,128, 0, 0, 0,193, 64, 11, 0,
+ 92, 64,128, 1, 30, 0,128, 0, 46, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,116,114,105,
+120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0,
+ 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 95, 99, 98, 0,
+ 4, 6, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99,108,105, 99,107, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0,
+ 0, 0,110,110,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,114,101,108,101, 97,
+115,101, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,114,111,112, 95,
+ 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,110,110, 0, 4, 13, 0, 0,
+ 0, 0, 0, 0, 0,100,114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 4, 3,
+ 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,
+114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,
+110,110,110, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,115,101,108,
+101, 99,116, 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,110,105,115,
+110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,105,111,110, 95,
+ 99, 98, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,110,110,110, 0, 4, 13, 0,
+ 0, 0, 0, 0, 0, 0,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 4,
+ 13, 0, 0, 0, 0, 0, 0, 0,108,101, 97,118,101,105,116,101,109, 95, 99, 98,
+ 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95,
+ 99, 98, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,115, 99,114,111,108,108,116,111,
+112, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,102,103, 99,111,108,111,
+114, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 98,103, 99,111,108,111,
+114, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,102,111,110,116, 95, 99,
+ 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, 4, 2, 0, 0, 0,
+ 0, 0, 0, 0,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101,
+ 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 95,101,
+100,105,116, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107,
+ 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107,101,100,105,
+116, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 8,
+ 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 14, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 99,111,110,116,114,111,108,115, 46,104, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0,
+ 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,
+116,101, 69,108,101,109,101,110,116, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,
+101,116, 99,101,108,108, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,103,101,116, 99,
+101,108,108, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,
+133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0,
+ 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,114,105,120, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0,
+ 5, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0,
+ 35, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,
+103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 37, 0, 0, 0, 39, 0, 0, 0, 0, 4, 0, 9, 9, 0, 0, 0, 5, 1,
+ 0, 0, 64, 1, 0, 0,128, 1,128, 0,193, 65, 0, 0, 0, 2, 0, 1,149, 1,
+ 2, 3,192, 1,128, 1, 28, 65, 0, 2, 30, 0,128, 0, 2, 0, 0, 0, 4, 13,
+ 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0,
+ 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 9, 0, 0, 0, 38,
+ 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38,
+ 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 4, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 8, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0, 0, 0, 8, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0,118, 97,108, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 43, 0, 0, 0, 0, 3,
+ 0, 8, 9, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,129, 65,
+ 0, 0,192, 1, 0, 1, 85,193,129, 2,221, 0,128, 1,222, 0, 0, 0, 30, 0,
+128, 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 71,101,116, 65,116,
+116,114,105, 98,117,116,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42,
+ 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43,
+ 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,
+101, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,108, 0,
+ 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0,
+ 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0,
+ 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0,
+ 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0,
+ 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0,
+ 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0,
+ 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 35, 0,
+ 0, 0, 33, 0, 0, 0, 39, 0, 0, 0, 37, 0, 0, 0, 43, 0, 0, 0, 41, 0,
+ 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 46, 0,
+ 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 36, 0, 0, 0, 49, 0, 0, 0, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/matrix_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/matrix_le64w.loh b/iup/srclua5/loh/matrix_le64w.loh
new file mode 100755
index 0000000..13bc7f9
--- /dev/null
+++ b/iup/srclua5/loh/matrix_le64w.loh
@@ -0,0 +1,103 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/matrix_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/matrix_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 45, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74, 64, 4, 0, 73, 0,194,131, 73,128,194,132,
+ 73,128,194,133, 73, 64, 67,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137,
+ 73, 64, 69,138, 73,192, 67,139, 73,192,195,139, 73,192, 67,140, 73,192,195,140,
+ 73,192, 67,141, 73,192,195,141,138, 64,128, 0,193,192, 3, 0,137,128,199,142,
+162, 64,128, 0, 73,128, 0,142, 73,128,194,143, 73,192, 67,144, 73, 64,197,144,
+ 9, 64, 0,131, 9,192, 72,145, 9, 64, 73,146,100, 0, 0, 0, 9, 64, 0,147,
+100, 64, 0, 0, 9, 64,128,147,100,128, 0, 0, 9, 64, 0,148, 69, 64, 10, 0,
+128, 0, 0, 0, 92, 64, 0, 1, 69,128, 10, 0,128, 0, 0, 0,193,192, 10, 0,
+ 92, 64,128, 1, 30, 0,128, 0, 44, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,116,114,105,
+120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0,
+ 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 95, 99, 98, 0,
+ 4, 6, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99,108,105, 99,107, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0,
+ 0, 0,110,110,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,114,101,108,101, 97,
+115,101, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,114,111,112, 95,
+ 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,110,110, 0, 4, 13, 0, 0,
+ 0, 0, 0, 0, 0,100,114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 4, 3,
+ 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,
+114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,
+110,110,110, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,115,101,108,
+101, 99,116, 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,110,105,115,
+110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,105,111,110, 95,
+ 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 13, 0, 0,
+ 0, 0, 0, 0, 0,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 4, 13,
+ 0, 0, 0, 0, 0, 0, 0,108,101, 97,118,101,105,116,101,109, 95, 99, 98, 0,
+ 4, 13, 0, 0, 0, 0, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99,
+ 98, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,115, 99,114,111,108,108,116,111,112,
+ 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,102,103, 99,111,108,111,114,
+ 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 98,103, 99,111,108,111,114,
+ 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 95, 99,
+ 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, 4, 2, 0, 0, 0,
+ 0, 0, 0, 0,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101,
+ 95,101,100,105,116, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,109, 97,
+114,107, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107,101,
+100,105,116, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,
+117,100,101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112,109, 97,116,114,
+105,120, 46,104, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102,
+117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 8, 0,
+ 0, 0, 0, 0, 0, 0,115,101,116, 99,101,108,108, 0, 4, 8, 0, 0, 0, 0,
+ 0, 0, 0,103,101,116, 99,101,108,108, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 0,
+ 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158,
+ 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,
+ 77, 97,116,114,105,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,
+111,110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33,
+ 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 38, 0, 0, 0, 0, 4, 0,
+ 9, 9, 0, 0, 0, 5, 1, 0, 0, 64, 1, 0, 0,128, 1,128, 0,193, 65, 0,
+ 0, 0, 2, 0, 1,149, 1, 2, 3,192, 1,128, 1, 28, 65, 0, 2, 30, 0,128,
+ 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116,
+114,105, 98,117,116,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0,
+ 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 38, 0,
+ 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101,
+ 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,108, 0, 0,
+ 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0,
+ 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,118, 97,108, 0, 0, 0, 0,
+ 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0,
+ 0, 42, 0, 0, 0, 0, 3, 0, 8, 9, 0, 0, 0,197, 0, 0, 0, 0, 1, 0,
+ 0, 64, 1,128, 0,129, 65, 0, 0,192, 1, 0, 1, 85,193,129, 2,221, 0,128,
+ 1,222, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0,
+ 0, 0, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 2, 0, 0, 0,
+ 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 9, 0, 0, 0, 41, 0, 0, 0, 41, 0,
+ 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0,
+ 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+ 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0,
+ 0, 0, 0, 0, 0,108, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0, 99, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0,
+ 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0,
+ 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0,
+ 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0,
+ 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0,
+ 0, 29, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 38, 0, 0, 0, 36, 0, 0,
+ 0, 42, 0, 0, 0, 40, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0,
+ 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0,
+ 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 31, 0,
+ 0, 0, 44, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/matrix_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/menu.loh b/iup/srclua5/loh/menu.loh
new file mode 100755
index 0000000..2c6f9cf
--- /dev/null
+++ b/iup/srclua5/loh/menu.loh
@@ -0,0 +1,122 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/menu.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/menu.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,109,101,110,
+117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 27, 0,
+ 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64, 0,131,100, 0,
+ 0, 0, 9, 64, 0,133,100, 64, 0, 0, 9, 64,128,133,100,128, 0, 0, 9, 64,
+ 0,134,100,192, 0, 0, 9, 64,128,134,100, 0, 1, 0, 9, 64, 0,135, 69,192,
+ 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 4, 0,128, 0, 0, 0,193, 64,
+ 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0,109,101,110,117, 0, 4, 7, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0,
+ 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, 9, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0,111,112,101,110, 95,
+ 99, 98, 0, 4, 1, 0, 0, 0, 0, 4, 13, 0, 0, 0,109,101,110,117, 99,108,
+111,115,101, 95, 99, 98, 0, 4, 6, 0, 0, 0,112,111,112,117,112, 0, 4, 7,
+ 0, 0, 0, 97,112,112,101,110,100, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 7, 0, 0, 0,115,104,111,119,120,121,
+ 0, 4, 8, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 18, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,
+117,112, 32,119,105,100,103,101,116, 0, 5, 0, 0, 0, 0, 0, 0, 0, 14, 0,
+ 0, 0, 16, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1,
+ 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0,
+ 0, 0, 4, 6, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0,
+ 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 2, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 0, 2, 0, 5, 5, 0, 0, 0,
+133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0,
+ 1, 0, 0, 0, 4, 7, 0, 0, 0, 65,112,112,101,110,100, 0, 0, 0, 0, 0,
+ 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 20, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 44, 0, 0, 0,
+ 0, 2, 0, 14, 85, 0, 0, 0,148, 0,128, 0,193, 0, 0, 0, 0, 1, 0, 1,
+ 65, 1, 0, 0,224,128, 18,128,197, 65, 0, 0, 6,130,129, 0,220,129, 0, 1,
+ 23,128,192, 3, 22, 64, 17,128,202, 1, 0, 0,199,193, 0, 0,197, 1, 1, 0,
+ 6,130,129, 0,220, 1, 1, 1, 22,128, 1,128, 5, 67, 0, 0, 64, 3, 0, 5,
+ 28,131, 0, 1, 87, 64, 65, 6, 22, 64, 0,128, 5,195, 0, 0, 9,195, 2, 5,
+225,129, 0, 0, 22,128,253,127,197, 65, 0, 0, 6,130,129, 0, 6, 2, 64, 4,
+220,129, 0, 1, 23,128,193, 3, 22, 0, 6,128,197, 65, 0, 0, 6,130,129, 0,
+ 6,194, 65, 4,220,129, 0, 1, 87, 0,194, 3, 22, 64, 1,128,197, 65, 0, 0,
+ 6,130,129, 0, 6,194, 65, 4,220,129, 0, 1, 23,128,193, 3, 22, 0, 3,128,
+197,193, 0, 0, 6,130,129, 0, 6, 2, 64, 4,201, 1,130,132,197,193, 0, 0,
+ 6,130,129, 0, 6,194, 65, 4,201, 1, 2,133,197,193, 2, 0, 5,194, 0, 0,
+220,129, 0, 1, 73,192, 1, 3, 22,192, 5,128,197, 65, 0, 0, 6,130,129, 0,
+ 6, 2, 64, 4,220,129, 0, 1, 23,128,193, 3, 22, 64, 4,128,197, 65, 0, 0,
+ 6,130,129, 0, 6,194, 65, 4,220,129, 0, 1, 23, 0,195, 3, 22,192, 2,128,
+197,193, 0, 0, 6,130,129, 0, 6,194, 65, 4,201, 1, 2,128,197,193, 0, 0,
+ 6,130,129, 0, 6, 2, 64, 4,201, 1,130,132,197, 65, 3, 0, 5,194, 0, 0,
+220,129, 0, 1, 73,192, 1, 3,223,192,236,127,197,128, 3, 0,221, 0,128, 0,
+222, 0, 0, 0, 30, 0,128, 0, 15, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240,
+ 63, 4, 5, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0,116, 97, 98,108,
+101, 0, 4, 8, 0, 0, 0,105,116,101,109, 97,114,103, 0, 4, 6, 0, 0, 0,
+112, 97,105,114,115, 0, 4, 7, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 7,
+ 0, 0, 0,115,116,114,105,110,103, 0, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4,
+ 9, 0, 0, 0,102,117,110, 99,116,105,111,110, 0, 4, 6, 0, 0, 0,116,105,
+116,108,101, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 5, 0, 0,
+ 0,105,116,101,109, 0, 4, 9, 0, 0, 0,117,115,101,114,100, 97,116, 97, 0,
+ 4, 8, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, 5, 0, 0, 0, 77,101,
+110,117, 0, 0, 0, 0, 0, 85, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24,
+ 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25,
+ 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 27,
+ 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 29,
+ 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 34,
+ 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35,
+ 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36,
+ 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36,
+ 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36,
+ 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 38,
+ 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 39,
+ 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 24, 0, 0, 0, 43, 0, 0, 0, 43,
+ 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 84, 0, 0, 0, 4, 0, 0, 0, 97,114,103,
+ 0, 0, 0, 0, 0, 84, 0, 0, 0, 2, 0, 0, 0,110, 0, 1, 0, 0, 0, 84,
+ 0, 0, 0, 12, 0, 0, 0, 40,102,111,114, 32,105,110,100,101,120, 41, 0, 4,
+ 0, 0, 0, 81, 0, 0, 0, 12, 0, 0, 0, 40,102,111,114, 32,108,105,109,105,
+116, 41, 0, 4, 0, 0, 0, 81, 0, 0, 0, 11, 0, 0, 0, 40,102,111,114, 32,
+115,116,101,112, 41, 0, 4, 0, 0, 0, 81, 0, 0, 0, 2, 0, 0, 0,105, 0,
+ 5, 0, 0, 0, 80, 0, 0, 0, 16, 0, 0, 0, 40,102,111,114, 32,103,101,110,
+101,114, 97,116,111,114, 41, 0, 15, 0, 0, 0, 25, 0, 0, 0, 12, 0, 0, 0,
+ 40,102,111,114, 32,115,116, 97,116,101, 41, 0, 15, 0, 0, 0, 25, 0, 0, 0,
+ 14, 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 15, 0,
+ 0, 0, 25, 0, 0, 0, 2, 0, 0, 0,117, 0, 16, 0, 0, 0, 23, 0, 0, 0,
+ 2, 0, 0, 0,118, 0, 16, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 7, 0, 0, 0,197, 0,
+ 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0, 0, 2,222, 0,
+ 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 83,104,111,119, 88,
+ 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0,
+ 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 3, 0,
+ 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 6, 0, 0,
+ 0, 2, 0, 0, 0,120, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0,121,
+ 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0,
+ 0, 52, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0,
+ 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0,
+ 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 51, 0,
+ 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 1, 0,
+ 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0,
+ 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0,
+ 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20, 0, 0, 0, 18, 0, 0,
+ 0, 44, 0, 0, 0, 22, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 52, 0, 0,
+ 0, 50, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0,
+ 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 26, 0, 0, 0, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/menu.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/menu_be32.loh b/iup/srclua5/loh/menu_be32.loh
new file mode 100755
index 0000000..6b81d0e
--- /dev/null
+++ b/iup/srclua5/loh/menu_be32.loh
@@ -0,0 +1,122 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/menu_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/menu_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,109,101,110,
+117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 27, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0,128, 74,131,194, 0, 73,132,194, 0, 73,131, 0, 64, 9, 0, 0,
+ 0,100,133, 0, 64, 9, 0, 0, 64,100,133,128, 64, 9, 0, 0,128,100,134, 0,
+ 64, 9, 0, 0,192,100,134,128, 64, 9, 0, 1, 0,100,135, 0, 64, 9, 0, 3,
+192, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 4, 0, 69, 0, 0, 0,128, 0, 4,
+ 64,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 18, 4, 0, 0, 0, 5,110,
+105, 99,107, 0, 4, 0, 0, 0, 5,109,101,110,117, 0, 4, 0, 0, 0, 7,112,
+ 97,114,101,110,116, 0, 4, 0, 0, 0, 4, 66, 79, 88, 0, 4, 0, 0, 0, 9,
+ 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0,
+ 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 8,111,112,101,110, 95,
+ 99, 98, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 13,109,101,110,117, 99,108,
+111,115,101, 95, 99, 98, 0, 4, 0, 0, 0, 6,112,111,112,117,112, 0, 4, 0,
+ 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 7,115,104,111,119,120,121,
+ 0, 4, 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0, 18,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0,
+ 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,
+117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
+ 0, 14, 0, 0, 0, 16, 0, 3, 0, 7, 0, 0, 0, 6, 0, 0, 0,197, 0, 0,
+ 1, 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 64,220, 0,128, 0, 30, 0, 0,
+ 0, 1, 4, 0, 0, 0, 6, 80,111,112,117,112, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 15, 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,120, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 0, 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 2, 0, 5, 0, 0, 0, 5,
+ 0, 0, 0,133, 0, 0, 0,192, 0,128, 1, 0, 1,128, 64,156, 0,128, 0, 30,
+ 0, 0, 0, 1, 4, 0, 0, 0, 7, 65,112,112,101,110,100, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19,
+ 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5,101,108,101,109, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 44,
+ 0, 2, 0, 14, 0, 0, 0, 85, 0,128, 0,148, 0, 0, 0,193, 1, 0, 1, 0,
+ 0, 0, 1, 65,128, 18,128,224, 0, 0, 65,197, 0,129,130, 6, 1, 0,129,220,
+ 3,192,128, 23,128, 17, 64, 22, 0, 0, 1,202, 0, 0,193,199, 0, 1, 1,197,
+ 0,129,130, 6, 1, 1, 1,220,128, 1,128, 22, 0, 0, 67, 5, 5, 0, 3, 64,
+ 1, 0,131, 28, 6, 65, 64, 87,128, 0, 64, 22, 0, 0,195, 5, 5, 2,195, 9,
+ 0, 0,129,225,127,253,128, 22, 0, 0, 65,197, 0,129,130, 6, 4, 64, 2, 6,
+ 1, 0,129,220, 3,193,128, 23,128, 6, 0, 22, 0, 0, 65,197, 0,129,130, 6,
+ 4, 65,194, 6, 1, 0,129,220, 3,194, 0, 87,128, 1, 64, 22, 0, 0, 65,197,
+ 0,129,130, 6, 4, 65,194, 6, 1, 0,129,220, 3,193,128, 23,128, 3, 0, 22,
+ 0, 0,193,197, 0,129,130, 6, 4, 64, 2, 6,132,130, 1,201, 0, 0,193,197,
+ 0,129,130, 6, 4, 65,194, 6,133, 2, 1,201, 0, 2,193,197, 0, 0,194, 5,
+ 1, 0,129,220, 3, 1,192, 73,128, 5,192, 22, 0, 0, 65,197, 0,129,130, 6,
+ 4, 64, 2, 6, 1, 0,129,220, 3,193,128, 23,128, 4, 64, 22, 0, 0, 65,197,
+ 0,129,130, 6, 4, 65,194, 6, 1, 0,129,220, 3,195, 0, 23,128, 2,192, 22,
+ 0, 0,193,197, 0,129,130, 6, 4, 65,194, 6,128, 2, 1,201, 0, 0,193,197,
+ 0,129,130, 6, 4, 64, 2, 6,132,130, 1,201, 0, 3, 65,197, 0, 0,194, 5,
+ 1, 0,129,220, 3, 1,192, 73,127,236,192,223, 0, 3,128,197, 0,128, 0,221,
+ 0, 0, 0,222, 0,128, 0, 30, 0, 0, 0, 15, 3, 63,240, 0, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 5,116,121,112,101, 0, 4, 0, 0, 0, 6,116, 97, 98,108,
+101, 0, 4, 0, 0, 0, 8,105,116,101,109, 97,114,103, 0, 4, 0, 0, 0, 6,
+112, 97,105,114,115, 0, 4, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 4, 0,
+ 0, 0, 7,115,116,114,105,110,103, 0, 3, 64, 0, 0, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 4, 0, 0, 0, 6,116,105,
+116,108,101, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0, 0,
+ 5,105,116,101,109, 0, 4, 0, 0, 0, 9,117,115,101,114,100, 97,116, 97, 0,
+ 4, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0, 4, 0, 0, 0, 5, 77,101,
+110,117, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 23, 0, 0, 0, 24, 0,
+ 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0,
+ 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0,
+ 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0,
+ 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0,
+ 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 32, 0,
+ 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0,
+ 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0,
+ 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0,
+ 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0,
+ 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0,
+ 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0,
+ 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0,
+ 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0,
+ 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0,
+ 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 39, 0,
+ 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 24, 0, 0, 0, 43, 0,
+ 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 12, 0, 0, 0, 6, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 4, 97,114,103,
+ 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 2,110, 0, 0, 0, 0, 1, 0,
+ 0, 0, 84, 0, 0, 0, 12, 40,102,111,114, 32,105,110,100,101,120, 41, 0, 0,
+ 0, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 40,102,111,114, 32,108,105,109,105,
+116, 41, 0, 0, 0, 0, 4, 0, 0, 0, 81, 0, 0, 0, 11, 40,102,111,114, 32,
+115,116,101,112, 41, 0, 0, 0, 0, 4, 0, 0, 0, 81, 0, 0, 0, 2,105, 0,
+ 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 16, 40,102,111,114, 32,103,101,110,
+101,114, 97,116,111,114, 41, 0, 0, 0, 0, 15, 0, 0, 0, 25, 0, 0, 0, 12,
+ 40,102,111,114, 32,115,116, 97,116,101, 41, 0, 0, 0, 0, 15, 0, 0, 0, 25,
+ 0, 0, 0, 14, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 0, 0,
+ 0, 15, 0, 0, 0, 25, 0, 0, 0, 2,117, 0, 0, 0, 0, 16, 0, 0, 0, 23,
+ 0, 0, 0, 2,118, 0, 0, 0, 0, 16, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 46, 0, 0, 0, 48, 0, 3, 0, 7, 0, 0, 0, 7, 0, 0,
+ 0,197, 0, 0, 1, 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 0,221, 0, 0,
+ 0,222, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 7, 83,104,111,119, 88,
+ 89, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0,
+ 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0,
+ 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 2,120, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2,121,
+ 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 50, 0, 0, 0, 52, 0, 1, 0, 3, 0, 0, 0, 5, 0, 0, 0, 69, 0, 0, 0,
+128, 1, 0, 0, 93, 0, 0, 0, 94, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0,
+ 0, 8, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,
+ 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0,
+ 0, 1, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,
+ 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0,
+ 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20, 0, 0, 0,
+ 18, 0, 0, 0, 44, 0, 0, 0, 22, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0,
+ 52, 0, 0, 0, 50, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0,
+ 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0,
+ 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 9, 0, 0, 0, 26, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/menu_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/menu_be64.loh b/iup/srclua5/loh/menu_be64.loh
new file mode 100755
index 0000000..d09ad33
--- /dev/null
+++ b/iup/srclua5/loh/menu_be64.loh
@@ -0,0 +1,134 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/menu_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/menu_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 27, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64,
+ 0,131,100, 0, 0, 0, 9, 64, 0,133,100, 64, 0, 0, 9, 64,128,133,100,128,
+ 0, 0, 9, 64, 0,134,100,192, 0, 0, 9, 64,128,134,100, 0, 1, 0, 9, 64,
+ 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 4, 0,128, 0,
+ 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,109,101,110,117, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0,
+ 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 95, 99, 98, 0, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,109,101,
+110,117, 99,108,111,115,101, 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+112,111,112,117,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,112,112,101,110,
+100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,
+109,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,104,111,119,120,121,
+ 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 18,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,
+100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116,
+ 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,
+105,100,103,101,116, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0,
+ 0, 0, 16, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1,
+ 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0,
+ 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0,
+ 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 15, 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+ 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 0, 2, 0, 5, 5, 0, 0, 0,
+133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0,
+ 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 44, 0, 0, 0, 0, 2, 0, 14,
+ 85, 0, 0, 0,148, 0,128, 0,193, 0, 0, 0, 0, 1, 0, 1, 65, 1, 0, 0,
+224,128, 18,128,197, 65, 0, 0, 6,130,129, 0,220,129, 0, 1, 23,128,192, 3,
+ 22, 64, 17,128,202, 1, 0, 0,199,193, 0, 0,197, 1, 1, 0, 6,130,129, 0,
+220, 1, 1, 1, 22,128, 1,128, 5, 67, 0, 0, 64, 3, 0, 5, 28,131, 0, 1,
+ 87, 64, 65, 6, 22, 64, 0,128, 5,195, 0, 0, 9,195, 2, 5,225,129, 0, 0,
+ 22,128,253,127,197, 65, 0, 0, 6,130,129, 0, 6, 2, 64, 4,220,129, 0, 1,
+ 23,128,193, 3, 22, 0, 6,128,197, 65, 0, 0, 6,130,129, 0, 6,194, 65, 4,
+220,129, 0, 1, 87, 0,194, 3, 22, 64, 1,128,197, 65, 0, 0, 6,130,129, 0,
+ 6,194, 65, 4,220,129, 0, 1, 23,128,193, 3, 22, 0, 3,128,197,193, 0, 0,
+ 6,130,129, 0, 6, 2, 64, 4,201, 1,130,132,197,193, 0, 0, 6,130,129, 0,
+ 6,194, 65, 4,201, 1, 2,133,197,193, 2, 0, 5,194, 0, 0,220,129, 0, 1,
+ 73,192, 1, 3, 22,192, 5,128,197, 65, 0, 0, 6,130,129, 0, 6, 2, 64, 4,
+220,129, 0, 1, 23,128,193, 3, 22, 64, 4,128,197, 65, 0, 0, 6,130,129, 0,
+ 6,194, 65, 4,220,129, 0, 1, 23, 0,195, 3, 22,192, 2,128,197,193, 0, 0,
+ 6,130,129, 0, 6,194, 65, 4,201, 1, 2,128,197,193, 0, 0, 6,130,129, 0,
+ 6, 2, 64, 4,201, 1,130,132,197, 65, 3, 0, 5,194, 0, 0,220,129, 0, 1,
+ 73,192, 1, 3,223,192,236,127,197,128, 3, 0,221, 0,128, 0,222, 0, 0, 0,
+ 30, 0,128, 0, 15, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 5, 0,
+ 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+116, 97, 98,108,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 97,
+114,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112, 97,105,114,115, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,115,116,114,105,110,103, 0, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,116,105,111,110, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 97, 99,116,105,111,110, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,
+109, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,117,115,101,114,100, 97,116, 97, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, 5, 0,
+ 0, 0, 0, 0, 0, 0, 77,101,110,117, 0, 0, 0, 0, 0, 85, 0, 0, 0, 23,
+ 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25,
+ 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26,
+ 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28,
+ 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33,
+ 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34,
+ 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35,
+ 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36,
+ 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36,
+ 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37,
+ 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38,
+ 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 24,
+ 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 12,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 84, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0,
+ 0, 84, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 1, 0, 0, 0, 84,
+ 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110,100,101,
+120, 41, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,
+102,111,114, 32,108,105,109,105,116, 41, 0, 4, 0, 0, 0, 81, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 4, 0,
+ 0, 0, 81, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 5, 0, 0, 0,
+ 80, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,103,101,110,
+101,114, 97,116,111,114, 41, 0, 15, 0, 0, 0, 25, 0, 0, 0, 12, 0, 0, 0,
+ 0, 0, 0, 0, 40,102,111,114, 32,115,116, 97,116,101, 41, 0, 15, 0, 0, 0,
+ 25, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110,
+116,114,111,108, 41, 0, 15, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0,117, 0, 16, 0, 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+118, 0, 16, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 7, 0, 0, 0,197, 0,
+ 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0, 0, 2,222, 0,
+ 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83,
+104,111,119, 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 47, 0, 0, 0, 47, 0,
+ 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0,
+ 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101,
+ 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0,
+ 0, 52, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0,
+ 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0,
+ 0, 0, 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0,
+ 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0,
+ 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0,
+ 0, 20, 0, 0, 0, 18, 0, 0, 0, 44, 0, 0, 0, 22, 0, 0, 0, 48, 0, 0,
+ 0, 46, 0, 0, 0, 52, 0, 0, 0, 50, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0,
+ 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0,
+ 0, 55, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,
+108, 0, 9, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/menu_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/menu_le64.loh b/iup/srclua5/loh/menu_le64.loh
new file mode 100755
index 0000000..a19667f
--- /dev/null
+++ b/iup/srclua5/loh/menu_le64.loh
@@ -0,0 +1,134 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/menu_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/menu_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 27, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64,
+ 0,131,100, 0, 0, 0, 9, 64, 0,133,100, 64, 0, 0, 9, 64,128,133,100,128,
+ 0, 0, 9, 64, 0,134,100,192, 0, 0, 9, 64,128,134,100, 0, 1, 0, 9, 64,
+ 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 4, 0,128, 0,
+ 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,109,101,110,117, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0,
+ 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 95, 99, 98, 0, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,109,101,
+110,117, 99,108,111,115,101, 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+112,111,112,117,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,112,112,101,110,
+100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,
+109,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,104,111,119,120,121,
+ 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 18,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,
+100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116,
+ 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,
+105,100,103,101,116, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0,
+ 0, 0, 16, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1,
+ 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0,
+ 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0,
+ 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 15, 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+ 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 0, 2, 0, 5, 5, 0, 0, 0,
+133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0,
+ 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 44, 0, 0, 0, 0, 2, 0, 14,
+ 85, 0, 0, 0,148, 0,128, 0,193, 0, 0, 0, 0, 1, 0, 1, 65, 1, 0, 0,
+224,128, 18,128,197, 65, 0, 0, 6,130,129, 0,220,129, 0, 1, 23,128,192, 3,
+ 22, 64, 17,128,202, 1, 0, 0,199,193, 0, 0,197, 1, 1, 0, 6,130,129, 0,
+220, 1, 1, 1, 22,128, 1,128, 5, 67, 0, 0, 64, 3, 0, 5, 28,131, 0, 1,
+ 87, 64, 65, 6, 22, 64, 0,128, 5,195, 0, 0, 9,195, 2, 5,225,129, 0, 0,
+ 22,128,253,127,197, 65, 0, 0, 6,130,129, 0, 6, 2, 64, 4,220,129, 0, 1,
+ 23,128,193, 3, 22, 0, 6,128,197, 65, 0, 0, 6,130,129, 0, 6,194, 65, 4,
+220,129, 0, 1, 87, 0,194, 3, 22, 64, 1,128,197, 65, 0, 0, 6,130,129, 0,
+ 6,194, 65, 4,220,129, 0, 1, 23,128,193, 3, 22, 0, 3,128,197,193, 0, 0,
+ 6,130,129, 0, 6, 2, 64, 4,201, 1,130,132,197,193, 0, 0, 6,130,129, 0,
+ 6,194, 65, 4,201, 1, 2,133,197,193, 2, 0, 5,194, 0, 0,220,129, 0, 1,
+ 73,192, 1, 3, 22,192, 5,128,197, 65, 0, 0, 6,130,129, 0, 6, 2, 64, 4,
+220,129, 0, 1, 23,128,193, 3, 22, 64, 4,128,197, 65, 0, 0, 6,130,129, 0,
+ 6,194, 65, 4,220,129, 0, 1, 23, 0,195, 3, 22,192, 2,128,197,193, 0, 0,
+ 6,130,129, 0, 6,194, 65, 4,201, 1, 2,128,197,193, 0, 0, 6,130,129, 0,
+ 6, 2, 64, 4,201, 1,130,132,197, 65, 3, 0, 5,194, 0, 0,220,129, 0, 1,
+ 73,192, 1, 3,223,192,236,127,197,128, 3, 0,221, 0,128, 0,222, 0, 0, 0,
+ 30, 0,128, 0, 15, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 5, 0,
+ 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+116, 97, 98,108,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 97,
+114,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112, 97,105,114,115, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,115,116,114,105,110,103, 0, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,116,105,111,110, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 97, 99,116,105,111,110, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,
+109, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,117,115,101,114,100, 97,116, 97, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, 5, 0,
+ 0, 0, 0, 0, 0, 0, 77,101,110,117, 0, 0, 0, 0, 0, 85, 0, 0, 0, 23,
+ 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25,
+ 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26,
+ 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28,
+ 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33,
+ 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34,
+ 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35,
+ 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36,
+ 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36,
+ 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37,
+ 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38,
+ 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 24,
+ 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 12,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 84, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0,
+ 0, 84, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 1, 0, 0, 0, 84,
+ 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110,100,101,
+120, 41, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,
+102,111,114, 32,108,105,109,105,116, 41, 0, 4, 0, 0, 0, 81, 0, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 4, 0,
+ 0, 0, 81, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 5, 0, 0, 0,
+ 80, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,103,101,110,
+101,114, 97,116,111,114, 41, 0, 15, 0, 0, 0, 25, 0, 0, 0, 12, 0, 0, 0,
+ 0, 0, 0, 0, 40,102,111,114, 32,115,116, 97,116,101, 41, 0, 15, 0, 0, 0,
+ 25, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110,
+116,114,111,108, 41, 0, 15, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0,117, 0, 16, 0, 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+118, 0, 16, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 7, 0, 0, 0,197, 0,
+ 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0, 0, 2,222, 0,
+ 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83,
+104,111,119, 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 47, 0, 0, 0, 47, 0,
+ 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0,
+ 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101,
+ 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0,
+ 0, 52, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0,
+ 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0,
+ 0, 0, 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0,
+ 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0,
+ 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0,
+ 0, 20, 0, 0, 0, 18, 0, 0, 0, 44, 0, 0, 0, 22, 0, 0, 0, 48, 0, 0,
+ 0, 46, 0, 0, 0, 52, 0, 0, 0, 50, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0,
+ 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0,
+ 0, 55, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,
+108, 0, 9, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/menu_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/menu_le64w.loh b/iup/srclua5/loh/menu_le64w.loh
new file mode 100755
index 0000000..afca571
--- /dev/null
+++ b/iup/srclua5/loh/menu_le64w.loh
@@ -0,0 +1,136 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/menu_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/menu_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 27, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64,
+ 0,131,100, 0, 0, 0, 9, 64, 0,133,100, 64, 0, 0, 9, 64,128,133,100,128,
+ 0, 0, 9, 64, 0,134,100,192, 0, 0, 9, 64,128,134,100, 0, 1, 0, 9, 64,
+ 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 4, 0,128, 0,
+ 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,109,101,110,117, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0,
+ 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 95, 99, 98, 0, 4,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,109,101,
+110,117, 99,108,111,115,101, 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+112,111,112,117,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,112,112,101,110,
+100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,
+109,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,104,111,119,120,121,
+ 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 18,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,
+100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116,
+ 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,
+105,100,103,101,116, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0,
+ 0, 0, 16, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1,
+ 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0,
+ 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0,
+ 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 15, 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+ 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 0, 2, 0, 5, 5, 0, 0, 0,
+133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0,
+ 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 44, 0, 0, 0, 0, 2, 0, 14,
+ 88, 0, 0, 0,133, 0, 0, 0,134, 64, 64, 1,192, 0,128, 0,156,128, 0, 1,
+193,128, 0, 0, 0, 1, 0, 1, 65,129, 0, 0,224,128, 18,128,197,193, 0, 0,
+ 6,130,129, 0,220,129, 0, 1, 23, 0,192, 3, 22, 64, 17,128,202, 1, 0, 0,
+199, 1, 1, 0,197, 65, 1, 0, 6,130,129, 0,220, 1, 1, 1, 22,128, 1,128,
+ 5,195, 0, 0, 64, 3, 0, 5, 28,131, 0, 1, 87,128, 65, 6, 22, 64, 0,128,
+ 5, 3, 1, 0, 9,195, 2, 5,225,129, 0, 0, 22,128,253,127,197,193, 0, 0,
+ 6,130,129, 0, 6,130, 64, 4,220,129, 0, 1, 23,192,193, 3, 22, 0, 6,128,
+197,193, 0, 0, 6,130,129, 0, 6, 2, 66, 4,220,129, 0, 1, 87, 64,194, 3,
+ 22, 64, 1,128,197,193, 0, 0, 6,130,129, 0, 6, 2, 66, 4,220,129, 0, 1,
+ 23,192,193, 3, 22, 0, 3,128,197, 1, 1, 0, 6,130,129, 0, 6,130, 64, 4,
+201, 1, 2,133,197, 1, 1, 0, 6,130,129, 0, 6, 2, 66, 4,201, 1,130,133,
+197, 1, 3, 0, 5, 2, 1, 0,220,129, 0, 1, 73,192, 1, 3, 22,192, 5,128,
+197,193, 0, 0, 6,130,129, 0, 6,130, 64, 4,220,129, 0, 1, 23,192,193, 3,
+ 22, 64, 4,128,197,193, 0, 0, 6,130,129, 0, 6, 2, 66, 4,220,129, 0, 1,
+ 23, 64,195, 3, 22,192, 2,128,197, 1, 1, 0, 6,130,129, 0, 6, 2, 66, 4,
+201, 1, 2,129,197, 1, 1, 0, 6,130,129, 0, 6,130, 64, 4,201, 1, 2,133,
+197,129, 3, 0, 5, 2, 1, 0,220,129, 0, 1, 73,192, 1, 3,223,192,236,127,
+197,192, 3, 0,221, 0,128, 0,222, 0, 0, 0, 30, 0,128, 0, 16, 0, 0, 0,
+ 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0,103,101,116,110, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 8, 0, 0, 0, 0, 0, 0,
+ 0,105,116,101,109, 97,114,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112, 97,
+105,114,115, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0, 64, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,116,105,
+111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 5, 0, 0, 0, 0,
+ 0, 0, 0,105,116,101,109, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,117,115,101,
+114,100, 97,116, 97, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,117, 98,109,101,
+110,117, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 77,101,110,117, 0, 0, 0, 0,
+ 0, 88, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0,
+ 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0,
+ 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0,
+ 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0,
+ 0, 29, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0,
+ 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,
+ 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,
+ 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,
+ 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0,
+ 0, 33, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0,
+ 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0,
+ 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0,
+ 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0,
+ 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0,
+ 0, 37, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0,
+ 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 24, 0, 0,
+ 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 12, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 87,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 87,
+ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 0, 0, 0, 87, 0, 0,
+ 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110,100,101,120, 41,
+ 0, 7, 0, 0, 0, 84, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,
+114, 32,108,105,109,105,116, 41, 0, 7, 0, 0, 0, 84, 0, 0, 0, 11, 0, 0,
+ 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 7, 0, 0, 0,
+ 84, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 8, 0, 0, 0, 83, 0,
+ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,103,101,110,101,114,
+ 97,116,111,114, 41, 0, 18, 0, 0, 0, 28, 0, 0, 0, 12, 0, 0, 0, 0, 0,
+ 0, 0, 40,102,111,114, 32,115,116, 97,116,101, 41, 0, 18, 0, 0, 0, 28, 0,
+ 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114,
+111,108, 41, 0, 18, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+117, 0, 19, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,118, 0,
+ 19, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 7, 0, 0, 0,197, 0, 0, 0,
+ 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0, 0, 2,222, 0, 0, 0,
+ 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83,104,111,
+119, 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0,
+ 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0,
+ 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0,
+ 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 52,
+ 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93,
+ 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0,
+ 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0,
+ 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9,
+ 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20,
+ 0, 0, 0, 18, 0, 0, 0, 44, 0, 0, 0, 22, 0, 0, 0, 48, 0, 0, 0, 46,
+ 0, 0, 0, 52, 0, 0, 0, 50, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54,
+ 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 9, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/menu_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/messagedlg.loh b/iup/srclua5/loh/messagedlg.loh
new file mode 100755
index 0000000..1463b2d
--- /dev/null
+++ b/iup/srclua5/loh/messagedlg.loh
@@ -0,0 +1,54 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/messagedlg.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/messagedlg.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 16, 0, 0, 0, 64,109,101,115,
+115, 97,103,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,132,
+100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, 0, 0,
+ 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,
+128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0,
+ 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 11, 0, 0, 0,109,101,115,115, 97,
+103,101,100,108,103, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0,102,117,110, 99,110,
+ 97,109,101, 0, 4, 11, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0,
+ 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0,112,
+111,112,117,112, 0, 4, 8, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 14,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0,
+ 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0,
+ 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128,
+ 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
+ 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,120, 0, 0, 0, 0,
+ 0, 5, 0, 0, 0, 2, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, 3, 5,
+ 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30,
+ 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 68,101,115,116,114,111,121, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,
+ 0, 0, 0, 22, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157,
+ 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 11, 0, 0, 0,
+ 77,101,115,115, 97,103,101, 68,108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21,
+ 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6,
+ 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0,
+ 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0,
+ 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,
+108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/messagedlg.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/messagedlg_be32.loh b/iup/srclua5/loh/messagedlg_be32.loh
new file mode 100755
index 0000000..d073d9f
--- /dev/null
+++ b/iup/srclua5/loh/messagedlg_be32.loh
@@ -0,0 +1,54 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/messagedlg_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/messagedlg_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 16, 64,109,101,115,
+115, 97,103,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 0, 0, 0, 22, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,
+129, 0, 64, 9,130, 65, 64, 9,131, 65,192, 9, 0, 0, 0, 74,132, 0, 64, 9,
+ 0, 0, 0,100,132,128, 64, 9, 0, 0, 64,100,133, 0, 64, 9, 0, 0,128,100,
+133,128, 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 3, 64, 69,
+ 0, 0, 0,128, 0, 3,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 15,
+ 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 11,109,101,115,115, 97,
+103,101,100,108,103, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0,
+ 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,
+105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9,102,117,110, 99,110,
+ 97,109,101, 0, 4, 0, 0, 0, 11, 77,101,115,115, 97,103,101, 68,108,103, 0,
+ 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 6,112,
+111,112,117,112, 0, 4, 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0,
+ 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0,
+ 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0,
+ 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0,
+ 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 3, 0, 7, 0, 0, 0, 6, 0, 0, 0,
+197, 0, 0, 1, 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 64,220, 0,128, 0,
+ 30, 0, 0, 0, 1, 4, 0, 0, 0, 6, 80,111,112,117,112, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13,
+ 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,120, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 1, 0, 3, 0,
+ 0, 0, 5, 0, 0, 0, 69, 0, 0, 0,128, 1, 0, 0, 93, 0, 0, 0, 94, 0,
+128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 8, 68,101,115,116,114,111,121, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7,104, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 20, 0, 0, 0, 22, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,
+128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 11,
+ 77,101,115,115, 97,103,101, 68,108,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0,
+ 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, 0,
+ 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,
+ 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0,
+ 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0,
+ 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,
+108, 0, 0, 0, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/messagedlg_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/messagedlg_be64.loh b/iup/srclua5/loh/messagedlg_be64.loh
new file mode 100755
index 0000000..dd1d7bf
--- /dev/null
+++ b/iup/srclua5/loh/messagedlg_be64.loh
@@ -0,0 +1,60 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/messagedlg_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/messagedlg_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+ 64,109,101,115,115, 97,103,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128,
+ 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0,
+ 9, 64, 0,132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,
+100,128, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1,
+ 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0,
+ 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,109,101,115,115, 97,103,101,100,108,103, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0,
+ 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,
+115,116,114,111,121, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0,
+ 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0,
+ 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0,
+ 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0,
+ 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0,
+ 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18,
+ 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93,
+ 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+ 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,
+ 0, 0, 0, 22, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157,
+ 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0,
+ 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0,
+ 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0,
+ 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0,
+ 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0,
+ 0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/messagedlg_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/messagedlg_le64.loh b/iup/srclua5/loh/messagedlg_le64.loh
new file mode 100755
index 0000000..78dc095
--- /dev/null
+++ b/iup/srclua5/loh/messagedlg_le64.loh
@@ -0,0 +1,60 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/messagedlg_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/messagedlg_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+ 64,109,101,115,115, 97,103,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128,
+ 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0,
+ 9, 64, 0,132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,
+100,128, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1,
+ 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0,
+ 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,109,101,115,115, 97,103,101,100,108,103, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0,
+ 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,
+115,116,114,111,121, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0,
+ 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0,
+ 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0,
+ 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0,
+ 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0,
+ 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18,
+ 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93,
+ 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+ 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,
+ 0, 0, 0, 22, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157,
+ 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0,
+ 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0,
+ 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0,
+ 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0,
+ 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0,
+ 0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/messagedlg_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/messagedlg_le64w.loh b/iup/srclua5/loh/messagedlg_le64w.loh
new file mode 100755
index 0000000..2d0aac4
--- /dev/null
+++ b/iup/srclua5/loh/messagedlg_le64w.loh
@@ -0,0 +1,60 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/messagedlg_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/messagedlg_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+ 64,109,101,115,115, 97,103,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128,
+ 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0,
+ 9, 64, 0,132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,
+100,128, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1,
+ 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0,
+ 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,109,101,115,115, 97,103,101,100,108,103, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0,
+ 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,
+115,116,114,111,121, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0,
+ 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0,
+ 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0,
+ 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0,
+ 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0,
+ 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18,
+ 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93,
+ 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+ 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,
+ 0, 0, 0, 22, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157,
+ 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0,
+ 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0,
+ 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0,
+ 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0,
+ 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0,
+ 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0,
+ 0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/messagedlg_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/multiline.loh b/iup/srclua5/loh/multiline.loh
new file mode 100755
index 0000000..6792602
--- /dev/null
+++ b/iup/srclua5/loh/multiline.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/multiline.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/multiline.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 15, 0, 0, 0, 64,109,117,108,
+116,105,108,105,110,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,
+128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92,
+ 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30,
+ 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0,
+ 0, 0,109,117,108,116,105,108,105,110,101, 0, 4, 7, 0, 0, 0,112, 97,114,
+101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, 9, 0,
+ 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 97, 99,116,105,
+111,110, 0, 4, 3, 0, 0, 0,110,115, 0, 4, 9, 0, 0, 0,102,117,110, 99,
+110, 97,109,101, 0, 4, 10, 0, 0, 0, 77,117,108,116,105, 76,105,110,101, 0,
+ 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133,
+ 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4,
+ 10, 0, 0, 0, 77,117,108,116,105, 76,105,110,101, 0, 0, 0, 0, 0, 4, 0,
+ 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0,
+ 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0,
+ 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0,
+ 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0,
+ 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/multiline.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/multiline_be32.loh b/iup/srclua5/loh/multiline_be32.loh
new file mode 100755
index 0000000..7c106df
--- /dev/null
+++ b/iup/srclua5/loh/multiline_be32.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/multiline_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/multiline_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 15, 64,109,117,108,
+116,105,108,105,110,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 0, 0, 0, 19, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129,
+ 0, 64, 9,130, 65, 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9,132,
+194,128, 9, 0, 0, 0,100,133,128, 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1,
+ 0, 64, 92, 0, 3, 64, 69, 0, 0, 0,128, 0, 3,128,193, 1,128, 64, 92, 0,
+128, 0, 30, 0, 0, 0, 15, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0,
+ 0, 10,109,117,108,116,105,108,105,110,101, 0, 4, 0, 0, 0, 7,112, 97,114,
+101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0,
+ 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0,
+ 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 7, 97, 99,116,105,
+111,110, 0, 4, 0, 0, 0, 3,110,115, 0, 4, 0, 0, 0, 9,102,117,110, 99,
+110, 97,109,101, 0, 4, 0, 0, 0, 10, 77,117,108,116,105, 76,105,110,101, 0,
+ 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 2, 0, 3, 0, 0, 0, 4, 0,
+ 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4,
+ 0, 0, 0, 10, 77,117,108,116,105, 76,105,110,101, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0,
+ 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11,
+ 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18,
+ 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19,
+ 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 9, 0, 0, 0,
+ 18, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/multiline_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/multiline_be64.loh b/iup/srclua5/loh/multiline_be64.loh
new file mode 100755
index 0000000..c386eb2
--- /dev/null
+++ b/iup/srclua5/loh/multiline_be64.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/multiline_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/multiline_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64,109,117,108,116,105,108,105,110,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,
+192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9,
+ 64, 0,131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128,
+ 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92,
+ 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+110,105, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105,108,
+105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0,
+ 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97,
+ 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4,
+ 3, 0, 0, 0, 0, 0, 0, 0,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+102,117,110, 99,110, 97,109,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 77,117,
+108,116,105, 76,105,110,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0,
+ 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30,
+ 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 77,117,108,116,
+105, 76,105,110,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 15, 0,
+ 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0,
+ 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0,
+ 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/multiline_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/multiline_le64.loh b/iup/srclua5/loh/multiline_le64.loh
new file mode 100755
index 0000000..cbae6db
--- /dev/null
+++ b/iup/srclua5/loh/multiline_le64.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/multiline_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/multiline_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64,109,117,108,116,105,108,105,110,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,
+192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9,
+ 64, 0,131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128,
+ 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92,
+ 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+110,105, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105,108,
+105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0,
+ 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97,
+ 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4,
+ 3, 0, 0, 0, 0, 0, 0, 0,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+102,117,110, 99,110, 97,109,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 77,117,
+108,116,105, 76,105,110,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0,
+ 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30,
+ 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 77,117,108,116,
+105, 76,105,110,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 15, 0,
+ 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0,
+ 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0,
+ 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/multiline_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/multiline_le64w.loh b/iup/srclua5/loh/multiline_le64w.loh
new file mode 100755
index 0000000..8c729f6
--- /dev/null
+++ b/iup/srclua5/loh/multiline_le64w.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/multiline_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/multiline_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64,109,117,108,116,105,108,105,110,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,
+192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9,
+ 64, 0,131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128,
+ 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92,
+ 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+110,105, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105,108,
+105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0,
+ 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97,
+ 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4,
+ 3, 0, 0, 0, 0, 0, 0, 0,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+102,117,110, 99,110, 97,109,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 77,117,
+108,116,105, 76,105,110,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0,
+ 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30,
+ 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 77,117,108,116,
+105, 76,105,110,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 15, 0,
+ 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0,
+ 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0,
+ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0,
+ 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/multiline_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/normalizer.loh b/iup/srclua5/loh/normalizer.loh
new file mode 100755
index 0000000..1e757fc
--- /dev/null
+++ b/iup/srclua5/loh/normalizer.loh
@@ -0,0 +1,63 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/normalizer.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/normalizer.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 16, 0, 0, 0, 64,110,111,114,
+109, 97,108,105,122,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0,
+ 9, 64,128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0,
+ 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1,
+ 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 11,
+ 0, 0, 0,110,111,114,109, 97,108,105,122,101,114, 0, 4, 7, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4,
+ 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0,115,101,
+116, 65,116,116,114,105, 98,117,116,101,115, 0, 4, 14, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,
+119,105,100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 21,
+ 0, 0, 0, 0, 2, 0, 10, 23, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1,
+ 65, 0, 0,156,128,128, 1,212, 0,128, 0, 1,129, 0, 0, 64, 1,128, 1,129,
+129, 0, 0, 32,129, 1,128, 5,194, 0, 0, 70,194,129, 0, 28,130, 0, 1, 23,
+ 0, 65, 4, 22, 64, 0,128, 6,194,129, 0, 9, 0,130,130, 31,193,253,127, 5,
+129, 1, 0, 6,193, 65, 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128, 1, 30,
+ 0,128, 0, 8, 0, 0, 0, 4, 7, 0, 0, 0,114, 97,119,103,101,116, 0, 4,
+ 7, 0, 0, 0,104, 97,110,100,108,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63,
+ 4, 12, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 97,100,
+100, 99,111,110,116,114,111,108, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84,
+ 0, 4, 14, 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0,
+ 0, 0, 0, 0, 23, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
+ 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
+ 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 20, 0, 0, 0,
+ 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0,
+ 8, 0, 0, 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 22,
+ 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 22, 0, 0, 0, 7,
+ 0, 0, 0,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 22, 0, 0, 0, 2, 0,
+ 0, 0,110, 0, 5, 0, 0, 0, 22, 0, 0, 0, 12, 0, 0, 0, 40,102,111,114,
+ 32,105,110,100,101,120, 41, 0, 8, 0, 0, 0, 17, 0, 0, 0, 12, 0, 0, 0,
+ 40,102,111,114, 32,108,105,109,105,116, 41, 0, 8, 0, 0, 0, 17, 0, 0, 0,
+ 11, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 8, 0, 0, 0, 17,
+ 0, 0, 0, 2, 0, 0, 0,105, 0, 9, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0,
+ 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0,
+ 0, 4, 11, 0, 0, 0, 78,111,114,109, 97,108,105,122,101,114, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0,
+ 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 21, 0, 0, 0, 12,
+ 0, 0, 0, 25, 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0,
+ 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/normalizer.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/normalizer_be32.loh b/iup/srclua5/loh/normalizer_be32.loh
new file mode 100755
index 0000000..ecdb222
--- /dev/null
+++ b/iup/srclua5/loh/normalizer_be32.loh
@@ -0,0 +1,63 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/normalizer_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/normalizer_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 16, 64,110,111,114,
+109, 97,108,105,122,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 0, 0, 0, 19, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,
+129, 0, 64, 9,130, 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,
+131,128, 64, 9, 0, 0, 64,100,132, 0, 64, 9, 0, 2, 64, 69, 0, 0, 0,128,
+ 1, 0, 64, 92, 0, 2,128, 69, 0, 0, 0,128, 0, 2,192,193, 1,128, 64, 92,
+ 0,128, 0, 30, 0, 0, 0, 12, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0,
+ 0, 0, 11,110,111,114,109, 97,108,105,122,101,114, 0, 4, 0, 0, 0, 7,112,
+ 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0,
+ 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4,
+ 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 14,115,101,
+116, 65,116,116,114,105, 98,117,116,101,115, 0, 4, 0, 0, 0, 14, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,
+119,105,100,103,101,116, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 12, 0,
+ 0, 0, 21, 0, 2, 0, 10, 0, 0, 0, 23, 0, 0, 0,133, 0, 0, 0,192, 0,
+ 0, 65, 1, 1,128,128,156, 0,128, 0,212, 0, 0,129, 1, 1,128, 1, 64, 0,
+ 0,129,129,128, 1,129, 32, 0, 0,194, 5, 0,129,194, 70, 1, 0,130, 28, 4,
+ 65, 0, 23,128, 0, 64, 22, 0,129,194, 6,130,130, 0, 9,127,253,193, 31, 0,
+ 1,129, 5, 2, 65,193, 6, 0, 0, 1, 64, 0,128, 1,128, 1,128, 65, 28, 0,
+128, 0, 30, 0, 0, 0, 8, 4, 0, 0, 0, 7,114, 97,119,103,101,116, 0, 4,
+ 0, 0, 0, 7,104, 97,110,100,108,101, 0, 3, 63,240, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 12,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 0, 0,
+ 0, 11,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 11, 97,100,
+100, 99,111,110,116,114,111,108, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84,
+ 0, 4, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0,
+ 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13,
+ 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15,
+ 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21,
+ 0, 0, 0, 8, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0,
+ 0, 0, 22, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 4, 0, 0, 0, 22, 0, 0,
+ 0, 2,110, 0, 0, 0, 0, 5, 0, 0, 0, 22, 0, 0, 0, 12, 40,102,111,114,
+ 32,105,110,100,101,120, 41, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 12,
+ 40,102,111,114, 32,108,105,109,105,116, 41, 0, 0, 0, 0, 8, 0, 0, 0, 17,
+ 0, 0, 0, 11, 40,102,111,114, 32,115,116,101,112, 41, 0, 0, 0, 0, 8, 0,
+ 0, 0, 17, 0, 0, 0, 2,105, 0, 0, 0, 0, 9, 0, 0, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 2, 0, 3, 0, 0, 0,
+ 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0,
+ 1, 4, 0, 0, 0, 11, 78,111,114,109, 97,108,105,122,101,114, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0,
+ 25, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 21, 0,
+ 0, 0, 12, 0, 0, 0, 25, 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0,
+ 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7,
+ 0, 0, 0, 18, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/normalizer_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/normalizer_be64.loh b/iup/srclua5/loh/normalizer_be64.loh
new file mode 100755
index 0000000..2b0a199
--- /dev/null
+++ b/iup/srclua5/loh/normalizer_be64.loh
@@ -0,0 +1,70 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/normalizer_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/normalizer_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+ 64,110,111,114,109, 97,108,105,122,101,114, 46,108,117, 97, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128,
+ 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,
+100, 0, 0, 0, 9, 64,128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,
+128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0,
+ 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,105, 99,107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,110,111,114,109, 97,
+108,105,122,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116,
+114,105, 98,117,116,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0,
+ 2, 0, 10, 23, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, 65, 0, 0,156,
+128,128, 1,212, 0,128, 0, 1,129, 0, 0, 64, 1,128, 1,129,129, 0, 0, 32,
+129, 1,128, 5,194, 0, 0, 70,194,129, 0, 28,130, 0, 1, 23, 0, 65, 4, 22,
+ 64, 0,128, 6,194,129, 0, 9, 0,130,130, 31,193,253,127, 5,129, 1, 0, 6,
+193, 65, 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128, 1, 30, 0,128, 0, 8,
+ 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103,101,116, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 3, 0, 0, 0, 0,
+ 0, 0,240, 63, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,
+110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 97,100,100, 99,111,110,
+116,114,111,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84,
+ 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,
+116,101,115, 0, 0, 0, 0, 0, 23, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
+ 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
+ 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0,
+ 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0,
+ 21, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101,
+ 99,116, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,
+114,103, 0, 0, 0, 0, 0, 22, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104,
+ 97,110,100,108,101, 0, 4, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0,110, 0, 5, 0, 0, 0, 22, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 40,102,111,114, 32,105,110,100,101,120, 41, 0, 8, 0, 0, 0, 17, 0, 0, 0,
+ 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,108,105,109,105,116, 41, 0,
+ 8, 0, 0, 0, 17, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114,
+ 32,115,116,101,112, 41, 0, 8, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0,105, 0, 9, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0,
+ 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0,
+ 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 78,111,114,109, 97,108,105,122,101,114,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0,
+ 0, 25, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,
+115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,
+114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9,
+ 0, 0, 0, 9, 0, 0, 0, 21, 0, 0, 0, 12, 0, 0, 0, 25, 0, 0, 0, 23,
+ 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/normalizer_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/normalizer_le64.loh b/iup/srclua5/loh/normalizer_le64.loh
new file mode 100755
index 0000000..cfaf13a
--- /dev/null
+++ b/iup/srclua5/loh/normalizer_le64.loh
@@ -0,0 +1,70 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/normalizer_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/normalizer_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+ 64,110,111,114,109, 97,108,105,122,101,114, 46,108,117, 97, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128,
+ 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,
+100, 0, 0, 0, 9, 64,128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,
+128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0,
+ 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,105, 99,107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,110,111,114,109, 97,
+108,105,122,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116,
+114,105, 98,117,116,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0,
+ 2, 0, 10, 23, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, 65, 0, 0,156,
+128,128, 1,212, 0,128, 0, 1,129, 0, 0, 64, 1,128, 1,129,129, 0, 0, 32,
+129, 1,128, 5,194, 0, 0, 70,194,129, 0, 28,130, 0, 1, 23, 0, 65, 4, 22,
+ 64, 0,128, 6,194,129, 0, 9, 0,130,130, 31,193,253,127, 5,129, 1, 0, 6,
+193, 65, 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128, 1, 30, 0,128, 0, 8,
+ 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103,101,116, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 3, 0, 0, 0, 0,
+ 0, 0,240, 63, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,
+110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 97,100,100, 99,111,110,
+116,114,111,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84,
+ 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,
+116,101,115, 0, 0, 0, 0, 0, 23, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
+ 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
+ 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0,
+ 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0,
+ 21, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101,
+ 99,116, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,
+114,103, 0, 0, 0, 0, 0, 22, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104,
+ 97,110,100,108,101, 0, 4, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0,110, 0, 5, 0, 0, 0, 22, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 40,102,111,114, 32,105,110,100,101,120, 41, 0, 8, 0, 0, 0, 17, 0, 0, 0,
+ 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,108,105,109,105,116, 41, 0,
+ 8, 0, 0, 0, 17, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114,
+ 32,115,116,101,112, 41, 0, 8, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0,105, 0, 9, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0,
+ 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0,
+ 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 78,111,114,109, 97,108,105,122,101,114,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0,
+ 0, 25, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,
+115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,
+114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9,
+ 0, 0, 0, 9, 0, 0, 0, 21, 0, 0, 0, 12, 0, 0, 0, 25, 0, 0, 0, 23,
+ 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28,
+ 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/normalizer_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/normalizer_le64w.loh b/iup/srclua5/loh/normalizer_le64w.loh
new file mode 100755
index 0000000..e89daa2
--- /dev/null
+++ b/iup/srclua5/loh/normalizer_le64w.loh
@@ -0,0 +1,72 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/normalizer_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/normalizer_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+ 64,110,111,114,109, 97,108,105,122,101,114, 46,108,117, 97, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128,
+ 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,
+100, 0, 0, 0, 9, 64,128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,
+128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0,
+ 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,105, 99,107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,110,111,114,109, 97,
+108,105,122,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116,
+114,105, 98,117,116,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0,
+ 2, 0, 10, 26, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, 65, 0, 0,156,
+128,128, 1,197,128, 0, 0,198,192,192, 1, 0, 1,128, 0,220,128, 0, 1, 1,
+ 1, 1, 0, 64, 1,128, 1,129, 1, 1, 0, 32,129, 1,128, 5, 66, 1, 0, 70,
+194,129, 0, 28,130, 0, 1, 23,128, 65, 4, 22, 64, 0,128, 6,194,129, 0, 9,
+ 0,130,131, 31,193,253,127, 5, 1, 2, 0, 6, 65, 66, 2, 64, 1, 0, 0,128,
+ 1,128, 0, 28, 65,128, 1, 30, 0,128, 0, 10, 0, 0, 0, 4, 7, 0, 0, 0,
+ 0, 0, 0, 0,114, 97,119,103,101,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,
+104, 97,110,100,108,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,
+101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,103,101,116,110, 0, 3, 0, 0, 0,
+ 0, 0, 0,240, 63, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116,
+ 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104,
+ 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 97,100,100, 99,111,
+110,116,114,111,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69,
+ 84, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116,114,105, 98,
+117,116,101,115, 0, 0, 0, 0, 0, 26, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0,
+ 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0,
+ 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
+ 0, 17, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 8, 0, 0,
+ 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0,
+ 25, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4,
+ 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 8, 0, 0,
+ 0, 25, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110,
+100,101,120, 41, 0, 11, 0, 0, 0, 20, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0,
+ 0, 40,102,111,114, 32,108,105,109,105,116, 41, 0, 11, 0, 0, 0, 20, 0, 0,
+ 0, 11, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0,
+ 11, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 12, 0,
+ 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0,
+ 0, 0, 25, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,
+128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0, 78,111,114,109, 97,108,105,122,101,114, 0, 0, 0, 0, 0, 4, 0,
+ 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 2, 0,
+ 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0,
+ 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0,
+ 21, 0, 0, 0, 12, 0, 0, 0, 25, 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0,
+ 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0,
+ 28, 0, 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+ 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/normalizer_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/olecontrol.loh b/iup/srclua5/loh/olecontrol.loh
new file mode 100755
index 0000000..474d668
--- /dev/null
+++ b/iup/srclua5/loh/olecontrol.loh
@@ -0,0 +1,79 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluaole51/olecontrol.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluaole51/olecontrol.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 16, 0, 0, 0, 64,111,108,101,
+ 99,111,110,116,114,111,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 22, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,132,
+ 9,128,194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134,100, 64, 0, 0,
+ 9, 64, 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 4, 0,
+128, 0, 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, 0, 0,
+ 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 11, 0, 0, 0,111,108,101, 99,111,
+110,116,114,111,108, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 2, 0, 0, 0,115, 0, 4, 9, 0, 0, 0,102,117,110, 99,
+110, 97,109,101, 0, 4, 11, 0, 0, 0, 79,108,101, 67,111,110,116,114,111,108,
+ 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0,
+105,110, 99,108,117,100,101, 0, 4, 9, 0, 0, 0,105,117,112,111,108,101, 46,
+104, 0, 4, 10, 0, 0, 0,101,120,116,114, 97, 99,111,100,101, 0, 4,164, 1,
+ 0, 0, 32, 10,105,110,116, 32,105,117,112,111,108,101,108,117, 97, 95,111,112,
+101,110, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,123, 10, 32,
+ 32,105,102, 32, 40,105,117,112,108,117, 97, 95,111,112,101,110, 99, 97,108,108,
+ 95,105,110,116,101,114,110, 97,108, 40, 76, 41, 41, 10, 32, 32, 32, 32, 73,117,
+112, 79,108,101, 67,111,110,116,114,111,108, 79,112,101,110, 40, 41, 59, 10, 32,
+ 32, 32, 32, 10, 32, 32,105,117,112,108,117, 97, 95, 99,104, 97,110,103,101, 69,
+110,118, 40, 76, 41, 59, 10, 32, 32,105,117,112,111,108,101, 99,111,110,116,114,
+111,108,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10, 32, 32,105,117,112,
+108,117, 97, 95,114,101,116,117,114,110, 69,110,118, 40, 76, 41, 59, 10, 32, 32,
+114,101,116,117,114,110, 32, 48, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,
+103, 97,116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,
+101, 34,105,117,112,108,117, 97,111,108,101, 34, 32, 42, 47, 10,105,110,116, 32,
+108,117, 97,111,112,101,110, 95,105,117,112,108,117, 97,111,108,101, 40,108,117,
+ 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117,
+114,110, 32,105,117,112,111,108,101,108,117, 97, 95,111,112,101,110, 40, 76, 41,
+ 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,
+111, 32,117,115,101, 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,
+111,108,101, 53, 49, 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,
+110, 95,105,117,112,108,117, 97,111,108,101, 53, 49, 40,108,117, 97, 95, 83,116,
+ 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105,
+117,112,111,108,101,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10,
+ 10, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116,
+ 0, 4, 13, 0, 0, 0, 67,114,101, 97,116,101, 76,117, 97, 67, 79, 77, 0, 4,
+ 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0, 38, 0, 0, 0, 40, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133,
+ 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2,
+ 0, 0, 0, 4, 11, 0, 0, 0, 79,108,101, 67,111,110,116,114,111,108, 0, 3,
+ 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 39, 0, 0, 0,
+ 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 2, 0, 0, 0,
+ 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 42, 0, 0, 0, 51, 0, 0, 0, 0, 1, 0, 5, 15, 0, 0, 0, 69, 0,
+ 0, 0, 90, 0, 0, 0, 22,128, 2,128, 70, 64, 64, 0, 90, 0, 0, 0, 22,192,
+ 1,128,133, 0, 0, 0,134,192, 64, 1,197, 0, 0, 0,198, 0,193, 1, 0, 1,
+128, 0,220, 0, 0, 1,156,128, 0, 0, 9,128, 0,129, 30, 0,128, 0, 5, 0,
+ 0, 0, 4, 7, 0, 0, 0,108,117, 97, 99,111,109, 0, 4, 9, 0, 0, 0,105,
+117,110,107,110,111,119,110, 0, 4, 4, 0, 0, 0, 99,111,109, 0, 4, 13, 0,
+ 0, 0, 67,114,101, 97,116,101, 76,117, 97, 67, 79, 77, 0, 4, 15, 0, 0, 0,
+ 73,109,112,111,114,116, 73, 85,110,107,110,111,119,110, 0, 0, 0, 0, 0, 15,
+ 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 47,
+ 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48,
+ 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 51,
+ 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0,
+ 0, 0, 14, 0, 0, 0, 5, 0, 0, 0,112,117,110,107, 0, 4, 0, 0, 0, 14,
+ 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9,
+ 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 40, 0, 0, 0, 38, 0, 0, 0, 51,
+ 0, 0, 0, 42, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 54,
+ 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 10, 0, 0, 0, 21, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluaole51/olecontrol.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/olecontrol_be64.loh b/iup/srclua5/loh/olecontrol_be64.loh
new file mode 100755
index 0000000..6599d53
--- /dev/null
+++ b/iup/srclua5/loh/olecontrol_be64.loh
@@ -0,0 +1,85 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluaole51/olecontrol_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iupluaole51/olecontrol_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+ 64,111,108,101, 99,111,110,116,114,111,108, 46,108,117, 97, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128,
+ 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0,
+ 9, 64, 0,132, 9,128,194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134,
+100, 64, 0, 0, 9, 64, 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1,
+ 69, 0, 4, 0,128, 0, 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0,
+ 18, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 11,
+ 0, 0, 0, 0, 0, 0, 0,111,108,101, 99,111,110,116,114,111,108, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0, 79,108,101, 67,111,110,116,114,111,108, 0, 4, 9, 0,
+ 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112,111,108,101, 46,104, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,101,
+120,116,114, 97, 99,111,100,101, 0, 4,164, 1, 0, 0, 0, 0, 0, 0, 32, 10,
+105,110,116, 32,105,117,112,111,108,101,108,117, 97, 95,111,112,101,110, 40,108,
+117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,105,102, 32,
+ 40,105,117,112,108,117, 97, 95,111,112,101,110, 99, 97,108,108, 95,105,110,116,
+101,114,110, 97,108, 40, 76, 41, 41, 10, 32, 32, 32, 32, 73,117,112, 79,108,101,
+ 67,111,110,116,114,111,108, 79,112,101,110, 40, 41, 59, 10, 32, 32, 32, 32, 10,
+ 32, 32,105,117,112,108,117, 97, 95, 99,104, 97,110,103,101, 69,110,118, 40, 76,
+ 41, 59, 10, 32, 32,105,117,112,111,108,101, 99,111,110,116,114,111,108,108,117,
+ 97, 95,111,112,101,110, 40, 76, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,
+114,101,116,117,114,110, 69,110,118, 40, 76, 41, 59, 10, 32, 32,114,101,116,117,
+114,110, 32, 48, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97,116,111,
+114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,101, 34,105,117,
+112,108,117, 97,111,108,101, 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,
+112,101,110, 95,105,117,112,108,117, 97,111,108,101, 40,108,117, 97, 95, 83,116,
+ 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105,
+117,112,111,108,101,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10,
+ 10, 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32,117,115,
+101, 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,111,108,101, 53,
+ 49, 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117,
+112,108,117, 97,111,108,101, 53, 49, 40,108,117, 97, 95, 83,116, 97,116,101, 42,
+ 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,111,108,
+101,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 0, 4, 14,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116,
+ 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 76,117, 97, 67,
+ 79, 77, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 38, 0, 0, 0, 40, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133,
+ 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2,
+ 0, 0, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 79,108,101, 67,111,110,116,114,
+111,108, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0,
+ 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0,
+ 0, 0, 51, 0, 0, 0, 0, 1, 0, 5, 15, 0, 0, 0, 69, 0, 0, 0, 90, 0,
+ 0, 0, 22,128, 2,128, 70, 64, 64, 0, 90, 0, 0, 0, 22,192, 1,128,133, 0,
+ 0, 0,134,192, 64, 1,197, 0, 0, 0,198, 0,193, 1, 0, 1,128, 0,220, 0,
+ 0, 1,156,128, 0, 0, 9,128, 0,129, 30, 0,128, 0, 5, 0, 0, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,108,117, 97, 99,111,109, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0,105,117,110,107,110,111,119,110, 0, 4, 4, 0, 0, 0, 0, 0, 0,
+ 0, 99,111,109, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101,
+ 76,117, 97, 67, 79, 77, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 73,109,112,111,
+114,116, 73, 85,110,107,110,111,119,110, 0, 0, 0, 0, 0, 15, 0, 0, 0, 45,
+ 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 47,
+ 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48,
+ 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 51, 0, 0, 0, 2,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0,
+ 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,112,117,110,107, 0, 4,
+ 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9,
+ 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 40, 0, 0, 0, 38,
+ 0, 0, 0, 51, 0, 0, 0, 42, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 53,
+ 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 10, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluaole51/olecontrol_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/olecontrol_le64w.loh b/iup/srclua5/loh/olecontrol_le64w.loh
new file mode 100755
index 0000000..a8ec614
--- /dev/null
+++ b/iup/srclua5/loh/olecontrol_le64w.loh
@@ -0,0 +1,80 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluaole51/olecontrol_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluaole51/olecontrol_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+ 64,111,108,101, 99,111,110,116,114,111,108, 46,108,117, 97, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 4, 20, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128,
+ 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0,
+ 9, 64, 0,132, 9,128,194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134,
+ 69,128, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,
+193, 0, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,111,
+108,101, 99,111,110,116,114,111,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69,
+ 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0,
+ 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+102,117,110, 99,110, 97,109,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 79,108,
+101, 67,111,110,116,114,111,108, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,
+108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,
+117,100,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,105,117,112,111,108,101, 46,
+104, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97, 99,111,100,101,
+ 0, 4,164, 1, 0, 0, 0, 0, 0, 0, 32, 10,105,110,116, 32,105,117,112,111,
+108,101,108,117, 97, 95,111,112,101,110, 40,108,117, 97, 95, 83,116, 97,116,101,
+ 42, 32, 76, 41, 10,123, 10, 32, 32,105,102, 32, 40,105,117,112,108,117, 97, 95,
+111,112,101,110, 99, 97,108,108, 95,105,110,116,101,114,110, 97,108, 40, 76, 41,
+ 41, 10, 32, 32, 32, 32, 73,117,112, 79,108,101, 67,111,110,116,114,111,108, 79,
+112,101,110, 40, 41, 59, 10, 32, 32, 32, 32, 10, 32, 32,105,117,112,108,117, 97,
+ 95, 99,104, 97,110,103,101, 69,110,118, 40, 76, 41, 59, 10, 32, 32,105,117,112,
+111,108,101, 99,111,110,116,114,111,108,108,117, 97, 95,111,112,101,110, 40, 76,
+ 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,114,101,116,117,114,110, 69,110,
+118, 40, 76, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 48, 59, 10,125, 10,
+ 10, 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32,117,115,
+101, 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,111,108,101, 34,
+ 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117,112,108,
+117, 97,111,108,101, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,
+123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,111,108,101,108,117, 97,
+ 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,
+103, 97,116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,
+101, 34,105,117,112,108,117, 97,111,108,101, 53, 49, 34, 32, 42, 47, 10,105,110,
+116, 32,108,117, 97,111,112,101,110, 95,105,117,112,108,117, 97,111,108,101, 53,
+ 49, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,
+114,101,116,117,114,110, 32,105,117,112,111,108,101,108,117, 97, 95,111,112,101,
+110, 40, 76, 41, 59, 10,125, 10, 10, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0,
+ 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115,
+ 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 51, 0, 0,
+ 0, 0, 2, 0, 7, 19, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,156,128, 0,
+ 1,197,128, 0, 0,218, 0, 0, 0, 22,128, 2,128,198,192, 64, 1,218, 0, 0,
+ 0, 22,192, 1,128, 5,129, 0, 0, 6, 65, 65, 2, 69,129, 0, 0, 70,129,193,
+ 2,128, 1,128, 1, 92, 1, 0, 1, 28,129, 0, 0,137, 0, 1,130,158, 0, 0,
+ 1, 30, 0,128, 0, 7, 0, 0, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 79,108,
+101, 67,111,110,116,114,111,108, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,108,117, 97, 99,111,109, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0,105,117,110,107,110,111,119,110, 0, 4, 4, 0, 0, 0, 0, 0, 0,
+ 0, 99,111,109, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 77, 97,107,101, 76,117,
+ 97, 67, 79, 77, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 77, 97,107,101, 73, 85,
+110,107,110,111,119,110, 0, 0, 0, 0, 0, 19, 0, 0, 0, 39, 0, 0, 0, 39,
+ 0, 0, 0, 39, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44,
+ 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46,
+ 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46,
+ 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 99,116,108, 0, 3, 0, 0, 0, 18, 0, 0, 0, 5, 0, 0,
+ 0, 0, 0, 0, 0,112,117,110,107, 0, 7, 0, 0, 0, 17, 0, 0, 0, 0, 0,
+ 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0,
+ 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 10, 0,
+ 0, 0, 35, 0, 0, 0, 51, 0, 0, 0, 38, 0, 0, 0, 53, 0, 0, 0, 53, 0,
+ 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0,
+ 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,
+114,108, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluaole51/olecontrol_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/pplot.loh b/iup/srclua5/loh/pplot.loh
new file mode 100755
index 0000000..34e0b43
--- /dev/null
+++ b/iup/srclua5/loh/pplot.loh
@@ -0,0 +1,58 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua_pplot51/pplot.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua_pplot51/pplot.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,112,112,108,
+111,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 31,
+ 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9,
+ 64, 65,130, 9,192, 65,131, 74,192, 2, 0, 73,128,194,132, 73, 64,193,133, 73,
+ 64, 65,134, 73,128,195,134, 73,128,195,135, 73, 64, 68,136, 73, 64, 65,137, 73,
+ 64,193,137, 73, 64, 69,138, 73, 64, 65,139, 73, 64,193,139, 9, 64, 0,132, 9,
+ 64, 70,140, 9,192, 70,141,100, 0, 0, 0, 9, 64, 0,142, 69, 64, 7, 0,128,
+ 0, 0, 0, 92, 64, 0, 1, 69,128, 7, 0,128, 0, 0, 0,193,192, 7, 0, 92,
+ 64,128, 1, 30, 0,128, 0, 32, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107,
+ 0, 4, 6, 0, 0, 0,112,112,108,111,116, 0, 4, 7, 0, 0, 0,112, 97,114,
+101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0,
+ 0,102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 80, 80,108,111,116,
+ 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0,
+115,101,108,101, 99,116, 95, 99, 98, 0, 4, 6, 0, 0, 0,110,110,102,102,110,
+ 0, 4, 15, 0, 0, 0,115,101,108,101, 99,116, 98,101,103,105,110, 95, 99, 98,
+ 0, 4, 13, 0, 0, 0,115,101,108,101, 99,116,101,110,100, 95, 99, 98, 0, 4,
+ 11, 0, 0, 0,112,114,101,100,114, 97,119, 95, 99, 98, 0, 4, 2, 0, 0, 0,
+110, 0, 4, 12, 0, 0, 0,112,111,115,116,100,114, 97,119, 95, 99, 98, 0, 4,
+ 8, 0, 0, 0,101,100,105,116, 95, 99, 98, 0, 4, 7, 0, 0, 0,110,110,102,
+102,102,102, 0, 4, 13, 0, 0, 0,101,100,105,116, 98,101,103,105,110, 95, 99,
+ 98, 0, 4, 11, 0, 0, 0,101,100,105,116,101,110,100, 95, 99, 98, 0, 4, 10,
+ 0, 0, 0,100,101,108,101,116,101, 95, 99, 98, 0, 4, 5, 0, 0, 0,110,110,
+102,102, 0, 4, 15, 0, 0, 0,100,101,108,101,116,101, 98,101,103,105,110, 95,
+ 99, 98, 0, 4, 13, 0, 0, 0,100,101,108,101,116,101,101,110,100, 95, 99, 98,
+ 0, 4, 8, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 12, 0, 0, 0,105,
+117,112, 95,112,112,108,111,116, 46,104, 0, 4, 11, 0, 0, 0,101,120,116,114,
+ 97,102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0,
+ 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 26,
+ 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198,
+ 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4,
+ 6, 0, 0, 0, 80, 80,108,111,116, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,
+110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0,
+ 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+ 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0,
+ 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0,
+ 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0,
+ 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 21, 0, 0, 0, 30, 0, 0,
+ 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua_pplot51/pplot.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/pplot_be32.loh b/iup/srclua5/loh/pplot_be32.loh
new file mode 100755
index 0000000..bee507d
--- /dev/null
+++ b/iup/srclua5/loh/pplot_be32.loh
@@ -0,0 +1,58 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua_pplot51/pplot_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua_pplot51/pplot_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,112,112,108,
+111,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0,
+ 0, 0, 31, 0, 1,192, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130,
+ 65, 64, 9,131, 65,192, 9, 0, 2,192, 74,132,194,128, 73,133,193, 64, 73,134,
+ 65, 64, 73,134,195,128, 73,135,195,128, 73,136, 68, 64, 73,137, 65, 64, 73,137,
+193, 64, 73,138, 69, 64, 73,139, 65, 64, 73,139,193, 64, 73,132, 0, 64, 9,140,
+ 70, 64, 9,141, 70,192, 9, 0, 0, 0,100,142, 0, 64, 9, 0, 7, 64, 69, 0,
+ 0, 0,128, 1, 0, 64, 92, 0, 7,128, 69, 0, 0, 0,128, 0, 7,192,193, 1,
+128, 64, 92, 0,128, 0, 30, 0, 0, 0, 32, 4, 0, 0, 0, 5,110,105, 99,107,
+ 0, 4, 0, 0, 0, 6,112,112,108,111,116, 0, 4, 0, 0, 0, 7,112, 97,114,
+101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0,
+ 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0,
+ 9,102,117,110, 99,110, 97,109,101, 0, 4, 0, 0, 0, 6, 80, 80,108,111,116,
+ 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 10,
+115,101,108,101, 99,116, 95, 99, 98, 0, 4, 0, 0, 0, 6,110,110,102,102,110,
+ 0, 4, 0, 0, 0, 15,115,101,108,101, 99,116, 98,101,103,105,110, 95, 99, 98,
+ 0, 4, 0, 0, 0, 13,115,101,108,101, 99,116,101,110,100, 95, 99, 98, 0, 4,
+ 0, 0, 0, 11,112,114,101,100,114, 97,119, 95, 99, 98, 0, 4, 0, 0, 0, 2,
+110, 0, 4, 0, 0, 0, 12,112,111,115,116,100,114, 97,119, 95, 99, 98, 0, 4,
+ 0, 0, 0, 8,101,100,105,116, 95, 99, 98, 0, 4, 0, 0, 0, 7,110,110,102,
+102,102,102, 0, 4, 0, 0, 0, 13,101,100,105,116, 98,101,103,105,110, 95, 99,
+ 98, 0, 4, 0, 0, 0, 11,101,100,105,116,101,110,100, 95, 99, 98, 0, 4, 0,
+ 0, 0, 10,100,101,108,101,116,101, 95, 99, 98, 0, 4, 0, 0, 0, 5,110,110,
+102,102, 0, 4, 0, 0, 0, 15,100,101,108,101,116,101, 98,101,103,105,110, 95,
+ 99, 98, 0, 4, 0, 0, 0, 13,100,101,108,101,116,101,101,110,100, 95, 99, 98,
+ 0, 4, 0, 0, 0, 8,105,110, 99,108,117,100,101, 0, 4, 0, 0, 0, 12,105,
+117,112, 95,112,112,108,111,116, 46,104, 0, 4, 0, 0, 0, 11,101,120,116,114,
+ 97,102,117,110, 99,115, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0,
+ 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,
+105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 26, 0, 0, 0, 28, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,
+192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4,
+ 0, 0, 0, 6, 80, 80,108,111,116, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,
+110, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0,
+ 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 4,
+ 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8,
+ 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13,
+ 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18,
+ 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23,
+ 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30,
+ 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31,
+ 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 21, 0, 0, 0,
+ 30, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua_pplot51/pplot_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/pplot_be64.loh b/iup/srclua5/loh/pplot_be64.loh
new file mode 100755
index 0000000..ff71da6
--- /dev/null
+++ b/iup/srclua5/loh/pplot_be64.loh
@@ -0,0 +1,65 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua_pplot51/pplot_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua_pplot51/pplot_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 31, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74,192, 2, 0, 73,128,194,132, 73,
+ 64,193,133, 73, 64, 65,134, 73,128,195,134, 73,128,195,135, 73, 64, 68,136, 73,
+ 64, 65,137, 73, 64,193,137, 73, 64, 69,138, 73, 64, 65,139, 73, 64,193,139, 9,
+ 64, 0,132, 9, 64, 70,140, 9,192, 70,141,100, 0, 0, 0, 9, 64, 0,142, 69,
+ 64, 7, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 7, 0,128, 0, 0, 0,193,
+192, 7, 0, 92, 64,128, 1, 30, 0,128, 0, 32, 0, 0, 0, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,112,
+108,111,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,
+101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80, 80,108,111,116, 0, 4, 9, 0,
+ 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0,
+ 0, 0, 0, 0,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 6, 0, 0, 0, 0,
+ 0, 0, 0,110,110,102,102,110, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,115,101,
+108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 4, 13, 0, 0, 0, 0, 0,
+ 0, 0,115,101,108,101, 99,116,101,110,100, 95, 99, 98, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0,112,114,101,100,114, 97,119, 95, 99, 98, 0, 4, 2, 0, 0, 0,
+ 0, 0, 0, 0,110, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,112,111,115,116,100,
+114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,
+ 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,110,102,102,102,102, 0,
+ 4, 13, 0, 0, 0, 0, 0, 0, 0,101,100,105,116, 98,101,103,105,110, 95, 99,
+ 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,101,110,100, 95, 99,
+ 98, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,100,101,108,101,116,101, 95, 99, 98,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,110,102,102, 0, 4, 15, 0, 0, 0,
+ 0, 0, 0, 0,100,101,108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 4,
+ 13, 0, 0, 0, 0, 0, 0, 0,100,101,108,101,116,101,101,110,100, 95, 99, 98,
+ 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 95,112,112,108,111,116, 46,104, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102,117,110, 99,115, 0, 3,
+ 0, 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0,
+ 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158,
+ 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+ 80, 80,108,111,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,
+110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 31, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0,
+ 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0,
+ 22, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0,
+ 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0,
+ 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+ 99,116,114,108, 0, 21, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua_pplot51/pplot_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/pplot_le64.loh b/iup/srclua5/loh/pplot_le64.loh
new file mode 100755
index 0000000..cb64601
--- /dev/null
+++ b/iup/srclua5/loh/pplot_le64.loh
@@ -0,0 +1,65 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua_pplot51/pplot_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua_pplot51/pplot_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 31, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74,192, 2, 0, 73,128,194,132, 73,
+ 64,193,133, 73, 64, 65,134, 73,128,195,134, 73,128,195,135, 73, 64, 68,136, 73,
+ 64, 65,137, 73, 64,193,137, 73, 64, 69,138, 73, 64, 65,139, 73, 64,193,139, 9,
+ 64, 0,132, 9, 64, 70,140, 9,192, 70,141,100, 0, 0, 0, 9, 64, 0,142, 69,
+ 64, 7, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 7, 0,128, 0, 0, 0,193,
+192, 7, 0, 92, 64,128, 1, 30, 0,128, 0, 32, 0, 0, 0, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,112,
+108,111,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,
+101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80, 80,108,111,116, 0, 4, 9, 0,
+ 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0,
+ 0, 0, 0, 0,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 6, 0, 0, 0, 0,
+ 0, 0, 0,110,110,102,102,110, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,115,101,
+108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 4, 13, 0, 0, 0, 0, 0,
+ 0, 0,115,101,108,101, 99,116,101,110,100, 95, 99, 98, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0,112,114,101,100,114, 97,119, 95, 99, 98, 0, 4, 2, 0, 0, 0,
+ 0, 0, 0, 0,110, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,112,111,115,116,100,
+114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,
+ 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,110,102,102,102,102, 0,
+ 4, 13, 0, 0, 0, 0, 0, 0, 0,101,100,105,116, 98,101,103,105,110, 95, 99,
+ 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,101,110,100, 95, 99,
+ 98, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,100,101,108,101,116,101, 95, 99, 98,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,110,102,102, 0, 4, 15, 0, 0, 0,
+ 0, 0, 0, 0,100,101,108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 4,
+ 13, 0, 0, 0, 0, 0, 0, 0,100,101,108,101,116,101,101,110,100, 95, 99, 98,
+ 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 95,112,112,108,111,116, 46,104, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102,117,110, 99,115, 0, 3,
+ 0, 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0,
+ 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158,
+ 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+ 80, 80,108,111,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,
+110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 31, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0,
+ 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0,
+ 22, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0,
+ 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0,
+ 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+ 99,116,114,108, 0, 21, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua_pplot51/pplot_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/pplot_le64w.loh b/iup/srclua5/loh/pplot_le64w.loh
new file mode 100755
index 0000000..28248bf
--- /dev/null
+++ b/iup/srclua5/loh/pplot_le64w.loh
@@ -0,0 +1,65 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua_pplot51/pplot_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua_pplot51/pplot_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 31, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74,192, 2, 0, 73,128,194,132, 73,
+ 64,193,133, 73, 64, 65,134, 73,128,195,134, 73,128,195,135, 73, 64, 68,136, 73,
+ 64, 65,137, 73, 64,193,137, 73, 64, 69,138, 73, 64, 65,139, 73, 64,193,139, 9,
+ 64, 0,132, 9, 64, 70,140, 9,192, 70,141,100, 0, 0, 0, 9, 64, 0,142, 69,
+ 64, 7, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 7, 0,128, 0, 0, 0,193,
+192, 7, 0, 92, 64,128, 1, 30, 0,128, 0, 32, 0, 0, 0, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,112,
+108,111,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,
+101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80, 80,108,111,116, 0, 4, 9, 0,
+ 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0,
+ 0, 0, 0, 0,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 6, 0, 0, 0, 0,
+ 0, 0, 0,110,110,102,102,110, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,115,101,
+108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 4, 13, 0, 0, 0, 0, 0,
+ 0, 0,115,101,108,101, 99,116,101,110,100, 95, 99, 98, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0,112,114,101,100,114, 97,119, 95, 99, 98, 0, 4, 2, 0, 0, 0,
+ 0, 0, 0, 0,110, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,112,111,115,116,100,
+114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,
+ 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,110,102,102,102,102, 0,
+ 4, 13, 0, 0, 0, 0, 0, 0, 0,101,100,105,116, 98,101,103,105,110, 95, 99,
+ 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,101,110,100, 95, 99,
+ 98, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,100,101,108,101,116,101, 95, 99, 98,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,110,102,102, 0, 4, 15, 0, 0, 0,
+ 0, 0, 0, 0,100,101,108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 4,
+ 13, 0, 0, 0, 0, 0, 0, 0,100,101,108,101,116,101,101,110,100, 95, 99, 98,
+ 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 95,112,112,108,111,116, 46,104, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102,117,110, 99,115, 0, 3,
+ 0, 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0,
+ 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158,
+ 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,
+ 80, 80,108,111,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,
+110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 31, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0,
+ 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0,
+ 22, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0,
+ 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0,
+ 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+ 99,116,114,108, 0, 21, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua_pplot51/pplot_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/progressbar.loh b/iup/srclua5/loh/progressbar.loh
new file mode 100755
index 0000000..038ecb6
--- /dev/null
+++ b/iup/srclua5/loh/progressbar.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/progressbar.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/progressbar.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 17, 0, 0, 0, 64,112,114,111,
+103,114,101,115,115, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0,
+ 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,
+132,100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0,
+ 1, 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128,
+ 0, 13, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 12, 0, 0, 0,
+112,114,111,103,114,101,115,115, 98, 97,114, 0, 4, 7, 0, 0, 0,112, 97,114,
+101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0,
+ 0,102,117,110, 99,110, 97,109,101, 0, 4, 12, 0, 0, 0, 80,114,111,103,114,
+101,115,115, 66, 97,114, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0,
+ 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,
+101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0,
+ 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,
+133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0,
+ 4, 12, 0, 0, 0, 80,114,111,103,114,101,115,115, 66, 97,114, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0,
+ 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14,
+ 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/progressbar.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/progressbar_be32.loh b/iup/srclua5/loh/progressbar_be32.loh
new file mode 100755
index 0000000..f97d3cd
--- /dev/null
+++ b/iup/srclua5/loh/progressbar_be32.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/progressbar_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/progressbar_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 17, 64,112,114,111,
+103,114,101,115,115, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 0, 0, 0, 18, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192,
+ 69,129, 0, 64, 9,130, 65, 64, 9,131, 65,192, 9, 0, 0, 0, 74,132, 0, 64,
+ 9, 0, 0, 0,100,132,128, 64, 9, 0, 2,128, 69, 0, 0, 0,128, 1, 0, 64,
+ 92, 0, 2,192, 69, 0, 0, 0,128, 0, 3, 0,193, 1,128, 64, 92, 0,128, 0,
+ 30, 0, 0, 0, 13, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 12,
+112,114,111,103,114,101,115,115, 98, 97,114, 0, 4, 0, 0, 0, 7,112, 97,114,
+101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0,
+ 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0,
+ 9,102,117,110, 99,110, 97,109,101, 0, 4, 0, 0, 0, 12, 80,114,111,103,114,
+101,115,115, 66, 97,114, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0,
+ 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,
+101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0,
+ 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 2, 0, 3, 0, 0, 0, 4,
+ 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1,
+ 4, 0, 0, 0, 12, 80,114,111,103,114,101,115,115, 66, 97,114, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
+ 14, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0,
+ 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 8, 0, 0, 0, 17,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/progressbar_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/progressbar_be64.loh b/iup/srclua5/loh/progressbar_be64.loh
new file mode 100755
index 0000000..fab0e2d
--- /dev/null
+++ b/iup/srclua5/loh/progressbar_be64.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/progressbar_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/progressbar_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+ 64,112,114,111,103,114,101,115,115, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,
+128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0,
+ 0, 9, 64, 0,132,100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0,
+ 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128,
+ 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105,
+ 99,107, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,112,114,111,103,114,101,115,115,
+ 98, 97,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,
+101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 80,114,111,103,114,101,115,115, 66,
+ 97,114, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,
+133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0,
+ 4, 12, 0, 0, 0, 0, 0, 0, 0, 80,114,111,103,114,101,115,115, 66, 97,114,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0,
+ 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,
+115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,
+114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4,
+ 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8,
+ 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16,
+ 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/progressbar_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/progressbar_le64.loh b/iup/srclua5/loh/progressbar_le64.loh
new file mode 100755
index 0000000..f0bcaae
--- /dev/null
+++ b/iup/srclua5/loh/progressbar_le64.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/progressbar_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/progressbar_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+ 64,112,114,111,103,114,101,115,115, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,
+128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0,
+ 0, 9, 64, 0,132,100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0,
+ 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128,
+ 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105,
+ 99,107, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,112,114,111,103,114,101,115,115,
+ 98, 97,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,
+101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 80,114,111,103,114,101,115,115, 66,
+ 97,114, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,
+133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0,
+ 4, 12, 0, 0, 0, 0, 0, 0, 0, 80,114,111,103,114,101,115,115, 66, 97,114,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0,
+ 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,
+115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,
+114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4,
+ 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8,
+ 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16,
+ 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/progressbar_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/progressbar_le64w.loh b/iup/srclua5/loh/progressbar_le64w.loh
new file mode 100755
index 0000000..4c44c14
--- /dev/null
+++ b/iup/srclua5/loh/progressbar_le64w.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/progressbar_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/progressbar_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+ 64,112,114,111,103,114,101,115,115, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,
+128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0,
+ 0, 9, 64, 0,132,100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0,
+ 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128,
+ 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105,
+ 99,107, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,112,114,111,103,114,101,115,115,
+ 98, 97,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,
+101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 80,114,111,103,114,101,115,115, 66,
+ 97,114, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,
+ 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,
+133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0,
+ 4, 12, 0, 0, 0, 0, 0, 0, 0, 80,114,111,103,114,101,115,115, 66, 97,114,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0,
+ 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,
+115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,
+114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4,
+ 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8,
+ 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16,
+ 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/progressbar_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/radio.loh b/iup/srclua5/loh/radio.loh
new file mode 100755
index 0000000..3a77edf
--- /dev/null
+++ b/iup/srclua5/loh/radio.loh
@@ -0,0 +1,64 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/radio.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/radio.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,114, 97,100,
+105,111, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 21,
+ 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9,
+ 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 0, 0, 0, 0, 9,
+ 64,128,131,100, 64, 0, 0, 0, 0, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128,
+ 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92,
+ 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107,
+ 0, 4, 6, 0, 0, 0,114, 97,100,105,111, 0, 4, 7, 0, 0, 0,112, 97,114,
+101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0,105, 0, 4, 9, 0,
+ 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 20, 0, 0, 0, 67,114,101, 97,
+116,101, 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 14, 0, 0,
+ 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11,
+ 0, 0, 0, 25, 0, 0, 0, 1, 1, 0, 4, 31, 0, 0, 0, 26, 0, 0, 0, 22,
+192, 6,128, 70, 0, 64, 0, 70, 0,192, 0,133, 64, 0, 0, 23,128,128, 0, 22,
+128, 2,128, 65,128, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22,128, 4,128,132,
+ 0, 0, 0,134,192, 64, 1,198, 64, 0, 0,156, 64, 0, 1, 76,128,192, 0, 22,
+128,253,127, 22,192, 2,128, 70, 0, 64, 0,133, 0, 1, 0, 23,128,128, 0, 22,
+ 0, 1,128, 68, 0, 0, 0, 70,192,192, 0,134,128, 64, 0, 92, 64, 0, 1, 22,
+128, 0,128, 69, 64, 1, 0,128, 0, 0, 0, 92, 64, 0, 1, 30, 0,128, 0, 6,
+ 0, 0, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0,
+ 66, 79, 88, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 20, 0, 0, 0, 67,114,
+101, 97,116,101, 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 9,
+ 0, 0, 0, 73, 85, 80, 70, 82, 65, 77, 69, 0, 4, 16, 0, 0, 0,105,104, 97,
+110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0,
+ 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
+ 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0,
+ 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0,
+ 0, 25, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0,111, 98,106, 0, 0, 0, 0,
+ 0, 30, 0, 0, 0, 2, 0, 0, 0,105, 0, 8, 0, 0, 0, 17, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 0, 0, 0, 0, 27, 0, 0, 0,
+ 30, 0, 0, 0, 1, 2, 0, 4, 9, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,
+198, 64,192, 0,156, 64, 0, 1,133,128, 0, 0,198, 64,192, 0,157, 0, 0, 1,
+158, 0, 0, 0, 30, 0,128, 0, 3, 0, 0, 0, 4, 20, 0, 0, 0, 67,114,101,
+ 97,116,101, 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 3, 0, 0,
+ 0, 0, 0, 0,240, 63, 4, 6, 0, 0, 0, 82, 97,100,105,111, 0, 0, 0, 0,
+ 0, 9, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0,
+ 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0,
+ 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 8,
+ 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 8, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 21, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 8, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 11, 0, 0, 0, 30, 0, 0, 0,
+ 30, 0, 0, 0, 27, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0,
+ 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0,
+ 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 20, 0, 0,
+ 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/radio.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/radio_be32.loh b/iup/srclua5/loh/radio_be32.loh
new file mode 100755
index 0000000..5e063f0
--- /dev/null
+++ b/iup/srclua5/loh/radio_be32.loh
@@ -0,0 +1,64 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/radio_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/radio_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,114, 97,100,
+105,111, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0,
+ 0, 0, 21, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130,
+ 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100, 0, 0, 0, 0,131,
+128, 64, 9, 0, 0, 64,100, 0, 0, 0, 0,132, 0, 64, 9, 0, 2, 64, 69, 0,
+ 0, 0,128, 1, 0, 64, 92, 0, 2,128, 69, 0, 0, 0,128, 0, 2,192,193, 1,
+128, 64, 92, 0,128, 0, 30, 0, 0, 0, 12, 4, 0, 0, 0, 5,110,105, 99,107,
+ 0, 4, 0, 0, 0, 6,114, 97,100,105,111, 0, 4, 0, 0, 0, 7,112, 97,114,
+101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0,
+ 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2,105, 0, 4, 0, 0,
+ 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 20, 67,114,101, 97,
+116,101, 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 0, 0, 0,
+ 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0,
+ 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,
+105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0, 11, 0, 0, 0, 25, 1, 1, 0, 4, 0, 0, 0, 31, 0, 0, 0, 26,128,
+ 6,192, 22, 0, 64, 0, 70, 0,192, 0, 70, 0, 0, 64,133, 0,128,128, 23,128,
+ 2,128, 22, 0, 0,128, 65, 0, 0, 64,134, 0, 0, 0,154,128, 4,128, 22, 0,
+ 0, 0,132, 1, 64,192,134, 0, 0, 64,198, 1, 0, 64,156, 0,192,128, 76,127,
+253,128, 22,128, 2,192, 22, 0, 64, 0, 70, 0, 1, 0,133, 0,128,128, 23,128,
+ 1, 0, 22, 0, 0, 0, 68, 0,192,192, 70, 0, 64,128,134, 1, 0, 64, 92,128,
+ 0,128, 22, 0, 1, 64, 69, 0, 0, 0,128, 1, 0, 64, 92, 0,128, 0, 30, 0,
+ 0, 0, 6, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 4,
+ 66, 79, 88, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 20, 67,114,
+101, 97,116,101, 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 0,
+ 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, 4, 0, 0, 0, 16,105,104, 97,
+110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
+ 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
+ 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0,
+ 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0,
+ 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0,
+ 22, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 4,111, 98,106, 0, 0, 0, 0,
+ 0, 0, 0, 0, 30, 0, 0, 0, 2,105, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0,
+ 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 0, 0, 0, 0, 27,
+ 0, 0, 0, 30, 1, 2, 0, 4, 0, 0, 0, 9, 0, 0, 0,132, 1, 64, 0,134,
+ 0,192, 64,198, 1, 0, 64,156, 0, 0,128,133, 0,192, 64,198, 1, 0, 0,157,
+ 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 3, 4, 0, 0, 0, 20, 67,114,101,
+ 97,116,101, 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 3, 63,240,
+ 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 6, 82, 97,100,105,111, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0,
+ 28, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0,
+ 30, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0,
+ 0, 0, 8, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,
+ 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 21, 0, 0, 0, 4,
+ 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8,
+ 0, 0, 0, 8, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 11, 0, 0, 0, 30,
+ 0, 0, 0, 30, 0, 0, 0, 27, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33,
+ 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0,
+ 20, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/radio_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/radio_be64.loh b/iup/srclua5/loh/radio_be64.loh
new file mode 100755
index 0000000..f84561b
--- /dev/null
+++ b/iup/srclua5/loh/radio_be64.loh
@@ -0,0 +1,70 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/radio_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/radio_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,114, 97,100,105,111, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 21, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 0,
+ 0, 0, 0, 9, 64,128,131,100, 64, 0, 0, 0, 0, 0, 0, 9, 64, 0,132, 69,
+ 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,
+192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,114, 97,
+100,105,111, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0,
+ 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97,
+ 99,107, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,104,
+105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0,
+ 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,
+115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,
+101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 25,
+ 0, 0, 0, 1, 1, 0, 4, 31, 0, 0, 0, 26, 0, 0, 0, 22,192, 6,128, 70,
+ 0, 64, 0, 70, 0,192, 0,133, 64, 0, 0, 23,128,128, 0, 22,128, 2,128, 65,
+128, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22,128, 4,128,132, 0, 0, 0,134,
+192, 64, 1,198, 64, 0, 0,156, 64, 0, 1, 76,128,192, 0, 22,128,253,127, 22,
+192, 2,128, 70, 0, 64, 0,133, 0, 1, 0, 23,128,128, 0, 22, 0, 1,128, 68,
+ 0, 0, 0, 70,192,192, 0,134,128, 64, 0, 92, 64, 0, 1, 22,128, 0,128, 69,
+ 64, 1, 0,128, 0, 0, 0, 92, 64, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0,
+ 0, 0, 0, 0, 66, 79, 88, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 20, 0,
+ 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110,
+ 78, 97,109,101,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73, 85, 80, 70, 82,
+ 65, 77, 69, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101,
+ 95,115,101,116,110, 97,109,101, 0, 0, 0, 0, 0, 31, 0, 0, 0, 12, 0, 0,
+ 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0,
+ 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0,
+ 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0,
+ 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 25, 0, 0,
+ 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,111, 98,106, 0, 0, 0, 0,
+ 0, 30, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 8, 0, 0, 0, 17,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 1, 2, 0, 4,
+ 9, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,198, 64,192, 0,156, 64, 0, 1,
+133,128, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0,
+ 3, 0, 0, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,
+104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 3, 0, 0, 0, 0, 0, 0,
+240, 63, 4, 6, 0, 0, 0, 0, 0, 0, 0, 82, 97,100,105,111, 0, 0, 0, 0,
+ 0, 9, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0,
+ 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0,
+ 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0,
+ 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0,
+ 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,
+116,114,108, 0, 21, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0,
+ 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 11, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 27, 0, 0, 0,
+ 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0,
+ 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0,
+ 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/radio_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/radio_le64.loh b/iup/srclua5/loh/radio_le64.loh
new file mode 100755
index 0000000..daf1502
--- /dev/null
+++ b/iup/srclua5/loh/radio_le64.loh
@@ -0,0 +1,70 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/radio_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/radio_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,114, 97,100,105,111, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 21, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 0,
+ 0, 0, 0, 9, 64,128,131,100, 64, 0, 0, 0, 0, 0, 0, 9, 64, 0,132, 69,
+ 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,
+192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,114, 97,
+100,105,111, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0,
+ 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97,
+ 99,107, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,104,
+105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0,
+ 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,
+115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,
+101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 25,
+ 0, 0, 0, 1, 1, 0, 4, 31, 0, 0, 0, 26, 0, 0, 0, 22,192, 6,128, 70,
+ 0, 64, 0, 70, 0,192, 0,133, 64, 0, 0, 23,128,128, 0, 22,128, 2,128, 65,
+128, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22,128, 4,128,132, 0, 0, 0,134,
+192, 64, 1,198, 64, 0, 0,156, 64, 0, 1, 76,128,192, 0, 22,128,253,127, 22,
+192, 2,128, 70, 0, 64, 0,133, 0, 1, 0, 23,128,128, 0, 22, 0, 1,128, 68,
+ 0, 0, 0, 70,192,192, 0,134,128, 64, 0, 92, 64, 0, 1, 22,128, 0,128, 69,
+ 64, 1, 0,128, 0, 0, 0, 92, 64, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0,
+ 0, 0, 0, 0, 66, 79, 88, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 20, 0,
+ 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110,
+ 78, 97,109,101,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73, 85, 80, 70, 82,
+ 65, 77, 69, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101,
+ 95,115,101,116,110, 97,109,101, 0, 0, 0, 0, 0, 31, 0, 0, 0, 12, 0, 0,
+ 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0,
+ 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0,
+ 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0,
+ 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 25, 0, 0,
+ 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,111, 98,106, 0, 0, 0, 0,
+ 0, 30, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 8, 0, 0, 0, 17,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 1, 2, 0, 4,
+ 9, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,198, 64,192, 0,156, 64, 0, 1,
+133,128, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0,
+ 3, 0, 0, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,
+104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 3, 0, 0, 0, 0, 0, 0,
+240, 63, 4, 6, 0, 0, 0, 0, 0, 0, 0, 82, 97,100,105,111, 0, 0, 0, 0,
+ 0, 9, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0,
+ 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0,
+ 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0,
+ 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0,
+ 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,
+116,114,108, 0, 21, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0,
+ 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 11, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 27, 0, 0, 0,
+ 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0,
+ 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0,
+ 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/radio_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/radio_le64w.loh b/iup/srclua5/loh/radio_le64w.loh
new file mode 100755
index 0000000..5ada88f
--- /dev/null
+++ b/iup/srclua5/loh/radio_le64w.loh
@@ -0,0 +1,70 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/radio_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/radio_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,114, 97,100,105,111, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 21, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 0,
+ 0, 0, 0, 9, 64,128,131,100, 64, 0, 0, 0, 0, 0, 0, 9, 64, 0,132, 69,
+ 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,
+192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,114, 97,
+100,105,111, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0,
+ 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97,
+ 99,107, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,104,
+105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0,
+ 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,
+115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,
+101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 25,
+ 0, 0, 0, 1, 1, 0, 4, 31, 0, 0, 0, 26, 0, 0, 0, 22,192, 6,128, 70,
+ 0, 64, 0, 70, 0,192, 0,133, 64, 0, 0, 23,128,128, 0, 22,128, 2,128, 65,
+128, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22,128, 4,128,132, 0, 0, 0,134,
+192, 64, 1,198, 64, 0, 0,156, 64, 0, 1, 76,128,192, 0, 22,128,253,127, 22,
+192, 2,128, 70, 0, 64, 0,133, 0, 1, 0, 23,128,128, 0, 22, 0, 1,128, 68,
+ 0, 0, 0, 70,192,192, 0,134,128, 64, 0, 92, 64, 0, 1, 22,128, 0,128, 69,
+ 64, 1, 0,128, 0, 0, 0, 92, 64, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4,
+ 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0,
+ 0, 0, 0, 0, 66, 79, 88, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 20, 0,
+ 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110,
+ 78, 97,109,101,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73, 85, 80, 70, 82,
+ 65, 77, 69, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101,
+ 95,115,101,116,110, 97,109,101, 0, 0, 0, 0, 0, 31, 0, 0, 0, 12, 0, 0,
+ 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0,
+ 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0,
+ 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0,
+ 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 25, 0, 0,
+ 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,111, 98,106, 0, 0, 0, 0,
+ 0, 30, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 8, 0, 0, 0, 17,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 1, 2, 0, 4,
+ 9, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,198, 64,192, 0,156, 64, 0, 1,
+133,128, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0,
+ 3, 0, 0, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,
+104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 3, 0, 0, 0, 0, 0, 0,
+240, 63, 4, 6, 0, 0, 0, 0, 0, 0, 0, 82, 97,100,105,111, 0, 0, 0, 0,
+ 0, 9, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0,
+ 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0,
+ 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0,
+ 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0,
+ 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,
+116,114,108, 0, 21, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0,
+ 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 11, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 27, 0, 0, 0,
+ 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0,
+ 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0,
+ 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/radio_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/sbox.loh b/iup/srclua5/loh/sbox.loh
new file mode 100755
index 0000000..250c754
--- /dev/null
+++ b/iup/srclua5/loh/sbox.loh
@@ -0,0 +1,37 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/sbox.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/sbox.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,115, 98,111,
+120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 17, 0,
+ 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131, 69, 0,
+ 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, 0, 0,193,128,
+ 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0,115, 98,111,120, 0, 4, 7, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0,105, 0, 4,
+ 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 99,114,
+101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112,
+ 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112,
+ 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0,
+ 13, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,
+157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0,
+ 0, 83, 98,111,120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5,
+ 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13,
+ 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0,
+ 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0,
+ 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/sbox.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/sbox_be32.loh b/iup/srclua5/loh/sbox_be32.loh
new file mode 100755
index 0000000..6ab085b
--- /dev/null
+++ b/iup/srclua5/loh/sbox_be32.loh
@@ -0,0 +1,37 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/sbox_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/sbox_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,115, 98,111,
+120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, 2,
+ 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, 0, 0,128, 0, 2,
+128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0, 0, 5,110,
+105, 99,107, 0, 4, 0, 0, 0, 5,115, 98,111,120, 0, 4, 0, 0, 0, 7,112,
+ 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0,
+ 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2,105, 0, 4,
+ 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 14, 99,114,
+101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112,
+ 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112,
+ 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11,
+ 0, 0, 0, 13, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192, 64,198,
+ 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0,
+ 5, 83, 98,111,120, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0,
+ 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,
+ 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0,
+ 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
+ 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/sbox_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/sbox_be64.loh b/iup/srclua5/loh/sbox_be64.loh
new file mode 100755
index 0000000..0acf695
--- /dev/null
+++ b/iup/srclua5/loh/sbox_be64.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/sbox_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/sbox_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0,
+ 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,115, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,
+ 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+ 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 4,
+ 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0,
+ 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 83, 98,111,
+120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 12,
+ 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0,
+ 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0,
+ 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
+ 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0,
+ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/sbox_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/sbox_le64.loh b/iup/srclua5/loh/sbox_le64.loh
new file mode 100755
index 0000000..88cb639
--- /dev/null
+++ b/iup/srclua5/loh/sbox_le64.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/sbox_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/sbox_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0,
+ 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,115, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,
+ 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+ 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 4,
+ 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0,
+ 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 83, 98,111,
+120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 12,
+ 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0,
+ 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0,
+ 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
+ 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0,
+ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/sbox_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/sbox_le64w.loh b/iup/srclua5/loh/sbox_le64w.loh
new file mode 100755
index 0000000..440c7f2
--- /dev/null
+++ b/iup/srclua5/loh/sbox_le64w.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/sbox_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/sbox_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0,
+ 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,115, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,
+ 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+ 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 4,
+ 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0,
+ 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 83, 98,111,
+120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 12,
+ 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0,
+ 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0,
+ 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
+ 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0,
+ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/sbox_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/separator.loh b/iup/srclua5/loh/separator.loh
new file mode 100755
index 0000000..d27e0d7
--- /dev/null
+++ b/iup/srclua5/loh/separator.loh
@@ -0,0 +1,36 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/separator.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/separator.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 15, 0, 0, 0, 64,115,101,112,
+ 97,114, 97,116,111,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9,
+ 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128,
+ 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4,
+ 5, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0, 0, 0,115,101,112, 97,114, 97,
+116,111,114, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116,
+ 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115,
+ 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0,
+ 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0,
+ 0, 4, 10, 0, 0, 0, 83,101,112, 97,114, 97,116,111,114, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0,
+ 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0,
+ 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 5, 0,
+ 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/separator.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/separator_be32.loh b/iup/srclua5/loh/separator_be32.loh
new file mode 100755
index 0000000..d262bf7
--- /dev/null
+++ b/iup/srclua5/loh/separator_be32.loh
@@ -0,0 +1,36 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/separator_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/separator_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 15, 64,115,101,112,
+ 97,114, 97,116,111,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 0, 0, 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129,
+ 0, 64, 9,130, 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,
+128, 64, 9, 0, 2, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0,
+ 0, 0,128, 0, 2,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4,
+ 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 10,115,101,112, 97,114, 97,
+116,111,114, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0,
+ 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,
+110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116,
+ 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115,
+ 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 2, 0, 3, 0, 0, 0,
+ 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0,
+ 1, 4, 0, 0, 0, 10, 83,101,112, 97,114, 97,116,111,114, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13,
+ 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0,
+ 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0,
+ 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0,
+ 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/separator_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/separator_be64.loh b/iup/srclua5/loh/separator_be64.loh
new file mode 100755
index 0000000..5d4eb22
--- /dev/null
+++ b/iup/srclua5/loh/separator_be64.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/separator_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/separator_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64,115,101,112, 97,114, 97,116,111,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,
+192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100,
+ 0, 0, 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+ 64, 2, 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0,
+ 0, 0, 0, 0, 0, 0,115,101,112, 97,114, 97,116,111,114, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0,
+ 0, 13, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0,
+ 0, 0, 83,101,112, 97,114, 97,116,111,114, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0,
+ 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16,
+ 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/separator_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/separator_le64.loh b/iup/srclua5/loh/separator_le64.loh
new file mode 100755
index 0000000..53aa721
--- /dev/null
+++ b/iup/srclua5/loh/separator_le64.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/separator_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/separator_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64,115,101,112, 97,114, 97,116,111,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,
+192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100,
+ 0, 0, 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+ 64, 2, 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0,
+ 0, 0, 0, 0, 0, 0,115,101,112, 97,114, 97,116,111,114, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0,
+ 0, 13, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0,
+ 0, 0, 83,101,112, 97,114, 97,116,111,114, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0,
+ 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16,
+ 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/separator_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/separator_le64w.loh b/iup/srclua5/loh/separator_le64w.loh
new file mode 100755
index 0000000..c0f7c76
--- /dev/null
+++ b/iup/srclua5/loh/separator_le64w.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/separator_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/separator_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 64,115,101,112, 97,114, 97,116,111,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,
+192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100,
+ 0, 0, 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+ 64, 2, 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0,
+ 0, 0, 0, 0, 0, 0,115,101,112, 97,114, 97,116,111,114, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0,
+ 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,
+103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,
+108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0,
+ 0, 13, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128,
+ 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0,
+ 0, 0, 83,101,112, 97,114, 97,116,111,114, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0,
+ 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0,
+ 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16,
+ 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/separator_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/spin.loh b/iup/srclua5/loh/spin.loh
new file mode 100755
index 0000000..1a19ff2
--- /dev/null
+++ b/iup/srclua5/loh/spin.loh
@@ -0,0 +1,38 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/spin.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/spin.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,115,112,105,
+110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 18, 0,
+ 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0,
+ 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5,
+ 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0,115,112,105,110, 0, 4, 7,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69,
+ 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0,
+ 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0,
+ 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0, 0,110, 0, 4, 14, 0, 0,
+ 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12,
+ 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 13,
+ 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198,
+ 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4,
+ 5, 0, 0, 0, 83,112,105,110, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0,
+ 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,
+115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9,
+ 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18,
+ 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0,
+ 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spin.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/spin_be32.loh b/iup/srclua5/loh/spin_be32.loh
new file mode 100755
index 0000000..345cb29
--- /dev/null
+++ b/iup/srclua5/loh/spin_be32.loh
@@ -0,0 +1,38 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/spin_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/spin_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,115,112,105,
+110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 18, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9, 0, 0, 0,100,132,128,
+ 64, 9, 0, 2,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,192, 69, 0, 0,
+ 0,128, 0, 3, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 13, 4, 0,
+ 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 5,115,112,105,110, 0, 4, 0,
+ 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69,
+ 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0,
+ 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0,
+ 8,115,112,105,110, 95, 99, 98, 0, 4, 0, 0, 0, 2,110, 0, 4, 0, 0, 0,
+ 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,
+105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0,
+ 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,
+105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 13, 0, 0, 0, 15, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,
+192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4,
+ 0, 0, 0, 5, 83,112,105,110, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,
+ 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,
+115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0,
+ 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0,
+ 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0,
+ 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0,
+ 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spin_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/spin_be64.loh b/iup/srclua5/loh/spin_be64.loh
new file mode 100755
index 0000000..7980327
--- /dev/null
+++ b/iup/srclua5/loh/spin_be64.loh
@@ -0,0 +1,42 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/spin_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/spin_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,100, 0,
+ 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192,
+ 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0,
+ 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0,115,112,105,110, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69,
+ 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0,
+ 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+ 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,112,105,
+110, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 14, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,
+105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,
+116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,
+119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
+ 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198,
+ 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0, 83,112,105,110, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0,
+ 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10,
+ 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spin_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/spin_le64.loh b/iup/srclua5/loh/spin_le64.loh
new file mode 100755
index 0000000..e171149
--- /dev/null
+++ b/iup/srclua5/loh/spin_le64.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/spin_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/spin_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,
+194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,
+128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0,
+ 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 10, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112,115,112,105,110, 46,104, 0, 4, 14, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,
+105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,
+116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,
+119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
+ 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198,
+ 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0, 83,112,105,110, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 15, 0, 0,
+ 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10,
+ 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18,
+ 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19,
+ 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,
+116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spin_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/spin_le64w.loh b/iup/srclua5/loh/spin_le64w.loh
new file mode 100755
index 0000000..eb5820d
--- /dev/null
+++ b/iup/srclua5/loh/spin_le64w.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/spin_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/spin_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,
+194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,
+128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0,
+ 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0,
+ 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 10, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112,115,112,105,110, 46,104, 0, 4, 14, 0, 0,
+ 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,
+105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,
+116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,
+119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
+ 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198,
+ 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0, 83,112,105,110, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 15, 0, 0,
+ 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10,
+ 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18,
+ 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19,
+ 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,
+116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spin_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/spinbox.loh b/iup/srclua5/loh/spinbox.loh
new file mode 100755
index 0000000..b8c060d
--- /dev/null
+++ b/iup/srclua5/loh/spinbox.loh
@@ -0,0 +1,38 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/spinbox.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/spinbox.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 13, 0, 0, 0, 64,115,112,105,
+110, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,
+129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,100, 0, 0,
+ 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2,
+ 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0,
+ 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,115,112,105,110,
+ 98,111,120, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 2, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97,
+ 99,107, 0, 4, 8, 0, 0, 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0,
+ 0,110, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,
+116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,
+100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,
+115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0,
+ 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,
+128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 83,112,105,110, 98,111,120, 0, 3,
+ 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0,
+ 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0,
+ 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0,
+ 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0,
+ 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0,
+ 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spinbox.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/spinbox_be32.loh b/iup/srclua5/loh/spinbox_be32.loh
new file mode 100755
index 0000000..84a7f50
--- /dev/null
+++ b/iup/srclua5/loh/spinbox_be32.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/spinbox_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/spinbox_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 13, 64,115,112,105,
+110, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 4, 0, 0, 0, 19, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64,
+ 9,130, 65, 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9,132,194,128,
+ 9, 0, 0, 0,100,133,128, 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1, 0, 64,
+ 92, 0, 3, 64, 69, 0, 0, 0,128, 0, 3,128,193, 1,128, 64, 92, 0,128, 0,
+ 30, 0, 0, 0, 15, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 8,
+115,112,105,110, 98,111,120, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0,
+ 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101,
+ 97,116,105,111,110, 0, 4, 0, 0, 0, 2,105, 0, 4, 0, 0, 0, 9, 99, 97,
+108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 8,115,112,105,110, 95, 99, 98, 0,
+ 4, 0, 0, 0, 2,110, 0, 4, 0, 0, 0, 8,105,110, 99,108,117,100,101, 0,
+ 4, 0, 0, 0, 10,105,117,112,115,112,105,110, 46,104, 0, 4, 0, 0, 0, 14,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0,
+ 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,
+117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 14, 0, 0, 0, 16, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192,
+ 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0,
+ 0, 0, 8, 83,112,105,110, 98,111,120, 0, 3, 63,240, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15,
+ 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0,
+ 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0,
+ 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0,
+ 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,
+114,108, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spinbox_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/spinbox_be64.loh b/iup/srclua5/loh/spinbox_be64.loh
new file mode 100755
index 0000000..6669e34
--- /dev/null
+++ b/iup/srclua5/loh/spinbox_be64.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/spinbox_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/spinbox_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 64,115,112,105,110, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0,
+ 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,
+131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0,
+ 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128,
+ 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105,
+ 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 98,111,120, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,105,
+ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,
+117,100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,117,112,115,112,105,110,
+ 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,
+101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,
+103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0,
+ 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,
+128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83,112,105,110, 98,
+111,120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0,
+ 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0,
+ 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spinbox_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/spinbox_le64.loh b/iup/srclua5/loh/spinbox_le64.loh
new file mode 100755
index 0000000..bca8d74
--- /dev/null
+++ b/iup/srclua5/loh/spinbox_le64.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/spinbox_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/spinbox_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 64,115,112,105,110, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0,
+ 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,
+131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0,
+ 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128,
+ 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105,
+ 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 98,111,120, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,105,
+ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,
+117,100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,117,112,115,112,105,110,
+ 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,
+101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,
+103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0,
+ 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,
+128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83,112,105,110, 98,
+111,120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0,
+ 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0,
+ 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spinbox_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/spinbox_le64w.loh b/iup/srclua5/loh/spinbox_le64w.loh
new file mode 100755
index 0000000..2293c4a
--- /dev/null
+++ b/iup/srclua5/loh/spinbox_le64w.loh
@@ -0,0 +1,44 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/spinbox_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/spinbox_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 64,115,112,105,110, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0,
+ 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,
+131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0,
+ 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128,
+ 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105,
+ 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 98,111,120, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,105,
+ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0,
+ 0, 0, 0, 0, 0,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,
+117,100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,117,112,115,112,105,110,
+ 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,
+101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,
+103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0,
+ 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,
+128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83,112,105,110, 98,
+111,120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0,
+ 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0,
+ 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spinbox_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/submenu.loh b/iup/srclua5/loh/submenu.loh
new file mode 100755
index 0000000..9be8849
--- /dev/null
+++ b/iup/srclua5/loh/submenu.loh
@@ -0,0 +1,38 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/submenu.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/submenu.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 13, 0, 0, 0, 64,115,117, 98,
+109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,
+129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,
+131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, 0,
+ 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, 0,
+ 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,115,117, 98,109,101,110,117, 0,
+ 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 3,
+ 0, 0, 0, 83,105, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0,
+ 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 5, 6, 0, 0, 0,133,
+ 0, 0, 0,198, 64,192, 0, 6,129,192, 0,157, 0,128, 1,158, 0, 0, 0, 30,
+ 0,128, 0, 3, 0, 0, 0, 4, 8, 0, 0, 0, 83,117, 98,109,101,110,117, 0,
+ 4, 6, 0, 0, 0,116,105,116,108,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63,
+ 0, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0,
+ 99,108, 97,115,115, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 97,114,
+103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0,
+ 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0,
+ 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0,
+ 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0,
+ 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7,
+ 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/submenu.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/submenu_be32.loh b/iup/srclua5/loh/submenu_be32.loh
new file mode 100755
index 0000000..8c727dc
--- /dev/null
+++ b/iup/srclua5/loh/submenu_be32.loh
@@ -0,0 +1,38 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/submenu_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/submenu_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 13, 64,115,117, 98,
+109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 4, 0, 0, 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64,
+ 9,130, 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64,
+ 9, 0, 2, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, 0, 0,
+128, 0, 2,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0,
+ 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0,
+ 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68,
+ 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0,
+ 0, 0, 3, 83,105, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0,
+ 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4,
+ 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4,
+ 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 2, 0, 5, 0, 0, 0, 6, 0,
+ 0, 0,133, 0,192, 64,198, 0,192,129, 6, 1,128, 0,157, 0, 0, 0,158, 0,
+128, 0, 30, 0, 0, 0, 3, 4, 0, 0, 0, 8, 83,117, 98,109,101,110,117, 0,
+ 4, 0, 0, 0, 6,116,105,116,108,101, 0, 3, 63,240, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15,
+ 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6,
+ 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 97,114,
+103, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0,
+ 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0,
+ 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0,
+ 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/submenu_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/submenu_be64.loh b/iup/srclua5/loh/submenu_be64.loh
new file mode 100755
index 0000000..959cf94
--- /dev/null
+++ b/iup/srclua5/loh/submenu_be64.loh
@@ -0,0 +1,42 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/submenu_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/submenu_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 64,115,117, 98,109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0,
+ 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0,
+ 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2,
+ 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83,105, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0,
+ 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,
+115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,
+101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16,
+ 0, 0, 0, 0, 2, 0, 5, 6, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6,
+129,192, 0,157, 0,128, 1,158, 0, 0, 0, 30, 0,128, 0, 3, 0, 0, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0, 83,117, 98,109,101,110,117, 0, 4, 6, 0, 0,
+ 0, 0, 0, 0, 0,116,105,116,108,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63,
+ 0, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0,
+ 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0,
+ 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0,
+ 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/submenu_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/submenu_le64.loh b/iup/srclua5/loh/submenu_le64.loh
new file mode 100755
index 0000000..d60c660
--- /dev/null
+++ b/iup/srclua5/loh/submenu_le64.loh
@@ -0,0 +1,42 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/submenu_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/submenu_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 64,115,117, 98,109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0,
+ 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0,
+ 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2,
+ 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83,105, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0,
+ 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,
+115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,
+101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16,
+ 0, 0, 0, 0, 2, 0, 5, 6, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6,
+129,192, 0,157, 0,128, 1,158, 0, 0, 0, 30, 0,128, 0, 3, 0, 0, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0, 83,117, 98,109,101,110,117, 0, 4, 6, 0, 0,
+ 0, 0, 0, 0, 0,116,105,116,108,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63,
+ 0, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0,
+ 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0,
+ 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0,
+ 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/submenu_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/submenu_le64w.loh b/iup/srclua5/loh/submenu_le64w.loh
new file mode 100755
index 0000000..7634bdf
--- /dev/null
+++ b/iup/srclua5/loh/submenu_le64w.loh
@@ -0,0 +1,42 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/submenu_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/submenu_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 64,115,117, 98,109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0,
+ 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0,
+ 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2,
+ 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,
+ 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83,105, 0, 4, 9, 0, 0, 0, 0,
+ 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0,
+ 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,
+115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,
+101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16,
+ 0, 0, 0, 0, 2, 0, 5, 6, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6,
+129,192, 0,157, 0,128, 1,158, 0, 0, 0, 30, 0,128, 0, 3, 0, 0, 0, 4,
+ 8, 0, 0, 0, 0, 0, 0, 0, 83,117, 98,109,101,110,117, 0, 4, 6, 0, 0,
+ 0, 0, 0, 0, 0,116,105,116,108,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63,
+ 0, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
+ 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0,
+ 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0,
+ 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0,
+ 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0,
+ 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/submenu_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/tabs.loh b/iup/srclua5/loh/tabs.loh
new file mode 100755
index 0000000..0b9ca1c
--- /dev/null
+++ b/iup/srclua5/loh/tabs.loh
@@ -0,0 +1,51 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/tabs.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/tabs.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,116, 97, 98,
+115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 20, 0,
+ 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,194,132, 9, 0,
+195,133,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,128, 1, 30, 0,
+128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0,
+ 0,116, 97, 98,115, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 2, 0, 0, 0,118, 0, 4, 9, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 13, 0, 0, 0,116, 97, 98, 99,104, 97,110,103,101, 95,
+ 99, 98, 0, 4, 3, 0, 0, 0,105,105, 0, 4, 9, 0, 0, 0,102,117,110, 99,
+110, 97,109,101, 0, 4, 6, 0, 0, 0, 84, 97, 98,115,118, 0, 4, 11, 0, 0,
+ 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4,207, 0, 0, 0,115,116, 97,
+116,105, 99, 32,105,110,116, 32, 84, 97, 98,115,118, 40,108,117, 97, 95, 83,116,
+ 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32,
+ 42, 42,104,108,105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101,
+ 99,107,105,104, 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49,
+ 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,
+112, 84, 97, 98,115,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,
+108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59,
+ 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,
+101, 95,114, 97,119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,
+104,108,105,115,116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,
+125, 10, 10, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,
+105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,
+115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 4, 5,
+ 0, 0, 0,133, 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30,
+ 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 84, 97, 98,115,118, 0, 0, 0,
+ 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,
+ 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0,
+ 10, 0, 0, 0, 11, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0,
+ 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0,
+ 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0,
+ 99,116,114,108, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tabs.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/tabs_be32.loh b/iup/srclua5/loh/tabs_be32.loh
new file mode 100755
index 0000000..3a88da2
--- /dev/null
+++ b/iup/srclua5/loh/tabs_be32.loh
@@ -0,0 +1,51 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/tabs_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/tabs_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,116, 97, 98,
+115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 20, 0, 1,128, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9,132,194,128, 9,133,195,
+ 0, 9, 0, 0, 0,100,134,128, 64, 9, 0, 3,128, 69, 0, 0, 0,128, 1, 0,
+ 64, 92, 0, 3,192, 69, 0, 0, 0,128, 0, 4, 0,193, 1,128, 64, 92, 0,128,
+ 0, 30, 0, 0, 0, 17, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0,
+ 5,116, 97, 98,115, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0,
+ 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,
+105,111,110, 0, 4, 0, 0, 0, 2,118, 0, 4, 0, 0, 0, 9, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 0, 0, 0, 13,116, 97, 98, 99,104, 97,110,103,101, 95,
+ 99, 98, 0, 4, 0, 0, 0, 3,105,105, 0, 4, 0, 0, 0, 9,102,117,110, 99,
+110, 97,109,101, 0, 4, 0, 0, 0, 6, 84, 97, 98,115,118, 0, 4, 0, 0, 0,
+ 11, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 0, 0, 0,207,115,116, 97,
+116,105, 99, 32,105,110,116, 32, 84, 97, 98,115,118, 40,108,117, 97, 95, 83,116,
+ 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32,
+ 42, 42,104,108,105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101,
+ 99,107,105,104, 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49,
+ 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,
+112, 84, 97, 98,115,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,
+108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59,
+ 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,
+101, 95,114, 97,119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,
+104,108,105,115,116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,
+125, 10, 10, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,
+105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,
+115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 2, 0, 4, 0,
+ 0, 0, 5, 0, 0, 0,133, 0,128, 0,192, 1, 0, 0,157, 0, 0, 0,158, 0,
+128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 6, 84, 97, 98,115,118, 0, 0, 0,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0,
+ 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9,
+ 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26,
+ 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31,
+ 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5,
+ 99,116,114,108, 0, 0, 0, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tabs_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/tabs_be64.loh b/iup/srclua5/loh/tabs_be64.loh
new file mode 100755
index 0000000..536d55a
--- /dev/null
+++ b/iup/srclua5/loh/tabs_be64.loh
@@ -0,0 +1,56 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/tabs_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/tabs_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,116, 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 20, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,
+194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0,
+ 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,
+128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,115, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0,
+ 0, 0, 0, 0, 0, 0,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0, 4,
+ 3, 0, 0, 0, 0, 0, 0, 0,105,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84, 97,
+ 98,115,118, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,
+117,110, 99, 0, 4,207, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,105, 99, 32,
+105,110,116, 32, 84, 97, 98,115,118, 40,108,117, 97, 95, 83,116, 97,116,101, 32,
+ 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42,104,108,
+105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,105,104,
+ 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59, 10, 32,
+ 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,112, 84, 97, 98,
+115,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,
+112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,105,
+117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,114, 97,
+119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,104,108,105,115,
+116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10, 10, 0,
+ 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133,
+ 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 1,
+ 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84, 97, 98,115,118, 0, 0, 0,
+ 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0,
+ 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
+ 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 23, 0, 0, 0,
+ 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0,
+ 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0,
+ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 10, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tabs_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/tabs_le64.loh b/iup/srclua5/loh/tabs_le64.loh
new file mode 100755
index 0000000..9d6ecff
--- /dev/null
+++ b/iup/srclua5/loh/tabs_le64.loh
@@ -0,0 +1,56 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/tabs_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/tabs_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,116, 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 20, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,
+194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0,
+ 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,
+128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,115, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0,
+ 0, 0, 0, 0, 0, 0,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0, 4,
+ 3, 0, 0, 0, 0, 0, 0, 0,105,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84, 97,
+ 98,115,118, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,
+117,110, 99, 0, 4,207, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,105, 99, 32,
+105,110,116, 32, 84, 97, 98,115,118, 40,108,117, 97, 95, 83,116, 97,116,101, 32,
+ 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42,104,108,
+105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,105,104,
+ 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59, 10, 32,
+ 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,112, 84, 97, 98,
+115,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,
+112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,105,
+117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,114, 97,
+119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,104,108,105,115,
+116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10, 10, 0,
+ 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133,
+ 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 1,
+ 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84, 97, 98,115,118, 0, 0, 0,
+ 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0,
+ 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
+ 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 23, 0, 0, 0,
+ 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0,
+ 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0,
+ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 10, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tabs_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/tabs_le64w.loh b/iup/srclua5/loh/tabs_le64w.loh
new file mode 100755
index 0000000..346d99f
--- /dev/null
+++ b/iup/srclua5/loh/tabs_le64w.loh
@@ -0,0 +1,56 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/tabs_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/tabs_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,116, 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 20, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,
+194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0,
+ 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,
+128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,115, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0,
+ 0, 0, 0, 0, 0, 0,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0, 4,
+ 3, 0, 0, 0, 0, 0, 0, 0,105,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,
+102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84, 97,
+ 98,115,118, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,
+117,110, 99, 0, 4,207, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,105, 99, 32,
+105,110,116, 32, 84, 97, 98,115,118, 40,108,117, 97, 95, 83,116, 97,116,101, 32,
+ 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42,104,108,
+105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,105,104,
+ 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59, 10, 32,
+ 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,112, 84, 97, 98,
+115,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,
+112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,105,
+117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,114, 97,
+119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,104,108,105,115,
+116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10, 10, 0,
+ 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133,
+ 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 1,
+ 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84, 97, 98,115,118, 0, 0, 0,
+ 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0,
+ 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0,
+ 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
+ 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 23, 0, 0, 0,
+ 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0,
+ 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0,
+ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 10, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tabs_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/text.loh b/iup/srclua5/loh/text.loh
new file mode 100755
index 0000000..b84c5df
--- /dev/null
+++ b/iup/srclua5/loh/text.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/text.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/text.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,116,101,120,
+116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 20, 0,
+ 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74,192, 0, 0, 73, 0,194,131, 73,128,194,132, 73, 0,195,133, 9, 64,
+ 0,131,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,128, 1, 30, 0,
+128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0,
+ 0,116,101,120,116, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0,
+ 0, 0,110,115, 0, 4, 9, 0, 0, 0, 99, 97,114,101,116, 95, 99, 98, 0, 4,
+ 4, 0, 0, 0,110,110,110, 0, 4, 16, 0, 0, 0,118, 97,108,117,101, 99,104,
+ 97,110,103,101,100, 95, 99, 98, 0, 4, 1, 0, 0, 0, 0, 4, 14, 0, 0, 0,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0,
+ 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,
+117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 15, 0,
+ 0, 0, 17, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,
+128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 84,
+101,120,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
+ 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0,
+ 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 15, 0,
+ 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 5, 0,
+ 0, 0, 99,116,114,108, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/text.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/text_be32.loh b/iup/srclua5/loh/text_be32.loh
new file mode 100755
index 0000000..95d0d1d
--- /dev/null
+++ b/iup/srclua5/loh/text_be32.loh
@@ -0,0 +1,40 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/text_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/text_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,116,101,120,
+116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 20, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0,192, 74,131,194, 0, 73,132,194,128, 73,133,195, 0, 73,131, 0,
+ 64, 9, 0, 0, 0,100,134,128, 64, 9, 0, 3,128, 69, 0, 0, 0,128, 1, 0,
+ 64, 92, 0, 3,192, 69, 0, 0, 0,128, 0, 4, 0,193, 1,128, 64, 92, 0,128,
+ 0, 30, 0, 0, 0, 17, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0,
+ 5,116,101,120,116, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0,
+ 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,
+105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108,
+ 98, 97, 99,107, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0,
+ 0, 3,110,115, 0, 4, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99, 98, 0, 4,
+ 0, 0, 0, 4,110,110,110, 0, 4, 0, 0, 0, 16,118, 97,108,117,101, 99,104,
+ 97,110,103,101,100, 95, 99, 98, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 14,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,
+117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0,
+ 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,
+117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 15, 0, 0, 0, 17, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128,
+ 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 5, 84,
+101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0,
+ 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0,
+ 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0,
+ 0, 5, 99,116,114,108, 0, 0, 0, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/text_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/text_be64.loh b/iup/srclua5/loh/text_be64.loh
new file mode 100755
index 0000000..08f9c73
--- /dev/null
+++ b/iup/srclua5/loh/text_be64.loh
@@ -0,0 +1,45 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/text_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/text_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,116,101,120,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 20, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74,192, 0, 0, 73, 0,194,131, 73,128,194,132, 73, 0,
+195,133, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0,
+ 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,
+128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,101,120,116, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0, 0, 0,
+ 0, 0,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,114,101,116, 95,
+ 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 16, 0, 0,
+ 0, 0, 0, 0, 0,118, 97,108,117,101, 99,104, 97,110,103,101,100, 95, 99, 98,
+ 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116,
+ 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,
+115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,
+116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0,
+ 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0,
+ 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 84,
+101,120,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
+ 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 20, 0,
+ 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0,
+ 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0,
+ 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 10,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/text_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/text_le64.loh b/iup/srclua5/loh/text_le64.loh
new file mode 100755
index 0000000..d0a7678
--- /dev/null
+++ b/iup/srclua5/loh/text_le64.loh
@@ -0,0 +1,45 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/text_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/text_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,116,101,120,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 20, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74,192, 0, 0, 73, 0,194,131, 73,128,194,132, 73, 0,
+195,133, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0,
+ 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,
+128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,101,120,116, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4,
+ 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0,
+ 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0, 0, 0,
+ 0, 0,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,114,101,116, 95,
+ 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 16, 0, 0,
+ 0, 0, 0, 0, 0,118, 97,108,117,101, 99,104, 97,110,103,101,100, 95, 99, 98,
+ 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,
+ 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116,
+ 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,
+115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,
+116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0,
+ 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0,
+ 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 84,
+101,120,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
+ 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 20, 0,
+ 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0,
+ 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0,
+ 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0,
+ 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 10,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/text_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/text_le64w.loh b/iup/srclua5/loh/text_le64w.loh
new file mode 100755
index 0000000..a78caf2
--- /dev/null
+++ b/iup/srclua5/loh/text_le64w.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/text_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/text_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,116,101,120,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73,128,194,132, 9, 64,
+ 0,131,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,
+128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,116,101,120,116, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0,
+ 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,115,
+ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,114,101,116, 95, 99, 98, 0, 4,
+ 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 14, 0, 0, 0, 0, 0, 0,
+ 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,
+116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,
+115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,
+101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16,
+ 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158,
+ 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+ 84,101,120,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0,
+ 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0,
+ 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16,
+ 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19,
+ 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0,
+ 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/text_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/timer.loh b/iup/srclua5/loh/timer.loh
new file mode 100755
index 0000000..2d6dfca
--- /dev/null
+++ b/iup/srclua5/loh/timer.loh
@@ -0,0 +1,37 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/timer.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/timer.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,116,105,109,
+101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 18,
+ 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9,
+ 64, 65,130, 74, 64, 0, 0, 73, 64,193,131, 9, 64, 0,131,100, 0, 0, 0, 9,
+ 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128,
+ 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4,
+ 5, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0,116,105,109,101,114, 0,
+ 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1,
+ 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10,
+ 0, 0, 0, 97, 99,116,105,111,110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 99,114,
+101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112,
+ 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112,
+ 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
+ 15, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,
+158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 84,105,109,
+101,114, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14,
+ 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115,
+ 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0,
+ 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0,
+ 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0,
+ 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0,
+ 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 8, 0,
+ 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/timer.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/timer_be32.loh b/iup/srclua5/loh/timer_be32.loh
new file mode 100755
index 0000000..073d341
--- /dev/null
+++ b/iup/srclua5/loh/timer_be32.loh
@@ -0,0 +1,37 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/timer_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/timer_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,116,105,109,
+101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0,
+ 0, 0, 18, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130,
+ 65, 64, 9, 0, 0, 64, 74,131,193, 64, 73,131, 0, 64, 9, 0, 0, 0,100,132,
+ 0, 64, 9, 0, 2, 64, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,128, 69, 0,
+ 0, 0,128, 0, 2,192,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 12, 4,
+ 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 6,116,105,109,101,114, 0,
+ 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68,
+ 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0,
+ 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0,
+ 0, 0, 10, 97, 99,116,105,111,110, 95, 99, 98, 0, 4, 0, 0, 0, 14, 99,114,
+101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112,
+ 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112,
+ 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 13,
+ 0, 0, 0, 15, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157,
+ 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 6, 84,105,109,
+101,114, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 14, 0,
+ 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0,
+ 0, 8, 0, 0, 0, 17, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/timer_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/timer_be64.loh b/iup/srclua5/loh/timer_be64.loh
new file mode 100755
index 0000000..182b3fd
--- /dev/null
+++ b/iup/srclua5/loh/timer_be64.loh
@@ -0,0 +1,41 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/timer_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/timer_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,116,105,109,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 64,193,131, 9, 64, 0,131,100,
+ 0, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,116,105,109,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97,
+ 99,116,105,111,110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,
+101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4,
+ 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0,
+ 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0,
+ 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0,
+ 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84,105,109,
+101,114, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14,
+ 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0,
+ 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0,
+ 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0,
+ 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/timer_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/timer_le64.loh b/iup/srclua5/loh/timer_le64.loh
new file mode 100755
index 0000000..fddb2b5
--- /dev/null
+++ b/iup/srclua5/loh/timer_le64.loh
@@ -0,0 +1,41 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/timer_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/timer_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,116,105,109,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 64,193,131, 9, 64, 0,131,100,
+ 0, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,116,105,109,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97,
+ 99,116,105,111,110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,
+101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4,
+ 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0,
+ 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0,
+ 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0,
+ 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84,105,109,
+101,114, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14,
+ 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0,
+ 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0,
+ 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0,
+ 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/timer_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/timer_le64w.loh b/iup/srclua5/loh/timer_le64w.loh
new file mode 100755
index 0000000..26126ce
--- /dev/null
+++ b/iup/srclua5/loh/timer_le64w.loh
@@ -0,0 +1,41 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/timer_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/timer_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 64,116,105,109,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9,
+ 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 64,193,131, 9, 64, 0,131,100,
+ 0, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,
+128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0,
+ 0, 0, 0, 0, 0, 0,116,105,109,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68,
+ 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97,
+ 99,116,105,111,110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,
+101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4,
+ 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0,
+ 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0,
+ 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0,
+ 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84,105,109,
+101,114, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14,
+ 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0,
+ 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0,
+ 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0,
+ 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0,
+ 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/timer_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/toggle.loh b/iup/srclua5/loh/toggle.loh
new file mode 100755
index 0000000..c1580f0
--- /dev/null
+++ b/iup/srclua5/loh/toggle.loh
@@ -0,0 +1,38 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/toggle.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/toggle.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 12, 0, 0, 0, 64,116,111,103,
+103,108,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4,
+ 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129,
+ 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,100, 0, 0, 0,
+ 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,
+128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0,
+ 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 7, 0, 0, 0,116,111,103,103,108,
+101, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0,
+ 4, 3, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 2, 0, 0, 0,110,
+ 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0,
+ 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,
+101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0,
+ 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,
+133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0,
+ 2, 0, 0, 0, 4, 7, 0, 0, 0, 84,111,103,103,108,101, 0, 4, 6, 0, 0,
+ 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 14,
+ 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6,
+ 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0,
+ 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0,
+ 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0,
+ 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/toggle.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/toggle_be32.loh b/iup/srclua5/loh/toggle_be32.loh
new file mode 100755
index 0000000..1aef13a
--- /dev/null
+++ b/iup/srclua5/loh/toggle_be32.loh
@@ -0,0 +1,38 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/toggle_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/toggle_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 12, 64,116,111,103,
+103,108,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4,
+ 0, 0, 0, 18, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,
+130, 65, 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9, 0, 0, 0,100,
+132,128, 64, 9, 0, 2,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,192, 69,
+ 0, 0, 0,128, 0, 3, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 13,
+ 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 7,116,111,103,103,108,
+101, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87,
+ 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0,
+ 4, 0, 0, 0, 3, 83, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0, 0, 2,110,
+ 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0,
+ 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,
+101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0,
+ 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 2, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0,133, 0,192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30,
+ 0, 0, 0, 2, 4, 0, 0, 0, 7, 84,111,103,103,108,101, 0, 4, 0, 0, 0,
+ 6,116,105,116,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0,
+ 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0,
+ 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0,
+ 13, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+ 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0,
+ 5, 99,116,114,108, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/toggle_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/toggle_be64.loh b/iup/srclua5/loh/toggle_be64.loh
new file mode 100755
index 0000000..523e6c2
--- /dev/null
+++ b/iup/srclua5/loh/toggle_be64.loh
@@ -0,0 +1,42 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/toggle_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/toggle_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64,116,111,103,103,108,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,
+100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1,
+ 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0,
+ 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,116,111,103,103,108,101, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110,
+ 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,
+133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0,
+ 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 84,111,103,103,108,101, 0,
+ 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15,
+ 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0,
+ 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0,
+ 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0,
+ 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
+ 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/toggle_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/toggle_le64.loh b/iup/srclua5/loh/toggle_le64.loh
new file mode 100755
index 0000000..41686fb
--- /dev/null
+++ b/iup/srclua5/loh/toggle_le64.loh
@@ -0,0 +1,42 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/toggle_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/toggle_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64,116,111,103,103,108,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,
+100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1,
+ 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0,
+ 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,116,111,103,103,108,101, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110,
+ 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,
+133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0,
+ 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 84,111,103,103,108,101, 0,
+ 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15,
+ 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0,
+ 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0,
+ 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0,
+ 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
+ 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/toggle_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/toggle_le64w.loh b/iup/srclua5/loh/toggle_le64w.loh
new file mode 100755
index 0000000..21b2417
--- /dev/null
+++ b/iup/srclua5/loh/toggle_le64w.loh
@@ -0,0 +1,42 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/toggle_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/toggle_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 64,116,111,103,103,108,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0,
+ 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,
+100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1,
+ 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0,
+ 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 7,
+ 0, 0, 0, 0, 0, 0, 0,116,111,103,103,108,101, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87,
+ 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0,
+ 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110,
+ 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,
+101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,
+115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,
+133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0,
+ 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 84,111,103,103,108,101, 0,
+ 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15,
+ 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0,
+ 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0,
+ 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0,
+ 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
+ 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/toggle_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/tree.loh b/iup/srclua5/loh/tree.loh
new file mode 100755
index 0000000..160153d
--- /dev/null
+++ b/iup/srclua5/loh/tree.loh
@@ -0,0 +1,177 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/tree.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/tree.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,116,114,101,
+101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 37, 0,
+ 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74,192, 2, 0, 73, 0,194,131, 73, 0,194,132, 73,192, 66,133, 73,192,
+ 66,134, 73,192,194,134, 73,192, 67,135, 73,192, 67,136, 73,192,195,136, 73,192,
+ 66,137, 73,192,194,137, 73, 64, 69,138, 9, 64, 0,131, 9,192, 69,139,100, 0,
+ 0, 0,164, 64, 0, 0, 0, 0,128, 0,135, 0, 6, 0,164,128, 0, 0,135, 64,
+ 6, 0,164,192, 0, 0,135,128, 6, 0,164, 0, 1, 0, 9,128,128,141,133, 0,
+ 7, 0,192, 0, 0, 0,156, 64, 0, 1,133, 64, 7, 0,192, 0, 0, 0, 1,129,
+ 7, 0,156, 64,128, 1, 30, 0,128, 0, 31, 0, 0, 0, 4, 5, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0,116,114,101,101, 0, 4, 7, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9,
+ 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0,115,101,108,
+101, 99,116,105,111,110, 95, 99, 98, 0, 4, 3, 0, 0, 0,110,110, 0, 4, 18,
+ 0, 0, 0,109,117,108,116,105,115,101,108,101, 99,116,105,111,110, 95, 99, 98,
+ 0, 4, 14, 0, 0, 0, 98,114, 97,110, 99,104,111,112,101,110, 95, 99, 98, 0,
+ 4, 2, 0, 0, 0,110, 0, 4, 15, 0, 0, 0, 98,114, 97,110, 99,104, 99,108,
+111,115,101, 95, 99, 98, 0, 4, 15, 0, 0, 0,101,120,101, 99,117,116,101,108,
+101, 97,102, 95, 99, 98, 0, 4, 14, 0, 0, 0,114,101,110, 97,109,101,110,111,
+100,101, 95, 99, 98, 0, 4, 3, 0, 0, 0,110,115, 0, 4, 15, 0, 0, 0,110,
+111,100,101,114,101,109,111,118,101,100, 95, 99, 98, 0, 4, 10, 0, 0, 0,114,
+101,110, 97,109,101, 95, 99, 98, 0, 4, 14, 0, 0, 0,115,104,111,119,114,101,
+110, 97,109,101, 95, 99, 98, 0, 4, 14, 0, 0, 0,114,105,103,104,116, 99,108,
+105, 99,107, 95, 99, 98, 0, 4, 12, 0, 0, 0,100,114, 97,103,100,114,111,112,
+ 95, 99, 98, 0, 4, 5, 0, 0, 0,110,110,110,110, 0, 4, 11, 0, 0, 0,101,
+120,116,114, 97,102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4,
+ 18, 0, 0, 0, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105,
+ 98, 0, 4, 16, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,
+101, 99, 0, 4, 13, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101,
+ 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0,
+ 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,
+101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0,
+ 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 5, 0, 0, 0,
+ 0, 0, 0, 0, 24, 0, 0, 0, 27, 0, 0, 0, 0, 3, 0, 7, 15, 0, 0, 0,
+197, 0, 0, 0, 0, 1, 0, 1,220,128, 0, 1, 23, 64,192, 1, 22,192, 0,128,
+197,128, 0, 0, 0, 1, 0, 1,220,128, 0, 1,128, 0,128, 1,197,192, 0, 0,
+ 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0,
+ 4, 0, 0, 0, 4, 12, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,115,115,
+ 0, 4, 11, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 16, 0,
+ 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 13,
+ 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 0, 0, 0, 0,
+ 15, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0,
+ 27, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0,
+ 14, 0, 0, 0, 6, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 14, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 1, 3,
+ 0, 7, 69, 0, 0, 0,198, 0,192, 0,218, 0, 0, 0, 22,128, 1,128,197, 64,
+ 0, 0, 0, 1, 0, 0, 65,129, 0, 0,128, 1, 0, 1, 85,129,129, 2,134, 1,
+192, 0,220, 64, 0, 2,198,192,192, 0,218, 0, 0, 0, 22,128, 1,128,197, 64,
+ 0, 0, 0, 1, 0, 0, 65, 1, 1, 0,128, 1, 0, 1, 85,129,129, 2,134,193,
+192, 0,220, 64, 0, 2,198, 64,193, 0,218, 0, 0, 0, 22,128, 1,128,197, 64,
+ 0, 0, 0, 1, 0, 0, 65,129, 1, 0,128, 1, 0, 1, 85,129,129, 2,134, 65,
+193, 0,220, 64, 0, 2,198,192,193, 0,218, 0, 0, 0, 22,128, 1,128,197, 64,
+ 0, 0, 0, 1, 0, 0, 65, 1, 2, 0,128, 1, 0, 1, 85,129,129, 2,134,193,
+193, 0,220, 64, 0, 2,198, 64,194, 0,218, 0, 0, 0, 22,128, 1,128,196, 0,
+ 0, 0, 0, 1, 0, 0, 65,129, 2, 0,128, 1, 0, 1, 85,129,129, 2,134, 65,
+194, 0,220, 64, 0, 2,198,192,194, 0,218, 0, 0, 0, 22,128, 1,128,196, 0,
+ 0, 0, 0, 1, 0, 0, 65, 1, 3, 0,128, 1, 0, 1, 85,129,129, 2,134,193,
+194, 0,220, 64, 0, 2,198, 64,195, 0,218, 0, 0, 0, 22, 0, 1,128,197,128,
+ 3, 0, 0, 1, 0, 0, 64, 1, 0, 1,134, 65,195, 0,220, 64, 0, 2, 30, 0,
+128, 0, 15, 0, 0, 0, 4, 6, 0, 0, 0, 99,111,108,111,114, 0, 4, 13, 0,
+ 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 6, 0, 0, 0,
+ 67, 79, 76, 79, 82, 0, 4, 6, 0, 0, 0,115,116, 97,116,101, 0, 4, 6, 0,
+ 0, 0, 83, 84, 65, 84, 69, 0, 4, 10, 0, 0, 0,116,105,116,108,101,102,111,
+110,116, 0, 4, 10, 0, 0, 0, 84, 73, 84, 76, 69, 70, 79, 78, 84, 0, 4, 7,
+ 0, 0, 0,109, 97,114,107,101,100, 0, 4, 7, 0, 0, 0, 77, 65, 82, 75, 69,
+ 68, 0, 4, 6, 0, 0, 0,105,109, 97,103,101, 0, 4, 6, 0, 0, 0, 73, 77,
+ 65, 71, 69, 0, 4, 14, 0, 0, 0,105,109, 97,103,101,101,120,112, 97,110,100,
+101,100, 0, 4, 14, 0, 0, 0, 73, 77, 65, 71, 69, 69, 88, 80, 65, 78, 68, 69,
+ 68, 0, 4, 7, 0, 0, 0,117,115,101,114,105,100, 0, 4, 14, 0, 0, 0, 84,
+114,101,101, 83,101,116, 85,115,101,114, 73,100, 0, 0, 0, 0, 0, 69, 0, 0,
+ 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0,
+ 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0,
+ 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0,
+ 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0,
+ 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,
+ 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,
+ 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0,
+ 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0,
+ 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0,
+ 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0,
+ 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0,
+ 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0,
+ 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0,
+ 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 3, 0, 0,
+ 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 68, 0, 0, 0,
+ 5, 0, 0, 0,110,111,100,101, 0, 0, 0, 0, 0, 68, 0, 0, 0, 3, 0, 0,
+ 0,105,100, 0, 0, 0, 0, 0, 68, 0, 0, 0, 1, 0, 0, 0, 23, 0, 0, 0,
+ 84,114,101,101, 83,101,116, 65,116,116,114,105, 98,117,116,101, 72, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 39, 0, 0, 0, 60, 0, 0, 0, 0, 3, 0, 9, 61,
+ 0, 0, 0, 23, 0,192, 0, 22, 0, 0,128, 30, 0,128, 0,212, 0,128, 0, 25,
+192,128,128, 22, 64, 13,128, 6,193,128, 0, 69,129, 0, 0,128, 1, 0, 2, 92,
+129, 0, 1, 23,192,192, 2, 22, 0, 9,128, 70, 1, 65, 2, 90, 1, 0, 0, 22,
+ 64, 4,128, 69, 65, 1, 0,128, 1, 0, 0,193,129, 1, 0, 0, 2, 0, 1,213,
+ 1,130, 3, 6, 2, 65, 2, 92, 65, 0, 2, 69,193, 1, 0,128, 1, 0, 0,192,
+ 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 69, 65, 2, 0,128, 1, 0, 0,192,
+ 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 22, 0, 6,128, 70,129, 66, 2, 90,
+ 1, 0, 0, 22, 64, 5,128, 69, 65, 1, 0,128, 1, 0, 0,193,193, 2, 0, 0,
+ 2, 0, 1,213, 1,130, 3, 6,130, 66, 2, 92, 65, 0, 2, 69,193, 1, 0,128,
+ 1, 0, 0,192, 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 22, 0, 2,128, 26,
+ 1, 0, 0, 22,128, 1,128, 69, 65, 1, 0,128, 1, 0, 0,193,193, 2, 0, 0,
+ 2, 0, 1,213, 1,130, 3, 0, 2, 0, 2, 92, 65, 0, 2,205, 0,194, 1, 22,
+192,241,127, 30, 0,128, 0, 12, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4, 5, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0,116, 97, 98,108,
+101, 0, 4, 11, 0, 0, 0, 98,114, 97,110, 99,104,110, 97,109,101, 0, 4, 13,
+ 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 10, 0, 0,
+ 0, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 4, 18, 0, 0, 0, 84,114,101,101,
+ 83,101,116, 78,111,100,101, 65,116,116,114,105, 98, 0, 3, 0, 0, 0, 0, 0,
+ 0,240, 63, 4, 16, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101,
+ 82,101, 99, 0, 4, 9, 0, 0, 0,108,101, 97,102,110, 97,109,101, 0, 4, 8,
+ 0, 0, 0, 65, 68, 68, 76, 69, 65, 70, 0, 0, 0, 0, 0, 61, 0, 0, 0, 40,
+ 0, 0, 0, 40, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42,
+ 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44,
+ 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46,
+ 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46,
+ 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47,
+ 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48,
+ 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49,
+ 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50,
+ 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51,
+ 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 54, 0, 0, 0, 54,
+ 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55,
+ 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 60,
+ 0, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0,
+ 0, 0, 60, 0, 0, 0, 2, 0, 0, 0,116, 0, 0, 0, 0, 0, 60, 0, 0, 0,
+ 3, 0, 0, 0,105,100, 0, 0, 0, 0, 0, 60, 0, 0, 0, 5, 0, 0, 0, 99,
+111,110,116, 0, 4, 0, 0, 0, 60, 0, 0, 0, 5, 0, 0, 0,110,111,100,101,
+ 0, 7, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0,
+ 0, 69, 0, 0, 0, 0, 3, 0, 7, 22, 0, 0, 0,154, 64, 0, 0, 22, 64, 3,
+128,129, 0, 0, 0,198, 64,192, 0,218, 0, 0, 0, 22, 0, 1,128,197,128, 0,
+ 0, 0, 1, 0, 0, 65,193, 0, 0,134, 65,192, 0,220, 64, 0, 2,197, 0, 1,
+ 0, 0, 1, 0, 0, 64, 1,128, 0,129, 1, 0, 0,220, 64, 0, 2,197, 64, 1,
+ 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128,
+ 0, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 0, 0, 0, 98,
+114, 97,110, 99,104,110, 97,109,101, 0, 4, 13, 0, 0, 0, 83,101,116, 65,116,
+116,114,105, 98,117,116,101, 0, 4, 7, 0, 0, 0, 84, 73, 84, 76, 69, 48, 0,
+ 4, 18, 0, 0, 0, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,
+105, 98, 0, 4, 16, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101,
+ 82,101, 99, 0, 0, 0, 0, 0, 22, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0,
+ 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0,
+ 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 68, 0, 0, 0,
+ 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0,
+ 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 21,
+ 0, 0, 0, 2, 0, 0, 0,116, 0, 0, 0, 0, 0, 21, 0, 0, 0, 3, 0, 0,
+ 0,105,100, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 71, 0, 0, 0, 73, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,
+157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0,
+ 0, 84,114,101,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 72, 0, 0, 0, 72, 0,
+ 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0,
+ 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0,
+ 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,
+ 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 27, 0, 0, 0, 37, 0, 0, 0,
+ 37, 0, 0, 0, 29, 0, 0, 0, 60, 0, 0, 0, 39, 0, 0, 0, 69, 0, 0, 0,
+ 62, 0, 0, 0, 73, 0, 0, 0, 71, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0,
+ 75, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0,
+ 76, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 19, 0, 0,
+ 0, 36, 0, 0, 0, 23, 0, 0, 0, 84,114,101,101, 83,101,116, 65,116,116,114,
+105, 98,117,116,101, 72, 97,110,100,108,101, 0, 20, 0, 0, 0, 36, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tree.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/tree_be32.loh b/iup/srclua5/loh/tree_be32.loh
new file mode 100755
index 0000000..3f6adfa
--- /dev/null
+++ b/iup/srclua5/loh/tree_be32.loh
@@ -0,0 +1,177 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/tree_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/tree_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,116,114,101,
+101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 0, 0,
+ 0, 37, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 2,192, 74,131,194, 0, 73,132,194, 0, 73,133, 66,192, 73,134, 66,
+192, 73,134,194,192, 73,135, 67,192, 73,136, 67,192, 73,136,195,192, 73,137, 66,
+192, 73,137,194,192, 73,138, 69, 64, 73,131, 0, 64, 9,139, 69,192, 9, 0, 0,
+ 0,100, 0, 0, 64,164, 0,128, 0, 0, 0, 6, 0,135, 0, 0,128,164, 0, 6,
+ 64,135, 0, 0,192,164, 0, 6,128,135, 0, 1, 0,164,141,128,128, 9, 0, 7,
+ 0,133, 0, 0, 0,192, 1, 0, 64,156, 0, 7, 64,133, 0, 0, 0,192, 0, 7,
+129, 1, 1,128, 64,156, 0,128, 0, 30, 0, 0, 0, 31, 4, 0, 0, 0, 5,110,
+105, 99,107, 0, 4, 0, 0, 0, 5,116,114,101,101, 0, 4, 0, 0, 0, 7,112,
+ 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0,
+ 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0,
+ 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 13,115,101,108,
+101, 99,116,105,111,110, 95, 99, 98, 0, 4, 0, 0, 0, 3,110,110, 0, 4, 0,
+ 0, 0, 18,109,117,108,116,105,115,101,108,101, 99,116,105,111,110, 95, 99, 98,
+ 0, 4, 0, 0, 0, 14, 98,114, 97,110, 99,104,111,112,101,110, 95, 99, 98, 0,
+ 4, 0, 0, 0, 2,110, 0, 4, 0, 0, 0, 15, 98,114, 97,110, 99,104, 99,108,
+111,115,101, 95, 99, 98, 0, 4, 0, 0, 0, 15,101,120,101, 99,117,116,101,108,
+101, 97,102, 95, 99, 98, 0, 4, 0, 0, 0, 14,114,101,110, 97,109,101,110,111,
+100,101, 95, 99, 98, 0, 4, 0, 0, 0, 3,110,115, 0, 4, 0, 0, 0, 15,110,
+111,100,101,114,101,109,111,118,101,100, 95, 99, 98, 0, 4, 0, 0, 0, 10,114,
+101,110, 97,109,101, 95, 99, 98, 0, 4, 0, 0, 0, 14,115,104,111,119,114,101,
+110, 97,109,101, 95, 99, 98, 0, 4, 0, 0, 0, 14,114,105,103,104,116, 99,108,
+105, 99,107, 95, 99, 98, 0, 4, 0, 0, 0, 12,100,114, 97,103,100,114,111,112,
+ 95, 99, 98, 0, 4, 0, 0, 0, 5,110,110,110,110, 0, 4, 0, 0, 0, 11,101,
+120,116,114, 97,102,117,110, 99,115, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 18, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105,
+ 98, 0, 4, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,
+101, 99, 0, 4, 0, 0, 0, 13, 84,114,101,101, 83,101,116, 86, 97,108,117,101,
+ 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0,
+ 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,
+101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0,
+ 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 27, 0, 3, 0, 7, 0, 0, 0, 15,
+ 0, 0, 0,197, 1, 0, 1, 0, 1, 0,128,220, 1,192, 64, 23,128, 0,192, 22,
+ 0, 0,128,197, 1, 0, 1, 0, 1, 0,128,220, 1,128, 0,128, 0, 0,192,197,
+ 0, 0, 1, 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 64,220, 0,128, 0, 30,
+ 0, 0, 0, 4, 4, 0, 0, 0, 12,105,117,112, 71,101,116, 67,108, 97,115,115,
+ 0, 4, 0, 0, 0, 11,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 0, 0,
+ 0, 16,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 0,
+ 0, 0, 13, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 0, 0, 0, 0,
+ 0, 0, 0, 15, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25,
+ 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25,
+ 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26,
+ 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 5,110, 97,109,101, 0, 0, 0, 0, 0,
+ 0, 0, 0, 14, 0, 0, 0, 6,118, 97,108,117,101, 0, 0, 0, 0, 0, 0, 0,
+ 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 1, 3,
+ 0, 7, 0, 0, 0, 69, 0,192, 0,198, 0, 0, 0,218,128, 1,128, 22, 0, 0,
+ 64,197, 0, 0, 1, 0, 0, 0,129, 65, 1, 0, 1,128, 2,129,129, 85, 0,192,
+ 1,134, 2, 0, 64,220, 0,192,192,198, 0, 0, 0,218,128, 1,128, 22, 0, 0,
+ 64,197, 0, 0, 1, 0, 0, 1, 1, 65, 1, 0, 1,128, 2,129,129, 85, 0,192,
+193,134, 2, 0, 64,220, 0,193, 64,198, 0, 0, 0,218,128, 1,128, 22, 0, 0,
+ 64,197, 0, 0, 1, 0, 0, 1,129, 65, 1, 0, 1,128, 2,129,129, 85, 0,193,
+ 65,134, 2, 0, 64,220, 0,193,192,198, 0, 0, 0,218,128, 1,128, 22, 0, 0,
+ 64,197, 0, 0, 1, 0, 0, 2, 1, 65, 1, 0, 1,128, 2,129,129, 85, 0,193,
+193,134, 2, 0, 64,220, 0,194, 64,198, 0, 0, 0,218,128, 1,128, 22, 0, 0,
+ 0,196, 0, 0, 1, 0, 0, 2,129, 65, 1, 0, 1,128, 2,129,129, 85, 0,194,
+ 65,134, 2, 0, 64,220, 0,194,192,198, 0, 0, 0,218,128, 1,128, 22, 0, 0,
+ 0,196, 0, 0, 1, 0, 0, 3, 1, 65, 1, 0, 1,128, 2,129,129, 85, 0,194,
+193,134, 2, 0, 64,220, 0,195, 64,198, 0, 0, 0,218,128, 1, 0, 22, 0, 3,
+128,197, 0, 0, 1, 0, 1, 0, 1, 64, 0,195, 65,134, 2, 0, 64,220, 0,128,
+ 0, 30, 0, 0, 0, 15, 4, 0, 0, 0, 6, 99,111,108,111,114, 0, 4, 0, 0,
+ 0, 13, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 0, 0, 0, 6,
+ 67, 79, 76, 79, 82, 0, 4, 0, 0, 0, 6,115,116, 97,116,101, 0, 4, 0, 0,
+ 0, 6, 83, 84, 65, 84, 69, 0, 4, 0, 0, 0, 10,116,105,116,108,101,102,111,
+110,116, 0, 4, 0, 0, 0, 10, 84, 73, 84, 76, 69, 70, 79, 78, 84, 0, 4, 0,
+ 0, 0, 7,109, 97,114,107,101,100, 0, 4, 0, 0, 0, 7, 77, 65, 82, 75, 69,
+ 68, 0, 4, 0, 0, 0, 6,105,109, 97,103,101, 0, 4, 0, 0, 0, 6, 73, 77,
+ 65, 71, 69, 0, 4, 0, 0, 0, 14,105,109, 97,103,101,101,120,112, 97,110,100,
+101,100, 0, 4, 0, 0, 0, 14, 73, 77, 65, 71, 69, 69, 88, 80, 65, 78, 68, 69,
+ 68, 0, 4, 0, 0, 0, 7,117,115,101,114,105,100, 0, 4, 0, 0, 0, 14, 84,
+114,101,101, 83,101,116, 85,115,101,114, 73,100, 0, 0, 0, 0, 0, 0, 0, 0,
+ 69, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0,
+ 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0,
+ 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0,
+ 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0,
+ 31, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0,
+ 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0,
+ 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0,
+ 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0,
+ 33, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0,
+ 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0,
+ 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0,
+ 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0,
+ 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0,
+ 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0,
+ 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 68,
+ 0, 0, 0, 5,110,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0,
+ 3,105,100, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 1, 0, 0, 0, 23,
+ 84,114,101,101, 83,101,116, 65,116,116,114,105, 98,117,116,101, 72, 97,110,100,
+108,101, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 60, 0, 3, 0, 9, 0,
+ 0, 0, 61, 0,192, 0, 23,128, 0, 0, 22, 0,128, 0, 30, 0,128, 0,212,128,
+128,192, 25,128, 13, 64, 22, 0,128,193, 6, 0, 0,129, 69, 2, 0, 1,128, 1,
+ 0,129, 92, 2,192,192, 23,128, 9, 0, 22, 2, 65, 1, 70, 0, 0, 1, 90,128,
+ 4, 64, 22, 0, 1, 65, 69, 0, 0, 1,128, 0, 1,129,193, 1, 0, 2, 0, 3,
+130, 1,213, 2, 65, 2, 6, 2, 0, 65, 92, 0, 1,193, 69, 0, 0, 1,128, 2,
+ 0, 1,192, 1, 66, 2, 12, 2, 0, 65, 92, 0, 2, 65, 69, 0, 0, 1,128, 2,
+ 0, 1,192, 1, 66, 2, 12, 2, 0, 65, 92,128, 6, 0, 22, 2, 66,129, 70, 0,
+ 0, 1, 90,128, 5, 64, 22, 0, 1, 65, 69, 0, 0, 1,128, 0, 2,193,193, 1,
+ 0, 2, 0, 3,130, 1,213, 2, 66,130, 6, 2, 0, 65, 92, 0, 1,193, 69, 0,
+ 0, 1,128, 2, 0, 1,192, 1, 66, 2, 12, 2, 0, 65, 92,128, 2, 0, 22, 0,
+ 0, 1, 26,128, 1,128, 22, 0, 1, 65, 69, 0, 0, 1,128, 0, 2,193,193, 1,
+ 0, 2, 0, 3,130, 1,213, 2, 0, 2, 0, 2, 0, 65, 92, 1,194, 0,205,127,
+241,192, 22, 0,128, 0, 30, 0, 0, 0, 12, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 5,116,121,112,101, 0, 4, 0, 0, 0, 6,116, 97, 98,108,
+101, 0, 4, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,101, 0, 4, 0,
+ 0, 0, 13, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 0, 0, 0,
+ 10, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 4, 0, 0, 0, 18, 84,114,101,101,
+ 83,101,116, 78,111,100,101, 65,116,116,114,105, 98, 0, 3, 63,240, 0, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101,
+ 82,101, 99, 0, 4, 0, 0, 0, 9,108,101, 97,102,110, 97,109,101, 0, 4, 0,
+ 0, 0, 8, 65, 68, 68, 76, 69, 65, 70, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0,
+ 0, 0, 40, 0, 0, 0, 40, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 42, 0,
+ 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0,
+ 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0,
+ 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0,
+ 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0,
+ 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0,
+ 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0,
+ 0, 0, 49, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0,
+ 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0,
+ 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 54, 0,
+ 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0,
+ 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 58, 0, 0, 0, 58, 0,
+ 0, 0, 60, 0, 0, 0, 5, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0,
+ 0, 0, 0, 0, 0, 60, 0, 0, 0, 2,116, 0, 0, 0, 0, 0, 0, 0, 0, 60,
+ 0, 0, 0, 3,105,100, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 5, 99,
+111,110,116, 0, 0, 0, 0, 4, 0, 0, 0, 60, 0, 0, 0, 5,110,111,100,101,
+ 0, 0, 0, 0, 7, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 62, 0, 0, 0, 69, 0, 3, 0, 7, 0, 0, 0, 22, 0, 0, 64,154,128, 3, 64,
+ 22, 0, 0, 0,129, 0,192, 64,198, 0, 0, 0,218,128, 1, 0, 22, 0, 0,128,
+197, 0, 0, 1, 0, 0, 0,193, 65, 0,192, 65,134, 2, 0, 64,220, 0, 1, 0,
+197, 0, 0, 1, 0, 0,128, 1, 64, 0, 0, 1,129, 2, 0, 64,220, 0, 1, 64,
+197, 0, 0, 1, 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 64,220, 0,128, 0,
+ 30, 0, 0, 0, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 11, 98,
+114, 97,110, 99,104,110, 97,109,101, 0, 4, 0, 0, 0, 13, 83,101,116, 65,116,
+116,114,105, 98,117,116,101, 0, 4, 0, 0, 0, 7, 84, 73, 84, 76, 69, 48, 0,
+ 4, 0, 0, 0, 18, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,
+105, 98, 0, 4, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101,
+ 82,101, 99, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 63, 0, 0, 0, 63,
+ 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65,
+ 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 66,
+ 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 68,
+ 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69,
+ 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0,
+ 0, 0, 21, 0, 0, 0, 2,116, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0,
+ 3,105,100, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 71, 0, 0, 0, 73, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133,
+ 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0,
+ 5, 84,114,101,101, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 72, 0, 0,
+ 0, 72, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 2, 0, 0, 0, 6, 99,108,
+ 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 4,
+ 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8,
+ 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13,
+ 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18,
+ 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 27, 0, 0, 0, 37,
+ 0, 0, 0, 37, 0, 0, 0, 29, 0, 0, 0, 60, 0, 0, 0, 39, 0, 0, 0, 69,
+ 0, 0, 0, 62, 0, 0, 0, 73, 0, 0, 0, 71, 0, 0, 0, 75, 0, 0, 0, 75,
+ 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 76,
+ 0, 0, 0, 76, 0, 0, 0, 2, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0,
+ 19, 0, 0, 0, 36, 0, 0, 0, 23, 84,114,101,101, 83,101,116, 65,116,116,114,
+105, 98,117,116,101, 72, 97,110,100,108,101, 0, 0, 0, 0, 20, 0, 0, 0, 36,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tree_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/tree_be64.loh b/iup/srclua5/loh/tree_be64.loh
new file mode 100755
index 0000000..49a23fa
--- /dev/null
+++ b/iup/srclua5/loh/tree_be64.loh
@@ -0,0 +1,195 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/tree_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/tree_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 5, 37, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74,192, 2, 0, 73, 0,194,131, 73, 0,194,132, 73,192,
+ 66,133, 73,192, 66,134, 73,192,194,134, 73,192, 67,135, 73,192, 67,136, 73,192,
+195,136, 73,192, 66,137, 73,192,194,137, 73, 64, 69,138, 9, 64, 0,131, 9,192,
+ 69,139,100, 0, 0, 0,164, 64, 0, 0, 0, 0,128, 0,135, 0, 6, 0,164,128,
+ 0, 0,135, 64, 6, 0,164,192, 0, 0,135,128, 6, 0,164, 0, 1, 0, 9,128,
+128,141,133, 0, 7, 0,192, 0, 0, 0,156, 64, 0, 1,133, 64, 7, 0,192, 0,
+ 0, 0, 1,129, 7, 0,156, 64,128, 1, 30, 0,128, 0, 31, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,116,114,101,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98,
+ 97, 99,107, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,115,101,108,101, 99,116,105,
+111,110, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 18,
+ 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105,115,101,108,101, 99,116,105,111,
+110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98,114, 97,110, 99,104,
+111,112,101,110, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4,
+ 15, 0, 0, 0, 0, 0, 0, 0, 98,114, 97,110, 99,104, 99,108,111,115,101, 95,
+ 99, 98, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,101,120,101, 99,117,116,101,108,
+101, 97,102, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,114,101,110, 97,
+109,101,110,111,100,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,
+115, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,110,111,100,101,114,101,109,111,118,
+101,100, 95, 99, 98, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,114,101,110, 97,109,
+101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,104,111,119,114,101,
+110, 97,109,101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,114,105,103,
+104,116, 99,108,105, 99,107, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+100,114, 97,103,100,114,111,112, 95, 99, 98, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,110,110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,
+102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 18, 0, 0, 0,
+ 0, 0, 0, 0, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105,
+ 98, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,
+108,117,101, 82,101, 99, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101,
+ 83,101,116, 86, 97,108,117,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,
+101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4,
+ 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0,
+ 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 27, 0, 0, 0,
+ 0, 3, 0, 7, 15, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 1,220,128, 0, 1,
+ 23, 64,192, 1, 22,192, 0,128,197,128, 0, 0, 0, 1, 0, 1,220,128, 0, 1,
+128, 0,128, 1,197,192, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,
+220, 64, 0, 2, 30, 0,128, 0, 4, 0, 0, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 16, 0, 0, 0, 0, 0,
+ 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 13,
+ 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0,
+ 0, 0, 0, 0, 15, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0,
+ 26, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+104, 97,110,100,108,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 1, 3,
+ 0, 7, 69, 0, 0, 0,198, 0,192, 0,218, 0, 0, 0, 22,128, 1,128,197, 64,
+ 0, 0, 0, 1, 0, 0, 65,129, 0, 0,128, 1, 0, 1, 85,129,129, 2,134, 1,
+192, 0,220, 64, 0, 2,198,192,192, 0,218, 0, 0, 0, 22,128, 1,128,197, 64,
+ 0, 0, 0, 1, 0, 0, 65, 1, 1, 0,128, 1, 0, 1, 85,129,129, 2,134,193,
+192, 0,220, 64, 0, 2,198, 64,193, 0,218, 0, 0, 0, 22,128, 1,128,197, 64,
+ 0, 0, 0, 1, 0, 0, 65,129, 1, 0,128, 1, 0, 1, 85,129,129, 2,134, 65,
+193, 0,220, 64, 0, 2,198,192,193, 0,218, 0, 0, 0, 22,128, 1,128,197, 64,
+ 0, 0, 0, 1, 0, 0, 65, 1, 2, 0,128, 1, 0, 1, 85,129,129, 2,134,193,
+193, 0,220, 64, 0, 2,198, 64,194, 0,218, 0, 0, 0, 22,128, 1,128,196, 0,
+ 0, 0, 0, 1, 0, 0, 65,129, 2, 0,128, 1, 0, 1, 85,129,129, 2,134, 65,
+194, 0,220, 64, 0, 2,198,192,194, 0,218, 0, 0, 0, 22,128, 1,128,196, 0,
+ 0, 0, 0, 1, 0, 0, 65, 1, 3, 0,128, 1, 0, 1, 85,129,129, 2,134,193,
+194, 0,220, 64, 0, 2,198, 64,195, 0,218, 0, 0, 0, 22, 0, 1,128,197,128,
+ 3, 0, 0, 1, 0, 0, 64, 1, 0, 1,134, 65,195, 0,220, 64, 0, 2, 30, 0,
+128, 0, 15, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,111,108,111,114,
+ 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,
+116,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 67, 79, 76, 79, 82, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,101, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0, 83, 84, 65, 84, 69, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,116,105,116,
+108,101,102,111,110,116, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 84, 73, 84, 76,
+ 69, 70, 79, 78, 84, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107,101,
+100, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 77, 65, 82, 75, 69, 68, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0, 73, 77, 65, 71, 69, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,109, 97,
+103,101,101,120,112, 97,110,100,101,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,
+ 73, 77, 65, 71, 69, 69, 88, 80, 65, 78, 68, 69, 68, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,117,115,101,114,105,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 84,
+114,101,101, 83,101,116, 85,115,101,114, 73,100, 0, 0, 0, 0, 0, 69, 0, 0,
+ 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0,
+ 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0,
+ 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0,
+ 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0,
+ 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,
+ 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,
+ 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0,
+ 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0,
+ 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0,
+ 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0,
+ 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0,
+ 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0,
+ 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0,
+ 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 3, 0, 0,
+ 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0,
+ 68, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110,111,100,101, 0, 0, 0, 0,
+ 0, 68, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0,
+ 68, 0, 0, 0, 1, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101,
+ 83,101,116, 65,116,116,114,105, 98,117,116,101, 72, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 60, 0, 0, 0, 0, 3, 0, 9, 61,
+ 0, 0, 0, 23, 0,192, 0, 22, 0, 0,128, 30, 0,128, 0,212, 0,128, 0, 25,
+192,128,128, 22, 64, 13,128, 6,193,128, 0, 69,129, 0, 0,128, 1, 0, 2, 92,
+129, 0, 1, 23,192,192, 2, 22, 0, 9,128, 70, 1, 65, 2, 90, 1, 0, 0, 22,
+ 64, 4,128, 69, 65, 1, 0,128, 1, 0, 0,193,129, 1, 0, 0, 2, 0, 1,213,
+ 1,130, 3, 6, 2, 65, 2, 92, 65, 0, 2, 69,193, 1, 0,128, 1, 0, 0,192,
+ 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 69, 65, 2, 0,128, 1, 0, 0,192,
+ 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 22, 0, 6,128, 70,129, 66, 2, 90,
+ 1, 0, 0, 22, 64, 5,128, 69, 65, 1, 0,128, 1, 0, 0,193,193, 2, 0, 0,
+ 2, 0, 1,213, 1,130, 3, 6,130, 66, 2, 92, 65, 0, 2, 69,193, 1, 0,128,
+ 1, 0, 0,192, 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 22, 0, 2,128, 26,
+ 1, 0, 0, 22,128, 1,128, 69, 65, 1, 0,128, 1, 0, 0,193,193, 2, 0, 0,
+ 2, 0, 1,213, 1,130, 3, 0, 2, 0, 2, 92, 65, 0, 2,205, 0,194, 1, 22,
+192,241,127, 30, 0,128, 0, 12, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0,
+ 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 98,
+114, 97,110, 99,104,110, 97,109,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 83,
+101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 10, 0, 0, 0, 0, 0, 0,
+ 0, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+ 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105, 98, 0, 3, 0,
+ 0, 0, 0, 0, 0,240, 63, 4, 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101,
+ 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0,108,101, 97,102,110, 97,109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65,
+ 68, 68, 76, 69, 65, 70, 0, 0, 0, 0, 0, 61, 0, 0, 0, 40, 0, 0, 0, 40,
+ 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43,
+ 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44,
+ 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 46,
+ 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46,
+ 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47,
+ 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48,
+ 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 50,
+ 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50,
+ 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51,
+ 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 55,
+ 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55,
+ 0, 0, 0, 55, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 60, 0, 0, 0, 5,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0,
+ 0, 0, 60, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0,
+ 60, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0, 60,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,111,110,116, 0, 4, 0, 0, 0,
+ 60, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110,111,100,101, 0, 7, 0, 0,
+ 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0,
+ 0, 69, 0, 0, 0, 0, 3, 0, 7, 22, 0, 0, 0,154, 64, 0, 0, 22, 64, 3,
+128,129, 0, 0, 0,198, 64,192, 0,218, 0, 0, 0, 22, 0, 1,128,197,128, 0,
+ 0, 0, 1, 0, 0, 65,193, 0, 0,134, 65,192, 0,220, 64, 0, 2,197, 0, 1,
+ 0, 0, 1, 0, 0, 64, 1,128, 0,129, 1, 0, 0,220, 64, 0, 2,197, 64, 1,
+ 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128,
+ 0, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0, 98,114, 97,110, 99,104,110, 97,109,101, 0, 4, 13, 0, 0, 0, 0,
+ 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0, 84, 73, 84, 76, 69, 48, 0, 4, 18, 0, 0, 0, 0, 0, 0,
+ 0, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105, 98, 0, 4,
+ 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101,
+ 82,101, 99, 0, 0, 0, 0, 0, 22, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0,
+ 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0,
+ 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 68, 0, 0, 0,
+ 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0,
+ 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 21, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0,
+ 0, 21, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0,
+ 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0,
+ 73, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,
+158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0, 84,114,101,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 72, 0, 0, 0, 72, 0,
+ 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 37, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0,
+ 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0,
+ 27, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 29, 0, 0, 0, 60, 0, 0, 0,
+ 39, 0, 0, 0, 69, 0, 0, 0, 62, 0, 0, 0, 73, 0, 0, 0, 71, 0, 0, 0,
+ 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0,
+ 76, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0,
+ 0, 0, 0, 0, 99,116,114,108, 0, 19, 0, 0, 0, 36, 0, 0, 0, 23, 0, 0,
+ 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 65,116,116,114,105, 98,117,116,
+101, 72, 97,110,100,108,101, 0, 20, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0,
+
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tree_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/tree_le64.loh b/iup/srclua5/loh/tree_le64.loh
new file mode 100755
index 0000000..dbfc0a1
--- /dev/null
+++ b/iup/srclua5/loh/tree_le64.loh
@@ -0,0 +1,195 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/tree_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/tree_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 5, 37, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74,192, 2, 0, 73, 0,194,131, 73, 0,194,132, 73,192,
+ 66,133, 73,192, 66,134, 73,192,194,134, 73,192, 67,135, 73,192, 67,136, 73,192,
+195,136, 73,192, 66,137, 73,192,194,137, 73, 64, 69,138, 9, 64, 0,131, 9,192,
+ 69,139,100, 0, 0, 0,164, 64, 0, 0, 0, 0,128, 0,135, 0, 6, 0,164,128,
+ 0, 0,135, 64, 6, 0,164,192, 0, 0,135,128, 6, 0,164, 0, 1, 0, 9,128,
+128,141,133, 0, 7, 0,192, 0, 0, 0,156, 64, 0, 1,133, 64, 7, 0,192, 0,
+ 0, 0, 1,129, 7, 0,156, 64,128, 1, 30, 0,128, 0, 31, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,116,114,101,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98,
+ 97, 99,107, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,115,101,108,101, 99,116,105,
+111,110, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 18,
+ 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105,115,101,108,101, 99,116,105,111,
+110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98,114, 97,110, 99,104,
+111,112,101,110, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4,
+ 15, 0, 0, 0, 0, 0, 0, 0, 98,114, 97,110, 99,104, 99,108,111,115,101, 95,
+ 99, 98, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,101,120,101, 99,117,116,101,108,
+101, 97,102, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,114,101,110, 97,
+109,101,110,111,100,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,
+115, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,110,111,100,101,114,101,109,111,118,
+101,100, 95, 99, 98, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,114,101,110, 97,109,
+101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,104,111,119,114,101,
+110, 97,109,101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,114,105,103,
+104,116, 99,108,105, 99,107, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+100,114, 97,103,100,114,111,112, 95, 99, 98, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,110,110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,
+102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 18, 0, 0, 0,
+ 0, 0, 0, 0, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105,
+ 98, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,
+108,117,101, 82,101, 99, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101,
+ 83,101,116, 86, 97,108,117,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,
+101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4,
+ 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0,
+ 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 27, 0, 0, 0,
+ 0, 3, 0, 7, 15, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 1,220,128, 0, 1,
+ 23, 64,192, 1, 22,192, 0,128,197,128, 0, 0, 0, 1, 0, 1,220,128, 0, 1,
+128, 0,128, 1,197,192, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,
+220, 64, 0, 2, 30, 0,128, 0, 4, 0, 0, 0, 4, 12, 0, 0, 0, 0, 0, 0,
+ 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0,
+ 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 16, 0, 0, 0, 0, 0,
+ 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 13,
+ 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0,
+ 0, 0, 0, 0, 15, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0,
+ 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0,
+ 26, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+104, 97,110,100,108,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 1, 3,
+ 0, 7, 69, 0, 0, 0,198, 0,192, 0,218, 0, 0, 0, 22,128, 1,128,197, 64,
+ 0, 0, 0, 1, 0, 0, 65,129, 0, 0,128, 1, 0, 1, 85,129,129, 2,134, 1,
+192, 0,220, 64, 0, 2,198,192,192, 0,218, 0, 0, 0, 22,128, 1,128,197, 64,
+ 0, 0, 0, 1, 0, 0, 65, 1, 1, 0,128, 1, 0, 1, 85,129,129, 2,134,193,
+192, 0,220, 64, 0, 2,198, 64,193, 0,218, 0, 0, 0, 22,128, 1,128,197, 64,
+ 0, 0, 0, 1, 0, 0, 65,129, 1, 0,128, 1, 0, 1, 85,129,129, 2,134, 65,
+193, 0,220, 64, 0, 2,198,192,193, 0,218, 0, 0, 0, 22,128, 1,128,197, 64,
+ 0, 0, 0, 1, 0, 0, 65, 1, 2, 0,128, 1, 0, 1, 85,129,129, 2,134,193,
+193, 0,220, 64, 0, 2,198, 64,194, 0,218, 0, 0, 0, 22,128, 1,128,196, 0,
+ 0, 0, 0, 1, 0, 0, 65,129, 2, 0,128, 1, 0, 1, 85,129,129, 2,134, 65,
+194, 0,220, 64, 0, 2,198,192,194, 0,218, 0, 0, 0, 22,128, 1,128,196, 0,
+ 0, 0, 0, 1, 0, 0, 65, 1, 3, 0,128, 1, 0, 1, 85,129,129, 2,134,193,
+194, 0,220, 64, 0, 2,198, 64,195, 0,218, 0, 0, 0, 22, 0, 1,128,197,128,
+ 3, 0, 0, 1, 0, 0, 64, 1, 0, 1,134, 65,195, 0,220, 64, 0, 2, 30, 0,
+128, 0, 15, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,111,108,111,114,
+ 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,
+116,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 67, 79, 76, 79, 82, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,101, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0, 83, 84, 65, 84, 69, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,116,105,116,
+108,101,102,111,110,116, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 84, 73, 84, 76,
+ 69, 70, 79, 78, 84, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107,101,
+100, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 77, 65, 82, 75, 69, 68, 0, 4, 6,
+ 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101, 0, 4, 6, 0, 0, 0, 0, 0,
+ 0, 0, 73, 77, 65, 71, 69, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,109, 97,
+103,101,101,120,112, 97,110,100,101,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,
+ 73, 77, 65, 71, 69, 69, 88, 80, 65, 78, 68, 69, 68, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,117,115,101,114,105,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 84,
+114,101,101, 83,101,116, 85,115,101,114, 73,100, 0, 0, 0, 0, 0, 69, 0, 0,
+ 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0,
+ 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0,
+ 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0,
+ 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0,
+ 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,
+ 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,
+ 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0,
+ 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0,
+ 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0,
+ 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0,
+ 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0,
+ 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0,
+ 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0,
+ 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 3, 0, 0,
+ 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0,
+ 68, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110,111,100,101, 0, 0, 0, 0,
+ 0, 68, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0,
+ 68, 0, 0, 0, 1, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101,
+ 83,101,116, 65,116,116,114,105, 98,117,116,101, 72, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 60, 0, 0, 0, 0, 3, 0, 9, 61,
+ 0, 0, 0, 23, 0,192, 0, 22, 0, 0,128, 30, 0,128, 0,212, 0,128, 0, 25,
+192,128,128, 22, 64, 13,128, 6,193,128, 0, 69,129, 0, 0,128, 1, 0, 2, 92,
+129, 0, 1, 23,192,192, 2, 22, 0, 9,128, 70, 1, 65, 2, 90, 1, 0, 0, 22,
+ 64, 4,128, 69, 65, 1, 0,128, 1, 0, 0,193,129, 1, 0, 0, 2, 0, 1,213,
+ 1,130, 3, 6, 2, 65, 2, 92, 65, 0, 2, 69,193, 1, 0,128, 1, 0, 0,192,
+ 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 69, 65, 2, 0,128, 1, 0, 0,192,
+ 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 22, 0, 6,128, 70,129, 66, 2, 90,
+ 1, 0, 0, 22, 64, 5,128, 69, 65, 1, 0,128, 1, 0, 0,193,193, 2, 0, 0,
+ 2, 0, 1,213, 1,130, 3, 6,130, 66, 2, 92, 65, 0, 2, 69,193, 1, 0,128,
+ 1, 0, 0,192, 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 22, 0, 2,128, 26,
+ 1, 0, 0, 22,128, 1,128, 69, 65, 1, 0,128, 1, 0, 0,193,193, 2, 0, 0,
+ 2, 0, 1,213, 1,130, 3, 0, 2, 0, 2, 92, 65, 0, 2,205, 0,194, 1, 22,
+192,241,127, 30, 0,128, 0, 12, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0,
+ 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 98,
+114, 97,110, 99,104,110, 97,109,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 83,
+101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 10, 0, 0, 0, 0, 0, 0,
+ 0, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,
+ 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105, 98, 0, 3, 0,
+ 0, 0, 0, 0, 0,240, 63, 4, 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101,
+ 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0,108,101, 97,102,110, 97,109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65,
+ 68, 68, 76, 69, 65, 70, 0, 0, 0, 0, 0, 61, 0, 0, 0, 40, 0, 0, 0, 40,
+ 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43,
+ 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44,
+ 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 46,
+ 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46,
+ 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47,
+ 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48,
+ 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 50,
+ 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50,
+ 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51,
+ 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 55,
+ 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55,
+ 0, 0, 0, 55, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 60, 0, 0, 0, 5,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0,
+ 0, 0, 60, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0,
+ 60, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0, 60,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,111,110,116, 0, 4, 0, 0, 0,
+ 60, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110,111,100,101, 0, 7, 0, 0,
+ 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0,
+ 0, 69, 0, 0, 0, 0, 3, 0, 7, 22, 0, 0, 0,154, 64, 0, 0, 22, 64, 3,
+128,129, 0, 0, 0,198, 64,192, 0,218, 0, 0, 0, 22, 0, 1,128,197,128, 0,
+ 0, 0, 1, 0, 0, 65,193, 0, 0,134, 65,192, 0,220, 64, 0, 2,197, 0, 1,
+ 0, 0, 1, 0, 0, 64, 1,128, 0,129, 1, 0, 0,220, 64, 0, 2,197, 64, 1,
+ 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128,
+ 0, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0, 98,114, 97,110, 99,104,110, 97,109,101, 0, 4, 13, 0, 0, 0, 0,
+ 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0, 84, 73, 84, 76, 69, 48, 0, 4, 18, 0, 0, 0, 0, 0, 0,
+ 0, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105, 98, 0, 4,
+ 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101,
+ 82,101, 99, 0, 0, 0, 0, 0, 22, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0,
+ 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0,
+ 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 68, 0, 0, 0,
+ 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0,
+ 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 21, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0,
+ 0, 21, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0,
+ 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0,
+ 73, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,
+158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0, 84,114,101,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 72, 0, 0, 0, 72, 0,
+ 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 37, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0,
+ 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0,
+ 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0,
+ 27, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 29, 0, 0, 0, 60, 0, 0, 0,
+ 39, 0, 0, 0, 69, 0, 0, 0, 62, 0, 0, 0, 73, 0, 0, 0, 71, 0, 0, 0,
+ 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0,
+ 76, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0,
+ 0, 0, 0, 0, 99,116,114,108, 0, 19, 0, 0, 0, 36, 0, 0, 0, 23, 0, 0,
+ 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 65,116,116,114,105, 98,117,116,
+101, 72, 97,110,100,108,101, 0, 20, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0,
+
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tree_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/tree_le64w.loh b/iup/srclua5/loh/tree_le64w.loh
new file mode 100755
index 0000000..ebc6aae
--- /dev/null
+++ b/iup/srclua5/loh/tree_le64w.loh
@@ -0,0 +1,112 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/tree_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/tree_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 33, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74,128, 2, 0, 73, 0,194,131, 73, 0,194,132, 73,192,
+ 66,133, 73,192, 66,134, 73,192,194,134, 73,192, 67,135, 73,192, 67,136, 73,192,
+194,136, 73,192, 66,137, 73, 0,197,137, 9, 64, 0,131, 9,128,197,138, 9, 0,
+198,139,100, 0, 0, 0, 71, 64, 6, 0,100, 64, 0, 0, 71,128, 6, 0,100,128,
+ 0, 0, 9, 64,128,141, 69, 0, 7, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64,
+ 7, 0,128, 0, 0, 0,193,128, 7, 0, 92, 64,128, 1, 30, 0,128, 0, 31, 0,
+ 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0,116,114,101,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69,
+ 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0,
+ 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,
+ 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,115,101,108,
+101, 99,116,105,111,110, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,
+110, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105,115,101,108,101,
+ 99,116,105,111,110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98,114,
+ 97,110, 99,104,111,112,101,110, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0,
+ 0,110, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 98,114, 97,110, 99,104, 99,108,
+111,115,101, 95, 99, 98, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,101,120,101, 99,
+117,116,101,108,101, 97,102, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,
+114,101,110, 97,109,101,110,111,100,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0,
+ 0, 0, 0,110,115, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,114,101,110, 97,109,
+101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,104,111,119,114,101,
+110, 97,109,101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,114,105,103,
+104,116, 99,108,105, 99,107, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,
+100,114, 97,103,100,114,111,112, 95, 99, 98, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,110,110,110,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,
+100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,117,112,116,114,101,101, 46,
+104, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102,117,110, 99,
+115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 16, 0, 0, 0, 0, 0, 0, 0,
+ 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 4, 13, 0, 0,
+ 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 0, 4, 14,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116,
+ 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,
+114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112,
+ 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 24, 0, 0, 0, 40, 0, 0, 0, 0, 3, 0, 8, 45, 0, 0, 0, 23, 0,192,
+ 0, 22, 0, 0,128, 30, 0,128, 0,197, 64, 0, 0,198,128,192, 1, 0, 1,128,
+ 0,220,128, 0, 1, 25,192,128,129, 22,128, 8,128, 5, 1, 1, 0, 70,193,128,
+ 0, 28,129, 0, 1, 23, 64, 64, 2, 22, 64, 4,128, 6,193,128, 0, 6, 65, 65,
+ 2, 87, 0, 64, 2, 22,192, 5,128, 5,129, 1, 0, 64, 1, 0, 0,129,193, 1,
+ 0,192, 1, 0, 1,149,193, 1, 3,198,193,128, 0,198, 65,193, 3, 28, 65, 0,
+ 2, 5, 1, 2, 0, 64, 1, 0, 0,134,193,128, 0,204, 65, 66, 1, 28, 65, 0,
+ 2, 22, 64, 2,128, 6,193,128, 0, 26, 1, 0, 0, 22,128, 1,128, 5,129, 1,
+ 0, 64, 1, 0, 0,129,129, 2, 0,192, 1, 0, 1,149,193, 1, 3,198,193,128,
+ 0, 28, 65, 0, 2,205, 64,194, 1, 22,128,246,127, 30, 0,128, 0, 11, 0, 0,
+ 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 5, 0,
+ 0, 0, 0, 0, 0, 0,103,101,116,110, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 11, 0, 0, 0, 0,
+ 0, 0, 0, 98,114, 97,110, 99,104,110, 97,109,101, 0, 4, 13, 0, 0, 0, 0,
+ 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 10, 0, 0,
+ 0, 0, 0, 0, 0, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 4, 16, 0, 0, 0,
+ 0, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0,
+ 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65, 68,
+ 68, 76, 69, 65, 70, 0, 0, 0, 0, 0, 45, 0, 0, 0, 25, 0, 0, 0, 25, 0,
+ 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0,
+ 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0,
+ 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0,
+ 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0,
+ 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0,
+ 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0,
+ 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0,
+ 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0,
+ 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 40, 0, 0, 0, 4, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 44, 0, 0,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0, 44, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0, 44, 0, 0, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 99,111,110,116, 0, 7, 0, 0, 0, 44, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 47, 0, 0, 0, 0,
+ 2, 0, 6, 14, 0, 0, 0,134, 0,192, 0, 87, 64, 64, 1, 22, 0, 1,128,133,
+128, 0, 0,192, 0, 0, 0, 1,193, 0, 0, 70, 1,192, 0,156, 64, 0, 2,133,
+ 0, 1, 0,192, 0, 0, 0, 0, 1,128, 0, 65, 65, 1, 0,156, 64, 0, 2, 30,
+ 0,128, 0, 6, 0, 0, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 98,114, 97,110,
+ 99,104,110, 97,109,101, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 83,101,116,
+ 65,116,116,114,105, 98,117,116,101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 78,
+ 65, 77, 69, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116,
+ 86, 97,108,117,101, 82,101, 99, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 14, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0,
+ 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 46, 0,
+ 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 47, 0,
+ 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101,
+ 0, 0, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
+ 0, 0, 0, 51, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157,
+ 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0, 84,114,101,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 50, 0, 0,
+ 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0,
+ 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 33, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11,
+ 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21,
+ 0, 0, 0, 40, 0, 0, 0, 24, 0, 0, 0, 47, 0, 0, 0, 42, 0, 0, 0, 51,
+ 0, 0, 0, 49, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 54,
+ 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 19, 0, 0, 0,
+ 32, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/tree_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/user.loh b/iup/srclua5/loh/user.loh
new file mode 100755
index 0000000..79e6b0d
--- /dev/null
+++ b/iup/srclua5/loh/user.loh
@@ -0,0 +1,36 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/user.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/user.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,117,115,101,
+114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 17, 0,
+ 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131, 69, 0,
+ 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, 0, 0,193,128,
+ 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0,117,115,101,114, 0, 4, 7, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9,
+ 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,
+119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14,
+ 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158,
+ 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 85,115,101,114,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0,
+ 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7,
+ 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14,
+ 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/user.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/user_be32.loh b/iup/srclua5/loh/user_be32.loh
new file mode 100755
index 0000000..953c75d
--- /dev/null
+++ b/iup/srclua5/loh/user_be32.loh
@@ -0,0 +1,36 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/user_be32.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/user_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,117,115,101,
+114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, 2,
+ 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, 0, 0,128, 0, 2,
+128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0, 0, 5,110,
+105, 99,107, 0, 4, 0, 0, 0, 5,117,115,101,114, 0, 4, 0, 0, 0, 7,112,
+ 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0,
+ 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0,
+ 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 14, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,
+119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 0,
+ 0, 0, 14, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157, 0,
+ 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 5, 85,115,101,114,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
+ 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 6, 0,
+ 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0,
+ 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
+ 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0,
+ 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 16,
+ 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/user_be32.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/user_be64.loh b/iup/srclua5/loh/user_be64.loh
new file mode 100755
index 0000000..a53b5c1
--- /dev/null
+++ b/iup/srclua5/loh/user_be64.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/user_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/user_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,117,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0,
+ 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,117,115,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98,
+ 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,
+108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4,
+ 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 85,115,101,114, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0,
+ 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9,
+ 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/user_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/user_le64.loh b/iup/srclua5/loh/user_le64.loh
new file mode 100755
index 0000000..3a16a8e
--- /dev/null
+++ b/iup/srclua5/loh/user_le64.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/user_le64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/user_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,117,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0,
+ 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,117,115,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98,
+ 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,
+108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4,
+ 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 85,115,101,114, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0,
+ 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9,
+ 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/user_le64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/user_le64w.loh b/iup/srclua5/loh/user_le64w.loh
new file mode 100755
index 0000000..8357384
--- /dev/null
+++ b/iup/srclua5/loh/user_le64w.loh
@@ -0,0 +1,39 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/user_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/user_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,117,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0,
+ 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,117,115,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9,
+ 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98,
+ 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,
+108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4,
+ 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 85,115,101,114, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0,
+ 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9,
+ 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0,
+ 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/user_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/val.loh b/iup/srclua5/loh/val.loh
new file mode 100755
index 0000000..7eff35b
--- /dev/null
+++ b/iup/srclua5/loh/val.loh
@@ -0,0 +1,41 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/val.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/val.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 9, 0, 0, 0, 64,118, 97,108,
+ 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 20, 0, 0,
+ 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,
+130, 74,192, 0, 0, 73, 0,194,131, 73, 0,194,132, 73, 0, 66,133, 9, 64, 0,
+131,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0,
+ 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128,
+ 0, 15, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 4, 0, 0, 0,
+118, 97,108, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,
+110, 0, 4, 2, 0, 0, 0,115, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97,
+ 99,107, 0, 4, 13, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98,
+ 0, 4, 2, 0, 0, 0,100, 0, 4, 16, 0, 0, 0, 98,117,116,116,111,110, 95,
+112,114,101,115,115, 95, 99, 98, 0, 4, 18, 0, 0, 0, 98,117,116,116,111,110,
+ 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 99,114,101,
+ 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,
+119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17,
+ 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157,
+ 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0,
+ 86, 97,108, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0,
+ 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11,
+ 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 19, 0, 0, 0, 19,
+ 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0,
+ 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/val.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/val_be32.loh b/iup/srclua5/loh/val_be32.loh
new file mode 100755
index 0000000..3bb4c4f
--- /dev/null
+++ b/iup/srclua5/loh/val_be32.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/val_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/val_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 9, 64,118, 97,108,
+ 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0,
+ 21, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, 64,
+ 9, 0, 0,192, 74,131,194, 0, 73,132,194, 0, 73,133, 66, 0, 73,131, 0, 64,
+ 9,133,195, 0, 9, 0, 0, 0,100,134,128, 64, 9, 0, 3,128, 69, 0, 0, 0,
+128, 1, 0, 64, 92, 0, 3,192, 69, 0, 0, 0,128, 0, 4, 0,193, 1,128, 64,
+ 92, 0,128, 0, 30, 0, 0, 0, 17, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4,
+ 0, 0, 0, 4,118, 97,108, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0,
+ 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101,
+ 97,116,105,111,110, 0, 4, 0, 0, 0, 2,115, 0, 4, 0, 0, 0, 9, 99, 97,
+108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 13,109,111,117,115,101,109,111,118,
+101, 95, 99, 98, 0, 4, 0, 0, 0, 2,100, 0, 4, 0, 0, 0, 16, 98,117,116,
+116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 4, 0, 0, 0, 18, 98,117,
+116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, 4, 0, 0, 0,
+ 8,105,110, 99,108,117,100,101, 0, 4, 0, 0, 0, 9,105,117,112,118, 97,108,
+ 46,104, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,
+116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,
+100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,
+115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 2, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0,133, 0,192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128,
+ 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 4, 86, 97,108, 0, 3, 63,240, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17,
+ 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6,
+ 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,
+103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0,
+ 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0,
+ 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 11, 0,
+ 0, 0, 20, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/val_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/val_be64.loh b/iup/srclua5/loh/val_be64.loh
new file mode 100755
index 0000000..15ecb4c
--- /dev/null
+++ b/iup/srclua5/loh/val_be64.loh
@@ -0,0 +1,45 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/val_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/val_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+ 64,118, 97,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 4, 20, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,
+129, 9, 64, 65,130, 74,192, 0, 0, 73, 0,194,131, 73, 0,194,132, 73, 0, 66,
+133, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0,
+ 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128,
+ 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105,
+ 99,107, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,118, 97,108, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 9, 0,
+ 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0,
+ 0, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, 2, 0,
+ 0, 0, 0, 0, 0, 0,100, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0, 98,117,116,
+116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 4, 18, 0, 0, 0, 0, 0,
+ 0, 0, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0,
+ 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133,
+ 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2,
+ 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 86, 97,108, 0, 3, 0, 0, 0,
+ 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0,
+ 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11,
+ 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 19, 0, 0, 0, 19,
+ 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,
+116,114,108, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/val_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/val_le64.loh b/iup/srclua5/loh/val_le64.loh
new file mode 100755
index 0000000..5567d6f
--- /dev/null
+++ b/iup/srclua5/loh/val_le64.loh
@@ -0,0 +1,47 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iupluacontrols51/val_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iupluacontrols51/val_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+ 64,118, 97,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 4, 21, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,
+129, 9, 64, 65,130, 74,192, 0, 0, 73, 0,194,131, 73, 0,194,132, 73, 0, 66,
+133, 9, 64, 0,131, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134, 69,128, 3,
+ 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4,
+ 0, 92, 64,128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0,110,105, 99,107, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,118, 97,108, 0,
+ 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115,
+ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4,
+ 13, 0, 0, 0, 0, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98,
+ 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,100, 0, 4, 16, 0, 0, 0, 0, 0, 0,
+ 0, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 4, 18, 0,
+ 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101,
+ 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101,
+ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,105,117,112,118, 97,108, 46,104, 0, 4,
+ 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,
+116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,
+101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0,
+ 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0,
+ 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 86, 97,108, 0, 3, 0, 0, 0, 0,
+ 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0,
+ 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 21, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0,
+ 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0,
+ 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 11, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/val_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/val_le64w.loh b/iup/srclua5/loh/val_le64w.loh
new file mode 100755
index 0000000..f9c6e3f
--- /dev/null
+++ b/iup/srclua5/loh/val_le64w.loh
@@ -0,0 +1,45 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/val_le64w.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/val_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+ 64,118, 97,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 4, 20, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,
+129, 9, 64, 65,130, 74,192, 0, 0, 73, 0,194,131, 73, 0,194,132, 73, 0, 66,
+133, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0,
+ 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128,
+ 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105,
+ 99,107, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,118, 97,108, 0, 4, 7, 0, 0,
+ 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0,
+ 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101,
+ 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 9, 0,
+ 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0,
+ 0, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, 2, 0,
+ 0, 0, 0, 0, 0, 0,100, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0, 98,117,116,
+116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 4, 18, 0, 0, 0, 0, 0,
+ 0, 0, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0,
+ 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,
+116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,
+117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,
+105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133,
+ 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2,
+ 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 86, 97,108, 0, 3, 0, 0, 0,
+ 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0,
+ 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11,
+ 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 19, 0, 0, 0, 19,
+ 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,
+116,114,108, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/val_le64w.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/vbox.loh b/iup/srclua5/loh/vbox.loh
new file mode 100755
index 0000000..efc2bc0
--- /dev/null
+++ b/iup/srclua5/loh/vbox.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/vbox.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/vbox.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,118, 98,111,
+120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 19, 0,
+ 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131,100, 64,
+ 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128,
+ 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, 0,
+ 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0,118, 98,111,
+120, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 66,
+ 79, 88, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0,
+ 0, 0, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7,
+ 0, 0, 0, 97,112,112,101,110,100, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,
+105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112,
+ 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,
+100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0,
+ 0, 0, 2, 0, 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128,
+ 0,156, 64,128, 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 65,112,
+112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0,
+ 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0,
+ 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,
+101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 15, 0, 0, 0, 17, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0,
+ 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0,
+ 0, 0, 86, 98,111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103,
+ 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0,
+ 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0,
+ 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0,
+ 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0,
+ 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/vbox.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/vbox_be32.loh b/iup/srclua5/loh/vbox_be32.loh
new file mode 100755
index 0000000..44e3024
--- /dev/null
+++ b/iup/srclua5/loh/vbox_be32.loh
@@ -0,0 +1,43 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/vbox_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/vbox_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,118, 98,111,
+120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 19, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, 0,
+ 64,100,132, 0, 64, 9, 0, 2, 64, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,
+128, 69, 0, 0, 0,128, 0, 2,192,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0,
+ 0, 12, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 5,118, 98,111,
+120, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 4, 66,
+ 79, 88, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0,
+ 0, 2, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0,
+ 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,
+105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112,
+ 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,
+100,103,101,116, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0,
+ 13, 0, 2, 0, 5, 0, 0, 0, 5, 0, 0, 0,133, 0, 0, 0,192, 0,128, 1,
+ 0, 1,128, 64,156, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 7, 65,112,
+112,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0,
+ 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0,
+ 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5,
+101,108,101,109, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,
+133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0,
+ 0, 5, 86, 98,111,120, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0,
+ 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
+ 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, 0,
+ 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0,
+ 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0,
+ 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 18, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/vbox_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/vbox_be64.loh b/iup/srclua5/loh/vbox_be64.loh
new file mode 100755
index 0000000..92962ee
--- /dev/null
+++ b/iup/srclua5/loh/vbox_be64.loh
@@ -0,0 +1,48 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/vbox_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/vbox_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,118, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,
+128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66,
+ 79, 88, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110,
+ 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,
+112,112,101,110,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0,
+ 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128,
+ 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,
+112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0,
+ 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0,
+ 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 86, 98,
+111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0,
+ 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/vbox_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/vbox_le64.loh b/iup/srclua5/loh/vbox_le64.loh
new file mode 100755
index 0000000..b10314c
--- /dev/null
+++ b/iup/srclua5/loh/vbox_le64.loh
@@ -0,0 +1,48 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/vbox_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/vbox_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,118, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,
+128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66,
+ 79, 88, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110,
+ 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,
+112,112,101,110,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0,
+ 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128,
+ 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,
+112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0,
+ 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0,
+ 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 86, 98,
+111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0,
+ 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/vbox_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/vbox_le64w.loh b/iup/srclua5/loh/vbox_le64w.loh
new file mode 100755
index 0000000..c3a3f70
--- /dev/null
+++ b/iup/srclua5/loh/vbox_le64w.loh
@@ -0,0 +1,48 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/vbox_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/vbox_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,118, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64,
+ 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,
+128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, 4, 7, 0, 0, 0, 0,
+ 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66,
+ 79, 88, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110,
+ 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,
+112,112,101,110,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,
+101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,
+112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0,
+ 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0,
+ 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0,
+ 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128,
+ 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,
+112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0,
+ 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0,
+ 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0,
+ 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 86, 98,
+111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,
+108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0,
+ 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/vbox_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/zbox.loh b/iup/srclua5/loh/zbox.loh
new file mode 100755
index 0000000..ad51b1c
--- /dev/null
+++ b/iup/srclua5/loh/zbox.loh
@@ -0,0 +1,61 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/zbox.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/zbox.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,122, 98,111,
+120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 22, 0,
+ 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64,
+ 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131,100, 64,
+ 0, 0, 9, 64, 0,132,100,128, 0, 0, 0, 0, 0, 0, 9, 64,128,132, 69,128,
+ 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0, 0, 0,193, 0,
+ 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5, 0, 0, 0,110,
+105, 99,107, 0, 4, 5, 0, 0, 0,122, 98,111,120, 0, 4, 7, 0, 0, 0,112,
+ 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0,
+ 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, 9, 0, 0,
+ 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 97,112,112,101,110,
+100, 0, 4, 17, 0, 0, 0, 83,101,116, 67,104,105,108,100,114,101,110, 78, 97,
+109,101,115, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,
+105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,
+115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 5, 8,
+ 0, 0, 0,133, 0, 0, 0,192, 0,128, 0,156, 64, 0, 1,133, 64, 0, 0,192,
+ 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0, 2, 0, 0, 0, 4,
+ 16, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0,
+ 4, 7, 0, 0, 0, 65,112,112,101,110,100, 0, 0, 0, 0, 0, 8, 0, 0, 0,
+ 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
+ 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0,
+104, 97,110,100,108,101, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0,101,
+108,101,109, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 16, 0, 0, 0, 24, 0, 0, 0, 0, 1, 0, 4, 12, 0, 0, 0, 26, 0, 0, 0,
+ 22, 0, 2,128, 65, 0, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22, 0, 1,128,
+133, 64, 0, 0,198, 64, 0, 0,156, 64, 0, 1, 76, 0,192, 0, 22,192,253,127,
+ 30, 0,128, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 16, 0,
+ 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 0, 0,
+ 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0,
+ 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 4, 0,
+ 0, 0,111, 98,106, 0, 0, 0, 0, 0, 11, 0, 0, 0, 2, 0, 0, 0,105, 0,
+ 3, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
+ 29, 0, 0, 0, 1, 2, 0, 4, 8, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,
+192, 0,128, 0,156, 64, 0, 1,133, 64, 0, 0,157, 0,128, 0,158, 0, 0, 0,
+ 30, 0,128, 0, 2, 0, 0, 0, 4, 17, 0, 0, 0, 83,101,116, 67,104,105,108,
+100,114,101,110, 78, 97,109,101,115, 0, 4, 5, 0, 0, 0, 90, 98,111,120, 0,
+ 0, 0, 0, 0, 8, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0,
+ 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0,
+ 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 7, 0,
+ 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0,
+ 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8,
+ 0, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 29,
+ 0, 0, 0, 29, 0, 0, 0, 26, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0,
+ 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/zbox.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/zbox_be32.loh b/iup/srclua5/loh/zbox_be32.loh
new file mode 100755
index 0000000..9c39f71
--- /dev/null
+++ b/iup/srclua5/loh/zbox_be32.loh
@@ -0,0 +1,61 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/zbox_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/zbox_be32.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,122, 98,111,
+120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 22, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65,
+ 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, 0,
+ 64,100,132, 0, 64, 9, 0, 0,128,100, 0, 0, 0, 0,132,128, 64, 9, 0, 2,
+128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,192, 69, 0, 0, 0,128, 0, 3,
+ 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 13, 4, 0, 0, 0, 5,110,
+105, 99,107, 0, 4, 0, 0, 0, 5,122, 98,111,120, 0, 4, 0, 0, 0, 7,112,
+ 97,114,101,110,116, 0, 4, 0, 0, 0, 4, 66, 79, 88, 0, 4, 0, 0, 0, 9,
+ 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0,
+ 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 7, 97,112,112,101,110,
+100, 0, 4, 0, 0, 0, 17, 83,101,116, 67,104,105,108,100,114,101,110, 78, 97,
+109,101,115, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,
+110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,
+105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,
+115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0, 2, 0, 5, 0,
+ 0, 0, 8, 0, 0, 0,133, 0,128, 0,192, 1, 0, 64,156, 0, 0, 64,133, 0,
+ 0, 0,192, 0,128, 1, 0, 1,128, 64,156, 0,128, 0, 30, 0, 0, 0, 2, 4,
+ 0, 0, 0, 16,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0,
+ 4, 0, 0, 0, 7, 65,112,112,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 8,
+ 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 13,
+ 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 7,
+104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5,101,
+108,101,109, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 16, 0, 0, 0, 24, 0, 1, 0, 4, 0, 0, 0, 12, 0, 0, 0, 26,
+128, 2, 0, 22, 0, 0, 0, 65, 0, 0, 64,134, 0, 0, 0,154,128, 1, 0, 22,
+ 0, 0, 64,133, 0, 0, 64,198, 1, 0, 64,156, 0,192, 0, 76,127,253,192, 22,
+ 0,128, 0, 30, 0, 0, 0, 2, 3, 63,240, 0, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 16,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 0, 0,
+ 0, 0, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0,
+ 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0,
+ 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0,
+ 0, 4,111, 98,106, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 2,105, 0,
+ 0, 0, 0, 3, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26,
+ 0, 0, 0, 29, 1, 2, 0, 4, 0, 0, 0, 8, 0, 0, 0,132, 1, 64, 0,134,
+ 0,128, 0,192, 1, 0, 64,156, 0, 0, 64,133, 0,128, 0,157, 0, 0, 0,158,
+ 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 17, 83,101,116, 67,104,105,108,
+100,114,101,110, 78, 97,109,101,115, 0, 4, 0, 0, 0, 5, 90, 98,111,120, 0,
+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27,
+ 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29,
+ 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0,
+ 0, 7, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0,
+ 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0,
+ 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0, 24, 0, 0, 0, 16, 0,
+ 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 26, 0, 0, 0, 31, 0, 0, 0, 31, 0,
+ 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0,
+ 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7,
+ 0, 0, 0, 21, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/zbox_be32.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/zbox_be64.loh b/iup/srclua5/loh/zbox_be64.loh
new file mode 100755
index 0000000..df7ee45
--- /dev/null
+++ b/iup/srclua5/loh/zbox_be64.loh
@@ -0,0 +1,67 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/zbox_be64.lo")==0) lua_call(L, 0, 0);
+*/
+/* ../obj/iuplua51/zbox_be64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,122, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 22, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131,100, 64, 0, 0, 9, 64, 0,132,100,128, 0, 0, 0, 0, 0, 0, 9, 64,
+128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0,
+ 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,122, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0,
+ 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,112,112,101,110,100, 0, 4, 17,
+ 0, 0, 0, 0, 0, 0, 0, 83,101,116, 67,104,105,108,100,114,101,110, 78, 97,
+109,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,
+108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 5, 8,
+ 0, 0, 0,133, 0, 0, 0,192, 0,128, 0,156, 64, 0, 1,133, 64, 0, 0,192,
+ 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0, 2, 0, 0, 0, 4,
+ 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110,
+ 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0,
+ 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
+ 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0,
+ 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 16, 0, 0, 0, 24, 0, 0, 0, 0, 1, 0, 4, 12, 0, 0, 0, 26, 0, 0, 0,
+ 22, 0, 2,128, 65, 0, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22, 0, 1,128,
+133, 64, 0, 0,198, 64, 0, 0,156, 64, 0, 1, 76, 0,192, 0, 22,192,253,127,
+ 30, 0,128, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 16, 0,
+ 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,
+101, 0, 0, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0,
+ 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 24, 0, 0, 0, 2, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,111, 98,106, 0, 0, 0, 0, 0, 11, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 3, 0, 0, 0, 11, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 29, 0, 0, 0,
+ 1, 2, 0, 4, 8, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,192, 0,128, 0,
+156, 64, 0, 1,133, 64, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0,
+ 2, 0, 0, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 67,104,105,108,
+100,114,101,110, 78, 97,109,101,115, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 90,
+ 98,111,120, 0, 0, 0, 0, 0, 8, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0,
+ 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0,
+ 29, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,
+103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 14,
+ 0, 0, 0, 11, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 29, 0, 0, 0, 29,
+ 0, 0, 0, 26, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0,
+ 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/zbox_be64.lo")==0) lua_call(L, 0, 0);
+}
diff --git a/iup/srclua5/loh/zbox_le64.loh b/iup/srclua5/loh/zbox_le64.loh
new file mode 100755
index 0000000..138b8c7
--- /dev/null
+++ b/iup/srclua5/loh/zbox_le64.loh
@@ -0,0 +1,67 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/zbox_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/zbox_le64.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,122, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 22, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131,100, 64, 0, 0, 9, 64, 0,132,100,128, 0, 0, 0, 0, 0, 0, 9, 64,
+128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0,
+ 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,122, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0,
+ 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,112,112,101,110,100, 0, 4, 17,
+ 0, 0, 0, 0, 0, 0, 0, 83,101,116, 67,104,105,108,100,114,101,110, 78, 97,
+109,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,
+108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 5, 8,
+ 0, 0, 0,133, 0, 0, 0,192, 0,128, 0,156, 64, 0, 1,133, 64, 0, 0,192,
+ 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0, 2, 0, 0, 0, 4,
+ 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110,
+ 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0,
+ 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
+ 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0,
+ 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 16, 0, 0, 0, 24, 0, 0, 0, 0, 1, 0, 4, 12, 0, 0, 0, 26, 0, 0, 0,
+ 22, 0, 2,128, 65, 0, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22, 0, 1,128,
+133, 64, 0, 0,198, 64, 0, 0,156, 64, 0, 1, 76, 0,192, 0, 22,192,253,127,
+ 30, 0,128, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 16, 0,
+ 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,
+101, 0, 0, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0,
+ 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 24, 0, 0, 0, 2, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,111, 98,106, 0, 0, 0, 0, 0, 11, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 3, 0, 0, 0, 11, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 29, 0, 0, 0,
+ 1, 2, 0, 4, 8, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,192, 0,128, 0,
+156, 64, 0, 1,133, 64, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0,
+ 2, 0, 0, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 67,104,105,108,
+100,114,101,110, 78, 97,109,101,115, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 90,
+ 98,111,120, 0, 0, 0, 0, 0, 8, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0,
+ 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0,
+ 29, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,
+103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 14,
+ 0, 0, 0, 11, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 29, 0, 0, 0, 29,
+ 0, 0, 0, 26, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0,
+ 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/zbox_le64.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/loh/zbox_le64w.loh b/iup/srclua5/loh/zbox_le64w.loh
new file mode 100755
index 0000000..0a80b36
--- /dev/null
+++ b/iup/srclua5/loh/zbox_le64w.loh
@@ -0,0 +1,67 @@
+/* code automatically generated by bin2c -- DO NOT EDIT */
+{
+/* #include'ing this file in a C program is equivalent to calling
+ if (luaL_loadfile(L,"../obj/iuplua51/zbox_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+*/
+/* ../obj/iuplua51/zbox_le64w.lo */
+static const unsigned char B1[]={
+ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 64,122, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 4, 22, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64,
+ 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,
+128,131,100, 64, 0, 0, 9, 64, 0,132,100,128, 0, 0, 0, 0, 0, 0, 9, 64,
+128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0,
+ 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0,122, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,
+116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0,
+ 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0,
+ 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,
+107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,112,112,101,110,100, 0, 4, 17,
+ 0, 0, 0, 0, 0, 0, 0, 83,101,116, 67,104,105,108,100,114,101,110, 78, 97,
+109,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,
+108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,
+101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0,
+ 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,
+ 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 5, 8,
+ 0, 0, 0,133, 0, 0, 0,192, 0,128, 0,156, 64, 0, 1,133, 64, 0, 0,192,
+ 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0, 2, 0, 0, 0, 4,
+ 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110,
+ 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0,
+ 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
+ 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0,
+ 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0,
+ 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 16, 0, 0, 0, 24, 0, 0, 0, 0, 1, 0, 4, 12, 0, 0, 0, 26, 0, 0, 0,
+ 22, 0, 2,128, 65, 0, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22, 0, 1,128,
+133, 64, 0, 0,198, 64, 0, 0,156, 64, 0, 1, 76, 0,192, 0, 22,192,253,127,
+ 30, 0,128, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 16, 0,
+ 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,
+101, 0, 0, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0,
+ 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0,
+ 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 24, 0, 0, 0, 2, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,111, 98,106, 0, 0, 0, 0, 0, 11, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 3, 0, 0, 0, 11, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 29, 0, 0, 0,
+ 1, 2, 0, 4, 8, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,192, 0,128, 0,
+156, 64, 0, 1,133, 64, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0,
+ 2, 0, 0, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 67,104,105,108,
+100,114,101,110, 78, 97,109,101,115, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 90,
+ 98,111,120, 0, 0, 0, 0, 0, 8, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0,
+ 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0,
+ 29, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,
+115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,
+103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 99,116,114,108, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 14,
+ 0, 0, 0, 11, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 29, 0, 0, 0, 29,
+ 0, 0, 0, 26, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32,
+ 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0,
+ 21, 0, 0, 0, 0, 0, 0, 0,
+};
+
+ if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/zbox_le64w.lo")==0) lua_pcall(L, 0, 0, 0);
+}
diff --git a/iup/srclua5/make_uname b/iup/srclua5/make_uname
new file mode 100755
index 0000000..4e01bd9
--- /dev/null
+++ b/iup/srclua5/make_uname
@@ -0,0 +1,9 @@
+#This builds all the libraries of the folder for 1 uname
+
+tecmake $1 $2 $3 $4 $5 $6 $7 $8
+tecmake $1 MF=iupcd $2 $3 $4 $5 $6 $7 $8
+tecmake $1 MF=iupcontrols $2 $3 $4 $5 $6 $7 $8
+tecmake $1 MF=iup_pplot $2 $3 $4 $5 $6 $7 $8
+tecmake $1 MF=iupgl $2 $3 $4 $5 $6 $7 $8
+tecmake $1 MF=iupim $2 $3 $4 $5 $6 $7 $8
+tecmake $1 MF=iupimglib $2 $3 $4 $5 $6 $7 $8
diff --git a/iup/srclua5/make_uname.bat b/iup/srclua5/make_uname.bat
new file mode 100755
index 0000000..ecf9de1
--- /dev/null
+++ b/iup/srclua5/make_uname.bat
@@ -0,0 +1,11 @@
+@echo off
+REM This builds all the libraries of the folder for 1 uname
+
+call tecmake %1 %2 %3 %4 %5 %6 %7 %8
+call tecmake %1 "MF=iupcd" %2 %3 %4 %5 %6 %7 %8
+call tecmake %1 "MF=iupcontrols" %2 %3 %4 %5 %6 %7 %8
+call tecmake %1 "MF=iup_pplot" %2 %3 %4 %5 %6 %7 %8
+call tecmake %1 "MF=iupgl" %2 %3 %4 %5 %6 %7 %8
+call tecmake %1 "MF=iupim" %2 %3 %4 %5 %6 %7 %8
+call tecmake %1 "MF=iupimglib" %2 %3 %4 %5 %6 %7 %8
+call tecmake %1 "MF=iupole" %2 %3 %4 %5 %6 %7 %8
diff --git a/iup/srclua5/matrix.lua b/iup/srclua5/matrix.lua
new file mode 100755
index 0000000..81aa732
--- /dev/null
+++ b/iup/srclua5/matrix.lua
@@ -0,0 +1,46 @@
+------------------------------------------------------------------------------
+-- Matrix class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "matrix",
+ parent = WIDGET,
+ creation = "-",
+ callback = {
+ action_cb = "nnnns",
+ click_cb = "nns",
+ release_cb = "nns",
+ drop_cb = "inn",
+ dropcheck_cb = "nn",
+ draw_cb = "nnnnnnn", -- fake definitions to be replaced by matrixfuncs module
+ dropselect_cb = "nnisnn",
+ edition_cb = "nnnn",
+ enteritem_cb = "nn",
+ leaveitem_cb = "nn",
+ mousemove_cb = "nn",
+ scrolltop_cb = "nn",
+ fgcolor_cb = "nn", -- fake definitions to be replaced by matrixfuncs module
+ bgcolor_cb = "nn",
+ font_cb = {"nn", ret = "s"}, -- ret is return type
+ value_cb = {"nn", ret = "s"}, -- ret is return type
+ value_edit_cb = "nns",
+ mark_cb = "nn",
+ markedit_cb = "nnn",
+ },
+ include = "iupcontrols.h",
+ extrafuncs = 1,
+}
+
+function ctrl.createElement(class, arg)
+ return Matrix(arg.action)
+end
+
+function ctrl.setcell(handle, l, c, val)
+ SetAttribute(handle,l..":"..c,val)
+end
+
+function ctrl.getcell(handle, l, c)
+ return GetAttribute(handle,l..":"..c)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/menu.lua b/iup/srclua5/menu.lua
new file mode 100755
index 0000000..89cd241
--- /dev/null
+++ b/iup/srclua5/menu.lua
@@ -0,0 +1,55 @@
+------------------------------------------------------------------------------
+-- Menu class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "menu",
+ parent = BOX,
+ creation = "-",
+ callback = {
+ open_cb = "",
+ menuclose_cb = "",
+ }
+}
+
+function ctrl.popup(handle, x, y)
+ Popup(handle, x, y)
+end
+
+function ctrl.append(handle, elem)
+ Append(handle, elem)
+end
+
+function ctrl.createElement(class, arg)
+ local n = #arg
+ for i=1,n do
+ if type(arg[i]) == "table" then
+ itemarg = {}
+ for u,v in pairs(arg[i]) do
+ if type(u) ~= "number" then
+ itemarg[u] = v
+ end
+ end
+ if type(arg[i][1]) == "string" and (type(arg[i][2]) == "function" or type(arg[i][2]) == "string") then
+ itemarg.title = arg[i][1]
+ itemarg.action = arg[i][2]
+ arg[i] = item(itemarg)
+ elseif type(arg[i][1]) == "string" and type(arg[i][2]) == "userdata" then
+ itemarg[1] = arg[i][2]
+ itemarg.title = arg[i][1]
+ arg[i] = submenu(itemarg)
+ end
+ end
+ end
+ return Menu()
+end
+
+function ctrl.showxy(handle, x, y)
+ return ShowXY(handle, x, y)
+end
+
+function ctrl.destroy(handle)
+ return Destroy(handle)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/messagedlg.lua b/iup/srclua5/messagedlg.lua
new file mode 100755
index 0000000..e81eede
--- /dev/null
+++ b/iup/srclua5/messagedlg.lua
@@ -0,0 +1,26 @@
+------------------------------------------------------------------------------
+-- MessageDlg class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "messagedlg",
+ parent = WIDGET,
+ creation = "",
+ funcname = "MessageDlg",
+ callback = {}
+}
+
+function ctrl.popup(handle, x, y)
+ Popup(handle,x,y)
+end
+
+function ctrl.destroy(handle)
+ return Destroy(handle)
+end
+
+function ctrl.createElement(class, arg)
+ return MessageDlg()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
+
diff --git a/iup/srclua5/multiline.lua b/iup/srclua5/multiline.lua
new file mode 100755
index 0000000..9ae766e
--- /dev/null
+++ b/iup/srclua5/multiline.lua
@@ -0,0 +1,19 @@
+------------------------------------------------------------------------------
+-- Multiline class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "multiline",
+ parent = WIDGET,
+ creation = "-",
+ callback = {
+ action = "ns",
+ },
+ funcname = "MultiLine",
+}
+
+function ctrl.createElement(class, arg)
+ return MultiLine()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/normalizer.lua b/iup/srclua5/normalizer.lua
new file mode 100755
index 0000000..201aab0
--- /dev/null
+++ b/iup/srclua5/normalizer.lua
@@ -0,0 +1,28 @@
+
+------------------------------------------------------------------------------
+-- Normalizer class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "normalizer",
+ parent = WIDGET,
+ creation = "-",
+ callback = {}
+}
+
+function ctrl.setAttributes(object, arg)
+ local handle = rawget(object, "handle")
+ local n = #arg
+ for i = 1, n do
+ if iupGetClass(arg[i]) == "iup handle" then
+ object.addcontrol = arg[i]
+ end
+ end
+ WIDGET.setAttributes(object, arg)
+end
+
+function ctrl.createElement(class, arg)
+ return Normalizer()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/olecontrol.lua b/iup/srclua5/olecontrol.lua
new file mode 100755
index 0000000..902977b
--- /dev/null
+++ b/iup/srclua5/olecontrol.lua
@@ -0,0 +1,54 @@
+------------------------------------------------------------------------------
+-- OleControl class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "olecontrol",
+ parent = WIDGET,
+ creation = "s",
+ funcname = "OleControl",
+ callback = {},
+ include = "iupole.h",
+ extracode = [[
+int iupolelua_open(lua_State* L)
+{
+ if (iuplua_opencall_internal(L))
+ IupOleControlOpen();
+
+ iuplua_changeEnv(L);
+ iupolecontrollua_open(L);
+ iuplua_returnEnv(L);
+ return 0;
+}
+
+/* obligatory to use require"iupluaole" */
+int luaopen_iupluaole(lua_State* L)
+{
+ return iupolelua_open(L);
+}
+
+/* obligatory to use require"iupluaole51" */
+int luaopen_iupluaole51(lua_State* L)
+{
+ return iupolelua_open(L);
+}
+
+]]
+}
+
+function ctrl.createElement(class, arg)
+ return OleControl(arg[1])
+end
+
+function ctrl.CreateLuaCOM(handle)
+ -- if luacom is loaded, use it to access methods and properties
+ -- of the control
+ if luacom then
+ local punk = handle.iunknown
+ if punk then
+ handle.com = luacom.CreateLuaCOM(luacom.ImportIUnknown(punk))
+ end
+ end
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/pplot.lua b/iup/srclua5/pplot.lua
new file mode 100755
index 0000000..5d6a2f4
--- /dev/null
+++ b/iup/srclua5/pplot.lua
@@ -0,0 +1,31 @@
+------------------------------------------------------------------------------
+-- PPlot class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "pplot",
+ parent = WIDGET,
+ creation = "",
+ funcname = "PPlot",
+ callback = {
+ select_cb = "nnffn",
+ selectbegin_cb = "",
+ selectend_cb = "",
+ predraw_cb = "n", -- fake definitions to be replaced by pplotfuncs module
+ postdraw_cb = "n", -- fake definitions to be replaced by pplotfuncs module
+ edit_cb = "nnffff", -- fake definitions to be replaced by pplotfuncs module
+ editbegin_cb = "",
+ editend_cb = "",
+ delete_cb = "nnff",
+ deletebegin_cb = "",
+ deleteend_cb = "",
+ },
+ include = "iup_pplot.h",
+ extrafuncs = 1,
+}
+
+function ctrl.createElement(class, arg)
+ return PPlot(arg.action)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/progressbar.lua b/iup/srclua5/progressbar.lua
new file mode 100755
index 0000000..16b4a09
--- /dev/null
+++ b/iup/srclua5/progressbar.lua
@@ -0,0 +1,17 @@
+------------------------------------------------------------------------------
+-- ProgressBar class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "progressbar",
+ parent = WIDGET,
+ creation = "",
+ funcname = "ProgressBar",
+ callback = {}
+}
+
+function ctrl.createElement(class, arg)
+ return ProgressBar()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/radio.lua b/iup/srclua5/radio.lua
new file mode 100755
index 0000000..1cdd3a6
--- /dev/null
+++ b/iup/srclua5/radio.lua
@@ -0,0 +1,33 @@
+------------------------------------------------------------------------------
+-- Radio class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "radio",
+ parent = WIDGET,
+ creation = "i",
+ callback = {}
+}
+
+function ctrl.CreateChildrenNames(obj)
+ if obj then
+ if obj.parent.parent == BOX then
+ local i = 1
+ while obj[i] do
+ ctrl.CreateChildrenNames (obj[i])
+ i = i+1
+ end
+ elseif obj.parent == IUPFRAME then
+ ctrl.CreateChildrenNames (obj[1])
+ else
+ ihandle_setname(obj)
+ end
+ end
+end
+
+function ctrl.createElement(class, arg)
+ ctrl.CreateChildrenNames(arg[1])
+ return Radio(arg[1])
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/sbox.lua b/iup/srclua5/sbox.lua
new file mode 100755
index 0000000..9ee63ba
--- /dev/null
+++ b/iup/srclua5/sbox.lua
@@ -0,0 +1,16 @@
+------------------------------------------------------------------------------
+-- Sbox class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "sbox",
+ parent = WIDGET,
+ creation = "i",
+ callback = {}
+}
+
+function ctrl.createElement(class, arg)
+ return Sbox(arg[1])
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/separator.lua b/iup/srclua5/separator.lua
new file mode 100755
index 0000000..1841d6a
--- /dev/null
+++ b/iup/srclua5/separator.lua
@@ -0,0 +1,16 @@
+------------------------------------------------------------------------------
+-- Separator class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "separator",
+ parent = WIDGET,
+ creation = "",
+ callback = {}
+}
+
+function ctrl.createElement(class, arg)
+ return Separator()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/spin.lua b/iup/srclua5/spin.lua
new file mode 100755
index 0000000..b6e2044
--- /dev/null
+++ b/iup/srclua5/spin.lua
@@ -0,0 +1,18 @@
+------------------------------------------------------------------------------
+-- Spin class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "spin",
+ parent = WIDGET,
+ creation = "",
+ callback = {
+ spin_cb = "n",
+ },
+}
+
+function ctrl.createElement(class, arg)
+ return Spin(arg.action)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/spinbox.lua b/iup/srclua5/spinbox.lua
new file mode 100755
index 0000000..c671e6a
--- /dev/null
+++ b/iup/srclua5/spinbox.lua
@@ -0,0 +1,18 @@
+------------------------------------------------------------------------------
+-- SpinBox class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "spinbox",
+ parent = WIDGET,
+ creation = "i",
+ callback = {
+ spin_cb = "n",
+ },
+}
+
+function ctrl.createElement(class, arg)
+ return Spinbox(arg[1])
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/submenu.lua b/iup/srclua5/submenu.lua
new file mode 100755
index 0000000..5dc76d4
--- /dev/null
+++ b/iup/srclua5/submenu.lua
@@ -0,0 +1,19 @@
+------------------------------------------------------------------------------
+-- Submenu class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "submenu",
+ parent = WIDGET,
+ creation = "Si",
+ callback = {
+-- open_cb = "", -- already registered by the menu
+-- menuclose_cb = "", -- already registered by the menu
+ }
+}
+
+function ctrl.createElement(class, arg)
+ return Submenu(arg.title, arg[1])
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/tabs.lua b/iup/srclua5/tabs.lua
new file mode 100755
index 0000000..3dc69bb
--- /dev/null
+++ b/iup/srclua5/tabs.lua
@@ -0,0 +1,31 @@
+------------------------------------------------------------------------------
+-- Tabs class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "tabs",
+ parent = WIDGET,
+ creation = "v",
+ callback = {
+ tabchange_cb = "ii",
+ },
+ funcname = "Tabsv",
+ createfunc = [[
+static int Tabsv(lua_State *L)
+{
+ Ihandle **hlist = iuplua_checkihandle_array(L, 1);
+ Ihandle *h = IupTabsv(hlist);
+ iuplua_plugstate(L, h);
+ iuplua_pushihandle_raw(L, h);
+ free(hlist);
+ return 1;
+}
+
+]],
+}
+
+function ctrl.createElement(class, arg)
+ return Tabsv(arg)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/text.lua b/iup/srclua5/text.lua
new file mode 100755
index 0000000..e01dab5
--- /dev/null
+++ b/iup/srclua5/text.lua
@@ -0,0 +1,20 @@
+------------------------------------------------------------------------------
+-- Text class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "text",
+ parent = WIDGET,
+ creation = "-",
+ callback = {
+ action = "ns",
+ caret_cb = "nnn",
+ valuechanged_cb = "", -- used by many other controls
+ }
+}
+
+function ctrl.createElement(class, arg)
+ return Text()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/timer.lua b/iup/srclua5/timer.lua
new file mode 100755
index 0000000..53cda70
--- /dev/null
+++ b/iup/srclua5/timer.lua
@@ -0,0 +1,18 @@
+------------------------------------------------------------------------------
+-- Timer class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "timer",
+ parent = WIDGET,
+ creation = "",
+ callback = {
+ action_cb = "",
+ },
+}
+
+function ctrl.createElement(class, arg)
+ return Timer()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/toggle.lua b/iup/srclua5/toggle.lua
new file mode 100755
index 0000000..da9380b
--- /dev/null
+++ b/iup/srclua5/toggle.lua
@@ -0,0 +1,18 @@
+------------------------------------------------------------------------------
+-- Toggle class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "toggle",
+ parent = WIDGET,
+ creation = "S-",
+ callback = {
+ action = "n",
+ }
+}
+
+function ctrl.createElement(class, arg)
+ return Toggle(arg.title)
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/tree.lua b/iup/srclua5/tree.lua
new file mode 100755
index 0000000..bd8daf7
--- /dev/null
+++ b/iup/srclua5/tree.lua
@@ -0,0 +1,76 @@
+------------------------------------------------------------------------------
+-- Tree class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "tree",
+ parent = WIDGET,
+ creation = "",
+ callback = {
+ selection_cb = "nn",
+ multiselection_cb = "nn", -- fake definition to be replaced by treefuncs module
+ branchopen_cb = "n",
+ branchclose_cb = "n",
+ executeleaf_cb = "n",
+ renamenode_cb = "ns",
+ noderemoved_cb = "ns", -- fake definition to be replaced by treefuncs module
+ rename_cb = "ns",
+ showrename_cb = "n",
+ rightclick_cb = "n",
+ dragdrop_cb = "nnnn",
+ },
+ extrafuncs = 1,
+}
+
+local function TreeSetAttributeHandle(handle, name, value)
+ if iupGetClass(value) == "iup handle" then value = ihandle_setname(value) end
+ SetAttribute(handle, name, value)
+end
+
+function TreeSetNodeAttrib(handle, node, id)
+ if node.color then SetAttribute(handle, "COLOR"..id, node.color) end
+ if node.state then SetAttribute(handle, "STATE"..id, node.state) end
+ if node.titlefont then SetAttribute(handle, "TITLEFONT"..id, node.titlefont) end
+ if node.marked then SetAttribute(handle, "MARKED"..id, node.marked) end
+ if node.image then TreeSetAttributeHandle(handle, "IMAGE"..id, node.image) end
+ if node.imageexpanded then TreeSetAttributeHandle(handle, "IMAGEEXPANDED"..id, node.imageexpanded) end
+ if node.userid then TreeSetUserId(handle, id, node.userid) end
+end
+
+function TreeSetValueRec(handle, t, id)
+ if t == nil then return end
+ local cont = #t
+ while cont >= 0 do
+ local node = t[cont]
+ if type(node) == "table" then
+ if node.branchname then
+ SetAttribute(handle, "ADDBRANCH"..id, node.branchname)
+ TreeSetNodeAttrib(handle, node, id+1)
+ TreeSetValueRec(handle, node, id+1)
+ elseif node.leafname then
+ SetAttribute(handle, "ADDLEAF"..id, node.leafname)
+ TreeSetNodeAttrib(handle, node, id+1)
+ end
+ else
+ if node then
+ SetAttribute(handle, "ADDLEAF"..id, node)
+ end
+ end
+ cont = cont - 1
+ end
+end
+
+function TreeSetValue(handle, t, id)
+ if (not id) then
+ id = 0 -- default is the root
+ if t.branchname then SetAttribute(handle, "TITLE0", t.branchname) end
+ TreeSetNodeAttrib(handle, t, 0)
+ end
+ TreeSetValueRec(handle, t, id)
+end
+
+function ctrl.createElement(class, arg)
+ return Tree()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/user.lua b/iup/srclua5/user.lua
new file mode 100755
index 0000000..c202be3
--- /dev/null
+++ b/iup/srclua5/user.lua
@@ -0,0 +1,17 @@
+
+------------------------------------------------------------------------------
+-- User class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "user",
+ parent = WIDGET,
+ creation = "",
+ callback = {}
+}
+
+function ctrl.createElement(class, arg)
+ return User()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/val.lua b/iup/srclua5/val.lua
new file mode 100755
index 0000000..ba94255
--- /dev/null
+++ b/iup/srclua5/val.lua
@@ -0,0 +1,20 @@
+------------------------------------------------------------------------------
+-- Val class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "val",
+ parent = WIDGET,
+ creation = "s",
+ callback = {
+ mousemove_cb = "d",
+ button_press_cb = "d",
+ button_release_cb = "d",
+ },
+}
+
+function ctrl.createElement(class, arg)
+ return Val(arg[1])
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/vbox.lua b/iup/srclua5/vbox.lua
new file mode 100755
index 0000000..b98984c
--- /dev/null
+++ b/iup/srclua5/vbox.lua
@@ -0,0 +1,20 @@
+------------------------------------------------------------------------------
+-- VBox class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "vbox",
+ parent = BOX,
+ creation = "-",
+ callback = {}
+}
+
+function ctrl.append (handle, elem)
+ Append(handle, elem)
+end
+
+function ctrl.createElement(class, arg)
+ return Vbox()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srclua5/zbox.lua b/iup/srclua5/zbox.lua
new file mode 100755
index 0000000..579c00b
--- /dev/null
+++ b/iup/srclua5/zbox.lua
@@ -0,0 +1,32 @@
+------------------------------------------------------------------------------
+-- ZBox class
+------------------------------------------------------------------------------
+local ctrl = {
+ nick = "zbox",
+ parent = BOX,
+ creation = "-",
+ callback = {}
+}
+
+function ctrl.append (handle, elem)
+ ihandle_setname(elem)
+ Append(handle, elem)
+end
+
+function ctrl.SetChildrenNames(obj)
+ if obj then
+ local i = 1
+ while obj[i] do
+ ihandle_setname(obj[i])
+ i = i+1
+ end
+ end
+end
+
+function ctrl.createElement(class, arg)
+ ctrl.SetChildrenNames(arg)
+ return Zbox()
+end
+
+iupRegisterWidget(ctrl)
+iupSetClass(ctrl, "iup widget")
diff --git a/iup/srcole/config.mak b/iup/srcole/config.mak
new file mode 100755
index 0000000..af0ef50
--- /dev/null
+++ b/iup/srcole/config.mak
@@ -0,0 +1,17 @@
+PROJNAME = iup
+LIBNAME = iupole
+OPT = YES
+
+INCLUDES = ../include ../src
+LDIR = ../lib/$(TEC_UNAME)
+LIBS = iup
+
+SRC = iup_olecontrol.cpp \
+ tLegacy.cpp \
+ tAmbientProperties.cpp \
+ tDispatch.cpp \
+ tOleClientSite.cpp \
+ tOleControlSite.cpp \
+ tOleHandler.cpp \
+ tOleInPlaceFrame.cpp \
+ tOleInPlaceSite.cpp
diff --git a/iup/srcole/iup_olecontrol.cpp b/iup/srcole/iup_olecontrol.cpp
new file mode 100755
index 0000000..20431c5
--- /dev/null
+++ b/iup/srcole/iup_olecontrol.cpp
@@ -0,0 +1,200 @@
+/*
+ * iupolectl.cpp
+ *
+ * CPI que implementa um container OLE
+ */
+
+#include "tOleHandler.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "iup.h"
+#include "iupole.h"
+
+#include "iup_object.h"
+#include "iup_register.h"
+#include "iup_attrib.h"
+#include "iup_stdcontrols.h"
+#include "iup_str.h"
+#include "iup_layout.h"
+
+
+struct _IcontrolData
+{
+ iupCanvas canvas; /* from IupCanvas (must reserve it) */
+
+ tOleHandler* olehandler;
+};
+
+static char* iOleControlGetDesignModeAttrib(Ihandle* ih)
+{
+ if (ih->data->olehandler->m_ambientProp.getDesignMode())
+ return "YES";
+ else
+ return "NO";
+}
+
+static int iOleControlSetDesignModeAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ ih->data->olehandler->m_ambientProp.setDesignMode(true, true);
+ else
+ ih->data->olehandler->m_ambientProp.setDesignMode(false, true);
+ return 1;
+}
+
+static int iOleControlSetDesignModeDontNotifyAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrBoolean(value))
+ ih->data->olehandler->m_ambientProp.setDesignMode(true, false);
+ else
+ ih->data->olehandler->m_ambientProp.setDesignMode(false, false);
+ return 1;
+}
+
+static char* iOleControlGetIUnknownAttrib(Ihandle* ih)
+{
+ IUnknown *punk = NULL;
+ ih->data->olehandler->ObjectGet(&punk);
+ return (char*)punk;
+}
+
+static int iOleControlResize_CB(Ihandle *ih)
+{
+ if (!ih->data->olehandler->m_hWnd)
+ return IUP_DEFAULT;
+
+ ih->data->olehandler->OnShow();
+
+ return IUP_DEFAULT;
+}
+
+static void iOleControlComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand)
+{
+ long natural_w = 0, natural_h = 0;
+ (void)expand; /* unset if not a container */
+
+ ih->data->olehandler->GetNaturalSize(&natural_w, &natural_h);
+
+ *w = natural_w;
+ *h = natural_h;
+}
+
+static void iOleControlLayoutUpdateMethod(Ihandle* ih)
+{
+ SIZEL szl;
+ szl.cx = ih->currentwidth;
+ szl.cy = ih->currentheight;
+ ih->data->olehandler->SizeSet(&szl, TRUE, TRUE);
+ ih->data->olehandler->UpdateInPlaceObjectRects(NULL, TRUE);
+}
+
+static int iOleControlMapMethod(Ihandle* ih)
+{
+ /* reset the canvas BGCOLOR */
+ IupSetAttribute(ih, "BACKGROUND", NULL);
+
+ ih->data->olehandler->m_hWnd = ih->handle;
+
+ return IUP_NOERROR;
+}
+
+static int iOleControlCreateMethod(Ihandle* ih, void **params)
+{
+ CLSID clsid;
+
+ if (!params || !(params[0]))
+ return IUP_ERROR;
+
+ char *progID = (char*)params[0];
+
+ /* free the data alocated by IupCanvas */
+ if (ih->data) free(ih->data);
+ ih->data = iupALLOCCTRLDATA();
+
+ /* change the IupCanvas default values */
+ iupAttribSetStr(ih, "BORDER", "NO");
+
+ /* IupCanvas callbacks */
+ IupSetCallback(ih,"RESIZE_CB",(Icallback)iOleControlResize_CB);
+
+ size_t len = strlen(progID)+1;
+ wchar_t* wcProgId = (wchar_t*) malloc(len * sizeof(wchar_t));
+ mbstowcs(wcProgId, progID, len);
+ HRESULT hr = CLSIDFromProgID(wcProgId, &clsid);
+ free(wcProgId);
+ if(FAILED(hr))
+ return IUP_ERROR;
+
+ ih->data->olehandler = new tOleHandler();
+ if (ih->data->olehandler->Create(&clsid) == CREATE_FAILED)
+ return IUP_ERROR;
+
+ return IUP_NOERROR;
+}
+
+static void iOleControlDestroyMethod(Ihandle* ih)
+{
+ ih->data->olehandler->Close(true);
+ delete ih->data->olehandler;
+}
+
+static void iOleControlRelease(Iclass* ic)
+{
+ (void)ic;
+ OleUninitialize();
+}
+
+static Iclass* iOleControlGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupCanvasGetClass());
+
+ ic->name = "olecontrol";
+ ic->format = "s"; /* one string */
+ ic->nativetype = IUP_TYPECANVAS;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+
+ /* Class functions */
+ ic->Create = iOleControlCreateMethod;
+ ic->Destroy = iOleControlDestroyMethod;
+ ic->Release = iOleControlRelease;
+ ic->Map = iOleControlMapMethod;
+ ic->LayoutUpdate = iOleControlLayoutUpdateMethod;
+ ic->ComputeNaturalSize = iOleControlComputeNaturalSizeMethod;
+
+ iupClassRegisterAttribute(ic, "DESIGNMODE", iOleControlGetDesignModeAttrib, iOleControlSetDesignModeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DESIGNMODE_DONT_NOTIFY", iOleControlGetDesignModeAttrib, iOleControlSetDesignModeDontNotifyAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "IUNKNOWN", iOleControlGetIUnknownAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING);
+
+ /* Overwrite the canvas implementation */
+ iupClassRegisterAttribute(ic, "BGCOLOR", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED);
+
+ return ic;
+}
+
+Ihandle *IupOleControl(const char *ProgID)
+{
+ void *params[2];
+ params[0] = (void*)ProgID;
+ params[1] = NULL;
+ return IupCreatev("olecontrol", params);
+}
+
+int IupOleControlOpen(void)
+{
+ if (IupGetGlobal("_IUP_OLECONTROL_OPEN"))
+ return IUP_OPENED;
+
+ HRESULT retval = OleInitialize(NULL);
+ if (retval != S_OK && retval != S_FALSE)
+ return IUP_ERROR;
+
+ iupRegisterClass(iOleControlGetClass());
+
+ IupSetGlobal("_IUP_OLECONTROL_OPEN", "1");
+ return IUP_NOERROR;
+}
diff --git a/iup/srcole/iupole.def b/iup/srcole/iupole.def
new file mode 100755
index 0000000..d5fd72a
--- /dev/null
+++ b/iup/srcole/iupole.def
@@ -0,0 +1,3 @@
+EXPORTS
+IupOleControl
+IupOleControlOpen
diff --git a/iup/srcole/make_uname.bat b/iup/srcole/make_uname.bat
new file mode 100755
index 0000000..f0a0722
--- /dev/null
+++ b/iup/srcole/make_uname.bat
@@ -0,0 +1,4 @@
+@echo off
+REM This builds all the libraries of the folder for 1 uname
+
+call tecmake %1 %2 %3 %4 %5 %6
diff --git a/iup/srcole/tAmbientProperties.cpp b/iup/srcole/tAmbientProperties.cpp
new file mode 100755
index 0000000..c9968a7
--- /dev/null
+++ b/iup/srcole/tAmbientProperties.cpp
@@ -0,0 +1,157 @@
+// tAmbientProperties.cpp: implementation of the tAmbientProperties class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include <assert.h>
+
+#include "tAmbientProperties.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+tAmbientProperties::tAmbientProperties()
+{
+ //0x80000000 in OLE_COLOR indicates low byte is color index.
+ m_clrBack=0x80000000+COLOR_WINDOW;
+ m_clrFore=0x80000000+COLOR_WINDOWTEXT;
+ m_lcid=LOCALE_USER_DEFAULT;
+ m_fDesignMode = TRUE;
+
+ m_pIOleControl = NULL;
+
+#if 0
+ {
+ int cy=MulDiv(-14, LOMETRIC_PER_INCH, 72);
+ //CHAPTER24MOD
+ //End CHAPTER24MOD
+
+ HFONT m_hFont=CreateFont(cy, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE
+ , ANSI_CHARSET, OUT_TT_PRECIS, CLIP_TT_ALWAYS, PROOF_QUALITY
+ , VARIABLE_PITCH | FF_SWISS, TEXT("Arial"));
+
+
+ //m_hFont=(HFONT)GetStockObject(ANSI_VAR_FONT);
+
+ //Need a standard font object for ambient properties
+
+ FONTDESC fd={sizeof(FONTDESC), L"Arial"
+ , FONTSIZE(14), FW_NORMAL, DEFAULT_CHARSET
+ , FALSE, FALSE, FALSE};
+
+ OleCreateFontIndirect(
+ &fd, IID_IFontDisp, (void **)&m_pIFont
+ );
+#endif
+ m_pIFont = NULL;
+}
+
+tAmbientProperties::~tAmbientProperties()
+{
+ if(m_pIOleControl)
+ m_pIOleControl->Release();
+
+ if(m_pIFont)
+ m_pIFont->Release();
+}
+
+void tAmbientProperties::setDesignMode(bool value, bool notify)
+{
+ switch(value)
+ {
+ case true:
+ m_fDesignMode = FALSE;
+ break;
+
+ case false:
+ m_fDesignMode = FALSE;
+ break;
+ }
+
+ assert(m_pIOleControl);
+ if(m_pIOleControl == NULL)
+ return;
+
+
+ // Notifica controle da mudanca
+
+ if(notify)
+ m_pIOleControl->OnAmbientPropertyChange(DISPID_AMBIENT_USERMODE);
+}
+
+OLE_COLOR tAmbientProperties::getBackColor()
+{
+ return m_clrBack;
+}
+
+OLE_COLOR tAmbientProperties::getForeColor()
+{
+ return m_clrFore;
+}
+
+bool tAmbientProperties::has_font()
+{
+ if(m_pIFont != NULL)
+ return true;
+ else
+ return false;
+}
+
+IFontDisp * tAmbientProperties::getFontRef()
+{
+ m_pIFont->AddRef();
+ return m_pIFont;
+}
+
+LCID tAmbientProperties::getLCID()
+{
+ return m_lcid;
+}
+
+BOOL tAmbientProperties::getDesignMode()
+{
+ return m_fDesignMode;
+}
+
+void tAmbientProperties::setForeColor(int red,
+ int green,
+ int blue,
+ bool notify)
+{
+ m_clrFore = blue << 16 | green << 8 | red;
+
+ assert(m_pIOleControl);
+ if(m_pIOleControl == NULL)
+ return;
+
+ if(notify)
+ m_pIOleControl->
+ OnAmbientPropertyChange(DISPID_AMBIENT_FORECOLOR);
+}
+
+void tAmbientProperties::setBackColor(int red,
+ int green,
+ int blue,
+ bool notify)
+{
+ m_clrBack = blue << 16 | green << 8 | red;
+
+ assert(m_pIOleControl);
+ if(m_pIOleControl == NULL)
+ return;
+
+ if(notify)
+ m_pIOleControl->
+ OnAmbientPropertyChange(DISPID_AMBIENT_BACKCOLOR);
+}
+
+void tAmbientProperties::setControl(IOleControl * olecontrol)
+{
+ assert(olecontrol && m_pIOleControl == NULL);
+
+ if(m_pIOleControl != NULL)
+ return;
+
+ olecontrol->AddRef();
+ m_pIOleControl = olecontrol;
+}
diff --git a/iup/srcole/tAmbientProperties.h b/iup/srcole/tAmbientProperties.h
new file mode 100755
index 0000000..359e733
--- /dev/null
+++ b/iup/srcole/tAmbientProperties.h
@@ -0,0 +1,47 @@
+// tAmbientProperties.h: interface for the tAmbientProperties class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_TAMBIENTPROPERTIES_H__FC01B4C7_4918_11D4_9DF5_0000B45D6611__INCLUDED_)
+#define AFX_TAMBIENTPROPERTIES_H__FC01B4C7_4918_11D4_9DF5_0000B45D6611__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include <windows.h>
+#include <olectl.h>
+
+
+class tAmbientProperties
+{
+public:
+ void setControl(IOleControl *olecontrol);
+ void setBackColor(int red, int green, int blue, bool notify);
+ void setForeColor(int red, int green, int blue, bool notify);
+ BOOL getDesignMode(void);
+ LCID getLCID(void);
+ IFontDisp * getFontRef(void);
+ bool has_font(void);
+ OLE_COLOR getForeColor(void);
+ OLE_COLOR getBackColor(void);
+ void setDesignMode(bool value, bool notify);
+ tAmbientProperties();
+ virtual ~tAmbientProperties();
+
+protected:
+
+ // Utilizado para notificar mudancas nas propriedades
+ LPOLECONTROL m_pIOleControl;
+
+ // propriedades
+ OLE_COLOR m_clrBack;
+ OLE_COLOR m_clrFore;
+ IFontDisp *m_pIFont;
+ LCID m_lcid;
+ BOOL m_fDesignMode;
+ BOOL m_fUIDead;
+ BOOL m_fHatchHandles;
+};
+
+#endif // !defined(AFX_TAMBIENTPROPERTIES_H__FC01B4C7_4918_11D4_9DF5_0000B45D6611__INCLUDED_)
diff --git a/iup/srcole/tDispatch.cpp b/iup/srcole/tDispatch.cpp
new file mode 100755
index 0000000..9db30a3
--- /dev/null
+++ b/iup/srcole/tDispatch.cpp
@@ -0,0 +1,236 @@
+// tDispatch.cpp: implementation of the tDispatch class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "tDispatch.h"
+#include "tOleHandler.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+
+/*
+ * tDispatch::tDispatch
+ * tDispatch::~tDispatch
+ *
+ * Parameters (Constructor):
+ * pTen PCTenant of the tenant we're in.
+ * pUnkOuter LPUNKNOWN to which we delegate.
+ */
+
+tDispatch::tDispatch(tOleHandler *pTen, LPUNKNOWN pUnkOuter)
+ {
+ m_cRef=0;
+ m_pTen=pTen;
+ m_pUnkOuter=pUnkOuter;
+ return;
+ }
+
+tDispatch::~tDispatch(void)
+ {
+ return;
+ }
+
+
+
+
+/*
+ * tDispatch::QueryInterface
+ * tDispatch::AddRef
+ * tDispatch::Release
+ */
+
+STDMETHODIMP tDispatch::QueryInterface(REFIID riid, PPVOID ppv)
+ {
+ return m_pUnkOuter->QueryInterface(riid, ppv);
+ }
+
+STDMETHODIMP_(ULONG) tDispatch::AddRef(void)
+ {
+ ++m_cRef;
+ return m_pUnkOuter->AddRef();
+ }
+
+STDMETHODIMP_(ULONG) tDispatch::Release(void)
+ {
+ m_cRef--;
+ return m_pUnkOuter->Release();
+ }
+
+
+
+
+/*
+ * tDispatch::GetTypeInfoCount
+ * tDispatch::GetTypeInfo
+ * tDispatch::GetIDsOfNames
+ *
+ * Unimplemented members, not needed for ambient properties.
+ */
+
+STDMETHODIMP tDispatch::GetTypeInfoCount(UINT *pctInfo)
+ {
+ *pctInfo=0;
+ return NOERROR;
+ }
+
+STDMETHODIMP tDispatch::GetTypeInfo(UINT itinfo
+ , LCID lcid, ITypeInfo **pptInfo)
+ {
+ *pptInfo=NULL;
+ return ResultFromScode(E_NOTIMPL);
+ }
+
+STDMETHODIMP tDispatch::GetIDsOfNames(REFIID riid
+ , OLECHAR **rgszNames, UINT cNames, LCID lcid, DISPID *rgDispID)
+ {
+ *rgszNames=NULL;
+ *rgDispID=NULL;
+ return ResultFromScode(E_NOTIMPL);
+ }
+
+
+
+
+/*
+ * tDispatch::Invoke
+ *
+ * Purpose:
+ * Calls a method in the dispatch interface or manipulates a
+ * property.
+ *
+ * Parameters:
+ * dispIDMember DISPID of the method or property of interest.
+ * riid REFIID reserved, must be NULL.
+ * lcid LCID of the locale.
+ * wFlags USHORT describing the context of the invocation.
+ * pDispParams DISPPARAMS * to the array of arguments.
+ * pVarResult VARIANT * in which to store the result. Is
+ * NULL if the caller is not interested.
+ * pExcepInfo EXCEPINFO * to exception information.
+ * puArgErr UINT * in which to store the index of an
+ * invalid parameter if DISP_E_TYPEMISMATCH
+ * is returned.
+ *
+ * Return Value:
+ * HRESULT NOERROR or a general error code.
+ */
+
+
+STDMETHODIMP tDispatch::Invoke(DISPID dispIDMember, REFIID riid
+ , LCID lcid, unsigned short wFlags, DISPPARAMS *pDispParams
+ , VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+ {
+ HRESULT hr;
+ VARIANT varResult;
+
+ if (IID_NULL!=riid)
+ return ResultFromScode(E_INVALIDARG);
+
+ /*
+ * We ignore lcid in this function. A multilingual application
+ * might use it to determine the meaning of certain parameters
+ * or perhaps as an indication of how to format data like
+ * time, date, and currency or any other language or locale-
+ * sensitive data.
+ */
+
+ /*
+ * Variable handling: since ambient properties is just a
+ * collection of singular read-only values, we don't have to
+ * worry about input parameters.
+ */
+
+ /*
+ * If the caller is not interested in the return value, then
+ * pVarResult is NULL. But since we're dealing with ambient
+ * properties, there should always be an interest. In any case,
+ * if we're given a NULL, we'll point it to a dummy structure so
+ * the rest of the code can assume that pVarResult is non-NULL.
+ */
+ if(NULL==pVarResult)
+ pVarResult=&varResult;
+
+ VariantInit(pVarResult);
+
+ //The most common case is boolean, use as an initial type
+ V_VT(pVarResult)=VT_BOOL;
+
+ /*
+ * Process the requested ambient property. Anything but a
+ * request for a property is invalid, so we can check that
+ * before looking at the specific ID. We can only get away
+ * with this because all properties are read-only.
+ */
+
+ if (!(DISPATCH_PROPERTYGET & wFlags))
+ return ResultFromScode(DISP_E_MEMBERNOTFOUND);
+
+ hr=NOERROR;
+
+ switch (dispIDMember)
+ {
+ case DISPID_AMBIENT_BACKCOLOR:
+ V_I4(pVarResult)=m_pTen->m_ambientProp.getBackColor();
+ V_VT(pVarResult)=VT_I4;
+ break;
+
+ case DISPID_AMBIENT_FORECOLOR:
+ V_I4(pVarResult)=m_pTen->m_ambientProp.getForeColor();
+ V_VT(pVarResult)=VT_I4;
+ break;
+
+ case DISPID_AMBIENT_FONT:
+ /*
+ * If we failed to create the font, act like we
+ * don't support it.
+ */
+ if (!m_pTen->m_ambientProp.has_font())
+ return ResultFromScode(DISP_E_MEMBERNOTFOUND);
+
+ //The correct type is an IFontDisp pointer
+ V_DISPATCH(pVarResult)=m_pTen->m_ambientProp.getFontRef();
+ V_VT(pVarResult)=VT_FONT;
+ break;
+
+ case DISPID_AMBIENT_LOCALEID:
+ V_I4(pVarResult)=m_pTen->m_ambientProp.getLCID();
+ V_VT(pVarResult)=VT_I4;
+ break;
+
+ case DISPID_AMBIENT_USERMODE:
+ V_BOOL(pVarResult)=!m_pTen->m_ambientProp.getDesignMode();
+ V_VT(pVarResult) = VT_BOOL;
+ break;
+
+ case DISPID_AMBIENT_UIDEAD:
+ //V_BOOL(pVarResult)=m_pTen->m_ambientProp.getUIDead();
+ V_BOOL(pVarResult)=FALSE;
+ V_VT(pVarResult) = VT_BOOL;
+
+ break;
+
+ case DISPID_AMBIENT_SUPPORTSMNEMONICS:
+ V_BOOL(pVarResult)=TRUE;
+ break;
+
+ case DISPID_AMBIENT_SHOWGRABHANDLES:
+ //V_BOOL(pVarResult)=m_pTen->m_ambientProp.m_fHatchHandles;
+ V_BOOL(pVarResult)=FALSE;
+ V_VT(pVarResult) = VT_BOOL;
+ break;
+
+ case DISPID_AMBIENT_SHOWHATCHING:
+// V_BOOL(pVarResult)=m_pTen->m_ambientProp.m_fHatchHandles;
+ V_BOOL(pVarResult)=FALSE;
+ V_VT(pVarResult) = VT_BOOL;
+ break;
+
+ default:
+ hr=ResultFromScode(DISP_E_MEMBERNOTFOUND);
+ break;
+ }
+
+ return hr;
+ }
diff --git a/iup/srcole/tDispatch.h b/iup/srcole/tDispatch.h
new file mode 100755
index 0000000..c061d75
--- /dev/null
+++ b/iup/srcole/tDispatch.h
@@ -0,0 +1,40 @@
+// tDispatch.h: interface for the tDispatch class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_TDISPATCH_H__37A5ADED_91FB_11D3_A906_0004AC252223__INCLUDED_)
+#define AFX_TDISPATCH_H__37A5ADED_91FB_11D3_A906_0004AC252223__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include <windows.h>
+
+class tDispatch : public IDispatch
+{
+public:
+ protected:
+ ULONG m_cRef;
+ class tOleHandler *m_pTen;
+ LPUNKNOWN m_pUnkOuter;
+
+ public:
+ tDispatch(class tOleHandler *, LPUNKNOWN);
+ ~tDispatch(void);
+
+ STDMETHODIMP QueryInterface(REFIID, LPVOID *);
+ STDMETHODIMP_(ULONG) AddRef(void);
+ STDMETHODIMP_(ULONG) Release(void);
+
+ STDMETHODIMP GetTypeInfoCount(UINT *);
+ STDMETHODIMP GetTypeInfo(UINT, LCID, ITypeInfo **);
+ STDMETHODIMP GetIDsOfNames(REFIID, OLECHAR **, UINT
+ , LCID, DISPID *);
+ STDMETHODIMP Invoke(DISPID, REFIID, LCID, USHORT
+ , DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *);
+
+
+};
+
+#endif // !defined(AFX_TDISPATCH_H__37A5ADED_91FB_11D3_A906_0004AC252223__INCLUDED_)
diff --git a/iup/srcole/tLegacy.cpp b/iup/srcole/tLegacy.cpp
new file mode 100755
index 0000000..c310865
--- /dev/null
+++ b/iup/srcole/tLegacy.cpp
@@ -0,0 +1,240 @@
+// legacy.cpp
+
+#include <windows.h>
+#include "tLegacy.h"
+
+
+/*
+ * RectConvertMappings
+ *
+ * Purpose:
+ * Converts the contents of a rectangle from device to logical
+ * coordinates where the hDC defines the logical coordinates.
+ *
+ * Parameters:
+ * pRect LPRECT containing the rectangle to convert.
+ * hDC HDC describing the logical coordinate system.
+ * if NULL, uses a screen DC in MM_LOMETRIC.
+ * fToDevice BOOL TRUE to convert from uConv to device,
+ * FALSE to convert device to uConv.
+ *
+ * Return Value:
+ * None
+ */
+
+
+void RectConvertMappings(LPRECT pRect, HDC hDC, BOOL fToDevice)
+ {
+ POINT rgpt[2];
+ BOOL fSysDC=FALSE;
+
+ if (NULL==pRect)
+ return;
+
+ rgpt[0].x=pRect->left;
+ rgpt[0].y=pRect->top;
+ rgpt[1].x=pRect->right;
+ rgpt[1].y=pRect->bottom;
+
+ if (NULL==hDC)
+ {
+ hDC=GetDC(NULL);
+ SetMapMode(hDC, MM_LOMETRIC);
+ fSysDC=TRUE;
+ }
+
+ if (fToDevice)
+ LPtoDP(hDC, rgpt, 2);
+ else
+ DPtoLP(hDC, rgpt, 2);
+
+ if (fSysDC)
+ ReleaseDC(NULL, hDC);
+
+ pRect->left=rgpt[0].x;
+ pRect->top=rgpt[0].y;
+ pRect->right=rgpt[1].x;
+ pRect->bottom=rgpt[1].y;
+
+ return;
+ }
+
+STDAPI_(void) XformRectInHimetricToPixels(HDC hDC, LPRECT prcHiMetric
+ , LPRECT prcPix)
+ {
+ int iXppli; //Pixels per logical inch along width
+ int iYppli; //Pixels per logical inch along height
+ int iXextInHiMetric=(prcHiMetric->right-prcHiMetric->left);
+ int iYextInHiMetric=(prcHiMetric->bottom-prcHiMetric->top);
+ BOOL fSystemDC=FALSE;
+
+ if (NULL==hDC || GetDeviceCaps(hDC, LOGPIXELSX) == 0)
+ {
+ hDC=GetDC(NULL);
+ fSystemDC=TRUE;
+ }
+
+ iXppli=GetDeviceCaps (hDC, LOGPIXELSX);
+ iYppli=GetDeviceCaps (hDC, LOGPIXELSY);
+
+ //We got pixel units, convert them to logical HIMETRIC along the display
+ prcPix->right=MAP_LOGHIM_TO_PIX(iXextInHiMetric, iXppli);
+ prcPix->top =MAP_LOGHIM_TO_PIX(iYextInHiMetric, iYppli);
+
+ prcPix->left =0;
+ prcPix->bottom= 0;
+
+ if (fSystemDC)
+ ReleaseDC(NULL, hDC);
+
+ return;
+ }
+/*
+ * INOLE_SetIconInCache
+ *
+ * Purpose:
+ * Stores an iconic presentation metafile in the cache.
+ *
+ * Parameters:
+ * pObj IUnknown * of the object.
+ * hMetaPict HGLOBAL containing the presentation.
+ *
+ * Return Value:
+ * HRESULT From IOleCache::SetData.
+ */
+
+#if 0
+STDAPI INOLE_SetIconInCache(IUnknown *pObj, HGLOBAL hMetaPict)
+ {
+ IOleCache *pCache;
+ FORMATETC fe;
+ STGMEDIUM stm;
+ HRESULT hr;
+
+ if (NULL==hMetaPict)
+ return ResultFromScode(E_INVALIDARG);
+
+ if (FAILED(pObj->QueryInterface(IID_IOleCache, (void **)&pCache)))
+ return ResultFromScode(E_NOINTERFACE);
+
+ SETFormatEtc(fe, CF_METAFILEPICT, DVASPECT_ICON, NULL
+ , TYMED_MFPICT, -1);
+
+ stm.tymed=TYMED_MFPICT;
+ stm.hGlobal=hMetaPict;
+ stm.pUnkForRelease=NULL;
+
+ hr=pCache->SetData(&fe, &stm, FALSE);
+ pCache->Release();
+
+ return hr;
+ }
+#endif
+
+
+
+/*
+ * XformRectInPixelsToHimetric
+ * XformRectInHimetricToPixels
+ *
+ * Purpose:
+ * Convert a rectangle between pixels of a given hDC and HIMETRIC units
+ * as manipulated in OLE. If the hDC is NULL, then a screen DC is used
+ * and assumes the MM_TEXT mapping mode.
+ *
+ * Parameters:
+ * hDC HDC providing reference to the pixel mapping. If
+ * NULL, a screen DC is used.
+ * prcPix LPRECT containng the rectangles to convert.
+ * prcHiMetric
+ *
+ * Return Value:
+ * None
+ *
+ * NOTE:
+ * When displaying on the screen, Window apps display everything enlarged
+ * from its actual size so that it is easier to read. For example, if an
+ * app wants to display a 1in. horizontal line, that when printed is
+ * actually a 1in. line on the printed page, then it will display the line
+ * on the screen physically larger than 1in. This is described as a line
+ * that is "logically" 1in. along the display width. Windows maintains as
+ * part of the device-specific information about a given display device:
+ * LOGPIXELSX -- no. of pixels per logical in along the display width
+ * LOGPIXELSY -- no. of pixels per logical in along the display height
+ *
+ * The following formula converts a distance in pixels into its equivalent
+ * logical HIMETRIC units:
+ *
+ * DistInHiMetric=(HIMETRIC_PER_INCH * DistInPix)
+ * -------------------------------
+ * PIXELS_PER_LOGICAL_IN
+ *
+ * Rect in Pixels (MM_TEXT):
+ *
+ * 0---------- X
+ * |
+ * | 1) ------------------ ( 2 P1=(rc.left, rc.top)
+ * | | | P2=(rc.right, rc.top)
+ * | | | P3=(rc.left, rc.bottom)
+ * | | | P4=(rc.right, rc.bottom)
+ * | |
+ * Y | |
+ * 3) ------------------ ( 4
+ *
+ * NOTE: Origin =(P1x, P1y)
+ * X extent=P4x - P1x
+ * Y extent=P4y - P1y
+ *
+ *
+ * Rect in Himetric (MM_HIMETRIC):
+ *
+ *
+ * 1) ------------------ ( 2 P1=(rc.left, rc.top)
+ * Y | | P2=(rc.right, rc.top)
+ * | | P3=(rc.left, rc.bottom)
+ * | | | P4=(rc.right, rc.bottom)
+ * | | |
+ * | | |
+ * | 3) ------------------ ( 4
+ * |
+ * 0---------- X
+ *
+ * NOTE: Origin =(P3x, P3y)
+ * X extent=P2x - P3x
+ * Y extent=P2y - P3y
+ *
+ *
+ */
+
+STDAPI_(void) XformRectInPixelsToHimetric(HDC hDC, LPRECT prcPix
+ , LPRECT prcHiMetric)
+ {
+ int iXppli; //Pixels per logical inch along width
+ int iYppli; //Pixels per logical inch along height
+ int iXextInPix=(prcPix->right-prcPix->left);
+ int iYextInPix=(prcPix->bottom-prcPix->top);
+ BOOL fSystemDC=FALSE;
+
+ if (NULL==hDC || GetDeviceCaps(hDC, LOGPIXELSX) == 0)
+ {
+ hDC=GetDC(NULL);
+ fSystemDC=TRUE;
+ }
+
+ iXppli=GetDeviceCaps (hDC, LOGPIXELSX);
+ iYppli=GetDeviceCaps (hDC, LOGPIXELSY);
+
+ //We got pixel units, convert them to logical HIMETRIC along the display
+ prcHiMetric->right=MAP_PIX_TO_LOGHIM(iXextInPix, iXppli);
+ prcHiMetric->top =MAP_PIX_TO_LOGHIM(iYextInPix, iYppli);
+
+ prcHiMetric->left =0;
+ prcHiMetric->bottom =0;
+
+ if (fSystemDC)
+ ReleaseDC(NULL, hDC);
+
+ return;
+ }
+
+
diff --git a/iup/srcole/tLegacy.h b/iup/srcole/tLegacy.h
new file mode 100755
index 0000000..3294e20
--- /dev/null
+++ b/iup/srcole/tLegacy.h
@@ -0,0 +1,550 @@
+/*
+ * INOLE.H
+ *
+ * Master header file for all Inside OLE samples.
+ *
+ * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
+ *
+ * Kraig Brockschmidt, Microsoft
+ * Internet : kraigb@microsoft.com
+ * Compuserve: >INTERNET:kraigb@microsoft.com
+ */
+
+
+#ifndef _INOLE_H_
+#define _INOLE_H_
+
+#define INC_OLE2
+#include <windows.h>
+#include <ole2.h>
+#include <ole2ver.h>
+
+#ifdef INC_OLEUI
+#ifdef WIN32
+/*
+ * Comment the next line and remove the comment from the
+ * line after it to compile for Windows NT 3.5.
+ */
+#include <oledlg.h>
+//#include <ole2ui.h>
+#else
+#include <ole2ui.h>
+#endif
+#endif
+
+#ifdef INC_CONTROLS
+#define INC_AUTOMATION
+#endif
+
+#ifdef INC_AUTOMATION
+#ifndef WIN32
+#include <dispatch.h>
+#include <olenls.h>
+#else
+#include <oleauto.h>
+#endif
+#endif
+
+#ifdef INC_CONTROLS
+#include <olectl.h>
+#ifndef INITGUIDS
+#include <olectlid.h>
+#endif
+#endif
+
+#ifdef WIN32
+#include <tchar.h>
+#ifdef UNICODE
+#include <wchar.h>
+#endif
+#endif
+
+#ifndef WIN32
+#include <shellapi.h>
+#include <malloc.h>
+#endif
+
+#ifdef INC_CLASSLIB
+extern "C"
+ {
+ #include <commdlg.h>
+ #ifndef WIN32
+ #include <print.h>
+ #include <dlgs.h>
+ #endif
+ }
+
+#include <classlib.h>
+#endif
+
+
+//Types that OLE2.H et. al. leave out
+
+#ifndef PPVOID
+typedef LPVOID * PPVOID;
+#endif //PPVOID
+
+
+#ifdef _OLE2_H_ //May not include ole2.h at all times.
+
+#ifndef PPOINTL
+typedef POINTL * PPOINTL;
+#endif //PPOINTL
+
+
+#ifndef _WIN32
+#ifndef OLECHAR
+typedef char OLECHAR;
+typedef OLECHAR FAR* LPOLESTR;
+typedef const OLECHAR FAR* LPCOLESTR;
+#endif //OLECHAR
+#endif //_WIN32
+
+
+//Useful macros.
+#define SETFormatEtc(fe, cf, asp, td, med, li) \
+ {\
+ (fe).cfFormat=cf;\
+ (fe).dwAspect=asp;\
+ (fe).ptd=td;\
+ (fe).tymed=med;\
+ (fe).lindex=li;\
+ }
+
+#define SETDefFormatEtc(fe, cf, med) \
+ {\
+ (fe).cfFormat=cf;\
+ (fe).dwAspect=DVASPECT_CONTENT;\
+ (fe).ptd=NULL;\
+ (fe).tymed=med;\
+ (fe).lindex=-1;\
+ }
+
+
+#define SETRECTL(rcl, l, t, r, b) \
+ {\
+ (rcl).left=l;\
+ (rcl).top=t;\
+ (rcl).right=r;\
+ (rcl).bottom=b;\
+ }
+
+#define SETSIZEL(szl, h, v) \
+ {\
+ (szl).cx=h;\
+ (szl).cy=v;\
+ }
+
+
+#define RECTLFROMRECT(rcl, rc)\
+ {\
+ (rcl).left=(long)(rc).left;\
+ (rcl).top=(long)(rc).top;\
+ (rcl).right=(long)(rc).right;\
+ (rcl).bottom=(long)(rc).bottom;\
+ }
+
+
+#define RECTFROMRECTL(rc, rcl)\
+ {\
+ (rc).left=(int)(rcl).left;\
+ (rc).top=(int)(rcl).top;\
+ (rc).right=(int)(rcl).right;\
+ (rc).bottom=(int)(rcl).bottom;\
+ }
+
+
+#define POINTLFROMPOINT(ptl, pt) \
+ { \
+ (ptl).x=(long)(pt).x; \
+ (ptl).y=(long)(pt).y; \
+ }
+
+
+#define POINTFROMPOINTL(pt, ptl) \
+ { \
+ (pt).x=(int)(ptl).x; \
+ (pt).y=(int)(ptl).y; \
+ }
+
+//Here's one that should be in windows.h
+#define SETPOINT(pt, h, v) \
+ {\
+ (pt).x=h;\
+ (pt).y=v;\
+ }
+
+#define SETPOINTL(ptl, h, v) \
+ {\
+ (ptl).x=h;\
+ (ptl).y=v;\
+ }
+
+#endif //_OLE2_H_
+
+#ifdef INC_AUTOMATION
+
+//Macros for setting DISPPARAMS structures
+#define SETDISPPARAMS(dp, numArgs, pvArgs, numNamed, pNamed) \
+ {\
+ (dp).cArgs=numArgs;\
+ (dp).rgvarg=pvArgs;\
+ (dp).cNamedArgs=numNamed;\
+ (dp).rgdispidNamedArgs=pNamed;\
+ }
+
+#define SETNOPARAMS(dp) SETDISPPARAMS(dp, 0, NULL, 0, NULL)
+
+//Macros for setting EXCEPINFO structures
+#define SETEXCEPINFO(ei, excode, src, desc, file, ctx, func, scd) \
+ {\
+ (ei).wCode=excode;\
+ (ei).wReserved=0;\
+ (ei).bstrSource=src;\
+ (ei).bstrDescription=desc;\
+ (ei).bstrHelpFile=file;\
+ (ei).dwHelpContext=ctx;\
+ (ei).pvReserved=NULL;\
+ (ei).pfnDeferredFillIn=func;\
+ (ei).scode=scd;\
+ }
+
+
+#define INITEXCEPINFO(ei) \
+ SETEXCEPINFO(ei,0,NULL,NULL,NULL,0L,NULL,S_OK)
+
+#endif
+
+
+/*
+ * State flags for IPersistStorage implementations. These
+ * are kept here to avoid repeating the code in all samples.
+ */
+
+typedef enum
+ {
+ PSSTATE_UNINIT, //Uninitialized
+ PSSTATE_SCRIBBLE, //Scribble
+ PSSTATE_ZOMBIE, //No scribble
+ PSSTATE_HANDSOFF //Hand-off
+ } PSSTATE;
+
+
+/*
+ * Identifers to describe which persistence model an object
+ * is using, along with a union type that holds on the the
+ * appropriate pointers that a client may need.
+ */
+typedef enum
+ {
+ PERSIST_UNKNOWN=0,
+ PERSIST_STORAGE,
+ PERSIST_STREAM,
+ PERSIST_STREAMINIT,
+ PERSIST_FILE
+ } PERSIST_MODEL;
+
+typedef struct
+ {
+ PERSIST_MODEL psModel;
+ union
+ {
+ IPersistStorage *pIPersistStorage;
+ IPersistStream *pIPersistStream;
+ #ifdef INC_CONTROLS
+ IPersistStreamInit *pIPersistStreamInit;
+ #endif
+ IPersistFile *pIPersistFile;
+ } pIP;
+
+ } PERSISTPOINTER, *PPERSISTPOINTER;
+
+
+//To identify a storage in which to save, load, or create.
+typedef struct
+ {
+ PERSIST_MODEL psModel;
+ union
+ {
+ IStorage *pIStorage;
+ IStream *pIStream;
+ } pIS;
+
+ } STGPOINTER, *PSTGPOINTER;
+
+
+
+//Type for an object-destroyed callback
+typedef void (*PFNDESTROYED)(void);
+
+
+//DeleteInterfaceImp calls 'delete' and NULLs the pointer
+#define DeleteInterfaceImp(p)\
+ {\
+ if (NULL!=p)\
+ {\
+ delete p;\
+ p=NULL;\
+ }\
+ }
+
+
+//ReleaseInterface calls 'Release' and NULLs the pointer
+#define ReleaseInterface(p)\
+ {\
+ IUnknown *pt=(IUnknown *)p;\
+ p=NULL;\
+ if (NULL!=pt)\
+ pt->Release();\
+ }
+
+
+//OLE Documents Clipboard Formats
+
+#define CFSTR_EMBEDSOURCE TEXT("Embed Source")
+#define CFSTR_EMBEDDEDOBJECT TEXT("Embedded Object")
+#define CFSTR_LINKSOURCE TEXT("Link Source")
+#define CFSTR_CUSTOMLINKSOURCE TEXT("Custom Link Source")
+#define CFSTR_OBJECTDESCRIPTOR TEXT("Object Descriptor")
+#define CFSTR_LINKSRCDESCRIPTOR TEXT("Link Source Descriptor")
+
+
+
+//Functions in the helper DLL, INOLE.DLL
+
+//UI Effects
+STDAPI_(void) UIDrawHandles(LPRECT, HDC, DWORD, UINT, BOOL);
+STDAPI_(void) UIDrawShading(LPRECT, HDC, DWORD, UINT);
+STDAPI_(void) UIShowObject(LPCRECT, HDC, BOOL);
+
+//For UIDrawHandles
+#define UI_HANDLES_USEINVERSE 0x00000001L
+#define UI_HANDLES_NOBORDER 0x00000002L
+#define UI_HANDLES_INSIDE 0x00000004L
+#define UI_HANDLES_OUTSIDE 0x00000008L
+
+//For UIDrawShading
+#define UI_SHADE_FULLRECT 1
+#define UI_SHADE_BORDERIN 2
+#define UI_SHADE_BORDEROUT 3
+
+//Coordinate Munging
+STDAPI_(int) XformWidthInHimetricToPixels(HDC, int);
+STDAPI_(int) XformWidthInPixelsToHimetric(HDC, int);
+STDAPI_(int) XformHeightInHimetricToPixels(HDC, int);
+STDAPI_(int) XformHeightInPixelsToHimetric(HDC, int);
+
+STDAPI_(void) XformRectInPixelsToHimetric(HDC, LPRECT, LPRECT);
+STDAPI_(void) XformRectInHimetricToPixels(HDC, LPRECT, LPRECT);
+STDAPI_(void) XformSizeInPixelsToHimetric(HDC, LPSIZEL, LPSIZEL);
+STDAPI_(void) XformSizeInHimetricToPixels(HDC, LPSIZEL, LPSIZEL);
+
+
+//Helpers
+STDAPI_(void) INOLE_MetafilePictIconFree(HGLOBAL);
+STDAPI INOLE_SetIconInCache(IUnknown *, HGLOBAL);
+STDAPI_(UINT) INOLE_GetUserTypeOfClass(REFCLSID, UINT, LPTSTR
+ , UINT);
+STDAPI INOLE_DoConvert(IStorage *, REFCLSID);
+STDAPI_(LPTSTR) INOLE_CopyString(LPTSTR);
+STDAPI_(HGLOBAL) INOLE_ObjectDescriptorFromOleObject(IOleObject *
+ , DWORD, POINTL, LPSIZEL);
+STDAPI_(HGLOBAL) INOLE_AllocObjectDescriptor(CLSID, DWORD
+ , SIZEL, POINTL, DWORD, LPTSTR, LPTSTR);
+STDAPI_(IStorage *) INOLE_CreateStorageOnHGlobal(DWORD);
+STDAPI INOLE_GetLinkSourceData(IMoniker *, LPCLSID
+ , LPFORMATETC, LPSTGMEDIUM);
+STDAPI_(void) INOLE_RegisterAsRunning(IUnknown *, IMoniker *
+ , DWORD, LPDWORD);
+STDAPI_(void) INOLE_RevokeAsRunning(LPDWORD);
+STDAPI_(void) INOLE_NoteChangeTime(DWORD, FILETIME *, LPTSTR);
+
+
+
+/*
+ * These are for ANSI compilations on Win32. Source code assumes
+ * a Win32 Unicode environment (or Win16 Ansi). These macros
+ * route Win32 ANSI compiled functions to wrappers which do the
+ * proper Unicode conversion.
+ */
+
+
+#ifdef WIN32ANSI
+STDAPI INOLE_ConvertStringToANSI(LPCWSTR, LPSTR *);
+STDAPI INOLE_StringFromCLSID(REFCLSID, LPSTR *);
+STDAPI INOLE_StringFromGUID2(REFGUID, LPSTR, int);
+STDAPI INOLE_ProgIDFromCLSID(REFCLSID, LPSTR *);
+
+STDAPI INOLE_ReadFmtUserTypeStg(IStorage *, CLIPFORMAT *, LPSTR *);
+STDAPI INOLE_WriteFmtUserTypeStg(IStorage *, CLIPFORMAT, LPSTR);
+
+STDAPI INOLE_StgIsStorageFile(LPCSTR);
+STDAPI INOLE_StgCreateDocfile(LPCSTR, DWORD, DWORD, IStorage **);
+STDAPI INOLE_StgOpenStorage(LPCSTR, IStorage *, DWORD, SNB
+ , DWORD, IStorage **);
+
+
+STDAPI INOLE_CreateFileMoniker(LPCSTR, LPMONIKER *);
+STDAPI INOLE_CreateItemMoniker(LPCSTR, LPCSTR, LPMONIKER *);
+STDAPI INOLE_MkParseDisplayName(LPBC, LPCSTR, ULONG *, LPMONIKER *);
+
+STDAPI INOLE_OleCreateLinkToFile(LPCSTR, REFIID, DWORD, LPFORMATETC
+ , LPOLECLIENTSITE, LPSTORAGE, LPVOID *);
+STDAPI INOLE_OleCreateFromFile(REFCLSID, LPCSTR, REFIID
+ , DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, LPVOID *);
+
+
+#ifndef NOMACROREDIRECT
+#undef StringFromCLSID
+#define StringFromCLSID(c, pp) INOLE_StringFromCLSID(c, pp)
+
+#undef StringFromGUID2
+#define StringFromGUID2(r, p, i) INOLE_StringFromGUID2(r, p, i)
+
+#undef ProgIDFromCLSID
+#define ProgIDFromCLSID(c, pp) INOLE_ProgIDFromCLSID(c, pp)
+
+#undef ReadFmtUserTypeStg
+#define ReadFmtUserTypeStg(p, c, s) INOLE_ReadFmtUserTypeStg(p, c, s)
+
+#undef WriteFmtUserTypeStg
+#define WriteFmtUserTypeStg(p, c, s) INOLE_WriteFmtUserTypeStg(p, c, s)
+
+#undef StgIsStorageFile
+#define StgIsStorageFile(s) INOLE_StgIsStorageFile(s)
+
+#undef StgCreateDocfile
+#define StgCreateDocfile(a, b, c, d) INOLE_StgCreateDocfile(a, b, c, d)
+
+#undef StgOpenStorage
+#define StgOpenStorage(a,b,c,d,e,f) INOLE_StgOpenStorage(a,b,c,d,e,f)
+
+#undef CreateFileMoniker
+#define CreateFileMoniker(p, i) INOLE_CreateFileMoniker(p, i)
+
+#undef CreateItemMoniker
+#define CreateItemMoniker(p1, p2, i) INOLE_CreateItemMoniker(p1, p2, i)
+
+#undef MkParseDisplayName
+#define MkParseDisplayName(b, p, u, i) INOLE_MkParseDisplayName(b, p, u, i)
+
+#undef OleCreateLinkToFile
+#define OleCreateLinkToFile(s, i, d, fe, cs, st, pv) INOLE_OleCreateLinkToFile(s, i, d, fe, cs, st, pv)
+
+#undef OleCreateFromFile
+#define OleCreateFromFile(c, s, i, d, fe, cs, st, pv) INOLE_OleCreateFromFile(c, s, i, d, fe, cs, st, pv)
+
+
+#endif
+
+#endif
+
+//Versioning.
+#define VERSIONMAJOR 2
+#define VERSIONMINOR 0
+#define VERSIONCURRENT 0x00020000
+
+#define HIMETRIC_PER_INCH 2540
+#define LOMETRIC_PER_INCH 254
+#define LOMETRIC_BORDER 60 //Border around page
+
+#define CREATE_FAILED 0
+#define CREATE_GRAPHICONLY 1
+
+//State flags
+//CHAPTER24MOD
+//Switched #defines to an enum
+enum
+ {
+ TENANTSTATE_DEFAULT =0x00000000,
+ TENANTSTATE_SELECTED=0x00000001,
+ TENANTSTATE_OPEN =0x00000002,
+ TENANTSTATE_SHOWTYPE=0x00000004,
+
+ //New ones for controls.
+ TENANTSTATE_CONTROL =0x00000100,
+ TENANTSTATE_EVENTS =0x00000200,
+ TENANTSTATE_BUTTON =0x00000400,
+ TENANTSTATE_LABEL =0x00000800,
+ TENANTSTATE_DEFBUTTON =0x00001000,
+ TENANTSTATE_CANCELBUTTON=0x00002000
+ };
+
+//To mask off non-control flags
+#define STATEMASK_CONTROLS 0xFFFFFF00
+
+
+
+/*
+ * Structures to save with the document describing the device
+ * configuration and pages that we have. This is followed by
+ * a list of DWORD IDs for the individual pages.
+ */
+
+typedef struct tagDEVICECONFIG
+ {
+ DWORD cb; //Size of structure
+ TCHAR szDriver[CCHDEVICENAME];
+ TCHAR szDevice[CCHDEVICENAME];
+ TCHAR szPort[CCHDEVICENAME];
+ DWORD cbDevMode; //Size of actual DEVMODE
+ DEVMODE dm; //Variable
+ } DEVICECONFIG, *PDEVICECONFIG;
+
+//Offset to cbDevMode
+#define CBSEEKOFFSETCBDEVMODE (sizeof(DWORD) \
+ +(3*CCHDEVICENAME*sizeof(TCHAR)))
+
+//Combined OLE and Patron device structures.
+typedef struct tagCOMBINEDEVICE
+ {
+ DVTARGETDEVICE td;
+ DEVICECONFIG dc;
+ } COMBINEBDEVICE, *PCOMBINEDEVICE;
+
+
+
+void RectConvertMappings(LPRECT, HDC, BOOL);
+
+
+//CHAPTER24MOD
+
+
+#ifdef WIN32
+#define PROP_POINTER TEXT("Pointer")
+#else
+#define PROP_SELECTOR "Selector"
+#define PROP_OFFSET "Offset"
+#endif
+
+//End CHAPTER24MOD
+
+BOOL ObjectEventsIID(LPUNKNOWN pObj, IID *piid);
+BOOL InterfaceConnect(LPUNKNOWN pObj, REFIID riid
+ , LPUNKNOWN pIUnknownSink, LPDWORD pdwConn);
+BOOL InterfaceDisconnect(LPUNKNOWN pObj, REFIID riid
+ , LPDWORD pdwConn);
+BOOL ObjectTypeInfo(LPUNKNOWN pObj, LPTYPEINFO *ppITypeInfo);
+BOOL ObjectTypeInfoEvents(LPUNKNOWN pObj, LPTYPEINFO *ppITypeInfo);
+BOOL ObjectEventsIID(LPUNKNOWN pObj, IID *piid);
+
+#define HIMETRIC_PER_INCH 2540 //Number HIMETRIC units per inch
+#define PTS_PER_INCH 72 //Number points (font size) per inch
+
+#define MAP_PIX_TO_LOGHIM(x,ppli) MulDiv(HIMETRIC_PER_INCH, (x), (ppli))
+#define MAP_LOGHIM_TO_PIX(x,ppli) MulDiv((ppli), (x), HIMETRIC_PER_INCH)
+
+//Useful macros.
+#define SETFormatEtc(fe, cf, asp, td, med, li) \
+ {\
+ (fe).cfFormat=cf;\
+ (fe).dwAspect=asp;\
+ (fe).ptd=td;\
+ (fe).tymed=med;\
+ (fe).lindex=li;\
+ }
+
+STDAPI_(void) XformRectInHimetricToPixels(HDC hDC, LPRECT prcHiMetric
+ , LPRECT prcPix);
+
+#endif //_INOLE_H_
diff --git a/iup/srcole/tOleClientSite.cpp b/iup/srcole/tOleClientSite.cpp
new file mode 100755
index 0000000..314b172
--- /dev/null
+++ b/iup/srcole/tOleClientSite.cpp
@@ -0,0 +1,148 @@
+//////////////////////////////////////////////////////////////////////
+//
+// tOleClientSite.cpp: implementation of the tOleClientSite class.
+//
+//////////////////////////////////////////////////////////////////////
+
+
+#include <windows.h>
+#include <assert.h>
+
+#include "tOleClientSite.h"
+#include "tOleHandler.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+tOleClientSite::tOleClientSite(LPUNKNOWN pUnkOuter,
+ tOleHandler *olehandler)
+{
+ m_cRef=0;
+ m_pUnkOuter = pUnkOuter;
+ handler = olehandler;
+ return;
+}
+
+tOleClientSite::~tOleClientSite()
+{
+
+}
+
+STDMETHODIMP tOleClientSite::QueryInterface(REFIID riid,
+ LPVOID *ppv)
+{
+ return m_pUnkOuter->QueryInterface(riid, ppv);
+}
+
+
+STDMETHODIMP_(ULONG) tOleClientSite::AddRef(void)
+{
+ ++m_cRef;
+ return m_pUnkOuter->AddRef();
+}
+
+STDMETHODIMP_(ULONG) tOleClientSite::Release(void)
+{
+ --m_cRef;
+ return m_pUnkOuter->Release();
+}
+
+STDMETHODIMP tOleClientSite::SaveObject(void)
+{
+ // persistencia ainda nao suportada
+ return E_FAIL;
+}
+
+
+STDMETHODIMP tOleClientSite::GetMoniker(DWORD dwAssign,
+ DWORD dwWhich,
+ LPMONIKER *ppmk)
+{
+ // Linking nao suportado
+ return E_FAIL;
+}
+
+
+STDMETHODIMP tOleClientSite::GetContainer(LPOLECONTAINER * ppContainer)
+{
+
+ *ppContainer=NULL;
+
+ return E_NOINTERFACE;
+}
+
+
+/*
+ * tOleClientSite::ShowObject
+ *
+ * Purpose:
+ * Tells the container to bring the object fully into view as much
+ * as possible, that is, scroll the document.
+ *
+ * Parameters:
+ * None
+ *
+ * Return Value:
+ * HRESULT Standard.
+ */
+
+STDMETHODIMP tOleClientSite::ShowObject(void)
+{
+ return NOERROR;
+}
+
+
+STDMETHODIMP tOleClientSite::OnShowWindow(BOOL fShow)
+{
+ return NOERROR;
+}
+
+/*
+ * tOleClientSite::RequestNewObjectLayout
+ *
+ * Purpose:
+ * Called when the object would like to have its layout
+ * reinitialized. This is used by OLE Controls.
+ *
+ * Parameters:
+ * None
+ *
+ * Return Value:
+ * HRESULT Standard.
+ */
+
+STDMETHODIMP tOleClientSite::RequestNewObjectLayout(void)
+{
+ RECT rc, rcT;
+ SIZEL szl;
+ HRESULT hr;
+
+ /*
+ * This function is called by a control that is not in-place
+ * active or UI active and therefore doesn't have our
+ * IOleInPlaceSite interface in which to call OnPosRectChange.
+ * Therefore we do pretty much the same thing we do in that
+ * function although we ask the control for the size it wants.
+ */
+
+ if (!handler->m_pIViewObject2)
+ return E_FAIL;
+
+ //Get the size from the control
+ hr=handler->m_pIViewObject2->GetExtent(handler->m_fe.dwAspect, -1, NULL, &szl);
+ if (FAILED(hr))
+ return hr;
+
+ //Add these extents to the existing tenant position.
+ SetRect(&rcT, 0, 0, szl.cx*10, -szl.cy*10);
+ RectConvertMappings(&rcT, NULL, TRUE);
+
+ rc=handler->m_rcPos;
+ rc.right=rc.left+rcT.right;
+ rc.bottom=rc.top+rcT.bottom;
+
+ handler->UpdateInPlaceObjectRects(&rc, FALSE);
+ return NOERROR;
+}
+
diff --git a/iup/srcole/tOleClientSite.h b/iup/srcole/tOleClientSite.h
new file mode 100755
index 0000000..1525b9e
--- /dev/null
+++ b/iup/srcole/tOleClientSite.h
@@ -0,0 +1,40 @@
+// tOleClientSite.h: interface for the tOleClientSite class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_TOLECLIENTSITE_H__49B97C0A_8DEB_11D3_A906_0004ACE655F9__INCLUDED_)
+#define AFX_TOLECLIENTSITE_H__49B97C0A_8DEB_11D3_A906_0004ACE655F9__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include <windows.h>
+
+class tOleHandler;
+
+class tOleClientSite : public IOleClientSite
+{
+public:
+ tOleClientSite(LPUNKNOWN pUnkOuter, tOleHandler *olehandler);
+ virtual ~tOleClientSite();
+
+ STDMETHODIMP QueryInterface(REFIID, LPVOID *);
+ STDMETHODIMP_(ULONG) AddRef(void);
+ STDMETHODIMP_(ULONG) Release(void);
+
+ STDMETHODIMP SaveObject(void);
+ STDMETHODIMP GetMoniker(DWORD, DWORD, LPMONIKER *);
+ STDMETHODIMP GetContainer(LPOLECONTAINER *);
+ STDMETHODIMP ShowObject(void);
+ STDMETHODIMP OnShowWindow(BOOL);
+ STDMETHODIMP RequestNewObjectLayout(void);
+
+protected:
+ tOleHandler * handler;
+ ULONG m_cRef;
+ //class CTenant *m_pTen;
+ LPUNKNOWN m_pUnkOuter;
+};
+
+#endif // !defined(AFX_TOLECLIENTSITE_H__49B97C0A_8DEB_11D3_A906_0004ACE655F9__INCLUDED_)
diff --git a/iup/srcole/tOleControlSite.cpp b/iup/srcole/tOleControlSite.cpp
new file mode 100755
index 0000000..71f3519
--- /dev/null
+++ b/iup/srcole/tOleControlSite.cpp
@@ -0,0 +1,301 @@
+// tOleControlSite.cpp: implementation of the tOleControlSite class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "tOleControlSite.h"
+#include "tOleHandler.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+/*
+ * tOleControlSite::tOleControlSite
+ * tOleControlSite::~tOleControlSite
+ *
+ * Parameters (Constructor):
+ * pTen PCTenant of the object we're in.
+ * pUnkOuter LPUNKNOWN to which we delegate.
+ */
+
+tOleControlSite::tOleControlSite(tOleHandler *pTen
+ , LPUNKNOWN pUnkOuter)
+ {
+ m_cRef=0;
+ m_pTen=pTen;
+ m_pUnkOuter=pUnkOuter;
+ return;
+ }
+
+tOleControlSite::~tOleControlSite(void)
+ {
+ return;
+ }
+
+
+
+
+/*
+ * tOleControlSite::QueryInterface
+ * tOleControlSite::AddRef
+ * tOleControlSite::Release
+ *
+ * Purpose:
+ * Delegating IUnknown members for tOleControlSite.
+ */
+
+STDMETHODIMP tOleControlSite::QueryInterface(REFIID riid
+ , LPVOID *ppv)
+ {
+ return m_pUnkOuter->QueryInterface(riid, ppv);
+ }
+
+
+STDMETHODIMP_(ULONG) tOleControlSite::AddRef(void)
+ {
+ ++m_cRef;
+ return m_pUnkOuter->AddRef();
+ }
+
+STDMETHODIMP_(ULONG) tOleControlSite::Release(void)
+ {
+ --m_cRef;
+ return m_pUnkOuter->Release();
+ }
+
+
+
+
+
+/*
+ * tOleControlSite::OnControlInfoChanged
+ *
+ * Purpose:
+ * Informs the site that the CONTROLINFO for the control has
+ * changed and we thus need to reload the data.
+ *
+ * Parameters:
+ * None
+ *
+ * Return Value:
+ * HRESULT NOERROR
+ */
+
+STDMETHODIMP tOleControlSite::OnControlInfoChanged(void)
+ {
+ //We also update our "have info" flag here.
+ if(m_pTen->m_pIOleControl != NULL)
+ {
+ m_pTen->m_fHaveControlInfo=SUCCEEDED(m_pTen->m_pIOleControl
+ ->GetControlInfo(&m_pTen->m_ctrlInfo));
+ }
+
+ return NOERROR;
+ }
+
+
+
+
+
+/*
+ * tOleControlSite::LockInPlaceActive
+ *
+ * Purpose:
+ * Forces the container to keep this control in-place active
+ * (but not UI active) regardless of other considerations, or
+ * removes this lock.
+ *
+ * Parameters:
+ * fLock BOOL indicating to lock (TRUE) or unlock (FALSE)
+ * in-place activation.
+ *
+ * Return Value:
+ * HRESULT NOERROR
+ */
+
+STDMETHODIMP tOleControlSite::LockInPlaceActive(BOOL fLock)
+ {
+ if (fLock)
+ m_pTen->m_cLockInPlace++;
+ else
+ {
+ if (0==--m_pTen->m_cLockInPlace)
+ {
+ //If there's a pending deactivate, do it now.
+ if (m_pTen->m_fPendingDeactivate)
+ m_pTen->DeactivateInPlaceObject(TRUE);
+ }
+ }
+
+ return NOERROR;
+ }
+
+
+
+
+
+/*
+ * tOleControlSite::GetExtendedControl
+ *
+ * Purpose:
+ * Returns a pointer to the container's extended control that wraps
+ * the actual control in this site, if one exists.
+ *
+ * Parameters:
+ * ppDispatch LPDISPATCH * in which to return the pointer
+ * to the extended control's IDispatch interface.
+ *
+ * Return Value:
+ * HRESULT NOERROR or a general error value.
+ */
+
+STDMETHODIMP tOleControlSite::GetExtendedControl(LPDISPATCH
+ * ppDispatch)
+ {
+ *ppDispatch=NULL;
+ return ResultFromScode(E_NOTIMPL);
+ }
+
+
+
+
+
+
+/*
+ * tOleControlSite::TransformCoords
+ *
+ * Purpose:
+ * Converts coordinates in HIMETRIC units into those used by the
+ * container.
+ *
+ * Parameters:
+ * pptlHiMet POINTL * containing either the coordinates to
+ * transform to container or where to store the
+ * transformed container coordinates.
+ * pptlCont POINTF * containing the container coordinates.
+ * dwFlags DWORD containing instructional flags.
+ *
+ * Return Value:
+ * HRESULT NOERROR or a general error value.
+ */
+
+STDMETHODIMP tOleControlSite::TransformCoords(POINTL *pptlHiMet
+ , POINTF *pptlCont, DWORD dwFlags)
+ {
+ if (NULL==pptlHiMet || NULL==pptlCont)
+ return ResultFromScode(E_POINTER);
+
+ /*
+ * Convert coordinates. We use MM_LOMETRIC which means that
+ * to convert from HIMETRIC we divide by 10 and negate the y
+ * coordinate. Conversion to HIMETRIC means negate the y
+ * and multiply by 10. Note that size and position are
+ * considered the same thing, that is, we don't differentiate
+ * the two.
+ */
+
+ if (XFORMCOORDS_HIMETRICTOCONTAINER & dwFlags)
+ {
+ pptlCont->x=(float)(pptlHiMet->x/10);
+ pptlCont->y=(float)-(pptlHiMet->y/10);
+ }
+ else
+ {
+ pptlHiMet->x=(long)(pptlCont->x*10);
+ pptlHiMet->y=(long)-(pptlCont->y*10);
+ }
+
+ return NOERROR;
+ }
+
+
+
+
+
+/*
+ * tOleControlSite::TranslateAccelerator
+ *
+ * Purpose:
+ * Instructs the container to translate a keyboard accelerator
+ * message that the control has picked up instead.
+ *
+ * Parameters:
+ * pMsg LPMSG to the message to translate.
+ * grfModifiers DWORD flags with additional instructions.
+ *
+ * Return Value:
+ * HRESULT NOERROR or a general error value.
+ */
+
+STDMETHODIMP tOleControlSite::TranslateAccelerator(LPMSG pMsg
+ , DWORD grfModifiers)
+ {
+ /*
+ * The control has picked up a keystroke through its own
+ * TranslateAccelerator and is now giving us the change to
+ * play with it. Currently there are no flags for
+ * grfModifiers, so we ignore them. Especially since
+ * we have nothing to do here ourselves anyway.
+ */
+ return ResultFromScode(S_FALSE);
+ }
+
+
+
+
+/*
+ * tOleControlSite::OnFocus
+ *
+ * Purpose:
+ * Informs the container that focus has either been lost or
+ * gained in the control.
+ *
+ * Parameters:
+ * fGotFocus BOOL indicating that the control gained (TRUE)
+ * or lost (FALSE) focus.
+ *
+ * Return Value:
+ * HRESULT NOERROR or a general error value.
+ */
+
+STDMETHODIMP tOleControlSite::OnFocus(BOOL fGotFocus)
+ {
+ /*
+ * Patron doesn't do this, but to handle the default
+ * and cancel buttons properly, we normally process RETURN
+ * and ESC accelerators to press the right button.
+ * This behavior must be disabled when the control with
+ * the focus has either CTRLINFO_EATS_RETURN or
+ * CTRLINFO_EATS_ESCAPE set. We tell the frame as
+ * we need to when a new control gets the focus. We
+ * do nothing when a control loses the focus.
+ */
+ return NOERROR;
+ }
+
+
+
+/*
+ * tOleControlSite::ShowPropertyFrame
+ *
+ * Purpose:
+ * Instructs the container to show the property frame if
+ * this is an extended object and requires its own property
+ * pages.
+ *
+ * Parameters:
+ * None
+ *
+ * Return Value:
+ * HRESULT NOERROR or a general error value.
+ */
+
+STDMETHODIMP tOleControlSite::ShowPropertyFrame(void)
+ {
+ /*
+ * Returning an error here means that the container has
+ * no property pages itself for the control, so the
+ * control should display its own.
+ */
+ return ResultFromScode(E_NOTIMPL);
+ }
diff --git a/iup/srcole/tOleControlSite.h b/iup/srcole/tOleControlSite.h
new file mode 100755
index 0000000..8e805d3
--- /dev/null
+++ b/iup/srcole/tOleControlSite.h
@@ -0,0 +1,39 @@
+// tOleControlSite.h: interface for the tOleControlSite class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_TOLECONTROLSITE_H__37A5ADEC_91FB_11D3_A906_0004AC252223__INCLUDED_)
+#define AFX_TOLECONTROLSITE_H__37A5ADEC_91FB_11D3_A906_0004AC252223__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include <windows.h>
+#include <olectl.h>
+
+class tOleControlSite : public IOleControlSite
+{
+ protected:
+ ULONG m_cRef;
+ class tOleHandler *m_pTen;
+ LPUNKNOWN m_pUnkOuter;
+
+ public:
+ tOleControlSite(class tOleHandler *, LPUNKNOWN);
+ ~tOleControlSite(void);
+
+ STDMETHODIMP QueryInterface(REFIID, LPVOID *);
+ STDMETHODIMP_(ULONG) AddRef(void);
+ STDMETHODIMP_(ULONG) Release(void);
+
+ STDMETHODIMP OnControlInfoChanged(void);
+ STDMETHODIMP LockInPlaceActive(BOOL);
+ STDMETHODIMP GetExtendedControl(LPDISPATCH *);
+ STDMETHODIMP TransformCoords(POINTL *, POINTF *, DWORD);
+ STDMETHODIMP TranslateAccelerator(LPMSG, DWORD);
+ STDMETHODIMP OnFocus(BOOL);
+ STDMETHODIMP ShowPropertyFrame(void);
+};
+
+#endif // !defined(AFX_TOLECONTROLSITE_H__37A5ADEC_91FB_11D3_A906_0004AC252223__INCLUDED_)
diff --git a/iup/srcole/tOleHandler.cpp b/iup/srcole/tOleHandler.cpp
new file mode 100755
index 0000000..688ba30
--- /dev/null
+++ b/iup/srcole/tOleHandler.cpp
@@ -0,0 +1,1123 @@
+// tOleHandler.cpp: implementation of the tOleHandler class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include <ole2.h>
+#include <assert.h>
+
+#ifndef _OLE2_H_
+#define _OLE2_H_
+#endif
+
+#include "tOleHandler.h"
+#include "tDispatch.h"
+
+/*
+ * tOleHandler::tOleHandler
+ * tOleHandler::~tOleHandler
+ *
+ */
+
+tOleHandler::tOleHandler()
+{
+ natural_width = 0;
+ natural_height = 0;
+
+ m_hWnd=NULL;
+
+ m_fInitialized=0;
+ m_cOpens=0;
+
+ m_pObj=NULL;
+ m_clsID=CLSID_NULL;
+ m_fSetExtent=FALSE;
+
+ m_cRef=0;
+ m_pIOleObject=NULL;
+ m_pIViewObject2=NULL;
+ m_grfMisc=0;
+
+ m_rcl.right = m_rcl.left = 0;
+ m_rcl.top = m_rcl.bottom = 0;
+
+ m_pImpIOleClientSite=NULL;
+
+ m_fRepaintEnabled=TRUE;
+
+
+ m_pImpIOleIPSite=NULL;
+ m_pIOleIPObject=NULL;
+ m_rcPos.left=-1;
+ m_fInRectSet=FALSE;
+
+ //CHAPTER24MOD
+ m_pImpIOleControlSite=NULL;
+ m_pImpIDispatch=NULL;
+
+ m_pIOleControl=NULL;
+
+ m_fHaveControlInfo=FALSE;
+ m_cLockInPlace=0;
+ m_fPendingDeactivate=FALSE;
+ //End CHAPTER24MOD
+
+ return;
+}
+
+
+tOleHandler::~tOleHandler(void)
+ {
+
+ //Object pointers cleaned up in Close.
+
+ //CHAPTER24MOD
+
+ DeleteInterfaceImp(m_pImpIOleControlSite);
+ DeleteInterfaceImp(m_pImpIDispatch);
+
+ //End CHAPTER24MOD
+
+ DeleteInterfaceImp(m_pImpIOleIPSite);
+ DeleteInterfaceImp(m_pImpIOleClientSite);
+ return;
+ }
+
+
+
+
+/*
+ * tOleHandler::QueryInterface
+ * tOleHandler::AddRef
+ * tOleHandler::Release
+ *
+ * Purpose:
+ * IUnknown members for tOleHandler object.
+ */
+
+STDMETHODIMP tOleHandler::QueryInterface(REFIID riid, LPVOID *ppv)
+ {
+ *ppv=NULL;
+
+ if (IID_IUnknown==riid)
+ *ppv=this;
+
+ if (IID_IOleClientSite==riid)
+ *ppv=m_pImpIOleClientSite;
+
+ if (IID_IOleWindow==riid || IID_IOleInPlaceSite==riid)
+ *ppv=m_pImpIOleIPSite;
+
+ //CHAPTER24MOD
+ if (IID_IOleControlSite==riid)
+ *ppv=m_pImpIOleControlSite;
+
+ //Queries for IDispatch return the ambient properties interface
+ if (IID_IDispatch==riid)
+ *ppv=m_pImpIDispatch;
+ //End CHAPTER24MOD
+
+ if (NULL!=*ppv)
+ {
+ ((LPUNKNOWN)*ppv)->AddRef();
+ return NOERROR;
+ }
+
+ return ResultFromScode(E_NOINTERFACE);
+ }
+
+
+STDMETHODIMP_(ULONG) tOleHandler::AddRef(void)
+ {
+ return ++m_cRef;
+ }
+
+STDMETHODIMP_(ULONG) tOleHandler::Release(void)
+ {
+ if (0!=--m_cRef)
+ return m_cRef;
+
+ delete this;
+ return 0;
+ }
+
+
+
+
+
+
+/*
+ * tOleHandler::Create
+ *
+ * Purpose:
+ * Creates a new tenant of the given CLSID, which can be either a
+ * static bitmap or metafile or any compound document object.
+ *
+ * Parameters:
+ * tType TENANTTYPE to create, either a static metafile,
+ * bitmap, or some kind of compound document object
+ * This determines which OleCreate* call we use.
+ * pvType LPVOID providing the relevant pointer from which
+ * to create the tenant, depending on iType.
+ * pFE LPFORMATETC specifying the type of renderings
+ * to use.
+ * pptl PPOINTL in which we store offset coordinates.
+ * pszl LPSIZEL where this object should store its
+ * lometric extents.
+ * pIStorage LPSTORAGE of the page we live in. We have to
+ * create another storage in this for the tenant.
+ * ppo PPATRONOBJECT containing placement data.
+ * dwData DWORD with extra data, sensitive to iType.
+ *
+ * Return Value:
+ * UINT A CREATE_* value depending on what we
+ * actually do.
+ */
+
+UINT tOleHandler::Create(LPVOID pvType)
+ {
+ HRESULT hr;
+ LPUNKNOWN pObj;
+ UINT uRet=CREATE_GRAPHICONLY;
+ DWORD dwMode=STGM_READWRITE
+ | STGM_SHARE_EXCLUSIVE
+ | STGM_DELETEONRELEASE;
+
+
+ IPersistStorage *persist_storage = NULL;
+
+ StgCreateDocfile(NULL, dwMode, 0, &m_pIStorage);
+
+ if(m_pIStorage == NULL)
+ return CREATE_FAILED;
+
+ if (NULL==pvType)
+ return CREATE_FAILED;
+
+ hr=ResultFromScode(E_FAIL);
+
+ Open(NULL);
+
+ //CHAPTER24MOD
+ /*
+ * The OLE Control specifications mention that a
+ * a control might implement IPersistStream[Init]
+ * instead of IPersistStorage. In that case you
+ * cannot use OleCreate on a control but must rather
+ * use CoCreateInstance since OleCreate assumes
+ * that IPersistStorage is available. With a control,
+ * you would have to create the object first, then
+ * check if OLEMISC_SETCLIENTSITEFIRST is set, then
+ * send it your IOleClientSite first. Then you check
+ * for IPersistStorage and failing that, try
+ * IPersistStream[Init].
+ *
+ * For simplicity we'll assume storage-based
+ * controls in this sample.
+ */
+ //End CHAPTER24MOD
+
+ hr = CoCreateInstance(*((LPCLSID)pvType), NULL,
+ CLSCTX_ALL, IID_IUnknown, (LPVOID *)&pObj);
+
+ if(FAILED(hr))
+ return CREATE_FAILED;
+
+ if(pObj->QueryInterface(IID_IPersistStorage, (void **) &persist_storage) != S_OK)
+ return CREATE_FAILED;
+
+ //We need an IOleObject most of the time, so get one here.
+ m_pIOleObject=NULL;
+ hr = pObj->QueryInterface(IID_IOleObject, (LPVOID*)&m_pIOleObject);
+
+ if(FAILED(hr))
+ return CREATE_FAILED;
+
+ // seta o client site
+ m_pIOleObject->SetClientSite(m_pImpIOleClientSite);
+
+ // inicializa o objeto
+ hr = persist_storage->InitNew(m_pIStorage);
+
+ if(FAILED(hr))
+ return CREATE_FAILED;
+
+
+ //We don't get the size if PatronObject data was seen already.
+ if (!ObjectInitialize(pObj))
+ {
+ return CREATE_FAILED;
+ }
+
+ SIZEL szl;
+
+ hr=ResultFromScode(E_FAIL);
+
+ CalcNaturalSize();
+
+ //CHAPTER24MOD
+ //Make sure this happens
+ /*if ((OLEMISC_ACTIVATEWHENVISIBLE & m_grfMisc))
+ Activate(OLEIVERB_INPLACEACTIVATE, NULL);*/
+ //End CHAPTER24MOD
+
+ return uRet;
+ }
+
+
+
+
+
+
+
+/*
+ * tOleHandler::ObjectInitialize
+ * (Protected)
+ *
+ * Purpose:
+ * Performs operations necessary after creating an object or
+ * reloading one from storage.
+ *
+ * Parameters:
+ * pObj LPUNKNOWN of the object in this tenant.
+ * pFE LPFORMATETC describing the graphic here.
+ * dwData DWORD extra data. If pFE->dwAspect==
+ * DVASPECT_ICON then this is the iconic metafile.
+ *
+ * Return Value:
+ * BOOL TRUE if the function succeeded, FALSE otherwise.
+ */
+
+BOOL tOleHandler::ObjectInitialize(LPUNKNOWN pObj)
+ {
+ HRESULT hr;
+ FORMATETC fe;
+
+ SETDefFormatEtc(fe, 0, TYMED_NULL);
+ LPFORMATETC pFE = &fe;
+
+
+ if (NULL==pObj || NULL==pFE)
+ return FALSE;
+
+ m_pObj=pObj;
+ m_fe=*pFE;
+ m_fe.ptd=NULL;
+ m_dwState=TENANTSTATE_DEFAULT;
+
+ m_pIViewObject2=NULL;
+ hr=pObj->QueryInterface(IID_IViewObject2
+ , (LPVOID*)&m_pIViewObject2);
+
+ if (FAILED(hr))
+ return FALSE;
+
+ /*
+ * Get the MiscStatus bits and check for OLEMISC_ONLYICONIC.
+ * If set, force dwAspect in m_fe to DVASPECT_ICON so we
+ * remember to draw it properly and do extents right.
+ */
+ m_pIOleObject->GetMiscStatus(m_fe.dwAspect, &m_grfMisc);
+
+
+ //CHAPTER24MOD
+ //Run the object if it says to do so
+ if (OLEMISC_ALWAYSRUN & m_grfMisc)
+ OleRun(pObj);
+ //End CHAPTER24MOD
+
+
+
+ //CHAPTER24MOD
+ //Go try initializing control-related things.
+ ControlInitialize();
+ //End CHAPTER24MOD
+
+ return TRUE;
+ }
+
+
+
+
+/*
+ * tOleHandler::Open
+ *
+ * Purpose:
+ * Retrieves the IStorage associated with this tenant. The
+ * IStorage is owned by the tenant and thus the tenant always
+ * holds a reference count.
+ *
+ * If the storage is already open for this tenant, then this
+ * function will AddRef it; therefore the caller must always
+ * match an Open with a Close.
+ *
+ * Parameters:
+ * pIStorage LPSTORAGE above this tenant (which has its
+ * own storage).
+ *
+ * Return Value:
+ * BOOL TRUE if opening succeeds, FALSE otherwise.
+ */
+
+BOOL tOleHandler::Open(LPSTORAGE pIStorage)
+ {
+ HRESULT hr=NOERROR;
+ DWORD dwMode=STGM_TRANSACTED | STGM_READWRITE
+ | STGM_SHARE_EXCLUSIVE;
+
+
+ //Create these if we don't have them already.
+ if (NULL==m_pImpIOleClientSite)
+ {
+ m_pImpIOleClientSite=new tOleClientSite(this, this);
+ m_pImpIOleIPSite=new tOleInPlaceSite(this, this);
+
+ //CHAPTER24MOD
+ m_pImpIOleControlSite=new tOleControlSite(this, this);
+ m_pImpIDispatch=new tDispatch(this, this);
+
+ if (NULL==m_pImpIOleClientSite
+ || NULL==m_pImpIOleIPSite || NULL==m_pImpIOleControlSite
+ || NULL==m_pImpIDispatch)
+ return FALSE;
+ //End CHAPTER24MOD
+ }
+
+ return TRUE;
+ }
+
+
+
+
+/*
+ * tOleHandler::Close
+ *
+ * Purpose:
+ * Possibly commits the storage, then releases it reversing the
+ * reference count from Open. If the reference on the storage
+ * goes to zero, the storage is forgotten. However, the object we
+ * contain is still held and as long as it's active the storage
+ * remains alive.
+ *
+ * Parameters:
+ * fCommit BOOL indicating if we're to commit.
+ *
+ * Return Value:
+ * None
+ */
+
+void tOleHandler::Close(BOOL fCommit)
+ {
+ /*
+ * We can't use a zero reference count to know when to NULL
+ * this since other things might have AddRef'd the storage.
+ */
+ //OnInPlaceDeactivate releases this pointer.
+ if (NULL!=m_pIOleIPObject)
+ m_pIOleIPObject->InPlaceDeactivate();
+
+ //Close the object saving if necessary
+ if (NULL!=m_pIOleObject)
+ {
+ m_pIOleObject->Close(OLECLOSE_SAVEIFDIRTY);
+ ReleaseInterface(m_pIOleObject);
+ }
+
+ //Release all other held pointers
+ //CHAPTER24MOD
+ ReleaseInterface(m_pIOleControl);
+
+ //End CHAPTER24MOD
+
+ //Release all other held pointers
+ if (NULL!=m_pIViewObject2)
+ {
+ m_pIViewObject2->SetAdvise(m_fe.dwAspect, 0, NULL);
+ ReleaseInterface(m_pIViewObject2);
+ }
+
+ //We know we only hold one ref from Create or Load
+ ReleaseInterface(m_pObj);
+
+ return;
+ }
+
+
+/*
+ * tOleHandler::Activate
+ *
+ * Purpose:
+ * Activates a verb on the object living in the tenant. Does
+ * nothing for static objects.
+ *
+ * Parameters:
+ * iVerb LONG of the verb to execute.
+ * pMSG LPMSG to the message causing the invocation.
+ *
+ * Return Value:
+ * BOOL TRUE if the object changed due to this verb
+ * execution.
+ */
+
+BOOL tOleHandler::Activate(LONG iVerb, LPMSG pMSG)
+ {
+ RECT rc, rcH;
+ SIZEL szl;
+
+ //Can't activate statics.
+/* if (TENANTTYPE_STATIC==m_tType || NULL==m_pIOleObject)
+ {
+ MessageBeep(0);
+ return FALSE;
+ }*/
+
+ RECTFROMRECTL(rc, m_rcl);
+ RectConvertMappings(&rc, NULL, TRUE);
+ XformRectInPixelsToHimetric(NULL, &rc, &rcH);
+
+ //Get the server running first, then do a SetExtent, then show it
+ OleRun(m_pIOleObject);
+
+ if (m_fSetExtent)
+ {
+ SETSIZEL(szl, rcH.right-rcH.left, rcH.top-rcH.bottom);
+ m_pIOleObject->SetExtent(m_fe.dwAspect, &szl);
+ m_fSetExtent=FALSE;
+ }
+
+ //CHAPTER24MOD
+ /*
+ * If we have a pending deactivation, but we're activating
+ * again, clear the pending flag.
+ */
+ if (OLEIVERB_UIACTIVATE==iVerb
+ || OLEIVERB_INPLACEACTIVATE==iVerb)
+ m_fPendingDeactivate=FALSE;
+ //End CHAPTER24MOD
+
+ m_pIOleObject->DoVerb(iVerb, pMSG, m_pImpIOleClientSite, 0
+ , m_hWnd, &rcH);
+
+ //If object changes, IAdviseSink::OnViewChange will see it.
+ return FALSE;
+ }
+
+
+
+
+
+
+/*
+ * tOleHandler::ObjectGet
+ *
+ * Purpose:
+ * Retrieves the LPUNKNOWN of the object in use by this tenant
+ *
+ * Parameters:
+ * ppUnk LPUNKNOWN * in which to return the object
+ * pointer.
+ *
+ * Return Value:
+ * None
+ */
+
+void tOleHandler::ObjectGet(LPUNKNOWN *ppUnk)
+ {
+ if (NULL!=ppUnk)
+ {
+ *ppUnk=m_pObj;
+ m_pObj->AddRef();
+ }
+
+ return;
+ }
+
+
+
+
+
+/*
+ * tOleHandler::SizeGet
+ * tOleHandler::SizeSet
+ * tOleHandler::RectGet
+ * tOleHandler::RectSet
+ *
+ * Purpose:
+ * Returns or sets the size/position of the object contained here.
+ *
+ * Parameters:
+ * pszl/prcl LPSIZEL (Size) or LPRECTL (Rect) with the
+ * extents of interest. In Get situations,
+ * this will receive the extents; in Set it
+ * contains the extents.
+ * fDevice BOOL indicating that pszl/prcl is expressed
+ * in device units. Otherwise it's LOMETRIC.
+ * fInformObj (Set Only) BOOL indicating if we need to inform
+ * the object all.
+ *
+ * Return Value:
+ * None
+ */
+
+void tOleHandler::SizeGet(LPSIZEL pszl, BOOL fDevice)
+ {
+ if (!fDevice)
+ {
+ pszl->cx=m_rcl.right-m_rcl.left;
+ pszl->cy=m_rcl.bottom-m_rcl.top;
+ }
+ else
+ {
+ RECT rc;
+
+ SetRect(&rc, (int)(m_rcl.right-m_rcl.left)
+ , (int)(m_rcl.bottom-m_rcl.top), 0, 0);
+
+ RectConvertMappings(&rc, NULL, TRUE);
+
+ pszl->cx=(long)rc.left;
+ pszl->cy=(long)rc.top;
+ }
+
+ return;
+ }
+
+
+void tOleHandler::SizeSet(LPSIZEL pszl, BOOL fDevice, BOOL fInformObj)
+ {
+ SIZEL szl;
+
+ if (!fDevice)
+ {
+ szl=*pszl;
+ m_rcl.right =pszl->cx+m_rcl.left;
+ m_rcl.bottom=pszl->cy+m_rcl.top;
+ }
+ else
+ {
+ RECT rc;
+
+ SetRect(&rc, (int)pszl->cx, (int)pszl->cy, 0, 0);
+ RectConvertMappings(&rc, NULL, FALSE);
+
+ m_rcl.right =(long)rc.left+m_rcl.left;
+ m_rcl.bottom=(long)rc.top+m_rcl.top;
+
+ SETSIZEL(szl, (long)rc.left, (long)rc.top);
+ }
+
+ //Tell OLE that this object was resized.
+ if (NULL!=m_pIOleObject && fInformObj)
+ {
+ HRESULT hr;
+ BOOL fRun=FALSE;
+
+ //Convert our LOMETRIC into HIMETRIC by *=10
+ szl.cx*=10;
+ szl.cy*=-10; //Our size is stored negative.
+
+ /*
+ * If the MiscStatus bit of OLEMISC_RECOMPOSEONRESIZE
+ * is set, then we need to run the object before calling
+ * SetExtent to make sure it has a real chance to
+ * re-render the object. We have to update and close
+ * the object as well after this happens.
+ */
+
+ if (OLEMISC_RECOMPOSEONRESIZE & m_grfMisc)
+ {
+ if (!OleIsRunning(m_pIOleObject))
+ {
+ OleRun(m_pIOleObject);
+ fRun=TRUE;
+ }
+ }
+
+ hr=m_pIOleObject->SetExtent(m_fe.dwAspect, &szl);
+
+ /*
+ * If the object is not running and it does not have
+ * RECOMPOSEONRESIZE, then SetExtent fails. Make
+ * sure that we call SetExtent again (by just calling
+ * SizeSet here again) when we next run the object.
+ */
+ if (SUCCEEDED(hr))
+ {
+ m_fSetExtent=FALSE;
+
+ if (fRun)
+ {
+ m_pIOleObject->Update();
+ m_pIOleObject->Close(OLECLOSE_SAVEIFDIRTY);
+ }
+ }
+ else
+ {
+ if (OLE_E_NOTRUNNING==GetScode(hr))
+ m_fSetExtent=TRUE;
+ }
+ }
+
+ return;
+ }
+
+
+void tOleHandler::RectGet(LPRECTL prcl, BOOL fDevice)
+ {
+ if (!fDevice)
+ *prcl=m_rcl;
+ else
+ {
+ RECT rc;
+
+ RECTFROMRECTL(rc, m_rcl);
+ RectConvertMappings(&rc, NULL, TRUE);
+ RECTLFROMRECT(*prcl, rc);
+ }
+
+ return;
+ }
+
+
+void tOleHandler::RectSet(LPRECTL prcl, BOOL fDevice, BOOL fInformObj)
+ {
+ SIZEL szl;
+ LONG cx, cy;
+
+ /*
+ * Prevent reentrant calls that may come from calling
+ * UpdateInPlaceObjectRects here and elsewhere.
+ */
+ if (m_fInRectSet)
+ return;
+
+ m_fInRectSet=TRUE;
+
+ cx=m_rcl.right-m_rcl.left;
+ cy=m_rcl.bottom-m_rcl.top;
+
+ if (!fDevice)
+ m_rcl=*prcl;
+ else
+ {
+ RECT rc;
+
+ RECTFROMRECTL(rc, *prcl);
+ RectConvertMappings(&rc, NULL, FALSE);
+ RECTLFROMRECT(m_rcl, rc);
+ }
+
+ /*
+ * Tell ourselves that the size changed, if it did. SizeSet
+ * will call IOleObject::SetExtent for us.
+ */
+ if ((m_rcl.right-m_rcl.left)!=cx || (m_rcl.bottom-m_rcl.top)!=cy)
+ {
+ SETSIZEL(szl, m_rcl.right-m_rcl.left, m_rcl.bottom-m_rcl.top);
+ SizeSet(&szl, FALSE, fInformObj);
+ }
+
+ //Tell an in-place active object it moved too
+ UpdateInPlaceObjectRects(NULL, TRUE);
+ m_fInRectSet=FALSE;
+ return;
+ }
+
+
+
+
+
+
+
+
+/*
+ * tOleHandler::DeactivateInPlaceObject
+ *
+ * Purpose:
+ * Deactivates an in-place object if there is one in this tenant.
+ *
+ * Parameters:
+ * fFull BOOL indicating full deactivation of UI
+ * deactivate only.
+ *
+ * Return Value:
+ * None
+ */
+
+void tOleHandler::DeactivateInPlaceObject(BOOL fFull)
+ {
+ if (NULL!=m_pIOleIPObject)
+ {
+ /*
+ * Activate-when-visible objects only UI deactivate
+ * unless we're fully deactivating on purpose.
+ */
+ if ((OLEMISC_ACTIVATEWHENVISIBLE & m_grfMisc) && !fFull)
+ m_pIOleIPObject->UIDeactivate();
+ else
+ {
+ //CHAPTER24MOD
+ /*
+ * Only deactivate when there's no locks. If there
+ * is a lock, then remember that we need to deactivate
+ * when all the locks go away.
+ */
+ if (0==m_cLockInPlace)
+ m_pIOleIPObject->InPlaceDeactivate();
+ else
+ m_fPendingDeactivate=TRUE;
+ //End CHAPTER24MOD
+ }
+ }
+
+ return;
+ }
+
+
+
+/*
+ * tOleHandler::UpdateInPlaceObjectRects
+ *
+ * Purpose:
+ * Generates a call to IOleInPlaceObject::SetObjectRects to allow
+ * it to show it's shading and its object adornments properly.
+ * This function deals in HIMETRIC units.
+ *
+ * Parameters:
+ * prcPos LPCRECT to the size the object wants. Ignored
+ * if NULL in which case we use the size of the
+ * tenant. This rect is in client coordinates of
+ * the pages window.
+ * fUseTenantRect BOOL indicating if we need to use the tenant
+ * rectangle offset for scrolling regardless.
+ *
+ * Return Value:
+ * None
+ */
+
+void tOleHandler::UpdateInPlaceObjectRects(LPCRECT prcPos
+ , BOOL fUseTenantRect)
+ {
+ RECTL rcl;
+ RECT rc;
+ RECT rcClip;
+ BOOL fResizeTenant=TRUE;
+
+ //We don't clip special anywhere in our window.
+ SetRect(&rcClip, 0, 0, 32767, 32767);
+
+ /*
+ * Note that if the object here is activate-when-visible
+ * we'll always have this pointer.
+ */
+ if (NULL!=m_pIOleIPObject)
+ {
+ /*
+ * This uses the last position rectangle from
+ * IOleInPlaceSite::OnPosRectChange if it's been
+ * initialized
+ */
+ if (NULL==prcPos && -1!=m_rcPos.left && !fUseTenantRect)
+ prcPos=&m_rcPos;
+
+ //This code is normally called from OnPosRectChange direct.
+ if (NULL!=prcPos && !fUseTenantRect)
+ {
+ rc=*prcPos;
+
+ //Calculate the boundaries of the full page
+ //m_pPG->CalcBoundingRect(&rcClip, FALSE);
+
+ //Make sure we limit object to page boundaries.
+ IntersectRect(&rc, &rc, &rcClip);
+ }
+ else
+ {
+ /*
+ * We have no rectangle of the object on which to
+ * base the position, so just use the tenant rectangle.
+ * This code is also used when scrolling objects.
+ */
+ RectGet(&rcl, TRUE);
+ RECTFROMRECTL(rc, rcl);
+
+ //Account for scrolling
+// OffsetRect(&rc, -(int)m_pPG->m_xPos, -(int)m_pPG->m_yPos);
+ fResizeTenant=FALSE;
+ }
+
+
+ /*
+ * NOTE: The rectangles to SetObjectRects is in client
+ * coordinates of the pages window.
+ */
+ if (NULL!=m_pIOleIPObject)
+ m_pIOleIPObject->SetObjectRects(&rc, &rcClip);
+
+ if (fResizeTenant)
+ {
+ //Need to tell the tenant to change position too
+ RECTLFROMRECT(rcl, rc);
+ RectSet(&rcl, TRUE, FALSE);
+ }
+ }
+
+ return;
+ }
+
+
+/*
+ * tOleHandler::ObjectWindow
+ *
+ * Purpose:
+ * Returns the window handle of the in-place object.
+ *
+ * Parameters:
+ * None
+ *
+ * Return Value:
+ * HWND Handle of the object window.
+ */
+
+HWND tOleHandler::ObjectWindow(void)
+ {
+ HWND hWnd=NULL;
+
+ if (NULL!=m_pIOleIPObject)
+ m_pIOleIPObject->GetWindow(&hWnd);
+
+ return hWnd;
+ }
+
+
+
+
+/*
+ * tOleHandler::ControlInitialize
+ *
+ * Purpose:
+ * Initializes the control if that's the type of object we have
+ * in the site.
+ *
+ * Parameters:
+ * None
+ *
+ * Return Value:
+ * BOOL TRUE if initialization worked, FALSE otherwise.
+ */
+
+BOOL tOleHandler::ControlInitialize(void)
+ {
+ HRESULT hr;
+ BOOL fEvents;
+
+ if (NULL==m_pObj)
+ return FALSE;
+
+ hr=m_pObj->QueryInterface(IID_IOleControl
+ , (PPVOID)&m_pIOleControl);
+
+ //Failure means not a control.
+ if (FAILED(hr))
+ return FALSE;
+
+ m_ambientProp.setControl(m_pIOleControl);
+
+ m_dwState |= TENANTSTATE_CONTROL;
+
+ if (OLEMISC_ACTSLIKEBUTTON & m_grfMisc)
+ m_dwState |= TENANTSTATE_BUTTON;
+
+ //We don't use this, but might as well store it.
+ if (OLEMISC_ACTSLIKELABEL & m_grfMisc)
+ m_dwState |= TENANTSTATE_LABEL;
+
+ /*
+ * Call IOleControl::GetControlInfo to retrieve the keyboard
+ * information for this control. We have to reload this
+ * information in IOleControlSite::OnControlInfoChanged.
+ */
+ /*m_fHaveControlInfo=SUCCEEDED(m_pIOleControl
+ ->GetControlInfo(&m_ctrlInfo));*/ //!!!
+
+
+ /*
+ * If you wanted to receive IPropertyNotifySink notifications
+ * for a control, establish that advisory connection here
+ * through the object's IConnectionPointContainer and
+ * IConnectionPoint.
+ */
+
+ return TRUE;
+ }
+
+
+
+/*
+ * tOleHandler::GetControlFlags
+ *
+ * Purpose:
+ * Requests flags describing the control inside this tenant
+ * if there is, in fact a control.
+ *
+ * Parameters:
+ * None
+ *
+ * Return Value:
+ * DWORD Flags describing the control from the
+ * TENANT
+ */
+
+DWORD tOleHandler::GetControlFlags(void)
+ {
+ return m_dwState & STATEMASK_CONTROLS;
+ }
+
+
+
+
+
+/*
+ * tOleHandler::TryMnemonic
+ *
+ * Purpose:
+ * Asks the tenant to check the given keyboard message against
+ * one that its control might want, passing it to
+ * IOleControl::OnMnemonic if there is a match.
+ *
+ * Parameters:
+ * pMsg LPMSG containing the message to check.
+ *
+ * Return Value:
+ * BOOL TRUE if the mnemonic was a match,
+ * FALSE otherwise.
+ */
+
+BOOL tOleHandler::TryMnemonic(LPMSG pMsg)
+ {
+ UINT i;
+ BOOL fRet=FALSE;
+ LPACCEL pACC;
+ BYTE fVirt=FVIRTKEY;
+
+ if (!m_fHaveControlInfo) //False for non-controls
+ return FALSE;
+
+ if (0==m_ctrlInfo.cAccel)
+ return FALSE;
+
+ pACC=(LPACCEL)GlobalLock(m_ctrlInfo.hAccel);
+
+ if (NULL==pACC)
+ return FALSE;
+
+ /*
+ * We'll come here on WM_KEYDOWN messages and WM_SYSKEYDOWN
+ * messages. The control's accelerator table will contain
+ * entries that each have the desired key and the various
+ * modifier flags. We the create the current modifier flags
+ * then look for entries that match those flags and the key
+ * that is in the message itself.
+ */
+
+ fVirt |= (WM_SYSKEYDOWN==pMsg->message) ? FALT : 0;
+
+ //GetKeyState works on the last message
+ fVirt |= (0x8000 & GetKeyState(VK_CONTROL)) ? FCONTROL : 0;
+ fVirt |= (0x8000 & GetKeyState(VK_SHIFT)) ? FSHIFT : 0;
+
+ for (i=0; i < m_ctrlInfo.cAccel; i++)
+ {
+ if (pACC[i].key==pMsg->wParam && pACC[i].fVirt==fVirt)
+ {
+ m_pIOleControl->OnMnemonic(pMsg);
+ fRet=TRUE;
+ break;
+ }
+ }
+
+ GlobalUnlock(m_ctrlInfo.hAccel);
+ return fRet;
+ }
+
+
+
+
+
+/*
+ * tOleHandler::AmbientChange
+ *
+ * Purpose:
+ * Notifes a control that an ambient property has changed in
+ * the control site.
+ *
+ * Parameters:
+ * dispID DISPID of the property that changed.
+ *
+ * Return Value:
+ * None
+ */
+
+void tOleHandler::AmbientChange(DISPID dispID)
+ {
+ if (NULL!=m_pIOleControl)
+ m_pIOleControl->OnAmbientPropertyChange(dispID);
+
+ return;
+ }
+
+//End CHAPTER24MOD
+
+void tOleHandler::OnShow()
+{
+ // Se objeto ja' tive sido ativado, ignora chamada
+ // Alguns controles reagem mal quando ativados
+ // mais de uma vez
+ if(m_pIOleIPObject != NULL)
+ return;
+
+ if ((OLEMISC_ACTIVATEWHENVISIBLE & m_grfMisc))
+ Activate(OLEIVERB_INPLACEACTIVATE, NULL);
+}
+
+
+void tOleHandler::GetNaturalSize(long *pWidth, long *pHeight)
+{
+ assert(pWidth && pHeight);
+ if(!pWidth || !pHeight)
+ return;
+
+ *pWidth = natural_width;
+ *pHeight = natural_height;
+}
+
+/*
+ * CalcNaturalSize
+ * Obtem o tamanho desejado pelo objeto
+ */
+
+void tOleHandler::CalcNaturalSize()
+{
+ HRESULT hr;
+ SIZEL sizel;
+ RECTL rcl;
+
+ assert(m_pIViewObject2 != NULL);
+
+ if(!m_pIViewObject2)
+ return;
+
+ hr = m_pIViewObject2->GetExtent(m_fe.dwAspect, -1, NULL, &sizel);
+
+ if(FAILED(hr))
+ return;
+
+ SETRECTL(rcl, 0, 0, sizel.cx/10, -sizel.cy/10);
+ RectSet(&rcl, FALSE, TRUE);
+
+ // Obtem medidas ja' convertidas para pixels
+ SizeGet(&sizel, TRUE);
+
+ natural_width = sizel.cx;
+ natural_height = sizel.cy;
+}
+
diff --git a/iup/srcole/tOleHandler.h b/iup/srcole/tOleHandler.h
new file mode 100755
index 0000000..966cb30
--- /dev/null
+++ b/iup/srcole/tOleHandler.h
@@ -0,0 +1,139 @@
+// tOleHandler.h: interface for the tOleHandler class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_TOLEHANDLER_H__49B97C12_8DEB_11D3_A906_0004ACE655F9__INCLUDED_)
+#define AFX_TOLEHANDLER_H__49B97C12_8DEB_11D3_A906_0004ACE655F9__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include <windows.h>
+#include <olectl.h>
+
+#include "tOleClientSite.h"
+#include "tOleInPlaceSite.h"
+#include "tOleControlSite.h"
+#include "tDispatch.h"
+#include "tAmbientProperties.h"
+#include "tLegacy.h"
+
+#ifndef LPOLEINPLACEOBJECT
+typedef interface IOleInPlaceObject *LPOLEINPLACEOBJECT;
+#endif
+
+class tOleClientSite;
+
+class tOleHandler : public IUnknown
+{
+public:
+ friend class tOleClientSite;
+ friend class tOleInPlaceSite;
+ friend class tOleControlSite;
+ friend class tDispatch;
+ tOleHandler();
+ virtual ~tOleHandler();
+ tAmbientProperties m_ambientProp;
+
+ HWND m_hWnd;
+private:
+
+ DWORD m_cOpens; //Count calls to Open
+
+ BOOL m_fInitialized; //Something here?
+ LPUNKNOWN m_pObj; //The object here
+ LPSTORAGE m_pIStorage; //Sub-storage for tenant
+
+ FORMATETC m_fe; //Used to create the object
+ DWORD m_dwState; //State flags
+ RECTL m_rcl; //Space of this object
+ CLSID m_clsID; //Object class (for statics)
+ BOOL m_fSetExtent; //Call SetExtent on next run
+
+ ULONG m_cRef; //We're an object now
+ LPOLEOBJECT m_pIOleObject; //IOleObject on m_pObj
+ LPVIEWOBJECT2 m_pIViewObject2; //IViewObject2 on m_pObj
+ ULONG m_grfMisc; //OLEMISC flags
+ BOOL m_fRepaintEnabled; //No redundant paints
+
+ //Our interfaces
+ tOleClientSite *m_pImpIOleClientSite;
+
+ tOleInPlaceSite *m_pImpIOleIPSite; //Our interface
+ LPOLEINPLACEOBJECT m_pIOleIPObject; //The object
+ RECT m_rcPos; //Last object rect
+ BOOL m_fInRectSet; //Prevent reentrancy
+
+ //CHAPTER24MOD
+ tOleControlSite *m_pImpIOleControlSite; //Implemented
+ tDispatch *m_pImpIDispatch; //Implemented
+
+ //Control interfaces
+ LPOLECONTROL m_pIOleControl; //Used
+
+ //Other state information
+ BOOL m_fHaveControlInfo;
+ CONTROLINFO m_ctrlInfo;
+ ULONG m_cLockInPlace;
+ BOOL m_fPendingDeactivate;
+ //End CHAPTER24MOD
+
+
+/*
+* This flag is used exculsively by the implementation of
+* IOleUILinkContainer on the page we're in for the Links
+* Dialog. Since we never use it ourselves, public here
+* is no big deal.
+*/
+public:
+ BOOL m_fLinkAvail;
+
+protected:
+ void CalcNaturalSize(void);
+ long natural_height;
+ long natural_width;
+ BOOL ObjectInitialize(LPUNKNOWN);
+
+ //CHAPTER24MOD
+ BOOL ControlInitialize(void);
+ //End CHAPTER24MOD
+
+public:
+ void setDesignMode(bool value, bool notify);
+ void GetNaturalSize(long *pWidth, long *pHeight);
+ void OnShow(void);
+ //Gotta have an IUnknown for delegation
+ STDMETHODIMP QueryInterface(REFIID, LPVOID *);
+ STDMETHODIMP_(ULONG) AddRef(void);
+ STDMETHODIMP_(ULONG) Release(void);
+
+ UINT Create(LPVOID);
+ BOOL Open(LPSTORAGE);
+ void Close(BOOL);
+
+
+ BOOL Activate(LONG, LPMSG);
+
+ void EnableRepaint(BOOL);
+
+ void ObjectGet(LPUNKNOWN *);
+ void SizeGet(LPSIZEL, BOOL);
+ void SizeSet(LPSIZEL, BOOL, BOOL);
+ void RectGet(LPRECTL, BOOL);
+ void RectSet(LPRECTL, BOOL, BOOL);
+
+ void DeactivateInPlaceObject(BOOL);
+ void UpdateInPlaceObjectRects(LPCRECT, BOOL);
+ HWND ObjectWindow(void);
+
+ //CHAPTER24MOD
+ DWORD GetControlFlags();
+ BOOL TryMnemonic(LPMSG);
+ void AmbientChange(DISPID);
+ //End CHAPTER24MOD
+
+
+};
+
+#endif // !defined(AFX_TOLEHANDLER_H__49B97C12_8DEB_11D3_A906_0004ACE655F9__INCLUDED_)
diff --git a/iup/srcole/tOleInPlaceFrame.cpp b/iup/srcole/tOleInPlaceFrame.cpp
new file mode 100755
index 0000000..15fc9b4
--- /dev/null
+++ b/iup/srcole/tOleInPlaceFrame.cpp
@@ -0,0 +1,429 @@
+// tOleInPlaceFrame.cpp: implementation of the tOleInPlaceFrame class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "tOleInPlaceFrame.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+/*
+ * tOleInPlaceFrame::tOleInPlaceFrame
+ * tOleInPlaceFrame::~tOleInPlaceFrame
+ *
+ * Constructor Parameters:
+ * hInst HINSTANCE from WinMain
+ * hInstPrev HINSTANCE from WinMain
+ * pszCmdLine LPSTR from WinMain
+ * nCmdShow int from WInMain
+ */
+
+tOleInPlaceFrame::tOleInPlaceFrame(HWND hwnd)
+ {
+ m_cRef=0;
+ m_hAccelIP=NULL;
+ m_fInContextHelp=FALSE;
+ m_pIOleIPActiveObject=NULL;
+ m_hWnd = hwnd;
+
+ return;
+ }
+
+
+tOleInPlaceFrame::~tOleInPlaceFrame(void)
+ {
+ }
+
+
+/*
+ * tOleInPlaceFrame::QueryInterface
+ * tOleInPlaceFrame::AddRef
+ * tOleInPlaceFrame::Release
+ */
+
+STDMETHODIMP tOleInPlaceFrame::QueryInterface(REFIID riid, PPVOID ppv)
+ {
+ //We only know IUnknown and IOleInPlaceFrame
+ *ppv=NULL;
+
+ if (IID_IUnknown==riid || IID_IOleInPlaceUIWindow==riid
+ || IID_IOleWindow==riid || IID_IOleInPlaceFrame==riid)
+ *ppv=(LPOLEINPLACEFRAME)this;
+
+ if (NULL!=*ppv)
+ {
+ ((LPUNKNOWN)*ppv)->AddRef();
+ return NOERROR;
+ }
+
+ return ResultFromScode(E_NOINTERFACE);
+ }
+
+
+STDMETHODIMP_(ULONG) tOleInPlaceFrame::AddRef(void)
+ {
+ return ++m_cRef;
+ }
+
+STDMETHODIMP_(ULONG) tOleInPlaceFrame::Release(void)
+ {
+ /*
+ * We don't do anything with this since we're not controlled
+ * by a reference count as far as in-place stuff is concerned.
+ */
+ return --m_cRef;
+ }
+
+
+
+
+/*
+ * tOleInPlaceFrame::GetWindow
+ *
+ * Purpose:
+ * Retrieves the handle of the window associated with the object
+ * on which this interface is implemented.
+ *
+ * Parameters:
+ * phWnd HWND * in which to store the window handle.
+ *
+ * Return Value:
+ * HRESULT NOERROR if successful, E_FAIL if there is no
+ * window.
+ */
+
+STDMETHODIMP tOleInPlaceFrame::GetWindow(HWND *phWnd)
+ {
+ *phWnd=m_hWnd;
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceFrame::ContextSensitiveHelp
+ *
+ * Purpose:
+ * Instructs the object on which this interface is implemented to
+ * enter or leave a context-sensitive help mode.
+ *
+ * Parameters:
+ * fEnterMode BOOL TRUE to enter the mode, FALSE otherwise.
+ *
+ * Return Value:
+ * HRESULT NOERROR
+ */
+
+STDMETHODIMP tOleInPlaceFrame::ContextSensitiveHelp(BOOL fEnterMode)
+ {
+ /*
+ * Don't bother if there is no active object since we don't do
+ * context help on our own.
+ */
+ if (NULL==m_pIOleIPActiveObject)
+ return NOERROR;
+
+ /*
+ * If the state changes, an MDI frame should call the same
+ * function in all documents. An SDI frame should just call
+ * the active object, if it has one.
+ */
+
+ if (m_fInContextHelp!=fEnterMode)
+ {
+ m_fInContextHelp=fEnterMode;
+
+ m_pIOleIPActiveObject->ContextSensitiveHelp(fEnterMode);
+
+ }
+
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceFrame::GetBorder
+ *
+ * Purpose:
+ * Returns the rectangle in which the container is willing to
+ * negotiate about an object's adornments.
+ *
+ * Parameters:
+ * prcBorder LPRECT in which to store the rectangle.
+ *
+ * Return Value:
+ * HRESULT NOERROR if all is well, INPLACE_E_NOTOOLSPACE
+ * if there is no negotiable space.
+ */
+
+STDMETHODIMP tOleInPlaceFrame::GetBorder(LPRECT prcBorder)
+ {
+ if (NULL==prcBorder)
+ return ResultFromScode(E_INVALIDARG);
+
+ /*
+ * We return all the client area space sans the StatStrip,
+ * which we control
+ */
+ GetClientRect(m_hWnd, prcBorder);
+
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceFrame::RequestBorderSpace
+ *
+ * Purpose:
+ * Asks the container if it can surrender the amount of space
+ * in pBW that the object would like for it's adornments. The
+ * container does nothing but validate the spaces on this call.
+ *
+ * Parameters:
+ * pBW LPCBORDERWIDTHS containing the requested space.
+ * The values are the amount of space requested
+ * from each side of the relevant window.
+ *
+ * Return Value:
+ * HRESULT NOERROR if we can give up space,
+ * INPLACE_E_NOTOOLSPACE otherwise.
+ */
+
+STDMETHODIMP tOleInPlaceFrame::RequestBorderSpace(LPCBORDERWIDTHS pBW)
+ {
+ //Everything is fine with us, so always return an OK.
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceFrame::SetBorderSpace
+ *
+ * Purpose:
+ * Called when the object now officially requests that the
+ * container surrender border space it previously allowed
+ * in RequestBorderSpace. The container should resize windows
+ * appropriately to surrender this space.
+ *
+ * Parameters:
+ * pBW LPCBORDERWIDTHS containing the amount of space
+ * from each side of the relevant window that the
+ * object is now reserving.
+ *
+ * Return Value:
+ * HRESULT NOERROR
+ */
+
+STDMETHODIMP tOleInPlaceFrame::SetBorderSpace(LPCBORDERWIDTHS pBW)
+ {
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceFrame::SetActiveObject
+ *
+ * Purpose:
+ * Provides the container with the object's IOleInPlaceActiveObject
+ * pointer
+ *
+ * Parameters:
+ * pIIPActiveObj LPOLEINPLACEACTIVEOBJECT of interest.
+ * pszObj LPCOLESTR naming the object. Not used.
+ *
+ * Return Value:
+ * HRESULT NOERROR
+ */
+
+STDMETHODIMP tOleInPlaceFrame::SetActiveObject
+ (LPOLEINPLACEACTIVEOBJECT pIIPActiveObj, LPCOLESTR pszObj)
+ {
+ if (NULL!=m_pIOleIPActiveObject)
+ m_pIOleIPActiveObject->Release();
+
+ //NULLs m_pIOleIPActiveObject if pIIPActiveObj is NULL
+ m_pIOleIPActiveObject=pIIPActiveObj;
+
+ if (NULL!=m_pIOleIPActiveObject)
+ m_pIOleIPActiveObject->AddRef();
+
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceFrame::InsertMenus
+ *
+ * Purpose:
+ * Instructs the container to place its in-place menu items where
+ * necessary in the given menu and to fill in elements 0, 2, and 4
+ * of the OLEMENUGROUPWIDTHS array to indicate how many top-level
+ * items are in each group.
+ *
+ * Parameters:
+ * hMenu HMENU in which to add popups.
+ * pMGW LPOLEMENUGROUPWIDTHS in which to store the
+ * width of each container menu group.
+ *
+ * Return Value:
+ * HRESULT NOERROR
+ */
+
+STDMETHODIMP tOleInPlaceFrame::InsertMenus(HMENU hMenu
+ , LPOLEMENUGROUPWIDTHS pMGW)
+ {
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceFrame::SetMenu
+ *
+ * Purpose:
+ * Instructs the container to replace whatever menu it's currently
+ * using with the given menu and to call OleSetMenuDescritor so OLE
+ * knows to whom to dispatch messages.
+ *
+ * Parameters:
+ * hMenu HMENU to show.
+ * hOLEMenu HOLEMENU to the menu descriptor.
+ * hWndObj HWND of the active object to which messages are
+ * dispatched.
+ * Return Value:
+ * HRESULT NOERROR
+ */
+
+STDMETHODIMP tOleInPlaceFrame::SetMenu(HMENU hMenu
+ , HOLEMENU hOLEMenu, HWND hWndObj)
+ {
+ HRESULT hr;
+
+ /*
+ * Our responsibilities here are to put the menu on the frame
+ * window and call OleSetMenuDescriptor.
+ * CPatronClient::SetMenu which we call here takes care of
+ * MDI/SDI differences.
+ *
+ * We also want to save the object's hWnd for use in WM_SETFOCUS
+ * processing.
+ */
+
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceFrame::RemoveMenus
+ *
+ * Purpose:
+ * Asks the container to remove any menus it put into hMenu in
+ * InsertMenus.
+ *
+ * Parameters:
+ * hMenu HMENU from which to remove the container's
+ * items.
+ *
+ * Return Value:
+ * HRESULT NOERROR
+ */
+
+STDMETHODIMP tOleInPlaceFrame::RemoveMenus(HMENU hMenu)
+ {
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceFrame::SetStatusText
+ *
+ * Purpose:
+ * Asks the container to place some text in a status line, if one
+ * exists. If the container does not have a status line it
+ * should return E_FAIL here in which case the object could
+ * display its own.
+ *
+ * Parameters:
+ * pszText LPCOLESTR to display.
+ *
+ * Return Value:
+ * HRESULT NOERROR if successful, S_TRUNCATED if not all
+ * of the text could be displayed, or E_FAIL if
+ * the container has no status line.
+ */
+
+STDMETHODIMP tOleInPlaceFrame::SetStatusText(LPCOLESTR pszText)
+ {
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceFrame::EnableModeless
+ *
+ * Purpose:
+ * Instructs the container to show or hide any modeless popup
+ * windows that it may be using.
+ *
+ * Parameters:
+ * fEnable BOOL indicating to enable/show the windows
+ * (TRUE) or to hide them (FALSE).
+ *
+ * Return Value:
+ * HRESULT NOERROR
+ */
+
+STDMETHODIMP tOleInPlaceFrame::EnableModeless(BOOL fEnable)
+ {
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceFrame::TranslateAccelerator
+ *
+ * Purpose:
+ * When dealing with an in-place object from an EXE server, this
+ * is called to give the container a chance to process accelerators
+ * after the server has looked at the message.
+ *
+ * Parameters:
+ * pMSG LPMSG for the container to examine.
+ * wID WORD the identifier in the container's
+ * accelerator table (from IOleInPlaceSite
+ * ::GetWindowContext) for this message (OLE does
+ * some translation before calling).
+ *
+ * Return Value:
+ * HRESULT NOERROR if the keystroke was used,
+ * S_FALSE otherwise.
+ */
+
+STDMETHODIMP tOleInPlaceFrame::TranslateAccelerator(LPMSG pMSG, WORD wID)
+ {
+ SCODE sc;
+
+ sc=S_OK;
+ return ResultFromScode(sc);
+ }
diff --git a/iup/srcole/tOleInPlaceFrame.h b/iup/srcole/tOleInPlaceFrame.h
new file mode 100755
index 0000000..4048f12
--- /dev/null
+++ b/iup/srcole/tOleInPlaceFrame.h
@@ -0,0 +1,67 @@
+// tOleInPlaceFrame.h: interface for the tOleInPlaceFrame class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_TOLEINPLACEFRAME_H__76ABD328_9D90_11D3_A906_0004ACE655F9__INCLUDED_)
+#define AFX_TOLEINPLACEFRAME_H__76ABD328_9D90_11D3_A906_0004ACE655F9__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include "tLegacy.h"
+
+/*
+ * UINT value such that adding one produces zero. Portable to Win32.
+ * This is used to represent a non-existent zero-based UINT value
+ */
+#define NOVALUE ((UINT)-1)
+
+
+//PATRON.CPP: Frame object that creates a main window
+
+class tOleInPlaceFrame : public IOleInPlaceFrame
+ {
+ private:
+ BOOL m_fInitialized; //OleInitialize worked
+
+ DWORD m_cRef;
+ HWND m_hWnd; //Object window
+
+ BOOL m_fInContextHelp; //In context help mode?
+
+ LPOLEINPLACEACTIVEOBJECT m_pIOleIPActiveObject;
+
+ //This is for access from IOleInPlaceSite::GetWindowContext
+ public:
+ HACCEL m_hAccelIP; //Accelerators for in-place
+
+ protected:
+
+ public:
+ tOleInPlaceFrame(HWND);
+ virtual ~tOleInPlaceFrame(void);
+
+ //IOleInPlaceFrame implementation
+ STDMETHODIMP QueryInterface(REFIID, LPVOID *);
+ STDMETHODIMP_(ULONG) AddRef(void);
+ STDMETHODIMP_(ULONG) Release(void);
+
+ STDMETHODIMP GetWindow(HWND *);
+ STDMETHODIMP ContextSensitiveHelp(BOOL);
+ STDMETHODIMP GetBorder(LPRECT);
+ STDMETHODIMP RequestBorderSpace(LPCBORDERWIDTHS);
+ STDMETHODIMP SetBorderSpace(LPCBORDERWIDTHS);
+ STDMETHODIMP SetActiveObject(LPOLEINPLACEACTIVEOBJECT
+ , LPCOLESTR);
+ STDMETHODIMP InsertMenus(HMENU, LPOLEMENUGROUPWIDTHS);
+ STDMETHODIMP SetMenu(HMENU, HOLEMENU, HWND);
+ STDMETHODIMP RemoveMenus(HMENU);
+ STDMETHODIMP SetStatusText(LPCOLESTR);
+ STDMETHODIMP EnableModeless(BOOL);
+ STDMETHODIMP TranslateAccelerator(LPMSG, WORD);
+ };
+
+
+
+#endif // !defined(AFX_TOLEINPLACEFRAME_H__76ABD328_9D90_11D3_A906_0004ACE655F9__INCLUDED_)
diff --git a/iup/srcole/tOleInPlaceSite.cpp b/iup/srcole/tOleInPlaceSite.cpp
new file mode 100755
index 0000000..977777c
--- /dev/null
+++ b/iup/srcole/tOleInPlaceSite.cpp
@@ -0,0 +1,485 @@
+// tOleInPlaceSite.cpp: implementation of the tOleInPlaceSite class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "tOleInPlaceSite.h"
+#include "tOleHandler.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+BOOL g_fSwitchingActive=FALSE;
+
+/*
+ * tOleInPlaceSite::tOleInPlaceSite
+ * tOleInPlaceSite::~tOleInPlaceSite
+ *
+ * Parameters (Constructor):
+ * pTen PCTenant of the tenant we're in.
+ * pUnkOuter LPUNKNOWN to which we delegate.
+ */
+
+tOleInPlaceSite::tOleInPlaceSite(class tOleHandler *pTen
+ , LPUNKNOWN pUnkOuter)
+ {
+ m_cRef=0;
+ m_pTen=pTen;
+ m_pUnkOuter=pUnkOuter;
+ m_oleinplaceframe = new tOleInPlaceFrame(m_pTen->m_hWnd);
+ return;
+ }
+
+tOleInPlaceSite::~tOleInPlaceSite(void)
+ {
+ return;
+ }
+
+
+
+/*
+ * tOleInPlaceSite::QueryInterface
+ * tOleInPlaceSite::AddRef
+ * tOleInPlaceSite::Release
+ *
+ * Purpose:
+ * IUnknown members for tOleInPlaceSite object.
+ */
+
+STDMETHODIMP tOleInPlaceSite::QueryInterface(REFIID riid
+ , LPVOID *ppv)
+ {
+ return m_pUnkOuter->QueryInterface(riid, ppv);
+ }
+
+
+STDMETHODIMP_(ULONG) tOleInPlaceSite::AddRef(void)
+ {
+ ++m_cRef;
+ return m_pUnkOuter->AddRef();
+ }
+
+STDMETHODIMP_(ULONG) tOleInPlaceSite::Release(void)
+ {
+ --m_cRef;
+ return m_pUnkOuter->Release();
+ }
+
+
+
+
+/*
+ * tOleInPlaceActiveObject::GetWindow
+ *
+ * Purpose:
+ * Retrieves the handle of the window associated with the object
+ * on which this interface is implemented.
+ *
+ * Parameters:
+ * phWnd HWND * in which to store the window handle.
+ *
+ * Return Value:
+ * HRESULT NOERROR if successful, E_FAIL if there is no
+ * window.
+ */
+
+STDMETHODIMP tOleInPlaceSite::GetWindow(HWND *phWnd)
+ {
+ *phWnd=m_pTen->m_hWnd;
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceActiveObject::ContextSensitiveHelp
+ *
+ * Purpose:
+ * Instructs the object on which this interface is implemented to
+ * enter or leave a context-sensitive help mode.
+ *
+ * Parameters:
+ * fEnterMode BOOL TRUE to enter the mode, FALSE otherwise.
+ *
+ * Return Value:
+ * HRESULT NOERROR
+ */
+
+STDMETHODIMP tOleInPlaceSite::ContextSensitiveHelp
+ (BOOL fEnterMode)
+ {
+ return E_NOTIMPL;
+ }
+
+
+
+
+/*
+ * tOleInPlaceSite::CanInPlaceActivate
+ *
+ * Purpose:
+ * Answers the server whether or not we can currently in-place
+ * activate its object. By implementing this interface we say
+ * that we support in-place activation, but through this function
+ * we indicate whether the object can currently be activated
+ * in-place. Iconic aspects, for example, cannot, meaning we
+ * return S_FALSE.
+ *
+ * Parameters:
+ * None
+ *
+ * Return Value:
+ * HRESULT NOERROR if we can in-place activate the object
+ * in this site, S_FALSE if not.
+ */
+
+STDMETHODIMP tOleInPlaceSite::CanInPlaceActivate(void)
+ {
+ if (DVASPECT_CONTENT!=m_pTen->m_fe.dwAspect)
+ return ResultFromScode(S_FALSE);
+
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceSite::OnInPlaceActivate
+ *
+ * Purpose:
+ * Informs the container that an object is being activated in-place
+ * such that the container can prepare appropriately. The
+ * container does not, however, make any user interface changes at
+ * this point. See OnUIActivate.
+ *
+ * Parameters:
+ * None
+ *
+ * Return Value:
+ * HRESULT NOERROR or an appropriate error code.
+ */
+
+STDMETHODIMP tOleInPlaceSite::OnInPlaceActivate(void)
+ {
+ //CHAPTER24MOD
+ m_pTen->m_fPendingDeactivate=FALSE;
+ //End CHAPTER24MOD
+
+ //m_pIOleIPObject is our in-place flag.
+ m_pTen->m_pObj->QueryInterface(IID_IOleInPlaceObject
+ , (PPVOID)&m_pTen->m_pIOleIPObject);
+
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceSite::OnInPlaceDeactivate
+ *
+ * Purpose:
+ * Notifies the container that the object has deactivated itself
+ * from an in-place state. Opposite of OnInPlaceActivate. The
+ * container does not change any UI at this point.
+ *
+ * Parameters:
+ * None
+ *
+ * Return Value:
+ * HRESULT NOERROR or an appropriate error code.
+ */
+
+STDMETHODIMP tOleInPlaceSite::OnInPlaceDeactivate(void)
+ {
+ /*
+ * Since we don't have an Undo command, we can tell the object
+ * right away to discard its Undo state.
+ */
+ m_pTen->Activate(OLEIVERB_DISCARDUNDOSTATE, NULL);
+ ReleaseInterface(m_pTen->m_pIOleIPObject);
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceSite::OnUIActivate
+ *
+ * Purpose:
+ * Informs the container that the object is going to start munging
+ * around with user interface, like replacing the menu. The
+ * container should remove any relevant UI in preparation.
+ *
+ * Parameters:
+ * None
+ *
+ * Return Value:
+ * HRESULT NOERROR or an appropriate error code.
+ */
+
+STDMETHODIMP tOleInPlaceSite::OnUIActivate(void)
+ {
+ //CHAPTER24MOD
+ m_pTen->m_fPendingDeactivate=FALSE;
+ //End CHAPTER24MOD
+
+ /*
+ * Change the currently selected tenant in the page. This
+ * will UIDeactivate the currently UI Active tenant.
+ */
+ g_fSwitchingActive=TRUE;
+ //m_pTen->m_pPG->m_pPageCur->SwitchActiveTenant(m_pTen);
+ g_fSwitchingActive=FALSE;
+
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceSite::OnUIDeactivate
+ *
+ * Purpose:
+ * Informs the container that the object is deactivating its
+ * in-place user interface at which time the container may
+ * reinstate its own. Opposite of OnUIActivate.
+ *
+ * Parameters:
+ * fUndoable BOOL indicating if the object will actually
+ * perform an Undo if the container calls
+ * ReactivateAndUndo.
+ *
+ * Return Value:
+ * HRESULT NOERROR or an appropriate error code.
+ */
+
+STDMETHODIMP tOleInPlaceSite::OnUIDeactivate(BOOL fUndoable)
+ {
+ MSG msg;
+
+ /*
+ * Ignore this notification if we're switching between
+ * multiple active objects.
+ */
+ if (g_fSwitchingActive)
+ return NOERROR;
+
+ //If in shutdown (NULL storage), don't check messages.
+/* if (NULL==m_pTen->m_pIStorage)
+ {
+ g_pFR->ReinstateUI();
+ return NOERROR;
+ }*/
+
+ //If there's a pending double-click, delay showing our UI
+/* if (!PeekMessage(&msg, pDoc->Window(), WM_LBUTTONDBLCLK
+ , WM_LBUTTONDBLCLK, PM_NOREMOVE | PM_NOYIELD))
+ {
+ //Turn everything back on.
+ g_pFR->ReinstateUI();
+ }
+ else*/
+
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceSite::DeactivateAndUndo
+ *
+ * Purpose:
+ * If immediately after activation the object does an Undo, the
+ * action being undone is the activation itself, and this call
+ * informs the container that this is, in fact, what happened.
+ * The container should call IOleInPlaceObject::UIDeactivate.
+ *
+ * Parameters:
+ * None
+ *
+ * Return Value:
+ * HRESULT NOERROR or an appropriate error code.
+ */
+
+STDMETHODIMP tOleInPlaceSite::DeactivateAndUndo(void)
+ {
+ //CHAPTER24MOD
+ /*
+ * Note that we don't pay attention to the locking
+ * from IOleControlSite::LockInPlaceActive since only
+ * the object calls this function and should know
+ * that it's going to be deactivated.
+ */
+ //End CHAPTER24MOD
+
+ m_pTen->m_pIOleIPObject->InPlaceDeactivate();
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceSite::DiscardUndoState
+ *
+ * Purpose:
+ * Informs the container that something happened in the object
+ * that means the container should discard any undo information
+ * it currently maintains for the object.
+ *
+ * Parameters:
+ * None
+ *
+ * Return Value:
+ * HRESULT NOERROR or an appropriate error code.
+ */
+
+STDMETHODIMP tOleInPlaceSite::DiscardUndoState(void)
+ {
+ return ResultFromScode(E_NOTIMPL);
+ }
+
+
+
+
+/*
+ * tOleInPlaceSite::GetWindowContext
+ *
+ * Purpose:
+ * Provides an in-place object with pointers to the frame and
+ * document level in-place interfaces (IOleInPlaceFrame and
+ * IOleInPlaceUIWindow) such that the object can do border
+ * negotiation and so forth. Also requests the position and
+ * clipping rectangles of the object in the container and a
+ * pointer to an OLEINPLACEFRAME info structure which contains
+ * accelerator information.
+ *
+ * Note that the two interfaces this call returns are not
+ * available through QueryInterface on IOleInPlaceSite since they
+ * live with the frame and document, but not the site.
+ *
+ * Parameters:
+ * ppIIPFrame LPOLEINPLACEFRAME * in which to return the
+ * AddRef'd pointer to the container's
+ * IOleInPlaceFrame.
+ * ppIIPUIWindow LPOLEINPLACEUIWINDOW * in which to return
+ * the AddRef'd pointer to the container document's
+ * IOleInPlaceUIWindow.
+ * prcPos LPRECT in which to store the object's position.
+ * prcClip LPRECT in which to store the object's visible
+ * region.
+ * pFI LPOLEINPLACEFRAMEINFO to fill with accelerator
+ * stuff.
+ *
+ * Return Value:
+ * HRESULT NOERROR
+ */
+
+STDMETHODIMP tOleInPlaceSite::GetWindowContext
+ (LPOLEINPLACEFRAME *ppIIPFrame, LPOLEINPLACEUIWINDOW
+ *ppIIPUIWindow, LPRECT prcPos, LPRECT prcClip
+ , LPOLEINPLACEFRAMEINFO pFI)
+ {
+ RECTL rcl;
+
+ *ppIIPUIWindow=NULL;
+ *ppIIPFrame=m_oleinplaceframe;
+ m_oleinplaceframe->AddRef();
+
+ GetClientRect(m_pTen->m_hWnd, prcPos);
+ GetClientRect(m_pTen->m_hWnd, prcClip);
+
+/* *ppIIPFrame=(LPOLEINPLACEFRAME)g_pFR;
+ g_pFR->AddRef();*/
+
+/* if (NULL!=pDoc)
+ {
+ pDoc->QueryInterface(IID_IOleInPlaceUIWindow
+ , (PPVOID)ppIIPUIWindow);
+ }*/
+
+ //Now get the rectangles and frame information.
+ /*m_pTen->RectGet(&rcl, TRUE);
+ RECTFROMRECTL(*prcPos, rcl);
+ 0
+ //Include scroll position here.
+ OffsetRect(prcPos, -(int)m_pTen->m_pPG->m_xPos
+ , -(int)m_pTen->m_pPG->m_yPos);
+
+ SetRect(prcClip, 0, 0, 32767, 32767);
+*/
+ pFI->cb=sizeof(OLEINPLACEFRAMEINFO);
+ pFI->fMDIApp=FALSE;
+
+ pFI->hwndFrame=m_pTen->m_hWnd;
+
+ pFI->haccel=NULL;
+ pFI->cAccelEntries=0;
+
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceSite::Scroll
+ *
+ * Purpose:
+ * Asks the container to scroll the document, and thus the object,
+ * by the given amounts in the sz parameter.
+ *
+ * Parameters:
+ * sz SIZE containing signed horizontal and vertical
+ * extents by which the container should scroll.
+ * These are in device units.
+ *
+ * Return Value:
+ * HRESULT NOERROR
+ */
+
+STDMETHODIMP tOleInPlaceSite::Scroll(SIZE sz)
+ {
+ /*int x, y;
+
+ x=m_pTen->m_pPG->m_xPos+sz.cx;
+ y=m_pTen->m_pPG->m_yPos+sz.cy;
+
+ SendScrollPosition(m_pTen->m_hWnd, WM_HSCROLL, x);
+ SendScrollPosition(m_pTen->m_hWnd, WM_VSCROLL, y);*/
+ return NOERROR;
+ }
+
+
+
+
+/*
+ * tOleInPlaceSite::OnPosRectChange
+ *
+ * Purpose:
+ * Informs the container that the in-place object was resized.
+ * The container must call IOleInPlaceObject::SetObjectRects.
+ * This does not change the site's rectangle in any case.
+ *
+ * Parameters:
+ * prcPos LPCRECT containing the new size of the object.
+ *
+ * Return Value:
+ * HRESULT NOERROR
+ */
+
+STDMETHODIMP tOleInPlaceSite::OnPosRectChange(LPCRECT prcPos)
+ {
+ if (NULL!=prcPos)
+ m_pTen->m_rcPos=*prcPos;
+
+ m_pTen->UpdateInPlaceObjectRects(prcPos, FALSE);
+ return NOERROR;
+ }
+
diff --git a/iup/srcole/tOleInPlaceSite.h b/iup/srcole/tOleInPlaceSite.h
new file mode 100755
index 0000000..d559df2
--- /dev/null
+++ b/iup/srcole/tOleInPlaceSite.h
@@ -0,0 +1,47 @@
+// tOleInPlaceSite.h: interface for the tOleInPlaceSite class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_TOLEINPLACESITE_H__37A5ADEB_91FB_11D3_A906_0004AC252223__INCLUDED_)
+#define AFX_TOLEINPLACESITE_H__37A5ADEB_91FB_11D3_A906_0004AC252223__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include <windows.h>
+#include "tOleInPlaceFrame.h"
+
+class tOleInPlaceSite : public IOleInPlaceSite
+{
+protected:
+ ULONG m_cRef;
+ class tOleHandler *m_pTen;
+ LPUNKNOWN m_pUnkOuter;
+
+public:
+ tOleInPlaceFrame * m_oleinplaceframe;
+ tOleInPlaceSite(class tOleHandler *, LPUNKNOWN);
+ ~tOleInPlaceSite(void);
+
+ STDMETHODIMP QueryInterface(REFIID, LPVOID*);
+ STDMETHODIMP_(ULONG) AddRef(void);
+ STDMETHODIMP_(ULONG) Release(void);
+
+ STDMETHODIMP GetWindow(HWND *);
+ STDMETHODIMP ContextSensitiveHelp(BOOL);
+ STDMETHODIMP CanInPlaceActivate(void);
+ STDMETHODIMP OnInPlaceActivate(void);
+ STDMETHODIMP OnUIActivate(void);
+ STDMETHODIMP GetWindowContext(LPOLEINPLACEFRAME *
+ , LPOLEINPLACEUIWINDOW *, LPRECT, LPRECT
+ , LPOLEINPLACEFRAMEINFO);
+ STDMETHODIMP Scroll(SIZE);
+ STDMETHODIMP OnUIDeactivate(BOOL);
+ STDMETHODIMP OnInPlaceDeactivate(void);
+ STDMETHODIMP DiscardUndoState(void);
+ STDMETHODIMP DeactivateAndUndo(void);
+ STDMETHODIMP OnPosRectChange(LPCRECT);
+};
+
+#endif // !defined(AFX_TOLEINPLACESITE_H__37A5ADEB_91FB_11D3_A906_0004AC252223__INCLUDED_)
diff --git a/iup/srcpplot/Makefile b/iup/srcpplot/Makefile
new file mode 100755
index 0000000..e10ef19
--- /dev/null
+++ b/iup/srcpplot/Makefile
@@ -0,0 +1,6 @@
+
+.PHONY: do_all iup_pplot
+do_all: iup_pplot
+
+iup_pplot:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak
diff --git a/iup/srcpplot/config.mak b/iup/srcpplot/config.mak
new file mode 100755
index 0000000..7c3975b
--- /dev/null
+++ b/iup/srcpplot/config.mak
@@ -0,0 +1,25 @@
+PROJNAME = iup
+LIBNAME = iup_pplot
+OPT = YES
+
+USE_CD = Yes
+
+ifdef DBG
+ DEFINES += IUP_ASSERT
+endif
+
+INCLUDES = ../include ../src
+LDIR = ../lib/$(TEC_UNAME)
+LIBS = iup iupcd
+
+DEFINES = _IUP_PPLOT_ CD_NO_OLD_INTERFACE
+
+SRC = iupPPlot.cpp iupPPlotInteraction.cpp iup_pplot.cpp
+
+ifneq ($(findstring owc, $(TEC_UNAME)), )
+ CPPFLAGS = -xr -xst
+endif
+
+ifeq "$(TEC_UNAME)" "vc6"
+ INCLUDES += C:\LNG\STLport\include
+endif
diff --git a/iup/srcpplot/iupPPlot.cpp b/iup/srcpplot/iupPPlot.cpp
new file mode 100755
index 0000000..c0d07c9
--- /dev/null
+++ b/iup/srcpplot/iupPPlot.cpp
@@ -0,0 +1,2470 @@
+/***************************************************************************
+ * *
+ * Copyright notice: *
+ * *
+ * This is free Pier ware. You may do whatever you want with this code, *
+ * except that you should not remove this copyright notice. *
+ * *
+ ***************************************************************************/
+
+#ifdef _MSC_VER
+#pragma warning(disable: 4100)
+#pragma warning(disable: 4512)
+#endif
+
+#include <stdio.h>
+#include <math.h>
+#include <assert.h>
+
+#include "iupPPlot.h"
+
+const float kFloatSmall = 1e-20f;
+const float kLogMin = 1e-10f;// min argument for log10 function
+const float kExpMax = 1e10f;// max argument for pow10 function
+const float kLogMinClipValue = 1e-10f;// pragmatism to avoid problems with small values in log plot
+const float kEps = 1e-4f;
+const float kRelMajorTickSize = 0.02f;
+const float kRelMinorTickSize = 0.01f;
+const int kMinMinorTickScreenSize = 1;// minor ticks should not become smaller than this
+const float kMaxMajorTickSizeInFontHeight = 0.5f;// not larger than half the font height
+const float kLittleIncrease = 1.0001f;
+const float kLittleDecrease = 0.9999f;
+const float kTickValueVeryBig = 1.0e4;// switch to scientific format
+const float kTickValueVerySmall = (float)1.0e-3;
+const float kMajorTickXInitialFac = 2.0f;
+const float kMajorTickYInitialFac = 3.0f;
+const PMargins kDefaultMargins = PMargins (40,20,5,42);
+
+const float PPlot::kRangeVerySmall = (float)1.0e-3; // also in ZoomInteraction
+
+template <class T> const T & PMax (const T &a, const T &b) {
+ return b> a ? b: a;
+}
+
+inline float SafeLog (float inFloat, float inBase, float inFac) {
+ if (inFloat<kLogMin) {
+ inFloat = kLogMin;
+ }
+ return inFac*log10 (inFloat)/log10(inBase);
+}
+
+inline float SafeExp (float inFloat, float inBase, float inFac) {
+ if (inFloat>kExpMax) {
+ inFloat = kExpMax;
+ }
+ return pow(inBase, inFloat/inFac);
+}
+
+long PlotDataBase::GetSize () const {
+ if (GetRealPlotData ()) {
+ return GetRealPlotData ()->size ();
+ }
+ if (GetCalculatedData ()) {
+ return GetCalculatedData ()->GetSize ();
+ }
+ return 0;
+}
+
+float PlotDataBase::GetValue (long inIndex) const {
+ if (GetRealPlotData ()) {
+ return (*GetRealPlotData ())[inIndex];
+ }
+ if (GetCalculatedData ()) {
+ return GetCalculatedData ()->GetValue (inIndex);
+ }
+ return 0;
+}
+
+bool PlotDataBase::CalculateRange (float &outXMin, float &outXMax) {
+ const RealData *theData = GetRealPlotData ();
+ if (theData && theData->size () >0) {
+ vector<float>::const_iterator imin = min_element (theData->begin (), theData->end ());
+ vector<float>::const_iterator imax = max_element (theData->begin (), theData->end ());
+ outXMin = *imin;
+ outXMax = *imax;
+ return true;
+ }
+ else {
+ const CalculatedDataBase *theCalculated = GetCalculatedData ();
+ if (theCalculated) {
+ outXMin = theCalculated->GetValue (0);
+ outXMax = theCalculated->GetValue (theCalculated->GetSize () - 1);
+ return true;
+ }
+ }
+
+ return false;
+}
+
+DummyPlotData::DummyPlotData (long inSize) {
+ for (int theI=0;theI<inSize;theI++) {
+ mRealPlotData.push_back (theI);// simple ascending data
+ }
+}
+
+void StringPlotData::AddItem (const char *inString) {
+ mStringPlotData.push_back (inString);
+ mRealPlotData.push_back (mStringPlotData.size ()-1);
+}
+
+void StringPlotData::InsertItem (int inIndex, const char *inString) {
+ mStringPlotData.insert(mStringPlotData.begin()+inIndex, inString);
+ mRealPlotData.insert(mRealPlotData.begin()+inIndex, (float)inIndex);
+}
+
+
+void LegendData::SetDefaultColor (int inPlotIndex) {
+ mColor = GetDefaultColor (inPlotIndex);
+}
+
+void LegendData::SetDefaultValues (int inPlotIndex) {
+ SetDefaultColor (inPlotIndex);
+ char theBuf[32];
+ sprintf (theBuf, "plot %d", inPlotIndex);
+ mName = theBuf;
+}
+
+
+bool PlotDataSelection::IsSelected (long inIndex) const {
+ if (size ()<=inIndex) {
+ return false;
+ }
+ return (*this)[inIndex]>0;
+}
+
+long PlotDataSelection::GetSelectedCount () const {
+ long theCount = 0;
+ for (int theI=0;theI<size (); theI++) {
+ if (IsSelected (theI)) {
+ theCount++;
+ }
+ }
+ return theCount;
+}
+
+int PPlot::Round (float inFloat) {
+#ifdef _IUP_PPLOT_
+ return ((int)(inFloat < 0? (inFloat-0.5f): (inFloat+0.5f)));
+#else
+ return (int)floor (inFloat+0.5f);
+#endif
+}
+
+PColor LegendData::GetDefaultColor (int inPlotIndex) {
+
+ PColor theC;
+ switch (inPlotIndex%7) {
+ case 0:
+ theC.mR = 255;
+ theC.mG = 0;
+ theC.mB = 0;
+ break;
+ case 1:
+ theC.mR = 0;
+ theC.mG = 0;
+ theC.mB = 255;
+ break;
+ case 2:
+ theC.mR = 0;
+ theC.mG = 255;
+ theC.mB = 0;
+ break;
+ case 3:
+ theC.mR = 0;
+ theC.mG = 255;
+ theC.mB = 255;
+ break;
+ case 4:
+ theC.mR = 255;
+ theC.mG = 0;
+ theC.mB = 255;
+ break;
+ case 5:
+ theC.mR = 255;
+ theC.mG = 255;
+ theC.mB = 0;
+ break;
+ default:
+ // black
+ break;
+ }
+ return theC;
+}
+
+
+
+float TickInfo::RoundSpan (float inSpan) {
+ // round it to something producing readable tick labels
+ // write it in the form inSpan = a*SafeExp10 (b)
+
+ if (inSpan<=0) {
+ // error
+ return (float)-1.234567;
+ }
+
+ int thePow = 0;
+ float theSpan = inSpan;
+ if (inSpan>1) {
+ while (theSpan>10) {
+ theSpan/=10;
+ if (theSpan == inSpan) { // not a number
+ return (float)-1.234567;
+ }
+ thePow++;
+ }
+ }
+ else {
+ while (theSpan<1) {
+ theSpan*=10;
+ thePow--;
+ }
+ }
+ int theRoundedFirstDigit = PPlot::Round (theSpan);
+ int thePreferredFirstDigit = 1;
+ switch (theRoundedFirstDigit) {
+ case 1:
+ thePreferredFirstDigit = 1;
+ break;
+ case 2:
+ case 3:
+ case 4:
+ thePreferredFirstDigit = 2;
+ break;
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ thePreferredFirstDigit = 5;
+ break;
+ case 10:
+ thePreferredFirstDigit = 1;
+ thePow++;
+ break;
+ default:
+ // error
+ return (float)-1.234567;
+ break;
+ }
+ float theRes = thePreferredFirstDigit*pow (10., thePow); /* M.T. changed to force a double cast */
+ return theRes;
+}
+
+void TickInfo::MakeFormatString (float inValue, string &outFormatString) {
+ if (inValue<0) {
+ inValue = - inValue;
+ }
+ if (inValue > kTickValueVeryBig || inValue < kTickValueVerySmall) {
+ outFormatString = "%.1e";
+ }
+ else {
+
+ int thePrecision = 0;
+ if (inValue<1) {
+ float theSpan = inValue;
+ while (theSpan<1) {
+ thePrecision++;
+ theSpan *=10;
+ }
+ }
+
+ char theBuf[128] = "%.0f";
+ theBuf[2] = '0'+thePrecision;
+
+ outFormatString = theBuf;
+ }
+}
+
+
+PlotDataBase::~PlotDataBase (){
+};
+
+
+PlotDataContainer::PlotDataContainer (){
+}
+PlotDataContainer::~PlotDataContainer (){
+ ClearData ();
+}
+
+PlotDataBase * PlotDataContainer::GetXData (int inIndex) {
+ if (inIndex < 0 || inIndex >= mXDataList.size ()) {
+ return 0;
+ }
+ return mXDataList[inIndex];
+}
+
+PlotDataBase * PlotDataContainer::GetYData (int inIndex) {
+ if (inIndex < 0 || inIndex >= mYDataList.size ()) {
+ return 0;
+ }
+ return mYDataList[inIndex];
+}
+
+LegendData * PlotDataContainer::GetLegendData (int inIndex) {
+ if (inIndex < 0 || inIndex >= mLegendDataList.size ()) {
+ return 0;
+ }
+ return mLegendDataList[inIndex];
+}
+
+DataDrawerBase * PlotDataContainer::GetDataDrawer (int inIndex) {
+ if (inIndex < 0 || inIndex >= mDataDrawerList.size ()) {
+ return 0;
+ }
+ return mDataDrawerList[inIndex];
+}
+
+PlotDataSelection * PlotDataContainer::GetPlotDataSelection (int inIndex) {
+ if (inIndex < 0 || inIndex >= mPlotDataSelectionList.size ()) {
+ return 0;
+ }
+ return mPlotDataSelectionList[inIndex];
+}
+
+const PlotDataBase * PlotDataContainer::GetConstXData (int inIndex) const {
+ if (inIndex < 0 || inIndex >= mXDataList.size ()) {
+ return 0;
+ }
+ return mXDataList[inIndex];
+}
+
+const PlotDataBase * PlotDataContainer::GetConstYData (int inIndex) const {
+ if (inIndex < 0 || inIndex >= mYDataList.size ()) {
+ return 0;
+ }
+ return mYDataList[inIndex];
+}
+
+const LegendData * PlotDataContainer::GetConstLegendData (int inIndex) const {
+ if (inIndex < 0 || inIndex >= mLegendDataList.size ()) {
+ return 0;
+ }
+ return mLegendDataList[inIndex];
+}
+
+const DataDrawerBase * PlotDataContainer::GetConstDataDrawer (int inIndex) const {
+ if (inIndex < 0 || inIndex >= mDataDrawerList.size ()) {
+ return 0;
+ }
+ return mDataDrawerList[inIndex];
+}
+
+const PlotDataSelection * PlotDataContainer::GetConstPlotDataSelection (int inIndex) const {
+ if (inIndex < 0 || inIndex >= mPlotDataSelectionList.size ()) {
+ return 0;
+ }
+ return mPlotDataSelectionList[inIndex];
+}
+
+void PlotDataContainer::RemoveElement (int inIndex) {
+ if (!(inIndex < mXDataList.size () && inIndex < mYDataList.size () &&
+ inIndex < mLegendDataList.size () && inIndex < mDataDrawerList.size ())) {
+ // Invalid index
+ return;
+ }
+
+ PlotDataList::iterator theXI = mXDataList.begin () + inIndex;
+ PlotDataList::iterator theYI = mYDataList.begin () + inIndex;
+ LegendDataList::iterator theLI = mLegendDataList.begin () + inIndex;
+ DataDrawerList::iterator theDI = mDataDrawerList.begin () + inIndex;
+ PlotDataSelectionList::iterator thePI = mPlotDataSelectionList.begin () + inIndex;
+
+ delete *theXI;
+ delete *theYI;
+ delete *theLI;
+ delete *theDI;
+ delete *thePI;
+
+ mXDataList.erase (theXI);
+ mYDataList.erase (theYI);
+ mLegendDataList.erase (theLI);
+ mDataDrawerList.erase (theDI);
+ mPlotDataSelectionList.erase (thePI);
+}
+
+void PlotDataContainer::ClearData () {
+ PlotDataList::iterator theXI = mXDataList.begin ();
+ PlotDataList::iterator theYI = mYDataList.begin ();
+ LegendDataList::iterator theLI = mLegendDataList.begin ();
+ DataDrawerList::iterator theDI = mDataDrawerList.begin ();
+ PlotDataSelectionList::iterator thePI = mPlotDataSelectionList.begin ();
+
+ for (;theXI!=mXDataList.end () && theYI!=mYDataList.end () && theLI!=mLegendDataList.end () && theDI != mDataDrawerList.end () && thePI != mPlotDataSelectionList.end ();) {
+ PlotDataBase *theX = *theXI;
+ PlotDataBase *theY = *theYI;
+ LegendData *theL = *theLI;
+ DataDrawerBase *theD = *theDI;
+ PlotDataSelection *theP = *thePI;
+
+ delete theX;
+ delete theY;
+ delete theL;
+ delete theD;
+ delete theP;
+
+ theXI++;
+ theYI++;
+ theLI++;
+ theDI++;
+ thePI++;
+ }
+ mXDataList.clear ();
+ mYDataList.clear ();
+ mLegendDataList.clear ();
+ mDataDrawerList.clear ();
+ mPlotDataSelectionList.clear ();
+}
+
+/* M.T. - changed to return the index of the added plot; returns -1 on error */
+int PlotDataContainer::AddXYPlot (PlotDataBase *inXData, PlotDataBase *inYData, LegendData *inLegendData, DataDrawerBase *inDataDrawer, PlotDataSelection *inPlotDataSelection) {
+ if (!inYData || (!inYData->GetRealPlotData () && !inYData->GetCalculatedData ())) {
+ return -1;
+ }
+ PlotDataBase *theXData = inXData;
+ if (!theXData) {
+ theXData = new DummyPlotData (inYData->GetSize ());
+ }
+ mXDataList.push_back (theXData);
+ mYDataList.push_back (inYData);
+
+ LegendData *theLegendData = inLegendData;
+ if (!theLegendData) {
+ theLegendData = new LegendData ();
+ theLegendData->SetDefaultValues (mLegendDataList.size ());
+ }
+ mLegendDataList.push_back (theLegendData);
+
+ DataDrawerBase *theDataDrawer = inDataDrawer;
+ if (!theDataDrawer) {
+ theDataDrawer = new LineDataDrawer ();
+ }
+ mDataDrawerList.push_back (theDataDrawer);
+
+ PlotDataSelection *thePlotDataSelection = inPlotDataSelection;
+ if (!thePlotDataSelection) {
+ thePlotDataSelection = new PlotDataSelection ();
+ }
+ else {
+ thePlotDataSelection->resize (inYData->GetSize ());
+ }
+ mPlotDataSelectionList.push_back (thePlotDataSelection);
+ return ( mYDataList.size() - 1 );
+}
+
+void PlotDataContainer::SetXYPlot (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, LegendData *inLegendData, DataDrawerBase *inDataDrawer, PlotDataSelection *inPlotDataSelection) {
+ if (!inYData || !inYData->GetRealPlotData ()) {
+ return;
+ }
+ if (!CheckState ()) {
+ return;
+ }
+ long thePlotCount = GetPlotCount ();
+ if (inIndex<0||inIndex>thePlotCount) {
+ return;
+ }
+ PlotDataBase *theXData = inXData;
+
+ if (!theXData) {
+ theXData = new DummyPlotData (inYData->GetRealPlotData ()->size ());
+ }
+ LegendData *theLegendData = inLegendData;
+ DataDrawerBase *theDataDrawer = inDataDrawer;
+ if (!theLegendData) {
+ theLegendData = new LegendData ();
+ if (inIndex >= 0 && inIndex < mYDataList.size () ) {
+ *theLegendData = *mLegendDataList[inIndex]; // copy old values...
+ } else {
+ theLegendData->SetDefaultValues (mLegendDataList.size ());
+ }
+ }
+ if (!theDataDrawer) {
+ theDataDrawer = new LineDataDrawer ();
+ }
+ PlotDataSelection *thePlotDataSelection = inPlotDataSelection;
+ if (!thePlotDataSelection) {
+ thePlotDataSelection = new PlotDataSelection (inYData->GetSize ());
+ // thePlotDataSelection = new PlotDataSelection ();
+ }
+ if (inIndex >= 0 && inIndex < mYDataList.size () ) {
+ delete mXDataList[inIndex];
+ delete mYDataList[inIndex];
+ delete mLegendDataList[inIndex];
+ delete mDataDrawerList[inIndex];
+ delete mPlotDataSelectionList[inIndex];
+
+ mXDataList[inIndex] = theXData;
+ mYDataList[inIndex] = inYData;
+ mLegendDataList[inIndex] = theLegendData;
+ mDataDrawerList[inIndex] = theDataDrawer;
+ mPlotDataSelectionList[inIndex] = thePlotDataSelection;
+ } else { // add at end
+ mXDataList.push_back (theXData);
+ mYDataList.push_back (inYData);
+ mLegendDataList.push_back (theLegendData);
+ mDataDrawerList.push_back (theDataDrawer);
+ mPlotDataSelectionList.push_back (thePlotDataSelection);
+ }
+}
+
+bool PlotDataContainer::SetDataDrawer (int inIndex, DataDrawerBase* inDataDrawer) {
+ if (inIndex < 0 || inIndex >= mYDataList.size () ) {
+ return false;
+ }
+ DataDrawerBase* theDataDrawer = inDataDrawer;
+ if (!inDataDrawer) {
+ theDataDrawer = new LineDataDrawer;
+ }
+ delete mDataDrawerList[inIndex];
+ mDataDrawerList[inIndex] = theDataDrawer;
+ return true;
+}
+
+int PlotDataContainer::GetPlotIndexByName (const string &inName) const {
+
+ if (CheckState ()) {
+ for (int theI=0;theI<mLegendDataList.size ();theI++) {
+ LegendData *theLegendData = mLegendDataList[theI];
+ if (theLegendData->mName == inName) {
+ return theI;
+ }
+ }
+ }
+ return -1;
+}
+
+
+bool PlotDataContainer::CalculateXRange (float &outXMin, float &outXMax) const {
+ bool theFirst = true;
+ outXMin = 0;
+ outXMax = 0;
+ for (PlotDataList::const_iterator theI=mXDataList.begin();theI!=mXDataList.end ();theI++) {
+ PlotDataBase *theXDataBase = *theI;
+ if (!theXDataBase) {
+ return false;
+ }
+ if (theXDataBase->GetSize () == 0) {
+ continue;
+ }
+ float theXMin;
+ float theXMax;
+ if (!theXDataBase->CalculateRange (theXMin, theXMax)) {
+ return false;
+ }
+ if (theXMax < theXMin) {
+ return false;
+ }
+ if (theFirst) {
+ outXMin = theXMin;
+ outXMax = theXMax;
+ theFirst = false;
+ }
+ if (theXMax>outXMax) {
+ outXMax = theXMax;
+ }
+ if (theXMin<outXMin) {
+ outXMin = theXMin;
+ }
+ }
+ if (outXMin == 0 && outXMax == 0) {
+ return false;
+ }
+ return true;
+}
+
+bool PlotDataContainer::CalculateYRange (float inXMin, float inXMax, float &outYMin, float &outYMax) const {
+ outYMin = 0;
+ outYMax = 0;
+ bool theFirst = true;
+
+ for (int theI=0; theI<GetPlotCount (); theI++) {
+ const PlotDataBase *theXDataBase = GetConstXData (theI);
+ const PlotDataBase *theYDataBase = GetConstYData (theI);
+ if (!theXDataBase || !theYDataBase) {
+ return false;
+ }
+ float theYMin;
+ float theYMax;
+ if (!CalculateYRangePlot (inXMin, inXMax, *theXDataBase, *theYDataBase, theYMin,theYMax)) {
+ return false;
+ }
+ if (theFirst) {
+ outYMin = theYMin;
+ outYMax = theYMax;
+ theFirst = false;
+ }
+ if (theYMin<outYMin) {
+ outYMin = theYMin;
+ }
+ if (theYMax>outYMax) {
+ outYMax = theYMax;
+ }
+
+ }
+ return true;
+}
+
+bool PlotDataContainer::CalculateYRangePlot (float inXMin, float inXMax, const PlotDataBase &inXData, const PlotDataBase &inYData, float &outYMin, float &outYMax) const {
+ outYMin = 0;
+ outYMax = 0;
+ bool initialized = false;
+
+ if (inXData.GetSize () != inYData.GetSize ()) {
+ return false;
+ }
+
+ for (long theI = 0; theI < inXData.GetSize (); theI++) {
+ float theX = inXData.GetValue (theI);
+ float theY = inYData.GetValue (theI);
+
+ if (theX>=inXMin && theX <= inXMax) {
+ if (!initialized) {
+ initialized = true;
+ outYMin = theY;
+ outYMax = theY;
+ } else {
+ if (theY<outYMin) {
+ outYMin = theY;
+ }
+ if (theY>outYMax) {
+ outYMax = theY;
+ }
+ }
+ }
+ }
+ return true;
+}
+
+bool PlotDataContainer::CheckState () const {
+ long theSize1 = mXDataList.size ();
+ long theSize2 = mYDataList.size ();
+ long theSize3 = mLegendDataList.size ();
+ long theSize4 = mDataDrawerList.size ();
+ long theSize5 = mPlotDataSelectionList.size ();
+ if (theSize1!=theSize2 || theSize1!=theSize3 || theSize1!=theSize4 || theSize1!=theSize5) {
+ return false;
+ }
+ return true;
+}
+
+float LinTrafo::Transform (float inValue) const {
+ return inValue * mSlope + mOffset;
+}
+float LinTrafo::TransformBack (float inValue) const {
+ if (mSlope != 0) {
+ return (inValue - mOffset) / mSlope;
+ } else {
+ return 0;
+ }
+}
+
+
+float LogTrafo::Transform (float inValue) const{
+ if (inValue<kLogMinClipValue) {
+ inValue = kLogMinClipValue;
+ }
+ return SafeLog (inValue, mBase, mFactor)*mSlope+mOffset;
+}
+float LogTrafo::TransformBack (float inValue) const {
+ if (mSlope != 0) {
+ return SafeExp( (inValue - mOffset)/mSlope, mBase, mFactor);
+ } else {
+ return 0;
+ }
+}
+
+
+bool LinTickIterator::Init () {
+ if (!mAxisSetup) {
+ return false;
+ }
+
+ float theMin = mAxisSetup->mMin;
+ float theMajorTickSpan = mAxisSetup->mTickInfo.mMajorTickSpan;
+ int theDiv = mAxisSetup->mTickInfo.mTickDivision;
+ mDelta = theMajorTickSpan/theDiv;
+ mCount = ceil (theMin/mDelta);
+ mCurrentTick = mCount*mDelta;
+
+ mFormatString = mAxisSetup->mTickInfo.mFormatString;
+
+ return true;
+
+}
+
+bool LinTickIterator::GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString) {
+ if (!mAxisSetup) {
+ return false;
+ }
+ if (mCurrentTick>mAxisSetup->mMax*kLittleIncrease) {
+ return false;
+ }
+ outTick = mCurrentTick;
+ outIsMajorTick = (mCount%mAxisSetup->mTickInfo.mTickDivision == 0);
+ outFormatString = mFormatString;
+
+ mCurrentTick += mDelta;
+ mCount++;
+ return true;
+}
+
+bool LinTickIterator::InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &ioTickInfo) const {
+ if (inDivGuess <= kFloatSmall) {
+ return false;
+ }
+ float thePreferredSpan = TickInfo::RoundSpan (inParRange/inDivGuess);
+ if (thePreferredSpan < 0) {
+ return false;
+ }
+
+ float thePreferredNrOfTicks = inParRange/thePreferredSpan;
+ if (thePreferredNrOfTicks <1) {
+ ioTickInfo.mMajorTickSpan = inParRange;
+ }
+ else {
+ ioTickInfo.mMajorTickSpan = thePreferredSpan;
+ }
+
+ ioTickInfo.mTickDivision = 5;
+ if (ioTickInfo.mAutoTickSize) {
+ ioTickInfo.mMinorTickScreenSize = PMax (kMinMinorTickScreenSize, PPlot::Round (inOrthoScreenRange*kRelMinorTickSize));
+ ioTickInfo.mMajorTickScreenSize = PMax (ioTickInfo.mMinorTickScreenSize+1, PPlot::Round (inOrthoScreenRange*kRelMajorTickSize));
+ }
+
+ TickInfo::MakeFormatString (ioTickInfo.mMajorTickSpan, ioTickInfo.mFormatString);
+ return true;
+}
+
+bool LogTickIterator::Init () {
+ if (!mAxisSetup) {
+ return false;
+ }
+
+ float theMin = mAxisSetup->mMin;
+ // float theMax = mAxisSetup->mMax;
+ float theMajorTickSpan = mAxisSetup->mTickInfo.mMajorTickSpan;
+ int theDiv = mAxisSetup->mTickInfo.mTickDivision;
+ mDelta = theMajorTickSpan/theDiv;
+ float theBase = mAxisSetup->mLogBase;
+ long theLogFac = 1;//mAxisSetup->mLogFactor;
+ long thePowMin = (long)floor(SafeLog(theMin, theBase, theLogFac));
+ mCurrentTick = SafeExp (thePowMin, theBase, theLogFac);
+ mCount = 0;
+
+ // walk to the first tick
+
+ if (theMin<=0) {
+ return false;
+ // error
+ }
+ else {
+ // walk forward
+ float theNext = mCurrentTick+mDelta*SafeExp (thePowMin, theBase, theLogFac);
+ while (theNext<=theMin*kLittleDecrease) {
+ mCurrentTick = theNext;
+ theNext += mDelta*SafeExp (thePowMin,theBase, theLogFac);
+ mCount++;
+ }
+ }
+ return true;
+}
+
+bool LogTickIterator::InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &ioTickInfo) const {
+ if (inDivGuess<=kFloatSmall) {
+ return false;
+ }
+ /*
+ float thePreferredSpan = TickInfo::RoundSpan (inParRange/inDivGuess);
+ float thePreferredNrOfTicks = inParRange/thePreferredSpan;
+ if (thePreferredNrOfTicks <1) {
+ ioTickInfo.mMajorTickSpan = inParRange;
+ }
+ else {
+ ioTickInfo.mMajorTickSpan = thePreferredSpan;
+ }
+ */
+ float theBase = mAxisSetup->mLogBase;
+ ioTickInfo.mMajorTickSpan = theBase-1;// relative
+
+ ioTickInfo.mTickDivision = PPlot::Round (ioTickInfo.mMajorTickSpan);
+ ioTickInfo.mMinorTickScreenSize = PMax (kMinMinorTickScreenSize, PPlot::Round (inOrthoScreenRange*kRelMinorTickSize));
+ ioTickInfo.mMajorTickScreenSize = PMax (ioTickInfo.mMinorTickScreenSize+1, PPlot::Round (inOrthoScreenRange*kRelMajorTickSize));
+
+ ioTickInfo.mFormatString = "%.1e";
+ return true;
+}
+
+bool LogTickIterator::GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString) {
+ if (!mAxisSetup) {
+ return false;
+ }
+ if (mCurrentTick>mAxisSetup->mMax*kLittleIncrease) {
+ return false;
+ }
+ outTick = mCurrentTick;
+ outIsMajorTick = (mCount%mAxisSetup->mTickInfo.mTickDivision == 0);
+ TickInfo::MakeFormatString (outTick, outFormatString);
+ float theBase = mAxisSetup->mLogBase;
+ float theLogFac = 1;//mAxisSetup->mLogFactor;
+ float theLogNow = SafeLog(mCurrentTick, theBase, theLogFac);
+ int thePowNow = (int)floor(theLogNow);
+ outIsMajorTick = false;
+ if (fabs (theLogNow-thePowNow)<kEps) {
+ outIsMajorTick = true;
+ }
+
+ if (mAxisSetup->mLogFactor>1) {
+ char theBuf[128];
+ sprintf (theBuf, "%d", thePowNow*20);
+ outFormatString = theBuf;
+ }
+
+ mCurrentTick += mDelta*SafeExp (thePowNow, theBase, theLogFac);
+ mCount++;
+
+ return true;
+}
+
+bool LogTickIterator::AdjustRange (float &ioMin, float &ioMax) const {
+
+ float theBase = mAxisSetup->mLogBase;
+ long theLogFac = 1;//mAxisSetup->mLogFactor;
+ if (mAxisSetup->mMaxDecades > 0) {
+ ioMin = ioMax/SafeExp (mAxisSetup->mMaxDecades, theBase, theLogFac);
+ }
+ if (ioMin == 0 && ioMax == 0) {
+ ioMin = kLogMinClipValue;
+ ioMax = 1.0f;
+ }
+ if (ioMin <= 0 || ioMax<=0) {
+ return false;
+ }
+ ioMin = RoundDown (ioMin*kLittleIncrease);
+ ioMax = RoundUp (ioMax*kLittleDecrease);
+
+ if (ioMin<kLogMinClipValue) {
+ ioMin = kLogMinClipValue;
+ }
+ if (mAxisSetup->mMaxDecades > 0) {
+ ioMin = ioMax/SafeExp (mAxisSetup->mMaxDecades, theBase, theLogFac);
+ }
+ return true;
+}
+
+float LogTickIterator::RoundUp (float inFloat) const {
+ float theBase = mAxisSetup->mLogBase;
+ float theLogFac = 1;//mAxisSetup->mLogFactor;
+ int thePow = (int)ceil(SafeLog(inFloat, theBase, theLogFac));
+ return pow (theBase, thePow);
+}
+
+float LogTickIterator::RoundDown (float inFloat) const {
+ float theBase = mAxisSetup->mLogBase;
+ long theLogFac = 1;//mAxisSetup->mLogFactor;
+ int thePow = (int)floor(SafeLog(inFloat,theBase, theLogFac));
+ return pow (theBase, thePow);
+}
+
+bool NamedTickIterator::GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString) {
+ if (LinTickIterator::GetNextTick (outTick, outIsMajorTick, outFormatString)) {
+ int theIndex = PPlot::Round (outTick);
+
+ // TO DO: improve this
+ if (fabs(outTick - (float)theIndex) > 0.1 ) {
+ outFormatString = "";
+ return true;
+ }
+
+ if (theIndex>=0 && theIndex < (int)mStringList.size ()) {
+ outFormatString = mStringList[theIndex];
+ return true;
+ }
+ }
+ return false;
+}
+
+bool NamedTickIterator::InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &outTickInfo) const {
+ if (LinTickIterator::InitFromRanges (inParRange, inOrthoScreenRange, inDivGuess, outTickInfo)) {
+ outTickInfo.mTickDivision = 1;
+ return true;
+ }
+ return false;
+}
+
+bool PainterTester::Draw (Painter &inPainter) {
+
+ const char * theString = "The quick brown fox...";
+ int theWidth = inPainter.CalculateTextDrawSize (theString);
+ int theOffset = theWidth/10;
+
+ // a horizontal lines
+ int theHAscent_x = theOffset+2*inPainter.GetFontHeight ();
+ int theHAscent_y = 10;
+ int theHAscent_w = theWidth;
+ inPainter.DrawLine (theHAscent_x, theHAscent_y, theHAscent_x+theHAscent_w, theHAscent_y);
+
+ int theHDescent_x = theHAscent_x;
+ int theHDescent_y = theHAscent_y+inPainter.GetFontHeight ();
+ int theHDescent_w = theHAscent_w;
+ inPainter.DrawLine (theHDescent_x, theHDescent_y, theHDescent_x+theHDescent_w, theHDescent_y);
+
+ // a vertical lines
+ int theVAscent_x = theOffset;
+ int theVAscent_y = theHAscent_y+theWidth;
+ int theVAscent_h = -theWidth;
+ inPainter.DrawLine (theVAscent_x, theVAscent_y, theVAscent_x, theVAscent_y+theVAscent_h);
+
+ int theVDescent_x = theVAscent_x+inPainter.GetFontHeight ();
+ int theVDescent_y = theVAscent_y;
+ int theVDescent_h = theVAscent_h;
+ inPainter.DrawLine (theVDescent_x, theVDescent_y, theVDescent_x, theVDescent_y+theVDescent_h);
+
+ // Draw vertical text, followed by horizontal.
+#ifdef _IUP_PPLOT_ /* M.T. - the alignment of the text is simply requested */
+ inPainter.DrawRotatedText (theVDescent_x, theVDescent_y, -90, PPLOT_NORTH_WEST, theString);
+ inPainter.DrawText (theHDescent_x, theHDescent_y, PPLOT_NORTH_WEST, theString);
+#else
+ inPainter.DrawRotatedText (theVDescent_x, theVDescent_y, -90, theString);
+ inPainter.DrawText (theHDescent_x, theHDescent_y, theString);
+#endif
+
+ return true;
+}
+
+PPlot::PPlot ():
+ mShowLegend(true), // M.T. - show|hide legend
+ mLegendPos(PPLOT_TOPRIGHT),
+ mXTrafo (&mXLinTrafo),
+ mYTrafo (&mYLinTrafo),
+ mXTickIterator (&mXLinTickIterator),
+ mYTickIterator (&mYLinTickIterator),
+ mPPlotDrawer (0),
+ mOwnsPPlotDrawer (true),
+ mHasAnyModifyingCalculatorBeenActive (false)
+{
+ mMargins = kDefaultMargins;
+ mYAxisSetup.mAscending = false;
+}
+
+PPlot::~PPlot () {
+ if (mOwnsPPlotDrawer) {
+ delete mPPlotDrawer;
+ }
+ mPPlotDrawer = 0;
+}
+
+bool PPlot::Draw (Painter &inPainter) {
+ PRect theRect;
+ theRect.mX = mMargins.mLeft;
+ theRect.mY = mMargins.mTop;
+ theRect.mW = inPainter.GetWidth () - mMargins.mLeft - mMargins.mRight;
+ theRect.mH = inPainter.GetHeight () - mMargins.mTop - mMargins.mBottom;
+
+ if (mPPlotDrawer) {
+ mPPlotDrawer->Prepare (inPainter, *this);
+ return mPPlotDrawer->Draw (inPainter);
+ }
+ if (!mPlotDataContainer.GetPlotCount ()) {
+ return true;
+ }
+
+ if (!ConfigureSelf ()) {
+ return false;
+ }
+ bool theShouldRepeat = true;
+ long theRepeatCount = 0;
+
+ while (theShouldRepeat && theRepeatCount<2) {
+ theRepeatCount++;
+
+ if (!ValidateData ()) {
+ return false;
+ }
+
+ if (!CalculateAxisRanges ()) {
+ return false;
+ }
+
+ if (!this->CheckRange (mXAxisSetup)) {
+ return false;
+ }
+
+ if (!this->CheckRange (mYAxisSetup)) {
+ return false;
+ }
+
+ if (!CalculateTickInfo (theRect, inPainter)) {
+ return false;
+ }
+
+ if (!CalculateXTransformation (theRect)) {
+ return false;
+ }
+
+ if (!CalculateYTransformation (theRect)) {
+ return false;
+ }
+ if (theRepeatCount>1) {
+ break;
+ }
+ // hooks for some final calculations
+ bool theShouldRepeat = false;
+ for (PCalculator::tList::iterator theModifyingC=mModifyingCalculatorList.begin ();theModifyingC!=mModifyingCalculatorList.end();theModifyingC++) {
+ PCalculator *theModifyingCalculator = *theModifyingC;
+ if (theModifyingCalculator->ShouldCalculate ()) {
+ theShouldRepeat = true;
+ theModifyingCalculator->Calculate (inPainter, *this);
+ mHasAnyModifyingCalculatorBeenActive = true;
+ }
+ }
+// theShouldRepeat = mModifyingCalculatorList.size ()>0;
+ }
+
+ // hooks for some final calculations
+ for (PCalculator::tList::iterator thePostC=mPostCalculatorList.begin ();thePostC!=mPostCalculatorList.end();thePostC++) {
+ PCalculator *thePostCalculator = *thePostC;
+ thePostCalculator->Calculate (inPainter, *this);
+ }
+
+ for (PDrawer::tList::iterator thePre1=mPreDrawerList.begin();thePre1!=mPreDrawerList.end ();thePre1++) {
+ PDrawer *thePreDrawer = *thePre1;
+ thePreDrawer->Prepare (inPainter, *this);
+ }
+
+ // Drawing !
+
+ inPainter.SetLineColor (0,0,0);
+ inPainter.SetClipRect (0, 0, inPainter.GetWidth (), inPainter.GetHeight ());
+
+ // draw entire background, including the margins (for scrolling...)
+ PRect fullRect;
+ fullRect.mX = 0;
+ fullRect.mY = 0;
+ fullRect.mW = inPainter.GetWidth ();
+ fullRect.mH = inPainter.GetHeight ();
+ if (!DrawPlotBackground (fullRect, inPainter)) {
+ return false;
+ }
+
+ for (PDrawer::tList::iterator thePre=mPreDrawerList.begin ();thePre!=mPreDrawerList.end();thePre++) {
+ PDrawer *thePreDrawer = *thePre;
+ thePreDrawer->Draw (inPainter);
+ }
+
+
+ if (!DrawGridXAxis (theRect, inPainter)) {
+ return false;
+ }
+
+ if (!DrawGridYAxis (theRect, inPainter)) {
+ return false;
+ }
+
+ if (!DrawXAxis (theRect, inPainter)) {
+ return false;
+ }
+
+ if (!DrawYAxis (theRect, inPainter)) {
+ return false;
+ }
+
+ // clip the plotregion while drawing plots
+ inPainter.SetClipRect (theRect.mX, theRect.mY, theRect.mW, theRect.mH);
+
+ for (int theI=0;theI<mPlotDataContainer.GetPlotCount ();theI++) {
+ if (!DrawPlot (theI, theRect, inPainter)) {
+ return false;
+ }
+ }
+
+ if (mShowLegend) {
+ if (!DrawLegend (theRect, inPainter)) {
+ return false;
+ }
+ }
+
+ inPainter.SetClipRect (0, 0, inPainter.GetWidth (), inPainter.GetHeight ());
+
+#ifdef _IUP_PPLOT_
+ if (!DrawPlotTitle (fullRect, inPainter)) {
+ return false;
+ }
+#endif
+
+ for (PDrawer::tList::iterator thePost=mPostDrawerList.begin ();thePost!=mPostDrawerList.end();thePost++) {
+ PDrawer *thePostDrawer = *thePost;
+ thePostDrawer->Draw (inPainter);
+ }
+
+ return true;
+}
+
+void PPlot::SetPPlotDrawer (PDrawer *inPDrawer) {
+ if (mOwnsPPlotDrawer) {
+ delete mPPlotDrawer;// delete (if any)
+ }
+ mOwnsPPlotDrawer = true;
+ mPPlotDrawer = inPDrawer;
+}
+
+void PPlot::SetPPlotDrawer (PDrawer &inPDrawer) {
+ mOwnsPPlotDrawer = false;
+ mPPlotDrawer = &inPDrawer;
+}
+
+bool PPlot::DrawPlotBackground (const PRect &inRect, Painter &inPainter) const {
+ if (!mPlotBackground.mTransparent) {
+ PColor theC = mPlotBackground.mPlotRegionBackColor;
+ inPainter.SetFillColor (theC.mR, theC.mG, theC.mB);
+ inPainter.FillRect (inRect.mX, inRect.mY, inRect.mW, inRect.mH);
+ }
+#ifndef _IUP_PPLOT_
+ string theTitle = mPlotBackground.mTitle;
+ if (theTitle.size ()>0) {
+ int theW = inPainter.CalculateTextDrawSize (theTitle.c_str());
+ int theX = inRect.mX + (inRect.mW-theW)/2;
+ int theY = inRect.mY + mMargins.mTop;
+ inPainter.DrawText (theX, theY, theTitle.c_str ());
+ }
+#endif
+ return true;
+}
+
+#ifdef _IUP_PPLOT_
+bool PPlot::DrawPlotTitle(const PRect &inRect, Painter &inPainter) const {
+ if (mPlotBackground.mTitle.size ()>0) {
+ inPainter.SetStyle (mPlotBackground.mStyle);
+ int theX = inRect.mX + inRect.mW/2;
+ int theY = inRect.mY + 5; // do not depend on margin
+ PColor theC = mPlotBackground.mPlotRegionBackColor;
+ inPainter.SetFillColor (theC.mR, theC.mG, theC.mB);
+ int textSize = inPainter.CalculateTextDrawSize(mPlotBackground.mTitle.c_str());
+ inPainter.FillRect (theX-textSize/2-3, theY, textSize+6, inPainter.GetFontHeight()+3);
+ theC = mPlotBackground.mTitleColor;
+ inPainter.SetFillColor (theC.mR, theC.mG, theC.mB);
+ inPainter.DrawText (theX, theY, PPLOT_NORTH, mPlotBackground.mTitle.c_str());
+ }
+ return true;
+}
+#endif
+
+bool PPlot::DrawGridXAxis (const PRect &inRect, Painter &inPainter) const {
+
+ // ticks
+ inPainter.SetStyle (mXAxisSetup.mTickInfo.mStyle);
+ if (!mXTickIterator->Init ()) {
+ return false;
+ }
+
+ float theX;
+ bool theIsMajorTick;
+ string theFormatString;
+
+/* M.T. - modified to allow customisation
+ inPainter.SetFillColor (200,200,200);
+ inPainter.SetLineColor (200,200,200);
+*/
+ inPainter.SetLineColor(mGridInfo.mGridColor.mR,
+ mGridInfo.mGridColor.mG,
+ mGridInfo.mGridColor.mB);
+ inPainter.SetStyle (mGridInfo.mStyle);
+
+ // draw gridlines
+ if (mGridInfo.mXGridOn) {
+ while (mXTickIterator->GetNextTick (theX, theIsMajorTick, theFormatString)) {
+
+ if (theIsMajorTick && mGridInfo.mXGridOn) {
+ float theScreenX = mXTrafo->Transform(theX);
+ inPainter.DrawLine (theScreenX, inRect.mY, theScreenX, inRect.mY + inRect.mH);
+ }
+ }
+ }
+
+ return true;
+}
+
+bool PPlot::DrawGridYAxis (const PRect &inRect, Painter &inPainter) const {
+
+ // ticks
+ inPainter.SetStyle (mYAxisSetup.mTickInfo.mStyle);
+ if (!mYTickIterator->Init ()) {
+ return false;
+ }
+
+ float theY;
+ bool theIsMajorTick;
+ string theFormatString;
+ PRect theTickRect;
+
+/* M.T. - modified to allow customisation
+ inPainter.SetFillColor (200,200,200);
+ inPainter.SetLineColor (200,200,200);
+*/
+ inPainter.SetLineColor(mGridInfo.mGridColor.mR,
+ mGridInfo.mGridColor.mG,
+ mGridInfo.mGridColor.mB);
+ inPainter.SetStyle (mGridInfo.mStyle);
+
+ // draw gridlines
+ if (mYAxisSetup.mTickInfo.mTicksOn) {
+ while (mYTickIterator->GetNextTick (theY, theIsMajorTick, theFormatString)) {
+
+ if (theIsMajorTick && mGridInfo.mYGridOn) {
+ float theScreenY = mYTrafo->Transform(theY);
+ inPainter.DrawLine (inRect.mX, theScreenY, inRect.mX + inRect.mW, theScreenY);
+ }
+ }
+ }
+
+ return true;
+}
+
+#ifdef _IUP_PPLOT_
+static void DrawArrow(Painter &inPainter, float rx, float ry, int vert, int ascen, int size)
+{
+ int x = (int)(rx + 0.5);
+ int y = (int)(ry + 0.5);
+ size += 2; // to avoid too small sizes
+ int size2 = (int)(size*0.7f + 0.5);
+ if (vert)
+ {
+ y-=ascen*size;
+ inPainter.DrawLine(x, y, x, y+ascen*size);
+
+ int y2 = y+ascen*size2;
+ inPainter.FillArrow(x, y, x-size2, y2, x+size2, y2);
+ }
+ else
+ {
+ x+=ascen*size;
+ inPainter.DrawLine(x, y, x-ascen*size, y);
+
+ int x2 = x-ascen*size2;
+ inPainter.FillArrow(x, y, x2, y-size2, x2, y+size2);
+ }
+}
+#endif
+
+bool PPlot::DrawXAxis (const PRect &inRect, Painter &inPainter) const {
+ inPainter.SetStyle (mXAxisSetup.mStyle);
+
+ float theX1 = inRect.mX;
+ float theY1;
+ float theTargetY = 0;
+ if (!mXAxisSetup.mCrossOrigin) {
+ if (mYAxisSetup.mAscending) {
+ theTargetY = mYAxisSetup.mMax;
+ } else {
+ theTargetY = mYAxisSetup.mMin;
+ }
+ }
+ theY1 = mYTrafo->Transform (theTargetY);
+
+ inPainter.SetLineColor(mXAxisSetup.mColor.mR,
+ mXAxisSetup.mColor.mG,
+ mXAxisSetup.mColor.mB);
+
+ // x-axis
+ float theX2 = theX1+inRect.mW;
+ float theY2 = theY1;
+ inPainter.DrawLine (theX1, theY1, theX2, theY2);
+
+#ifdef _IUP_PPLOT_
+ if (mXAxisSetup.mAscending)
+ DrawArrow(inPainter, theX2, theY2, 0, 1, mXAxisSetup.mTickInfo.mMinorTickScreenSize);
+ else
+ DrawArrow(inPainter, theX1, theY1, 0, -1, mXAxisSetup.mTickInfo.mMinorTickScreenSize);
+#endif
+
+ // ticks
+ inPainter.SetStyle (mXAxisSetup.mTickInfo.mStyle);
+ if (!mXTickIterator->Init ()) {
+ return false;
+ }
+
+ float theX;
+ bool theIsMajorTick;
+ string theFormatString;
+
+ int theYMax = 0;
+ PRect theTickRect;
+ PRect theRect = inRect;
+
+ if (mXAxisSetup.mTickInfo.mTicksOn) {
+ while (mXTickIterator->GetNextTick (theX, theIsMajorTick, theFormatString)) {
+ if (!DrawXTick (theX, theY1, theIsMajorTick, theFormatString, inPainter, theTickRect)) {
+ return false;
+ }
+
+ if (theTickRect.mY+theTickRect.mH>theYMax) {
+ theYMax = theTickRect.mY+theTickRect.mH;
+ }
+ }
+ }
+
+ if (theYMax>theRect.mY+theRect.mH) {
+ theRect.mH = theYMax-theRect.mY;
+ }
+
+#ifdef _IUP_PPLOT_ /* M.T. - the alignment of the text is simply requested */
+ if (mXAxisSetup.mLabel.size ()>0) {
+ inPainter.SetStyle (mXAxisSetup.mStyle);
+ int theY = theRect.mY + theRect.mH + 3*inPainter.GetFontHeight()/2;
+ if (mXAxisSetup.mLabelCentered)
+ {
+ int theX = theRect.mX + theRect.mW/2;
+ inPainter.DrawText (theX, theY, PPLOT_NORTH, mXAxisSetup.mLabel.c_str ());
+ }
+ else
+ {
+ int theX = theRect.mX + theRect.mW;
+ inPainter.DrawText (theX, theY, PPLOT_NORTH_EAST, mXAxisSetup.mLabel.c_str ());
+ }
+ }
+#else
+ inPainter.SetStyle (mXAxisSetup.mStyle);
+ string theLabel = mXAxisSetup.mLabel;
+ if (theLabel.size ()>0) {
+ int theW = inPainter.CalculateTextDrawSize (theLabel.c_str ());
+ int theX = theRect.mX + (theRect.mW-theW)/2;
+ int theY = 1 + theRect.mY + theRect.mH + inPainter.GetFontHeight (); // M.T. was too close to ticks
+ inPainter.DrawText (theX, theY, theLabel.c_str ());
+ }
+#endif
+ return true;
+}
+
+bool PPlot::DrawXTick (float inX, int inScreenY, bool inMajor, const string &inFormatString, Painter &inPainter, PRect &outRect) const{
+ char theBuf[128];
+ int theTickSize;
+ float theScreenX = mXTrafo->Transform(inX);
+ outRect.mX = theScreenX;
+ outRect.mY = inScreenY;
+ outRect.mW = 0;
+ if (inMajor) {
+ theTickSize = mXAxisSetup.mTickInfo.mMajorTickScreenSize;
+ sprintf (theBuf, inFormatString.c_str (), inX);
+#ifdef _IUP_PPLOT_ /* M.T. - the alignment of the text is simply requested */
+ outRect.mH = theTickSize + mXAxisSetup.mTickInfo.mMinorTickScreenSize;
+ inPainter.DrawText (theScreenX, inScreenY+outRect.mH, PPLOT_NORTH, theBuf);
+#else
+ outRect.mH = inPainter.GetFontHeight () + theTickSize +
+ mXAxisSetup.mTickInfo.mMinorTickScreenSize;
+ inPainter.DrawText (theScreenX, inScreenY+outRect.mH, theBuf);
+#endif
+ }
+ else {
+ theTickSize = mXAxisSetup.mTickInfo.mMinorTickScreenSize;
+ outRect.mH = theTickSize;
+ }
+
+ inPainter.DrawLine (theScreenX, inScreenY,theScreenX, inScreenY+theTickSize);
+ return true;
+}
+
+bool PPlot::DrawYAxis (const PRect &inRect, Painter &inPainter) const {
+ inPainter.SetStyle (mYAxisSetup.mStyle);
+ float theX1;
+ float theTargetX = 0;
+ if (!mYAxisSetup.mCrossOrigin) {
+ if (mXAxisSetup.mAscending) {
+ theTargetX = mXAxisSetup.mMin;
+ }
+ else {
+ theTargetX = mXAxisSetup.mMax;
+ }
+ }
+ if (mXAxisSetup.mDiscrete)
+ theTargetX -= 0.5;
+
+ theX1 = mXTrafo->Transform (theTargetX);
+
+ int theY1 = inRect.mY;
+ float theX2 = theX1;
+ int theY2 = theY1+inRect.mH;
+
+ inPainter.SetLineColor(mYAxisSetup.mColor.mR,
+ mYAxisSetup.mColor.mG,
+ mYAxisSetup.mColor.mB);
+
+ // draw y axis
+ inPainter.DrawLine (theX1, theY1, theX2, theY2);
+
+#ifdef _IUP_PPLOT_
+ if (mYAxisSetup.mAscending)
+ DrawArrow(inPainter, theX2, theY2, 1, -1, mYAxisSetup.mTickInfo.mMinorTickScreenSize);
+ else
+ DrawArrow(inPainter, theX1, theY1, 1, 1, mYAxisSetup.mTickInfo.mMinorTickScreenSize);
+#endif
+
+ // ticks
+ inPainter.SetStyle (mYAxisSetup.mTickInfo.mStyle);
+ if (!mYTickIterator->Init ()) {
+ return false;
+ }
+
+ float theY;
+ bool theIsMajorTick;
+ string theFormatString;
+ PRect theTickRect;
+ PRect theRect = inRect;
+
+ if (mYAxisSetup.mTickInfo.mTicksOn) {
+ while (mYTickIterator->GetNextTick (theY, theIsMajorTick, theFormatString)) {
+ if (!DrawYTick (theY, theX1, theIsMajorTick, theFormatString, inPainter, theTickRect)) {
+ return false;
+ }
+
+ if (theTickRect.mX < theRect.mX) {
+ theRect.mX = theTickRect.mX;
+ }
+ }
+ }
+
+ // draw label
+#ifdef _IUP_PPLOT_ /* M.T. - the alignment of the text is simply requested */
+ if (mYAxisSetup.mLabel.size ()>0) {
+ inPainter.SetStyle (mYAxisSetup.mStyle);
+ int theX = theRect.mX - 3*inPainter.GetFontHeight()/2;
+ if (mYAxisSetup.mLabelCentered)
+ {
+ int theY = theRect.mY + theRect.mH/2;
+ inPainter.DrawRotatedText (theX, theY, -90, PPLOT_NORTH, mYAxisSetup.mLabel.c_str ());
+ }
+ else
+ {
+ int theY = theRect.mY;
+ inPainter.DrawRotatedText (theX, theY, -90, PPLOT_NORTH_EAST, mYAxisSetup.mLabel.c_str ());
+ }
+ }
+#else
+ inPainter.SetStyle (mYAxisSetup.mStyle);
+ string theLabel = mYAxisSetup.mLabel;
+ if (theLabel.size ()>0) {
+ int theW = inPainter.CalculateTextDrawSize (theLabel.c_str ());
+ int theX = theRect.mX - 1; // M.T. - was too close to ticks
+ int theY = theRect.mY + theRect.mH - (theRect.mH-theW)/2;
+ inPainter.DrawRotatedText (theX, theY, -90, theLabel.c_str ());
+ }
+#endif
+
+ return true;
+}
+
+bool PPlot::DrawYTick (float inY, int inScreenX, bool inMajor, const string &inFormatString, Painter &inPainter, PRect &outRect) const {
+ char theBuf[128];
+ int theTickSize;
+ float theScreenY = mYTrafo->Transform(inY);
+ outRect.mX = inScreenX;
+ outRect.mY = theScreenY;
+ outRect.mW = 0;// not used
+ outRect.mH = 0;// not used
+ if (inMajor) {
+ theTickSize = mYAxisSetup.mTickInfo.mMajorTickScreenSize;
+ sprintf (theBuf, inFormatString.c_str (), inY);
+#ifdef _IUP_PPLOT_ /* M.T. - the alignment of the text is simply requested */
+ outRect.mX -= (theTickSize + mYAxisSetup.mTickInfo.mMinorTickScreenSize);
+ inPainter.DrawText (outRect.mX, theScreenY, PPLOT_EAST, theBuf);
+ outRect.mX -= inPainter.CalculateTextDrawSize (theBuf); // update the position
+#else
+ int theStringWidth = inPainter.CalculateTextDrawSize (theBuf);
+ outRect.mX -= (theStringWidth+theTickSize+mYAxisSetup.mTickInfo.mMinorTickScreenSize);
+ int theHalfFontHeight = inPainter.GetFontHeight ()/2;// for sort of vertical centralizing
+ inPainter.DrawText (outRect.mX, theScreenY+theHalfFontHeight, theBuf);
+#endif
+
+ }
+ else {
+ theTickSize = mYAxisSetup.mTickInfo.mMinorTickScreenSize;
+ outRect.mX -= theTickSize;
+ }
+
+ inPainter.DrawLine (inScreenX, theScreenY, inScreenX-theTickSize, theScreenY);
+ return true;
+}
+
+#ifdef _IUP_PPLOT_
+static void DrawRect(Painter &inPainter, int inX, int inY, int inW, int inH)
+{
+ inPainter.DrawLine(inX, inY, inX+inW-1, inY);
+ inPainter.DrawLine(inX+inW-1, inY, inX+inW-1, inY+inH-1);
+ inPainter.DrawLine(inX+inW-1, inY+inH-1, inX, inY+inH-1);
+ inPainter.DrawLine(inX, inY+inH-1, inX, inY);
+}
+
+bool PPlot::DrawLegend (const PRect &inRect, Painter &inPainter) const {
+ PColor theC;
+ int theI;
+
+ int theHeight = inPainter.GetFontHeight();
+ int margin = theHeight/2;
+ int plotCount = mPlotDataContainer.GetPlotCount();
+ int totalHeight = plotCount*(1.2*theHeight) - 0.2*theHeight + 2*margin;
+
+ int maxWidth = 0;
+ for (theI=0; theI<plotCount; theI++)
+ {
+ const LegendData *theLegendData = mPlotDataContainer.GetConstLegendData(theI);
+ if (theLegendData && theLegendData->mShow) {
+ inPainter.SetStyle (theLegendData->mStyle);
+ int size = inPainter.CalculateTextDrawSize(theLegendData->mName.c_str());
+
+ const DataDrawerBase* drawer = mPlotDataContainer.GetConstDataDrawer(theI);
+ if (drawer->mHasMarks)
+ {
+ LineDataDrawer* linedrawer = (LineDataDrawer*)drawer;
+ if (linedrawer->mDrawPoint)
+ size += linedrawer->mStyle.mMarkSize+8;
+ }
+
+ if (size > maxWidth)
+ maxWidth = size;
+ }
+ }
+
+ if (maxWidth == 0)
+ return false;
+
+ maxWidth += 2*margin;
+
+ int theX = inRect.mX;
+ int theY = inRect.mY;
+
+ switch (mLegendPos)
+ {
+ case PPLOT_TOPLEFT:
+ theX += 2;
+ theY += 2;
+ break;
+ case PPLOT_BOTTOMLEFT:
+ theX += 2;
+ theY += inRect.mH - totalHeight - 2;
+ break;
+ case PPLOT_BOTTOMRIGHT:
+ theX += inRect.mW - maxWidth - 2;
+ theY += inRect.mH - totalHeight - 2;
+ break;
+ default: // PPLOT_TOPRIGHT
+ theX += inRect.mW - maxWidth - 2;
+ theY += 2;
+ break;
+ }
+
+ theC = mPlotBackground.mPlotRegionBackColor;
+ inPainter.SetFillColor (theC.mR, theC.mG, theC.mB);
+ inPainter.FillRect(theX, theY, maxWidth, totalHeight);
+ inPainter.SetLineColor (theC.mR/1.5, theC.mG/1.5, theC.mB/1.5);
+ DrawRect(inPainter, theX, theY, maxWidth, totalHeight);
+
+ for (theI=0; theI<plotCount; theI++) {
+ const LegendData *theLegendData = mPlotDataContainer.GetConstLegendData(theI);
+ if (theLegendData && theLegendData->mShow) {
+ theC = theLegendData->mColor;
+ inPainter.SetLineColor (theC.mR, theC.mG, theC.mB);
+
+ int X = theX + margin;
+ int Y = theY + theI*(theHeight*1.2) + margin;
+
+ int mark_size = 0;
+ const DataDrawerBase* drawer = mPlotDataContainer.GetConstDataDrawer(theI);
+ if (drawer->mHasMarks)
+ {
+ LineDataDrawer* linedrawer = (LineDataDrawer*)drawer;
+ if (linedrawer->mDrawPoint)
+ {
+ mark_size = linedrawer->mStyle.mMarkSize+8;
+ inPainter.SetStyle (linedrawer->mStyle);
+ linedrawer->DrawPoint(X+mark_size/2, Y+3*inPainter.GetFontHeight()/4, inRect, inPainter);
+ }
+ }
+
+ inPainter.SetStyle (theLegendData->mStyle);
+ inPainter.DrawText (X+mark_size, Y, PPLOT_NORTH_WEST, theLegendData->mName.c_str ());
+ }
+ }
+ return true;
+}
+#else
+bool PPlot::DrawLegend (const PRect &inRect, Painter &inPainter) const {
+ const int kXoffsetLegend(20);
+
+ for (int theI=0; theI<mPlotDataContainer.GetPlotCount (); theI++) {
+ PColor theC;
+ string theText;
+ const LegendData *theLegendData = mPlotDataContainer.GetConstLegendData (theI);
+ if (theLegendData) {
+ inPainter.SetStyle (theLegendData->mStyle);
+ theC = theLegendData->mColor;
+ if (theLegendData->mShow) {
+ theText = theLegendData->mName;
+ }
+ }
+ inPainter.SetLineColor (theC.mR, theC.mG, theC.mB);
+
+ // cut legend if it doesn't fit in plot
+ int theSize (0);
+ if (inPainter.CalculateTextDrawSize (theText.c_str ()) >= inRect.mW - kXoffsetLegend) {
+ theText.insert(0, "...");
+ while (inPainter.CalculateTextDrawSize (theText.c_str ()) >= inRect.mW - kXoffsetLegend) {
+ theSize = theText.size ();
+ // display dots and at least 3 characters
+ if (theSize >= 9) {
+ theText.erase (3, 3);
+ }
+ else if (theSize >= 7) {
+ theText.erase (3, theSize - 6);
+ } else {
+ // keep dots only
+ theText.erase (3, theSize - 3);
+ break;
+ }
+ }
+ }
+
+ int theHeight = inPainter.GetFontHeight ();
+ int theX = inRect.mX + kXoffsetLegend;
+ int theY = inRect.mY + theI*(theHeight*2)+theHeight;
+ inPainter.DrawText (theX, theY, theText.c_str ());
+ }
+ return true;
+}
+#endif
+
+static float GetMaxFromRange (const PlotDataBase &inData, long inStartIndex, long inEndIndex) {
+ float max = 0;
+ float fabsMax = 0;
+ for (long theI = inStartIndex; theI <= inEndIndex; theI++) {
+ if (theI == inStartIndex) {
+ max = inData.GetValue (theI);
+ fabsMax = fabs (max);
+ }
+ else {
+ float data = inData.GetValue (theI);
+ if (fabs (data) > fabsMax) {
+ max = data;
+ fabsMax = fabs (data);
+ }
+ }
+ }
+
+ return max;
+}
+
+static void FindRange (const PlotDataBase &inData, float inMin, float inMax, long& outStartIndex, long& outEndIndex) {
+ outStartIndex = 0;
+ while (outStartIndex < inData.GetSize () && inData.GetValue (outStartIndex) <= inMin) {
+ outStartIndex++;
+ }
+
+ if (outStartIndex == inData.GetSize ()) {
+ outStartIndex = inData.GetSize () - 1;
+ outEndIndex = outStartIndex;
+ assert (outStartIndex>-1);
+ return;
+ }
+
+ // We want the value at outStartIndex smaller than or equal to inMin
+ if (outStartIndex > 0) {
+ outStartIndex--;
+ }
+
+ outEndIndex = outStartIndex;
+ while (outEndIndex < inData.GetSize () && inData.GetValue (outEndIndex) < inMax) {
+ outEndIndex++;
+ }
+
+ if (outEndIndex == inData.GetSize ()) {
+ outEndIndex--;
+ }
+ assert (outStartIndex>-1);
+}
+
+static void DrawValue(int theTraX, int theTraY, float theX, float theY, const PlotDataBase &inXData, const AxisSetup &inXAxisSetup, Painter &inPainter)
+{
+ char theBuf[128];
+ string FormatString;
+ if (inXData.IsString())
+ {
+ const StringPlotData *theStringXData = (const StringPlotData *)(&inXData);
+ FormatString = "(%s, " + inXAxisSetup.mTickInfo.mFormatString + ")";
+ const StringData* stdata = theStringXData->GetStringData();
+ sprintf (theBuf, FormatString.c_str(), (*stdata)[(int)theX].c_str(), theY);
+ }
+ else
+ {
+ FormatString = "(" + inXAxisSetup.mTickInfo.mFormatString + ", " + inXAxisSetup.mTickInfo.mFormatString + ")";
+ sprintf (theBuf, FormatString.c_str(), theX, theY);
+ }
+ inPainter.DrawRotatedText (theTraX, theTraY-10, -45, PPLOT_WEST, theBuf);
+}
+
+bool LineDataDrawer::DrawData (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const {
+ if (!mXTrafo || !mYTrafo) {
+ return false;
+ }
+ if ((inXData.GetSize () == 0) || (inYData.GetSize () == 0)) {
+ return false;
+ }
+ long theXSize = inXData.GetSize ();
+ long theYSize = inYData.GetSize ();
+ if (theXSize>theYSize) {
+ return false;
+ }
+ inPainter.SetStyle (mStyle);
+ float thePrevX = 0;
+ float thePrevY = 0;
+ bool theFirst = true;
+ float theTraX, theTraY;
+
+ long theStart = 0;
+ long theEnd = inXData.GetSize () - 1;
+ int theStride = 1;
+ if (mDrawFast) {
+ FindRange (inXData, inXAxisSetup.mMin, inXAxisSetup.mMax, theStart, theEnd);
+
+ theStride = (theEnd - theStart + 1) / inPainter.GetWidth ();
+ if (theStride == 0) {
+ theStride = 1;
+ }
+ }
+
+ for (int theI = theStart; theI <= theEnd; theI+=theStride) {
+
+ float theY;
+ float theX = inXData.GetValue (theI);
+ theTraX = mXTrafo->Transform (theX);
+ if (theStride > 1) {
+ long theLast = theI + theStride - 1;
+ if (theLast>theEnd) {
+ theLast = theEnd;
+ }
+ theY = GetMaxFromRange (inYData, theI, theLast);
+ }
+ else {
+ theY = inYData.GetValue (theI);
+ }
+ theTraY = mYTrafo->Transform (theY);
+
+ if (!theFirst && mDrawLine) {
+ inPainter.DrawLine (thePrevX, thePrevY, theTraX, theTraY);
+ }
+ else {
+ theFirst = false;
+ }
+ bool theDrawPoint = mDrawPoint;
+
+ if (theDrawPoint && !DrawPoint (theTraX, theTraY, inRect, inPainter)) {
+ return false;
+ }
+ if (inPlotDataSelection.IsSelected (theI) && !DrawSelection (theTraX, theTraY, inRect, inPainter)) {
+ return false;
+ }
+#ifdef _IUP_PPLOT_
+ if (mShowValues)
+ DrawValue(theTraX, theTraY, theX, theY, inXData, inXAxisSetup, inPainter);
+#endif
+ thePrevX = theTraX;
+ thePrevY = theTraY;
+ }
+ return true;
+}
+
+DataDrawerBase* LineDataDrawer::Clone () const {
+ return new LineDataDrawer (*this);
+}
+
+bool LineDataDrawer::DrawPoint (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const {
+ inPainter.DrawLine (inScreenX-5, inScreenY+5, inScreenX+5, inScreenY-5);
+ inPainter.DrawLine (inScreenX-5, inScreenY-5, inScreenX+5, inScreenY+5);
+ return true;
+}
+
+bool LineDataDrawer::DrawSelection (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const {
+// inPainter.DrawLine (inScreenX-5, inScreenY+5, inScreenX+5, inScreenY-5);
+// inPainter.DrawLine (inScreenX-5, inScreenY-5, inScreenX+5, inScreenY+5);
+ inPainter.FillRect (inScreenX-5, inScreenY-5, 10, 10);
+ return true;
+}
+
+bool DotDataDrawer::DrawPoint (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const {
+ inPainter.DrawLine (inScreenX, inScreenY, inScreenX + 1, inScreenY);
+ return true;
+}
+
+bool BarDataDrawer::DrawData (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const {
+ if (!mXTrafo || !mYTrafo) {
+ return false;
+ }
+ if (inXData.GetSize ()>inYData.GetSize ()) {
+ return false;
+ }
+ if (!mPlotCount) {
+ return false;
+ }
+ if (mDrawOnlyLastPoint) {
+ return DrawOnlyLastPoint (inXData, inYData, inPlotDataSelection, inXAxisSetup, inRect, inPainter);
+ }
+
+ int theTraX, theTraY;
+ int theTraY0 = mYTrafo->Transform (0);
+
+ int theLeft, theTop, theWidth, theHeight;
+
+ theWidth = inRect.mW/inXData.GetSize ();
+ theWidth *= 0.9f;
+
+ for (long theI=0;theI<inXData.GetSize ();theI++) {
+ float theX = inXData.GetValue (theI);
+ float theY = inYData.GetValue (theI);
+ theTraX = mXTrafo->Transform (theX);
+ theTraY = mYTrafo->Transform (theY);
+
+ theLeft = theTraX-theWidth/2;
+ theTop = theTraY;
+ theHeight = theTraY0-theTop;
+
+ inPainter.FillRect (theLeft, theTop, theWidth, theHeight);
+
+#ifdef _IUP_PPLOT_
+ if (mShowValues)
+ DrawValue(theTraX, theTraY, theX, theY, inXData, inXAxisSetup, inPainter);
+#endif
+ }
+ return true;
+}
+
+
+bool BarDataDrawer::DrawOnlyLastPoint (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const {
+
+ PRect theRect = inRect;
+ theRect.mW = inRect.mW / mPlotCount;
+ theRect.mX = inRect.mX + mPlotIndex * theRect.mW;
+
+ int theTraX, theTraY;
+ int theTraY0 = mYTrafo->Transform (0);
+
+ int theLeft, theTop, theWidth, theHeight;
+
+ theWidth = theRect.mW;
+
+ // only draw last point:
+ long theI = inXData.GetSize () - 1;
+ if (theI >= 0) {
+ theTraX = mXTrafo->Transform (inXData.GetValue (theI));
+ theTraY = mYTrafo->Transform (inYData.GetValue (theI));
+
+ theLeft = theRect.mX;
+ theTop = theTraY;
+ theHeight = theTraY0-theTop;
+
+ inPainter.FillRect (theLeft, theTop, theWidth, theHeight);
+ }
+ return true;
+}
+
+
+DataDrawerBase* BarDataDrawer::Clone () const {
+ return new BarDataDrawer (*this);
+}
+
+bool PPlot::DrawPlot (int inIndex, const PRect &inRect, Painter &inPainter) const {
+
+ if (inIndex>=mPlotDataContainer.GetPlotCount ()) {
+ return false;
+ }
+
+ const PlotDataBase *theXData = mPlotDataContainer.GetConstXData (inIndex);
+ const PlotDataBase *theYData = mPlotDataContainer.GetConstYData (inIndex);
+ if (!theXData || !theYData) {
+ return false;
+ }
+ const LegendData *theLegendData = mPlotDataContainer.GetConstLegendData (inIndex);
+ PColor theC;
+ if (theLegendData) {
+ theC = theLegendData->mColor;
+ }
+ inPainter.SetLineColor (theC.mR, theC.mG, theC.mB);
+ inPainter.SetFillColor (theC.mR, theC.mG, theC.mB);
+
+ const DataDrawerBase *theD = mPlotDataContainer.GetConstDataDrawer (inIndex);
+ if (!theD) {
+ return false;
+ }
+ const PlotDataSelection *thePlotDataSelection = mPlotDataContainer.GetConstPlotDataSelection (inIndex);
+ if (!thePlotDataSelection) {
+ return false;
+ }
+
+ return theD->DrawData (*theXData, *theYData, *thePlotDataSelection, mXAxisSetup, inRect, inPainter);
+ }
+
+bool PPlot::ConfigureSelf () {
+ long thePlotCount = mPlotDataContainer.GetPlotCount ();
+ if (thePlotCount == 0) {
+ return false;
+ }
+ if (mXAxisSetup.mLogScale) {
+ mXTickIterator = &mXLogTickIterator;
+ mXTrafo = &mXLogTrafo;
+ mYAxisSetup.mCrossOrigin = false;
+ }
+ else {
+ const PlotDataBase *theGlue = mPlotDataContainer.GetConstXData (0);
+ if (theGlue->IsString()) {
+ const StringPlotData *theStringXData = (const StringPlotData *)(theGlue);
+ mXTickIterator = &mXNamedTickIterator;
+ mXNamedTickIterator.SetStringList (*(theStringXData->GetStringData ()));
+ }
+ else {
+ mXTickIterator = &mXLinTickIterator;
+ }
+ mXTrafo = &mXLinTrafo;
+ }
+ if (mYAxisSetup.mLogScale) {
+ mYTickIterator = &mYLogTickIterator;
+ mYTrafo = &mYLogTrafo;
+ mXAxisSetup.mCrossOrigin = false;
+ }
+ else {
+ mYTickIterator = &mYLinTickIterator;
+ mYTrafo = &mYLinTrafo;
+ }
+ mXTickIterator->SetAxisSetup (&mXAxisSetup);
+ mYTickIterator->SetAxisSetup (&mYAxisSetup);
+
+ // set trafo's for data drawers
+ for (int theI=0; theI<mPlotDataContainer.GetPlotCount ();theI++) {
+ DataDrawerBase *theD = (mPlotDataContainer.GetDataDrawer (theI));
+ if (theD) {
+ theD->SetXTrafo (mXTrafo);
+ theD->SetYTrafo (mYTrafo);
+ theD->SetPlotCount (mPlotDataContainer.GetPlotCount ());
+ theD->SetPlotIndex (theI);
+ }
+ }
+
+ return true;
+}
+
+bool PPlot::ValidateData () {
+
+ /* check x data ascending
+ for (int theI=0; theI<mPlotDataContainer.GetPlotCount ();theI++) {
+ const RealData *theX = dynamic_cast <const RealData *> (mPlotDataContainer.GetConstXData (theI));
+ if (theX && theX->size ()>0) {
+ float thePrev = (*theX)[0];
+ for (RealData::const_iterator theJ=theX->begin ();theJ!=theX->end ();theJ++) {
+ float theNext = *theJ;
+ if (theNext<thePrev) {
+ return false;
+ }
+ }
+ }
+ } */
+ return true;
+}
+
+bool PPlot::CalculateAxisRanges () {
+
+ float theXMin;
+ float theXMax;
+
+ mPlotDataContainer.CalculateXRange (theXMin, theXMax);
+ if (mXAxisSetup.mAutoScaleMin || mXAxisSetup.mAutoScaleMax) {
+
+ if (mXAxisSetup.mAutoScaleMin) {
+ mXAxisSetup.mMin = theXMin;
+ if (mXAxisSetup.mLogScale && (theXMin < kLogMinClipValue) ) {
+ mXAxisSetup.mMin = kLogMinClipValue;
+ }
+ }
+
+ if (mXAxisSetup.mAutoScaleMax) {
+ mXAxisSetup.mMax = theXMax;
+ }
+
+ if (!mXTickIterator->AdjustRange (mXAxisSetup.mMin, mXAxisSetup.mMax)) {
+ return false;
+ }
+ }
+
+ if (mYAxisSetup.mAutoScaleMin || mYAxisSetup.mAutoScaleMax) {
+ float theYMin;
+ float theYMax;
+
+ mPlotDataContainer.CalculateYRange (mXAxisSetup.mMin, mXAxisSetup.mMax,
+ theYMin, theYMax);
+
+ if (mYAxisSetup.mAutoScaleMin) {
+ mYAxisSetup.mMin = theYMin;
+ if (mYAxisSetup.mLogScale && (theYMin < kLogMinClipValue) ) {
+ mYAxisSetup.mMin = kLogMinClipValue;
+ }
+ }
+ if (mYAxisSetup.mAutoScaleMax) {
+ mYAxisSetup.mMax = theYMax;
+ }
+
+ if (!mYTickIterator->AdjustRange (mYAxisSetup.mMin, mYAxisSetup.mMax)) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+bool PPlot::CheckRange (const AxisSetup &inAxisSetup) const {
+ if (inAxisSetup.mLogScale) {
+ if (inAxisSetup.mMin < kLogMinClipValue) {
+ return false;
+ }
+
+ }
+ return true;
+}
+
+bool PPlot::CalculateTickInfo (const PRect &inRect, Painter &inPainter) {
+ float theXRange = mXAxisSetup.mMax - mXAxisSetup.mMin;
+ float theYRange = mYAxisSetup.mMax - mYAxisSetup.mMin;
+
+ if (theXRange <= 0 || theYRange < 0) {
+ return false;
+ }
+
+ if ((mYAxisSetup.mMax != 0 && fabs (theYRange / mYAxisSetup.mMax) < kRangeVerySmall) ||
+ theYRange == 0) {
+ float delta = 0.1f;
+ if (mYAxisSetup.mMax != 0) {
+ delta *= fabs(mYAxisSetup.mMax);
+ }
+
+ mYAxisSetup.mMax += delta;
+ mYAxisSetup.mMin -= delta;
+ theYRange = mYAxisSetup.mMax - mYAxisSetup.mMin;
+ }
+
+ if (mXAxisSetup.mTickInfo.mAutoTick) {
+ inPainter.SetStyle(mXAxisSetup.mTickInfo.mStyle);
+ int theTextWidth = inPainter.CalculateTextDrawSize ("12345");
+ float theDivGuess = inRect.mW/(kMajorTickXInitialFac*theTextWidth);
+ if (!mXTickIterator->InitFromRanges (theXRange, inRect.mH, theDivGuess, mXAxisSetup.mTickInfo)) {
+ return false;
+ }
+ }
+ if (mYAxisSetup.mTickInfo.mAutoTick) {
+ float theTextHeight = inPainter.GetFontHeight ();
+ float theDivGuess = inRect.mH/(kMajorTickYInitialFac*theTextHeight);
+ if (!mYTickIterator->InitFromRanges (theYRange, inRect.mW, theDivGuess, mYAxisSetup.mTickInfo)) {
+ return false;
+ }
+ }
+
+ SetTickSizes (inPainter.GetFontHeight (), mXAxisSetup.mTickInfo);
+ SetTickSizes (inPainter.GetFontHeight (), mYAxisSetup.mTickInfo);
+
+ return true;
+}
+
+void PPlot::SetTickSizes (int inFontHeight, TickInfo &ioTickInfo) {
+ if (ioTickInfo.mAutoTickSize) {
+ float theFac = kRelMinorTickSize/kRelMajorTickSize;
+ float theMax = Round (inFontHeight*kMaxMajorTickSizeInFontHeight);
+ if (ioTickInfo.mMajorTickScreenSize>theMax) {
+ ioTickInfo.mMajorTickScreenSize = theMax;
+ }
+ ioTickInfo.mMinorTickScreenSize = Round (ioTickInfo.mMajorTickScreenSize*theFac);
+ }
+}
+
+
+bool PPlot::CalculateLogTransformation (int inBegin, int inEnd, const AxisSetup& inAxisSetup, LogTrafo& outTrafo) {
+
+ float theBase = inAxisSetup.mLogBase;
+ long theLogFac = 1;//inAxisSetup.mLogFactor;
+ float theDataRange = SafeLog (inAxisSetup.mMax, theBase, theLogFac) - SafeLog(inAxisSetup.mMin, theBase, theLogFac);
+ if (theDataRange < kFloatSmall) {
+ return false;
+ }
+ float theTargetRange = inEnd - inBegin;
+ float theScale = theTargetRange / theDataRange;
+
+ if (inAxisSetup.mAscending ) {
+ outTrafo.mOffset = inBegin - SafeLog(inAxisSetup.mMin, theBase, theLogFac) * theScale;
+ } else {
+ outTrafo.mOffset = inEnd + SafeLog(inAxisSetup.mMin, theBase, theLogFac) * theScale;
+ }
+ outTrafo.mSlope = -theScale;
+ outTrafo.mBase = theBase;
+// outTrafo.mFactor = inAxisSetup.mLogFactor;
+
+ if (inAxisSetup.mAscending) {
+ outTrafo.mSlope *= -1;
+ }
+ return true;
+}
+
+bool PPlot::CalculateLinTransformation (int inBegin, int inEnd, const AxisSetup& inAxisSetup, LinTrafo& outTrafo) {
+ float theDataRange = inAxisSetup.mMax - inAxisSetup.mMin;
+ if (theDataRange < kFloatSmall) {
+ return false;
+ }
+ float theMin = inAxisSetup.mMin;
+ if (inAxisSetup.mDiscrete)
+ {
+ theDataRange++;
+ theMin -= 0.5f;
+ }
+
+ float theTargetRange = inEnd - inBegin;
+ float theScale = theTargetRange / theDataRange;
+
+ if (inAxisSetup.mAscending) {
+ outTrafo.mOffset = inBegin - theMin * theScale;
+ } else {
+ outTrafo.mOffset = inEnd + theMin * theScale;
+ }
+ outTrafo.mSlope = -theScale;
+
+ if (inAxisSetup.mAscending) {
+ outTrafo.mSlope *= -1;
+ }
+ return true;
+}
+
+bool PPlot::CalculateXTransformation (const PRect &inRect) {
+ if (mXAxisSetup.mLogScale) {
+ return CalculateLogTransformation (inRect.mX, inRect.mX + inRect.mW, mXAxisSetup, mXLogTrafo);
+ }
+ else {
+ return CalculateLinTransformation (inRect.mX, inRect.mX + inRect.mW, mXAxisSetup, mXLinTrafo);
+ }
+}
+
+bool PPlot::CalculateYTransformation (const PRect &inRect) {
+ if (mYAxisSetup.mLogScale) {
+ return CalculateLogTransformation (inRect.mY, inRect.mY + inRect.mH, mYAxisSetup, mYLogTrafo);
+ }
+ else {
+ return CalculateLinTransformation (inRect.mY, inRect.mY + inRect.mH, mYAxisSetup, mYLinTrafo);
+ }
+}
+
+#ifndef _IUP_PPLOT_
+bool MakeExamplePlot (int inExample, PPlot &ioPPlot) {
+ switch (inExample) {
+ case 1:
+ MakeExamplePlot1 (ioPPlot);
+ return true;
+ break;
+ case 2:
+ MakeExamplePlot2 (ioPPlot);
+ return true;
+ break;
+ case 3:
+ MakeExamplePlot3 (ioPPlot);
+ return true;
+ break;
+ case 4:
+ MakeExamplePlot4 (ioPPlot);
+ return true;
+ break;
+ case 5:
+ MakeExamplePlot5 (ioPPlot);
+ return true;
+ break;
+ case 6:
+ MakeExamplePlot6 (ioPPlot);
+ return true;
+ break;
+ case 7:
+ MakeExamplePlot7 (ioPPlot);
+ return true;
+ break;
+ case 8:
+ MakeExamplePlot8 (ioPPlot);
+ return true;
+ break;
+ }
+ return false;
+}
+
+void MakeExamplePlot1 (PPlot &ioPPlot) {
+
+ int theI;
+ PlotData *theX1 = new PlotData ();
+ PlotData *theY1 = new PlotData ();
+ float theFac = (float)1.0/(100*100*100);
+ for (theI=-100;theI<=100;theI++) {
+ theX1->push_back (theI+50);
+ theY1->push_back (theFac*theI*theI*theI);
+ }
+ LineDataDrawer *theDataDrawer1 = new LineDataDrawer ();
+ theDataDrawer1->mStyle.mPenWidth = 3;
+ ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, 0, theDataDrawer1);
+ ioPPlot.mPlotBackground.mTitle = "Bar";
+ ioPPlot.mPlotBackground.mStyle.mFontSize = 20;
+ ioPPlot.mMargins.mTop = 60;
+ ioPPlot.mXAxisSetup.mLabel = "gnu (Foo)";
+ ioPPlot.mYAxisSetup.mLabel = "Space (m^3)";
+ ioPPlot.mYAxisSetup.mStyle.mFontSize = 9;
+ ioPPlot.mYAxisSetup.mTickInfo.mStyle.mFontSize = 5;
+ ioPPlot.mYAxisSetup.mStyle.mPenWidth = 2;
+ ioPPlot.mXAxisSetup.mStyle = ioPPlot.mYAxisSetup.mStyle;
+ ioPPlot.mXAxisSetup.mTickInfo.mStyle = ioPPlot.mYAxisSetup.mTickInfo.mStyle;
+
+ PlotData *theX2 = new PlotData ();
+ PlotData *theY2 = new PlotData ();
+ theFac = (float)2.0/100;
+ for (theI=-100;theI<=100;theI++) {
+ theX2->push_back (theI);
+ theY2->push_back (-theFac*theI);
+ }
+ ioPPlot.mPlotDataContainer.AddXYPlot (theX2, theY2);
+ LegendData *theLegendData2 = ioPPlot.mPlotDataContainer.GetLegendData (1);
+ theLegendData2->mStyle.mFontSize = 9;
+
+ PlotData *theX3 = new PlotData ();
+ PlotData *theY3 = new PlotData ();
+ for (theI=-100;theI<=100;theI++) {
+ theY3->push_back (0.01*theI);
+ theX3->push_back (0.01*theI*theI-30);
+ }
+ ioPPlot.mPlotDataContainer.AddXYPlot (theX3, theY3);
+}
+
+void MakeExamplePlot2 (PPlot &ioPPlot) {
+
+ int theI;
+ PlotData *theX1 = new PlotData ();
+ PlotData *theY1 = new PlotData ();
+ float theFac = (float)1.0/(100*100*100);
+ for (theI=0;theI<=100;theI++) {
+ theX1->push_back (theI);
+ theY1->push_back (theFac*theI*theI*theI);
+ }
+ ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, 0);
+
+ PlotData *theX2 = new PlotData ();
+ PlotData *theY2 = new PlotData ();
+ theFac = (float)2.0/100;
+ for (theI=0;theI<=100;theI++) {
+ theX2->push_back (theI);
+ theY2->push_back (-theFac*theI);
+ }
+ ioPPlot.mPlotDataContainer.AddXYPlot (theX2, theY2, 0);
+
+ ioPPlot.mPlotBackground.mTitle = "no autoscale";
+ ioPPlot.mPlotBackground.mStyle.mFontSize = 15;
+ ioPPlot.mPlotBackground.mTransparent = false;
+ ioPPlot.mPlotBackground.mPlotRegionBackColor = PColor (200,200,200);
+ ioPPlot.mMargins.mTop = 60;
+ ioPPlot.mMargins.mRight = 30;
+ ioPPlot.mXAxisSetup.mLabel = "Tg (X)";
+ ioPPlot.mXAxisSetup.SetAutoScale (false);
+ ioPPlot.mXAxisSetup.mMin = 10;
+ ioPPlot.mXAxisSetup.mMax = 60;
+ ioPPlot.mYAxisSetup.SetAutoScale (false);
+ ioPPlot.mYAxisSetup.mMin = -0.5;
+ ioPPlot.mYAxisSetup.mMax = 0.5;
+
+ ioPPlot.mXAxisSetup.mCrossOrigin = false;
+ ioPPlot.mYAxisSetup.mCrossOrigin = false;
+ ioPPlot.mXAxisSetup.mAscending = false;
+ ioPPlot.mYAxisSetup.mAscending = true;
+
+ // M.T. - use a color different from background
+ ioPPlot.mGridInfo.mGridColor = PColor(128,255,128); // some sort of green
+}
+
+void MakeExamplePlot3 (PPlot &ioPPlot) {
+
+ PlotData *theX1 = new PlotData ();
+ PlotData *theY1 = new PlotData ();
+ float theFac = 1.0f/(100*100*100);
+ for (int theI=0;theI<=100;theI++) {
+ // theX1->push_back (theI*0.001);
+ theX1->push_back (theI);
+ theY1->push_back (theFac*theI*theI*theI);
+ }
+ ioPPlot.mPlotDataContainer.AddXYPlot (0, theY1, 0);
+
+ ioPPlot.mPlotBackground.mTitle = "narrow margins";
+ ioPPlot.mPlotBackground.mTransparent = false;
+ ioPPlot.mPlotBackground.mPlotRegionBackColor = PColor (200,200,200);
+ ioPPlot.mMargins.mTop = 50;
+ ioPPlot.mMargins.mRight = 10;
+ ioPPlot.mMargins.mLeft = 10;
+ ioPPlot.mMargins.mBottom = 10;
+
+ // M.T. - use a color different from background
+ ioPPlot.mGridInfo.mGridColor = PColor(128,255,128); // some sort of green
+}
+
+void MakeExamplePlot4 (PPlot &ioPPlot) {
+
+ PlotData *theX1 = new PlotData ();
+ PlotData *theY1 = new PlotData ();
+ float theFac = 100.0f/(100*100*100);
+ for (int theI=0;theI<=100;theI++) {
+ theX1->push_back (0.0001+theI*0.001);
+ theY1->push_back (0.01+theFac*theI*theI*theI);
+ }
+ LegendData *theLegend = new LegendData ();
+ theLegend->mName = "foo";
+ theLegend->mColor = PColor (100,100,200);
+ ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, theLegend);
+ ioPPlot.mXAxisSetup.mLogScale = true;
+ ioPPlot.mYAxisSetup.mLogScale = true;
+ ioPPlot.mYAxisSetup.mLogBase = 2;
+ ioPPlot.mMargins.mLeft = 50;
+ ioPPlot.mMargins.mTop = 20;
+
+ ioPPlot.mGridInfo.mXGridOn = true;
+ ioPPlot.mGridInfo.mYGridOn = true;
+}
+
+void MakeExamplePlot5 (PPlot &ioPPlot) {
+
+ const char * kLables[12] = {"jan","feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"};
+ const float kData[12] = {1,2,3,4,5,6,7,8,9,0,1,2};
+
+ StringPlotData *theX1 = new StringPlotData ();
+ PlotData *theY1 = new PlotData ();
+ for (int theI=0;theI<12;theI++) {
+ theX1->AddItem (kLables[theI]);
+ theY1->push_back (kData[theI]);
+ }
+ LegendData *theLegend = new LegendData ();
+ theLegend->mName = "bar";
+ theLegend->mColor = PColor (100,100,200);
+ BarDataDrawer *theDataDrawer = new BarDataDrawer ();
+ ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, theLegend, theDataDrawer);
+ ioPPlot.mMargins.mLeft = 50;
+ ioPPlot.mMargins.mTop = 20;
+}
+
+void MakeExamplePlot6 (PPlot &ioPPlot) {
+
+ int theI;
+
+ ioPPlot.mPlotBackground.mTitle = "line styles";
+ PlotData *theX1 = new PlotData ();
+ PlotData *theY1 = new PlotData ();
+ float theFac = 100.0f/(100*100*100);
+ for (theI=0;theI<=10;theI++) {
+ theX1->push_back (0.0001+theI*0.001);
+ theY1->push_back (0.01+theFac*theI*theI);
+ }
+ LineDataDrawer *theDataDrawer1 = new LineDataDrawer ();
+ theDataDrawer1->mDrawPoint = true;
+ theDataDrawer1->mStyle.mPenWidth = 3;
+ ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, 0, theDataDrawer1);
+
+ PlotData *theX2 = new PlotData ();
+ PlotData *theY2 = new PlotData ();
+ for (theI=0;theI<=10;theI++) {
+ theX2->push_back (0.0001+theI*0.001);
+ theY2->push_back (0.2-theFac*theI*theI);
+ }
+ LineDataDrawer *theDataDrawer2 = new LineDataDrawer ();
+ theDataDrawer2->mDrawPoint = true;
+ theDataDrawer2->mDrawLine = false;
+ ioPPlot.mPlotDataContainer.AddXYPlot (theX2, theY2, 0, theDataDrawer2);
+
+ ioPPlot.mMargins.mLeft = 50;
+ ioPPlot.mMargins.mTop = 40;
+}
+
+void MakeExamplePlot7 (PPlot &ioPPlot) {
+
+ PlotData *theX1 = new PlotData ();
+ PlotData *theY1 = new PlotData ();
+ float theFac = 100.0f/(100*100*100);
+ for (int theI=0;theI<=100;theI++) {
+ theX1->push_back (0.0001+theI*0.001);
+ theY1->push_back (0.01+theFac*theI*theI*theI);
+ }
+ LegendData *theLegend = new LegendData ();
+ theLegend->mName = "foo";
+ theLegend->mColor = PColor (100,100,200);
+ ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, theLegend);
+ ioPPlot.mYAxisSetup.mLogScale = true;
+ ioPPlot.mYAxisSetup.mLogFactor = 20;
+ ioPPlot.mMargins.mLeft = 50;
+ ioPPlot.mMargins.mTop = 20;
+
+ ioPPlot.mGridInfo.mXGridOn = true;
+ ioPPlot.mGridInfo.mYGridOn = true;
+}
+
+void MakeExamplePlot8 (PPlot &ioPPlot) {
+
+ ioPPlot.mPlotBackground.mTitle = "data selection and editing";
+ PlotData *theX1 = new PlotData ();
+ PlotData *theY1 = new PlotData ();
+ float theFac = 100.0f/(100*100*100);
+ for (int theI=-10;theI<=10;theI++) {
+ theX1->push_back (0.001*theI);
+ theY1->push_back (0.01+theFac*theI*theI*theI);
+ }
+ LegendData *theLegend = new LegendData ();
+ theLegend->mName = "foo";
+ theLegend->mColor = PColor (100,100,200);
+
+ PlotDataSelection *thePlotDataSelection = new PlotDataSelection ();
+ ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, theLegend, 0, thePlotDataSelection);
+ ioPPlot.mMargins.mLeft = 30;
+ ioPPlot.mMargins.mTop = 30;
+ ioPPlot.mMargins.mBottom = 30;
+ ioPPlot.mMargins.mRight = 30;
+}
+
+void MakePainterTester (PPlot &ioPPlot) {
+ ioPPlot.SetPPlotDrawer (new PainterTester ());
+}
+
+static PPlot *sCurrentPPlot=0;
+
+void SetCurrentPPlot (PPlot *inPPlot) {
+ sCurrentPPlot = inPPlot;
+}
+#include <assert.h>
+PPlot & GetCurrentPPlot () {
+ fprintf (stderr, "getplot\n");
+ if (sCurrentPPlot) {
+ return *sCurrentPPlot;
+ }
+ assert (0);
+ fprintf (stderr, "aargh\n");
+
+ return *sCurrentPPlot;// this should not happen
+}
+
+
+
+void MakeCopy (const PPlot &inPPlot, PPlot &outPPlot) {
+ // copy settings
+ outPPlot.mGridInfo = inPPlot.mGridInfo;
+ outPPlot.mMargins = inPPlot.mMargins;
+ outPPlot.mXAxisSetup = inPPlot.mXAxisSetup;
+ outPPlot.mYAxisSetup = inPPlot.mYAxisSetup;
+ outPPlot.mPlotBackground = inPPlot.mPlotBackground;
+
+ // now the data
+ for (int theI=0;theI<inPPlot.mPlotDataContainer.GetPlotCount ();theI++) {
+ const PlotDataBase *theXData = inPPlot.mPlotDataContainer.GetConstXData (theI);
+ const PlotDataBase *theYData = inPPlot.mPlotDataContainer.GetConstYData (theI);
+ const LegendData *theLegendData = inPPlot.mPlotDataContainer.GetConstLegendData (theI);
+ const DataDrawerBase* theDrawer = inPPlot.mPlotDataContainer.GetConstDataDrawer (theI);
+
+ PlotDataBase *theNewXData = new PlotDataPointer (theXData);
+ PlotDataBase *theNewYData = new PlotDataPointer (theYData);
+ LegendData *theNewLegendData = new LegendData ();
+ *theNewLegendData = *theLegendData;
+ DataDrawerBase* theNewDrawer = theDrawer->Clone ();
+
+ outPPlot.mPlotDataContainer.AddXYPlot (theNewXData, theNewYData, theNewLegendData, theNewDrawer);
+
+ }
+
+}
+#endif
diff --git a/iup/srcpplot/iupPPlot.h b/iup/srcpplot/iupPPlot.h
new file mode 100755
index 0000000..bab2f94
--- /dev/null
+++ b/iup/srcpplot/iupPPlot.h
@@ -0,0 +1,645 @@
+/***************************************************************************
+ * *
+ * Copyright notice: *
+ * *
+ * This is free Pier ware. You may do whatever you want with this code. *
+ * You may cont(r)act me by email: pierphil@xs4all.nl *
+ * *
+ ***************************************************************************/
+
+#ifndef __PPLOT_H__
+#define __PPLOT_H__
+
+
+#pragma warning (disable: 4786)
+
+#include <algorithm>
+#include <vector>
+#include <string>
+#include <map>
+#include <stack>
+using namespace std;
+
+#ifdef __WATCOMC__ /* M.T. - 2006-09-26 - hacked to compile with OW ver. 1.5 */
+#pragma off (unreferenced);
+#endif
+
+/* M.T. - these are text alignment values usable here */
+#ifdef _IUP_PPLOT_
+// Text alignment
+enum { /* text alignment */
+ PPLOT_NORTH,
+ PPLOT_SOUTH,
+ PPLOT_EAST,
+ PPLOT_WEST,
+ PPLOT_NORTH_EAST,
+ PPLOT_NORTH_WEST,
+ PPLOT_SOUTH_EAST,
+ PPLOT_SOUTH_WEST,
+ PPLOT_CENTER,
+ PPLOT_BASE_LEFT,
+ PPLOT_BASE_CENTER,
+ PPLOT_BASE_RIGHT
+};
+
+// Legend Position
+enum PLegendPos {PPLOT_TOPLEFT, PPLOT_TOPRIGHT, PPLOT_BOTTOMLEFT, PPLOT_BOTTOMRIGHT};
+#endif
+
+typedef vector<float> RealData;
+typedef vector<string> StringData;
+
+class PStyle {
+ public:
+#ifdef _IUP_PPLOT_
+ PStyle (): mFontSize(0), mFontStyle(-1), mPenWidth(1), mPenStyle(0), mMarkSize(7), mMarkStyle(3) {};
+ int mFontSize;
+ int mFontStyle;
+ int mPenWidth;
+ int mPenStyle;
+ int mMarkStyle;
+ int mMarkSize;
+#else
+ PStyle (): mFontSize(10), mPenWidth(1) {};
+ int mFontSize;
+ string mFont;
+ int mPenWidth;
+ string mPenStyle;
+ map<string,string> mVar;
+#endif
+};
+
+class CalculatedDataBase {
+ public:
+ virtual float GetValue (long inIndex) const = 0;
+ virtual long GetSize () const = 0;
+};
+
+// data
+class PlotDataBase {
+ public:
+ PlotDataBase(): mIsString(false) {};
+ virtual ~PlotDataBase ();
+ virtual const RealData * GetRealPlotData () const = 0;
+ virtual const CalculatedDataBase * GetCalculatedData () const {return 0;}
+ bool IsString () const {return mIsString;}
+ long GetSize () const;
+ float GetValue (long inIndex) const;
+ virtual bool CalculateRange (float &outMin, float &outMax);
+protected:
+ bool mIsString;
+};
+
+typedef vector<PlotDataBase *> PlotDataList;
+
+class PlotDataPointer: public PlotDataBase {
+ public:
+ PlotDataPointer (const PlotDataBase *inPlotData):mPlotData (inPlotData){};// does not own them
+ virtual const RealData * GetRealPlotData () const {return mPlotData->GetRealPlotData ();};
+ virtual const CalculatedDataBase * GetCalculatedData () const {return mPlotData->GetCalculatedData ();}
+ private:
+ const PlotDataBase *mPlotData;
+};
+
+// default data class
+class PlotData: public RealData, public PlotDataBase {
+ public:
+ virtual const RealData * GetRealPlotData () const {return this;};
+};
+
+class CalculatedData: public CalculatedDataBase {
+ public:
+ CalculatedData (float inMin, float inDelta, long inSize):
+ mMin (inMin), mDelta (inDelta), mSize (inSize) {}
+ virtual float GetValue (long inIndex) const { return mMin + inIndex * mDelta; }
+ virtual long GetSize () const { return mSize; }
+
+ float mMin;
+ float mDelta;
+ long mSize;
+};
+
+class CalculatedPlotData: public PlotDataBase {
+ public:
+ CalculatedPlotData (CalculatedDataBase* inCalculatedData):
+ mCalculatedData (inCalculatedData) {}
+ ~CalculatedPlotData () {delete mCalculatedData;}
+ virtual const RealData * GetRealPlotData () const {return 0;}
+ virtual const CalculatedDataBase * GetCalculatedData () const {return mCalculatedData;}
+
+ CalculatedDataBase* mCalculatedData;
+};
+
+class DummyPlotData: public PlotDataBase {
+ public:
+ DummyPlotData (long inSize=0);
+ virtual const RealData * GetRealPlotData () const {return &mRealPlotData;};
+ private:
+ RealData mRealPlotData;
+};
+
+class StringPlotData: public PlotDataBase {
+ public:
+ StringPlotData() {mIsString = true;}
+ void AddItem (const char *inString);
+ void InsertItem (int inIndex, const char *inString);
+ const StringData * GetStringData () const {return &mStringPlotData;};
+ virtual const RealData * GetRealPlotData () const {return &mRealPlotData;};
+// private:
+ RealData mRealPlotData;
+ StringData mStringPlotData;
+};
+
+
+float SafeLog (float inFloat, float inBase, float inFac=1);
+float SafeExp (float inFloat, float inBase, float inFac=1);
+
+class PRect {
+ public:
+ PRect ():mX(0),mY(0),mW(0),mH(0){};
+ long mX;
+ long mY;
+ long mW;
+ long mH;
+};
+
+class PMargins {
+ public:
+ PMargins ():mLeft (0), mRight(0), mTop (0), mBottom (0){};
+ PMargins (long inLeft, long inRight, long inTop, long inBottom):mLeft (inLeft), mRight (inRight), mTop(inTop), mBottom (inBottom) {};
+ long mLeft;
+ long mRight;
+ long mTop;
+ long mBottom;
+};
+
+class PColor {
+ public:
+ PColor (): mR(0), mG(0), mB(0){};
+ PColor (int inR, int inG, int inB): mR((unsigned char)inR), mG((unsigned char)inG), mB((unsigned char)inB){}; // M.T. added typecast
+ unsigned char mR;
+ unsigned char mG;
+ unsigned char mB;
+};
+
+class LegendData {
+ public:
+ LegendData (): mShow (true) {};
+ string mName;
+ PColor mColor;
+ bool mShow;
+
+ void SetDefaultColor (int inPlotIndex);
+ void SetDefaultValues (int inPlotIndex);
+ static PColor GetDefaultColor (int inPlotIndex);
+
+ PStyle mStyle;
+};
+
+typedef vector<LegendData *> LegendDataList;
+
+class PlotDataSelection: public vector<int> {
+ public:
+ PlotDataSelection (long inSize=0):vector<int>(inSize){};
+ bool IsSelected (long inIndex) const;
+ long GetSelectedCount () const;
+};
+
+typedef vector<PlotDataSelection *> PlotDataSelectionList;
+
+class Painter {
+ public:
+ virtual void DrawLine (float inX1, float inY1, float inX2, float inY2)=0;
+ virtual void FillRect (int inX, int inY, int inW, int inH)=0;
+ virtual void InvertRect (int inX, int inY, int inW, int inH)=0;
+ virtual void SetClipRect (int inX, int inY, int inW, int inH)=0;
+ virtual long GetWidth () const=0;
+ virtual long GetHeight () const=0;
+ virtual void SetLineColor (int inR, int inG, int inB)=0;
+ virtual void SetFillColor (int inR, int inG, int inB)=0;
+ virtual long CalculateTextDrawSize (const char *inString)=0;
+ virtual long GetFontHeight () const =0;
+#ifdef _IUP_PPLOT_
+ virtual void FillArrow (int inX1, int inY1, int inX2, int inY2, int inX3, int inY3)=0;
+ virtual void DrawText (int inX, int inY, short align, const char *inString)=0;
+ virtual void DrawRotatedText (int inX, int inY, float inDegrees,
+ short align, const char *inString)=0;
+#else
+ virtual void DrawText (int inX, int inY, const char *inString)=0;
+ virtual void DrawRotatedText (int inX, int inY, float inDegrees, const char *inString)=0;
+#endif
+ virtual void SetStyle (const PStyle &inStyle){};
+};
+
+class DummyPainter: public Painter {
+ public:
+ virtual void DrawLine (float inX1, float inY1, float inX2, float inY2){};
+ virtual void FillRect (int inX, int inY, int inW, int inH){};
+ virtual void InvertRect (int inX, int inY, int inW, int inH){};
+ virtual void SetClipRect (int inX, int inY, int inW, int inH){};
+ virtual long GetWidth () const {return 100;};
+ virtual long GetHeight () const {return 100;};
+ virtual void SetLineColor (int inR, int inG, int inB){};
+ virtual void SetFillColor (int inR, int inG, int inB){};
+ virtual long CalculateTextDrawSize (const char *inString){return 0;};
+ virtual long GetFontHeight () const {return 10;};
+#ifdef _IUP_PPLOT_
+ virtual void FillArrow (int inX1, int inY1, int inX2, int inY2, int inX3, int inY3){};
+ virtual void DrawText (int inX, int inY, short align, const char *inString){};
+ virtual void DrawRotatedText (int inX, int inY, float inDegrees,
+ short align, const char *inString){};
+#else
+ virtual void DrawText (int inX, int inY, const char *inString){};
+ virtual void DrawRotatedText (int inX, int inY, float inDegrees, const char *inString){};
+#endif
+};
+
+class Trafo;
+class AxisSetup;
+
+class DataDrawerBase {
+ public:
+ DataDrawerBase (): mXTrafo (0), mYTrafo (0), mDrawFast (false), mPlotCount (1), mPlotIndex (0), mHasMarks(false), mShowValues(false), mMode(0) {};
+ virtual ~DataDrawerBase (){};
+ void SetXTrafo (Trafo *inTrafo) {mXTrafo = inTrafo;};
+ void SetYTrafo (Trafo *inTrafo) {mYTrafo = inTrafo;};
+ void SetDrawFast (bool inDrawFast) {mDrawFast = inDrawFast;}
+ void SetPlotCount (int inPlotCount) {mPlotCount = inPlotCount;}
+ void SetPlotIndex (int inPlotIndex) {mPlotIndex = inPlotIndex;}
+ virtual bool DrawData (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const =0;
+ virtual DataDrawerBase* Clone () const = 0;
+ bool mHasMarks;
+ bool mShowValues;
+ PStyle mStyle;
+ const char* mMode;
+ protected:
+ Trafo *mXTrafo;
+ Trafo *mYTrafo;
+ bool mDrawFast;
+ int mPlotCount;
+ int mPlotIndex;
+};
+
+typedef vector<DataDrawerBase *> DataDrawerList;
+
+class LineDataDrawer: public DataDrawerBase {
+ public:
+ LineDataDrawer ():mDrawLine (true), mDrawPoint (false) {mMode = "LINE"; mHasMarks = true;};
+ virtual bool DrawData (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const;
+
+ virtual DataDrawerBase* Clone () const;
+ virtual bool DrawPoint (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const;
+ virtual bool DrawSelection (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const;
+
+ bool mDrawLine;
+ bool mDrawPoint;
+};
+
+class DotDataDrawer: public LineDataDrawer {
+ public:
+ DotDataDrawer () { mDrawLine = false; mDrawPoint = true;};
+ virtual bool DrawPoint (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const;
+};
+
+class BarDataDrawer: public DataDrawerBase {
+ public:
+ BarDataDrawer (bool inDrawOnlyLastPoint = false):mDrawOnlyLastPoint (inDrawOnlyLastPoint){ mMode = "BAR"; };
+ virtual bool DrawData (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const;
+ virtual DataDrawerBase* Clone () const;
+
+ protected:
+ bool mDrawOnlyLastPoint;// special mode
+ virtual bool DrawOnlyLastPoint (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const;
+};
+
+
+class PlotDataContainer {
+ public:
+ PlotDataContainer ();
+ ~PlotDataContainer ();
+
+ void RemoveElement (int inIndex);
+ void ClearData ();
+
+ /* M.T. - changed to return the index of the added plot; returns -1 on error */
+ int AddXYPlot (PlotDataBase *inXData, PlotDataBase *inYData, LegendData *inLegendData=0, DataDrawerBase *inDataDrawer=0, PlotDataSelection *inPlotDataSelection=0);//takes ownership
+ void SetXYPlot (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, LegendData *inLegendData=0, DataDrawerBase *inDataDrawer=0, PlotDataSelection *inPlotDataSelection=0);//takes ownership
+
+ int GetPlotCount () const {return mYDataList.size ();};
+
+ PlotDataBase * GetXData (int inIndex);
+ PlotDataBase * GetYData (int inIndex);
+ LegendData * GetLegendData (int inIndex);
+ DataDrawerBase * GetDataDrawer (int inIndex);
+ PlotDataSelection * GetPlotDataSelection (int inIndex);
+ bool SetDataDrawer (int inIndex, DataDrawerBase* inDataDrawer); // takes ownership
+
+ int GetPlotIndexByName (const string &inName) const;// negative value: not found
+
+ const PlotDataBase * GetConstXData (int inIndex) const;
+ const PlotDataBase * GetConstYData (int inIndex) const;
+ const LegendData * GetConstLegendData (int inIndex) const;
+ const DataDrawerBase * GetConstDataDrawer (int inIndex) const;
+ const PlotDataSelection * GetConstPlotDataSelection (int inIndex) const;
+
+ bool CalculateXRange (float &outXMin, float &outXMax) const;
+ bool CalculateYRange (float inXMin, float inXMax, float &outYMin, float &outYMax) const;
+ bool CalculateYRangePlot (float inXMin, float inXMax, const PlotDataBase &inXData, const PlotDataBase &inYData, float &outYMin, float &outYMax) const;
+
+ protected:
+ bool CheckState () const;
+ PlotDataList mXDataList;
+ PlotDataList mYDataList;
+ LegendDataList mLegendDataList;
+ DataDrawerList mDataDrawerList;
+ PlotDataSelectionList mPlotDataSelectionList;
+};
+
+// M.T. - added custom grid color - was (200,200,200)
+class GridInfo {
+ public:
+ GridInfo (const bool inXGridOn = false, const bool inYGridOn = false) : mXGridOn (inXGridOn), mYGridOn (inYGridOn), mGridColor(200,200,200) {};
+
+ bool mXGridOn;
+ bool mYGridOn;
+ PColor mGridColor;
+ PStyle mStyle;
+};
+
+class TickInfo {
+ public:
+ TickInfo ():mAutoTick (true), mAutoTickSize (true), mTickDivision(1), mMajorTickSpan(1), mMajorTickScreenSize (1), mMinorTickScreenSize (1), mFormatString ("%.0f"), mTicksOn (true) {};
+
+
+ static float RoundSpan (float inSpan);
+ static void MakeFormatString (float inValue, string &outFormatString);
+
+ bool mAutoTick;
+ bool mAutoTickSize;
+ bool mTicksOn;
+
+ int mTickDivision;
+ float mMajorTickSpan; // in plot units
+ int mMajorTickScreenSize;
+ int mMinorTickScreenSize;
+ string mFormatString;
+ PStyle mStyle;
+};
+
+class AxisSetup {
+
+ public:
+ AxisSetup (): mMin(0),mMax(0), mAutoScaleMin(true), mAutoScaleMax (true), mAscending (true), mLogScale(false), mCrossOrigin(true), mMaxDecades(-1), mLogFactor (1), mLogBase (10), mLabelCentered(true), mDiscrete(false) {};
+
+ void SetMin (float inMin) {mMin = inMin;};
+ void SetMax (float inMax) {mMax = inMax;};
+ void SetAutoScale (bool inBool) {mAutoScaleMin = mAutoScaleMax = inBool;};
+ bool IsAutoScale () const {return mAutoScaleMin && mAutoScaleMax;};
+
+ float mMin;
+ float mMax;
+ bool mAutoScaleMin;
+ bool mAutoScaleMax;
+ bool mAscending; // not Ascending: Descending
+ bool mLogScale;
+ bool mCrossOrigin;
+ long mMaxDecades;// property for auto logscale
+ long mLogFactor;// to make db possible with logscale
+ float mLogBase;
+ bool mDiscrete;
+
+ bool mLabelCentered;
+ PColor mColor;
+ string mLabel;
+ PStyle mStyle;
+
+ TickInfo mTickInfo;
+
+ private:
+};
+
+class Trafo {
+ public:
+ virtual ~Trafo (){};
+ virtual float Transform (float inValue) const=0;
+ virtual float TransformBack (float inValue) const = 0;
+};
+
+class LinTrafo: public Trafo {
+ public:
+ LinTrafo ():mOffset (0), mSlope(0){};
+ virtual float Transform (float inValue) const;
+ virtual float TransformBack (float inValue) const;
+
+ float mOffset;
+ float mSlope;
+};
+
+class LogTrafo: public Trafo {
+ public:
+ LogTrafo ():mOffset (0), mSlope(0), mBase (10), mFactor (1){};
+ virtual float Transform (float inValue) const;
+ virtual float TransformBack (float inValue) const;
+
+ float mOffset;
+ float mSlope;
+ float mBase;
+ float mFactor;
+};
+
+class TickIterator {
+ public:
+ TickIterator ():mAxisSetup (0){};
+ virtual ~TickIterator () {};
+ virtual bool Init ()=0;
+ virtual bool GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString)=0;
+
+ virtual bool InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &outTickInfo) const=0;
+ virtual bool AdjustRange (float &ioMin, float &ioMax) const{return true;};
+ void SetAxisSetup (const AxisSetup *inAxisSetup) {mAxisSetup = inAxisSetup;};
+
+ protected:
+ const AxisSetup *mAxisSetup;
+};
+
+class LinTickIterator: public TickIterator {
+ public:
+ LinTickIterator ():mCurrentTick (0), mDelta (0){}
+ virtual bool Init ();
+ virtual bool GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString);
+ bool InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &outTickInfo) const;
+ protected:
+ float mCurrentTick;
+ long mCount;
+ float mDelta;
+ string mFormatString;
+};
+
+class LogTickIterator: public TickIterator {
+ public:
+ LogTickIterator ():mCurrentTick (0), mDelta (0){}
+ virtual bool Init ();
+ virtual bool GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString);
+
+ bool InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &outTickInfo) const;
+ virtual bool AdjustRange (float &ioMin, float &ioMax) const;
+ float RoundUp (float inFloat) const;
+ float RoundDown (float inFloat) const;
+
+ protected:
+ float mCurrentTick;
+ long mCount;
+ float mDelta;
+};
+
+class NamedTickIterator: public LinTickIterator {
+ public:
+ NamedTickIterator (){}
+ void SetStringList (const StringData &inStringList) {mStringList = inStringList;};
+
+ // virtual bool Init ();
+ virtual bool GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString);
+ bool InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &outTickInfo) const;
+ protected:
+ StringData mStringList;
+};
+
+class PlotBackground {
+ public:
+ PlotBackground ():mTransparent (true), mPlotRegionBackColor (255,255,255) {};
+ bool mTransparent;
+ PColor mPlotRegionBackColor;
+ string mTitle;
+ PStyle mStyle;
+#ifdef _IUP_PPLOT_
+ PColor mTitleColor;
+#endif
+};
+
+class PPlot;
+
+class PDrawer {
+ public:
+ typedef vector<PDrawer *> tList;
+
+ virtual ~PDrawer (){};
+ virtual bool Prepare (Painter &inPainter, PPlot& inPPlot) {return true;};
+ virtual bool Draw (Painter &inPainter)=0;
+};
+
+class PCalculator {// base class to do additional calculations on a PPlot
+ public:
+ typedef vector<PCalculator *> tList;
+
+ virtual ~PCalculator (){};
+
+ virtual bool ShouldCalculate () const {return true;};
+ virtual bool Calculate (Painter &inPainter, PPlot& inPPlot) {return true;};
+};
+
+
+class PainterTester: public PDrawer {
+ public:
+ virtual bool Draw (Painter &inPainter);
+};
+
+class PPlot: public PDrawer {
+ public:
+ PPlot ();
+ virtual ~PPlot ();
+
+ virtual bool Draw (Painter &inPainter);
+
+ PlotDataContainer mPlotDataContainer;
+ AxisSetup mXAxisSetup;
+ AxisSetup mYAxisSetup;
+ GridInfo mGridInfo;
+ PMargins mMargins;// [pixels]
+ PlotBackground mPlotBackground;
+ bool mShowLegend; // M.T. - hide|show legend
+ PLegendPos mLegendPos;
+
+ void SetPPlotDrawer (PDrawer *inPDrawer);// taker ownership. Used to bypass normal Draw function, i.e., set Draw function by composition.
+ void SetPPlotDrawer (PDrawer &inPDrawer);// same as above: does not take ownership
+
+ bool mHasAnyModifyingCalculatorBeenActive;
+ PCalculator::tList mModifyingCalculatorList;
+ PCalculator::tList mPostCalculatorList;
+ PDrawer::tList mPreDrawerList;
+ PDrawer::tList mPostDrawerList;
+
+ TickIterator *mXTickIterator;
+ TickIterator *mYTickIterator;
+
+ virtual bool CalculateXTransformation (const PRect &inRect);
+ virtual bool CalculateYTransformation (const PRect &inRect);
+ virtual bool DrawGridXAxis (const PRect &inRect, Painter &inPainter) const;
+ virtual bool DrawGridYAxis (const PRect &inRect, Painter &inPainter) const;
+ virtual bool DrawXAxis (const PRect &inRect, Painter &inPainter) const;
+ virtual bool DrawYAxis (const PRect &inRect, Painter &inPainter) const;
+ virtual bool CalculateTickInfo (const PRect &inRect, Painter &inPainter);
+
+ Trafo *mXTrafo;
+ Trafo *mYTrafo;
+
+ static int Round (float inFloat);
+ static const float kRangeVerySmall;
+
+ protected:
+ PPlot (const PPlot&);
+ PPlot& operator=(const PPlot&);
+
+ static bool CalculateLogTransformation (int inBegin, int inEnd, const AxisSetup& inAxisSetup, LogTrafo& outTrafo);
+ static bool CalculateLinTransformation (int inBegin, int inEnd, const AxisSetup& inAxisSetup, LinTrafo& outTrafo);
+
+ virtual bool DrawPlotBackground (const PRect &inRect, Painter &inPainter) const;
+#ifdef _IUP_PPLOT_
+ virtual bool DrawPlotTitle(const PRect &inRect, Painter &inPainter) const;
+#endif
+ virtual bool DrawXTick (float inX, int inScreenY, bool inMajor, const string &inFormatString, Painter &inPainter, PRect &outRect) const;
+ virtual bool DrawYTick (float inY, int inScreenX, bool inMajor, const string &inFormatString, Painter &inPainter, PRect &outRect) const;
+ virtual bool DrawLegend (const PRect &inRect, Painter &inPainter) const;
+ virtual bool DrawPlot (int inIndex, const PRect &inRect, Painter &inPainter) const;
+ virtual bool ConfigureSelf ();// change here implementations of interfaces
+ virtual bool ValidateData ();// check preconditions here things like x is ascending
+ virtual bool CalculateAxisRanges ();
+ virtual bool CheckRange (const AxisSetup &inAxisSetup) const;
+
+ void SetTickSizes (int inFontHeight, TickInfo &ioTickInfo);
+
+ // trafo's between plot coordinates and screen coordinates.
+ LinTrafo mXLinTrafo;
+ LinTrafo mYLinTrafo;
+ LogTrafo mXLogTrafo;
+ LogTrafo mYLogTrafo;
+
+ LinTickIterator mXLinTickIterator;
+ LinTickIterator mYLinTickIterator;
+ LogTickIterator mXLogTickIterator;
+ LogTickIterator mYLogTickIterator;
+ NamedTickIterator mXNamedTickIterator;
+
+ PDrawer * mPPlotDrawer;
+ bool mOwnsPPlotDrawer;
+};
+
+#ifndef _IUP_PPLOT_
+bool MakeExamplePlot (int inExample, PPlot &ioPPlot);
+void MakeExamplePlot1 (PPlot &ioPPlot);
+void MakeExamplePlot2 (PPlot &ioPPlot);
+void MakeExamplePlot3 (PPlot &ioPPlot);
+void MakeExamplePlot4 (PPlot &ioPPlot);
+void MakeExamplePlot5 (PPlot &ioPPlot);
+void MakeExamplePlot6 (PPlot &ioPPlot);
+void MakeExamplePlot7 (PPlot &ioPPlot);
+void MakeExamplePlot8 (PPlot &ioPPlot);
+void MakePainterTester (PPlot &ioPPlot);
+
+void MakeCopy (const PPlot &inPPlot, PPlot &outPPlot);
+
+// following functions can be used to interface with scripts
+void SetCurrentPPlot (PPlot *inPPlot);
+PPlot & GetCurrentPPlot ();
+#endif
+
+#endif
diff --git a/iup/srcpplot/iupPPlotInteraction.cpp b/iup/srcpplot/iupPPlotInteraction.cpp
new file mode 100755
index 0000000..389dbcc
--- /dev/null
+++ b/iup/srcpplot/iupPPlotInteraction.cpp
@@ -0,0 +1,832 @@
+/***************************************************************************
+ * *
+ * Copyright notice: *
+ * *
+ * This is free Pier ware. You may do whatever you want with this code. *
+ * You may cont(r)act me by email: pierphil@xs4all.nl *
+ * *
+ ***************************************************************************/
+
+#include <stdio.h>
+#include <math.h>
+
+#include "iupPPlotInteraction.h"
+
+const float kHitDistance = (float)10.0;//pixels
+
+float pmax (float inX1, float inX2) {
+ if (inX1>inX2) {
+ return inX1;
+ }
+ return inX2;
+}
+float pmin (float inX1, float inX2) {
+ if (inX1<inX2) {
+ return inX1;
+ }
+ return inX2;
+}
+
+PMouseEvent::PMouseEvent (int inX, int inY, EType inType, int inModifierKeys):
+ PModifierKeys(inModifierKeys),
+ mX(inX),
+ mY(inY),
+ mType(inType)
+{
+}
+
+PKeyEvent::PKeyEvent (EKey inKey, int inRepeatCount, int inModifierKeys, char inChar):
+ PModifierKeys (inModifierKeys),
+ mKey (inKey),
+ mChar (inChar),
+ mRepeatCount (inRepeatCount)
+{
+}
+
+PPlotInteraction::PPlotInteraction (PPlot &inPPlot):
+ mPPlot (inPPlot),
+ mIsEnabled (true)
+{
+}
+
+
+PZoomInteraction::PZoomInteraction (PPlot &inPPlot):
+ PPlotInteraction (inPPlot),
+ mDragging (false),
+ mZoomMode (kZoom_Region)
+{
+ inPPlot.mPostDrawerList.push_back (this);
+}
+
+bool PZoomInteraction::HandleMouseEvent (const PMouseEvent &inEvent) {
+ if (!mDragging) {
+ if (inEvent.IsMouseDown ()) {
+ /* if (inEvent.IsOnlyShiftKeyDown ()) {
+ DoZoomOut ();
+ return true;
+ }*/
+ if (inEvent.HasModifierKeys ()) {
+ return false;
+ }
+ mDragging = true;
+ mX1 = mX2 = inEvent.mX;
+ mY1 = mY2 = inEvent.mY;
+ return true;
+ }
+ }
+ else {
+ if (inEvent.IsMouseUp ()) {
+ // here we should zoom
+
+ if (mX1 == mX2 && mY1 == mY2) {
+ mDragging = false;
+ DoZoomOut ();
+ return true;
+ // return false;// emtpy area
+ }
+
+ DoZoomIn ();
+ mDragging = false;
+ return true;
+ }
+ if (inEvent.IsMouseMove ()) {
+ mX2 = inEvent.mX;
+ mY2 = inEvent.mY;
+ return true;
+ }
+ }
+ return false;
+}
+
+bool PZoomInteraction::HandleKeyEvent (const PKeyEvent &inEvent) {
+
+ if (inEvent.IsOnlyControlKeyDown () && inEvent.IsChar ()) {
+ switch (inEvent.GetChar ()) {
+ case 'r':
+ mZoomMode = kZoom_Region;
+ return true;
+ break;
+ case 'x':
+ mZoomMode = kZoom_X;
+ return true;
+ break;
+ case 'y':
+ mZoomMode = kZoom_Y;
+ return true;
+ break;
+ }
+ }
+ return false;
+};
+
+bool PZoomInteraction::Draw (Painter &inPainter) {
+ if (mDragging) {
+ inPainter.SetLineColor (255, 0, 0);
+
+ float theX1 = mX1;
+ float theX2 = mX2;
+ float theY1 = mY1;
+ float theY2 = mY2;
+
+ bool theDrawInverse = true;
+
+ switch (mZoomMode) {
+ case kZoom_Region:
+ // theDrawInverse = false;
+ break;
+ case kZoom_X:
+ theY1 = mPPlot.mMargins.mTop;
+ theY2 = inPainter.GetHeight ()-mPPlot.mMargins.mBottom;
+ break;
+ case kZoom_Y:
+ theX1 = mPPlot.mMargins.mLeft;
+ theX2 = inPainter.GetWidth ()-mPPlot.mMargins.mRight;
+ break;
+ }
+
+ // draw rectangle
+ inPainter.DrawLine (theX1, theY1, theX2, theY1);
+ inPainter.DrawLine (theX2, theY1, theX2, theY2);
+ inPainter.DrawLine (theX2, theY2, theX1, theY2);
+ inPainter.DrawLine (theX1, theY2, theX1, theY1);
+
+ if (theDrawInverse) {
+ float theX = pmin (theX1, theX2);
+ float theY = pmin (theY1, theY2);
+ float theW = fabs (theX1-theX2);
+ float theH = fabs (theY1-theY2);
+ inPainter.InvertRect (theX, theY, theW, theH);
+ }
+ }
+ return true;
+
+}
+
+bool PZoomInteraction::CheckRange (float inFloat1, float inFloat2) {
+ if (fabs(inFloat1-inFloat2) < 1e-5) {
+ return false;
+ }
+ int abs1 = (int) log10(fabs (inFloat1));
+ int abs2 = (int) log10(fabs (inFloat2));
+ if ( abs1 == abs2) {
+ float theVal1 = (inFloat1 / pow (10., abs1)); /* M.T. changed to force a double cast */
+ float theVal2 = (inFloat2 / pow (10., abs2));
+ float theValDif = fabs(theVal1 - theVal2);
+ if (theValDif < 1e-5) {
+ return false;
+ }
+ }
+ return true;
+}
+
+// hmmm... copied from PPlot.cpp
+void PZoomInteraction::DoZoomIn (float inX1, float inX2, float inY1, float inY2) {
+ if (!CheckRange (inX1, inX2)) {
+ return;
+ }
+ if (!CheckRange (inY1, inY2)) {
+ return;
+ }
+ // also use the following criterium that is used in PPlot::CalculateTickInfo to
+ // avoid strange zoom in / zoom out behaviour
+ float theYRange = fabs (inY1 - inY2);
+ float theYMax = (inY1 > inY2) ? inY1 : inY2;
+ if (fabs (theYRange / theYMax) < PPlot::kRangeVerySmall) {
+ return;
+ }
+
+ StoreCurrentAxisSetup ();
+
+ if (IsZoomRegion () || IsZoomX ()) {
+ mPPlot.mXAxisSetup.SetAutoScale (false);
+ mPPlot.mXAxisSetup.mMin = pmin (inX1, inX2);
+ mPPlot.mXAxisSetup.mMax = pmax (inX1, inX2);
+ }
+ if (IsZoomRegion () || IsZoomY ()) {
+ mPPlot.mYAxisSetup.SetAutoScale (false);
+ mPPlot.mYAxisSetup.mMin = pmin (inY1, inY2);
+ mPPlot.mYAxisSetup.mMax = pmax (inY1, inY2);
+ }
+
+ return;
+}
+
+void PZoomInteraction::StoreCurrentAxisSetup () {
+ PAxisInfo theInfo;// store the current axis setup
+
+ theInfo.mXAxisSetup = mPPlot.mXAxisSetup;
+ theInfo.mYAxisSetup = mPPlot.mYAxisSetup;
+
+ mZoomHistory.push (theInfo);
+}
+
+void PZoomInteraction::DoZoomIn () {
+ float theX1 = mPPlot.mXTrafo->TransformBack (mX1);
+ float theX2 = mPPlot.mXTrafo->TransformBack (mX2);
+ float theY1 = mPPlot.mYTrafo->TransformBack (mY1);
+ float theY2 = mPPlot.mYTrafo->TransformBack (mY2);
+
+ DoZoomIn (theX1, theX2, theY1, theY2);
+};
+
+// arguments allow us to zoom out in X direction but change the Y-axis
+void PZoomInteraction::DoZoomOut (float inY1, float inY2) {
+ if (mZoomHistory.size () == 0) {
+ return;
+ }
+ PAxisInfo theInfo = mZoomHistory.top ();
+ mZoomHistory.pop ();
+
+ mPPlot.mXAxisSetup = theInfo.mXAxisSetup;
+ if (inY1 != -1) {
+ mPPlot.mYAxisSetup.mMin = pmin (inY1, inY2);
+ mPPlot.mYAxisSetup.mMax = pmax (inY1, inY2);
+ } else {
+ mPPlot.mYAxisSetup = theInfo.mYAxisSetup;
+ }
+}
+
+PSelectionInteraction::PSelectionInteraction (PPlot &inPPlot):
+ PPlotInteraction (inPPlot),
+ mCommand (kNone),
+ mListener (0)
+{
+ inPPlot.mPostCalculatorList.push_back (this);
+}
+
+
+bool PSelectionInteraction::HandleKeyEvent (const PKeyEvent &inEvent) {
+
+ mCommand = kNone;
+ if (inEvent.IsOnlyControlKeyDown () && inEvent.IsChar () && inEvent.GetChar () == 'a') {
+// mCalculate = true;
+ mCommand = kSelectAll;
+ mKeyEvent = inEvent;
+ }
+ return mCommand != kNone;
+};
+
+void PSelectionInteraction::UpdateSelection (int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inHit, PlotDataSelection *inPlotDataSelection) {
+ if ((*inPlotDataSelection)[inSampleIndex] != inHit)
+ {
+ if (SelectNotify(inIndex, inSampleIndex, inXData, inYData, inHit))
+ (*inPlotDataSelection)[inSampleIndex] = inHit;
+ }
+}
+
+void PSelectionInteraction::SelectAll (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, PlotDataSelection *inPlotDataSelection) {
+ for (long theI=0;theI<inPlotDataSelection->size ();theI++) {
+ UpdateSelection (inIndex, theI, inXData, inYData, true, inPlotDataSelection);
+ }
+}
+
+
+bool PSelectionInteraction::HandleMouseEvent (const PMouseEvent &inEvent) {
+
+ mCommand = kNone;
+ if (inEvent.IsMouseDown ()) {
+ if (!(inEvent.IsOnlyControlKeyDown () || inEvent.IsOnlyShiftKeyDown ())) {
+ return false;
+ }
+// fprintf (stderr, "selection\n");
+// mCalculate = true;
+ if (inEvent.IsOnlyControlKeyDown ()) {
+ mCommand = kPointwiseSelection;
+ }
+ else if (inEvent.IsOnlyShiftKeyDown ()) {
+ mCommand = kGlobalSelection;
+ }
+ mMouseEvent = inEvent;
+ return true;
+ }
+ return false;
+}
+
+bool PSelectionInteraction::Calculate (Painter &inPainter, PPlot& inPPlot) {
+
+ if (mCommand == kNone) {
+ return true;
+ }
+
+ PlotDataContainer &theContainer = inPPlot.mPlotDataContainer;
+ long thePlotCount = theContainer.GetPlotCount ();
+ float theDist = -1;
+
+ for (long theI=0;theI<thePlotCount;theI++) {
+ PlotDataBase *theXData = theContainer.GetXData (theI);
+ PlotDataBase *theYData = theContainer.GetYData (theI);
+ DataDrawerBase *theDataDrawer = theContainer.GetDataDrawer (theI);
+ PlotDataSelection *thePlotDataSelection = theContainer.GetPlotDataSelection (theI);
+
+
+
+ long theNearestPointIndex;
+ float theLocalDist = CalculateDistanceToPlot (theXData, theYData, theNearestPointIndex);
+
+// fprintf (stderr, "dist %f\n", theLocalDist);
+
+ bool theHit = theLocalDist < kHitDistance;
+
+ if (!SelectNotify(-1, 0, NULL, NULL, false))
+ return true;
+
+ if (mCommand == kPointwiseSelection) {
+ HandlePointwiseInteraction (theI, theXData, theYData, theHit, theNearestPointIndex, theDataDrawer, thePlotDataSelection);
+ }
+ else if (mCommand == kGlobalSelection){
+ HandleGlobalInteraction (theI, theXData, theYData, theHit, theNearestPointIndex, theDataDrawer, thePlotDataSelection);
+ }
+ else if (mCommand == kSelectAll) {
+ SelectAll (theI, theXData, theYData, thePlotDataSelection);
+ }
+
+ SelectNotify(-2, 0, NULL, NULL, false);
+
+ if (theHit) {
+// fprintf (stderr, "hit/n");
+ }
+ }
+ if (mListener) {
+ mListener->HandlePSelectionInteraction ();
+ }
+
+ mCommand = kNone;
+
+ return true;
+}
+
+void PSelectionInteraction::HandleGlobalInteraction (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inHit, long inNearestPointIndex, DataDrawerBase *inDataDrawer, PlotDataSelection *inPlotDataSelection) {
+ if (inPlotDataSelection->size ()>0) {
+ for (int theI=0;theI<inPlotDataSelection->size ();theI++) {
+ UpdateSelection (inIndex, theI, inXData, inYData, inHit, inPlotDataSelection);
+ }
+ }
+}
+
+void PSelectionInteraction::HandlePointwiseInteraction (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inHit, long inNearestPointIndex, DataDrawerBase *inDataDrawer, PlotDataSelection *inPlotDataSelection) {
+ if (!inHit) {
+ return;
+ }
+ if (inPlotDataSelection->size ()>inNearestPointIndex) {
+ bool theWasHit = (*inPlotDataSelection)[inNearestPointIndex] !=0;
+ UpdateSelection (inIndex, inNearestPointIndex, inXData, inYData, !theWasHit, inPlotDataSelection);
+ /*
+ for (int theI=0;theI<inPlotDataSelection->size ();theI++) {
+ bool theWasHit = (*inPlotDataSelection)[theI] !=0;
+ bool theIsHit = false;
+ if (theI==inNearestPointIndex) {
+ theIsHit = !theWasHit;
+ }
+ (*inPlotDataSelection)[theI] = theIsHit;
+ }*/
+ }
+}
+
+float PSelectionInteraction::CalculateDistanceToPlot (const PlotDataBase *inXData, const PlotDataBase *inYData, long &outNearestPointIndex) {
+
+// const RealData *theXData = inXData->GetRealPlotData ();
+// const RealData *theYData = inYData->GetRealPlotData ();
+ outNearestPointIndex = -1;
+ float theDist = -1;
+ for (int theI=0;theI<inXData->GetSize ();theI++) {
+// float theX = (*theXData)[theI];
+// float theY = (*theYData)[theI];
+ float theX = inXData->GetValue (theI);
+ float theY = inYData->GetValue (theI);
+ // transform to pixels
+ theX = mPPlot.mXTrafo->Transform (theX)-mMouseEvent.mX;
+ theY = mPPlot.mYTrafo->Transform (theY)-mMouseEvent.mY;
+
+ float theTmp = theX*theX+theY*theY;
+
+ if (theTmp<theDist||theDist<0) {
+ theDist = theTmp;
+ outNearestPointIndex = theI;
+ }
+ }
+
+ return sqrt (theDist);
+}
+
+
+PlotDataIncrementerBounds::PlotDataIncrementerBounds ():
+ mLowerBoundEnabled (false),
+ mLowerBound (0),
+ mUpperBoundEnabled (false),
+ mUpperBound (0)
+{
+}
+
+bool PlotDataIncrementerBounds::CheckBounds (float inValue) const {
+ if (mLowerBoundEnabled && inValue<mLowerBound) {
+ return false;
+ }
+ if (mUpperBoundEnabled && inValue>mUpperBound) {
+ return false;
+ }
+ return true;
+}
+
+
+bool PlotDataIncrementer::Increment (const vector<float> &inIncrementList, vector<float *> &inData, const PlotDataIncrementerBounds &inGlobalBounds, const vector<PlotDataIncrementerBounds> &inBoundList) const {
+ bool theDontChange = true;
+
+ if (!Impl_Increment (inIncrementList, inData, inGlobalBounds, inBoundList, theDontChange)) {
+ return false;
+ }
+ theDontChange = false;
+ Impl_Increment (inIncrementList, inData, inGlobalBounds, inBoundList, theDontChange);
+ return true;
+}
+
+bool PlotDataIncrementer::Impl_Increment (const vector<float> &inIncrementList, vector<float *> &inData, const PlotDataIncrementerBounds &inGlobalBounds, const vector<PlotDataIncrementerBounds> &inBoundList, bool inDontChange) const {
+
+ if (inBoundList.size ()>0 && inBoundList.size () != inData.size ()) {
+ return false;
+ }
+ if (inIncrementList.size () != inData.size ()) {
+ return false;
+ }
+
+ for (int theI=0;theI<inData.size ();theI++) {
+ float *theValue = inData[theI];
+ float theIncrement = inIncrementList[theI];
+ float theIncrementedValue = *theValue+theIncrement;
+ if (!inGlobalBounds.CheckBounds (theIncrementedValue)) {
+ return false;
+ }
+ if (inBoundList.size ()>0) {
+ if (!inBoundList[theI].CheckBounds (theIncrementedValue)) {
+ return false;
+ }
+ }
+ if (!inDontChange) {
+ *theValue = theIncrementedValue;
+ }
+ }
+ return true;
+}
+
+
+
+PEditInteraction::PEditInteraction (PPlot &inPPlot):
+ PPlotInteraction (inPPlot),
+ mCalculate (false),
+ mListener (0)
+{
+ inPPlot.mModifyingCalculatorList.push_back (this);
+}
+
+bool PEditInteraction::HandleKeyEvent (const PKeyEvent &inEvent) {
+
+ mCalculate = Impl_HandleKeyEvent (inEvent);
+ mKeyEvent = inEvent;
+ return mCalculate;
+};
+
+bool PEditInteraction::Calculate (Painter &inPainter, PPlot& inPPlot) {
+ if (!mCalculate) {
+ return true;
+ }
+
+ Impl_Calculate (inPainter, inPPlot);
+
+ if (mListener) {
+ mListener->HandlePEditInteraction ();
+ }
+ mCalculate = false;
+ return true;
+}
+
+
+
+PVerticalCursorInteraction::PVerticalCursorInteraction (PPlot &inPPlot):
+ PEditInteraction (inPPlot)
+{
+}
+
+bool PVerticalCursorInteraction::Impl_HandleKeyEvent (const PKeyEvent &inEvent) {
+
+ if (inEvent.IsArrowDown () || inEvent.IsArrowUp ()) {
+ return true;
+ }
+ return false;
+};
+
+bool PVerticalCursorInteraction::Impl_Calculate (Painter &inPainter, PPlot& inPPlot) {
+
+ PlotDataContainer &theContainer = inPPlot.mPlotDataContainer;
+ long thePlotCount = theContainer.GetPlotCount ();
+ for (long theI=0;theI<thePlotCount;theI++) {
+ PlotDataBase *theXData = theContainer.GetXData (theI);
+ PlotDataBase *theYData = theContainer.GetYData (theI);
+ DataDrawerBase *theDataDrawer = theContainer.GetDataDrawer (theI);
+ PlotDataSelection *thePlotDataSelection = theContainer.GetPlotDataSelection (theI);
+
+ if (mKeyEvent.IsArrowUp () || mKeyEvent.IsArrowDown () ) {
+ HandleVerticalCursorKey (thePlotDataSelection, theYData);
+ }
+ }
+ return true;
+}
+
+void PVerticalCursorInteraction::HandleVerticalCursorKey (const PlotDataSelection *inPlotDataSelection, PlotDataBase *inYData) {
+ class PlotData *theYData = dynamic_cast<PlotData *>(inYData);
+ if (!theYData) {
+ return;
+ }
+ vector<float> theIncrementList (inPlotDataSelection->GetSelectedCount ());
+ vector<float *> theSelectedData (inPlotDataSelection->GetSelectedCount ());
+ float theDelta = 1;// pixels
+ if (mKeyEvent.IsArrowDown ()) {
+ theDelta *= -1;
+ }
+ if (mKeyEvent.IsOnlyControlKeyDown ()) {
+ theDelta *= 10;
+ }
+ long theIndex = 0;
+ for (int theI=0;theI<theYData->GetSize ();theI++) {
+ if (inPlotDataSelection->IsSelected (theI)) {
+ float *theNow = &((*theYData)[theI]);
+ float theNowPixels = mPPlot.mYTrafo->Transform (*theNow);
+ float theNow2 = mPPlot.mYTrafo->TransformBack (theNowPixels);
+ theNowPixels -= theDelta;
+ float theShiftedNow = mPPlot.mYTrafo->TransformBack (theNowPixels);
+ float theDeltaData = theShiftedNow-*theNow;
+ theIncrementList[theIndex] = theDeltaData;
+ theSelectedData[theIndex] = theNow;
+// float theNew = theNow + theDelta;
+// (*theYData)[theI] = theNew;
+ theIndex++;
+ }
+ }
+ PlotDataIncrementer theIncremter;
+ vector<PlotDataIncrementerBounds> theDummyList;
+ theIncremter.Increment (theIncrementList, theSelectedData, mGlobalBounds, theDummyList);
+}
+
+
+PDeleteInteraction::PDeleteInteraction (PPlot &inPPlot):
+ PEditInteraction (inPPlot)
+{
+}
+
+bool PDeleteInteraction::Impl_HandleKeyEvent (const PKeyEvent &inEvent) {
+
+ if (inEvent.IsDelete ()) {
+ return true;
+ }
+ return false;
+};
+
+bool PDeleteInteraction::Impl_Calculate (Painter &inPainter, PPlot& inPPlot) {
+
+ PlotDataContainer &theContainer = inPPlot.mPlotDataContainer;
+ long thePlotCount = theContainer.GetPlotCount ();
+
+ if (!DeleteNotify(-1, 0, NULL, NULL))
+ return true;
+
+ for (long theI=0;theI<thePlotCount;theI++) {
+ PlotDataBase *theXData = theContainer.GetXData (theI);
+ PlotDataBase *theYData = theContainer.GetYData (theI);
+ DataDrawerBase *theDataDrawer = theContainer.GetDataDrawer (theI);
+ PlotDataSelection *thePlotDataSelection = theContainer.GetPlotDataSelection (theI);
+
+ if (mKeyEvent.IsDelete () ) {
+ HandleDeleteKey (theXData, theYData, thePlotDataSelection, theI);
+ }
+ }
+
+ DeleteNotify(-2, 0, NULL, NULL);
+
+ return true;
+}
+
+#ifdef __WATCOMC__
+// M.T. - can't get it, otherwise... (anybody any clue ???)
+typedef vector<int> vectorOfInt;
+
+template<class T> bool Erase (const vectorOfInt &inEraseList, T &ioVec) {
+ vectorOfInt theSortedList = inEraseList;
+ sort (theSortedList.begin (), theSortedList.end ());
+ reverse (theSortedList.begin (), theSortedList.end ());
+// M.T. this is missing in OW: unique (theSortedList.begin (), theSortedList.end ());// remove duplicates
+ for (vectorOfInt::iterator theI=theSortedList.begin();theI!=theSortedList.end ();theI++) {
+ int theEraseIndex = *theI;
+ // vector <T> ::iterator theX;
+ // theX = ioVec[theEraseIndex];
+ // T *theX = &(ioVec[theEraseIndex]);
+ ioVec.erase (ioVec.begin ()+theEraseIndex);
+ }
+
+ return true;
+}
+
+/*
+
+bool Erase (const vectorOfInt &inEraseList, PlotData &ioVec) {
+ vectorOfInt theSortedList = inEraseList;
+ sort (theSortedList.begin (), theSortedList.end ());
+ reverse (theSortedList.begin (), theSortedList.end ());
+// unique (theSortedList.begin (), theSortedList.end ());// remove duplicates
+ for (vectorOfInt::iterator theI=theSortedList.begin();theI!=theSortedList.end ();theI++) {
+ int theEraseIndex = *theI;
+ ioVec.erase (ioVec.begin ()+theEraseIndex);
+ }
+
+ return true;
+}
+
+bool Erase (const vectorOfInt &inEraseList, PlotDataSelection &ioVec)
+ {
+ vectorOfInt theSortedList = inEraseList;
+ sort (theSortedList.begin (), theSortedList.end ());
+ reverse (theSortedList.begin (), theSortedList.end ());
+// unique (theSortedList.begin (), theSortedList.end ());// remove duplicates
+ for (vectorOfInt::iterator theI=theSortedList.begin();theI!=theSortedList.end ();theI++) {
+ int theEraseIndex = *theI;
+ ioVec.erase (ioVec.begin ()+theEraseIndex);
+ }
+
+ return true;
+}
+*/
+#else
+template<class T> bool Erase (const vector<int> &inEraseList, vector <T> &ioVec) {
+ vector<int> theSortedList = inEraseList;
+ sort (theSortedList.begin (), theSortedList.end ());
+ reverse (theSortedList.begin (), theSortedList.end ());
+ unique (theSortedList.begin (), theSortedList.end ());// remove duplicates
+ for (vector<int>::iterator theI=theSortedList.begin();theI!=theSortedList.end ();theI++) {
+ int theEraseIndex = *theI;
+ // vector <T> ::iterator theX;
+ // theX = ioVec[theEraseIndex];
+ // T *theX = &(ioVec[theEraseIndex]);
+ ioVec.erase (ioVec.begin ()+theEraseIndex);
+ }
+
+ return true;
+}
+#endif
+
+void PDeleteInteraction::HandleDeleteKey (PlotDataBase *inXData, PlotDataBase *inYData, PlotDataSelection *inPlotDataSelection, int inIndex) {
+ vector<int> theDeleteList (inPlotDataSelection->GetSelectedCount ());
+ long theIndex = 0;
+ for (int theI=0;theI<inYData->GetSize ();theI++) {
+ if (inPlotDataSelection->IsSelected (theI)) {
+ if (DeleteNotify(inIndex, theI, inXData, inYData))
+ {
+ theDeleteList[theIndex] = theI;
+ theIndex++;
+ }
+ }
+ }
+
+ if (inXData->IsString())
+ {
+ StringPlotData *theXData = (StringPlotData*)(inXData);
+ PlotData *theYData = (PlotData*)(inYData);
+ Erase (theDeleteList, theXData->mRealPlotData);
+ Erase (theDeleteList, theXData->mStringPlotData);
+ Erase (theDeleteList, *theYData);
+ Erase (theDeleteList, *inPlotDataSelection);
+ }
+ else
+ {
+ PlotData *theXData = (PlotData*)(inXData);
+ PlotData *theYData = (PlotData*)(inYData);
+ Erase (theDeleteList, *theXData);
+ Erase (theDeleteList, *theYData);
+ Erase (theDeleteList, *inPlotDataSelection);
+ }
+}
+
+PCrosshairInteraction::PCrosshairInteraction (PPlot &inPPlot):
+ PPlotInteraction (inPPlot),
+ mActive (false),
+ mX (0),
+ mListener (0)
+{
+ inPPlot.mPostDrawerList.push_back (this);
+}
+
+bool PCrosshairInteraction::HandleMouseEvent (const PMouseEvent &inEvent) {
+ if (!mActive) {
+ if (inEvent.IsMouseDown ()) {
+ if (inEvent.IsShiftKeyDown () && inEvent.IsControlKeyDown ()) {
+ mActive = true;
+ mX = inEvent.mX;
+ return true;
+ }
+ }
+ }
+ else {
+ if (inEvent.IsMouseUp ()) {
+ mActive = false;
+ return true;
+ }
+ if (inEvent.IsMouseMove ()) {
+ mX = inEvent.mX;
+ return true;
+ }
+ }
+ return false;
+}
+
+bool PCrosshairInteraction::Draw (Painter &inPainter) {
+ if (mActive) {
+ float theX1 = mX;
+ float theY1 = mPPlot.mMargins.mTop;
+ float theX2 = mX;
+ float theY2 = inPainter.GetHeight () - mPPlot.mMargins.mBottom;
+
+ inPainter.SetLineColor (0, 0, 0);
+ inPainter.DrawLine (theX1, theY1, theX2, theY2);
+
+ PlotDataContainer &theContainer = mPPlot.mPlotDataContainer;
+ long thePlotCount = theContainer.GetPlotCount ();
+
+ for (long theI=0;theI<thePlotCount;theI++) {
+ PlotDataBase *theXData = theContainer.GetXData (theI);
+ PlotDataBase *theYData = theContainer.GetYData (theI);
+ LegendData *theLegendData = theContainer.GetLegendData (theI);
+
+ float theY;
+ if (GetCrossPoint (theXData, theYData, theY)) {
+ if (mListener) {
+ float theXTarget = mPPlot.mXTrafo->TransformBack (mX);
+ float theYTarget = mPPlot.mYTrafo->TransformBack (theY);
+ mListener->HandleCrosshair (theI, thePlotCount, theXTarget, theYTarget);
+ }
+ theX1 = mPPlot.mMargins.mLeft;
+ theX2 = inPainter.GetWidth ()-mPPlot.mMargins.mLeft;
+ theY1 = theY2 = theY;
+ PColor theC = theLegendData->mColor;
+ inPainter.SetLineColor (theC.mR, theC.mG, theC.mB);
+ inPainter.DrawLine (theX1, theY1, theX2, theY2);
+ }
+ }
+ }
+ return true;
+}
+
+bool PCrosshairInteraction::GetCrossPoint (const PlotDataBase *inXData, const PlotDataBase *inYData, float &outY) {
+ if (inXData->GetSize ()==0 ){
+ return false;
+ }
+ float theXTarget = mPPlot.mXTrafo->TransformBack (mX);
+ bool theFirstIsLess = inXData->GetValue (0) < theXTarget;
+ for (int theI=0;theI<inXData->GetSize ();theI++) {
+ float theX = inXData->GetValue (theI);
+ float theY = inYData->GetValue (theI);
+ bool theCurrentIsLess = theX < theXTarget;
+
+ if (theCurrentIsLess != theFirstIsLess) {
+ outY = mPPlot.mYTrafo->Transform (theY);// transform to pixels
+ return true;
+ }
+ }
+ return false;
+}
+
+
+bool InteractionContainer::HandleMouseEvent (const PMouseEvent &inEvent) {
+ for (int theI=0;theI<mList.size ();theI++) {
+ PPlotInteraction *theInteraction = mList[theI];
+ if (theInteraction->IsEnabled () && theInteraction->HandleMouseEvent (inEvent)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+bool InteractionContainer::HandleKeyEvent (const PKeyEvent &inEvent) {
+ for (int theI=0;theI<mList.size ();theI++) {
+ PPlotInteraction *theInteraction = mList[theI];
+ if (theInteraction->IsEnabled () && theInteraction->HandleKeyEvent (inEvent)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+
+DefaultInteractionContainer::DefaultInteractionContainer (PPlot &inPPlot):
+ mZoomInteraction (inPPlot),
+ mSelectionInteraction (inPPlot),
+ mVerticalCursorInteraction (inPPlot),
+ mDeleteInteraction (inPPlot),
+ mCrosshairInteraction (inPPlot)
+{
+ AddInteraction (mZoomInteraction);
+ AddInteraction (mSelectionInteraction);
+ AddInteraction (mVerticalCursorInteraction);
+ AddInteraction (mDeleteInteraction);
+ AddInteraction (mCrosshairInteraction);
+/*
+ mVerticalCursorInteraction.mGlobalBounds.mLowerBoundEnabled = true;
+ mVerticalCursorInteraction.mGlobalBounds.mLowerBound = 0;
+ mVerticalCursorInteraction.mGlobalBounds.mUpperBoundEnabled = true;
+ mVerticalCursorInteraction.mGlobalBounds.mUpperBound = 10;*/
+}
diff --git a/iup/srcpplot/iupPPlotInteraction.h b/iup/srcpplot/iupPPlotInteraction.h
new file mode 100755
index 0000000..eacf790
--- /dev/null
+++ b/iup/srcpplot/iupPPlotInteraction.h
@@ -0,0 +1,328 @@
+/***************************************************************************
+ * *
+ * Copyright notice: *
+ * *
+ * This is free Pier ware. You may do whatever you want with this code. *
+ * You may cont(r)act me by email: pierphil@xs4all.nl *
+ * *
+ ***************************************************************************/
+
+#ifndef __PPLOTINTERACTION_H__
+#define __PPLOTINTERACTION_H__
+
+#include "iupPPlot.h"
+
+class PModifierKeys {
+public:
+ enum {
+ kShift=1,
+ kControl=2,
+ kAlt=4
+ };
+ PModifierKeys (int inModifierKeys=0):mModifierKeys (inModifierKeys) {};
+
+
+ bool IsShiftKeyDown () const {return mModifierKeys & kShift? true: false;};
+ bool IsControlKeyDown () const {return mModifierKeys & kControl? true: false;};
+ bool IsAltKeyDown () const {return mModifierKeys & kAlt? true: false;};
+ bool IsOnlyShiftKeyDown () const {return mModifierKeys == kShift? true: false;};
+ bool IsOnlyControlKeyDown () const {return mModifierKeys == kControl? true: false;};
+ bool IsOnlyAltKeyDown () const {return mModifierKeys == kAlt? true: false;};
+
+ bool HasModifierKeys () const {return mModifierKeys != 0;};
+
+ void SetModifierKeys (int inModifierKeys) {mModifierKeys = inModifierKeys;};
+private:
+ int mModifierKeys;// values like kShift | kAlt
+};
+
+class PMouseEvent: public PModifierKeys {
+public:
+ enum EType {
+ kNone,
+ kDown,
+ kUp,
+ kMove
+ };
+
+ PMouseEvent (int inX=0, int inY=0, EType inType=kNone, int inModifierKeys=0);
+
+ int mX;
+ int mY;
+
+
+ EType mType;
+
+ bool IsNone () const {return mType == kNone;};
+ bool IsMouseDown () const {return mType == kDown;};
+ bool IsMouseUp () const {return mType == kUp;};
+ bool IsMouseMove () const {return mType == kMove;};
+};
+
+class PKeyEvent: public PModifierKeys {
+public:
+
+ enum EKey {
+ kNone,
+ kArrowUp,
+ kArrowDown,
+ kArrowLeft,
+ kArrowRight,
+ kDelete,
+ kChar
+ };
+
+ PKeyEvent (EKey inKey=kNone, int inRepeatCount=0, int inModifierKeys=0, char inChar=0);
+
+
+ bool IsNone () const {return mKey == kNone;};
+ bool IsArrowUp () const {return mKey == kArrowUp;};
+ bool IsArrowDown () const {return mKey == kArrowDown;};
+ bool IsArrowLeft () const {return mKey == kArrowLeft;};
+ bool IsArrowRight () const {return mKey == kArrowRight;};
+ bool IsDelete () const {return mKey == kDelete;};
+ bool IsChar () const {return mKey == kChar;};
+
+ int GetRepeatCount () const {return mRepeatCount;};
+ char GetChar () const {return mChar;};
+protected:
+ EKey mKey;
+ char mChar;
+
+ int mRepeatCount;
+};
+
+
+class PPlotInteraction {
+ public:
+
+ typedef vector<PPlotInteraction *>tList;
+
+ PPlotInteraction (PPlot &inPPlot);
+
+ virtual bool HandleMouseEvent (const PMouseEvent &inEvent)=0;
+ virtual bool HandleKeyEvent (const PKeyEvent &inEvent) {return false;};
+
+ void SetEnabled (bool inBool) {mIsEnabled = inBool;};
+ bool IsEnabled () const {return mIsEnabled;};
+protected:
+ PPlot &mPPlot;
+ bool mIsEnabled;
+};
+
+class PAxisInfo {
+public:
+ typedef vector<AxisSetup> tList;
+ AxisSetup mXAxisSetup;
+ AxisSetup mYAxisSetup;
+};
+
+class PZoomInteraction: public PPlotInteraction, public PDrawer {
+public:
+
+ enum EZoomMode {
+ kZoom_Region,
+ kZoom_X,
+ kZoom_Y
+ };
+
+ PZoomInteraction (PPlot &inPPlot);
+
+ virtual bool HandleMouseEvent (const PMouseEvent &inEvent);
+ virtual bool HandleKeyEvent (const PKeyEvent &inEvent);
+
+ void DoZoomIn (float inX1, float inX2, float inY1, float inY2);
+ void DoZoomOut (float inY1 = -1, float inY2 = -1);
+ bool CanZoomOut () { return !mZoomHistory.empty (); };
+ int GetZoomStackSize () { return mZoomHistory.size (); };
+
+ stack<PAxisInfo> mZoomHistory;
+ EZoomMode mZoomMode;
+
+ bool IsZoomRegion () const {return mZoomMode == kZoom_Region;};
+ bool IsZoomX () const {return mZoomMode == kZoom_X;};
+ bool IsZoomY () const {return mZoomMode == kZoom_Y;};
+protected:
+ void StoreCurrentAxisSetup ();
+ virtual bool Draw (Painter &inPainter);
+ bool CheckRange (float inFloat1, float inFloat2);
+
+ void DoZoomIn ();
+
+ bool mDragging;
+ int mX1;
+ int mY1;
+ int mX2;
+ int mY2;
+
+};
+
+class PlotDataIncrementerBounds {
+public:
+ PlotDataIncrementerBounds ();
+
+ bool CheckBounds (float inValue) const;
+
+ bool mLowerBoundEnabled;
+ float mLowerBound;
+ bool mUpperBoundEnabled;
+ float mUpperBound;
+};
+
+class PlotDataIncrementer {
+public:
+
+ // all are none are incremented
+ bool Increment (const vector<float> &inIncrementList, vector<float *> &inData, const PlotDataIncrementerBounds &inGlobalBounds, const vector<PlotDataIncrementerBounds> &inBoundList) const;
+
+protected:
+ bool Impl_Increment (const vector<float> &inIncrementList, vector<float *> &inData, const PlotDataIncrementerBounds &inGlobalBounds, const vector<PlotDataIncrementerBounds> &inBoundList, bool inDontChange) const;
+};
+
+class PSelectionInteractionListener {
+public:
+ virtual void HandlePSelectionInteraction ()=0;
+};
+
+class PSelectionInteraction: public PPlotInteraction, public PCalculator {
+public:
+
+ enum ECommand {
+ kNone,
+ kPointwiseSelection,
+ kGlobalSelection,
+ kSelectAll
+ };
+
+ PSelectionInteraction (PPlot &inPPlot);
+
+ virtual bool HandleKeyEvent (const PKeyEvent &inEvent);
+ virtual bool HandleMouseEvent (const PMouseEvent &inEvent);
+ virtual bool Calculate (Painter &inPainter, PPlot& inPPlot);
+
+ void SetCommand (ECommand inCommand, const PKeyEvent &inKeyEvent, const PMouseEvent &inMouseEvent);
+ void SetListener (PSelectionInteractionListener *inListener) {mListener = inListener;};
+protected:
+ PSelectionInteractionListener *mListener;
+
+ virtual bool SelectNotify(int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inSelect) {return true;}
+ void UpdateSelection (int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inHit, PlotDataSelection *inPlotDataSelection);
+ void HandleGlobalInteraction (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inHit, long inNearestPointIndex, DataDrawerBase *inDataDrawer, PlotDataSelection *inPlotDataSelection);
+ void HandlePointwiseInteraction (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inHit, long inNearestPointIndex, DataDrawerBase *inDataDrawer, PlotDataSelection *inPlotDataSelection);
+ float CalculateDistanceToPlot (const PlotDataBase *inXData, const PlotDataBase *inYData, long &outNearestPointIndex);
+ void SelectAll (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, PlotDataSelection *inPlotDataSelection);
+// int mX;
+// int mY;
+ ECommand mCommand;
+ PMouseEvent mMouseEvent;
+ PKeyEvent mKeyEvent;
+};
+
+
+class PKeySelectionInteraction: public PPlotInteraction, public PCalculator {
+public:
+ PKeySelectionInteraction (PPlot &inPPlot);
+
+ virtual bool Calculate (Painter &inPainter, PPlot& inPPlot);
+
+protected:
+
+ bool mCalculate;
+};
+
+class PEditInteractionListener {
+public:
+ virtual void HandlePEditInteraction ()=0;
+};
+
+class PEditInteraction: public PPlotInteraction, public PCalculator {
+public:
+ PEditInteraction (PPlot &inPPlot);
+
+ virtual bool HandleMouseEvent (const PMouseEvent &inEvent) {return false;};
+ virtual bool HandleKeyEvent (const PKeyEvent &inEvent);
+ virtual bool ShouldCalculate () const {return mCalculate;};
+ virtual bool Calculate (Painter &inPainter, PPlot& inPPlot);
+
+ virtual bool Impl_HandleKeyEvent (const PKeyEvent &inEvent)=0;
+ virtual bool Impl_Calculate (Painter &inPainter, PPlot& inPPlot)=0;
+ void SetListener (PEditInteractionListener *inListener) {mListener = inListener;};
+protected:
+ PEditInteractionListener *mListener;
+ PKeyEvent mKeyEvent;
+private:
+ bool mCalculate;
+};
+
+class PVerticalCursorInteraction: public PEditInteraction {
+public:
+
+ PVerticalCursorInteraction (PPlot &inPPlot);
+
+ virtual bool Impl_HandleKeyEvent (const PKeyEvent &inEvent);
+ virtual bool Impl_Calculate (Painter &inPainter, PPlot& inPPlot);
+
+ PlotDataIncrementerBounds mGlobalBounds;
+protected:
+ void HandleVerticalCursorKey (const PlotDataSelection *inPlotDataSelection, PlotDataBase *inYData);
+};
+
+class PDeleteInteraction: public PEditInteraction {
+public:
+
+ PDeleteInteraction (PPlot &inPPlot);
+
+ virtual bool Impl_HandleKeyEvent (const PKeyEvent &inEvent);
+ virtual bool Impl_Calculate (Painter &inPainter, PPlot& inPPlot);
+
+protected:
+ void HandleDeleteKey (PlotDataBase *inXData, PlotDataBase *inYData, PlotDataSelection *inPlotDataSelection, int inIndex);
+ virtual bool DeleteNotify(int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData) {return true;}
+};
+
+class PCrosshairInteractionListener {
+public:
+ virtual void HandleCrosshair (int inIndex, int inPlotCount, float inX, float inY)=0;
+};
+
+class PCrosshairInteraction: public PPlotInteraction, public PDrawer {
+public:
+ PCrosshairInteraction (PPlot &inPPlot);
+
+ void SetListener (PCrosshairInteractionListener *inListener) {mListener = inListener;};
+protected:
+ virtual bool HandleMouseEvent (const PMouseEvent &inEvent);
+ virtual bool Draw (Painter &inPainter);
+
+ bool GetCrossPoint (const PlotDataBase *inXData, const PlotDataBase *inYData, float &outY);
+ bool mActive;
+ int mX;
+ PCrosshairInteractionListener *mListener;
+};
+
+class InteractionContainer {
+public:
+ InteractionContainer (){};
+ virtual ~InteractionContainer (){};
+
+ bool HandleMouseEvent (const PMouseEvent &inEvent);
+ bool HandleKeyEvent (const PKeyEvent &inEvent);
+
+ void AddInteraction (PPlotInteraction &inInteraction){mList.push_back(&inInteraction);};
+
+protected:
+ PPlotInteraction::tList mList;
+};
+
+class DefaultInteractionContainer: public InteractionContainer {
+public:
+ DefaultInteractionContainer (PPlot &inPPlot);
+
+ PZoomInteraction mZoomInteraction;
+ PSelectionInteraction mSelectionInteraction;
+ PVerticalCursorInteraction mVerticalCursorInteraction;
+ PDeleteInteraction mDeleteInteraction;
+ PCrosshairInteraction mCrosshairInteraction;
+};
+
+#endif
diff --git a/iup/srcpplot/iup_pplot.cpp b/iup/srcpplot/iup_pplot.cpp
new file mode 100755
index 0000000..6f5c93a
--- /dev/null
+++ b/iup/srcpplot/iup_pplot.cpp
@@ -0,0 +1,2959 @@
+/*
+ * IupPPlot component
+ *
+ * Description : A component, derived from PPlot and IUP canvas
+ * Remark : Depend on libs IUP, CD, IUPCD
+ */
+
+
+#ifdef _MSC_VER
+#pragma warning(disable: 4100)
+#pragma warning(disable: 4512)
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupcbs.h"
+#include "iup_pplot.h"
+#include "iupkey.h"
+
+#include <cd.h>
+#include <cdiup.h>
+#include <cddbuf.h>
+#include <cdirgb.h>
+#include <cdgdiplus.h>
+
+#include "iup_class.h"
+#include "iup_register.h"
+#include "iup_object.h"
+#include "iup_attrib.h"
+#include "iup_str.h"
+#include "iup_drv.h"
+#include "iup_stdcontrols.h"
+#include "iup_assert.h"
+
+#include "iupPPlot.h"
+#include "iupPPlotInteraction.h"
+#include "iuppplot.hpp"
+
+
+#ifndef M_E
+#define M_E 2.71828182846
+#endif
+
+struct _IcontrolData
+{
+ iupCanvas canvas; /* from IupCanvas (must reserve it) */
+ PPainterIup* plt;
+};
+
+
+static int iPPlotGetCDFontStyle(const char* value);
+
+
+/* PPlot function pointer typedefs. */
+typedef int (*IFnC)(Ihandle*, cdCanvas*); /* postdraw_cb, predraw_cb */
+typedef int (*IFniiff)(Ihandle*, int, int, float, float); /* delete_cb */
+typedef int (*IFniiffi)(Ihandle*, int, int, float, float, int); /* select_cb */
+typedef int (*IFniiffff)(Ihandle*, int, int, float, float, float*, float*); /* edit_cb */
+
+
+/* callback: forward redraw request to PPlot object */
+static int iPPlotRedraw_CB(Ihandle* ih)
+{
+ ih->data->plt->Draw(0); /* full redraw only if nothing changed */
+ return IUP_DEFAULT;
+}
+
+/* callback: forward resize request to PPlot object */
+static int iPPlotResize_CB(Ihandle* ih)
+{
+ ih->data->plt->Resize();
+ return IUP_DEFAULT;
+}
+
+/* callback: forward mouse button events to PPlot object */
+static int iPPlotMouseButton_CB(Ihandle* ih, int btn, int stat, int x, int y, char* r)
+{
+ ih->data->plt->MouseButton(btn, stat, x, y, r);
+ return IUP_DEFAULT;
+}
+
+/* callback: forward mouse button events to PPlot object */
+static int iPPlotMouseMove_CB(Ihandle* ih, int x, int y)
+{
+ ih->data->plt->MouseMove(x, y);
+ return IUP_DEFAULT;
+}
+
+/* callback: forward keyboard events to PPlot object */
+static int iPPlotKeyPress_CB(Ihandle* ih, int c, int press)
+{
+ ih->data->plt->KeyPress(c, press);
+ return IUP_DEFAULT;
+}
+
+/* user level call: add dataset to plot */
+void IupPPlotBegin(Ihandle* ih, int strXdata)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ if (ih->iclass->nativetype != IUP_TYPECANVAS ||
+ !iupStrEqual(ih->iclass->name, "pplot"))
+ return;
+
+ PlotDataBase* inXData = (PlotDataBase*)iupAttribGet(ih, "_IUP_PPLOT_XDATA");
+ PlotDataBase* inYData = (PlotDataBase*)iupAttribGet(ih, "_IUP_PPLOT_YDATA");
+
+ if (inXData) delete inXData;
+ if (inYData) delete inYData;
+
+ if (strXdata)
+ inXData = (PlotDataBase*)(new StringPlotData());
+ else
+ inXData = (PlotDataBase*)(new PlotData());
+
+ inYData = (PlotDataBase*)new PlotData();
+
+ iupAttribSetStr(ih, "_IUP_PPLOT_XDATA", (char*)inXData);
+ iupAttribSetStr(ih, "_IUP_PPLOT_YDATA", (char*)inYData);
+ iupAttribSetStr(ih, "_IUP_PPLOT_STRXDATA", (char*)(strXdata? "1": "0"));
+}
+
+void IupPPlotAdd(Ihandle* ih, float x, float y)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ if (ih->iclass->nativetype != IUP_TYPECANVAS ||
+ !iupStrEqual(ih->iclass->name, "pplot"))
+ return;
+
+ PlotData* inXData = (PlotData*)iupAttribGet(ih, "_IUP_PPLOT_XDATA");
+ PlotData* inYData = (PlotData*)iupAttribGet(ih, "_IUP_PPLOT_YDATA");
+ int strXdata = iupAttribGetInt(ih, "_IUP_PPLOT_STRXDATA");
+
+ if (!inYData || !inXData || strXdata)
+ return;
+
+ inXData->push_back(x);
+ inYData->push_back(y);
+}
+
+void IupPPlotAddStr(Ihandle* ih, const char* x, float y)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ if (ih->iclass->nativetype != IUP_TYPECANVAS ||
+ !iupStrEqual(ih->iclass->name, "pplot"))
+ return;
+
+ StringPlotData *inXData = (StringPlotData*)iupAttribGet(ih, "_IUP_PPLOT_XDATA");
+ PlotData *inYData = (PlotData*)iupAttribGet(ih, "_IUP_PPLOT_YDATA");
+ int strXdata = iupAttribGetInt(ih, "_IUP_PPLOT_STRXDATA");
+
+ if (!inYData || !inXData || !strXdata)
+ return;
+
+ inXData->AddItem(x);
+ inYData->push_back(y);
+}
+
+void IupPPlotInsertStr(Ihandle* ih, int inIndex, int inSampleIndex, const char* inX, float inY)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ if (ih->iclass->nativetype != IUP_TYPECANVAS ||
+ !iupStrEqual(ih->iclass->name, "pplot"))
+ return;
+
+ PlotDataBase* theXDataBase = ih->data->plt->_plot.mPlotDataContainer.GetXData(inIndex);
+ PlotDataBase* theYDataBase = ih->data->plt->_plot.mPlotDataContainer.GetYData(inIndex);
+ StringPlotData *theXData = (StringPlotData*)theXDataBase;
+ PlotData *theYData = (PlotData*)theYDataBase;
+ if (!theYData || !theXData)
+ return;
+
+ theXData->InsertItem(inSampleIndex, inX);
+ theYData->insert(theYData->begin()+inSampleIndex, inY);
+}
+
+void IupPPlotInsert(Ihandle* ih, int inIndex, int inSampleIndex, float inX, float inY)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ if (ih->iclass->nativetype != IUP_TYPECANVAS ||
+ !iupStrEqual(ih->iclass->name, "pplot"))
+ return;
+
+ PlotDataBase* theXDataBase = ih->data->plt->_plot.mPlotDataContainer.GetXData(inIndex);
+ PlotDataBase* theYDataBase = ih->data->plt->_plot.mPlotDataContainer.GetYData(inIndex);
+ PlotData* theXData = (PlotData*)theXDataBase;
+ PlotData* theYData = (PlotData*)theYDataBase;
+ if (!theYData || !theXData)
+ return;
+
+ theXData->insert(theXData->begin()+inSampleIndex, inX);
+ theYData->insert(theYData->begin()+inSampleIndex, inY);
+}
+
+int IupPPlotEnd(Ihandle* ih)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return -1;
+
+ if (ih->iclass->nativetype != IUP_TYPECANVAS ||
+ !iupStrEqual(ih->iclass->name, "pplot"))
+ return -1;
+
+ PlotDataBase* inXData = (PlotDataBase*)iupAttribGet(ih, "_IUP_PPLOT_XDATA");
+ PlotDataBase* inYData = (PlotDataBase*)iupAttribGet(ih, "_IUP_PPLOT_YDATA");
+ if (!inYData || !inXData)
+ return -1;
+
+ /* add to plot */
+ ih->data->plt->_currentDataSetIndex = ih->data->plt->_plot.mPlotDataContainer.AddXYPlot(inXData, inYData);
+
+ LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ih->data->plt->_currentDataSetIndex);
+ legend->mStyle.mFontStyle = iPPlotGetCDFontStyle(IupGetAttribute(ih, "LEGENDFONTSTYLE"));
+ legend->mStyle.mFontSize = IupGetInt(ih, "LEGENDFONTSIZE");
+
+ iupAttribSetStr(ih, "_IUP_PPLOT_XDATA", NULL);
+ iupAttribSetStr(ih, "_IUP_PPLOT_YDATA", NULL);
+
+ ih->data->plt->_redraw = 1;
+ return ih->data->plt->_currentDataSetIndex;
+}
+
+void IupPPlotTransform(Ihandle* ih, float x, float y, int *ix, int *iy)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ if (ih->iclass->nativetype != IUP_TYPECANVAS ||
+ !iupStrEqual(ih->iclass->name, "pplot"))
+ return;
+
+ if (ix) *ix = ih->data->plt->_plot.Round(ih->data->plt->_plot.mXTrafo->Transform(x));
+ if (iy) *iy = ih->data->plt->_plot.Round(ih->data->plt->_plot.mYTrafo->Transform(y));
+}
+
+/* user level call: plot on the given device */
+void IupPPlotPaintTo(Ihandle* ih, void* _cnv)
+{
+ iupASSERT(iupObjectCheck(ih));
+ if (!iupObjectCheck(ih))
+ return;
+
+ if (ih->iclass->nativetype != IUP_TYPECANVAS ||
+ !iupStrEqual(ih->iclass->name, "pplot"))
+ return;
+
+ ih->data->plt->DrawTo((cdCanvas *)_cnv);
+}
+
+/* --------------------------------------------------------------------
+ class implementation
+ -------------------------------------------------------------------- */
+
+PostPainterCallbackIup::PostPainterCallbackIup (PPlot &inPPlot, Ihandle* inHandle):
+ _ih(inHandle)
+{
+ inPPlot.mPostDrawerList.push_back (this);
+}
+
+bool PostPainterCallbackIup::Draw(Painter &inPainter)
+{
+ IFnC cb = (IFnC)IupGetCallback(_ih, "POSTDRAW_CB");
+
+ if (cb)
+ {
+ PPainterIup* iupPainter = (PPainterIup*)(&inPainter);
+ cb(_ih, iupPainter->_cddbuffer);
+ }
+
+ return true;
+}
+
+PrePainterCallbackIup::PrePainterCallbackIup (PPlot &inPPlot, Ihandle* inHandle):
+ _ih(inHandle)
+{
+ inPPlot.mPreDrawerList.push_back (this);
+}
+
+bool PrePainterCallbackIup::Draw(Painter &inPainter)
+{
+ IFnC cb = (IFnC)IupGetCallback(_ih, "PREDRAW_CB");
+ if (cb)
+ {
+ PPainterIup* iupPainter = (PPainterIup*)(&inPainter);
+ cb(_ih, iupPainter->_cddbuffer);
+ }
+
+ return true;
+}
+
+bool PDeleteInteractionIup::DeleteNotify(int inIndex, int inSampleIndex, PlotDataBase* inXData, PlotDataBase* inYData)
+{
+ IFniiff cb = (IFniiff)IupGetCallback(_ih, "DELETE_CB");
+ if (cb)
+ {
+ if (inIndex == -1)
+ {
+ Icallback cbb = IupGetCallback(_ih, "DELETEBEGIN_CB");
+ if (cbb && cbb(_ih) == IUP_IGNORE)
+ return false;
+ }
+ else if (inIndex == -2)
+ {
+ Icallback cbb = IupGetCallback(_ih, "DELETEEND_CB");
+ if (cbb)
+ cbb(_ih);
+ }
+ else
+ {
+ float theX = inXData->GetValue(inSampleIndex);
+ float theY = inYData->GetValue(inSampleIndex);
+ int ret = cb(_ih, inIndex, inSampleIndex, theX, theY);
+ if (ret == IUP_IGNORE)
+ return false;
+ }
+ }
+
+ return true;
+}
+
+bool PSelectionInteractionIup::SelectNotify(int inIndex, int inSampleIndex, PlotDataBase* inXData, PlotDataBase* inYData, bool inSelect)
+{
+ IFniiffi cb = (IFniiffi)IupGetCallback(_ih, "SELECT_CB");
+ if (cb)
+ {
+ if (inIndex == -1)
+ {
+ Icallback cbb = IupGetCallback(_ih, "SELECTBEGIN_CB");
+ if (cbb && cbb(_ih) == IUP_IGNORE)
+ return false;
+ }
+ else if (inIndex == -2)
+ {
+ Icallback cbb = IupGetCallback(_ih, "SELECTEND_CB");
+ if (cbb)
+ cbb(_ih);
+ }
+ else
+ {
+ float theX = inXData->GetValue(inSampleIndex);
+ float theY = inYData->GetValue(inSampleIndex);
+ int ret = cb(_ih, inIndex, inSampleIndex, theX, theY, (int)inSelect);
+ if (ret == IUP_IGNORE)
+ return false;
+ }
+ }
+
+ return true;
+}
+
+bool PEditInteractionIup::Impl_HandleKeyEvent (const PKeyEvent &inEvent)
+{
+ if (inEvent.IsArrowDown () || inEvent.IsArrowUp () ||
+ inEvent.IsArrowLeft () || inEvent.IsArrowRight ())
+ return true;
+
+ return false;
+};
+
+bool PEditInteractionIup::Impl_Calculate (Painter &inPainter, PPlot& inPPlot)
+{
+ PlotDataContainer &theContainer = inPPlot.mPlotDataContainer;
+ long thePlotCount = theContainer.GetPlotCount();
+
+ if (!EditNotify(-1, 0, 0, 0, NULL, NULL))
+ return false;
+
+ for (long theI=0;theI<thePlotCount;theI++)
+ {
+ PlotDataBase* theXData = theContainer.GetXData (theI);
+ PlotDataBase* theYData = theContainer.GetYData (theI);
+ PlotDataSelection *thePlotDataSelection = theContainer.GetPlotDataSelection (theI);
+
+ if (mKeyEvent.IsArrowDown () || mKeyEvent.IsArrowUp () ||
+ mKeyEvent.IsArrowLeft () || mKeyEvent.IsArrowRight ())
+ HandleCursorKey (thePlotDataSelection, theXData, theYData, theI);
+ }
+
+ EditNotify(-2, 0, 0, 0, NULL, NULL);
+
+ return true;
+}
+
+void PEditInteractionIup::HandleCursorKey (const PlotDataSelection *inPlotDataSelection, PlotDataBase* inXData, PlotDataBase* inYData, int inIndex)
+{
+ float theXDelta = 0; // pixels
+ if (mKeyEvent.IsArrowLeft () || mKeyEvent.IsArrowRight ())
+ {
+ theXDelta = 1;
+
+ if (mKeyEvent.IsArrowLeft ())
+ theXDelta *= -1;
+
+ if (mKeyEvent.IsOnlyControlKeyDown ())
+ theXDelta *= 10;
+ }
+
+ float theYDelta = 0; // pixels
+ if (mKeyEvent.IsArrowDown () || mKeyEvent.IsArrowUp ())
+ {
+ theYDelta = 1;
+
+ if (mKeyEvent.IsArrowDown ())
+ theYDelta *= -1;
+
+ if (mKeyEvent.IsOnlyControlKeyDown ())
+ theYDelta *= 10;
+ }
+
+ for (int theI=0;theI<inYData->GetSize ();theI++)
+ {
+ if (inPlotDataSelection->IsSelected (theI))
+ {
+ float theX = inXData->GetValue(theI);
+ float newX = theX;
+
+ if (theXDelta)
+ {
+ float theXPixels = mPPlot.mXTrafo->Transform(theX);
+ theXPixels += theXDelta;
+ newX = mPPlot.mXTrafo->TransformBack(theXPixels);
+ }
+
+ float theY = inYData->GetValue(theI);
+ float newY = theY;
+ if (theYDelta)
+ {
+ float theYPixels = mPPlot.mYTrafo->Transform(theY);
+ theYPixels -= theYDelta; // in pixels Y is descending
+ newY = mPPlot.mYTrafo->TransformBack(theYPixels);
+ }
+
+ if (!EditNotify(inIndex, theI, theX, theY, &newX, &newY))
+ return;
+
+ if (inXData->IsString())
+ {
+ StringPlotData *theXData = (StringPlotData*)(inXData);
+ PlotData* theYData = (PlotData*)(inYData);
+ theXData->mRealPlotData[theI] = newX;
+ (*theYData)[theI] = newY;
+ }
+ else
+ {
+ PlotData* theXData = (PlotData*)(inXData);
+ PlotData* theYData = (PlotData*)(inYData);
+ (*theXData)[theI] = newX;
+ (*theYData)[theI] = newY;
+ }
+ }
+ }
+}
+
+bool PEditInteractionIup::EditNotify(int inIndex, int inSampleIndex, float inX, float inY, float *inNewX, float *inNewY)
+{
+ IFniiffff cb = (IFniiffff)IupGetCallback(_ih, "EDIT_CB");
+ if (cb)
+ {
+ if (inIndex == -1)
+ {
+ Icallback cbb = IupGetCallback(_ih, "EDITBEGIN_CB");
+ if (cbb && cbb(_ih) == IUP_IGNORE)
+ return false;
+ }
+ else if (inIndex == -2)
+ {
+ Icallback cbb = IupGetCallback(_ih, "EDITEND_CB");
+ if (cbb)
+ cbb(_ih);
+ }
+ else
+ {
+ int ret = cb(_ih, inIndex, inSampleIndex, inX, inY, inNewX, inNewY);
+ if (ret == IUP_IGNORE)
+ return false;
+ }
+ }
+
+ return true;
+}
+
+InteractionContainerIup::InteractionContainerIup(PPlot &inPPlot, Ihandle* inHandle):
+ mZoomInteraction (inPPlot),
+ mSelectionInteraction (inPPlot, inHandle),
+ mEditInteraction (inPPlot, inHandle),
+ mDeleteInteraction (inPPlot, inHandle),
+ mCrosshairInteraction (inPPlot),
+ mPostPainterCallback(inPPlot, inHandle),
+ mPrePainterCallback(inPPlot, inHandle)
+{
+ AddInteraction (mZoomInteraction);
+ AddInteraction (mSelectionInteraction);
+ AddInteraction (mEditInteraction);
+ AddInteraction (mDeleteInteraction);
+ AddInteraction (mCrosshairInteraction);
+}
+
+PPainterIup::PPainterIup(Ihandle *ih) :
+ Painter(),
+ _ih(ih),
+ _cdcanvas(NULL),
+ _cddbuffer(NULL),
+ _mouseDown(0),
+ _currentDataSetIndex(-1),
+ _redraw(1)
+{
+ _plot.mShowLegend = false; // change default to hidden
+ _plot.mPlotBackground.mTransparent = false; // always draw the background
+ _plot.mMargins.mLeft = 15;
+ _plot.mMargins.mBottom = 15;
+ _plot.mMargins.mTop = 30;
+ _plot.mMargins.mRight = 15;
+ _plot.mXAxisSetup.mTickInfo.mTickDivision = 5;
+ _plot.mYAxisSetup.mTickInfo.mTickDivision = 5;
+ _plot.mXAxisSetup.mTickInfo.mMinorTickScreenSize = 5;
+ _plot.mYAxisSetup.mTickInfo.mMinorTickScreenSize = 5;
+ _plot.mXAxisSetup.mTickInfo.mMajorTickScreenSize = 8;
+ _plot.mYAxisSetup.mTickInfo.mMajorTickScreenSize = 8;
+
+ _InteractionContainer = new InteractionContainerIup(_plot, _ih);
+
+} /* c-tor */
+
+
+PPainterIup::~PPainterIup()
+{
+ if (_cddbuffer != NULL)
+ cdKillCanvas(_cddbuffer);
+
+ delete _InteractionContainer;
+} /* d-tor */
+
+class MarkDataDrawer: public LineDataDrawer
+{
+ public:
+ MarkDataDrawer (bool inDrawLine)
+ {
+ mDrawLine = inDrawLine;
+ mDrawPoint = true;
+ mMode = inDrawLine ? "MARKLINE" : "MARK";
+ };
+ virtual bool DrawPoint (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const;
+};
+
+bool MarkDataDrawer::DrawPoint (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const
+{
+ PPainterIup* painter = (PPainterIup*)&inPainter;
+ cdCanvasMark(painter->_cddbuffer, inScreenX, cdCanvasInvertYAxis(painter->_cddbuffer, inScreenY));
+
+ return true;
+}
+
+static void RemoveSample(PPlot& inPPlot, int inIndex, int inSampleIndex)
+{
+ PlotDataBase* theXDataBase = inPPlot.mPlotDataContainer.GetXData(inIndex);
+ PlotDataBase* theYDataBase = inPPlot.mPlotDataContainer.GetYData(inIndex);
+
+ if (theXDataBase->IsString())
+ {
+ StringPlotData *theXData = (StringPlotData *)theXDataBase;
+ PlotData* theYData = (PlotData*)theYDataBase;
+ theXData->mRealPlotData.erase(theXData->mRealPlotData.begin()+inSampleIndex);
+ theXData->mStringPlotData.erase(theXData->mStringPlotData.begin()+inSampleIndex);
+ theYData->erase(theYData->begin()+inSampleIndex);
+ }
+ else
+ {
+ PlotData* theXData = (PlotData*)theXDataBase;
+ PlotData* theYData = (PlotData*)theYDataBase;
+ theXData->erase(theXData->begin()+inSampleIndex);
+ theYData->erase(theYData->begin()+inSampleIndex);
+ }
+}
+
+/* --------------------------------------------------------------------
+ CD Gets - size and style
+ -------------------------------------------------------------------- */
+
+static int iPPlotGetCDFontStyle(const char* value)
+{
+ if (!value)
+ return -1;
+ if (iupStrEqualNoCase(value, "PLAIN"))
+ return CD_PLAIN;
+ if (iupStrEqualNoCase(value, "BOLD"))
+ return CD_BOLD;
+ if (iupStrEqualNoCase(value, "ITALIC"))
+ return CD_ITALIC;
+ if (iupStrEqualNoCase(value, "BOLDITALIC"))
+ return CD_BOLD_ITALIC;
+ return -1;
+}
+
+static char* iPPlotGetPlotFontSize(int size)
+{
+ if (size)
+ {
+ char* buffer = iupStrGetMemory(50);
+ sprintf(buffer, "%d", size);
+ return buffer;
+ }
+ else
+ return NULL;
+}
+
+static char* iPPlotGetPlotFontStyle(int style)
+{
+ if (style >= CD_PLAIN && style <= CD_BOLD_ITALIC)
+ {
+ char* style_str[4] = {"PLAIN", "BOLD", "ITALIC", "BOLDITALIC"};
+ return style_str[style];
+ }
+ else
+ return NULL;
+}
+
+static char* iPPlotGetPlotPenStyle(int style)
+{
+ if (style >= CD_CONTINUOUS && style <= CD_DASH_DOT_DOT)
+ {
+ char* style_str[5] = {"CONTINUOUS", "DASHED", "DOTTED", "DASH_DOT", "DASH_DOT_DOT"};
+ return style_str[style];
+ }
+ else
+ return NULL;
+}
+
+static int iPPlotGetCDPenStyle(const char* value)
+{
+ if (!value || iupStrEqualNoCase(value, "CONTINUOUS"))
+ return CD_CONTINUOUS;
+ else if (iupStrEqualNoCase(value, "DASHED"))
+ return CD_DASHED;
+ else if (iupStrEqualNoCase(value, "DOTTED"))
+ return CD_DOTTED;
+ else if (iupStrEqualNoCase(value, "DASH_DOT"))
+ return CD_DASH_DOT;
+ else if (iupStrEqualNoCase(value, "DASH_DOT_DOT"))
+ return CD_DASH_DOT_DOT;
+ else
+ return CD_CONTINUOUS;
+}
+
+static char* iPPlotGetPlotMarkStyle(int style)
+{
+ if (style >= CD_PLUS && style <= CD_HOLLOW_DIAMOND)
+ {
+ char* style_str[9] = {"PLUS", "STAR", "CIRCLE", "X", "BOX", "DIAMOND", "HOLLOW_CIRCLE", "HOLLOW_BOX", "HOLLOW_DIAMOND"};
+ return style_str[style];
+ }
+ else
+ return NULL;
+}
+
+static int iPPlotGetCDMarkStyle(const char* value)
+{
+ if (!value || iupStrEqualNoCase(value, "PLUS"))
+ return CD_PLUS;
+ else if (iupStrEqualNoCase(value, "STAR"))
+ return CD_STAR;
+ else if (iupStrEqualNoCase(value, "CIRCLE"))
+ return CD_CIRCLE;
+ else if (iupStrEqualNoCase(value, "X"))
+ return CD_X;
+ else if (iupStrEqualNoCase(value, "BOX"))
+ return CD_BOX;
+ else if (iupStrEqualNoCase(value, "DIAMOND"))
+ return CD_DIAMOND;
+ else if (iupStrEqualNoCase(value, "HOLLOW_CIRCLE"))
+ return CD_HOLLOW_CIRCLE;
+ else if (iupStrEqualNoCase(value, "HOLLOW_BOX"))
+ return CD_HOLLOW_BOX;
+ else if (iupStrEqualNoCase(value, "HOLLOW_DIAMOND"))
+ return CD_HOLLOW_DIAMOND;
+ else
+ return CD_PLUS;
+}
+
+/*****************************************************************************/
+/***** SET AND GET ATTRIBUTES ************************************************/
+/*****************************************************************************/
+
+/* refresh plot window (write only) */
+static int iPPlotSetRedrawAttrib(Ihandle* ih, const char* value)
+{
+ (void)value; /* not used */
+ ih->data->plt->Draw(1); /* force a full redraw here */
+ return 0;
+}
+
+/* total number of datasets (read only) */
+static char* iPPlotGetCountAttrib(Ihandle* ih)
+{
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", ih->data->plt->_plot.mPlotDataContainer.GetPlotCount());
+ return att_buffer;
+}
+
+/* legend box visibility */
+static int iPPlotSetLegendShowAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ ih->data->plt->_plot.mShowLegend = true;
+ else
+ ih->data->plt->_plot.mShowLegend = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetLegendShowAttrib(Ihandle* ih)
+{
+ if (ih->data->plt->_plot.mShowLegend)
+ return "YES";
+ else
+ return "NO";
+}
+
+/* legend box visibility */
+static int iPPlotSetLegendPosAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "TOPLEFT"))
+ ih->data->plt->_plot.mLegendPos = PPLOT_TOPLEFT;
+ if (iupStrEqualNoCase(value, "BOTTOMLEFT"))
+ ih->data->plt->_plot.mLegendPos = PPLOT_BOTTOMLEFT;
+ if (iupStrEqualNoCase(value, "BOTTOMRIGHT"))
+ ih->data->plt->_plot.mLegendPos = PPLOT_BOTTOMRIGHT;
+ else
+ ih->data->plt->_plot.mLegendPos = PPLOT_TOPRIGHT;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetLegendPosAttrib(Ihandle* ih)
+{
+ char* legendpos_str[4] = {"TOPLEFT", "TOPRIGHT", "BOTTOMLEFT", "BOTTOMRIGHT"};
+
+ return legendpos_str[ih->data->plt->_plot.mLegendPos];
+}
+
+/* background color */
+static int iPPlotSetBGColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char rr, gg, bb;
+ if (iupStrToRGB(value, &rr, &gg, &bb))
+ {
+ ih->data->plt->_plot.mPlotBackground.mPlotRegionBackColor = PColor(rr, gg, bb);
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetBGColorAttrib(Ihandle* ih)
+{
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d %d %d",
+ ih->data->plt->_plot.mPlotBackground.mPlotRegionBackColor.mR,
+ ih->data->plt->_plot.mPlotBackground.mPlotRegionBackColor.mG,
+ ih->data->plt->_plot.mPlotBackground.mPlotRegionBackColor.mB);
+ return att_buffer;
+}
+
+
+/* title color */
+static int iPPlotSetFGColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char rr, gg, bb;
+ if (iupStrToRGB(value, &rr, &gg, &bb))
+ {
+ ih->data->plt->_plot.mPlotBackground.mTitleColor = PColor(rr, gg, bb);
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetFGColorAttrib(Ihandle* ih)
+{
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d %d %d",
+ ih->data->plt->_plot.mPlotBackground.mTitleColor.mR,
+ ih->data->plt->_plot.mPlotBackground.mTitleColor.mG,
+ ih->data->plt->_plot.mPlotBackground.mTitleColor.mB);
+ return att_buffer;
+}
+
+
+/* plot title */
+static int iPPlotSetTitleAttrib(Ihandle* ih, const char* value)
+{
+ if (value && value[0] != 0)
+ ih->data->plt->_plot.mPlotBackground.mTitle = value;
+ else
+ ih->data->plt->_plot.mPlotBackground.mTitle.resize(0);
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetTitleAttrib(Ihandle* ih)
+{
+ char* att_buffer = iupStrGetMemory(256);
+ strncpy(att_buffer, ih->data->plt->_plot.mPlotBackground.mTitle.c_str(), 256);
+ att_buffer[255]='\0';
+ return att_buffer;
+}
+
+
+/* plot title font size */
+static int iPPlotSetTitleFontSizeAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ ih->data->plt->_plot.mPlotBackground.mStyle.mFontSize = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetTitleFontSizeAttrib(Ihandle* ih)
+{
+ return iPPlotGetPlotFontSize(ih->data->plt->_plot.mPlotBackground.mStyle.mFontSize);
+}
+
+
+/* plot title font style */
+static int iPPlotSetTitleFontStyleAttrib(Ihandle* ih, const char* value)
+{
+ int style = iPPlotGetCDFontStyle(value);
+ if (style != -1)
+ {
+ ih->data->plt->_plot.mPlotBackground.mStyle.mFontStyle = style;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+/* legend font size */
+static int iPPlotSetLegendFontSizeAttrib(Ihandle* ih, const char* value)
+{
+ int ii, xx;
+ if (!iupStrToInt(value, &xx))
+ return 0;
+
+ for (ii = 0; ii < ih->data->plt->_plot.mPlotDataContainer.GetPlotCount(); ii++)
+ {
+ LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ii);
+ legend->mStyle.mFontSize = xx;
+ }
+
+ ih->data->plt->_redraw = 1;
+ return 1;
+}
+
+/* legend font style */
+static int iPPlotSetLegendFontStyleAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ int style = iPPlotGetCDFontStyle(value);
+ if (style == -1)
+ return 0;
+
+ for (ii = 0; ii < ih->data->plt->_plot.mPlotDataContainer.GetPlotCount(); ii++)
+ {
+ LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ii);
+ legend->mStyle.mFontStyle = style;
+ }
+
+ ih->data->plt->_redraw = 1;
+ return 1;
+}
+
+/* plot margins */
+static int iPPlotSetMarginLeftAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ ih->data->plt->_plot.mMargins.mLeft = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetMarginRightAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ ih->data->plt->_plot.mMargins.mRight = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetMarginTopAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ ih->data->plt->_plot.mMargins.mTop = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetMarginBottomAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ ih->data->plt->_plot.mMargins.mBottom = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetMarginLeftAttrib(Ihandle* ih)
+{
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", ih->data->plt->_plot.mMargins.mLeft);
+ return att_buffer;
+}
+
+static char* iPPlotGetMarginRightAttrib(Ihandle* ih)
+{
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", ih->data->plt->_plot.mMargins.mRight);
+ return att_buffer;
+}
+
+static char* iPPlotGetMarginTopAttrib(Ihandle* ih)
+{
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", ih->data->plt->_plot.mMargins.mTop);
+ return att_buffer;
+}
+
+static char* iPPlotGetMarginBottomAttrib(Ihandle* ih)
+{
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", ih->data->plt->_plot.mMargins.mBottom);
+ return att_buffer;
+}
+
+/* plot grid color */
+static int iPPlotSetGridColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char rr, gg, bb;
+ if (iupStrToRGB(value, &rr, &gg, &bb))
+ {
+ ih->data->plt->_plot.mGridInfo.mGridColor = PColor(rr, gg, bb);
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetGridColorAttrib(Ihandle* ih)
+{
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d %d %d",
+ ih->data->plt->_plot.mGridInfo.mGridColor.mR,
+ ih->data->plt->_plot.mGridInfo.mGridColor.mG,
+ ih->data->plt->_plot.mGridInfo.mGridColor.mB);
+ return att_buffer;
+}
+
+/* plot grid line style */
+static int iPPlotSetGridLineStyleAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->plt->_plot.mGridInfo.mStyle.mPenStyle = iPPlotGetCDPenStyle(value);
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetGridLineStyleAttrib(Ihandle* ih)
+{
+ return iPPlotGetPlotPenStyle(ih->data->plt->_plot.mGridInfo.mStyle.mPenStyle);
+}
+
+/* grid */
+static int iPPlotSetGridAttrib(Ihandle* ih, const char* value)
+{
+ if (iupStrEqualNoCase(value, "VERTICAL")) /* vertical grid - X axis */
+ {
+ ih->data->plt->_plot.mGridInfo.mXGridOn = true;
+ ih->data->plt->_plot.mGridInfo.mYGridOn = false;
+ }
+ else if (iupStrEqualNoCase(value, "HORIZONTAL")) /* horizontal grid - Y axis */
+ {
+ ih->data->plt->_plot.mGridInfo.mYGridOn = true;
+ ih->data->plt->_plot.mGridInfo.mXGridOn = false;
+ }
+ else if (iupStrEqualNoCase(value, "YES"))
+ {
+ ih->data->plt->_plot.mGridInfo.mXGridOn = true;
+ ih->data->plt->_plot.mGridInfo.mYGridOn = true;
+ }
+ else
+ {
+ ih->data->plt->_plot.mGridInfo.mYGridOn = false;
+ ih->data->plt->_plot.mGridInfo.mXGridOn = false;
+ }
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetGridAttrib(Ihandle* ih)
+{
+ if (ih->data->plt->_plot.mGridInfo.mXGridOn && ih->data->plt->_plot.mGridInfo.mYGridOn)
+ return "YES";
+ else if (ih->data->plt->_plot.mGridInfo.mYGridOn)
+ return "HORIZONTAL";
+ else if (ih->data->plt->_plot.mGridInfo.mXGridOn)
+ return "VERTICAL";
+ else
+ return "NO";
+}
+
+/* current dataset index */
+static int iPPlotSetCurrentAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ int imax = ih->data->plt->_plot.mPlotDataContainer.GetPlotCount();
+ ih->data->plt->_currentDataSetIndex = ( (ii>=0) && (ii<imax) ? ii : -1);
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetCurrentAttrib(Ihandle* ih)
+{
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", ih->data->plt->_currentDataSetIndex);
+ return att_buffer;
+}
+
+/* remove a dataset */
+static int iPPlotSetRemoveAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ ih->data->plt->_plot.mPlotDataContainer.RemoveElement(ii);
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+/* clear all datasets */
+static int iPPlotSetClearAttrib(Ihandle* ih, const char* value)
+{
+ ih->data->plt->_plot.mPlotDataContainer.ClearData();
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+/* =============================== */
+/* current plot dataset attributes */
+/* =============================== */
+
+/* current plot line style */
+static int iPPlotSetDSLineStyleAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return 0;
+
+ DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex);
+ drawer->mStyle.mPenStyle = iPPlotGetCDPenStyle(value);
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetDSLineStyleAttrib(Ihandle* ih)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return NULL;
+
+ DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex);
+
+ return iPPlotGetPlotPenStyle(drawer->mStyle.mPenStyle);
+}
+
+/* current plot line width */
+static int iPPlotSetDSLineWidthAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return 0;
+
+ if (iupStrToInt(value, &ii))
+ {
+ DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex);
+ drawer->mStyle.mPenWidth = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetDSLineWidthAttrib(Ihandle* ih)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return NULL;
+
+ DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex);
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", drawer->mStyle.mPenWidth);
+ return att_buffer;
+}
+
+/* current plot mark style */
+static int iPPlotSetDSMarkStyleAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return 0;
+
+ DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex);
+ drawer->mStyle.mMarkStyle = iPPlotGetCDMarkStyle(value);
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetDSMarkStyleAttrib(Ihandle* ih)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return NULL;
+
+ DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex);
+
+ return iPPlotGetPlotMarkStyle(drawer->mStyle.mMarkStyle);
+}
+
+/* current plot mark size */
+static int iPPlotSetDSMarkSizeAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return 0;
+
+ if (iupStrToInt(value, &ii))
+ {
+ DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex);
+ drawer->mStyle.mMarkSize = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetDSMarkSizeAttrib(Ihandle* ih)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return NULL;
+
+ DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex);
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", drawer->mStyle.mMarkSize);
+ return att_buffer;
+}
+
+/* current dataset legend */
+static int iPPlotSetDSLegendAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return 0;
+
+ LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ih->data->plt->_currentDataSetIndex);
+
+ if (value)
+ legend->mName = value;
+ else
+ legend->mName.resize(0);
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetDSLegendAttrib(Ihandle* ih)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return NULL;
+
+ LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ih->data->plt->_currentDataSetIndex);
+ char* att_buffer = iupStrGetMemory(256);
+ strncpy(att_buffer, legend->mName.c_str(), 255);
+ att_buffer[255]='\0';
+ return att_buffer;
+}
+
+/* current dataset line and legend color */
+static int iPPlotSetDSColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char rr, gg, bb;
+
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return 0;
+
+ if (iupStrToRGB(value, &rr, &gg, &bb))
+ {
+ LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ih->data->plt->_currentDataSetIndex);
+ legend->mColor = PColor(rr, gg, bb);
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetDSColorAttrib(Ihandle* ih)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return NULL;
+
+ LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ih->data->plt->_currentDataSetIndex);
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d %d %d", legend->mColor.mR, legend->mColor.mG, legend->mColor.mB);
+ return att_buffer;
+}
+
+/* show values */
+static int iPPlotSetDSShowValuesAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return 0;
+
+ DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex);
+
+ if (iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ drawer->mShowValues = true;
+ else
+ drawer->mShowValues = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetDSShowValuesAttrib(Ihandle* ih)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return NULL;
+
+ DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex);
+ if (drawer->mShowValues)
+ return "YES";
+ else
+ return "NO";
+}
+
+/* current dataset drawing mode */
+static int iPPlotSetDSModeAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return 0;
+
+ DataDrawerBase *theDataDrawer = NULL;
+ ih->data->plt->_plot.mXAxisSetup.mDiscrete = false;
+
+ if(iupStrEqualNoCase(value, "BAR"))
+ {
+ theDataDrawer = new BarDataDrawer();
+ ih->data->plt->_plot.mXAxisSetup.mDiscrete = true;
+ }
+ else if(iupStrEqualNoCase(value, "MARK"))
+ theDataDrawer = new MarkDataDrawer(0);
+ else if(iupStrEqualNoCase(value, "MARKLINE"))
+ theDataDrawer = new MarkDataDrawer(1);
+ else /* LINE */
+ theDataDrawer = new LineDataDrawer();
+
+ ih->data->plt->_plot.mPlotDataContainer.SetDataDrawer(ih->data->plt->_currentDataSetIndex, theDataDrawer);
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetDSModeAttrib(Ihandle* ih)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return NULL;
+
+ DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex);
+
+ return (char*)drawer->mMode;
+}
+
+/* allows selection and editing */
+static int iPPlotSetDSEditAttrib(Ihandle* ih, const char* value)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return 0;
+
+ PlotDataSelection* dataselect = ih->data->plt->_plot.mPlotDataContainer.GetPlotDataSelection(ih->data->plt->_currentDataSetIndex);
+
+ if (iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ dataselect->resize(ih->data->plt->_plot.mPlotDataContainer.GetConstYData(ih->data->plt->_currentDataSetIndex)->GetSize());
+ else
+ dataselect->clear();
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetDSEditAttrib(Ihandle* ih)
+{
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return NULL;
+
+ PlotDataSelection* dataselect = ih->data->plt->_plot.mPlotDataContainer.GetPlotDataSelection(ih->data->plt->_currentDataSetIndex);
+ if (dataselect->empty())
+ return "NO";
+ else
+ return "YES";
+}
+
+/* remove a sample */
+static int iPPlotSetDSRemoveAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+
+ if (ih->data->plt->_currentDataSetIndex < 0 ||
+ ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount())
+ return 0;
+
+ if (iupStrToInt(value, &ii))
+ {
+ RemoveSample(ih->data->plt->_plot, ih->data->plt->_currentDataSetIndex, ii);
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+/* ========== */
+/* axis props */
+/* ========== */
+
+/* ========== */
+/* axis props */
+/* ========== */
+
+/* axis title */
+static int iPPlotSetAXSXLabelAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if (value)
+ axis->mLabel = value;
+ else
+ axis->mLabel = "";
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static int iPPlotSetAXSYLabelAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if (value)
+ axis->mLabel = value;
+ else
+ axis->mLabel = "";
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetAXSXLabelAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ char* att_buffer = iupStrGetMemory(256);
+ strncpy(att_buffer, axis->mLabel.c_str(), 255);
+ att_buffer[255]='\0';
+ return att_buffer;
+}
+
+static char* iPPlotGetAXSYLabelAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ char* att_buffer = iupStrGetMemory(256);
+ strncpy(att_buffer, axis->mLabel.c_str(), 255);
+ att_buffer[255]='\0';
+ return att_buffer;
+}
+
+/* axis title position */
+static int iPPlotSetAXSXLabelCenteredAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if (iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mLabelCentered = true;
+ else
+ axis->mLabelCentered = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static int iPPlotSetAXSYLabelCenteredAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if (iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mLabelCentered = true;
+ else
+ axis->mLabelCentered = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetAXSXLabelCenteredAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if (axis->mLabelCentered)
+ return "YES";
+ else
+ return "NO";
+}
+
+static char* iPPlotGetAXSYLabelCenteredAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if (axis->mLabelCentered)
+ return "YES";
+ else
+ return "NO";
+}
+
+/* axis, ticks and label color */
+static int iPPlotSetAXSXColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char rr, gg, bb;
+ if (iupStrToRGB(value, &rr, &gg, &bb))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ axis->mColor = PColor(rr, gg, bb);
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetAXSYColorAttrib(Ihandle* ih, const char* value)
+{
+ unsigned char rr, gg, bb;
+ if (iupStrToRGB(value, &rr, &gg, &bb))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ axis->mColor = PColor(rr, gg, bb);
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetAXSXColorAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d %d %d",
+ axis->mColor.mR,
+ axis->mColor.mG,
+ axis->mColor.mB);
+ return att_buffer;
+}
+
+static char* iPPlotGetAXSYColorAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d %d %d",
+ axis->mColor.mR,
+ axis->mColor.mG,
+ axis->mColor.mB);
+ return att_buffer;
+}
+
+/* autoscaling */
+static int iPPlotSetAXSXAutoMinAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mAutoScaleMin = true;
+ else
+ axis->mAutoScaleMin = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static int iPPlotSetAXSYAutoMinAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mAutoScaleMin = true;
+ else
+ axis->mAutoScaleMin = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetAXSXAutoMinAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if (axis->mAutoScaleMin)
+ return "YES";
+ else
+ return "NO";
+}
+
+static char* iPPlotGetAXSYAutoMinAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if (axis->mAutoScaleMin)
+ return "YES";
+ else
+ return "NO";
+}
+
+/* autoscaling */
+static int iPPlotSetAXSXAutoMaxAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mAutoScaleMax = true;
+ else
+ axis->mAutoScaleMax = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static int iPPlotSetAXSYAutoMaxAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mAutoScaleMax = true;
+ else
+ axis->mAutoScaleMax = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetAXSXAutoMaxAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if (axis->mAutoScaleMax)
+ return "YES";
+ else
+ return "NO";
+}
+
+static char* iPPlotGetAXSYAutoMaxAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if (axis->mAutoScaleMax)
+ return "YES";
+ else
+ return "NO";
+}
+
+/* min visible val */
+static int iPPlotSetAXSXMinAttrib(Ihandle* ih, const char* value)
+{
+ float xx;
+ if (iupStrToFloat(value, &xx))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ axis->mMin = xx;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetAXSYMinAttrib(Ihandle* ih, const char* value)
+{
+ float xx;
+ if (iupStrToFloat(value, &xx))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ axis->mMin = xx;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetAXSXMinAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%g", axis->mMin);
+ return att_buffer;
+}
+
+static char* iPPlotGetAXSYMinAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%g", axis->mMin);
+ return att_buffer;
+}
+
+/* max visible val */
+static int iPPlotSetAXSXMaxAttrib(Ihandle* ih, const char* value)
+{
+ float xx;
+ if (iupStrToFloat(value, &xx))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ axis->mMax = xx;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetAXSYMaxAttrib(Ihandle* ih, const char* value)
+{
+ float xx;
+ if (iupStrToFloat(value, &xx))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ axis->mMax = xx;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetAXSXMaxAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%g", axis->mMax);
+ return att_buffer;
+}
+
+static char* iPPlotGetAXSYMaxAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%g", axis->mMax);
+ return att_buffer;
+}
+
+/* values from left/top to right/bottom */
+static int iPPlotSetAXSXReverseAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mAscending = false; // inverted
+ else
+ axis->mAscending = true;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static int iPPlotSetAXSYReverseAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mAscending = false; // inverted
+ else
+ axis->mAscending = true;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetAXSXReverseAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if (axis->mAscending)
+ return "NO"; /* inverted */
+ else
+ return "YES";
+}
+
+static char* iPPlotGetAXSYReverseAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if (axis->mAscending)
+ return "NO"; /* inverted */
+ else
+ return "YES";
+}
+
+/* axis mode */
+static int iPPlotSetAXSXCrossOriginAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mCrossOrigin = true;
+ else
+ axis->mCrossOrigin = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static int iPPlotSetAXSYCrossOriginAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mCrossOrigin = true;
+ else
+ axis->mCrossOrigin = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetAXSXCrossOriginAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if (axis->mCrossOrigin)
+ return "YES";
+ else
+ return "NO";
+}
+
+static char* iPPlotGetAXSYCrossOriginAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if (axis->mCrossOrigin)
+ return "YES";
+ else
+ return "NO";
+}
+
+/* log/lin scale */
+static int iPPlotSetAXSXScaleAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if(iupStrEqualNoCase(value, "LIN"))
+ {
+ axis->mLogScale = false;
+ }
+ else if(iupStrEqualNoCase(value, "LOG10"))
+ {
+ axis->mLogScale = true;
+ axis->mLogBase = 10.0;
+ }
+ else if(iupStrEqualNoCase(value, "LOG2"))
+ {
+ axis->mLogScale = true;
+ axis->mLogBase = 2.0;
+ }
+ else
+ {
+ axis->mLogScale = true;
+ axis->mLogBase = (float)M_E;
+ }
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static int iPPlotSetAXSYScaleAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if(iupStrEqualNoCase(value, "LIN"))
+ {
+ axis->mLogScale = false;
+ }
+ else if(iupStrEqualNoCase(value, "LOG10"))
+ {
+ axis->mLogScale = true;
+ axis->mLogBase = 10.0;
+ }
+ else if(iupStrEqualNoCase(value, "LOG2"))
+ {
+ axis->mLogScale = true;
+ axis->mLogBase = 2.0;
+ }
+ else
+ {
+ axis->mLogScale = true;
+ axis->mLogBase = (float)M_E;
+ }
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetAXSXScaleAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+
+ if (axis->mLogScale)
+ {
+ if (axis->mLogBase == 10.0)
+ strcpy(att_buffer, "LOG10");
+ else if (axis->mLogBase == 2.0)
+ strcpy(att_buffer, "LOG2");
+ else
+ strcpy(att_buffer, "LOGN");
+ }
+ else
+ strcpy(att_buffer, "LIN");
+
+ return att_buffer;
+}
+
+static char* iPPlotGetAXSYScaleAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+
+ if (axis->mLogScale)
+ {
+ if (axis->mLogBase == 10.0)
+ strcpy(att_buffer, "LOG10");
+ else if (axis->mLogBase == 2.0)
+ strcpy(att_buffer, "LOG2");
+ else
+ strcpy(att_buffer, "LOGN");
+ }
+ else
+ strcpy(att_buffer, "LIN");
+
+ return att_buffer;
+}
+
+/* axis label font size */
+static int iPPlotSetAXSXFontSizeAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ axis->mStyle.mFontSize = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetAXSYFontSizeAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ axis->mStyle.mFontSize = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetAXSXFontSizeAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ return iPPlotGetPlotFontSize(axis->mStyle.mFontSize);
+}
+
+static char* iPPlotGetAXSYFontSizeAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ return iPPlotGetPlotFontSize(axis->mStyle.mFontSize);
+}
+
+/* axis label font style */
+static int iPPlotSetAXSXFontStyleAttrib(Ihandle* ih, const char* value)
+{
+ int style = iPPlotGetCDFontStyle(value);
+ if (style != -1)
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ axis->mStyle.mFontStyle = style;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetAXSYFontStyleAttrib(Ihandle* ih, const char* value)
+{
+ int style = iPPlotGetCDFontStyle(value);
+ if (style != -1)
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ axis->mStyle.mFontStyle = style;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetAXSXFontStyleAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ return iPPlotGetPlotFontStyle(axis->mStyle.mFontStyle);
+}
+
+static char* iPPlotGetAXSYFontStyleAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ return iPPlotGetPlotFontStyle(axis->mStyle.mFontStyle);
+}
+
+/* automatic tick size */
+static int iPPlotSetAXSXAutoTickSizeAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mTickInfo.mAutoTickSize = true;
+ else
+ axis->mTickInfo.mAutoTickSize = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static int iPPlotSetAXSYAutoTickSizeAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mTickInfo.mAutoTickSize = true;
+ else
+ axis->mTickInfo.mAutoTickSize = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetAXSXAutoTickSizeAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if (axis->mTickInfo.mAutoTickSize)
+ return "YES";
+ else
+ return "NO";
+}
+
+static char* iPPlotGetAXSYAutoTickSizeAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if (axis->mTickInfo.mAutoTickSize)
+ return "YES";
+ else
+ return "NO";
+}
+
+/* size of ticks (in pixels) */
+static int iPPlotSetAXSXTickSizeAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ axis->mTickInfo.mMinorTickScreenSize = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetAXSYTickSizeAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ axis->mTickInfo.mMinorTickScreenSize = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetAXSXTickSizeAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", axis->mTickInfo.mMinorTickScreenSize);
+ return att_buffer;
+}
+
+static char* iPPlotGetAXSYTickSizeAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", axis->mTickInfo.mMinorTickScreenSize);
+ return att_buffer;
+}
+
+/* size of major ticks (in pixels) */
+static int iPPlotSetAXSXTickMajorSizeAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ axis->mTickInfo.mMajorTickScreenSize = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetAXSYTickMajorSizeAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ axis->mTickInfo.mMajorTickScreenSize = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetAXSXTickMajorSizeAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", axis->mTickInfo.mMajorTickScreenSize);
+ return att_buffer;
+}
+
+static char* iPPlotGetAXSYTickMajorSizeAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", axis->mTickInfo.mMajorTickScreenSize);
+ return att_buffer;
+}
+
+/* axis ticks font size */
+static int iPPlotSetAXSXTickFontSizeAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ axis->mTickInfo.mStyle.mFontSize = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetAXSYTickFontSizeAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ axis->mTickInfo.mStyle.mFontSize = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetAXSXTickFontSizeAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ return iPPlotGetPlotFontSize(axis->mTickInfo.mStyle.mFontSize);
+}
+
+static char* iPPlotGetAXSYTickFontSizeAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ return iPPlotGetPlotFontSize(axis->mTickInfo.mStyle.mFontSize);
+}
+
+/* axis ticks number font style */
+static int iPPlotSetAXSXTickFontStyleAttrib(Ihandle* ih, const char* value)
+{
+ int style = iPPlotGetCDFontStyle(value);
+ if (style != -1)
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ axis->mTickInfo.mStyle.mFontStyle = style;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetAXSYTickFontStyleAttrib(Ihandle* ih, const char* value)
+{
+ int style = iPPlotGetCDFontStyle(value);
+ if (style != -1)
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ axis->mTickInfo.mStyle.mFontStyle = style;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetAXSXTickFontStyleAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ return iPPlotGetPlotFontSize(axis->mTickInfo.mStyle.mFontStyle);
+}
+
+static char* iPPlotGetAXSYTickFontStyleAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ return iPPlotGetPlotFontSize(axis->mTickInfo.mStyle.mFontStyle);
+}
+
+/* axis ticks number format */
+static int iPPlotSetAXSXTickFormatAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if (value && value[0]!=0)
+ axis->mTickInfo.mFormatString = value;
+ else
+ axis->mTickInfo.mFormatString = "%.0f";
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static int iPPlotSetAXSYTickFormatAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if (value && value[0]!=0)
+ axis->mTickInfo.mFormatString = value;
+ else
+ axis->mTickInfo.mFormatString = "%.0f";
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetAXSXTickFormatAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ char* att_buffer = iupStrGetMemory(256);
+ strncpy(att_buffer, axis->mTickInfo.mFormatString.c_str(), 255);
+ att_buffer[255]='\0';
+ return att_buffer;
+}
+
+static char* iPPlotGetAXSYTickFormatAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ char* att_buffer = iupStrGetMemory(256);
+ strncpy(att_buffer, axis->mTickInfo.mFormatString.c_str(), 255);
+ att_buffer[255]='\0';
+ return att_buffer;
+}
+
+/* axis ticks */
+static int iPPlotSetAXSXTickAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mTickInfo.mTicksOn = true;
+ else
+ axis->mTickInfo.mTicksOn = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static int iPPlotSetAXSYTickAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mTickInfo.mTicksOn = true;
+ else
+ axis->mTickInfo.mTicksOn = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetAXSXTickAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if (axis->mTickInfo.mTicksOn)
+ return "YES";
+ else
+ return "NO";
+}
+
+static char* iPPlotGetAXSYTickAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if (axis->mTickInfo.mTicksOn)
+ return "YES";
+ else
+ return "NO";
+}
+
+/* major tick spacing */
+static int iPPlotSetAXSXTickMajorSpanAttrib(Ihandle* ih, const char* value)
+{
+ float xx;
+ if (iupStrToFloat(value, &xx))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ axis->mTickInfo.mMajorTickSpan = xx;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetAXSYTickMajorSpanAttrib(Ihandle* ih, const char* value)
+{
+ float xx;
+ if (iupStrToFloat(value, &xx))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ axis->mTickInfo.mMajorTickSpan = xx;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetAXSXTickMajorSpanAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%g", axis->mTickInfo.mMajorTickSpan);
+ return att_buffer;
+}
+
+static char* iPPlotGetAXSYTickMajorSpanAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%g", axis->mTickInfo.mMajorTickSpan);
+ return att_buffer;
+}
+
+/* number of ticks between major ticks */
+static int iPPlotSetAXSXTickDivisionAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ axis->mTickInfo.mTickDivision = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static int iPPlotSetAXSYTickDivisionAttrib(Ihandle* ih, const char* value)
+{
+ int ii;
+ if (iupStrToInt(value, &ii))
+ {
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ axis->mTickInfo.mTickDivision = ii;
+ ih->data->plt->_redraw = 1;
+ }
+ return 0;
+}
+
+static char* iPPlotGetAXSXTickDivisionAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", axis->mTickInfo.mTickDivision);
+ return att_buffer;
+}
+
+static char* iPPlotGetAXSYTickDivisionAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+ char* att_buffer = iupStrGetMemory(30);
+ sprintf(att_buffer, "%d", axis->mTickInfo.mTickDivision);
+ return att_buffer;
+}
+
+/* auto tick spacing */
+static int iPPlotSetAXSXAutoTickAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mTickInfo.mAutoTick = true;
+ else
+ axis->mTickInfo.mAutoTick = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static int iPPlotSetAXSYAutoTickAttrib(Ihandle* ih, const char* value)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON"))
+ axis->mTickInfo.mAutoTick = true;
+ else
+ axis->mTickInfo.mAutoTick = false;
+
+ ih->data->plt->_redraw = 1;
+ return 0;
+}
+
+static char* iPPlotGetAXSXAutoTickAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup;
+
+ if (axis->mTickInfo.mAutoTick)
+ return "YES";
+ else
+ return "NO";
+}
+
+static char* iPPlotGetAXSYAutoTickAttrib(Ihandle* ih)
+{
+ AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup;
+
+ if (axis->mTickInfo.mAutoTick)
+ return "YES";
+ else
+ return "NO";
+}
+
+/* MouseButton */
+void PPainterIup::MouseButton(int btn, int stat, int x, int y, char *r)
+{
+ PMouseEvent theEvent;
+ int theModifierKeys = 0;
+
+ theEvent.mX = x;
+ theEvent.mY = y;
+
+ if(btn == IUP_BUTTON1)
+ {
+ theEvent.mType = ( stat!=0 ? (PMouseEvent::kDown) : (PMouseEvent::kUp) );
+ _mouseDown = ( stat!=0 ? 1 : 0 );
+ }
+ else return;
+
+ _mouse_ALT = 0;
+ _mouse_SHIFT = 0;
+ _mouse_CTRL = 0;
+
+ if (iup_isalt(r)) /* signal Alt */
+ {
+ theModifierKeys = (theModifierKeys | PMouseEvent::kAlt);
+ _mouse_ALT = 1;
+ }
+ if (iup_iscontrol(r)) /* signal Ctrl */
+ {
+ theModifierKeys = (theModifierKeys | PMouseEvent::kControl);
+ _mouse_SHIFT = 1;
+ }
+ if (iup_isshift(r)) /* signal Shift */
+ {
+ theModifierKeys = (theModifierKeys | PMouseEvent::kShift);
+ _mouse_CTRL = 1;
+ }
+ theEvent.SetModifierKeys (theModifierKeys);
+
+ if( _InteractionContainer->HandleMouseEvent(theEvent))
+ {
+ this->Draw(1);
+ }
+ else
+ {
+ /* ignore the event */
+ }
+}
+
+/* MouseMove */
+void PPainterIup::MouseMove(int x, int y)
+{
+ PMouseEvent theEvent;
+ int theModifierKeys = 0;
+
+ if(!_mouseDown ) return;
+
+ theEvent.mX = x;
+ theEvent.mY = y;
+
+ theEvent.mType = PMouseEvent::kMove;
+ if(_mouse_ALT) /* signal Alt */
+ {
+ theModifierKeys = (theModifierKeys | PMouseEvent::kAlt);
+ }
+ if(_mouse_SHIFT) /* signal Shift */
+ {
+ theModifierKeys = (theModifierKeys | PMouseEvent::kControl);
+ }
+ if(_mouse_CTRL) /* signal Ctrl */
+ {
+ theModifierKeys = (theModifierKeys | PMouseEvent::kShift);
+ }
+ theEvent.SetModifierKeys (theModifierKeys);
+
+ if(_InteractionContainer->HandleMouseEvent(theEvent))
+ {
+ this->Draw(1);
+ }
+ else
+ {
+ /* ignore the event */
+ }
+}
+
+/* KeyPress */
+void PPainterIup::KeyPress(int c, int press)
+{
+ int theModifierKeys = 0;
+ int theRepeatCount = 0;
+ PKeyEvent::EKey theKeyCode = PKeyEvent::kNone;
+ char theChar = 0;
+
+ if(!press) return;
+
+ switch(c)
+ {
+ case K_cX: /* CTRL + X */
+ theModifierKeys = PMouseEvent::kControl;
+ theKeyCode = PKeyEvent::kChar;
+ theChar = 'x';
+ break;
+ case K_cY: /* CTRL + Y */
+ theModifierKeys = PMouseEvent::kControl;
+ theKeyCode = PKeyEvent::kChar;
+ theChar = 'y';
+ break;
+ case K_cR: /* CTRL + R */
+ theModifierKeys = PMouseEvent::kControl;
+ theKeyCode = PKeyEvent::kChar;
+ theChar = 'r';
+ break;
+ case K_cUP: /* CTRL + Arrow */
+ theModifierKeys = PMouseEvent::kControl;
+ case K_UP: /* Arrow */
+ theKeyCode = PKeyEvent::kArrowUp;
+ break;
+ case K_cDOWN: /* CTRL + Arrow */
+ theModifierKeys = PMouseEvent::kControl;
+ case K_DOWN: /* Arrow */
+ theKeyCode = PKeyEvent::kArrowDown;
+ break;
+ case K_cLEFT: /* CTRL + Arrow */
+ theModifierKeys = PMouseEvent::kControl;
+ case K_LEFT: /* Arrow */
+ theKeyCode = PKeyEvent::kArrowLeft;
+ break;
+ case K_cRIGHT: /* CTRL + Arrow */
+ theModifierKeys = PMouseEvent::kControl;
+ case K_RIGHT: /* Arrow */
+ theKeyCode = PKeyEvent::kArrowRight;
+ break;
+ case K_cDEL: /* CTRL + Arrow */
+ theModifierKeys = PMouseEvent::kControl;
+ case K_DEL: /* Arrow */
+ theKeyCode = PKeyEvent::kDelete;
+ break;
+ }
+
+ PKeyEvent theEvent (theKeyCode, theRepeatCount, theModifierKeys, theChar);
+
+ if(_InteractionContainer->HandleKeyEvent(theEvent))
+ {
+ this->Draw(1);
+ }
+ else
+ {
+ /* ignore the event */
+ }
+}
+
+/* Draw */
+void PPainterIup::Draw(int force)
+{
+ if (!_cddbuffer)
+ return;
+
+ cdCanvasActivate(_cddbuffer);
+
+ if (force || _redraw)
+ {
+ cdCanvasClear(_cddbuffer);
+ _plot.Draw(*this);
+ _redraw = 0;
+ }
+
+ cdCanvasFlush(_cddbuffer);
+}
+
+/* Resize */
+void PPainterIup::Resize()
+{
+ if (!_cddbuffer)
+ {
+ /* update canvas size */
+ cdCanvasActivate(_cdcanvas);
+
+ /* this can fail if canvas size is zero */
+ if (IupGetInt(_ih, "USE_IMAGERGB"))
+ _cddbuffer = cdCreateCanvas(CD_DBUFFERRGB, _cdcanvas);
+ else
+ _cddbuffer = cdCreateCanvas(CD_DBUFFER, _cdcanvas);
+ }
+
+ if (!_cddbuffer)
+ return;
+
+ /* update canvas size */
+ cdCanvasActivate(_cddbuffer);
+
+ _redraw = 1;
+
+ return;
+}
+
+/* send plot to some other device */
+void PPainterIup::DrawTo(cdCanvas *usrCnv)
+{
+ cdCanvas *old_cddbuffer = _cddbuffer;
+ cdCanvas *old_cdcanvas = _cdcanvas;
+
+ _cdcanvas = _cddbuffer = usrCnv;
+
+ if(!_cddbuffer)
+ return;
+
+ Draw(1);
+
+ _cddbuffer = old_cddbuffer;
+ _cdcanvas = old_cdcanvas;
+}
+
+void PPainterIup::FillArrow(int inX1, int inY1, int inX2, int inY2, int inX3, int inY3)
+{
+ if (!_cddbuffer)
+ return;
+
+ cdCanvasBegin(_cddbuffer, CD_FILL);
+ cdCanvasVertex(_cddbuffer, inX1, cdCanvasInvertYAxis(_cddbuffer, inY1));
+ cdCanvasVertex(_cddbuffer, inX2, cdCanvasInvertYAxis(_cddbuffer, inY2));
+ cdCanvasVertex(_cddbuffer, inX3, cdCanvasInvertYAxis(_cddbuffer, inY3));
+ cdCanvasEnd(_cddbuffer);
+}
+
+/* DrawLine */
+void PPainterIup::DrawLine(float inX1, float inY1, float inX2, float inY2)
+{
+ if (!_cddbuffer)
+ return;
+
+ cdfCanvasLine(_cddbuffer, inX1, cdfCanvasInvertYAxis(_cddbuffer, inY1),
+ inX2, cdfCanvasInvertYAxis(_cddbuffer, inY2));
+}
+
+/* FillRect */
+void PPainterIup::FillRect(int inX, int inY, int inW, int inH)
+{
+ if (!_cddbuffer)
+ return;
+
+ cdCanvasBox(_cddbuffer, inX, inX+inW,
+ cdCanvasInvertYAxis(_cddbuffer, inY),
+ cdCanvasInvertYAxis(_cddbuffer, inY + inH - 1));
+}
+
+/* InvertRect */
+void PPainterIup::InvertRect(int inX, int inY, int inW, int inH)
+{
+ long cprev;
+
+ if (!_cddbuffer)
+ return;
+
+ cdCanvasWriteMode(_cddbuffer, CD_XOR);
+ cprev = cdCanvasForeground(_cddbuffer, CD_WHITE);
+ cdCanvasRect(_cddbuffer, inX, inX + inW - 1,
+ cdCanvasInvertYAxis(_cddbuffer, inY),
+ cdCanvasInvertYAxis(_cddbuffer, inY + inH - 1));
+ cdCanvasWriteMode(_cddbuffer, CD_REPLACE);
+ cdCanvasForeground(_cddbuffer, cprev);
+}
+
+/* SetClipRect */
+void PPainterIup::SetClipRect(int inX, int inY, int inW, int inH)
+{
+ if (!_cddbuffer)
+ return;
+
+ cdCanvasClipArea(_cddbuffer, inX, inX + inW - 1,
+ cdCanvasInvertYAxis(_cddbuffer, inY),
+ cdCanvasInvertYAxis(_cddbuffer, inY + inH - 1));
+ cdCanvasClip(_cddbuffer, CD_CLIPAREA);
+}
+
+/* GetWidth */
+long PPainterIup::GetWidth() const
+{
+ int iret;
+
+ if (!_cddbuffer)
+ return IUP_DEFAULT;
+
+ cdCanvasGetSize(_cddbuffer, &iret, NULL, NULL, NULL);
+
+ return (long)iret;
+}
+
+/* GetHeight */
+long PPainterIup::GetHeight() const
+{
+ int iret;
+
+ if (!_cddbuffer)
+ return IUP_NOERROR;
+
+ cdCanvasGetSize(_cddbuffer, NULL, &iret, NULL, NULL);
+
+ return (long)iret;
+}
+
+/* SetLineColor */
+void PPainterIup::SetLineColor(int inR, int inG, int inB)
+{
+ if (!_cddbuffer)
+ return;
+
+ cdCanvasForeground(_cddbuffer, cdEncodeColor((unsigned char)inR,
+ (unsigned char)inG,
+ (unsigned char)inB));
+}
+
+/* SetFillColor */
+void PPainterIup::SetFillColor(int inR, int inG, int inB)
+{
+ if (!_cddbuffer)
+ return;
+
+ cdCanvasForeground(_cddbuffer, cdEncodeColor((unsigned char)inR,
+ (unsigned char)inG,
+ (unsigned char)inB));
+}
+
+/* CalculateTextDrawSize */
+long PPainterIup::CalculateTextDrawSize(const char *inString)
+{
+ int iw;
+
+ if (!_cddbuffer)
+ return IUP_NOERROR;
+
+ cdCanvasGetTextSize(_cddbuffer, const_cast<char *>(inString), &iw, NULL);
+
+ return iw;
+}
+
+/* GetFontHeight */
+long PPainterIup::GetFontHeight() const
+{
+ int ih;
+
+ if (!_cddbuffer)
+ return IUP_NOERROR;
+
+ cdCanvasGetFontDim(_cddbuffer, NULL, &ih, NULL, NULL);
+
+ return ih;
+}
+
+/* DrawText */
+/* this call leave all the hard job of alignment on painter side */
+void PPainterIup::DrawText(int inX, int inY, short align, const char *inString)
+{
+ if (!_cddbuffer)
+ return;
+
+ cdCanvasTextAlignment(_cddbuffer, align);
+ cdCanvasText(_cddbuffer, inX, cdCanvasInvertYAxis(_cddbuffer, inY), const_cast<char *>(inString));
+}
+
+/* DrawRotatedText */
+void PPainterIup::DrawRotatedText(int inX, int inY, float inDegrees, short align, const char *inString)
+{
+ double aprev;
+
+ if (!_cddbuffer)
+ return;
+
+ cdCanvasTextAlignment(_cddbuffer, align);
+ aprev = cdCanvasTextOrientation(_cddbuffer, -inDegrees);
+ cdCanvasText(_cddbuffer, inX, cdCanvasInvertYAxis(_cddbuffer, inY), const_cast<char *>(inString));
+ cdCanvasTextOrientation(_cddbuffer, aprev);
+}
+
+void PPainterIup::SetStyle(const PStyle &inStyle)
+{
+ if (!_cddbuffer)
+ return;
+
+ cdCanvasLineWidth(_cddbuffer, inStyle.mPenWidth);
+ cdCanvasLineStyle(_cddbuffer, inStyle.mPenStyle);
+
+ cdCanvasNativeFont(_cddbuffer, IupGetAttribute(_ih, "FONT"));
+
+ if (inStyle.mFontStyle != -1 || inStyle.mFontSize != 0)
+ cdCanvasFont(_cddbuffer, NULL, inStyle.mFontStyle, inStyle.mFontSize);
+
+ cdCanvasMarkType(_cddbuffer, inStyle.mMarkStyle);
+ cdCanvasMarkSize(_cddbuffer, inStyle.mMarkSize);
+}
+
+int iPPlotMapMethod(Ihandle* ih)
+{
+ int old_gdi = 0;
+
+ if (IupGetInt(ih, "USE_GDI+"))
+ old_gdi = cdUseContextPlus(1);
+
+ ih->data->plt->_cdcanvas = cdCreateCanvas(CD_IUP, ih);
+ if (!ih->data->plt->_cdcanvas)
+ return IUP_ERROR;
+
+ /* this can fail if canvas size is zero */
+ if (IupGetInt(ih, "USE_IMAGERGB"))
+ ih->data->plt->_cddbuffer = cdCreateCanvas(CD_DBUFFERRGB, ih->data->plt->_cdcanvas);
+ else
+ ih->data->plt->_cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->plt->_cdcanvas);
+
+ if (IupGetInt(ih, "USE_GDI+"))
+ cdUseContextPlus(old_gdi);
+
+ ih->data->plt->_redraw = 1;
+
+ return IUP_NOERROR;
+}
+
+void iPPlotDestroyMethod(Ihandle* ih)
+{
+ delete ih->data->plt;
+}
+
+int iPPlotCreateMethod(Ihandle* ih, void **params)
+{
+ (void)params;
+
+ /* free the data alocated by IupCanvas */
+ if (ih->data) free(ih->data);
+ ih->data = iupALLOCCTRLDATA();
+
+ /* Initializing object with no cd canvases */
+ ih->data->plt = new PPainterIup(ih);
+
+ /* IupCanvas callbacks */
+ IupSetCallback(ih, "ACTION", (Icallback)iPPlotRedraw_CB);
+ IupSetCallback(ih, "RESIZE_CB", (Icallback)iPPlotResize_CB);
+ IupSetCallback(ih, "BUTTON_CB", (Icallback)iPPlotMouseButton_CB);
+ IupSetCallback(ih, "MOTION_CB", (Icallback)iPPlotMouseMove_CB);
+ IupSetCallback(ih, "KEYPRESS_CB", (Icallback)iPPlotKeyPress_CB);
+
+ return IUP_NOERROR;
+}
+
+static Iclass* iupPPlotGetClass(void)
+{
+ Iclass* ic = iupClassNew(iupCanvasGetClass());
+
+ ic->name = "pplot";
+ ic->format = NULL; /* none */
+ ic->nativetype = IUP_TYPECANVAS;
+ ic->childtype = IUP_CHILDNONE;
+ ic->is_interactive = 1;
+ ic->has_attrib_id = 1; /* has attributes with IDs that must be parsed */
+
+ /* Class functions */
+ ic->Create = iPPlotCreateMethod;
+ ic->Destroy = iPPlotDestroyMethod;
+ ic->Map = iPPlotMapMethod;
+
+ /* IupPPlot Callbacks */
+ iupClassRegisterCallback(ic, "POSTDRAW_CB", "v");
+ iupClassRegisterCallback(ic, "PREDRAW_CB", "v");
+ iupClassRegisterCallback(ic, "DELETE_CB", "iiff");
+ iupClassRegisterCallback(ic, "DELETEBEGIN_CB", "");
+ iupClassRegisterCallback(ic, "DELETEEND_CB", "");
+ iupClassRegisterCallback(ic, "SELECT_CB", "iiffi");
+ iupClassRegisterCallback(ic, "SELECTBEGIN_CB", "");
+ iupClassRegisterCallback(ic, "SELECTEND_CB", "");
+ iupClassRegisterCallback(ic, "EDIT_CB", "iiffvv");
+ iupClassRegisterCallback(ic, "EDITBEGIN_CB", "");
+ iupClassRegisterCallback(ic, "EDITEND_CB", "");
+
+ /* Visual */
+ iupClassRegisterAttribute(ic, "BGCOLOR", iPPlotGetBGColorAttrib, iPPlotSetBGColorAttrib, IUPAF_SAMEASSYSTEM, "255 255 255", IUPAF_NOT_MAPPED);
+ iupClassRegisterAttribute(ic, "FGCOLOR", iPPlotGetFGColorAttrib, iPPlotSetFGColorAttrib, IUPAF_SAMEASSYSTEM, "0 0 0", IUPAF_NOT_MAPPED);
+
+ /* IupPPlot only */
+
+ iupClassRegisterAttribute(ic, "REDRAW", NULL, iPPlotSetRedrawAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TITLE", iPPlotGetTitleAttrib, iPPlotSetTitleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TITLEFONTSIZE", iPPlotGetTitleFontSizeAttrib, iPPlotSetTitleFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "TITLEFONTSTYLE", NULL, iPPlotSetTitleFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "LEGENDSHOW", iPPlotGetLegendShowAttrib, iPPlotSetLegendShowAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "LEGENDPOS", iPPlotGetLegendPosAttrib, iPPlotSetLegendPosAttrib, IUPAF_SAMEASSYSTEM, "TOPRIGHT", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "LEGENDFONTSIZE", NULL, iPPlotSetLegendFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "LEGENDFONTSTYLE", NULL, iPPlotSetLegendFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MARGINLEFT", iPPlotGetMarginLeftAttrib, iPPlotSetMarginLeftAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MARGINRIGHT", iPPlotGetMarginRightAttrib, iPPlotSetMarginRightAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MARGINTOP", iPPlotGetMarginTopAttrib, iPPlotSetMarginTopAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "MARGINBOTTOM", iPPlotGetMarginBottomAttrib, iPPlotSetMarginBottomAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "GRIDLINESTYLE", iPPlotGetGridLineStyleAttrib, iPPlotSetGridLineStyleAttrib, IUPAF_SAMEASSYSTEM, "CONTINUOUS", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "GRIDCOLOR", iPPlotGetGridColorAttrib, iPPlotSetGridColorAttrib, IUPAF_SAMEASSYSTEM, "200 200 200", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "GRID", iPPlotGetGridAttrib, iPPlotSetGridAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "DS_LINESTYLE", iPPlotGetDSLineStyleAttrib, iPPlotSetDSLineStyleAttrib, IUPAF_SAMEASSYSTEM, "CONTINUOUS", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DS_LINEWIDTH", iPPlotGetDSLineWidthAttrib, iPPlotSetDSLineWidthAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DS_MARKSTYLE", iPPlotGetDSMarkStyleAttrib, iPPlotSetDSMarkStyleAttrib, IUPAF_SAMEASSYSTEM, "X", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DS_MARKSIZE", iPPlotGetDSMarkSizeAttrib, iPPlotSetDSMarkSizeAttrib, IUPAF_SAMEASSYSTEM, "7", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DS_LEGEND", iPPlotGetDSLegendAttrib, iPPlotSetDSLegendAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DS_COLOR", iPPlotGetDSColorAttrib, iPPlotSetDSColorAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DS_SHOWVALUES", iPPlotGetDSShowValuesAttrib, iPPlotSetDSShowValuesAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DS_MODE", iPPlotGetDSModeAttrib, iPPlotSetDSModeAttrib, IUPAF_SAMEASSYSTEM, "LINE", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DS_EDIT", iPPlotGetDSEditAttrib, iPPlotSetDSEditAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "DS_REMOVE", NULL, iPPlotSetDSRemoveAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "AXS_XLABEL", iPPlotGetAXSXLabelAttrib, iPPlotSetAXSXLabelAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YLABEL", iPPlotGetAXSYLabelAttrib, iPPlotSetAXSYLabelAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XLABELCENTERED", iPPlotGetAXSXLabelCenteredAttrib, iPPlotSetAXSXLabelCenteredAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YLABELCENTERED", iPPlotGetAXSYLabelCenteredAttrib, iPPlotSetAXSYLabelCenteredAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XCOLOR", iPPlotGetAXSXColorAttrib, iPPlotSetAXSXColorAttrib, IUPAF_SAMEASSYSTEM, "0 0 0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YCOLOR", iPPlotGetAXSYColorAttrib, iPPlotSetAXSYColorAttrib, IUPAF_SAMEASSYSTEM, "0 0 0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XAUTOMIN", iPPlotGetAXSXAutoMinAttrib, iPPlotSetAXSXAutoMinAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YAUTOMIN", iPPlotGetAXSYAutoMinAttrib, iPPlotSetAXSYAutoMinAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XAUTOMAX", iPPlotGetAXSXAutoMaxAttrib, iPPlotSetAXSXAutoMaxAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YAUTOMAX", iPPlotGetAXSYAutoMaxAttrib, iPPlotSetAXSYAutoMaxAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XMIN", iPPlotGetAXSXMinAttrib, iPPlotSetAXSXMinAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YMIN", iPPlotGetAXSYMinAttrib, iPPlotSetAXSYMinAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XMAX", iPPlotGetAXSXMaxAttrib, iPPlotSetAXSXMaxAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YMAX", iPPlotGetAXSYMaxAttrib, iPPlotSetAXSYMaxAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XREVERSE", iPPlotGetAXSXReverseAttrib, iPPlotSetAXSXReverseAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YREVERSE", iPPlotGetAXSYReverseAttrib, iPPlotSetAXSYReverseAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XCROSSORIGIN", iPPlotGetAXSXCrossOriginAttrib, iPPlotSetAXSXCrossOriginAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YCROSSORIGIN", iPPlotGetAXSYCrossOriginAttrib, iPPlotSetAXSYCrossOriginAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XSCALE", iPPlotGetAXSXScaleAttrib, iPPlotSetAXSXScaleAttrib, IUPAF_SAMEASSYSTEM, "LIN", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YSCALE", iPPlotGetAXSYScaleAttrib, iPPlotSetAXSYScaleAttrib, IUPAF_SAMEASSYSTEM, "LIN", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XFONTSIZE", iPPlotGetAXSXFontSizeAttrib, iPPlotSetAXSXFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YFONTSIZE", iPPlotGetAXSYFontSizeAttrib, iPPlotSetAXSYFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XFONTSTYLE", iPPlotGetAXSXFontStyleAttrib, iPPlotSetAXSXFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YFONTSTYLE", iPPlotGetAXSYFontStyleAttrib, iPPlotSetAXSYFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XTICK", iPPlotGetAXSXTickAttrib, iPPlotSetAXSXTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YTICK", iPPlotGetAXSYTickAttrib, iPPlotSetAXSYTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XTICKSIZE", iPPlotGetAXSXTickSizeAttrib, iPPlotSetAXSXTickSizeAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YTICKSIZE", iPPlotGetAXSYTickSizeAttrib, iPPlotSetAXSYTickSizeAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XTICKFORMAT", iPPlotGetAXSXTickFormatAttrib, iPPlotSetAXSXTickFormatAttrib, IUPAF_SAMEASSYSTEM, "%.0f", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YTICKFORMAT", iPPlotGetAXSYTickFormatAttrib, iPPlotSetAXSYTickFormatAttrib, IUPAF_SAMEASSYSTEM, "%.0f", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XTICKFONTSIZE", iPPlotGetAXSXTickFontSizeAttrib, iPPlotSetAXSXTickFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YTICKFONTSIZE", iPPlotGetAXSYTickFontSizeAttrib, iPPlotSetAXSYTickFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XTICKFONTSTYLE", iPPlotGetAXSXTickFontStyleAttrib, iPPlotSetAXSXTickFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YTICKFONTSTYLE", iPPlotGetAXSYTickFontStyleAttrib, iPPlotSetAXSYTickFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XAUTOTICK", iPPlotGetAXSXAutoTickAttrib, iPPlotSetAXSXAutoTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YAUTOTICK", iPPlotGetAXSYAutoTickAttrib, iPPlotSetAXSYAutoTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XAUTOTICKSIZE", iPPlotGetAXSXAutoTickSizeAttrib, iPPlotSetAXSXAutoTickSizeAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YAUTOTICKSIZE", iPPlotGetAXSYAutoTickSizeAttrib, iPPlotSetAXSYAutoTickSizeAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XTICKMAJORSPAN", iPPlotGetAXSXTickMajorSpanAttrib, iPPlotSetAXSXTickMajorSpanAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YTICKMAJORSPAN", iPPlotGetAXSYTickMajorSpanAttrib, iPPlotSetAXSYTickMajorSpanAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XTICKDIVISION", iPPlotGetAXSXTickDivisionAttrib, iPPlotSetAXSXTickDivisionAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YTICKDIVISION", iPPlotGetAXSYTickDivisionAttrib, iPPlotSetAXSYTickDivisionAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XAUTOTICKSIZE", iPPlotGetAXSXAutoTickSizeAttrib, iPPlotSetAXSXAutoTickSizeAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YAUTOTICKSIZE", iPPlotGetAXSYAutoTickSizeAttrib, iPPlotSetAXSYAutoTickSizeAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_XTICKMAJORSIZE", iPPlotGetAXSXTickMajorSizeAttrib, iPPlotSetAXSXTickMajorSizeAttrib, IUPAF_SAMEASSYSTEM, "8", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "AXS_YTICKMAJORSIZE", iPPlotGetAXSYTickMajorSizeAttrib, iPPlotSetAXSYTickMajorSizeAttrib, IUPAF_SAMEASSYSTEM, "8", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ iupClassRegisterAttribute(ic, "REMOVE", NULL, iPPlotSetRemoveAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CLEAR", NULL, iPPlotSetClearAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "COUNT", iPPlotGetCountAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+ iupClassRegisterAttribute(ic, "CURRENT", iPPlotGetCurrentAttrib, iPPlotSetCurrentAttrib, IUPAF_SAMEASSYSTEM, "-1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);
+
+ return ic;
+}
+
+/* user level call: create control */
+Ihandle* IupPPlot(void)
+{
+ return IupCreate("pplot");
+}
+
+void IupPPlotOpen(void)
+{
+ if (!IupGetGlobal("_IUP_PPLOT_OPEN"))
+ {
+ iupRegisterClass(iupPPlotGetClass());
+ IupSetGlobal("_IUP_PPLOT_OPEN", "1");
+ }
+}
diff --git a/iup/srcpplot/iup_pplot.def b/iup/srcpplot/iup_pplot.def
new file mode 100755
index 0000000..8143bab
--- /dev/null
+++ b/iup/srcpplot/iup_pplot.def
@@ -0,0 +1,11 @@
+EXPORTS
+ IupPPlotOpen
+ IupPPlot
+ IupPPlotBegin
+ IupPPlotAdd
+ IupPPlotAddStr
+ IupPPlotEnd
+ IupPPlotInsertStr
+ IupPPlotInsert
+ IupPPlotTransform
+ IupPPlotPaintTo
diff --git a/iup/srcpplot/iup_pplot.dep b/iup/srcpplot/iup_pplot.dep
new file mode 100644
index 0000000..6542ce3
--- /dev/null
+++ b/iup/srcpplot/iup_pplot.dep
@@ -0,0 +1,12 @@
+$(OBJDIR)/iupPPlot.o: iupPPlot.cpp iupPPlot.h
+$(OBJDIR)/iupPPlotInteraction.o: iupPPlotInteraction.cpp iupPPlotInteraction.h \
+ iupPPlot.h
+$(OBJDIR)/iup_pplot.o: iup_pplot.cpp ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcbs.h ../include/iup_pplot.h \
+ ../../cd/include/cd.h ../../cd/include/cdiup.h \
+ ../../cd/include/cddbuf.h ../../cd/include/cdirgb.h \
+ ../../cd/include/cdgdiplus.h ../src/iup_class.h ../src/iup_table.h \
+ ../src/iup_classbase.h ../src/iup_register.h ../src/iup_object.h \
+ ../src/iup_class.h ../src/iup_attrib.h ../src/iup_str.h \
+ ../src/iup_drv.h ../src/iup_stdcontrols.h ../src/iup_assert.h \
+ iupPPlot.h iupPPlotInteraction.h iuppplot.hpp
diff --git a/iup/srcpplot/iuppplot.hpp b/iup/srcpplot/iuppplot.hpp
new file mode 100755
index 0000000..62e3db7
--- /dev/null
+++ b/iup/srcpplot/iuppplot.hpp
@@ -0,0 +1,137 @@
+/*
+ * IupPPlot component - private include file
+ *
+ * Description : A component, derived from PPlot and IUP canvas
+ * Remark : Depend on libs IUP, CD, IUPCD
+ */
+
+
+#ifndef __IUP_PPLOT_H
+#define __IUP_PPLOT_H
+
+/*
+ PPainterIup class definition
+*/
+
+
+class PostPainterCallbackIup: public PDrawer
+{
+ public:
+ PostPainterCallbackIup(PPlot &inPPlot, Ihandle* inHandle);
+ virtual bool Draw (Painter &inPainter);
+ protected:
+ Ihandle *_ih; // IUP handle
+};
+
+class PrePainterCallbackIup: public PDrawer
+{
+ public:
+ PrePainterCallbackIup(PPlot &inPPlot, Ihandle* inHandle);
+ virtual bool Draw (Painter &inPainter);
+ protected:
+ Ihandle *_ih; // IUP handle
+};
+
+class PDeleteInteractionIup: public PDeleteInteraction
+{
+ public:
+ PDeleteInteractionIup(PPlot &inPPlot, Ihandle* inHandle):
+ PDeleteInteraction(inPPlot), _ih(inHandle) {}
+
+ protected:
+ Ihandle *_ih; // IUP handle
+ bool DeleteNotify(int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData);
+};
+
+class PSelectionInteractionIup: public PSelectionInteraction
+{
+ public:
+ PSelectionInteractionIup(PPlot &inPPlot, Ihandle* inHandle):
+ PSelectionInteraction(inPPlot), _ih(inHandle) {}
+
+ protected:
+ Ihandle *_ih; // IUP handle
+ bool SelectNotify(int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inSelect);
+};
+
+class PEditInteractionIup: public PEditInteraction
+{
+ public:
+ PEditInteractionIup (PPlot &inPPlot, Ihandle* inHandle):
+ PEditInteraction(inPPlot), _ih(inHandle) {}
+
+ virtual bool Impl_HandleKeyEvent (const PKeyEvent &inEvent);
+ virtual bool Impl_Calculate (Painter &inPainter, PPlot& inPPlot);
+
+ protected:
+ Ihandle *_ih; // IUP handle
+ void HandleCursorKey (const PlotDataSelection *inPlotDataSelection, PlotDataBase *inXData, PlotDataBase *inYData, int inIndex);
+ bool EditNotify(int inIndex, int inSampleIndex, float inX, float inY, float *inNewX, float *inNewY);
+};
+
+class InteractionContainerIup: public InteractionContainer
+{
+ public:
+ InteractionContainerIup(PPlot &inPPlot, Ihandle* inHandle);
+
+ PZoomInteraction mZoomInteraction;
+ PSelectionInteractionIup mSelectionInteraction;
+ PEditInteractionIup mEditInteraction;
+ PDeleteInteractionIup mDeleteInteraction;
+ PCrosshairInteraction mCrosshairInteraction;
+
+ PostPainterCallbackIup mPostPainterCallback;
+ PrePainterCallbackIup mPrePainterCallback;
+};
+
+class PPainterIup: public Painter
+{
+ public:
+ PPainterIup(Ihandle *ih);
+ virtual ~PPainterIup();
+ cdCanvas *_cdcanvas; /* iup drawing surface */
+ cdCanvas *_cddbuffer; /* double buffer drawing surface */
+ PPlot _plot; /* plot data holder */
+ int _redraw; /* must update the double buffer before flush */
+ int _currentDataSetIndex; /* dataset index used for DS_ attributes in SetAttribute and GetAttribute */
+
+ // Called from C functions
+ void Draw(int force); // paint the stuff
+ void Resize(); // called when resizing
+ void MouseButton(int btn, int stat, int x, int y, char *r); // mouse event
+ void MouseMove(int x, int y); // mouse event
+ void KeyPress(int c, int press); // keyboard event
+ void DrawTo(cdCanvas *usrCnv); // send plot to some user defined device
+
+ protected:
+ InteractionContainer *_InteractionContainer;
+ Ihandle *_ih; // IUP handle
+ short int _mouseDown;
+ short int _mouse_ALT;
+ short int _mouse_SHIFT;
+ short int _mouse_CTRL;
+
+ PPainterIup() { };
+
+ virtual void FillArrow(int inX1, int inY1, int inX2, int inY2, int inX3, int inY3);
+ virtual void DrawLine(float inX1, float inY1, float inX2, float inY2);
+ virtual void FillRect(int inX, int inY, int inW, int inH);
+ virtual void InvertRect(int inX, int inY, int inW, int inH);
+ virtual void SetClipRect(int inX, int inY, int inW, int inH);
+ virtual long GetWidth() const;
+ virtual long GetHeight() const;
+ virtual void SetLineColor(int inR, int inG, int inB);
+ virtual void SetFillColor(int inR, int inG, int inB);
+ virtual long CalculateTextDrawSize(const char *inString);
+ virtual long GetFontHeight() const;
+ virtual void DrawText(int inX, int inY, short align, const char *inString);
+ virtual void DrawRotatedText(int inX, int inY, float inDegrees,
+ short align, const char *inString);
+ virtual void SetStyle(const PStyle &inStyle);
+
+ private:
+
+}; // PPainterIup
+
+
+#endif /* #ifndef __IUP_PPLOT_HPP */
diff --git a/iup/srcpplot/make_uname b/iup/srcpplot/make_uname
new file mode 100755
index 0000000..cc4b881
--- /dev/null
+++ b/iup/srcpplot/make_uname
@@ -0,0 +1,3 @@
+#This builds all the libraries of the folder for 1 uname
+
+tecmake $1 $2 $3 $4 $5 $6 $7
diff --git a/iup/srcpplot/make_uname.bat b/iup/srcpplot/make_uname.bat
new file mode 100755
index 0000000..f0a0722
--- /dev/null
+++ b/iup/srcpplot/make_uname.bat
@@ -0,0 +1,4 @@
+@echo off
+REM This builds all the libraries of the folder for 1 uname
+
+call tecmake %1 %2 %3 %4 %5 %6
diff --git a/iup/srcview/Makefile b/iup/srcview/Makefile
new file mode 100755
index 0000000..1779960
--- /dev/null
+++ b/iup/srcview/Makefile
@@ -0,0 +1,9 @@
+
+.PHONY: do_all iupview iupviewgtk
+do_all: iupview
+
+iupview:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak
+
+iupviewgtk:
+ @$(MAKE) --no-print-directory -f ../tecmake_compact.mak USE_GTK=Yes
diff --git a/iup/srcview/config.mak b/iup/srcview/config.mak
new file mode 100755
index 0000000..4967582
--- /dev/null
+++ b/iup/srcview/config.mak
@@ -0,0 +1,59 @@
+PROJNAME = iup
+APPNAME = iupview
+OPT = YES
+
+SRC = iup_view.c
+
+IUP := ..
+
+LINKER = $(CPPC)
+
+USE_CD = Yes
+USE_IUPCONTROLS = Yes
+USE_IUP3 = Yes
+
+# ifdef USE_GTK
+# ifndef GTK_DEFAULT
+# # Build GTK version in IRIX,SunOS,AIX,Win32
+# APPNAME = iupviewgtk
+# endif
+# else
+# ifdef GTK_DEFAULT
+# # Build Motif version in Linux,Darwin,FreeBSD
+# USE_MOTIF = Yes
+# APPNAME = iupviewmot
+# endif
+# endif
+
+ifeq "$(TEC_UNAME)" "SunOS510x86"
+ DEFINES = USE_NO_OPENGL
+else
+ USE_OPENGL = Yes
+endif
+
+USE_IM = Yes
+ifdef USE_IM
+ DEFINES += USE_IM
+ ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ LIBS = iupim iupimglib
+ else
+ IUPLIB = $(IUP)/lib/$(TEC_UNAME)
+ SLIB = $(IUPLIB)/libiupim.a $(IUPLIB)/libiupimglib.a
+ endif
+endif
+
+USE_STATIC = Yes
+
+ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ SRC += ../etc/iup.rc
+endif
+
+INCLUDES = ../src
+
+ifeq ($(TEC_UNAME), vc8)
+ ifdef DBG
+ #debug info not working for vc8 linker
+ define DBG
+ endef
+ endif
+endif
diff --git a/iup/srcview/iup_view.c b/iup/srcview/iup_view.c
new file mode 100755
index 0000000..f6d400b
--- /dev/null
+++ b/iup/srcview/iup_view.c
@@ -0,0 +1,851 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <time.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+#include "iupgl.h"
+#include "iup_str.h"
+
+
+#define MAX_NAMES 500
+
+#ifdef USE_IM
+#include "iupim.h"
+#endif
+
+/* IupImage internal function, used only here */
+int iupSaveImageAsText(Ihandle* ih, FILE* packfile, const char* format, const char* name);
+
+/* IupImageLib internal function, used only here */
+void iupImageLibLoadAll(void);
+
+static int close_cb(void)
+{
+ return IUP_CLOSE;
+}
+
+static int about_cb(void)
+{
+ IupMessage("About", " IupView\n\n"
+ "Show dialogs and popup menus\n"
+ "defined in LED files.\n"
+ "Can show all defined images.\n"
+ "Can import and export images.\n"
+ );
+ return IUP_DEFAULT;
+}
+
+static int inactivetoggle_cb(Ihandle* self, int v)
+{
+ Ihandle* tabs = (Ihandle*)IupGetAttribute(self, "TABS");
+ Ihandle* child = IupGetNextChild(tabs, NULL);
+ while(child)
+ {
+ IupSetAttribute(child, "ACTIVE", v?"NO":"YES");
+ child = IupGetNextChild(tabs, child);
+ }
+ return IUP_DEFAULT;
+}
+
+static int imagebutton_cb(Ihandle* self)
+{
+ Ihandle* label = (Ihandle*)IupGetAttribute(self, "_INFO_LABEL");
+ IupSetAttribute(label, "TITLE", IupGetAttribute(self, "_INFO"));
+ return IUP_DEFAULT;
+}
+
+static int showallimages_cb(void)
+{
+ Ihandle *dialog, *box, *files, *tabs, *toggle, *label;
+ Ihandle* params[500];
+ char *names[MAX_NAMES];
+ int i, n = 0, num_names = IupGetAllNames(names, MAX_NAMES);
+ files = IupUser();
+ for (i = 0; i < num_names; i++)
+ {
+ Ihandle* elem = IupGetHandle(names[i]);
+ char* type = IupGetClassType(elem);
+
+ if (iupStrEqual(type, "image"))
+ {
+ Ihandle *tbox, *lbox, *button;
+
+ /* show only loaded images */
+ char* file_title = IupGetAttribute(elem, "_FILE_TITLE");
+ if (!file_title)
+ continue;
+
+ tbox = (Ihandle*)IupGetAttribute(files, file_title);
+ if (!tbox)
+ {
+ tbox = IupVbox(NULL);
+ IupSetAttribute(files, file_title, (char*)tbox);
+ IupSetAttribute(tbox, "TABTITLE", file_title);
+ params[n] = tbox;
+ n++;
+ }
+
+ lbox = (Ihandle*)IupGetAttribute(tbox, file_title);
+ if (!lbox || IupGetInt(lbox, "LINE_COUNT") == 10)
+ {
+ lbox = IupHbox(NULL);
+ IupAppend(tbox, lbox);
+ IupSetAttribute(tbox, file_title, (char*)lbox);
+ IupSetAttribute(lbox, "LINE_COUNT", "0");
+ }
+
+ button = IupButton("", NULL);
+ IupSetAttribute(button, "IMAGE", names[i]);
+ IupSetfAttribute(button, "_INFO", "%s [%d,%d]", names[i], IupGetInt(elem, "WIDTH"), IupGetInt(elem, "HEIGHT"));
+ IupSetCallback(button, "ACTION", (Icallback)imagebutton_cb);
+ IupAppend(lbox, button);
+ IupSetfAttribute(lbox, "LINE_COUNT", "%d", IupGetInt(lbox, "LINE_COUNT")+1);
+ }
+ }
+
+ if (n == 0)
+ {
+ IupMessage("Error", "No images.");
+ return IUP_DEFAULT;
+ }
+
+ params[n] = NULL;
+
+ box = IupVbox(toggle = IupToggle("INACTIVE", NULL),
+ tabs = IupTabsv(params),
+ label = IupLabel(""),
+ NULL);
+ IupSetAttribute(box, "MARGIN", "10x10");
+ IupSetAttribute(box, "GAP", "10");
+ IupSetAttribute(tabs, "ALIGNMENT", "NW");
+ IupSetAttribute(tabs, "SIZE", "150x80");
+ IupSetCallback(toggle, "ACTION", (Icallback)inactivetoggle_cb);
+ IupSetAttribute(toggle, "TABS", (char*)tabs);
+ IupSetAttribute(label, "EXPAND", "HORIZONTAL");
+
+ dialog = IupDialog(box);
+ IupSetAttribute(dialog, "TITLE", "All Images");
+ IupSetCallback(dialog, "CLOSE_CB", (Icallback)close_cb);
+ IupSetAttribute(dialog, "_INFO_LABEL", (char*)label);
+
+ IupPopup(dialog, IUP_CENTER, IUP_CENTER);
+
+ IupDestroy(dialog);
+ IupDestroy(files);
+
+ return IUP_DEFAULT;
+}
+
+static char* getfileformat(int all)
+{
+#define NUM_FORMATS 8
+ int ret, count = NUM_FORMATS;
+ static char *options[NUM_FORMATS] = {
+ "led",
+ "lua",
+ "c",
+ "h",
+ "ico",
+ "bmp",
+ "gif",
+ "png"
+ };
+
+ if (!all)
+ count = 4;
+
+ ret = IupListDialog(1,"File Format",count,options,1,10,count+1,NULL);
+ if (ret == -1)
+ return NULL;
+ else
+ return options[ret];
+}
+
+static char* StrUpper(const char* sstr)
+{
+ static char buf[10];
+ char* dstr = &buf[0];
+ for (; *sstr; sstr++, dstr++)
+ *dstr = (char)toupper(*sstr);
+ *dstr = 0;
+ return buf;
+}
+
+static char* getfolder(void)
+{
+ static char folder[1024];
+ Ihandle *filedlg = IupFileDlg();
+
+ IupSetAttribute(filedlg, "DIALOGTYPE", "DIR");
+ IupSetAttribute(filedlg, "TITLE", "Select Folder for Images");
+
+ IupPopup(filedlg, IUP_CENTER, IUP_CENTER);
+
+ if (IupGetInt(filedlg, "STATUS") != -1)
+ {
+ strcpy(folder, IupGetAttribute(filedlg, "VALUE"));
+ IupDestroy(filedlg);
+ return folder;
+ }
+
+ IupDestroy(filedlg);
+ return NULL;
+}
+
+static int saveallimages_cb(void)
+{
+ char *names[MAX_NAMES];
+ char* folder;
+ int i, n = 0, num_names = IupGetAllNames(names, MAX_NAMES);
+
+ char* imgtype = getfileformat(1);
+ if (!imgtype)
+ return IUP_DEFAULT;
+
+ folder = getfolder();
+ if (!folder)
+ return IUP_DEFAULT;
+
+ for (i = 0; i < num_names; i++)
+ {
+ Ihandle* elem = IupGetHandle(names[i]);
+ char* type = IupGetClassType(elem);
+
+ if (iupStrEqual(type, "image"))
+ {
+ char file_name[1024] = "";
+
+ /* save only loaded images */
+ char* file_title = IupGetAttribute(elem, "_FILE_TITLE");
+ if (!file_title)
+ continue;
+
+ strcpy(file_name, folder);
+ strcat(file_name, "/");
+ strcat(file_name, file_title);
+ strcat(file_name, "_");
+ strcat(file_name, names[i]);
+ strcat(file_name, ".");
+ strcat(file_name, imgtype);
+
+ if (!IupSaveImageAsText(elem, file_name, imgtype, names[i]))
+ {
+#ifdef USE_IM
+ if (!IupSaveImage(elem, file_name, StrUpper(imgtype))) /* already displayed an error message */
+ return IUP_DEFAULT;
+#else
+ IupMessage("Error", "Failed to save the image.");
+ return IUP_DEFAULT;
+#endif
+ }
+
+ n++;
+ }
+ }
+
+ if (n == 0)
+ {
+ IupMessage("Error", "No images.");
+ return IUP_DEFAULT;
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int GetSaveAsFile(char* file, const char* imgtype)
+{
+ Ihandle *gf;
+ int ret;
+ char *value;
+
+ gf = IupFileDlg();
+ IupSetAttribute(gf, "DIALOGTYPE", "SAVE");
+ IupSetfAttribute(gf, "TITLE", "Save %s File", imgtype);
+ IupSetfAttribute(gf, "FILTER", "*.%s", imgtype);
+ IupSetAttribute(gf, "FILE", file);
+ IupPopup(gf, IUP_CENTER, IUP_CENTER);
+
+ value = IupGetAttribute( gf, "VALUE" );
+ if (value) strcpy( file, value );
+ ret = IupGetInt( gf, "STATUS" );
+
+ IupDestroy(gf);
+
+ return ret;
+}
+
+static void replaceDot(char* file_name)
+{
+ /* replace all "." by "_" */
+ /* replace all "-" by "_" */
+ while(*file_name)
+ {
+ if (*file_name == '.')
+ *file_name = '_';
+ if (*file_name == '-')
+ *file_name = '_';
+
+ file_name++;
+ }
+}
+
+static char* strdup_free(const char* str, char* str_ptr)
+{
+ int len = strlen(str);
+ char* tmp = malloc(len+1);
+ memcpy(tmp, str, len+1);
+ free(str_ptr);
+ return tmp;
+}
+
+static char* mainGetFileTitle(const char* file_name)
+{
+ int i, last = 1, len = strlen(file_name);
+ char* file_title = malloc(len+1);
+ char* dot, *ft_str = file_title;
+
+ memcpy(file_title, file_name, len+1);
+
+ dot = strchr(file_title, '.');
+ if (dot) *dot = 0;
+
+ for(i = len-1; i >= 0; i--)
+ {
+ if (last && file_title[i] == '.')
+ {
+ /* cut last "." forward */
+ file_title[i] = 0;
+ last = 0;
+ }
+
+ if (file_title[i] == '\\' || file_title[i] == '/')
+ {
+ replaceDot(file_title+i+1);
+ return strdup_free(file_title+i+1, ft_str);
+ }
+ }
+
+ replaceDot(file_title);
+ return strdup_free(file_title, ft_str);
+}
+
+static int saveallimagesone_cb(void)
+{
+ char file_name[1024] = "*.";
+ char *names[MAX_NAMES];
+ int i, n = 0, num_names = IupGetAllNames(names, MAX_NAMES);
+ FILE* packfile = NULL;
+
+ char* imgtype = getfileformat(0);
+ if (!imgtype)
+ return IUP_DEFAULT;
+
+ strcat(file_name, imgtype);
+ if (GetSaveAsFile(file_name, imgtype) == -1)
+ return IUP_DEFAULT;
+
+ for (i = 0; i < num_names; i++)
+ {
+ Ihandle* elem = IupGetHandle(names[i]);
+ char* type = IupGetClassType(elem);
+
+ if (iupStrEqual(type, "image"))
+ {
+ /* save only loaded images */
+ char* file_title = IupGetAttribute(elem, "_FILE_TITLE");
+ if (!file_title)
+ {
+ names[i] = NULL;
+ continue;
+ }
+
+ if (!packfile)
+ packfile = fopen(file_name, "wb");
+
+ if (!packfile)
+ {
+ IupMessage("Error", "Failed to open the file.");
+ return IUP_DEFAULT;
+ }
+
+ if (!iupSaveImageAsText(elem, packfile, imgtype, names[i]))
+ {
+ fclose(packfile);
+ IupMessage("Error", "Failed to write to the file.");
+ return IUP_DEFAULT;
+ }
+
+ n++;
+ }
+ else
+ names[i] = NULL;
+ }
+
+ if (packfile)
+ {
+ if (iupStrEqualNoCase(imgtype, "c")) /* only for C files */
+ {
+ char* title = mainGetFileTitle(file_name);
+ fprintf(packfile, "void load_all_images_%s(void)\n{\n", title);
+ free(title);
+
+ for (i = 0; i < num_names; i++)
+ {
+ if (names[i])
+ fprintf(packfile, " IupSetHandle(\"IUP_%s\", load_image_%s());\n", names[i], names[i]);
+ }
+ fprintf(packfile, "}\n\n");
+ }
+
+ fclose(packfile);
+ }
+
+ if (n == 0)
+ {
+ IupMessage("Error", "No images.");
+ return IUP_DEFAULT;
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int saveimage_cb(Ihandle* self)
+{
+ Ihandle* list = (Ihandle*)IupGetAttribute(self, "mainList");
+ char* name = IupGetAttribute(list, IupGetAttribute(list, "VALUE"));
+
+ if (name) /* the list may be empty */
+ {
+ Ihandle* elem = IupGetHandle(name);
+ char* type = IupGetClassType(elem);
+
+ if (iupStrEqual(type, "image"))
+ {
+ char file_name[1024];
+
+ char* imgtype = getfileformat(1);
+ if (!imgtype)
+ return IUP_DEFAULT;
+
+ sprintf(file_name, "%s.%s", name, imgtype);
+ if (GetSaveAsFile(file_name, imgtype) != -1)
+ {
+ if (!IupSaveImageAsText(elem, file_name, imgtype, name))
+#ifdef USE_IM
+ IupSaveImage(elem, file_name, StrUpper(imgtype)); /* already displayed an error message */
+#else
+ IupMessage("Error", "Failed to save the image.");
+#endif
+ }
+ }
+ else
+ IupMessage("Error", "Not an image.");
+ }
+ else
+ IupMessage("Error", "No elements.");
+
+ return IUP_DEFAULT;
+}
+
+static int hideelem_cb(Ihandle* self)
+{
+ Ihandle* list = (Ihandle*)IupGetAttribute(self, "mainList");
+ char* name = IupGetAttribute(list, IupGetAttribute(list, "VALUE"));
+
+ if (name) /* the list may be empty */
+ {
+ Ihandle* elem = IupGetHandle(name);
+ char* type = IupGetClassName(elem);
+
+ if (iupStrEqual(type, "dialog"))
+ IupHide(elem);
+ else
+ {
+ Ihandle* dialog = IupGetDialog(elem);
+ if (dialog)
+ IupHide(dialog);
+ else
+ IupMessage("Error", "Will only hide dialogs.");
+ }
+ }
+ else
+ IupMessage("Error", "No elements.");
+
+ return IUP_DEFAULT;
+}
+
+static int showelem_cb(Ihandle* self)
+{
+ Ihandle* list = (Ihandle*)IupGetAttribute(self, "mainList");
+ char* name = IupGetAttribute(list, IupGetAttribute(list, "VALUE"));
+
+ if (name) /* the list may be empty */
+ {
+ Ihandle* elem = IupGetHandle(name);
+ char* type = IupGetClassName(elem);
+
+ if (iupStrEqual(type, "dialog"))
+ IupShow(elem);
+ else
+ {
+ Ihandle* dialog = IupGetDialog(elem);
+ if (dialog)
+ IupShow(dialog);
+ else
+ {
+ if (iupStrEqual(type, "menu"))
+ IupPopup(elem, IUP_MOUSEPOS, IUP_MOUSEPOS);
+ else
+ IupMessage("Error", "Will only show dialogs and independent menus.");
+ }
+ }
+ }
+ else
+ IupMessage("Error", "No elements.");
+
+ return IUP_DEFAULT;
+}
+
+static int list_dbclick_cb(Ihandle* self, int i, char *t)
+{
+ (void)i;
+ (void)t;
+ showelem_cb(self);
+ return IUP_DEFAULT;
+}
+
+static int list_cb(Ihandle* self, char *t, int i, int v)
+{
+ if (v == 1)
+ {
+ char str_elem[100];
+ Ihandle* elem = IupGetHandle(t);
+ Ihandle* label = (Ihandle*)IupGetAttribute(self, "mainLabel");
+ sprintf(str_elem, "FileTitle: %s - Type: %s", IupGetAttribute(elem, "_FILE_TITLE"), IupGetClassName(elem));
+ IupStoreAttribute(label, "TITLE", str_elem);
+ }
+ (void)i;
+ return IUP_DEFAULT;
+}
+
+static void mainUpdateInternals(void)
+{
+ char *names[MAX_NAMES];
+ int i, num_names = IupGetAllNames(names, MAX_NAMES);
+ for (i = 0; i < num_names; i++)
+ {
+ Ihandle* elem = IupGetHandle(names[i]);
+
+ if (!IupGetAttribute(elem, "_FILE_TITLE"))
+ IupSetAttribute(elem, "_INTERNAL", "YES");
+ }
+}
+
+static int destroyall_cb(Ihandle* self)
+{
+ char *names[MAX_NAMES];
+ Ihandle* list = (Ihandle*)IupGetAttribute(self, "mainList");
+ int i, num_names = IupGetAllNames(names, MAX_NAMES);
+ for (i = 0; i < num_names; i++)
+ {
+ Ihandle* elem = IupGetHandle(names[i]);
+
+ if (elem && IupGetInt(elem, "_INTERNAL") == 0)
+ {
+ char* type = IupGetClassName(elem);
+
+ if (iupStrEqual(type, "dialog"))
+ IupDestroy(elem);
+ else
+ {
+ Ihandle* dialog = IupGetDialog(elem);
+ if (!dialog)
+ IupDestroy(elem);
+ }
+ }
+ }
+ IupSetAttribute(list, "1", NULL);
+ IupSetAttribute(list, "VALUE", "1");
+ return IUP_DEFAULT;
+}
+
+static void mainUpdateList(Ihandle* self, const char* file_name)
+{
+ char *names[MAX_NAMES];
+ char str_item[20];
+ Ihandle* list = (Ihandle*)IupGetAttribute(self, "mainList");
+ int i, n = 0, num_names = IupGetAllNames(names, MAX_NAMES);
+ char* file_title = mainGetFileTitle(file_name);
+ for (i = 0; i < num_names; i++)
+ {
+ Ihandle* elem = IupGetHandle(names[i]);
+
+ if (IupGetInt(elem, "_INTERNAL") == 0)
+ {
+ sprintf(str_item, "%d", n+1);
+ IupSetAttribute(list, str_item, names[i]);
+
+ if (!IupGetAttribute(elem, "_FILE_TITLE"))
+ IupStoreAttribute(elem, "_FILE_TITLE", file_title);
+ n++;
+ }
+ }
+ sprintf(str_item, "%d", n+1);
+ IupSetAttribute(list, str_item, NULL);
+
+ if (n != 0)
+ {
+ IupSetAttribute(list, "VALUE", "1");
+ list_cb(list, IupGetAttribute(list, "1"), -1, 1);
+ }
+
+ free(file_title);
+}
+
+static int loadimagelib_cb(Ihandle* self)
+{
+ mainUpdateInternals();
+
+ iupImageLibLoadAll();
+
+ mainUpdateList(self, "ImageLib");
+
+ return IUP_DEFAULT;
+}
+
+static int loadled_cb(Ihandle* self)
+{
+ char file_name[1024] = "./*.led";
+ int ret = IupGetFile(file_name);
+ if (ret == 0)
+ {
+ char* error;
+
+ mainUpdateInternals();
+
+ error = IupLoad(file_name);
+ if (error)
+ IupMessage("Error", error);
+ else
+ mainUpdateList(self, file_name);
+ }
+ return IUP_DEFAULT;
+}
+
+#ifdef USE_IM
+#ifdef WIN32
+static char* ParseFile(const char* dir, const char* FileName, int *offset)
+{
+ const char* file = FileName;
+ while (*file != 0 && *file != '|')
+ file++;
+
+ if (file == FileName)
+ return NULL;
+
+ {
+ int size = file - FileName + 1;
+ int dir_size = strlen(dir);
+ char* file_name = malloc(size+dir_size+1);
+ memcpy(file_name, dir, dir_size);
+ file_name[dir_size] = '\\';
+ memcpy(file_name+dir_size+1, FileName, size-1);
+ file_name[size+dir_size] = 0;
+ *offset += size;
+ return file_name;
+ }
+}
+
+static char* ParseDir(const char* FileName, int *offset)
+{
+ const char* file = FileName;
+ while (*file != 0 && *file != '|')
+ file++;
+
+ if (*file == 0)
+ return NULL;
+
+ {
+ int size = file - FileName + 1;
+ char* dir = malloc(size);
+ memcpy(dir, FileName, size-1);
+ dir[size-1] = 0;
+ *offset = size;
+ return dir;
+ }
+}
+#endif
+
+static void LoadImageFile(Ihandle* self, const char* file_name)
+{
+ Ihandle* new_image = IupLoadImage(file_name);
+ if (new_image)
+ {
+ char* file_title = mainGetFileTitle(file_name);
+ IupSetHandle(file_title, new_image);
+ free(file_title);
+ mainUpdateList(self, file_name);
+ }
+}
+
+static int GetOpenFileName(char* file)
+{
+ Ihandle *gf;
+ int ret;
+ char *value;
+
+ gf = IupFileDlg();
+ IupSetAttribute(gf, "DIALOGTYPE", "OPEN");
+ IupSetAttribute(gf, "TITLE", "Load Image File(s)");
+ IupSetAttribute(gf, "MULTIPLEFILES", "YES");
+ IupPopup(gf, IUP_CENTER, IUP_CENTER);
+
+ value = IupGetAttribute(gf, "VALUE");
+ if (value) strcpy(file, value);
+ ret = IupGetInt(gf, "STATUS");
+
+ IupDestroy(gf);
+
+ return ret;
+}
+
+static int loadimage_cb(Ihandle* self)
+{
+ char FileName[2000] = "*.*";
+
+ /* Retrieve a file name */
+ if (GetOpenFileName(FileName) == -1)
+ return IUP_DEFAULT;
+
+ mainUpdateInternals();
+
+#ifdef WIN32
+ /* parse multiple files */
+ {
+ int offset;
+ char* file_name;
+ char* dir = ParseDir(FileName, &offset);
+ if (dir)
+ {
+ while ((file_name = ParseFile(dir, FileName + offset, &offset)) != NULL)
+ {
+ LoadImageFile(self, file_name);
+ free(file_name);
+ }
+ free(dir);
+ }
+ else
+ LoadImageFile(self, FileName);
+ }
+#else
+ LoadImageFile(self, FileName);
+#endif
+
+ return IUP_DEFAULT;
+}
+#endif
+
+static int dropfile_cb(Ihandle *self, char* file_name)
+{
+ char* error;
+
+ mainUpdateInternals();
+
+ error = IupLoad(file_name);
+ if (error)
+ IupMessage("Error", error);
+ else
+ mainUpdateList(self, file_name);
+
+ return IUP_DEFAULT;
+}
+
+static Ihandle* mainDialog(void)
+{
+ Ihandle *main_dialog, *box, *menu, *list, *label;
+
+ menu = IupMenu(
+ IupSubmenu("File", IupMenu(
+ IupSetCallbacks(IupItem("Load Led...", NULL), "ACTION", (Icallback)loadled_cb, NULL),
+ IupSetCallbacks(IupItem("Load Image Lib", NULL), "ACTION", (Icallback)loadimagelib_cb, NULL),
+ IupSeparator(),
+#ifdef USE_IM
+ IupSetCallbacks(IupItem("Import Image(s)...", NULL), "ACTION", (Icallback)loadimage_cb, NULL),
+#endif
+ IupSeparator(),
+ IupSetCallbacks(IupItem("Exit", NULL), "ACTION", (Icallback)close_cb, NULL),
+ NULL)),
+ IupSubmenu("Element", IupMenu(
+ IupSetCallbacks(IupItem("Show...", NULL), "ACTION", (Icallback)showelem_cb, NULL),
+ IupSetCallbacks(IupItem("Hide...", NULL), "ACTION", (Icallback)hideelem_cb, NULL),
+ IupSeparator(),
+ IupSetCallbacks(IupItem("Destroy All...", NULL), "ACTION", (Icallback)destroyall_cb, NULL),
+ IupSetCallbacks(IupItem("Show All Images...", NULL), "ACTION", (Icallback)showallimages_cb, NULL),
+ IupSeparator(),
+ IupSetCallbacks(IupItem("Save Image...", NULL), "ACTION", (Icallback)saveimage_cb, NULL),
+ IupSetCallbacks(IupItem("Save All Images...", NULL), "ACTION", (Icallback)saveallimages_cb, NULL),
+ IupSetCallbacks(IupItem("Save All Images (One File)...", NULL), "ACTION", (Icallback)saveallimagesone_cb, NULL),
+ NULL)),
+ IupSubmenu("Help", IupMenu(
+ IupSetCallbacks(IupItem("About...", NULL), "ACTION", (Icallback)about_cb, NULL),
+ NULL)),
+ NULL
+ );
+ IupSetHandle("mainMenu", menu);
+
+ box = IupVbox(
+ IupLabel("Elements:"),
+ list = IupList(NULL),
+ IupSetAttributes(IupFill(), "SIZE=2"),
+ IupFrame(label = IupLabel("")),
+ NULL);
+ IupSetAttribute(box, "MARGIN", "10x10");
+ IupSetCallback(list, "ACTION", (Icallback)list_cb);
+ IupSetCallback(list, "DBLCLICK_CB", (Icallback)list_dbclick_cb);
+
+ IupSetAttribute(list, "SIZE", "150x80");
+ IupSetAttribute(list, "EXPAND", "YES");
+ IupSetAttribute(label, "EXPAND", "HORIZONTAL");
+
+ main_dialog = IupDialog(box);
+ IupSetAttribute(main_dialog, "TITLE", "IupView");
+ IupSetAttribute(main_dialog, "MENU", "mainMenu");
+ IupSetAttribute(main_dialog, "mainList", (char*)list);
+ IupSetAttribute(main_dialog, "mainLabel", (char*)label);
+ IupSetCallback(main_dialog, "CLOSE_CB", (Icallback)close_cb);
+ IupSetCallback(main_dialog, "DROPFILES_CB", (Icallback)dropfile_cb);
+
+ IupSetAttribute(menu, "mainList", (char*)list);
+ IupSetAttribute(menu, "mainLabel", (char*)label);
+
+ return main_dialog;
+}
+
+int main (int argc, char **argv)
+{
+ Ihandle* main_dialog;
+
+ IupOpen(&argc, &argv);
+#ifndef USE_NO_OPENGL
+ IupGLCanvasOpen();
+#endif
+ IupControlsOpen();
+ IupImageLibOpen();
+
+ mainUpdateInternals();
+
+ main_dialog = mainDialog();
+ IupShow(main_dialog);
+
+ IupMainLoop();
+ destroyall_cb(main_dialog);
+ IupDestroy(main_dialog);
+
+ IupControlsClose();
+ IupClose();
+ return 0;
+}
+
diff --git a/iup/srcview/iupview b/iup/srcview/iupview
new file mode 100755
index 0000000..940f9ab
--- /dev/null
+++ b/iup/srcview/iupview
@@ -0,0 +1,6 @@
+#!/bin/csh
+# Script generated automatically by tecmake v3.19
+# Remove the comment bellow to set the LD_LIBRARY_PATH if needed.
+#setenv LD_LIBRARY_PATH /lib/${TEC_UNAME}:/lib/${TEC_UNAME}:$LD_LIBRARY_PATH
+if ( -r app.env ) source app.env
+exec ../bin/$TEC_UNAME/iupview $*
diff --git a/iup/srcview/iupview.bat b/iup/srcview/iupview.bat
new file mode 100644
index 0000000..22f8434
--- /dev/null
+++ b/iup/srcview/iupview.bat
@@ -0,0 +1,3 @@
+@echo off
+REM Script generated automatically by tecmake v3.20
+..\bin\Win64\iupview.exe %*
diff --git a/iup/srcview/iupview.dep b/iup/srcview/iupview.dep
new file mode 100644
index 0000000..4e8b9dc
--- /dev/null
+++ b/iup/srcview/iupview.dep
@@ -0,0 +1,3 @@
+$(OBJDIR)/iup_view.o: iup_view.c ../include/iup.h ../include/iupkey.h \
+ ../include/iupdef.h ../include/iupcontrols.h ../include/iupgl.h \
+ ../src/iup_str.h ../include/iupim.h
diff --git a/iup/srcview/make_uname b/iup/srcview/make_uname
new file mode 100755
index 0000000..153c2d7
--- /dev/null
+++ b/iup/srcview/make_uname
@@ -0,0 +1,4 @@
+# This builds the executable for 1 uname
+
+tecmake relink $1 $2 $3 $4 $5 $6 $7 $8
+#tecmake USE_GTK=Yes relink $1 $2 $3 $4 $5 $6 $7 $8
diff --git a/iup/srcview/make_uname.bat b/iup/srcview/make_uname.bat
new file mode 100755
index 0000000..ab63bd3
--- /dev/null
+++ b/iup/srcview/make_uname.bat
@@ -0,0 +1,26 @@
+@echo off
+
+if "%1"=="" goto iupexe32
+if "%1"=="vc8" goto iupexe32
+if "%1"=="vc8_64" goto iupexe64
+if "%1"=="all" goto iupexe
+goto end
+
+:iupexe32
+call tecmake vc8 relink %2 %3 %4 %5 %6 %7
+#call tecmake vc8 "USE_GTK=Yes" relink %2 %3 %4 %5 %6 %7
+goto end
+
+:iupexe64
+call tecmake vc8_64 relink %2 %3 %4 %5 %6 %7
+#call tecmake vc8_64 "USE_GTK=Yes" relink %2 %3 %4 %5 %6 %7
+goto end
+
+:iupexe
+call tecmake vc8 relink %2 %3 %4 %5 %6 %7
+#call tecmake vc8 "USE_GTK=Yes" relink %2 %3 %4 %5 %6 %7
+call tecmake vc8_64 relink %2 %3 %4 %5 %6 %7
+#call tecmake vc8_64 "USE_GTK=Yes" relink %2 %3 %4 %5 %6 %7
+goto end
+
+:end
diff --git a/iup/tecmake_compact.mak b/iup/tecmake_compact.mak
new file mode 100755
index 0000000..08e642e
--- /dev/null
+++ b/iup/tecmake_compact.mak
@@ -0,0 +1,1172 @@
+#-------------------------------------------------------------------------#
+#- Tecmake (Compact Version) -#
+#- Generic Makefile to build applications and libraries at TeCGraf -#
+#- The user makefile usually has the name "config.mak". -#
+#-------------------------------------------------------------------------#
+
+# Tecmake Version
+VERSION = 3.19
+
+# First target
+.PHONY: build
+build: tecmake
+
+
+#---------------------------------#
+# System Variables Definitions
+
+# Base Defintions
+TEC_SYSNAME:=$(shell uname -s)
+TEC_SYSVERSION:=$(shell uname -r|cut -f1 -d.)
+TEC_SYSMINOR:=$(shell uname -r|cut -f2 -d.)
+TEC_SYSARCH:=$(shell uname -m)
+
+# Fixes
+ifeq ($(TEC_SYSNAME), SunOS)
+ TEC_SYSARCH:=$(shell uname -p)
+endif
+ifeq ($(TEC_SYSNAME), IRIX)
+ TEC_SYSARCH:=$(shell uname -p)
+endif
+ifeq ($(TEC_SYSNAME), FreeBSD)
+ TEC_SYSMINOR:=$(shell uname -r|cut -f2 -d.|cut -f1 -d-)
+endif
+ifeq ($(TEC_SYSNAME), AIX)
+ TEC_SYSVERSION:=$(shell uname -v)
+ TEC_SYSMINOR:=$(shell uname -r)
+ TEC_SYSARCH:=ppc
+endif
+ifeq ($(TEC_SYSNAME), Darwin)
+ TEC_SYSARCH:=$(shell uname -p)
+endif
+
+ifeq ($(TEC_SYSARCH), powerpc)
+ TEC_SYSARCH:=ppc
+endif
+ifeq ($(TEC_SYSARCH), i686)
+ TEC_SYSARCH:=x86
+endif
+ifeq ($(TEC_SYSARCH), i386)
+ TEC_SYSARCH:=x86
+endif
+ifeq ($(TEC_SYSARCH), x86_64)
+ TEC_SYSARCH:=x64
+endif
+
+# Compose
+TEC_SYSRELEASE:=$(TEC_SYSVERSION).$(TEC_SYSMINOR)
+TEC_UNAME:=$(TEC_SYSNAME)$(TEC_SYSVERSION)$(TEC_SYSMINOR)
+
+# Linux 2.4 and GCC 3.x
+ifeq ($(TEC_UNAME), Linux24)
+ GCCVER:=$(shell gcc -dumpversion|cut -f1 -d.)
+ ifeq ($(GCCVER), 3)
+ TEC_UNAME:=$(TEC_UNAME)g3
+ endif
+endif
+
+# Linux 2.6 and GCC 4.x
+ifeq ($(TEC_UNAME), Linux26)
+ GCCVER:=$(shell gcc -dumpversion|cut -f1 -d.)
+ ifeq ($(GCCVER), 4)
+ TEC_UNAME:=$(TEC_UNAME)g4
+ endif
+endif
+
+# Linux and PowerPC
+ifeq ($(TEC_SYSNAME), Linux)
+ ifeq ($(TEC_SYSARCH), ppc)
+ TEC_UNAME:=$(TEC_UNAME)ppc
+ endif
+endif
+
+# 64-bits Linux
+ifeq ($(TEC_SYSARCH), x64)
+ BUILD_64=Yes
+ TEC_UNAME:=$(TEC_UNAME)_64
+endif
+
+ifeq ($(TEC_SYSARCH), ia64)
+ BUILD_64=Yes
+ TEC_UNAME:=$(TEC_UNAME)_ia64
+endif
+
+# Solaris and Intel
+ifeq ($(TEC_SYSNAME), SunOS)
+ ifeq ($(TEC_SYSARCH) , x86)
+ TEC_UNAME:=$(TEC_UNAME)x86
+ endif
+endif
+
+# Darwin and Intel
+ifeq ($(TEC_SYSNAME), Darwin)
+ifeq ($(TEC_SYSARCH), x86)
+ TEC_UNAME:=$(TEC_UNAME)x86
+ endif
+endif
+
+# System Info
+.PHONY: sysinfo
+sysinfo:
+ @echo ''; echo 'Tecmake - System Info'
+ @echo 'TEC_SYSNAME = $(TEC_SYSNAME)'
+ @echo 'TEC_SYSVERSION = $(TEC_SYSVERSION)'
+ @echo 'TEC_SYSMINOR = $(TEC_SYSMINOR)'
+ @echo 'TEC_SYSARCH = $(TEC_SYSARCH)'
+ @echo 'TEC_UNAME = $(TEC_UNAME)'; echo ''
+
+#---------------------------------#
+# Directories Definitions
+PROJDIR = ..
+SRCDIR = .
+OBJROOT = $(PROJDIR)/obj
+
+
+#---------------------------------#
+# Byte Order and Word Size
+
+ifneq ($(findstring x86, $(TEC_SYSARCH)), )
+ TEC_BYTEORDER = TEC_LITTLEENDIAN
+else
+ifeq ($(TEC_SYSARCH), arm)
+ TEC_BYTEORDER = TEC_LITTLEENDIAN
+else
+ TEC_BYTEORDER = TEC_LITTLEENDIAN
+endif
+endif
+
+ifeq ($(TEC_SYSARCH), x64)
+ TEC_WORDSIZE = TEC_64
+else
+ifdef BUILD_64
+ TEC_WORDSIZE = TEC_64
+else
+ TEC_WORDSIZE = TEC_32
+endif
+endif
+
+# Itanium Exception
+ifeq ($(TEC_SYSARCH), ia64)
+ TEC_BYTEORDER = TEC_LITTLEENDIAN
+ TEC_WORDSIZE = TEC_64
+endif
+
+
+#---------------------------------#
+# Compilation Flags
+STDFLAGS := -Wall
+STDDEFS := -DTEC_UNAME=$(TEC_UNAME) -DTEC_SYSNAME=$(TEC_SYSNAME) -D$(TEC_SYSNAME)=$(TEC_SYSRELEASE) -D$(TEC_BYTEORDER) -D$(TEC_WORDSIZE) -DFUNCPROTO=15
+STDINCS :=
+OPTFLAGS := -O3
+STDLFLAGS := r
+DEBUGFLAGS := -g
+STDLDFLAGS := -shared
+DLIBEXT := so
+
+ifneq ($(findstring Linux, $(TEC_UNAME)), )
+ GTK_DEFAULT :=
+endif
+ifneq ($(findstring Darwin, $(TEC_UNAME)), )
+ GTK_DEFAULT :=
+endif
+ifneq ($(findstring FreeBSD, $(TEC_UNAME)), )
+ GTK_DEFAULT :=
+endif
+ifneq ($(findstring Linux24, $(TEC_UNAME)), )
+ GTK_DEFAULT :=
+endif
+
+#---------------------------------#
+# Build Tools
+
+CC := $(TEC_TOOLCHAIN)gcc
+CPPC := $(TEC_TOOLCHAIN)g++
+FF := $(TEC_TOOLCHAIN)g77
+RANLIB := $(TEC_TOOLCHAIN)ranlib
+AR := $(TEC_TOOLCHAIN)ar
+DEBUGGER := $(TEC_TOOLCHAIN)gdb
+RCC := $(TEC_TOOLCHAIN)windres
+LD := $(TEC_TOOLCHAIN)gcc
+
+ifeq ($(TEC_UNAME), gcc2)
+ ifdef USE_GCC_2
+ CC := $(CC)-2
+ CPPC := $(CPPC)-2
+ FF := $(FF)-2
+ endif
+endif
+
+
+#---------------------------------#
+# User Configuration File
+
+MAKENAME = config.mak
+
+ifdef MF
+ MAKENAME = $(MF).mak
+endif
+
+###################
+include $(MAKENAME)
+###################
+
+
+#---------------------------------#
+# Definitions of public variables
+
+ifdef LIBNAME
+ TARGETNAME = $(LIBNAME)
+ MAKETYPE = LIB
+else
+ TARGETNAME = $(APPNAME)
+ MAKETYPE = APP
+endif
+
+ifndef TARGETNAME
+ $(error LIBNAME nor APPNAME defined in $(MAKENAME))
+endif
+
+PROJNAME ?= $(TARGETNAME)
+
+DEPEND := $(TARGETNAME).dep
+
+ifdef DEPENDDIR
+ DEPEND := $(DEPENDDIR)/$(TARGETNAME).dep.$(TEC_UNAME)
+endif
+
+SRCLUADIR ?= $(SRCDIR)
+LOHDIR ?= $(SRCLUADIR)
+
+ifeq ($(MAKETYPE), APP)
+ TARGETROOT ?= $(PROJDIR)/bin
+else
+ TARGETROOT ?= $(PROJDIR)/lib
+endif
+
+ifneq ($(PROJNAME), $(TARGETNAME))
+ OBJROOT := $(OBJROOT)/$(TARGETNAME)
+endif
+
+ifdef DBG
+ STDFLAGS += $(DEBUGFLAGS)
+ STDDEFS += -DDEBUG
+else
+ STDDEFS += -DNDEBUG
+ ifdef OPT
+ STDFLAGS += $(OPTFLAGS)
+ ifeq ($(findstring gcc, $(TEC_UNAME)), )
+ STRIP ?= Yes
+ endif
+ endif
+endif
+
+ifdef BUILD_64
+ ifneq ($(findstring SunOS, $(TEC_UNAME)), )
+ USE_CC = Yes
+ BUILD_64_DIR = Yes
+ endif
+ ifneq ($(findstring AIX, $(TEC_UNAME)), )
+ USE_CC = Yes
+ BUILD_64_DIR = Yes
+ endif
+ ifneq ($(findstring IRIX, $(TEC_UNAME)), )
+ USE_CC = Yes
+ BUILD_64_DIR = Yes
+ endif
+endif
+
+ifdef USE_CC
+ CC := cc
+ CPPC := CC
+ STDFLAGS =
+ ifdef USE_CC_DIR
+ TEC_UNAME := $(TEC_UNAME)cc
+ endif
+endif
+
+ifdef BUILD_64
+ ifdef BUILD_64_DIR
+ TEC_UNAME := $(TEC_UNAME)_64
+ endif
+endif
+
+ifneq ($(findstring gcc, $(TEC_UNAME)), )
+ ifeq ($(MAKETYPE), APP)
+ TEC_UNAME_DIR ?= $(TEC_SYSNAME)
+ endif
+endif
+
+TEC_UNAME_DIR ?= $(TEC_UNAME)
+ifdef DBG
+ ifdef DBG_DIR
+ TEC_UNAME_DIR := $(TEC_UNAME_DIR)d
+ endif
+endif
+
+OBJDIR := $(OBJROOT)/$(TEC_UNAME_DIR)
+TARGETDIR := $(TARGETROOT)/$(TEC_UNAME_DIR)
+
+# Change linker if any C++ source
+ifndef LINKER
+ ifneq "$(findstring .cpp, $(SRC))" ""
+ LINKER := $(CPPC)
+ else
+ LINKER := $(CC)
+ endif
+endif
+
+
+#---------------------------------#
+# LO and LOH Suffix
+
+ifeq ($(TEC_BYTEORDER), TEC_BIGENDIAN)
+ ifeq ($(TEC_WORDSIZE), TEC_64)
+ LO_SUFFIX ?= _be64
+ else
+ LO_SUFFIX ?= _be32
+ endif
+else
+ ifeq ($(TEC_WORDSIZE), TEC_64)
+ LO_SUFFIX ?= _le64
+ else
+ LO_SUFFIX ?=
+ endif
+endif
+
+
+#---------------------------------#
+# Platform specific variables
+
+# Definicoes para o X11
+X11_LIBS := Xmu Xt Xext X11
+#X11_LIB :=
+#X11_INC := #include <X11/X.h>
+
+# Definicoes para o OpenGL
+OPENGL_LIBS := GLU GL
+#OPENGL_LIB :=
+#OPENGL_INC := #include <GL/gl.h> and possibly
+MOTIFGL_LIB := GLw #include <GL/GLwMDrawA.h>
+
+# Definicoes para o Motif
+#MOTIF_LIB :=
+#MOTIF_INC := #include <Xm/Xm.h>
+
+# Definicoes para o GLUT
+#GLUT_LIB :=
+#GLUT_INC :=
+
+
+ifneq ($(findstring cygw, $(TEC_UNAME)), )
+ NO_DYNAMIC ?= Yes
+ ifdef BUILD_64
+ X11_LIB := /usr/X11R6/lib64
+ else
+ X11_LIB := /usr/X11R6/lib
+ endif
+ X11_INC := /usr/X11R6/include
+ MOTIFGL_LIB :=
+endif
+
+ifneq ($(findstring Linux, $(TEC_UNAME)), )
+ ifdef BUILD_64
+ ifeq ($(TEC_SYSARCH), ia64)
+ STDFLAGS += -fPIC
+ X11_LIB := /usr/X11R6/lib
+ else
+ STDFLAGS += -m64 -fPIC
+ X11_LIB := /usr/X11R6/lib64
+ endif
+ else
+ X11_LIB := /usr/X11R6/lib
+ endif
+ X11_INC := /usr/X11R6/include
+ MOTIFGL_LIB :=
+endif
+
+ifneq ($(findstring IRIX, $(TEC_UNAME)), ) # any IRIX
+ LD = ld
+ STDLDFLAGS := -elf -shared -rdata_shared -soname lib$(TARGETNAME).so
+ RANLIB := /bin/true
+ X11_LIBS := Xmu Xt X11
+ ifdef BUILD_64
+ ifdef USE_CC
+ STDFLAGS += -64 -KPIC
+ STDLDFLAGS += -64
+ LINKER += -64
+ endif
+ X11_LIB := /usr/lib64
+ MOTIF_LIB := /usr/Motif-2.1/lib64
+ else
+ X11_LIB := /usr/lib32
+ MOTIF_LIB := /usr/Motif-2.1/lib32
+ endif
+ MOTIF_INC = /usr/Motif-2.1/include
+endif
+
+ifneq ($(findstring AIX, $(TEC_UNAME)), )
+ NO_DYNAMIC ?= Yes
+ ifdef BUILD_64
+ ifdef USE_CC
+ STDFLAGS += -q64 # to compilers C and C++
+ STDLFLAGS := -X64 $(STDLFLAGS) # to librarian
+ STDLDFLAGS += -64
+ LINKER += -q64 # to linker
+ endif
+ endif
+endif
+
+ifneq ($(findstring HP-UX, $(TEC_UNAME)), )
+ NO_DYNAMIC ?= Yes
+ MOTIF_INC := /usr/include/Motif2.1
+ X11_LIBS := Xt Xext X11
+ OPENGL_LIB := /opt/graphics/OpenGL/lib
+ OPENGL_INC := /opt/graphics/OpenGL/include
+ STDDEFS := -DTEC_UNAME=$(TEC_UNAME) -DTEC_SYSNAME=$(TEC_SYSNAME) -D$(TEC_BYTEORDER) -D$(TEC_WORDSIZE) -DFUNCPROTO=15
+ CC := aCC
+ CPPC := aCC
+ LINKER := aCC
+endif
+
+ifneq ($(findstring SunOS, $(TEC_UNAME)), )
+ LD = ld
+ STDLDFLAGS := -G
+ X11_INC := /usr/openwin/share/include
+ X11_LIB := /usr/openwin/lib
+ MOTIF_INC := /usr/dt/share/include
+ MOTIF_LIB := /usr/dt/lib
+ OPENGL_INC := /usr/openwin/share/include/X11
+ GLUT_LIB := /usr/local/glut-3.7/lib/glut
+ GLUT_INC := /usr/local/glut-3.7/include
+ ifdef BUILD_64
+ ifdef USE_CC
+ STDFLAGS += -xarch=v9 -KPIC
+ # have to force these PATHs because of a conflict with standard PATHs
+ STDLDFLAGS += -64 -L/usr/lib/64 -L/usr/ucblib/sparcv9
+ LINKER += -xarch=v9
+ endif
+ endif
+endif
+
+ifneq ($(findstring Darwin, $(TEC_UNAME)), )
+ X11_LIBS := Xmu Xp Xt Xext X11
+ X11_LIB := /usr/X11R6/lib
+ X11_INC := /usr/X11R6/include
+ MOTIF_INC := /usr/OpenMotif/include
+ MOTIF_LIB := /usr/OpenMotif/lib
+ ifdef BUILD_DYLIB
+ STDLDFLAGS := -dynamiclib -install_name lib$(TARGETNAME).dylib
+ DLIBEXT := dylib
+ else
+ STDLDFLAGS := -bundle -undefined dynamic_lookup
+ endif
+endif
+
+ifneq ($(findstring FreeBSD, $(TEC_UNAME)), )
+ X11_LIB := /usr/X11R6/lib
+ X11_INC := /usr/X11R6/include
+endif
+
+
+################################
+# Allows an extra configuration file.
+ifdef EXTRA_CONFIG
+include $(EXTRA_CONFIG)
+endif
+################################
+
+
+#---------------------------------#
+# Tecgraf Libraries Location
+TECTOOLS_HOME ?= ../..
+
+IUP ?= $(TECTOOLS_HOME)/iup
+CD ?= $(TECTOOLS_HOME)/cd
+IM ?= $(TECTOOLS_HOME)/im
+LUA ?= $(TECTOOLS_HOME)/lua
+LUA51 ?= $(TECTOOLS_HOME)/lua5.1
+
+
+#---------------------------------#
+# Pre-defined libraries
+
+# Library order:
+# user + iupcd + cd + iup + motif + X
+# Library path order is the oposite
+
+USE_MOTIF = Yes
+
+ifdef USE_LUA
+ LUASUFX :=
+ LIBLUASUFX := 3
+endif
+
+ifdef USE_LUA4
+ LUASUFX := 4
+ LIBLUASUFX := 4
+ override USE_LUA = Yes
+ LUA := $(LUA4)
+endif
+
+ifdef USE_LUA5
+ LUASUFX := 5
+ LIBLUASUFX := 5
+ override USE_LUA = Yes
+ LUA := $(LUA5)
+endif
+
+ifdef USE_LUA50
+ LUASUFX := 50
+ LIBLUASUFX := 5
+ override USE_LUA = Yes
+ LUA := $(LUA50)
+ NO_LUALIB := Yes
+endif
+
+ifdef USE_LUA51
+ LUASUFX := 5.1
+ LIBLUASUFX := 51
+ override USE_LUA = Yes
+ LUA := $(LUA51)
+ NO_LUALIB := Yes
+endif
+
+ifdef USE_IUP3
+ override USE_IUP = Yes
+endif
+
+ifdef USE_IUP3BETA
+ IUP := $(IUP)3
+endif
+
+ifdef USE_IUPBETA
+ IUP := $(IUP)/beta
+endif
+
+ifdef USE_CDBETA
+ CD := $(CD)/beta
+endif
+
+ifdef USE_IMBETA
+ IM := $(IM)/beta
+endif
+
+ifdef USE_GLUT
+ override USE_OPENGL = Yes
+endif
+
+ifdef USE_IUPCONTROLS
+ override USE_CD = Yes
+ override USE_IUP = Yes
+ ifdef USE_IUPLUA
+ ifdef USE_STATIC
+ SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupluacontrols$(LIBLUASUFX).a
+ else
+ LIBS += iupluacontrols$(LIBLUASUFX)
+ endif
+ override USE_CDLUA = Yes
+ endif
+ ifdef USE_STATIC
+ SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupcontrols.a
+ else
+ LIBS += iupcontrols
+ endif
+endif
+
+ifdef USE_IMLUA
+ override USE_IM = Yes
+ ifdef USE_STATIC
+ SLIB += $(IM)/lib/$(TEC_UNAME)/libimlua$(LIBLUASUFX).a
+ else
+ LIBS += imlua$(LIBLUASUFX)
+ endif
+endif
+
+ifdef USE_CDLUA
+ override USE_CD = Yes
+ ifdef USE_STATIC
+ ifdef USE_IUP
+ ifdef USE_OLDNAMES
+ SLIB += $(CD)/lib/$(TEC_UNAME)/libcdluaiup$(LIBLUASUFX).a
+ endif
+ endif
+ SLIB += $(CD)/lib/$(TEC_UNAME)/libcdlua$(LIBLUASUFX).a
+ else
+ ifdef USE_IUP
+ ifdef USE_OLDNAMES
+ LIBS += cdluaiup$(LIBLUASUFX)
+ endif
+ endif
+ LIBS += cdlua$(LIBLUASUFX)
+ endif
+endif
+
+ifdef USE_IUPLUA
+ override USE_IUP = Yes
+ ifdef USE_STATIC
+ ifdef USE_CD
+ ifndef USE_OLDNAMES
+ SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupluacd$(LIBLUASUFX).a
+ endif
+ endif
+ ifdef USE_OPENGL
+ SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupluagl$(LIBLUASUFX).a
+ endif
+ SLIB += $(IUP)/lib/$(TEC_UNAME)/libiuplua$(LIBLUASUFX).a
+ else
+ ifdef USE_CD
+ ifndef USE_OLDNAMES
+ LIBS += iupluacd$(LIBLUASUFX)
+ endif
+ endif
+ ifdef USE_OPENGL
+ LIBS += iupluagl$(LIBLUASUFX)
+ endif
+ LIBS += iuplua$(LIBLUASUFX)
+ endif
+endif
+
+ifdef USE_LUA
+ LUA_LIB ?= $(LUA)/lib/$(TEC_UNAME)
+ ifdef USE_STATIC
+ ifndef NO_LUALIB
+ SLIB += $(LUA_LIB)/liblualib$(LUASUFX).a
+ endif
+ SLIB += $(LUA_LIB)/liblua$(LUASUFX).a
+ else
+ ifndef NO_LUALIB
+ LIBS += lualib$(LUASUFX)
+ endif
+ ifndef NO_LUALINK
+ LIBS += lua$(LUASUFX)
+ LDIR += $(LUA_LIB)
+ endif
+ endif
+
+ LUA_INC ?= $(LUA)/include
+ INCLUDES += $(LUA_INC)
+
+ LUA_BIN ?= $(LUA)/bin/$(TEC_UNAME)
+ BIN2C := $(LUA_BIN)/bin2c$(LUASUFX)
+ LUAC := $(LUA_BIN)/luac$(LUASUFX)
+ LUABIN := $(LUA_BIN)/lua$(LUASUFX)
+endif
+
+ifdef USE_IUP
+ IUPSUFX :=
+ ifdef USE_IUP3
+ ifdef GTK_DEFAULT
+ ifdef USE_MOTIF
+ IUPSUFX := mot
+ else
+ override USE_GTK = Yes
+ endif
+ else
+ ifdef USE_GTK
+ IUPSUFX := gtk
+ else
+ override USE_MOTIF = Yes
+ endif
+ endif
+ else
+ override USE_MOTIF = Yes
+ endif
+ ifdef USE_STATIC
+ ifdef USE_CD
+ ifndef USE_OLDNAMES
+ SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupcd.a
+ endif
+ endif
+ ifdef USE_OPENGL
+ SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupgl.a
+ endif
+ SLIB += $(IUP)/lib/$(TEC_UNAME)/libiup$(IUPSUFX).a
+ else
+ ifdef USE_CD
+ ifndef USE_OLDNAMES
+ LIBS += iupcd
+ endif
+ endif
+ ifdef USE_OPENGL
+ LIBS += iupgl
+ endif
+ LIBS += iup$(IUPSUFX)
+ LDIR += $(IUP)/lib/$(TEC_UNAME)
+ endif
+ INCLUDES += $(IUP)/include
+endif
+
+ifdef USE_CD
+ override USE_X11 = Yes
+ ifdef USE_STATIC
+ ifdef USE_IUP
+ ifdef USE_OLDNAMES
+ SLIB += $(CD)/lib/$(TEC_UNAME)/libcdiup.a
+ endif
+ endif
+ ifdef USE_XRENDER
+ ifdef USE_OLDNAMES
+ SLIB += $(CD)/lib/$(TEC_UNAME)/libcdxrender.a
+ else
+ SLIB += $(CD)/lib/$(TEC_UNAME)/libcdcontextplus.a
+ endif
+ endif
+ SLIB += $(CD)/lib/$(TEC_UNAME)/libcd.a
+ ifdef USE_XRENDER
+ LIBS += Xrender Xft
+ else
+ ifndef USE_GTK
+ ifndef USE_OLDNAMES
+ # Freetype is included in GTK
+# SLIB += $(CD)/lib/$(TEC_UNAME)/libfreetype.a
+ endif
+ endif
+ endif
+ else
+ ifdef USE_XRENDER
+ ifdef USE_OLDNAMES
+ LIBS += cdxrender
+ else
+ LIBS += cdcontextplus
+ endif
+ endif
+ LIBS += cd
+ LDIR += $(CD)/lib/$(TEC_UNAME)
+ ifdef USE_XRENDER
+ LIBS += Xrender Xft
+ else
+ ifndef USE_GTK
+ ifndef USE_OLDNAMES
+ # Freetype is included in GTK
+ LIBS += freetype
+ endif
+ endif
+ endif
+ endif
+ INCLUDES += $(CD)/include
+endif
+
+ifdef USE_IM
+ ifdef USE_STATIC
+ SLIB += $(IM)/lib/$(TEC_UNAME)/libim.a
+ else
+ LIBS += im
+ LDIR += $(IM)/lib/$(TEC_UNAME)
+ endif
+ INCLUDES += $(IM)/include
+endif
+
+# All except gcc in Windows (Cygwin)
+ifeq ($(findstring gcc, $(TEC_UNAME)), )
+
+ifdef USE_GLUT
+ LIBS += glut
+ LDIR += $(GLUT_LIB)
+ STDINCS += $(GLUT_INC)
+endif
+
+ifdef USE_OPENGL
+ override USE_X11 = Yes
+ ifdef USE_MOTIF
+ LIBS += $(MOTIFGL_LIB)
+ endif
+ LIBS += $(OPENGL_LIBS)
+ LDIR += $(OPENGL_LIB)
+ STDINCS += $(OPENGL_INC)
+endif
+
+ifdef USE_MOTIF
+ override USE_X11 = Yes
+ LIBS += Xm
+ LDIR += $(MOTIF_LIB)
+ STDINCS += $(MOTIF_INC)
+ ifneq ($(findstring Linux, $(TEC_UNAME)), )
+ X11_LIBS := Xpm $(X11_LIBS)
+ endif
+ ifneq ($(findstring cygw, $(TEC_UNAME)), )
+ X11_LIBS := Xpm $(X11_LIBS)
+ endif
+endif
+
+ifdef USE_GTK
+# ifneq ($(findstring Darwin, $(TEC_UNAME)), )
+# STDINCS += /Library/Frameworks/Gtk.framework/Headers
+# STDINCS += /Library/Frameworks/GLib.framework/Headers
+# STDINCS += /Library/Frameworks/Cairo.framework/Headers
+# LFLAGS += -framework Gtk
+# else
+ ifneq ($(findstring Darwin, $(TEC_UNAME)), )
+ GTK_BASE := /sw
+ LDIR += /sw/lib
+ LIBS += freetype
+ else
+ GTK_BASE := /usr
+ endif
+ override USE_X11 = Yes
+ LIBS += gtk-x11-2.0 gdk-x11-2.0 gdk_pixbuf-2.0 pango-1.0 pangox-1.0 gobject-2.0 gmodule-2.0 glib-2.0
+ STDINCS += $(GTK_BASE)/include/atk-1.0 $(GTK_BASE)/include/gtk-2.0 $(GTK_BASE)/include/cairo $(GTK_BASE)/include/pango-1.0 $(GTK_BASE)/include/glib-2.0
+ ifeq ($(TEC_SYSARCH), x64)
+ STDINCS += $(GTK_BASE)/lib64/glib-2.0/include $(GTK_BASE)/lib64/gtk-2.0/include
+ else
+ ifeq ($(TEC_SYSARCH), ia64)
+ STDINCS += $(GTK_BASE)/lib64/glib-2.0/include $(GTK_BASE)/lib64/gtk-2.0/include
+ else
+ STDINCS += $(GTK_BASE)/lib/glib-2.0/include $(GTK_BASE)/lib/gtk-2.0/include
+ endif
+ endif
+ ifneq ($(findstring FreeBSD, $(TEC_UNAME)), )
+ STDINCS += /lib/X11R6/include/gtk-2.0
+ endif
+# endif
+endif
+
+ifdef USE_QT
+ override USE_X11 = Yes
+ LIBS += QtGui QtCore
+ QT_BASE_INC := /usr/include/qt4
+ STDINCS += $(QT_BASE_INC) $(QT_BASE_INC)/QtCore $(QT_BASE_INC)/QtGui
+ STDDEFS += -DQT_DLL -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT
+endif
+
+ifdef USE_X11
+ LIBS += $(X11_LIBS)
+ LDIR += $(X11_LIB)
+ STDINCS += $(X11_INC)
+endif
+
+LIBS += m
+
+else
+ # gcc in Windows
+ NO_DYNAMIC ?= Yes
+ STDDEFS += -DWIN32
+
+ ifdef USE_NOCYGWIN
+ STDFLAGS += -mno-cygwin
+ endif
+
+ ifdef USE_GLUT
+ LIBS += glut32
+ endif
+
+ ifdef USE_OPENGL
+ LIBS += opengl32 glu32 glaux
+ endif
+
+ LIBS += gdi32 winspool comdlg32 comctl32 ole32
+
+ ifdef USE_GTK
+ LIBS += gtk-win32-2.0 gdk-win32-2.0 gdk_pixbuf-2.0 pango-1.0 pangowin32-1.0 gobject-2.0 gmodule-2.0 glib-2.0
+ #LDIR += $(GTK)/lib
+ GTK_INC = /usr
+ STDINCS += $(GTK_INC)/include/atk-1.0 $(GTK_INC)/include/gtk-2.0 $(GTK_INC)/include/cairo $(GTK_INC)/include/pango-1.0 $(GTK_INC)/include/glib-2.0 $(GTK_INC)/lib/glib-2.0/include $(GTK_INC)/lib/gtk-2.0/include
+ endif
+
+ APPTYPE ?= windows
+
+ ifeq ($(APPTYPE), windows)
+ LFLAGS += -mwindows
+
+ ifdef USE_NOCYGWIN
+ LFLAGS += -mno-cygwin
+ endif
+ endif
+endif
+
+
+#---------------------------------#
+# Building compilation flags that are sets
+
+INCLUDES := $(addprefix -I, $(INCLUDES))
+STDINCS := $(addprefix -I, $(STDINCS))
+EXTRAINCS := $(addprefix -I, $(EXTRAINCS))
+DEFINES := $(addprefix -D, $(DEFINES))
+
+LIBS := $(addprefix -l, $(LIBS))
+ifdef LDIR
+ LDIR := $(addprefix -L, $(LDIR))
+endif
+
+
+#---------------------------------#
+# Definitions of private variables
+
+# Library flags for application and dynamic library linker
+LFLAGS += $(LDIR) $(LIBS)
+# C compiler flags
+CFLAGS = $(FLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS)
+# C++ compiler flags
+CXXFLAGS = $(CPPFLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS)
+
+# Sources with relative path
+SOURCES := $(addprefix $(SRCDIR)/, $(SRC))
+
+# Target for applications or libraries
+ifeq ($(MAKETYPE), APP)
+ TARGET := $(TARGETDIR)/$(TARGETNAME)
+else
+ ifeq ($(NO_DYNAMIC), Yes)
+ TARGET := $(TARGETDIR)/lib$(TARGETNAME).a
+ else
+ TARGET := $(TARGETDIR)/lib$(TARGETNAME).a $(TARGETDIR)/lib$(TARGETNAME).$(DLIBEXT)
+ endif
+endif
+
+# OBJ: list of .o, without path
+# OBJS: list of .o with relative path
+OBJ = $(notdir $(SRC))
+OBJ := $(OBJ:.c=.o)
+OBJ := $(OBJ:.cpp=.o)
+OBJ := $(OBJ:.cxx=.o)
+OBJ := $(OBJ:.cc=.o)
+OBJ := $(OBJ:.f=.o)
+OBJ := $(OBJ:.for=.o)
+OBJ := $(OBJ:.rc=.ro)
+OBJS = $(addprefix $(OBJDIR)/, $(OBJ))
+
+# LOH: list of .loh, without path
+# LOHS: list of .loh, with relative path
+LO = $(notdir $(SRCLUA))
+LO := $(LO:.lua=$(LO_SUFFIX).lo)
+LOS = $(addprefix $(OBJROOT)/, $(LO))
+
+LOH = $(notdir $(SRCLUA))
+LOH := $(LOH:.lua=$(LO_SUFFIX).loh)
+LOHS = $(addprefix $(LOHDIR)/, $(LOH))
+
+# Construct VPATH variable
+P-SRC = $(dir $(SRC))
+P-SRC += $(dir $(SRCLUA))
+VPATH = .:$(foreach dir,$(P-SRC),$(if $(dir)="./",:$(dir)))
+
+
+#---------------------------------#
+# Main Rule - Build Everything that it is necessary
+
+.PHONY: tecmake
+ifeq ($(MAKETYPE), APP)
+ tecmake: print-start directories application scripts
+else
+ ifeq ($(NO_DYNAMIC), Yes)
+ tecmake: print-start directories static-lib
+ else
+ tecmake: print-start directories static-lib dynamic-lib
+ endif
+endif
+
+.PHONY: print-start
+print-start:
+ @echo ''; echo 'Tecmake - Starting [ $(TARGETNAME):$(TEC_UNAME) ]'
+
+
+#---------------------------------#
+# Dynamic Library Build
+
+.PHONY: dynamic-lib
+dynamic-lib: $(TARGETDIR)/lib$(TARGETNAME).$(DLIBEXT)
+
+$(TARGETDIR)/lib$(TARGETNAME).$(DLIBEXT) : $(LOHS) $(OBJS) $(EXTRADEPS)
+ $(LD) $(STDLDFLAGS) -o $@ $(OBJS) $(SLIB) $(LFLAGS)
+ @echo 'Tecmake - Dynamic Library ($@) Done.'; echo ''
+
+
+#---------------------------------#
+# Static Library Build
+
+.PHONY: static-lib
+static-lib: $(TARGETDIR)/lib$(TARGETNAME).a
+
+$(TARGETDIR)/lib$(TARGETNAME).a : $(LOHS) $(OBJS) $(EXTRADEPS)
+ $(AR) $(STDLFLAGS) $@ $(OBJS) $(SLIB) $(LCFLAGS)
+ -$(RANLIB) $@
+ @echo 'Tecmake - Static Library ($@) Done.'; echo ''
+
+
+#---------------------------------#
+# Application Build
+
+.PHONY: application
+application: $(TARGETDIR)/$(TARGETNAME)
+
+$(TARGETDIR)/$(TARGETNAME) : $(LOHS) $(OBJS) $(EXTRADEPS)
+ $(LINKER) -o $@ $(OBJS) $(SLIB) $(LFLAGS)
+ @if [ ! -z "$(STRIP)" ]; then \
+ echo "Striping debug information" ;\
+ strip $@ ;\
+ fi
+ @echo 'Tecmake - Application ($@) Done.'; echo ''
+
+
+#---------------------------------#
+# Application Scripts
+
+# Script name
+SRELEASE := $(SRCDIR)/$(TARGETNAME)
+
+.PHONY: scripts
+ifdef NO_SCRIPTS
+ scripts: ;
+else
+ scripts: $(SRELEASE) ;
+endif
+
+$(SRELEASE): $(MAKENAME)
+ @echo 'Building script $(@F)'
+ @echo "#!/bin/csh" > $@
+ @echo "# Script generated automatically by tecmake v$(VERSION)" >> $@
+ @echo "# Remove the comment bellow to set the LD_LIBRARY_PATH if needed." >> $@
+ @echo '#setenv LD_LIBRARY_PATH $(MYLIB1)/lib/$${TEC_UNAME}:$(MYLIB2)/lib/$${TEC_UNAME}:$$LD_LIBRARY_PATH' >> $@
+ @echo 'if ( -r app.env ) source app.env' >> $@
+ @echo 'exec $(TARGETROOT)/$$TEC_UNAME/$(TARGETNAME) $$*' >> $@
+ @chmod a+x $@
+
+
+#---------------------------------#
+# Directories Creation
+
+.PHONY: directories
+directories: $(OBJDIR) $(TARGETDIR) $(EXTRADIR) $(LOHDIR)
+
+$(OBJDIR) $(TARGETDIR):
+ if [ ! -d $@ ] ; then mkdir -p $@ ; fi
+
+ifdef EXTRADIR
+ $(EXTRADIR):
+ if [ ! -d $@ ] ; then mkdir -p $@ ; fi
+else
+ $(EXTRADIR): ;
+endif
+
+ifdef LOHDIR
+ $(LOHDIR):
+ if [ ! -d $@ ] ; then mkdir -p $@ ; fi
+else
+ $(LOHDIR): ;
+endif
+
+
+#---------------------------------#
+# Compilation Rules
+
+$(OBJDIR)/%.o: $(SRCDIR)/%.c
+ @echo Compiling $(<F)...
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
+ @echo Compiling $(<F)...
+ $(CPPC) -c $(CXXFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(SRCDIR)/%.cxx
+ @echo Compiling $(<F)...
+ $(CPPC) -c $(CXXFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(SRCDIR)/%.cc
+ @echo Compiling $(<F)...
+ $(CPPC) -c $(CXXFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(SRCDIR)/%.f
+ @echo Compiling $(<F)...
+ $(FC) -c $(FFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(SRCDIR)/%.for
+ @echo Compiling $(<F)...
+ $(FC) -c $(FFLAGS) -o $@ $<
+
+$(OBJDIR)/%.ro: $(SRCDIR)/%.rc
+ @echo Compiling $(<F)...
+ $(RCC) $(RCFLAGS) -O coff -o $@ $<
+
+$(LOHDIR)/%.loh: $(OBJROOT)/%.lo
+ @echo Generating $(<F)...
+ $(BIN2C) $< > $@
+
+$(OBJROOT)/%$(LO_SUFFIX).lo: $(SRCLUADIR)/%.lua
+ @echo Compiling $(<F)...
+ $(LUAC) -o $@ $<
+
+
+#---------------------------------#
+# Dependencies
+
+# make depend
+# Build dependencies
+.PHONY: depend
+depend: $(DEPEND)
+
+$(DEPEND): $(MAKENAME)
+ ifdef SRC
+ @echo "" > $(DEPEND)
+ @which $(CPPC) 2> /dev/null 1>&2 ;\
+ if [ $$? -eq 0 ]; then \
+ echo "Building dependencies... (can be slow)" ;\
+ $(CPPC) $(INCLUDES) $(DEFINES) $(STDDEFS) -MM $(SOURCES) | \
+ sed -e '1,$$s/^\([^ ]\)/$$(OBJDIR)\/\1/' > $(DEPEND) ;\
+ else \
+ echo "" ;\
+ echo "$(CPPC) not found. Dependencies can not be built." ;\
+ echo "Must set USE_NODEPEND=Yes." ;\
+ echo "" ;\
+ exit 1 ;\
+ fi
+ endif
+
+###################
+ifndef USE_NODEPEND
+include $(DEPEND)
+endif
+###################
+
+
+#---------------------------------#
+# Management Rules
+
+# make clean-extra
+# Remove extra files
+.PHONY: clean-extra
+clean-extra:
+ rm -f $(DEPEND) $(SRELEASE) so_locations
+
+# make clean-lohs
+# Remove Lua object inclusion files
+.PHONY: clean-lohs
+clean-lohs:
+ rm -f $(LOS) $(LOHS)
+
+# make clean-obj
+# Remove object files
+.PHONY: clean-obj
+clean-obj:
+ rm -f $(OBJS)
+
+# make clean-target
+# Remove target
+.PHONY: clean-target
+clean-target:
+ rm -f $(TARGET)
+
+# make clean
+# Remove target and object files
+.PHONY: clean
+clean: clean-target clean-obj
+
+# make rebuild
+# Remove symbols from executables
+.PHONY: strip
+strip:
+ test -r $(TARGETDIR)/$(TARGETNAME) && strip $(TARGETDIR)/$(TARGETNAME)
+
+# make rebuild
+# Rebuild target and object files
+.PHONY: rebuild
+rebuild: clean-extra clean-lohs clean-obj clean-target tecmake
+
+# make relink
+# Rebuild target without rebuilding object files
+.PHONY: relink
+relink: clean-target tecmake
+
+.PHONY: version
+version:
+ @echo "Tecmake Compact Version $(VERSION)"
+
+#---------------------------------#
diff --git a/iup/test/bigtest.c b/iup/test/bigtest.c
new file mode 100755
index 0000000..713e752
--- /dev/null
+++ b/iup/test/bigtest.c
@@ -0,0 +1,194 @@
+#if 0
+/* To check for memory leaks */
+#define VLD_MAX_DATA_DUMP 80
+#include <vld.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+#include "iupcontrols.h"
+#include "iupkey.h"
+
+/* Must define BIG_TEST on the Project and include in the build all test files */
+#ifdef BIG_TEST
+void ButtonTest(void);
+void CanvasScrollbarTest(void);
+void CanvasTest(void);
+void CanvasCDDBufferTest(void);
+void CanvasCDSimpleTest(void);
+void DialogTest(void);
+void FrameTest(void);
+void TabsTest(void);
+void SysInfoTest(void);
+void GetColorTest(void);
+#ifdef USE_OPENGL
+void GLCanvasTest(void);
+void GLCanvasCubeTest(void);
+#endif
+void HboxTest(void);
+void IdleTest(void);
+void LabelTest(void);
+void ListTest(void);
+void MatrixTest(void);
+void MatrixCbModeTest(void);
+void MatrixCbsTest(void);
+void MdiTest(void);
+void VboxTest(void);
+void MenuTest(void);
+void ColorBrowserTest(void);
+void ColorbarTest(void);
+void CellsNumberingTest(void);
+void DialTest(void);
+void GaugeTest(void);
+void CellsDegradeTest(void);
+void CellsCheckboardTest(void);
+void ValTest(void);
+void TreeTest(void);
+void TrayTest(void);
+void ToggleTest(void);
+void TimerTest(void);
+void TextSpinTest(void);
+void TextTest(void);
+void SpinTest(void);
+void SampleTest(void);
+void ProgressbarTest(void);
+void PreDialogsTest(void);
+#ifdef PPLOT_TEST
+void PPlotTest(void);
+#endif
+void GetParamTest(void);
+void ConfTest(void);
+void ZboxTest(void);
+void ScanfTest(void);
+void SboxTest(void);
+void ClipboardTest(void);
+
+void HelpTest(void)
+{
+ IupHelp("http://www.tecgraf.puc-rio.br/iup");
+ //IupHelp("..\\html\\index.html");
+}
+
+typedef struct _TestItems{
+ char* title;
+ void (*func)(void);
+}TestItems;
+
+static TestItems test_list[] = {
+ {"Button", ButtonTest},
+ {"Canvas", CanvasTest},
+ {"CanvasCDSimpleTest", CanvasCDSimpleTest},
+ {"CanvasCDDBuffer", CanvasCDDBufferTest},
+ {"CanvasScrollbar", CanvasScrollbarTest},
+ {"CellsCheckboard", CellsCheckboardTest},
+ {"CellsDegrade", CellsDegradeTest},
+ {"CellsNumbering", CellsNumberingTest},
+ {"Class Conference", ConfTest},
+ {"Clipboard", ClipboardTest},
+ {"ColorBrowser", ColorBrowserTest},
+ {"Colorbar", ColorbarTest},
+ {"Dial", DialTest},
+ {"Dialog", DialogTest},
+ {"Frame", FrameTest},
+#ifdef USE_OPENGL
+ {"GLCanvas", GLCanvasTest},
+ {"GLCanvasCube", GLCanvasCubeTest},
+#endif
+ {"Gauge", GaugeTest},
+ {"GetColor", GetColorTest},
+ {"GetParam", GetParamTest},
+ {"Help", HelpTest},
+ {"Hbox", HboxTest},
+ {"Idle", IdleTest},
+ {"Label", LabelTest},
+ {"List", ListTest},
+ {"Matrix", MatrixTest},
+ {"MatrixCbMode", MatrixCbModeTest},
+ {"MatrixCbs", MatrixCbsTest},
+ {"Mdi", MdiTest},
+ {"Menu", MenuTest},
+#ifdef PPLOT_TEST
+ {"PPlot", PPlotTest},
+#endif
+ {"PreDialogs", PreDialogsTest},
+ {"Progressbar", ProgressbarTest},
+ {"Sample", SampleTest},
+ {"Sbox", SboxTest},
+ {"Scanf", ScanfTest},
+ {"Spin", SpinTest},
+ {"SysInfo", SysInfoTest},
+ {"Tabs", TabsTest},
+ {"Text", TextTest},
+ {"TextSpin", TextSpinTest},
+ {"Timer", TimerTest},
+ {"Toggle", ToggleTest},
+ {"Tray", TrayTest},
+ {"Tree", TreeTest},
+ {"Val", ValTest},
+ {"Vbox", VboxTest},
+ {"Zbox", ZboxTest},
+};
+
+static int k_enter_cb(Ihandle*ih)
+{
+ int pos = IupGetInt(ih, "VALUE");
+ if (pos > 0)
+ test_list[pos-1].func();
+ return IUP_DEFAULT;
+}
+
+static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status)
+{
+ (void)pressed;
+ if (but==IUP_BUTTON1 && iup_isdouble(status))
+ {
+ int pos = IupConvertXYToPos(ih, x, y);
+ test_list[pos-1].func();
+ return IUP_IGNORE;
+ }
+ return IUP_DEFAULT;
+}
+
+static int close_cb(Ihandle *ih)
+{
+ (void)ih;
+ return IUP_CLOSE;
+}
+
+int main(int argc, char* argv[])
+{
+ int i, count = sizeof(test_list)/sizeof(TestItems);
+ char str[50];
+ Ihandle *dlg, *list;
+
+ IupOpen(&argc, &argv);
+ IupControlsOpen();
+// IupOldValOpen();
+// IupOldTabsOpen();
+
+ dlg = IupDialog(IupVbox(list = IupList(NULL), NULL));
+ IupSetAttribute(dlg, "MARGIN", "10x10");
+ IupSetAttribute(dlg, "TITLE", "IupTests");
+ IupSetCallback(dlg, "CLOSE_CB", close_cb);
+
+ IupSetAttribute(list, "VISIBLELINES", "15");
+ IupSetAttribute(list, "EXPAND", "YES");
+ IupSetCallback(list, "BUTTON_CB", (Icallback)button_cb);
+ IupSetCallback(list, "K_CR", k_enter_cb);
+
+ for (i=0; i<count; i++)
+ {
+ sprintf(str, "%d", i+1);
+ IupSetAttribute(list, str, test_list[i].title);
+ }
+
+ IupShowXY(dlg, 100, IUP_CENTER);
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/button.c b/iup/test/button.c
new file mode 100755
index 0000000..da2906d
--- /dev/null
+++ b/iup/test/button.c
@@ -0,0 +1,411 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+#include "iupkey.h"
+
+#define TEST_IMAGE_SIZE 20
+
+static Ihandle* load_image_FileSave(void)
+{
+ unsigned char imgdata[] = {
+ 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 183, 182, 245, 255, 183, 182, 245, 255, 179, 178, 243, 255, 174, 173, 241, 255, 168, 167, 238, 255, 162, 161, 234, 255, 155, 154, 231, 255, 148, 147, 228, 255, 143, 142, 224, 255, 136, 135, 221, 255, 129, 128, 218, 255, 123, 122, 214, 255, 117, 116, 211, 255, 112, 111, 209, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 179, 178, 243, 255, 190, 189, 255, 255, 147, 146, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 75, 88, 190, 255, 89, 88, 176, 255, 89, 88, 176, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 173, 172, 240, 255, 190, 189, 255, 255, 138, 137, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 63, 82, 184, 255, 51, 51, 103, 255, 86, 85, 170, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 167, 166, 237, 255, 190, 189, 255, 255, 129, 128, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 52, 77, 179, 255, 122, 121, 223, 255, 83, 82, 164, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 159, 158, 233, 255, 190, 189, 255, 255, 119, 118, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 40, 71, 173, 255, 114, 113, 215, 255, 80, 79, 159, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 152, 151, 229, 255, 190, 189, 255, 255, 110, 109, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 198, 209, 229, 255, 28, 65, 167, 255, 103, 103, 204, 255, 77, 77, 154, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 146, 145, 226, 255, 190, 189, 255, 255, 103, 102, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 198, 209, 229, 255, 189, 202, 225, 255, 17, 59, 161, 255, 92, 93, 194, 255, 74, 74, 148, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 139, 138, 223, 255, 188, 187, 255, 255, 183, 182, 255, 255, 96, 99, 201, 255, 86, 94, 196, 255, 75, 88, 190, 255, 63, 82, 184, 255, 52, 77, 179, 255, 40, 71, 173, 255, 28, 65, 167, 255, 17, 59, 161, 255, 92, 93, 193, 255, 84, 86, 186, 255, 71, 71, 143, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 132, 131, 219, 255, 180, 179, 255, 255, 174, 173, 255, 255, 164, 163, 252, 255, 143, 142, 244, 255, 135, 134, 236, 255, 129, 128, 230, 255, 122, 121, 223, 255, 114, 113, 215, 255, 108, 107, 209, 255, 92, 93, 193, 255, 84, 86, 186, 255, 76, 80, 178, 255, 68, 68, 137, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 124, 123, 215, 255, 170, 169, 255, 255, 160, 159, 251, 255, 148, 147, 245, 255, 75, 91, 113, 255, 75, 91, 113, 255, 75, 91, 113, 255, 75, 91, 113, 255, 82, 98, 118, 255, 91, 106, 125, 255, 84, 86, 186, 255, 76, 79, 178, 255, 68, 73, 170, 255, 65, 65, 131, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 118, 117, 212, 255, 160, 159, 255, 255, 145, 144, 245, 255, 135, 134, 236, 255, 75, 91, 113, 255, 0, 0, 0, 255, 52, 60, 71, 255, 206, 217, 233, 255, 212, 221, 236, 255, 103, 116, 133, 255, 67, 75, 174, 255, 68, 73, 170, 255, 60, 66, 163, 255, 62, 62, 125, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 112, 111, 209, 255, 154, 153, 255, 255, 135, 134, 236, 255, 129, 128, 230, 255, 75, 91, 113, 255, 52, 60, 71, 255, 104, 120, 141, 255, 216, 224, 237, 255, 224, 231, 241, 255, 115, 127, 143, 255, 53, 65, 163, 255, 60, 66, 162, 255, 53, 61, 156, 255, 60, 59, 120, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 108, 107, 207, 255, 143, 142, 243, 255, 129, 128, 230, 255, 36, 68, 170, 255, 33, 50, 71, 255, 171, 180, 195, 255, 179, 187, 198, 255, 188, 193, 202, 255, 196, 200, 206, 255, 72, 77, 86, 255, 51, 62, 158, 255, 54, 61, 156, 255, 49, 57, 152, 255, 57, 57, 114, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 108, 107, 207, 84, 101, 100, 195, 255, 86, 85, 170, 255, 83, 82, 164, 255, 80, 79, 159, 255, 77, 77, 154, 255, 74, 74, 148, 255, 71, 71, 143, 255, 68, 68, 137, 255, 65, 65, 131, 255, 60, 59, 120, 255, 60, 59, 120, 255, 57, 57, 114, 255, 55, 54, 110, 255, 255, 0, 255, 255,
+ 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static unsigned char image_data_8 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] =
+{
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+};
+
+static unsigned char image_data_8_pressed [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] =
+{
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,5,1,1,1,1,1,2,2,2,2,2,5,0,0,0,5,
+ 5,0,0,0,1,5,1,1,1,1,2,2,2,2,5,2,0,0,0,5,
+ 5,0,0,0,1,1,5,1,1,1,2,2,2,5,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,5,1,1,2,2,5,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,5,1,2,5,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,5,5,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,5,5,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,5,3,4,5,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,5,3,3,4,4,5,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,5,3,3,3,4,4,4,5,4,4,0,0,0,5,
+ 5,0,0,0,3,5,3,3,3,3,4,4,4,4,5,4,0,0,0,5,
+ 5,0,0,0,5,3,3,3,3,3,4,4,4,4,4,5,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+};
+
+static unsigned char image_data_8_inactive [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] =
+{
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,5,5,1,1,1,1,1,1,1,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,1,1,1,1,1,1,1,5,5,5,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+};
+
+static unsigned char image_data_24 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE*3] =
+{
+ 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,
+};
+
+static unsigned char image_data_32 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE*4] =
+{
+ 000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,
+};
+
+static char* get_name(Ihandle* ih)
+{
+ return IupGetAttribute(ih, "NAME");
+}
+
+static int action_cb(Ihandle *ih)
+{
+ printf("ACTION(%s)\n", get_name(ih));
+ return IUP_DEFAULT;
+}
+
+static int getfocus_cb(Ihandle *ih)
+{
+ printf("GETFOCUS_CB(%s)\n", get_name(ih));
+ return IUP_DEFAULT;
+}
+
+static int help_cb(Ihandle* ih)
+{
+ printf("HELP_CB(%s)\n", get_name(ih));
+ return IUP_DEFAULT;
+}
+
+static int killfocus_cb(Ihandle *ih)
+{
+ printf("KILLFOCUS_CB(%s)\n", get_name(ih));
+ return IUP_DEFAULT;
+}
+
+static int leavewindow_cb(Ihandle *ih)
+{
+ printf("LEAVEWINDOW_CB(%s)\n", get_name(ih));
+ return IUP_DEFAULT;
+}
+
+static int enterwindow_cb(Ihandle *ih)
+{
+ printf("ENTERWINDOW_CB(%s)\n", get_name(ih));
+ return IUP_DEFAULT;
+}
+
+static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status)
+{
+ printf("BUTTON_CB(%s, but=%c (%d), x=%d, y=%d [%s])\n", get_name(ih),(char)but,pressed,x,y, status);
+ return IUP_DEFAULT;
+}
+
+char *iupKeyCodeToName(int code);
+
+static int k_any(Ihandle *ih, int c)
+{
+ if (iup_isprint(c))
+ printf("K_ANY(%s, %d = %s \'%c\')\n", get_name(ih), c, iupKeyCodeToName(c), (char)c);
+ else
+ printf("K_ANY(%s, %d = %s)\n", get_name(ih), c, iupKeyCodeToName(c));
+ printf(" MODKEYSTATE(%s)\n", IupGetGlobal("MODKEYSTATE"));
+ return IUP_DEFAULT;
+}
+
+static int active_cb(Ihandle *ih)
+{
+ static int active = 1;
+ Ihandle* dlg = IupGetDialog(ih);
+ Ihandle* box = IupGetChild(dlg, 0);
+ if (active)
+ IupSetAttribute(box, "ACTIVE", "NO");
+ else
+ IupSetAttribute(box, "ACTIVE", "YES");
+ active = !active;
+ IupSetAttribute(ih, "ACTIVE", "YES");
+ return IUP_DEFAULT;
+}
+
+static void set_callbacks(Ihandle* button)
+{
+ IupSetCallback(button, "ACTION", action_cb);
+// IupSetCallback(button, "BUTTON_CB", (Icallback)button_cb);
+
+ IupSetCallback(button, "K_ANY", (Icallback)k_any);
+ IupSetCallback(button, "HELP_CB", (Icallback)help_cb);
+
+// IupSetCallback(button, "GETFOCUS_CB", (Icallback)getfocus_cb);
+// IupSetCallback(button, "KILLFOCUS_CB", (Icallback)killfocus_cb);
+// IupSetCallback(button, "ENTERWINDOW_CB", (Icallback)enterwindow_cb);
+// IupSetCallback(button, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb);
+}
+
+static int show_cb(Ihandle *ih, int state)
+{
+ char* state_str[5] ={
+ "SHOW",
+ "RESTORE",
+ "MINIMIZE",
+ "MAXIMIZE",
+ "HIDE"
+ };
+ printf("SHOW_CB(%s, %s)\n", IupGetAttribute(ih, "TESTTITLE"), state_str[state]);
+ return IUP_DEFAULT;
+}
+
+void ButtonTest(void)
+{
+ Ihandle *dlg, *button, *label, *image1, *image1i, *image1p, *image2, *image3,
+ *box1, *box2;
+
+ /* IupImageLibOpen(); */
+
+ box1 = IupVbox(NULL);
+ IupSetAttribute(box1, "MARGIN", "5x5");
+ IupSetAttribute(box1, "GAP", "5");
+// IupSetAttribute(box1, "BGCOLOR", "75 150 170");
+// IupSetAttribute(box1, "PADDING", "15x15");
+
+ button = IupButton("ACTIVE", NULL);
+ IupSetAttribute(button, "TITLE", "Button Text");
+ IupSetCallback(button, "ACTION", active_cb);
+ IupAppend(box1, button);
+
+ button = IupButton(NULL, NULL);
+ IupSetAttribute(button, "TITLE", "Text (ηγν)");
+// IupSetAttribute(button, "TITLE", "Text");
+ //IupSetAttribute(button, "TITLE", "Text &Button\nSecond Line");
+ IupSetAttribute(button, "TIP", "Button Tip");
+ //IupSetAttribute(button, "PADDING", "15x15");
+ //IupSetAttribute(button, "BGCOLOR", "128 128 255");
+ IupSetAttribute(button, "SIZE", "40");
+// IupSetAttribute(button, "FGCOLOR", "0 0 255");
+// IupSetAttribute(button, "RASTERSIZE", "200x100");
+ IupSetAttribute(button, "ALIGNMENT", "ACENTER:ACENTER");
+// IupSetAttribute(button, "ALIGNMENT", "ALEFT:ATOP");
+ IupSetAttribute(button, "NAME", "button1");
+ set_callbacks(button);
+ IupAppend(box1, button);
+
+ button = IupButton(NULL, NULL);
+ IupSetAttribute(button, "TITLE", "Text Button\nSecond Line");
+ IupSetAttribute(button, "RASTERSIZE", "200x100");
+ IupSetAttribute(button, "ALIGNMENT", "ACENTER:ACENTER");
+ IupSetAttribute(button, "FONT", "Helvetica, 14");
+ IupSetAttribute(button, "FLAT", "YES");
+ IupSetAttribute(button, "NAME", "button2");
+ set_callbacks(button);
+ IupAppend(box1, button);
+
+ button = IupButton(NULL, NULL);
+ IupSetAttribute(button, "TITLE", "Text Button\n<b>Second Line</b>");
+ IupSetAttribute(button, "RASTERSIZE", "200x100");
+ IupSetAttribute(button, "ALIGNMENT", "ARIGHT:ABOTTOM");
+ IupSetAttribute(button, "MARKUP", "YES");
+ IupSetAttribute(button, "NAME", "button3");
+ IupSetAttribute(button, "CANFOCUS", "NO");
+ set_callbacks(button);
+ IupAppend(box1, button);
+
+ box2 = IupVbox(NULL);
+ IupSetAttribute(box2, "MARGIN", "5x5");
+ IupSetAttribute(box2, "GAP", "5");
+// IupSetAttribute(box2, "BGCOLOR", "75 150 170");
+// IupSetAttribute(box2, "PADDING", "15x15");
+
+ image1 = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8);
+ IupSetAttribute(image1, "0", "BGCOLOR");
+ IupSetAttribute(image1, "1", "255 0 0");
+ IupSetAttribute(image1, "2", "0 255 0");
+ IupSetAttribute(image1, "3", "0 0 255");
+ IupSetAttribute(image1, "4", "255 255 255");
+ IupSetAttribute(image1, "5", "0 0 0");
+
+ image1i = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8_inactive);
+ IupSetAttribute(image1i, "0", "BGCOLOR");
+ IupSetAttribute(image1i, "1", "255 0 0");
+ IupSetAttribute(image1i, "2", "0 255 0");
+ IupSetAttribute(image1i, "3", "0 0 255");
+ IupSetAttribute(image1i, "4", "255 255 255");
+ IupSetAttribute(image1i, "5", "0 0 0");
+
+ image1p = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8_pressed);
+ IupSetAttribute(image1p, "0", "BGCOLOR");
+ IupSetAttribute(image1p, "1", "255 0 0");
+ IupSetAttribute(image1p, "2", "0 255 0");
+ IupSetAttribute(image1p, "3", "0 0 255");
+ IupSetAttribute(image1p, "4", "255 255 255");
+ IupSetAttribute(image1p, "5", "0 0 0");
+
+ image2 = IupImageRGB(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_24);
+
+ image3 = IupImageRGBA(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_32);
+
+ button = IupButton(NULL, NULL);
+ IupSetAttribute(button, "TITLE", "Images");
+ IupSetAttributeHandle(button, "IMAGE", load_image_FileSave());
+ IupAppend(box2, button);
+
+ button = IupButton(NULL, NULL);
+// IupSetAttribute(button, "ALIGNMENT", "ALEFT:ATOP");
+// IupSetAttribute(button, "RASTERSIZE", "200x100");
+// IupSetAttribute(button, "IMAGEPOSITION", "BOTTOM");
+ IupSetAttribute(button, "PADDING", "5x5");
+// IupSetAttribute(button, "TITLE", "Text1");
+ IupSetAttribute(button, "FONT", "Helvetica, 14");
+// IupSetAttribute(button, "IMAGE", "IUP_Tecgraf");
+ IupSetAttributeHandle(button, "IMAGE", image1);
+// IupSetAttributeHandle(button, "IMINACTIVE", image1i);
+// IupSetAttributeHandle(button, "XXX__IMPRESS", image1p);
+ IupSetAttribute(button, "TIP", "Image Label");
+ IupSetAttribute(button, "NAME", "button4");
+ set_callbacks(button);
+ IupAppend(box2, button);
+
+ button = IupButton(NULL, NULL);
+ IupSetAttributeHandle(button, "IMAGE", image2);
+ IupSetAttribute(button, "TITLE", "Text2");
+// IupSetAttribute(button, "IMAGEPOSITION", "TOP");
+// IupSetAttribute(button, "SPACING", "30");
+// IupSetAttribute(button, "ALIGNMENT", "ALEFT");
+// IupSetAttribute(button, "RASTERSIZE", "200x100");
+ IupSetAttribute(button, "FLAT", "YES");
+ IupSetAttribute(button, "FOCUSONCLICK", "NO");
+ IupSetAttribute(button, "NAME", "button5");
+ set_callbacks(button);
+ IupAppend(box2, button);
+
+ button = IupButton(NULL, NULL);
+ IupSetAttributeHandle(button, "IMAGE", image3);
+ IupSetAttribute(button, "TITLE", "Text3");
+// IupSetAttribute(button, "RASTERSIZE", "200x100");
+// IupSetAttribute(button, "ALIGNMENT", "ARIGHT");
+ IupSetAttribute(button, "NAME", "button6");
+ set_callbacks(button);
+ IupAppend(box2, button);
+
+ label = IupLabel(NULL);
+ IupSetAttribute(label, "SEPARATOR", "VERTICAL");
+
+ dlg = IupDialog(IupHbox(box1, label, box2, NULL));
+ IupSetAttribute(dlg, "TITLE", "IupButton Test");
+// IupSetAttribute(box1, "BGCOLOR", "128 0 0");
+// IupSetAttribute(dlg, "BGCOLOR", "0 128 0");
+// IupSetAttribute(dlg, "BACKGROUND", "0 0 128");
+// IupSetAttributeHandle(dlg, "BACKGROUND", image2);
+
+ IupSetAttributeHandle(dlg, "STARTFOCUS", button);
+
+ IupShow(dlg);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ ButtonTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/canvas.c b/iup/test/canvas.c
new file mode 100755
index 0000000..d13945c
--- /dev/null
+++ b/iup/test/canvas.c
@@ -0,0 +1,346 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+#include "iupkey.h"
+
+static unsigned char matrx_img_cur_excel[15*15] =
+ {
+ 0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,
+ 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0,
+ 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0,
+ 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0,
+ 1,1,1,1,1,2,2,2,2,1,1,1,1,1,0,
+ 1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,
+ 1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,
+ 1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,
+ 1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,
+ 0,1,1,1,1,2,2,2,2,1,1,1,1,1,1,
+ 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0,
+ 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0,
+ 0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,
+ 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ };
+
+static unsigned char pixmap_cursor [ ] =
+{
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,2,2,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+} ;
+
+//#define USE_GTK
+
+/* draw a rectangle that has w=600 always, white background and a red X */
+#ifdef USE_GTK
+#include <gtk/gtk.h>
+static void drawTest(Ihandle *ih, int posx)
+{
+ GtkWidget* widget = (GtkWidget*)IupGetAttribute(ih, "WID");
+ gdk_draw_arc (widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
+ TRUE,
+ 0, 0, widget->allocation.width, widget->allocation.height,
+ 0, 64 * 360);
+}
+#else
+#ifdef WIN32
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0500
+#include <windows.h>
+static void drawTest(Ihandle *ih, int posx)
+{
+ RECT rect;
+ int w, h;
+ HWND hWnd = (HWND)IupGetAttribute(ih, "HWND");
+ HDC hDC = GetDC(hWnd);
+
+ IupGetIntInt(ih, "DRAWSIZE", &w, &h);
+
+ SetRect(&rect, 0, 0, w, h);
+ FillRect(hDC, &rect, GetStockObject(WHITE_BRUSH));
+
+ SelectObject(hDC, GetStockObject(DC_PEN));
+ SetDCPenColor(hDC, RGB(255, 0, 0));
+
+ w = 600; /* virtual size */
+ MoveToEx(hDC, -posx, 0, NULL);
+ LineTo(hDC, w-posx, h);
+ MoveToEx(hDC, -posx, h, NULL);
+ LineTo(hDC, w-posx, 0);
+
+ ReleaseDC(hWnd, hDC);
+}
+#else
+#include <X11/Xlib.h>
+
+#define xCOLOR8TO16(_x) (_x*257) /* 65535/255 = 257 */
+static unsigned long xGetPixel(Display* dpy, unsigned char cr, unsigned char cg, unsigned char cb)
+{
+ XColor xc;
+ xc.red = xCOLOR8TO16(cr);
+ xc.green = xCOLOR8TO16(cg);
+ xc.blue = xCOLOR8TO16(cb);
+ xc.flags = DoRed | DoGreen | DoBlue;
+
+ XAllocColor(dpy, DefaultColormap(dpy, XDefaultScreen(dpy)), &xc);
+ return xc.pixel;
+}
+
+static void drawTest(Ihandle *ih, int posx)
+{
+ int w, h;
+ Display* dpy = (Display*)IupGetAttribute(ih, "XDISPLAY"); /* works for Motif and GTK */
+ Drawable wnd = (Drawable)IupGetAttribute(ih, "XWINDOW");
+ GC gc = XCreateGC(dpy, wnd, 0, NULL);
+
+ IupGetIntInt(ih, "DRAWSIZE", &w, &h);
+
+ XSetForeground(dpy, gc, xGetPixel(dpy, 255, 255, 255));
+ XFillRectangle(dpy, wnd, gc, 0, 0, w, h);
+
+ XSetForeground(dpy, gc, xGetPixel(dpy, 255, 0, 0));
+
+ w = 600; /* virtual size */
+ XDrawLine(dpy, wnd, gc, -posx, 0, w-posx, h);
+ XDrawLine(dpy, wnd, gc, -posx, h, w-posx, 0);
+
+ XFreeGC(dpy, gc);
+}
+#endif
+#endif
+
+static int map_cb(Ihandle *ih)
+{
+ printf("MAP_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int action(Ihandle *ih, float posx, float posy)
+{
+ printf("ACTION(posx=%.2f, posy=%.2f)\n", posx, posy);
+ drawTest(ih, (int)posx);
+ return IUP_DEFAULT;
+}
+
+static int scroll_cb(Ihandle *ih, int op, float posx, float posy)
+{
+ char* op2str[12] = {"SBUP", "SBDN", "SBPGUP", "SBPGDN", "SBPOSV", "SBDRAGV",
+ "SBLEFT", "SBRIGHT", "SBPGLEFT", "SBPGRIGHT", "SBPOSH", "SBDRAGH"};
+ printf("SCROLL_CB(%s, posx=%.2f, posy=%.2f)\n", op2str[op], posx, posy);
+ IupRedraw(ih, 0);
+ return IUP_DEFAULT;
+}
+
+static int dropfiles_cb(Ihandle *ih, const char* filename, int num, int x, int y)
+{
+ printf("DROPFILES_CB(%s, %d, x=%d, y=%d)\n", filename, num, x, y);
+ return IUP_DEFAULT;
+}
+
+static int resize_cb(Ihandle *ih, int w, int h)
+{
+ printf("RESIZE_CB(%d, %d) RASTERSIZE=%s CLIENTSIZE=%s\n", w, h, IupGetAttribute(ih, "RASTERSIZE"), IupGetAttribute(ih, "CLIENTSIZE"));
+
+ /* update page size */
+ IupSetfAttribute(ih, "DX", "%d", w);
+
+ return IUP_DEFAULT;
+}
+
+static int getfocus_cb(Ihandle *ih)
+{
+ printf("GETFOCUS_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int help_cb(Ihandle* ih)
+{
+ printf("HELP_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int killfocus_cb(Ihandle *ih)
+{
+ printf("KILLFOCUS_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int focus_cb(Ihandle *ih, int focus)
+{
+ printf("FOCUS_CB(%d)\n", focus);
+ return IUP_DEFAULT;
+}
+
+static int leavewindow_cb(Ihandle *ih)
+{
+ printf("LEAVEWINDOW_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int enterwindow_cb(Ihandle *ih)
+{
+ printf("ENTERWINDOW_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status)
+{
+ if (but==IUP_BUTTON1 && pressed)
+ IupSetAttribute(ih, "CURSOR", "CROSS");
+ if (but==IUP_BUTTON1 && !pressed)
+ IupSetAttribute(ih, "CURSOR", NULL);
+ printf("BUTTON_CB(but=%c (%d), x=%d, y=%d [%s])\n",(char)but,pressed,x,y, status);
+ return IUP_DEFAULT;
+}
+
+static int wheel_cb(Ihandle *ih,float delta,int x,int y,char* status)
+{
+ printf("WHEEL_CB(delta=%.2f, x=%d, y=%d [%s])\n",delta,x,y, status);
+ return IUP_DEFAULT;
+}
+
+static int motion_cb(Ihandle *ih,int x,int y,char* status)
+{
+ printf("MOTION_CB(x=%d, y=%d [%s])\n",x,y, status);
+ return IUP_DEFAULT;
+}
+
+char *iupKeyCodeToName(int code);
+
+static int k_any(Ihandle *ih, int c)
+{
+ if (c == K_a)
+ IupSetAttribute(ih, "POSX", "100");
+
+ if (iup_isprint(c))
+ printf("K_ANY(%d = %s \'%c\')\n", c, iupKeyCodeToName(c), (char)c);
+ else
+ printf("K_ANY(%d = %s)\n", c, iupKeyCodeToName(c));
+ printf(" MODKEYSTATE(%s)\n", IupGetGlobal("MODKEYSTATE"));
+ return IUP_DEFAULT;
+}
+
+static int keypress_cb(Ihandle *ih, int c, int pressed)
+{
+ if (iup_isprint(c))
+ printf("KEYPRESS_CB(%d = %s \'%c\' (%d))\n", c, iupKeyCodeToName(c), (char)c, pressed);
+ else
+ printf("KEYPRESS_CB(%d = %s (%d))\n", c, iupKeyCodeToName(c), pressed);
+ return IUP_DEFAULT;
+}
+
+void CanvasTest(void)
+{
+ Ihandle *dlg, *canvas, *box, *image;
+
+ //image = IupImage(32, 32, pixmap_cursor);
+ //IupSetAttribute(image, "1", "255 0 0");
+ //IupSetAttribute(image, "2", "128 0 0");
+ //IupSetAttribute(image, "HOTSPOT", "21:10");
+
+ image = IupImage(15,15, matrx_img_cur_excel);
+ IupSetAttribute (image, "0", "BGCOLOR");
+ IupSetAttribute (image, "1", "0 0 0");
+ IupSetAttribute (image, "2", "255 255 255");
+ IupSetAttribute (image, "HOTSPOT", "7:7");
+
+ box = IupVbox(NULL);
+ IupSetAttribute(box, "MARGIN", "5x5");
+
+ canvas = IupCanvas(NULL);
+ IupAppend(box, canvas);
+ IupSetAttribute(canvas, "RASTERSIZE", "300x200");
+ IupSetAttribute(canvas, "TIP", "Canvas Tip");
+ IupSetAttribute(canvas, "SCROLLBAR", "YES");
+// IupSetAttribute(canvas, "XAUTOHIDE", "NO");
+ IupSetAttribute(canvas, "XMAX", "600");
+ IupSetAttribute(canvas, "DX", "300"); /* use a 1x1 scale, this value is updated in RESIZE_CB,
+ so when the canvas is larger than 600
+ it will hide the scrollbar */
+ IupSetAttributeHandle(canvas, "CURSOR", image);
+
+// IupSetAttribute(canvas, "BORDER", "NO");
+// IupSetAttribute(canvas, "CURSOR", "CROSS");
+
+ IupSetCallback(canvas, "MAP_CB", (Icallback)map_cb);
+
+ IupSetCallback(canvas, "KEYPRESS_CB", (Icallback)keypress_cb);
+ IupSetCallback(canvas, "K_ANY", (Icallback)k_any);
+ IupSetCallback(canvas, "HELP_CB", (Icallback)help_cb);
+
+ IupSetCallback(canvas, "GETFOCUS_CB", (Icallback)getfocus_cb);
+ IupSetCallback(canvas, "KILLFOCUS_CB", (Icallback)killfocus_cb);
+ IupSetCallback(canvas, "FOCUS_CB", (Icallback)focus_cb);
+ IupSetCallback(canvas, "ENTERWINDOW_CB", (Icallback)enterwindow_cb);
+ IupSetCallback(canvas, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb);
+
+ IupSetCallback(canvas, "BUTTON_CB", (Icallback)button_cb);
+// IupSetCallback(canvas, "MOTION_CB", (Icallback)motion_cb);
+ IupSetCallback(canvas, "SCROLL_CB", (Icallback)scroll_cb);
+// IupSetCallback(canvas, "WHEEL_CB", (Icallback)wheel_cb);
+
+ IupSetCallback(canvas, "RESIZE_CB", (Icallback)resize_cb);
+// IupSetAttribute(canvas, "BGCOLOR", "255 128 128");
+ IupSetCallback(canvas, "ACTION", (Icallback)action);
+
+ // Windows and GTK Only
+ IupSetCallback(canvas, "DROPFILES_CB", (Icallback)dropfiles_cb);
+
+//{
+// Ihandle* cnv = IupCanvas(NULL);
+// IupAppend(box, cnv);
+// IupSetAttribute(cnv, "RASTERSIZE", "300x200");
+// IupSetAttribute(cnv, "CURSOR", "NONE");
+//}
+
+ dlg = IupDialog(box);
+ IupSetAttribute(dlg, "TITLE", "IupCanvas Test");
+
+ IupShow(dlg);
+ IupSetAttribute(canvas, "RASTERSIZE", NULL); /* release the minimum limitation */
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ CanvasTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/canvas_cddbuffer.c b/iup/test/canvas_cddbuffer.c
new file mode 100755
index 0000000..dd7ce3e
--- /dev/null
+++ b/iup/test/canvas_cddbuffer.c
@@ -0,0 +1,124 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+#include "cd.h"
+#include "cdiup.h"
+#include "cddbuf.h"
+
+
+static void appUpdateRender(cdCanvas *cddbuffer)
+{
+ int width, height;
+
+ cdCanvasBackground(cddbuffer, CD_WHITE);
+ cdCanvasClear(cddbuffer);
+
+ cdCanvasForeground(cddbuffer, CD_RED);
+ cdCanvasGetSize(cddbuffer, &width, &height, NULL, NULL);
+ cdCanvasLine(cddbuffer, 0, 0, width-1, height-1);
+ cdCanvasLine(cddbuffer, 0, height-1, width-1, 0);
+}
+
+static int redraw_cb(Ihandle *ih)
+{
+ cdCanvas *cddbuffer = (cdCanvas*)IupGetAttribute(ih, "_APP_CDDBUFFER");
+ if (!cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update display */
+ cdCanvasFlush(cddbuffer);
+ return IUP_DEFAULT;
+}
+
+static int resize_cb(Ihandle *ih)
+{
+ cdCanvas *cddbuffer = (cdCanvas*)IupGetAttribute(ih, "_APP_CDDBUFFER");
+ if (!cddbuffer)
+ {
+ cdCanvas *cdcanvas = (cdCanvas*)IupGetAttribute(ih, "_APP_CDCANVAS");
+
+ /* update canvas size */
+ cdCanvasActivate(cdcanvas);
+
+ /* this can fail if canvas size is zero */
+ cddbuffer = cdCreateCanvas(CD_DBUFFER, cdcanvas);
+ }
+
+ if (!cddbuffer)
+ return IUP_DEFAULT;
+
+ /* update size */
+ cdCanvasActivate(cddbuffer);
+
+ /* update render */
+ appUpdateRender(cddbuffer);
+
+ return IUP_DEFAULT;
+}
+
+static int map_cb(Ihandle *ih)
+{
+ cdCanvas *cddbuffer, *cdcanvas;
+
+ cdcanvas = cdCreateCanvas(CD_IUP, ih);
+ if (!cdcanvas)
+ return IUP_DEFAULT;
+
+ /* this can fail if canvas size is zero */
+ cddbuffer = cdCreateCanvas(CD_DBUFFER, cdcanvas);
+
+ IupSetAttribute(ih, "_APP_CDCANVAS", (char*)cdcanvas);
+ IupSetAttribute(ih, "_APP_CDDBUFFER", (char*)cddbuffer);
+
+ return IUP_DEFAULT;
+}
+
+static int unmap_cb(Ihandle *ih)
+{
+ cdCanvas *cddbuffer = (cdCanvas*)IupGetAttribute(ih, "_APP_CDDBUFFER");
+ cdCanvas *cdcanvas = (cdCanvas*)IupGetAttribute(ih, "_APP_CDCANVAS");
+
+ if (cddbuffer)
+ cdKillCanvas(cddbuffer);
+
+ if (cdcanvas)
+ cdKillCanvas(cdcanvas);
+
+ return IUP_DEFAULT;
+}
+
+void CanvasCDDBufferTest(void)
+{
+ Ihandle *dlg, *canvas;
+
+ canvas = IupCanvas(NULL);
+ IupSetAttribute(canvas, "RASTERSIZE", "300x200"); /* initial size */
+
+ IupSetCallback(canvas, "RESIZE_CB", (Icallback)resize_cb);
+ IupSetCallback(canvas, "ACTION", (Icallback)redraw_cb);
+ IupSetCallback(canvas, "MAP_CB", (Icallback)map_cb);
+ IupSetCallback(canvas, "UNMAP_CB", (Icallback)unmap_cb);
+
+ dlg = IupDialog(canvas);
+ IupSetAttribute(dlg, "TITLE", "CD Double Buffer Test");
+
+ IupMap(dlg);
+ IupSetAttribute(canvas, "RASTERSIZE", NULL); /* release the minimum limitation */
+
+ IupShowXY(dlg,IUP_CENTER,IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ CanvasCDDBufferTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/canvas_cdsimple.c b/iup/test/canvas_cdsimple.c
new file mode 100755
index 0000000..3a73c22
--- /dev/null
+++ b/iup/test/canvas_cdsimple.c
@@ -0,0 +1,91 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+#include "cd.h"
+#include "cdiup.h"
+#include "cddbuf.h"
+
+
+static int redraw_cb(Ihandle *ih)
+{
+ int width, height;
+ cdCanvas *cdcanvas = (cdCanvas*)IupGetAttribute(ih, "_APP_CDCANVAS");
+
+ cdCanvasBackground(cdcanvas, CD_WHITE);
+ cdCanvasClear(cdcanvas);
+
+ cdCanvasForeground(cdcanvas, CD_RED);
+ cdCanvasGetSize(cdcanvas, &width, &height, NULL, NULL);
+ cdCanvasLine(cdcanvas, 0, 0, width-1, height-1);
+ cdCanvasLine(cdcanvas, 0, height-1, width-1, 0);
+ return IUP_DEFAULT;
+}
+
+static int resize_cb(Ihandle *ih)
+{
+ cdCanvas *cdcanvas = (cdCanvas*)IupGetAttribute(ih, "_APP_CDCANVAS");
+
+ /* update canvas size */
+ cdCanvasActivate(cdcanvas);
+
+ return IUP_DEFAULT;
+}
+
+static int map_cb(Ihandle *ih)
+{
+ cdCanvas *cdcanvas;
+
+ cdcanvas = cdCreateCanvas(CD_IUP, ih);
+ if (!cdcanvas)
+ return IUP_DEFAULT;
+
+ IupSetAttribute(ih, "_APP_CDCANVAS", (char*)cdcanvas);
+
+ return IUP_DEFAULT;
+}
+
+static int unmap_cb(Ihandle *ih)
+{
+ cdCanvas *cdcanvas = (cdCanvas*)IupGetAttribute(ih, "_APP_CDCANVAS");
+
+ if (cdcanvas)
+ cdKillCanvas(cdcanvas);
+
+ return IUP_DEFAULT;
+}
+
+void CanvasCDSimpleTest(void)
+{
+ Ihandle *dlg, *canvas;
+
+ canvas = IupCanvas(NULL);
+ IupSetAttribute(canvas, "RASTERSIZE", "300x200"); /* initial size */
+
+ IupSetCallback(canvas, "RESIZE_CB", (Icallback)resize_cb);
+ IupSetCallback(canvas, "ACTION", (Icallback)redraw_cb);
+ IupSetCallback(canvas, "MAP_CB", (Icallback)map_cb);
+ IupSetCallback(canvas, "UNMAP_CB", (Icallback)unmap_cb);
+
+ dlg = IupDialog(canvas);
+ IupSetAttribute(dlg, "TITLE", "CD Simple Buffer Test");
+
+ IupMap(dlg);
+ IupSetAttribute(canvas, "RASTERSIZE", NULL); /* release the minimum limitation */
+
+ IupShowXY(dlg,IUP_CENTER,IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ CanvasCDSimpleTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/canvas_scrollbar.c b/iup/test/canvas_scrollbar.c
new file mode 100755
index 0000000..72749de
--- /dev/null
+++ b/iup/test/canvas_scrollbar.c
@@ -0,0 +1,191 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+#include "cd.h"
+#include "cdiup.h"
+#include "wd.h"
+
+
+/* World: (0-600)x(0-400)
+ The canvas will be a window into that space.
+ If canvas is smaller than the virtual space, scrollbars are active.
+ The drawing is a red X connecting the corners of the world.
+*/
+#define WORLD_W 600
+#define WORLD_H 400
+static int scale = 1;
+
+static void update_scrollbar(Ihandle* ih, int canvas_w, int canvas_h)
+{
+ /* update page size, it is always the client size of the canvas,
+ but must convert it to world coordinates.
+ If you change canvas size or scale must call this function. */
+ double ww, wh;
+ if (scale > 0)
+ {
+ ww = (double)canvas_w/scale;
+ wh = (double)canvas_h/scale;
+ }
+ else
+ {
+ ww = canvas_w*abs(scale);
+ wh = canvas_h*abs(scale);
+ }
+ IupSetfAttribute(ih, "DX", "%f", ww);
+ IupSetfAttribute(ih, "DY", "%f", wh);
+}
+
+static void update_viewport(Ihandle* ih, cdCanvas *canvas, float posx, float posy)
+{
+ int view_x, view_y, view_w, view_h;
+
+ /* The CD viewport is the same area represented by the virtual space of the scrollbar,
+ but not using the same coordinates. */
+
+ /* posy is top-bottom, CD is bottom-top.
+ invert posy reference (YMAX-DY - POSY) */
+ posy = WORLD_H-IupGetFloat(ih, "DY") - posy;
+ if (posy < 0) posy = 0;
+
+ if (scale > 0)
+ {
+ view_w = WORLD_W*scale;
+ view_h = WORLD_H*scale;
+ view_x = (int)(posx*scale);
+ view_y = (int)(posy*scale);
+ }
+ else
+ {
+ view_w = WORLD_W/abs(scale);
+ view_h = WORLD_H/abs(scale);
+ view_x = (int)(posx/abs(scale));
+ view_y = (int)(posy/abs(scale));
+ }
+
+ wdCanvasViewport(canvas, -view_x, view_w-1 - view_x, -view_y, view_h-1 - view_y);
+}
+
+/************************************************************************************/
+
+static int action(Ihandle *ih)
+{
+ cdCanvas *canvas = (cdCanvas*)IupGetAttribute(ih, "_CD_CANVAS");
+
+ cdCanvasClear(canvas);
+
+ cdCanvasForeground(canvas, CD_RED);
+ wdCanvasLine(canvas, 0, 0, WORLD_W, WORLD_H);
+ wdCanvasLine(canvas, 0, WORLD_H, WORLD_W, 0);
+ wdCanvasArc(canvas, WORLD_W/2, WORLD_H/2+WORLD_H/10, WORLD_W/10, WORLD_H/10, 0, 360);
+
+ return IUP_DEFAULT;
+}
+
+static int resize_cb(Ihandle *ih, int canvas_w, int canvas_h)
+{
+ cdCanvas *canvas = (cdCanvas*)IupGetAttribute(ih, "_CD_CANVAS");
+
+ /* update CD canvas */
+ cdCanvasActivate(canvas);
+
+ update_scrollbar(ih, canvas_w, canvas_h);
+ update_viewport(ih, canvas, IupGetFloat(ih, "POSX"), IupGetFloat(ih, "POSY"));
+ return IUP_DEFAULT;
+}
+
+static int scroll_cb(Ihandle *ih, int op, float posx, float posy)
+{
+ cdCanvas *canvas = (cdCanvas*)IupGetAttribute(ih, "_CD_CANVAS");
+ update_viewport(ih, canvas, posx, posy);
+ IupRedraw(ih, 0);
+ (void)op;
+ return IUP_DEFAULT;
+}
+
+static int wheel_cb(Ihandle *ih,float delta,int x,int y,char* status)
+{
+ int canvas_w, canvas_h;
+ cdCanvas *canvas = (cdCanvas*)IupGetAttribute(ih, "_CD_CANVAS");
+ (void)x;
+ (void)y;
+ (void)status;
+
+ if (scale+delta==0) /* skip 0 */
+ {
+ if (scale > 0)
+ scale = -1;
+ else
+ scale = 1;
+ }
+ else
+ scale += (int)delta;
+
+ cdCanvasGetSize(canvas, &canvas_w, &canvas_h, NULL, NULL);
+ update_scrollbar(ih, canvas_w, canvas_h);
+ update_viewport(ih, canvas, IupGetFloat(ih, "POSX"), IupGetFloat(ih, "POSY"));
+ IupRedraw(ih, 0);
+ return IUP_DEFAULT;
+}
+
+static int map_cb(Ihandle *ih)
+{
+ cdCanvas *canvas = cdCreateCanvas(CD_IUP, ih);
+
+ /* World size is fixed */
+ wdCanvasWindow(canvas, 0, WORLD_W, 0, WORLD_H);
+
+ /* handle scrollbar in world coordinates, so we only have to update DX/DY */
+ IupSetAttribute(ih, "XMIN", "0");
+ IupSetAttribute(ih, "YMIN", "0");
+ IupSetfAttribute(ih, "XMAX", "%d", WORLD_W);
+ IupSetfAttribute(ih, "YMAX", "%d", WORLD_H);
+
+ return IUP_DEFAULT;
+}
+
+static int unmap_cb(Ihandle *ih)
+{
+ cdCanvas *canvas = (cdCanvas*)IupGetAttribute(ih, "_CD_CANVAS");
+ cdKillCanvas(canvas);
+ return IUP_DEFAULT;
+}
+
+void CanvasScrollbarTest(void)
+{
+ Ihandle *dlg, *cnv;
+
+ cnv = IupCanvas(NULL);
+ IupSetAttribute(cnv, "RASTERSIZE", "300x200"); /* initial size */
+ IupSetAttribute(cnv, "SCROLLBAR", "YES");
+
+ IupSetCallback(cnv, "RESIZE_CB", (Icallback)resize_cb);
+ IupSetCallback(cnv, "ACTION", (Icallback)action);
+ IupSetCallback(cnv, "MAP_CB", (Icallback)map_cb);
+ IupSetCallback(cnv, "UNMAP_CB", (Icallback)unmap_cb);
+ IupSetCallback(cnv, "WHEEL_CB", (Icallback)wheel_cb);
+ IupSetCallback(cnv, "SCROLL_CB", (Icallback)scroll_cb);
+
+ dlg = IupDialog(IupVbox(cnv, NULL));
+ IupSetAttribute(dlg, "TITLE", "Scrollbar Test");
+ IupSetAttribute(dlg, "MARGIN", "10x10");
+
+ IupMap(dlg);
+ IupSetAttribute(cnv, "RASTERSIZE", NULL); /* release the minimum limitation */
+
+ IupShowXY(dlg,IUP_CENTER,IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ CanvasScrollbarTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/cells_checkboard.c b/iup/test/cells_checkboard.c
new file mode 100755
index 0000000..40cc0ef
--- /dev/null
+++ b/iup/test/cells_checkboard.c
@@ -0,0 +1,83 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "cd.h"
+#include "iupcontrols.h"
+
+
+static int nlines_cb(Ihandle* ih)
+{
+ return 8;
+}
+
+static int ncols_cb(Ihandle* ih)
+{
+ return 8;
+}
+
+static int height_cb(Ihandle* ih, int i)
+{
+ return 50;
+}
+
+static int width_cb(Ihandle* ih, int j)
+{
+ return 50;
+}
+
+static int draw_cb(Ihandle* ih, int i, int j, int xmin, int xmax, int ymin, int ymax)
+{
+ if (((i%2) && (j%2)) || (((i+1)%2) && ((j+1)%2)))
+ cdForeground(CD_WHITE);
+ else
+ cdForeground(CD_BLACK);
+
+ cdBox(xmin, xmax, ymin, ymax);
+ return IUP_DEFAULT;
+}
+
+static Ihandle* create(void)
+{
+ Ihandle* cells = IupCells();
+
+ IupSetCallback(cells, "DRAW_CB", (Icallback)draw_cb);
+ IupSetCallback(cells, "WIDTH_CB", (Icallback)width_cb);
+ IupSetCallback(cells, "HEIGHT_CB", (Icallback)height_cb);
+ IupSetCallback(cells, "NLINES_CB", (Icallback)nlines_cb);
+ IupSetCallback(cells, "NCOLS_CB", (Icallback)ncols_cb);
+
+ return cells;
+}
+
+void CellsCheckboardTest(void)
+{
+ Ihandle* dlg = NULL;
+ Ihandle* cells = NULL;
+
+ cells = create();
+ dlg = IupDialog(cells);
+
+ IupSetAttribute(dlg, "RASTERSIZE", "400x400");
+ IupSetAttribute(dlg, "TITLE", "IupCells");
+
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER) ;
+ IupSetAttribute(dlg, "RASTERSIZE", NULL);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+ IupControlsOpen();
+
+ CellsCheckboardTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/cells_degrade.c b/iup/test/cells_degrade.c
new file mode 100755
index 0000000..30e969b
--- /dev/null
+++ b/iup/test/cells_degrade.c
@@ -0,0 +1,150 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "cd.h"
+#include "iupcontrols.h"
+
+
+static int nlines_cb(Ihandle* ih)
+{
+ return 7;
+}
+
+static int ncols_cb(Ihandle* ih)
+{
+ return 7;
+}
+
+static int height_cb(Ihandle* ih, int i)
+{
+ return (int)(30 + i * 1.5);
+}
+
+static int width_cb(Ihandle* ih, int j)
+{
+ return (int)(50 + j * 1.5);
+}
+
+static int mouseclick_cb(Ihandle* ih, int b, char* m, int i, int j, int x, int y, char* r)
+{
+ printf("CLICK: %d: (%02d, %02d)\n", b, i, j);
+ return IUP_DEFAULT;
+}
+
+static int scrolling_cb(Ihandle* ih, int i, int j)
+{
+ printf("SCROLL: (%02d, %02d)\n", i, j);
+ return IUP_DEFAULT;
+}
+
+static int vspan_cb(Ihandle* ih, int i, int j)
+{
+ if (i == 1 && j == 1)
+ return 2;
+
+ if (i == 5 && j == 5)
+ return 2;
+
+ return 1;
+}
+
+static int hspan_cb(Ihandle* ih, int i, int j)
+{
+ if (i == 1 && j == 1)
+ return 2;
+
+ if (i == 5 && j == 5)
+ return 2;
+
+ return 1;
+}
+
+static int draw_cb(Ihandle* ih, int i, int j, int xmin, int xmax, int ymin, int ymax)
+{
+ static char buffer[64];
+ int xm = (xmax + xmin) / 2;
+ int ym = (ymax + ymin) / 2;
+
+ if (i == 1 && j == 2)
+ return IUP_DEFAULT;
+ if (i == 2 && j == 1)
+ return IUP_DEFAULT;
+ if (i == 2 && j == 2)
+ return IUP_DEFAULT;
+ if (i == 5 && j == 6)
+ return IUP_DEFAULT;
+ if (i == 6 && j == 5)
+ return IUP_DEFAULT;
+ if (i == 6 && j == 6)
+ return IUP_DEFAULT;
+
+ if (i == 1 && j == 1)
+ cdForeground(CD_WHITE);
+ else
+ cdForeground(cdEncodeColor((unsigned char)(i*20), (unsigned char)(j*100), (unsigned char)(i+100)));
+
+ cdBox(xmin, xmax, ymin, ymax);
+ cdTextAlignment(CD_CENTER);
+ cdForeground(CD_BLACK);
+ sprintf(buffer, "(%02d, %02d)", i, j);
+ cdText(xm, ym, buffer);
+
+ return IUP_DEFAULT;
+}
+
+static Ihandle* create(void)
+{
+ Ihandle* cells = IupCells();
+
+ IupSetCallback(cells, "MOUSECLICK_CB", (Icallback)mouseclick_cb);
+ IupSetCallback(cells, "DRAW_CB", (Icallback)draw_cb);
+ IupSetCallback(cells, "WIDTH_CB", (Icallback)width_cb);
+ IupSetCallback(cells, "HEIGHT_CB", (Icallback)height_cb);
+ IupSetCallback(cells, "NLINES_CB", (Icallback)nlines_cb);
+ IupSetCallback(cells, "NCOLS_CB", (Icallback)ncols_cb);
+ IupSetCallback(cells, "HSPAN_CB", (Icallback)hspan_cb);
+ IupSetCallback(cells, "VSPAN_CB", (Icallback)vspan_cb);
+ IupSetCallback(cells, "SCROLLING_CB", (Icallback)scrolling_cb);
+
+ IupSetAttribute(cells, "BOXED", "NO");
+ IupSetAttribute(cells, "RASTERSIZE", "395x255");
+
+ return cells;
+}
+
+void CellsDegradeTest(void)
+{
+ Ihandle* dlg = NULL;
+ Ihandle* cells = NULL;
+ Ihandle* box = NULL;
+
+ cells = create();
+
+ box = IupVbox(cells, NULL);
+ IupSetAttribute(box, "MARGIN", "10x10");
+
+ dlg = IupDialog(box);
+
+ IupSetAttribute(dlg, "TITLE", "IupCells");
+
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER) ;
+ IupSetAttribute(cells, "RASTERSIZE", NULL);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+ IupControlsOpen();
+
+ CellsDegradeTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/cells_numbering.c b/iup/test/cells_numbering.c
new file mode 100755
index 0000000..7cb303f
--- /dev/null
+++ b/iup/test/cells_numbering.c
@@ -0,0 +1,102 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "cd.h"
+#include "iupcontrols.h"
+
+
+static int nlines_cb(Ihandle* ih)
+{
+ return 20;
+}
+
+static int ncols_cb(Ihandle* ih)
+{
+ return 50;
+}
+
+static int height_cb(Ihandle* ih, int i)
+{
+ return 30;
+}
+
+static int width_cb(Ihandle* ih, int j)
+{
+ return 70;
+}
+
+static int mouseclick_cb(Ihandle* ih, int b, char* m, int i, int j, int x, int y, char* r)
+{
+ static char buffer[128];
+ sprintf(buffer, "CLICK: %d: (%02d, %02d)\n", b, i, j);
+
+ IupMessage("Hi!", buffer);
+ return IUP_DEFAULT;
+}
+
+static int draw_cb(Ihandle* ih, int i, int j, int xmin, int xmax, int ymin, int ymax)
+{
+ static char buffer[64];
+ int xm = (xmax + xmin) / 2;
+ int ym = (ymax + ymin) / 2;
+
+ cdForeground(cdEncodeColor((unsigned char)(i*20), (unsigned char)(j*100), (unsigned char)(i+100)));
+
+ cdBox(xmin, xmax, ymin, ymax);
+ cdTextAlignment(CD_CENTER);
+ cdForeground(CD_BLACK);
+ sprintf(buffer, "(%02d, %02d)", i, j);
+ cdText(xm, ym, buffer);
+
+ return IUP_DEFAULT;
+}
+
+static Ihandle* create(void)
+{
+ Ihandle* cells = IupCells();
+
+ IupSetCallback(cells, "MOUSECLICK_CB", (Icallback)mouseclick_cb);
+ IupSetCallback(cells, "DRAW_CB", (Icallback)draw_cb);
+ IupSetCallback(cells, "WIDTH_CB", (Icallback)width_cb);
+ IupSetCallback(cells, "HEIGHT_CB", (Icallback)height_cb);
+ IupSetCallback(cells, "NLINES_CB", (Icallback)nlines_cb);
+ IupSetCallback(cells, "NCOLS_CB", (Icallback)ncols_cb);
+
+ IupSetAttribute(cells, "BOXED", "NO");
+
+ return cells;
+}
+
+void CellsNumberingTest(void)
+{
+ Ihandle* dlg = NULL;
+ Ihandle* cells = NULL;
+
+ IupControlsOpen();
+
+ cells = create();
+ dlg = IupDialog(cells);
+
+ IupSetAttribute(cells, "RASTERSIZE", "500x500");
+ IupSetAttribute(dlg, "TITLE", "IupCells");
+
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER) ;
+ IupSetAttribute(cells, "RASTERSIZE", NULL);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ CellsNumberingTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/class_conf.c b/iup/test/class_conf.c
new file mode 100755
index 0000000..4e73f3d
--- /dev/null
+++ b/iup/test/class_conf.c
@@ -0,0 +1,278 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <iup.h>
+
+#include "../src/iup_class.h"
+#include "../src/iup_register.h"
+
+#define MAX_ITEMS 200
+
+char* callback_str[] = {"idle", "", "Ii", "ccc", "d", "iiiic",
+ "ff", "fiis", "i", "iff", "ii", "iic",
+ "iiIII", "iii", "iiii", "iiiiii", "iiiiiis",
+ "iiiis", "iinsii", "iis", "is", "nii",
+ "nn", "s", "sii", "siii", "ss", "i=s", "ii=s",
+ "iiiiiiv"};
+
+char currentClassName[256];
+
+int compare(const void *a, const void *b)
+{
+ return strcmp( * ( char** ) a, * ( char** ) b );
+}
+
+/* Update callback labels */
+static int callbacksList_ActionCB (Ihandle *ih, char *callName, int pos, int state)
+{
+ char* temp;
+ char params[256], copy[2];
+ int i = 0;
+ int returns = 0;
+
+ if(!callName)
+ return 0;
+
+ temp = iupClassGetDefaultAttribute(currentClassName, callName);
+
+ copy[1] = '\0';
+ sprintf(params, "%s", "Ihandle*");
+
+ IupSetAttribute(IupGetHandle("labelCallback"), "TITLE", callName);
+
+ while(i < (int)strlen(temp))
+ {
+ strncpy(copy, temp+i, 1);
+
+ if(!strcmp(copy, "i"))
+ sprintf(params, "%s, %s", params, "int");
+ else if(!strcmp(copy, "c"))
+ sprintf(params, "%s, %s", params, "unsigned char");
+ else if(!strcmp(copy, "s"))
+ sprintf(params, "%s, %s", params, "char*");
+ else if(!strcmp(copy, "f"))
+ sprintf(params, "%s, %s", params, "float");
+ else if(!strcmp(copy, "d"))
+ sprintf(params, "%s, %s", params, "double");
+ else if(!strcmp(copy, "I"))
+ sprintf(params, "%s, %s", params, "int*");
+ else if(!strcmp(copy, "n"))
+ sprintf(params, "%s, %s", params, "Ihandle*");
+ else if(!strcmp(copy, "v"))
+ sprintf(params, "%s, %s", params, "cdCanvas*");
+ else if(!strcmp(copy, "="))
+ {
+ returns = 1;
+ break;
+ }
+
+ i++;
+ }
+
+ if(returns)
+ sprintf(params, "%s (= char*)", params);
+ else if(!strcmp(callName, "HELP_CB"))
+ sprintf(params, "%s (= void)", params);
+ else
+ sprintf(params, "%s (= int)", params);
+
+ if(!strcmp(temp, "idle"))
+ IupSetAttribute(IupGetHandle("labelParams"), "TITLE", "void");
+ else
+ IupSetAttribute(IupGetHandle("labelParams"), "TITLE", params);
+
+ (void)ih;
+ (void)pos;
+ (void)state;
+
+ return IUP_DEFAULT;
+}
+
+/* Update attribute labels */
+static int attributesList_ActionCB (Ihandle *ih, char *attribName, int pos, int state)
+{
+ char* temp;
+
+ if(!attribName)
+ return 0;
+
+ temp = iupClassGetDefaultAttribute(currentClassName, attribName);
+
+ IupSetAttribute(IupGetHandle("labelAttribute"), "TITLE", attribName);
+
+ if(!temp)
+ IupSetAttribute(IupGetHandle("labelDefault"), "TITLE", "NULL");
+ else
+ IupSetAttribute(IupGetHandle("labelDefault"), "TITLE", temp);
+
+ (void)ih;
+ (void)pos;
+ (void)state;
+
+ return IUP_DEFAULT;
+}
+
+static int classesList_ActionCB (Ihandle *ih, char *className, int pos, int state)
+{
+ int i, j, n;
+ char* temp;
+ char **names = (char **) malloc(MAX_ITEMS * sizeof(char *));
+ int call_str = sizeof(callback_str) / sizeof(char*);
+
+ n = IupGetClassAttributes(className, names, MAX_ITEMS);
+
+ /* Sort names */
+ qsort(names, n, sizeof(char*), compare);
+
+ /* Clear lists */
+ IupSetAttribute(IupGetHandle("listAttributes"), "REMOVEITEM", NULL);
+ IupSetAttribute(IupGetHandle("listCallbacks"), "REMOVEITEM", NULL);
+
+ /* Populate attribute and callback lists */
+ for (i = 0; i < n; i++)
+ {
+ temp = iupClassGetDefaultAttribute(className, names[i]);
+
+ if(!temp)
+ {
+ /* No default value */
+ IupSetAttribute(IupGetHandle("listAttributes"), "APPENDITEM", names[i]);
+ }
+ else
+ {
+ for(j = 0; j < call_str; j++)
+ {
+ /* callback attribute */
+ if(!strcmp(temp, callback_str[j]))
+ {
+ IupSetAttribute(IupGetHandle("listCallbacks"), "APPENDITEM", names[i]);
+ break;
+ }
+ }
+
+ if(j == call_str)
+ {
+ /* attribute w/ default value */
+ IupSetAttribute(IupGetHandle("listAttributes"), "APPENDITEM", names[i]);
+ }
+ }
+ }
+
+ /* Update labels (values) */
+ IupSetAttribute(IupGetHandle("labelClass"), "TITLE", className);
+ strcpy(currentClassName, className);
+
+ IupSetAttribute(IupGetHandle("labelAttribute"), "TITLE", NULL);
+ IupSetAttribute(IupGetHandle("labelDefault"), "TITLE", NULL);
+ IupSetAttribute(IupGetHandle("labelCallback"), "TITLE", NULL);
+ IupSetAttribute(IupGetHandle("labelParams"), "TITLE", NULL);
+
+
+ (void)ih;
+ (void)pos;
+ (void)state;
+
+ return IUP_DEFAULT;
+}
+
+void PopulateListOfClasses(void)
+{
+ int i, n;
+ char **list = (char **) malloc(MAX_ITEMS * sizeof(char *));
+
+ n = iupRegisterGetClasses(list, MAX_ITEMS);
+
+ qsort(list, n, sizeof(char*), compare);
+
+ for(i = 0; i < n; i++)
+ IupSetAttribute(IupGetHandle("listClasses"), "APPENDITEM", list[i]);
+}
+
+void ConfTest(void)
+{
+ Ihandle *dialog, *box, *lists, *listClasses, *listAttributes, *listCallbacks;
+ Ihandle *labelAttribute, *labelDefault, *labelCallback, *labelParams, *labelClass;
+
+ listClasses = IupList(NULL); /* list of registered classes */
+ listAttributes = IupList(NULL); /* list of attributes of the selected class */
+ listCallbacks = IupList(NULL); /* list of callbacks of the selected class */
+
+ labelClass = IupLabel(NULL);
+
+ labelAttribute = IupLabel(NULL);
+ labelDefault = IupLabel(NULL);
+ labelCallback = IupLabel(NULL);
+ labelParams = IupLabel(NULL);
+
+ IupSetAttributes(listClasses, "EDITBOX=NO, DROPDOWN=NO, NAME=listClasses, SIZE= 70x85");
+ IupSetAttributes(listAttributes, "EDITBOX=NO, DROPDOWN=NO, NAME=listAttributes, SIZE=120x85");
+ IupSetAttributes(listCallbacks, "EDITBOX=NO, DROPDOWN=NO, NAME=listCallbacks, SIZE=120x85");
+
+ IupSetAttribute(labelClass, "FONTSTYLE", "Bold");
+ IupSetAttribute(labelClass, "FGCOLOR", "255 0 0");
+
+ IupSetAttribute(labelClass, "SIZE", "100x");
+ IupSetAttribute(labelAttribute, "SIZE", "100x");
+ IupSetAttribute(labelDefault, "SIZE", "100x");
+ IupSetAttribute(labelCallback, "SIZE", "100x");
+ IupSetAttribute(labelParams, "SIZE", "280x");
+
+ IupSetCallback(listClasses, "ACTION", (Icallback) classesList_ActionCB);
+ IupSetCallback(listAttributes, "ACTION", (Icallback) attributesList_ActionCB);
+ IupSetCallback(listCallbacks, "ACTION", (Icallback) callbacksList_ActionCB);
+
+ IupSetHandle("listClasses", listClasses);
+ IupSetHandle("listAttributes", listAttributes);
+ IupSetHandle("listCallbacks", listCallbacks);
+
+ IupSetHandle("labelClass", labelClass);
+ IupSetHandle("labelAttribute", labelAttribute);
+ IupSetHandle("labelDefault", labelDefault);
+ IupSetHandle("labelCallback", labelCallback);
+ IupSetHandle("labelParams", labelParams);
+
+ lists = IupVbox(
+ IupHbox(
+ IupSetAttributes(IupFrame(IupVbox(listClasses, NULL)), "TITLE=CLASSES"),
+ IupSetAttributes(IupFrame(IupVbox(listAttributes, NULL)), "TITLE=ATTRIBUTES"),
+ IupSetAttributes(IupFrame(IupVbox(listCallbacks, NULL)), "TITLE=CALLBACKS"),
+ NULL),
+ IupHbox(
+ IupSetAttributes(IupFrame(IupHbox(IupVbox(IupLabel("Class: "), IupLabel("Attribute: "),
+ IupLabel("Default: "), IupLabel("Callback: "),
+ IupLabel("Parameters: "), NULL),
+ IupVbox(labelClass, labelAttribute,
+ labelDefault, labelCallback,
+ labelParams, NULL),
+ NULL)), "TITLE=DETAILS"),
+ NULL),
+ NULL);
+
+ box = IupHbox(lists, NULL);
+
+ IupSetAttributes(lists,"MARGIN=10x10, GAP=10");
+
+ dialog = IupDialog(box);
+
+ IupSetAttribute(dialog, "TITLE", "Class Conference and Documentation");
+
+ IupShowXY(dialog, IUP_CENTER, IUP_CENTER);
+
+ PopulateListOfClasses();
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ ConfTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/clipboard.c b/iup/test/clipboard.c
new file mode 100755
index 0000000..e4ea8c8
--- /dev/null
+++ b/iup/test/clipboard.c
@@ -0,0 +1,53 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupkey.h"
+
+
+static int copy_cb(Ihandle* ih)
+{
+ Ihandle* text = IupGetDialogChild(ih, "text");
+ Ihandle* clipboard = IupClipboard();
+ IupSetAttribute(clipboard, "TEXT", IupGetAttribute(text, "VALUE"));
+ IupDestroy(clipboard);
+ return IUP_DEFAULT;
+}
+
+static int paste_cb(Ihandle* ih)
+{
+ Ihandle* text = IupGetDialogChild(ih, "text");
+ Ihandle* clipboard = IupClipboard();
+ IupSetAttribute(text, "VALUE", IupGetAttribute(clipboard, "TEXT"));
+ IupDestroy(clipboard);
+ return IUP_DEFAULT;
+}
+
+void ClipboardTest(void)
+{
+ Ihandle *dlg = IupDialog(IupVbox(
+ IupSetAttributes(IupText(NULL), "SIZE=80x60, MULTILINE=YES, NAME=text, EXPAND=YES"),
+ IupSetCallbacks(IupButton("Copy", NULL), "ACTION", copy_cb, NULL),
+ IupSetCallbacks(IupButton("Paste", NULL), "ACTION", paste_cb, NULL),
+ NULL));
+ IupSetAttribute(dlg, "GAP", "10");
+ IupSetAttribute(dlg, "MARGIN", "20x20");
+
+ IupSetAttribute(dlg, "TITLE", "Clipboard Test");
+ IupShow(dlg);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ ClipboardTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/colorbar.c b/iup/test/colorbar.c
new file mode 100755
index 0000000..a24bbb1
--- /dev/null
+++ b/iup/test/colorbar.c
@@ -0,0 +1,162 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "cd.h"
+#include "cdiup.h"
+#include "iupcontrols.h"
+
+static Ihandle *canvas = NULL;
+static cdCanvas *cdcanvas = NULL;
+
+static int redraw_cb(Ihandle* ih)
+{
+ if (!cdcanvas)
+ return IUP_DEFAULT;
+
+ /* Activates canvas cdcanvas */
+ cdActivate(cdcanvas);
+ cdClear();
+
+ /* Draws a rectangle on the canvas */
+ cdBegin(CD_FILL);
+ cdVertex(50, 50);
+ cdVertex(150, 50);
+ cdVertex(100, 150);
+ cdEnd();
+
+ /* Function executed sucessfully */
+ return IUP_DEFAULT;
+}
+
+static int extended_cb(Ihandle* ih, int cell)
+{
+ printf("extended_cb(%d)\n", cell);
+ return IUP_DEFAULT;
+}
+
+static char* cell_cb(Ihandle* ih, int cell)
+{
+ int ri, gi, bi;
+ static char str[30];
+
+ sprintf(str, "CELL%d", cell);
+ sscanf(IupGetAttribute(ih, str), "%d %d %d", &ri, &gi, &bi);
+ printf("cell_cb(%d): %d, %d, %d\n", cell, ri, gi, bi);
+
+/*
+ unsigned char r, g, b;
+ r = (unsigned char)ri;
+ g = (unsigned char)gi;
+ b = (unsigned char)bi;
+ if (IupGetColor(IUP_MOUSEPOS, IUP_MOUSEPOS, &r, &g, &b))
+ {
+ sprintf(str, "%d %d %d", (int)r, (int)g, (int)b);
+ cdActivate( cdcanvas ) ;
+ cdForeground(cdEncodeColor(r, g, b));
+ redraw_cb(canvas);
+ return str;
+ }
+*/
+ return NULL;
+}
+
+static int select_cb(Ihandle* ih, int cell, int type)
+{
+ long cd_color;
+ char str[30];
+ int ri, gi, bi;
+
+ sprintf(str, "CELL%d", cell);
+ sscanf(IupGetAttribute(ih, str), "%d %d %d", &ri, &gi, &bi);
+ printf("select_cb(%d, %d): %d, %d, %d\n", cell, type, ri, gi, bi);
+
+ cd_color = cdEncodeColor((unsigned char)ri,(unsigned char)gi,(unsigned char)bi);
+
+ if (!cdcanvas)
+ return IUP_DEFAULT;
+
+ cdActivate( cdcanvas ) ;
+ if (type == -1)
+ cdForeground(cd_color);
+ else
+ cdBackground(cd_color);
+
+ redraw_cb(canvas);
+
+ return IUP_DEFAULT;
+}
+
+static int switch_cb(Ihandle* ih, int primcell, int seccell)
+{
+ long fgcolor;
+ if (!cdcanvas)
+ return IUP_DEFAULT;
+ printf("switch_cb(%d, %d)\n", primcell, seccell);
+ cdActivate(cdcanvas) ;
+ fgcolor = cdForeground(CD_QUERY);
+ cdForeground(cdBackground(CD_QUERY));
+ cdBackground(fgcolor);
+ redraw_cb(canvas);
+ return IUP_DEFAULT;
+}
+
+void ColorbarTest(void)
+{
+ Ihandle *dlg, *cb;
+
+ IupControlsOpen();
+
+ /* Creates a canvas associated with the redraw action */
+ canvas = IupCanvas(NULL) ;
+ IupSetCallback(canvas, "ACTION", (Icallback)redraw_cb);
+ IupSetAttribute(canvas, "RASTERSIZE", "200x300");
+
+ cb = IupColorbar();
+ IupSetAttribute(cb, "RASTERSIZE", "70x");
+ IupSetAttribute(cb, "EXPAND", "VERTICAL");
+ IupSetAttribute(cb, "NUM_PARTS", "2");
+ IupSetAttribute(cb, "SHOW_SECONDARY", "YES");
+ IupSetAttribute(cb, "PREVIEW_SIZE", "60");
+// IupSetAttribute(cb, "ACTIVE", "NO");
+// IupSetAttribute(cb, "BGCOLOR", "128 0 255");
+
+ IupSetCallback(cb, "SELECT_CB", (Icallback)select_cb);
+ IupSetCallback(cb, "CELL_CB", (Icallback)cell_cb);
+ IupSetCallback(cb, "SWITCH_CB", (Icallback)switch_cb);
+ IupSetCallback(cb, "EXTENDED_CB", (Icallback)extended_cb);
+
+ dlg = IupDialog(IupHbox(canvas, cb, NULL));
+ IupSetAttribute(dlg, "MARGIN", "5x5");
+
+ IupSetAttribute(dlg, "TITLE", "IupColorbar");
+
+ /* Maps the dlg. This must be done before the creation of the CD canvas.
+ Could also use MAP_CB callback. */
+ IupMap(dlg);
+
+ cdcanvas = cdCreateCanvas(CD_IUP, canvas);
+
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+
+ IupMainLoop();
+
+ IupDestroy(dlg);
+ IupClose();
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ ColorbarTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/colorbrowser.c b/iup/test/colorbrowser.c
new file mode 100755
index 0000000..9ee594a
--- /dev/null
+++ b/iup/test/colorbrowser.c
@@ -0,0 +1,91 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+static Ihandle *label_red, *label_green, *label_blue, *label_color;
+
+static void clrbrwsr_update_text(unsigned char r, unsigned char g, unsigned char b, char* hsi)
+{
+ float h, s, i;
+ sscanf(hsi, "%f %f %f", &h, &s, &i);
+ IupSetfAttribute(label_red, "TITLE", "R:%3d H:%3.0f", (int)r, (double)h);
+ IupSetfAttribute(label_green, "TITLE", "G:%3d S:%1.2f", (int)g, (double)s);
+ IupSetfAttribute(label_blue, "TITLE", "B:%3d I:%1.2f", (int)b, (double)i);
+ IupSetfAttribute(label_color, "BGCOLOR", "%d %d %d", (int)r, (int)g, (int)b);
+}
+
+static int clrbrwsr_drag_cb(Ihandle* ih, unsigned char r, unsigned char g, unsigned char b)
+{
+ (void)ih;
+ printf("DRAG_CB(%d, %d, %d)\n", (int)r, (int)g, (int)b);
+ clrbrwsr_update_text(r, g, b, IupGetAttribute(ih, "HSI"));
+ return IUP_DEFAULT;
+}
+
+static int clrbrwsr_change_cb(Ihandle* ih, unsigned char r, unsigned char g, unsigned char b)
+{
+ (void)ih;
+ printf("CHANGE_CB(%d, %d, %d)\n", (int)r, (int)g, (int)b);
+ clrbrwsr_update_text(r, g, b, IupGetAttribute(ih, "HSI"));
+ return IUP_DEFAULT;
+}
+
+void ColorBrowserTest(void)
+{
+ Ihandle *dlg, *hbox_final, *vbox, *clrbrwsr;
+
+ label_red = IupLabel(NULL);
+ IupSetAttribute(label_red, "SIZE", "100x10");
+ IupSetAttribute(label_red, "FONT", "Courier, 12");
+ label_green = IupLabel(NULL);
+ IupSetAttribute(label_green, "SIZE", "100x10");
+ IupSetAttribute(label_green, "FONT", "Courier, 12");
+ label_blue = IupLabel(NULL);
+ IupSetAttribute(label_blue, "SIZE", "100x10");
+ IupSetAttribute(label_blue, "FONT", "Courier, 12");
+
+ label_color = IupLabel(NULL);
+ IupSetAttribute(label_color, "RASTERSIZE", "50x50");
+
+ clrbrwsr = IupColorBrowser();
+// IupSetAttribute(clrbrwsr, "ACTIVE", "NO");
+// IupSetAttribute(clrbrwsr, "BGCOLOR", "128 128 255");
+ IupSetAttribute(clrbrwsr, "EXPAND", "YES");
+ IupSetAttribute(clrbrwsr, "RGB", "128 0 128");
+ clrbrwsr_update_text(128, 0, 128, IupGetAttribute(clrbrwsr, "HSI"));
+
+ IupSetCallback(clrbrwsr, "CHANGE_CB", (Icallback)clrbrwsr_change_cb);
+ IupSetCallback(clrbrwsr, "DRAG_CB", (Icallback)clrbrwsr_drag_cb);
+
+ vbox = IupVbox(
+ label_red,
+ label_green,
+ label_blue,
+ label_color,
+ NULL);
+
+ hbox_final = IupHbox (clrbrwsr, vbox, NULL);
+ IupSetAttribute(hbox_final, "MARGIN", "10x10");
+
+ dlg = IupDialog (hbox_final);
+ IupSetAttribute(dlg, "TITLE", "IupColorBrowser Test");
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+ IupControlsOpen();
+
+ ColorBrowserTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/config.mak b/iup/test/config.mak
new file mode 100755
index 0000000..2764e6c
--- /dev/null
+++ b/iup/test/config.mak
@@ -0,0 +1,115 @@
+APPNAME = iuptest
+APPTYPE = CONSOLE
+
+INCLUDES = ../include
+
+ifdef USE_GTK
+ ifndef GTK_DEFAULT
+ # Build GTK version in IRIX,SunOS,AIX,Win32
+ APPNAME = iuptestgtk
+ endif
+else
+ ifdef GTK_DEFAULT
+ # Build Motif version in Linux,Darwin,FreeBSD
+ USE_MOTIF = Yes
+ APPNAME = iuptestmot
+ endif
+endif
+
+USE_IUP3 = Yes
+USE_STATIC = Yes
+IUP = ..
+
+#TEC_UNAME_DIR = Win32.$(TEC_UNAME)
+#DBG = Yes
+
+# Must uncomment all SRC lines
+DEFINES = BIG_TEST
+SRC += bigtest.c
+
+SRC += tray.c
+SRC += dialog.c
+SRC += predialogs.c
+SRC += timer.c
+SRC += label.c
+SRC += canvas.c
+SRC += frame.c
+SRC += idle.c
+SRC += button.c
+SRC += toggle.c
+SRC += vbox.c
+SRC += hbox.c
+SRC += progressbar.c
+SRC += text.c
+SRC += val.c
+SRC += tabs.c
+SRC += sample.c
+SRC += menu.c
+SRC += spin.c
+SRC += text_spin.c
+SRC += list.c
+SRC += sysinfo.c
+SRC += mdi.c
+SRC += getparam.c
+SRC += getcolor.c
+SRC += class_conf.c
+SRC += tree.c
+SRC += zbox.c
+SRC += scanf.c
+SRC += sbox.c
+SRC += clipboard.c
+
+
+#ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+# LIBS += iupimglib
+#else
+# SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupimglib.a
+#endif
+
+USE_CD = Yes
+SRC += canvas_scrollbar.c
+SRC += canvas_cddbuffer.c
+SRC += canvas_cdsimple.c
+
+USE_OPENGL = Yes
+DEFINES += USE_OPENGL
+SRC += glcanvas.c
+SRC += glcanvas_cube.c
+
+USE_IUPCONTROLS = Yes
+SRC += colorbrowser.c
+SRC += dial.c
+SRC += colorbar.c
+SRC += cells_numbering.c
+SRC += cells_degrade.c
+SRC += cells_checkboard.c
+SRC += gauge.c
+SRC += matrix.c
+SRC += matrix_cbs.c
+SRC += matrix_cbmode.c
+
+LINKER = g++
+DEFINES += PPLOT_TEST
+SRC += pplot.c
+ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ LIBS += iup_pplot
+# LIBS += cdpdflib
+# LDIR += $(IUP)/lib/$(TEC_UNAME)
+else
+ SLIB += $(IUP)/lib/$(TEC_UNAME)/libiup_pplot.a
+# SLIB += $(CD)/lib/$(TEC_UNAME)/libcdpdflib.a
+endif
+
+ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ SRC += iuptest.rc
+else
+ ifneq ($(findstring cygw, $(TEC_UNAME)), )
+ SRC += iuptest.rc
+ endif
+endif
+
+#ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+# USE_GDIPLUS=Yes
+#else
+# USE_XRENDER=Yes
+#endif
diff --git a/iup/test/dial.c b/iup/test/dial.c
new file mode 100755
index 0000000..727934c
--- /dev/null
+++ b/iup/test/dial.c
@@ -0,0 +1,111 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+static int help_cb(Ihandle* ih)
+{
+ printf("HELP_CB(%s)\n", IupGetName(ih));
+ return IUP_DEFAULT;
+}
+
+static void printdial(Ihandle* ih, double a, char* color)
+{
+ Ihandle* label = NULL;
+ char* u = NULL;
+ char* type = IupGetAttribute(ih, "TYPE");
+
+ switch(type[0])
+ {
+ case 'V':
+ label = IupGetHandle("lbl_v");
+ u = "deg";
+ break;
+ case 'H':
+ label = IupGetHandle("lbl_h");
+ u = "rad";
+ break;
+ case 'C':
+ label = IupGetHandle("lbl_c");
+ u = "deg";
+ break;
+ }
+
+ if (label)
+ {
+ IupSetfAttribute(label, "TITLE", "%.3g %s", a, u);
+ IupSetAttribute(label, "BGCOLOR", color);
+ }
+}
+
+static int mousemove(Ihandle* ih, double a)
+{
+ printdial(ih, a, "0 255 0");
+ return IUP_DEFAULT;
+}
+
+static int button_press(Ihandle* ih, double a)
+{
+ printdial(ih, a, "255 0 0");
+ return IUP_DEFAULT;
+}
+
+static int button_release(Ihandle* ih, double a)
+{
+ printdial(ih, a, NULL);
+ return IUP_DEFAULT;
+}
+
+void DialTest(void)
+{
+ char *error = NULL;
+ Ihandle *dlg, *dial_h, *dial_v, *dial_c;
+
+ error = IupLoad("dial.led");
+ if (error)
+ {
+ error = IupLoad("../test/dial.led");
+ if (error)
+ {
+ IupMessage("%s\n", error);
+ return;
+ }
+ }
+
+ dlg = IupGetHandle("dlg");
+ dial_h = IupGetHandle("dial_h");
+ dial_v = IupGetHandle("dial_v");
+ dial_c = IupGetHandle("dial_c");
+
+ IupSetFunction("dial_mousemove", (Icallback)mousemove);
+ IupSetFunction("dial_buttonpress", (Icallback)button_press);
+ IupSetFunction("dial_buttonrelease", (Icallback)button_release);
+
+ IupSetCallback(dial_h, "HELP_CB", help_cb);
+ IupSetCallback(dial_v, "HELP_CB", help_cb);
+
+ IupSetAttribute(dial_h, "EXPAND", "HORIZONTAL");
+ IupSetAttribute(dial_v, "EXPAND", "VERTICAL");
+
+// IupSetAttribute(dlg, "HELPBUTTON", "YES");
+// IupSetAttribute(dlg, "DIALOGFRAME", "YES");
+
+ IupShow(dlg);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+ IupControlsOpen();
+
+ DialTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/dial.led b/iup/test/dial.led
new file mode 100755
index 0000000..8157cb7
--- /dev/null
+++ b/iup/test/dial.led
@@ -0,0 +1,49 @@
+lbl_h = LABEL[SIZE=50x]("0")
+lbl_v = LABEL[SIZE=50x]("0")
+lbl_c = LABEL[SIZE=50x]("0")
+
+dial_v = DIAL
+[
+ UNIT=DEGREES,
+ MOUSEMOVE_CB="dial_mousemove",
+ BUTTON_PRESS_CB="dial_buttonpress",
+ BUTTON_RELEASE_CB="dial_buttonrelease"
+] ("VERTICAL")
+
+dial_h = DIAL
+[
+ DENSITY=0.1,
+ MOUSEMOVE_CB="dial_mousemove",
+ BUTTON_PRESS_CB="dial_buttonpress",
+ BUTTON_RELEASE_CB="dial_buttonrelease"
+] ("HORIZONTAL")
+
+dial_c = DIAL
+[
+ UNIT=DEGREES,
+ MOUSEMOVE_CB="dial_mousemove",
+ BUTTON_PRESS_CB="dial_buttonpress",
+ BUTTON_RELEASE_CB="dial_buttonrelease"
+] ("CIRCULAR")
+
+dlg = DIALOG[TITLE="IupDial Test"]
+(
+ VBOX[MARGIN=10x10, GAP=10]
+ (
+ HBOX[ALIGNMENT=ACENTER]
+ (
+ dial_v,
+ lbl_v
+ ),
+ HBOX[ALIGNMENT=ACENTER]
+ (
+ dial_h,
+ lbl_h
+ ),
+ HBOX[ALIGNMENT=ACENTER]
+ (
+ dial_c,
+ lbl_c
+ )
+ )
+)
diff --git a/iup/test/dialog.c b/iup/test/dialog.c
new file mode 100755
index 0000000..f8097c9
--- /dev/null
+++ b/iup/test/dialog.c
@@ -0,0 +1,473 @@
+#if 0
+/* To check for memory leaks */
+#define VLD_MAX_DATA_DUMP 80
+#include <vld.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+#include "iupkey.h"
+
+static unsigned char pixmap_x [ ] =
+{
+ 1,2,3,3,3,3,3,3,3,2,1,
+ 2,1,2,3,3,3,3,3,2,1,2,
+ 0,2,1,2,3,3,3,2,1,2,0,
+ 0,0,2,1,2,3,2,1,2,0,0,
+ 0,0,0,2,1,2,1,2,0,0,0,
+ 0,0,0,0,2,1,2,0,0,0,0,
+ 0,0,0,2,1,2,1,2,0,0,0,
+ 0,0,2,1,2,3,2,1,2,0,0,
+ 0,2,1,2,3,3,3,2,1,2,0,
+ 2,1,2,3,3,3,3,3,2,1,2,
+ 1,2,3,3,3,3,3,3,3,2,1
+};
+
+static unsigned char pixmap_cursor [ ] =
+{
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,2,2,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+} ;
+
+static int close_cb(Ihandle *ih)
+{
+ printf("CLOSE_CB(%s) with IupDestroy\n", IupGetAttribute(ih, "TESTTITLE"));
+ IupDestroy(ih);
+ return IUP_IGNORE;
+}
+
+static int close_cb2(Ihandle *ih)
+{
+ printf("CLOSE_CB(%s) with IUP_IGNORE\n", IupGetAttribute(ih, "TESTTITLE"));
+ return IUP_IGNORE;
+}
+
+static int show_cb(Ihandle *ih, int state)
+{
+ char* state_str[5] ={
+ "SHOW",
+ "RESTORE",
+ "MINIMIZE",
+ "MAXIMIZE",
+ "HIDE"
+ };
+ printf("SHOW_CB(%s, %s)\n", IupGetAttribute(ih, "TESTTITLE"), state_str[state]);
+ return IUP_DEFAULT;
+}
+
+static int map_cb(Ihandle *ih)
+{
+ printf("MAP_CB(%s)\n", IupGetAttribute(ih, "TESTTITLE"));
+ return IUP_DEFAULT;
+}
+
+static int dropfiles_cb(Ihandle *ih, const char* filename, int num, int x, int y)
+{
+ printf("DROPFILES_CB(%s, %s, %d, %d, %d)\n", IupGetAttribute(ih, "TESTTITLE"), filename, num, x, y);
+ return IUP_DEFAULT;
+}
+
+static int resize_cb(Ihandle *ih, int w, int h)
+{
+ printf("RESIZE_CB(%s, %d, %d) RASTERSIZE=%s\n", IupGetAttribute(ih, "TESTTITLE"), w, h, IupGetAttribute(ih, "RASTERSIZE"));
+ return IUP_DEFAULT;
+}
+
+static int move_cb(Ihandle *ih, int x, int y)
+{
+ printf("MOVE_CB(%s, %d, %d)\n", IupGetAttribute(ih, "TESTTITLE"), x, y);
+ return IUP_DEFAULT;
+}
+
+static int getfocus_cb(Ihandle *ih)
+{
+ printf("GETFOCUS_CB(%s)\n", IupGetAttribute(ih, "TESTTITLE"));
+ return IUP_DEFAULT;
+}
+
+static int help_cb(Ihandle* ih)
+{
+ printf("HELP_CB(%s)\n", IupGetAttribute(ih, "TESTTITLE"));
+ return IUP_DEFAULT;
+}
+
+static int killfocus_cb(Ihandle *ih)
+{
+ printf("KILLFOCUS_CB(%s)\n", IupGetAttribute(ih, "TESTTITLE"));
+ return IUP_DEFAULT;
+}
+
+static int leavewindow_cb(Ihandle *ih)
+{
+ printf("LEAVEWINDOW_CB(%s)\n", IupGetAttribute(ih, "TESTTITLE"));
+ return IUP_DEFAULT;
+}
+
+static int enterwindow_cb(Ihandle *ih)
+{
+ printf("ENTERWINDOW_CB(%s)\n", IupGetAttribute(ih, "TESTTITLE"));
+ return IUP_DEFAULT;
+}
+
+char *iupKeyCodeToName(int code);
+
+static void new_dialog(int test, char* tip);
+
+static int k_any(Ihandle *ih, int c)
+{
+ if (iup_isprint(c))
+ printf("K_ANY(%s, %d = %s \'%c\')", IupGetAttribute(ih, "TESTTITLE"), c, iupKeyCodeToName(c), (char)c);
+ else
+ printf("K_ANY(%s, %d = %s)", IupGetAttribute(ih, "TESTTITLE"), c, iupKeyCodeToName(c));
+ printf(" MODKEYSTATE(%s)\n", IupGetGlobal("MODKEYSTATE"));
+
+ switch(c)
+ {
+ case K_r:
+ IupSetAttribute(ih, "RASTERSIZE", "300x300");
+ IupRefresh(ih);
+ break;
+ case K_1:
+ new_dialog(1, "SIZE=FULLxFULL + IupShow.\n"
+ "Check also F1 = RASTERSIZE+IupRefresh.\n"
+ "close_cb returns IGNORE.");
+ break;
+ case K_2:
+ new_dialog(2, "Only common dlg decorations.\n"
+ "ShowXY.\n"
+ "min/max size.");
+ break;
+ case K_3:
+ new_dialog(3, "NO decorations");
+ break;
+ case K_4:
+ new_dialog(4, "PLACEMENT.\n"
+ "Repeat key to test variations.");
+ break;
+ case K_5:
+ new_dialog(5, "IupPopup");
+ break;
+ case K_6:
+ new_dialog(6, "FULLSCREEN");
+ break;
+ case K_p:
+ {
+ static int count = 0;
+ if (count == 0)
+ IupSetAttribute(ih, "PLACEMENT", "MAXIMIZED");
+ else if (count == 1)
+ IupSetAttribute(ih, "PLACEMENT", "MINIMIZED");
+ else if (count == 2)
+ IupSetAttribute(ih, "PLACEMENT", "NORMAL");
+ else
+ IupSetAttribute(ih, "PLACEMENT", "FULL");
+
+ count++;
+ if (count == 4) // cicle from 0 to 3
+ count = 0;
+
+ IupShow(ih);
+ }
+ break;
+ case K_s:
+ IupShow(IupGetHandle("_MAIN_DIALOG_TEST_"));
+ break;
+ case K_f:
+ if (IupGetInt(ih, "FULLSCREEN"))
+ IupSetAttribute(ih, "FULLSCREEN", "NO");
+ else
+ IupSetAttribute(ih, "FULLSCREEN", "YES");
+ break;
+ case K_ESC:
+ IupDestroy(ih);
+ return IUP_IGNORE;
+ case K_c:
+ return IUP_CLOSE;
+ case K_h:
+ IupHide(ih);
+ break;
+ }
+ return IUP_DEFAULT;
+}
+
+static void new_dialog(int test, char* tip)
+{
+ Ihandle *dlg = IupDialog(NULL);
+ IupSetAttribute(dlg, "TIP", tip);
+ IupSetfAttribute(dlg, "_TEST_", "%d", test);
+
+ if (test == 0)
+ {
+ char* msg = "Press a key for a dialog test:\n"
+ "1 = new with SIZE=FULLxFULL\n"
+ "2 = new with dialog decorations\n"
+ "3 = new with NO decorations\n"
+ "4 = new changing PLACEMENT\n"
+ "5 = new using IupPopup\n"
+ "6 = new with FULLSCREEN=YES\n"
+ "p = PLACEMENT=MAXIMIZED\n"
+ "pp = PLACEMENT=MINIMIZED\n"
+ "ppp = PLACEMENT=NORMAL\n"
+ "pppp = PLACEMENT=FULL\n"
+ "s = IupShow(main)\n"
+ "f = toggle FULLSCREEN state\n"
+ "c = return IUP_CLOSE;\n"
+ "h = IupHide\n"
+ "r = RASTERSIZE+IupRefresh\n"
+ "Esc = quit";
+ IupAppend(dlg, IupVbox(IupLabel(msg), NULL));
+
+ IupSetHandle("_MAIN_DIALOG_TEST_", dlg);
+ }
+ else
+ {
+ IupSetAttribute(dlg, "PARENTDIALOG", "_MAIN_DIALOG_TEST_");
+ IupSetAttribute(dlg, "CURSOR", "CROSS");
+ }
+
+ if (test != 3)
+ IupSetfAttribute(dlg, "TITLE", "dlg%d", test);
+ IupSetfAttribute(dlg, "TESTTITLE", "dlg%d", test);
+
+ if (test == 1)
+ IupSetAttribute(dlg, "SIZE", "FULLxFULL");
+ else if (test != 6)
+ IupSetAttribute(dlg, "RASTERSIZE", "500x500");
+
+ if (test == 2)
+ {
+ IupSetAttribute(dlg, "CURSOR", "DLG_CURSOR");
+ IupSetAttribute(dlg, "ICON", "DLG_ICON");
+ IupSetAttribute(dlg, "MINSIZE", "300x300");
+ IupSetAttribute(dlg, "MAXSIZE", "600x600");
+// IupSetAttribute(dlg, "FONTSIZE", "20");
+
+ {
+ static int count = 0;
+ if (count == 1)
+ {
+// IupSetAttribute(dlg, "FONT", "TIMES_ITALIC_14");
+ IupSetAttribute(dlg, "FONT", "Times, Italic 14");
+// IupSetAttribute(dlg, "FONT", "Times, Underline Italic Strikeout -14");
+ IupSetAttribute(dlg, "TIPBGCOLOR", "255 128 128");
+ IupSetAttribute(dlg, "TIPFGCOLOR", "0 92 255");
+
+ // Windows Only
+ IupSetAttribute(dlg, "TIPBALLON", "YES");
+ IupSetAttribute(dlg, "TIPBALLONTITLE", "Tip Title Test");
+ IupSetAttribute(dlg, "TIPBALLONTITLEICON", "2");
+ //IupSetAttribute(dlg, "TIPDELAY", "5000");
+ }
+ if (count == 2)
+ {
+ // Windows Only
+ IupSetAttribute(dlg, "TOPMOST", "YES");
+ IupSetAttribute(dlg, "OPACITY", "128");
+ IupSetAttribute(dlg, "TOOLBOX", "YES");
+ }
+ count++;
+ }
+ }
+
+ if (test == 3)
+ {
+ IupSetAttribute(dlg, "BGCOLOR", "255 0 255");
+ IupSetAttribute(dlg, "RESIZE", "NO");
+ IupSetAttribute(dlg, "MENUBOX", "NO");
+ IupSetAttribute(dlg, "MAXBOX", "NO");
+ IupSetAttribute(dlg, "MINBOX", "NO");
+ IupSetAttribute(dlg, "BORDER", "NO");
+
+ IupSetAttribute(dlg, "RASTERSIZE", "500x500");
+ }
+
+ if (test == 5)
+ {
+ IupSetAttribute(dlg, "DIALOGFRAME", "YES");
+
+ // Windows Only
+ IupSetAttribute(dlg, "HELPBUTTON", "YES");
+ }
+
+ if (test == 1)
+ IupSetCallback(dlg, "CLOSE_CB", (Icallback)close_cb2);
+ else
+ IupSetCallback(dlg, "CLOSE_CB", (Icallback)close_cb);
+
+ IupSetCallback(dlg, "SHOW_CB", (Icallback)show_cb);
+ IupSetCallback(dlg, "MAP_CB", (Icallback)map_cb);
+ IupSetCallback(dlg, "K_ANY", (Icallback)k_any);
+ IupSetCallback(dlg, "GETFOCUS_CB", (Icallback)getfocus_cb);
+ IupSetCallback(dlg, "KILLFOCUS_CB", (Icallback)killfocus_cb);
+ IupSetCallback(dlg, "HELP_CB", (Icallback)help_cb);
+ IupSetCallback(dlg, "ENTERWINDOW_CB", (Icallback)enterwindow_cb);
+ IupSetCallback(dlg, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb);
+ IupSetCallback(dlg, "RESIZE_CB", (Icallback)resize_cb);
+ IupSetCallback(dlg, "MOVE_CB", (Icallback)move_cb);
+
+ // Windows and GTK Only
+ IupSetCallback(dlg, "DROPFILES_CB", (Icallback)dropfiles_cb);
+
+ if (test == 0 || test == 1)
+ IupShow(dlg);
+ else if (test == 3)
+ IupShowXY(dlg, IUP_RIGHT, IUP_CENTER);
+ else if (test == 2)
+ IupShowXY(dlg, 100, 100);
+ else if (test == 4)
+ {
+ static int count = 0;
+ if (count == 0)
+ {
+ IupSetAttribute(dlg, "PLACEMENT", "MINIMIZED");
+ IupSetfAttribute(dlg, "TIP", "%s%s", IupGetAttribute(dlg, "TIP"), "\n.PLACEMENT=MINIMIZED.");
+ }
+ else if (count == 1)
+ {
+ IupSetAttribute(dlg, "PLACEMENT", "MAXIMIZED");
+ IupSetfAttribute(dlg, "TIP", "%s%s", IupGetAttribute(dlg, "TIP"), "\n.PLACEMENT=MAXIMIZED.");
+ }
+ else
+ {
+ IupSetAttribute(dlg, "PLACEMENT", "FULL");
+ IupSetfAttribute(dlg, "TIP", "%s%s", IupGetAttribute(dlg, "TIP"), "\n.PLACEMENT=FULL.");
+ }
+
+ count++;
+ if (count == 3) // cicle from 0 to 2
+ count = 0;
+
+ IupShow(dlg);
+ }
+ else if (test == 5)
+ {
+ IupPopup(dlg, IUP_CURRENT, IUP_CURRENT);
+ }
+ else if (test == 6)
+ {
+ IupSetAttribute(dlg, "FULLSCREEN", "YES");
+ IupShow(dlg);
+ }
+}
+
+static void create_images(void)
+{
+ Ihandle *image;
+
+ image = IupImage(11, 11, pixmap_x);
+ IupSetAttribute(image, "0", "BGCOLOR");
+ IupSetAttribute(image, "1", "0 1 0");
+ IupSetAttribute(image, "2", "255 0 0");
+ IupSetAttribute(image, "3", "255 255 0");
+ IupSetHandle("DLG_ICON", image);
+
+ image = IupImage(32, 32, pixmap_cursor);
+ IupSetAttribute(image, "0", "BGCOLOR"); /* always for cursor */
+ IupSetAttribute(image, "1", "255 0 0");
+ IupSetAttribute(image, "2", "128 0 0");
+ IupSetAttribute(image, "HOTSPOT", "21:10");
+ IupSetHandle("DLG_CURSOR", image);
+}
+
+void DialogTest(void)
+{
+ create_images();
+
+ new_dialog(0, "IupDialog as a main window,\n"
+ "all decorations.\n"
+ "rastersize+centered.");
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ DialogTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
+
+/*****************************************
+--------------TESTS-------------------
+
+to check IUP sizes x Native sizes:
+in UNIX use xwininfo
+in Windows use Spy++
+take screen shots, measure dlg sizes if necessary
+
+0- with all decorations
+ check: TITLE
+ TIP
+ CURSOR
+ BGCOLOR
+ RASTERSIZE (check window real size - 500x500)
+ CLOSE_CB, SHOW_CB, MAP_CB, K_ANY, GETFOCUS_CB, KILLFOCUS_CB,
+ HELP_CB, ENTERWINDOW_CB, LEAVEWINDOW_CB, RESIZE_CB
+ Close_cb using IupDestroy
+ closing main window will close child dialogs
+ Esc - call IupDestroy
+ 'h' = IupHide - no destroy
+ 'c' = return IUP_CLOSE - no destroy
+
+1- SIZE = FULLxFULL (check window real size)
+ press 'r' to change - RASTERSIZE+IupRefresh (300x300)
+ close_cb with IGNORE
+
+2- ShowXY (check position)
+ MINSIZE (300x300) and MAXSIZE (600x600)
+ Custom Icon and Cursor
+
+3- no decorations
+
+4- 1o. PLACEMENT MINIMIZED
+ 2o. PLACEMENT MAXIMIZED
+ 3o. PLACEMENT FULL
+ (press 'p' to change placement any time)
+
+5- only "dlg" decorations
+ IupPopup
+ 'c' = return IUP_CLOSE - no destroy
+ 'h' = IupHide - no destroy
+ 's' = IupShow for dialog0
+
+6- FULLSCREEN
+ (press 'f' to change fullscreen any time)
+
+*/
diff --git a/iup/test/file_large.xbm b/iup/test/file_large.xbm
new file mode 100755
index 0000000..c2095e9
--- /dev/null
+++ b/iup/test/file_large.xbm
@@ -0,0 +1,14 @@
+#define file_large_xbm_width 32
+#define file_large_xbm_height 32
+static char file_large_xbm_bits[] = {
+ 0xF0, 0xFF, 0x3F, 0x00, 0x10, 0x00, 0x60, 0x00, 0x10, 0x00, 0xA0, 0x00,
+ 0x10, 0x00, 0x20, 0x01, 0x10, 0x00, 0x20, 0x02, 0x10, 0x00, 0x20, 0x04,
+ 0x10, 0x00, 0x20, 0x08, 0x10, 0x00, 0xE0, 0x1F, 0x10, 0x00, 0x00, 0x10,
+ 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10,
+ 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10,
+ 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10,
+ 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10,
+ 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10,
+ 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10,
+ 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10,
+ 0x10, 0x00, 0x00, 0x10, 0xF0, 0xFF, 0xFF, 0x1F };
diff --git a/iup/test/frame.c b/iup/test/frame.c
new file mode 100755
index 0000000..2bcd128
--- /dev/null
+++ b/iup/test/frame.c
@@ -0,0 +1,68 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+
+void FrameTest(void)
+{
+ Ihandle *dlg, *frame1, *frame2;
+
+ frame1 = IupFrame
+ (
+ IupVbox
+ (
+ IupLabel("Label1"),
+ IupSetAttributes(IupLabel("Label2"), "SIZE=70x"),
+ IupLabel("Label3"),
+ NULL
+ )
+ );
+
+ frame2 = IupFrame
+ (
+ IupVbox
+ (
+ IupSetAttributes(IupLabel("Label4"), "EXPAND=HORIZONTAL"),
+ IupLabel("Label5"),
+ IupLabel("Label6"),
+ NULL
+ )
+ );
+
+ IupSetAttribute(frame1, "TITLE", "Title Text");
+// IupSetAttribute(frame1, "FGCOLOR", "255 0 0");
+// IupSetAttribute(frame1, "BGCOLOR", "0 128 0");
+ IupSetAttribute(frame2, "SUNKEN", "YES");
+
+ IupSetAttribute(frame1, "MARGIN", "0x0");
+ IupSetAttribute(frame2, "MARGIN", "0x0");
+// IupSetAttribute(frame2, "BGCOLOR", "0 128 0");
+ dlg = IupDialog(IupHbox(frame1, frame2, NULL));
+
+ IupSetAttribute(dlg, "TITLE", "IupFrame Test");
+ IupSetAttribute(dlg, "MARGIN", "10x10");
+ IupSetAttribute(dlg, "GAP", "5");
+ IupSetAttribute(dlg, "FONTSIZE", "14");
+// IupSetAttribute(dlg, "RASTERSIZE", "300x200");
+// IupSetAttribute(dlg, "BGCOLOR", "0 128 0");
+
+ IupShow(dlg);
+ printf("RASTERSIZE(%s)\n", IupGetAttribute(frame1, "RASTERSIZE"));
+ printf("CLIENTSIZE(%s)\n", IupGetAttribute(frame1, "CLIENTSIZE"));
+ printf("RASTERSIZE(%s)\n", IupGetAttribute(frame2, "RASTERSIZE"));
+ printf("CLIENTSIZE(%s)\n", IupGetAttribute(frame2, "CLIENTSIZE"));
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ FrameTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/gauge.c b/iup/test/gauge.c
new file mode 100755
index 0000000..12e3c76
--- /dev/null
+++ b/iup/test/gauge.c
@@ -0,0 +1,305 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+static float increment = 0.01f;
+static Ihandle *gauge;
+static Ihandle *btn_pause;
+static Ihandle *timer;
+
+static unsigned char pixmap_play[] =
+{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 };
+
+static unsigned char pixmap_restart[] =
+{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 };
+
+static unsigned char pixmap_rewind[] =
+{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 };
+
+static unsigned char pixmap_forward[] =
+{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 };
+
+static unsigned char pixmap_pause[] =
+{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 };
+
+static void createimg_s (void)
+{
+ Ihandle *img_restart, *img_play, *img_forward, *img_rewind, *img_pause;
+
+ img_restart = IupImage(22,22, pixmap_restart);
+ img_play = IupImage(22,22, pixmap_play);
+ img_forward = IupImage(22,22, pixmap_forward);
+ img_rewind = IupImage(22,22, pixmap_rewind);
+ img_pause = IupImage(22,22, pixmap_pause);
+
+ IupSetHandle ("img_restart", img_restart);
+ IupSetHandle ("img_play", img_play);
+ IupSetHandle ("img_forward", img_forward);
+ IupSetHandle ("img_rewind", img_rewind);
+ IupSetHandle ("img_pause", img_pause);
+
+ IupSetAttribute (img_restart, "1", "0 0 0");
+ IupSetAttribute (img_restart, "2", "BGCOLOR");
+ IupSetAttribute (img_play, "1", "0 0 0");
+ IupSetAttribute (img_play, "2", "BGCOLOR");
+ IupSetAttribute (img_forward, "1", "0 0 0");
+ IupSetAttribute (img_forward, "2", "BGCOLOR");
+ IupSetAttribute (img_rewind, "1", "0 0 0");
+ IupSetAttribute (img_rewind, "2", "BGCOLOR");
+ IupSetAttribute (img_pause, "1", "0 0 0");
+ IupSetAttribute (img_pause, "2", "BGCOLOR");
+}
+
+static int time_cb(void)
+{
+ float value = IupGetFloat(gauge, "VALUE");
+ value += increment;
+ if (value > 1) value = 0; /* start over */
+ IupSetfAttribute(gauge, "VALUE", "%f", (double)value);
+ return IUP_DEFAULT;
+}
+
+static int btn_pause_cb(void)
+{
+ if (!IupGetInt(timer, "RUN"))
+ {
+ IupSetAttribute(timer, "RUN", "YES");
+ IupSetAttribute(btn_pause, "IMAGE", "img_pause");
+ }
+ else
+ {
+ IupSetAttribute(timer, "RUN", "NO");
+ IupSetAttribute(btn_pause, "IMAGE", "img_play");
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int btn_restart_cb(void)
+{
+ IupSetAttribute(gauge, "VALUE", "0");
+ return IUP_DEFAULT;
+}
+
+static int btn_accelerate_cb(void)
+{
+ increment *= 2;
+ return IUP_DEFAULT;
+}
+
+static int btn_decelerate_cb(void)
+{
+ increment /= 2;
+ return IUP_DEFAULT;
+}
+
+static int btn_show1_cb(void)
+{
+ if (!IupGetInt(gauge, "DASHED"))
+ IupSetAttribute(gauge, "DASHED", "YES");
+ else
+ IupSetAttribute(gauge, "DASHED", "NO");
+
+ return IUP_DEFAULT;
+}
+
+static int btn_show2_cb(void)
+{
+ if (!IupGetInt(gauge, "SHOW_TEXT"))
+ IupSetAttribute(gauge, "SHOW_TEXT", "YES");
+ else
+ IupSetAttribute(gauge, "SHOW_TEXT", "NO");
+
+ return IUP_DEFAULT;
+}
+
+void GaugeTest(void)
+{
+ Ihandle *dlg, *vbox, *hbox;
+ Ihandle *btn_restart, *btn_accelerate, *btn_decelerate, *btn_show1, *btn_show2;
+
+ timer = IupTimer();
+ IupSetCallback(timer, "ACTION_CB", (Icallback)time_cb);
+ IupSetAttribute(timer, "TIME", "100");
+
+ gauge = IupGauge();
+
+ IupSetAttribute(gauge, "EXPAND", "YES");
+// IupSetAttribute(gauge, "BGCOLOR", "255 0 128");
+// IupSetAttribute(gauge, "FGCOLOR", "0 128 0");
+
+ btn_restart = IupButton(NULL, NULL);
+ btn_pause = IupButton(NULL, NULL);
+ btn_accelerate = IupButton(NULL, NULL);
+ btn_decelerate = IupButton(NULL, NULL);
+ btn_show1 = IupButton("Dashed", NULL);
+ btn_show2 = IupButton("Text", NULL);
+
+ createimg_s();
+
+ IupSetAttribute(btn_restart, "IMAGE", "img_restart");
+ IupSetAttribute(btn_restart, "TIP", "Restart" );
+ IupSetAttribute(btn_pause, "IMAGE", "img_pause");
+ IupSetAttribute(btn_pause, "TIP", "Play/Pause");
+ IupSetAttribute(btn_accelerate, "IMAGE", "img_forward");
+ IupSetAttribute(btn_accelerate, "TIP", "Accelerate");
+ IupSetAttribute(btn_decelerate, "IMAGE", "img_rewind");
+ IupSetAttribute(btn_decelerate, "TIP", "Decelerate");
+ IupSetAttribute(btn_show1, "TIP", "Dashed or Continuous");
+ IupSetAttribute(btn_show2, "TIP", "Text or None");
+
+ hbox = IupHbox
+ (
+ IupFill(),
+ btn_pause,
+ btn_restart,
+ btn_decelerate,
+ btn_accelerate,
+ btn_show1,
+ btn_show2,
+ IupFill(),
+ NULL
+ );
+
+ vbox = IupVbox(gauge, hbox, NULL);
+ IupSetAttribute(vbox, "MARGIN", "10x10");
+ IupSetAttribute(vbox, "GAP", "5");
+
+ dlg = IupDialog(vbox);
+
+ IupSetAttribute(dlg, "TITLE", "IupGauge Test");
+
+ IupSetCallback(btn_pause, "ACTION", (Icallback) btn_pause_cb);
+ IupSetCallback(btn_restart, "ACTION", (Icallback) btn_restart_cb);
+ IupSetCallback(btn_accelerate, "ACTION", (Icallback) btn_accelerate_cb);
+ IupSetCallback(btn_decelerate, "ACTION", (Icallback) btn_decelerate_cb);
+ IupSetCallback(btn_show1, "ACTION", (Icallback) btn_show1_cb);
+ IupSetCallback(btn_show2, "ACTION", (Icallback) btn_show2_cb);
+
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+
+ IupSetAttribute(timer, "RUN", "YES");
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+ IupControlsOpen();
+
+ GaugeTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/getcolor.c b/iup/test/getcolor.c
new file mode 100755
index 0000000..02ceb8d
--- /dev/null
+++ b/iup/test/getcolor.c
@@ -0,0 +1,28 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+void GetColorTest(void)
+{
+ unsigned char r = 10, g = 100, b = 25;
+ if (IupGetColor(100, 100, &r, &g, &b))
+ printf("RGB = %d, %d, %d Hex=[%.2X%.2X%.2X]\n", r, g, b, r, g, b);
+}
+
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ GetColorTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/getparam.c b/iup/test/getparam.c
new file mode 100755
index 0000000..fbda6bb
--- /dev/null
+++ b/iup/test/getparam.c
@@ -0,0 +1,98 @@
+/* IupGetParam Example in C
+ Shows a dialog with all the possible fields.
+*/
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <iup.h>
+#include <iupcontrols.h>
+
+static int param_action(Ihandle* dialog, int param_index, void* user_data)
+{
+ switch(param_index)
+ {
+ case -1:
+ printf("IupGetParam - OK\n");
+ break;
+ case -2:
+ printf("IupGetParam - Map\n");
+ break;
+ case -3:
+ printf("IupGetParam - Cancel\n");
+ break;
+// case 1:
+// return 0;
+ default:
+ {
+ Ihandle* param;
+ char param_str[50];
+ sprintf(param_str, "PARAM%d", param_index);
+ param = (Ihandle*)IupGetAttribute(dialog, param_str);
+ printf("%s = %s\n", param_str, IupGetAttribute(param, "VALUE"));
+ break;
+ }
+ }
+ return 1;
+}
+
+void GetParamTest(void)
+{
+ int pboolean = 1;
+ int pinteger = 3456;
+ float preal = 3.543f;
+ int pinteger2 = 192;
+ float preal2 = 0.5f;
+ float pangle = 90;
+ char pstring[100] = "string text";
+ char pcolor[100] = "255 0 128";
+ int plist = 2;
+ char pstring2[200] = "second text\nsecond line";
+ char file_name[500] = "test.jpg";
+
+ if (!IupGetParam("Title", param_action, 0,
+ "Boolean: %b[No,Yes]\n"
+ "Integer: %i\n"
+ "Real 1: %r\n"
+ "Sep1 %t\n"
+ "Integer: %i[0,255]\n"
+ "Real 2: %r[-1.5,1.5,0.05]\n"
+ "Sep2 %t\n"
+ "Angle: %a[0,360]\n"
+ "String: %s\n"
+ "List: %l|item1|item2|item3|\n"
+ "File: %f[OPEN|*.bmp;*.jpg|CURRENT|NO|NO]\n"
+ "Color: %c{Color Tip}\n"
+ "Sep3 %t\n"
+ "Multiline: %m\n",
+ &pboolean, &pinteger, &preal, &pinteger2, &preal2, &pangle, pstring, &plist, file_name, pcolor, pstring2, NULL))
+ return;
+
+ IupMessagef("IupGetParam",
+ "Boolean Value: %d\n"
+ "Integer: %d\n"
+ "Real 1: %g\n"
+ "Integer: %d\n"
+ "Real 2: %g\n"
+ "Angle: %g\n"
+ "String: %s\n"
+ "List Index: %d\n"
+ "FileName: %s\n"
+ "Color: %s\n"
+ "Multiline: %s",
+ pboolean, pinteger, (double)preal, pinteger2, (double)preal2, (double)pangle, pstring, plist, file_name, pcolor, pstring2);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ GetParamTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/glcanvas.c b/iup/test/glcanvas.c
new file mode 100755
index 0000000..6a34c29
--- /dev/null
+++ b/iup/test/glcanvas.c
@@ -0,0 +1,77 @@
+#ifdef USE_OPENGL
+#ifdef WIN32
+#include <windows.h>
+#endif
+#include <GL/gl.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupgl.h"
+
+
+static int action(Ihandle *ih)
+{
+ IupGLMakeCurrent(ih);
+
+ glClearColor(1.0, 0.0, 1.0, 1.f); /* pink */
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glColor3f(1.0,0.0,0.0); /* red */
+ glBegin(GL_QUADS);
+ glVertex2f(0.9f,0.9f);
+ glVertex2f(0.9f,-0.9f);
+ glVertex2f(-0.9f,-0.9f);
+ glVertex2f(-0.9f,0.9f);
+ glEnd();
+
+ IupGLSwapBuffers(ih);
+
+ return IUP_DEFAULT;
+}
+
+void GLCanvasTest(void)
+{
+ Ihandle *dlg, *canvas, *box;
+
+ IupGLCanvasOpen();
+
+ box = IupVbox(NULL);
+ IupSetAttribute(box, "MARGIN", "5x5");
+
+ canvas = IupGLCanvas(NULL);
+ IupSetCallback(canvas, "ACTION", action);
+ IupSetAttribute(canvas, "BUFFER", "DOUBLE");
+ IupSetAttribute(canvas, "BORDER", "NO");
+ IupSetAttribute(canvas, "RASTERSIZE", "300x200");
+ IupAppend(box, canvas);
+
+ dlg = IupDialog(box);
+ IupSetAttribute(dlg, "TITLE", "IupGLCanvas Test");
+
+ IupMap(dlg);
+ IupGLMakeCurrent(canvas);
+ printf("Vendor: %s\n", glGetString(GL_VENDOR));
+ printf("Renderer: %s\n", glGetString(GL_RENDERER));
+ printf("Version: %s\n", glGetString(GL_VERSION));
+
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+ IupGLCanvasOpen();
+
+ GLCanvasTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
+#endif
diff --git a/iup/test/glcanvas_cube.c b/iup/test/glcanvas_cube.c
new file mode 100755
index 0000000..3bd5ec5
--- /dev/null
+++ b/iup/test/glcanvas_cube.c
@@ -0,0 +1,234 @@
+#ifdef USE_OPENGL
+#ifdef WIN32
+#include <windows.h>
+#endif
+#include <GL/gl.h>
+#include <GL/glu.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+
+#include "iup.h"
+#include "iupgl.h"
+
+
+typedef struct _color3D
+{
+ double r;
+ double g;
+ double b;
+} color3D;
+
+static void add_color_vertex(const color3D* c)
+{
+ glColor3d(c->r, c->g, c->b);
+ glVertex3d(c->r, c->g, c->b);
+}
+
+static void draw_cube_face(const color3D* c1, const color3D* c2, const color3D* c3, const color3D* c4)
+{
+ color3D cm;
+ cm.r = (c1->r + c2->r + c3->r + c4->r)/4;
+ cm.g = (c1->g + c2->g + c3->g + c4->g)/4;
+ cm.b = (c1->b + c2->b + c3->b + c4->b)/4;
+
+ add_color_vertex(&cm);
+ add_color_vertex(c1);
+ add_color_vertex(c2);
+
+ add_color_vertex(&cm);
+ add_color_vertex(c2);
+ add_color_vertex(c3);
+
+ add_color_vertex(&cm);
+ add_color_vertex(c3);
+ add_color_vertex(c4);
+
+ add_color_vertex(&cm);
+ add_color_vertex(c4);
+ add_color_vertex(c1);
+}
+
+const color3D c3D_black = {0.0, 0.0, 0.0};
+const color3D c3D_red = {1.0, 0.0, 0.0};
+const color3D c3D_green = {0.0, 1.0, 0.0};
+const color3D c3D_blue = {0.0, 0.0, 1.0};
+const color3D c3D_cian = {0.0, 1.0, 1.0};
+const color3D c3D_magenta = {1.0, 0.0, 1.0};
+const color3D c3D_yellow = {1.0, 1.0, 0.0};
+const color3D c3D_white = {1.0, 1.0, 1.0};
+
+static void draw_cube(void)
+{
+ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glBegin(GL_TRIANGLES);
+
+ draw_cube_face(&c3D_black, &c3D_blue, &c3D_magenta, &c3D_red);
+ draw_cube_face(&c3D_black, &c3D_green, &c3D_cian, &c3D_blue);
+ draw_cube_face(&c3D_black, &c3D_red, &c3D_yellow, &c3D_green);
+ draw_cube_face(&c3D_white, &c3D_cian, &c3D_blue, &c3D_magenta);
+ draw_cube_face(&c3D_white, &c3D_cian, &c3D_green, &c3D_yellow);
+ draw_cube_face(&c3D_white, &c3D_magenta, &c3D_red, &c3D_yellow);
+
+ glEnd();
+}
+
+static void init(void)
+{
+ glClearColor(0.5,0.5,0.5,0.0);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(45, 1, 1, 10);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt (0.5, 0.5, 3.0, /* posicao do observador */
+ 0.5, 0.5, 0.0, /* ponto de referencia */
+ 0.0, 1.0, 0.0); /* vup */
+ glEnable(GL_DEPTH_TEST);
+ glClearDepth (1.0);
+}
+
+static void unproject (double x2, double y2, double *x3, double *y3, double *z3)
+{
+ double mv[16];
+ double pm[16];
+ int vp[4];
+
+ glGetDoublev (GL_MODELVIEW_MATRIX, mv);
+ glGetDoublev (GL_PROJECTION_MATRIX, pm);
+ glGetIntegerv (GL_VIEWPORT, vp);
+ gluUnProject (x2, y2, 0.0,
+ mv, pm, vp,
+ x3, y3, z3);
+}
+
+static int pos_x, pos_y;
+static int move = 0;
+
+static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status)
+{
+ (void)ih;
+ (void)status;
+
+ if (but==IUP_BUTTON1)
+ {
+ if (pressed)
+ {
+ pos_x = x;
+ pos_y = y;
+ move = 1;
+ }
+ else
+ {
+ move = 0;
+ }
+ }
+ return IUP_DEFAULT;
+}
+
+#define INVERT_Y(_y) (height-y)
+
+static int motion_cb(Ihandle *ih,int x,int y,char* status)
+{
+ (void)status;
+
+ if (move)
+ {
+ double dif_x, dif_y;
+ double dx, dy, dz;
+ double x1, y1, z1;
+ double x2, y2, z2;
+ double angle, norma;
+ int height = IupGetInt2(ih, "RASTERSIZE");
+
+ IupGLMakeCurrent(ih);
+
+ dif_x = x - pos_x;
+ dif_y = y - pos_y;
+
+ pos_x = x;
+ pos_y = y;
+
+ angle = sqrt(dif_x*dif_x + dif_y*dif_y);
+
+ unproject (pos_x, INVERT_Y(pos_y), &x1, &y1, &z1);
+ unproject ((double)(dif_y+pos_x), (double)(dif_x+INVERT_Y(pos_y)), &x2, &y2, &z2);
+ dx = x2-x1; dy = y2-y1; dz = z2-z1;
+ norma = sqrt(dx*dx + dy*dy + dz*dz);
+ dx /= norma; dy /= norma; dz /= norma;
+
+ glTranslated(0.5, 0.5, 0.5);
+ glRotated (angle, dx, dy, dz);
+ glTranslated(-0.5, -0.5, -0.5);
+
+ draw_cube();
+
+ IupGLSwapBuffers(ih);
+ }
+ return IUP_DEFAULT;
+}
+
+static int action(Ihandle *ih)
+{
+ IupGLMakeCurrent(ih);
+
+ glClear (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
+
+ draw_cube();
+
+ IupGLSwapBuffers(ih);
+
+ return IUP_DEFAULT;
+}
+
+void GLCanvasCubeTest(void)
+{
+ Ihandle *dlg, *canvas, *box;
+
+ IupGLCanvasOpen();
+
+ box = IupVbox(NULL);
+ IupSetAttribute(box, "MARGIN", "5x5");
+
+ canvas = IupGLCanvas(NULL);
+ IupSetCallback(canvas, "ACTION", action);
+ IupSetCallback(canvas, "BUTTON_CB", (Icallback)button_cb);
+ IupSetCallback(canvas, "MOTION_CB", (Icallback)motion_cb);
+ IupSetAttribute(canvas, "BUFFER", "DOUBLE");
+ IupSetAttribute(canvas, "RASTERSIZE", "300x300");
+ IupAppend(box, canvas);
+
+ dlg = IupDialog(IupSetAttributes(IupFrame(box), "TITLE=Teste"));
+ IupSetAttribute(dlg, "TITLE", "IupGLCanvas Test");
+ IupSetAttribute(dlg, "COMPOSITED", "NO");
+
+ IupMap(dlg);
+
+ IupGLMakeCurrent(canvas);
+ init();
+ printf("Vendor: %s\n", glGetString(GL_VENDOR));
+ printf("Renderer: %s\n", glGetString(GL_RENDERER));
+ printf("Version: %s\n", glGetString(GL_VERSION));
+ IupSetAttribute(canvas, "RASTERSIZE", NULL);
+
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ GLCanvasCubeTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
+#endif
diff --git a/iup/test/hbox.c b/iup/test/hbox.c
new file mode 100755
index 0000000..44f0f02
--- /dev/null
+++ b/iup/test/hbox.c
@@ -0,0 +1,114 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+
+void HboxTest(void)
+{
+ /* IUP identifiers */
+ Ihandle *fr1, *fr2, *fr3, *dlg;
+ Ihandle *b11, *b12, *b13;
+ Ihandle *b21, *b22, *b23;
+ Ihandle *b31, *b32, *b33;
+ Ihandle *h1, *h2, *h3;
+
+ /* Creates frame with three top aligned buttons */
+ fr1 = IupFrame
+ (
+ h1 = IupHbox
+ (
+// IupFill(),
+ b11=IupButton("1", NULL),
+ b12=IupButton("2", NULL),
+ b13=IupButton("3", NULL),
+// IupFill(),
+ NULL
+ )
+ );
+// IupSetAttribute(fr1, "TITLE", "ALIGNMENT=ATOP");
+ IupSetAttribute(fr1, "TITLE", "IupHbox");
+ IupSetAttribute(b11, "SIZE", "10x10");
+ IupSetAttribute(b12, "SIZE", "20x16");
+ IupSetAttribute(b13, "SIZE", "30x20");
+ IupSetAttributes(h1, "ALIGNMENT=ATOP"); /* Sets hbox's alignment, gap and size */
+ IupSetAttribute(h1, "HOMOGENEOUS", "YES");
+ IupSetAttribute(h1, "EXPANDCHILDREN", "YES");
+// IupSetAttribute(b12, "VISIBLE", "NO");
+// IupSetAttribute(b12, "FLOATING", "YES");
+
+ /* Creates frame with three buttons */
+ fr2 = IupFrame
+ (
+ h2=IupHbox
+ (
+ IupFill(),
+ b21=IupButton("1", NULL),
+ b22=IupButton("2", NULL),
+ b23=IupButton("3", NULL),
+ IupFill(),
+ NULL
+ )
+ );
+ IupSetAttribute(fr2, "TITLE", "ALIGNMENT=ACENTER, GAP=20");
+ IupSetAttribute(b21, "SIZE", "30x30");
+ IupSetAttribute(b22, "SIZE", "30x40");
+ IupSetAttribute(b23, "SIZE", "30x50");
+ IupSetAttributes(h2, "ALIGNMENT=ACENTER, GAP=20"); /* Sets hbox's alignment and gap */
+
+ /* Creates frame with three bottom aligned buttons */
+ fr3 = IupFrame
+ (
+ h3=IupHbox
+ (
+ IupFill(),
+ b31=IupButton ("1", NULL),
+ b32=IupButton ("2", NULL),
+ b33=IupButton ("3", NULL),
+ IupFill(),
+ NULL
+ )
+ );
+ IupSetAttribute(fr3, "TITLE", "ALIGNMENT=ABOTTOM, MARGIN=10x10");
+ IupSetAttribute(b31, "SIZE", "30x30");
+ IupSetAttribute(b32, "SIZE", "30x40");
+ IupSetAttribute(b33, "SIZE", "30x50");
+ IupSetAttributes(h3, "ALIGNMENT=ABOTTOM, MARGIN=10x10"); /* Sets hbox's alignment and size */
+
+ /* Creates dlg with the three frames */
+ dlg = IupDialog
+ (
+ IupVbox
+ (
+ fr1,
+ fr2,
+ fr3,
+ NULL
+ )
+ );
+
+ IupSetAttribute(dlg, "TITLE", "IupHbox Test"); /* Sets dlg's title */
+ IupSetAttribute(dlg, "MARGIN", "10x10");
+ IupSetAttribute(dlg, "GAP", "10");
+ IupSetAttribute(fr1, "MARGIN", "0x0"); /* avoid attribute propagation */
+ IupSetAttribute(fr2, "MARGIN", "0x0");
+ IupSetAttribute(fr3, "MARGIN", "0x0");
+ IupSetAttribute(fr1, "GAP", "0");
+ IupSetAttribute(fr2, "GAP", "0");
+ IupSetAttribute(fr3, "GAP", "0");
+
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER); /* Shows dlg in the center of the screen */
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ HboxTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/idle.c b/iup/test/idle.c
new file mode 100755
index 0000000..f9681ba
--- /dev/null
+++ b/iup/test/idle.c
@@ -0,0 +1,55 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+
+static int idle_count = 0;
+
+static int idle(void)
+{
+ printf("IDLE_ACTION(count = %d)\n", idle_count);
+ idle_count++;
+
+// if (idle_count == 10000)
+// return IUP_IGNORE;
+
+ return IUP_DEFAULT;
+}
+
+static int motion_cb(Ihandle* ih)
+{
+ printf("MOTION_CB()\n");
+ if (idle_count > 30000)
+ IupSetFunction ("IDLE_ACTION", NULL);
+ return IUP_DEFAULT;
+}
+
+void IdleTest(void)
+{
+ Ihandle* dlg, *canvas;
+
+ canvas = IupCanvas(NULL);
+ IupSetCallback(canvas, "MOTION_CB", motion_cb);
+
+ dlg = IupDialog(canvas);
+ IupSetAttribute(dlg, "TITLE", "Idle Test");
+ IupSetAttribute(dlg, "RASTERSIZE", "500x500");
+
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+
+ IupSetFunction ("IDLE_ACTION", (Icallback)idle);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ IdleTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/iuptest.rc b/iup/test/iuptest.rc
new file mode 100755
index 0000000..94e5ca1
--- /dev/null
+++ b/iup/test/iuptest.rc
@@ -0,0 +1,31 @@
+TECGRAF_ICON ICON "../etc/tecgraf.ico"
+TECGRAF_BITMAP BITMAP "../test/tecgraf.bmp"
+
+CURSOR_PEN CURSOR "../etc/pen.cur"
+
+/* To avoid the inclusion of <winuser.h> */
+#define WS_CHILD 0x40000000L
+#define WS_VISIBLE 0x10000000L
+#define WS_CLIPSIBLINGS 0x04000000L
+#define DS_3DLOOK 0x0004L
+#define DS_CONTROL 0x0400L
+#define SS_OWNERDRAW 0x0000000DL
+#define WS_EX_STATICEDGE 0x00020000L
+
+#define IUP_PREVIEWCANVAS 3000
+
+iupPreviewDlg DIALOG DISCARDABLE 0, 0, 250, 95
+STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "", IUP_PREVIEWCANVAS, "STATIC", SS_OWNERDRAW, 70, 0, 120, 90, WS_EX_STATICEDGE
+END
+
+#ifndef IUP_DLL
+/* The following line will enable Windows XP Visual Styles */
+#ifdef WIN64
+1 24 "../etc/iup64.manifest"
+#else
+1 24 "../etc/iup.manifest"
+#endif
+#endif
diff --git a/iup/test/label.c b/iup/test/label.c
new file mode 100755
index 0000000..1eea959
--- /dev/null
+++ b/iup/test/label.c
@@ -0,0 +1,217 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+
+
+#define TEST_IMAGE_SIZE 20
+
+static unsigned char image_data_8 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] =
+{
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+};
+
+static unsigned char image_data_24 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE*3] =
+{
+ 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000,
+ 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,
+};
+
+static unsigned char image_data_32 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE*4] =
+{
+ 000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,
+ 000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,
+};
+
+static int enter_cb(Ihandle *ih)
+{
+ Ihandle *box = IupGetChild(ih, 0);
+ if (IupGetInt(box, "ACTIVE"))
+ IupSetAttribute(box, "ACTIVE", "NO");
+ else
+ IupSetAttribute(box, "ACTIVE", "YES");
+ return IUP_DEFAULT;
+}
+
+void LabelTest(void)
+{
+ Ihandle *dlg, *label, *image1, *image2, *image3,
+ *box1, *box2, *fill;
+
+ box1 = IupVbox(NULL);
+ IupSetAttribute(box1, "MARGIN", "5x5");
+ IupSetAttribute(box1, "GAP", "5");
+ IupSetAttribute(box1, "BGCOLOR", "75 150 170");
+ IupSetAttribute(box1, "PADDING", "5x5");
+
+ label = IupLabel(NULL);
+ IupSetAttribute(label, "TITLE", "Text Labels (ηγν)");
+ IupSetAttribute(label, "BGCOLOR", IupGetGlobal("DLGBGCOLOR"));
+ IupSetAttribute(label, "PADDING", "0x0");
+ IupSetAttribute(label, "TIP", "Text Label");
+ IupAppend(box1, label);
+
+ label = IupLabel(NULL);
+ IupSetAttribute(label, "SEPARATOR", "HORIZONTAL");
+ IupAppend(box1, label);
+
+ label = IupLabel(NULL);
+ IupSetAttribute(label, "TITLE", "Text &Label\nSecond Line");
+ IupSetAttribute(label, "FGCOLOR", "0 0 255");
+ IupSetAttribute(label, "RASTERSIZE", "150x70");
+// IupSetAttribute(label, "RASTERSIZE", "30x70");
+// IupSetAttribute(label, "WORDWRAP", "YES");
+// IupSetAttribute(label, "ELLIPSIS", "YES");
+ IupSetAttribute(label, "ALIGNMENT", "ALEFT:ATOP");
+ IupAppend(box1, label);
+
+ label = IupLabel(NULL);
+ IupSetAttribute(label, "TITLE", "Text Label\nSecond Line");
+ IupSetAttribute(label, "RASTERSIZE", "150x70");
+ IupSetAttribute(label, "ALIGNMENT", "ACENTER:ACENTER");
+ IupSetAttribute(label, "FONT", "Helvetica, 14");
+// IupSetAttribute(label, "FONTSIZE", "14");
+// IupSetAttribute(label, "FONTSTYLE", "Italic");
+ IupAppend(box1, label);
+
+ label = IupLabel(NULL);
+ IupSetAttribute(label, "TITLE", "Text Label\n<b>Second Line</b>");
+ IupSetAttribute(label, "RASTERSIZE", "150x70");
+ IupSetAttribute(label, "ALIGNMENT", "ARIGHT:ABOTTOM");
+ IupSetAttribute(label, "MARKUP", "YES");
+ IupAppend(box1, label);
+
+ box2 = IupVbox(NULL);
+ IupSetAttribute(box2, "MARGIN", "5x5");
+ IupSetAttribute(box2, "GAP", "5");
+ IupSetAttribute(box2, "BGCOLOR", "75 150 170");
+ IupSetAttribute(box2, "PADDING", "5x5");
+
+ image1 = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8);
+ IupSetAttribute(image1, "0", "BGCOLOR");
+ IupSetAttribute(image1, "1", "255 0 0");
+ IupSetAttribute(image1, "2", "0 255 0");
+ IupSetAttribute(image1, "3", "0 0 255");
+ IupSetAttribute(image1, "4", "255 255 255");
+ IupSetAttribute(image1, "5", "0 0 0");
+
+ label = IupLabel(NULL);
+ IupSetAttributeHandle(label, "IMAGE", image1);
+ //IupSetAttribute(label, "IMAGE", "TECGRAF_BITMAP");
+ //IupSetAttribute(label, "IMAGE", "../test/tecgraf.bmp");
+ //IupSetAttribute(label, "IMAGE", "../test/file_large.xbm");
+ //IupSetAttribute(label, "IMAGE", "gtk-open");
+ IupSetAttribute(label, "BGCOLOR", IupGetGlobal("DLGBGCOLOR"));
+ IupSetAttribute(label, "PADDING", "0x0");
+ IupSetAttribute(label, "TIP", "Image Label");
+ IupAppend(box2, label);
+
+ label = IupLabel(NULL);
+ IupSetAttribute(label, "SEPARATOR", "HORIZONTAL");
+ IupAppend(box2, label);
+
+ fill = IupFill();
+ IupSetAttribute(fill, "SIZE", "20");
+ IupAppend(box2, fill);
+
+ label = IupLabel(NULL);
+ IupSetAttributeHandle(label, "IMAGE", image1);
+ IupSetAttribute(label, "RASTERSIZE", "150x50");
+ IupAppend(box2, label);
+
+ image2 = IupImageRGB(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_24);
+
+ label = IupLabel(NULL);
+ IupSetAttributeHandle(label, "IMAGE", image2);
+ IupSetAttribute(label, "RASTERSIZE", "150x50");
+ IupSetAttribute(label, "ALIGNMENT", "ACENTER");
+ IupAppend(box2, label);
+
+ image3 = IupImageRGBA(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_32);
+
+ label = IupLabel(NULL);
+ IupSetAttributeHandle(label, "IMAGE", image3);
+ IupSetAttribute(label, "RASTERSIZE", "150x50");
+ IupSetAttribute(label, "ALIGNMENT", "ARIGHT");
+ IupAppend(box2, label);
+
+ label = IupLabel(NULL);
+ IupSetAttribute(label, "SEPARATOR", "VERTICAL");
+
+ dlg = IupDialog(IupHbox(box1, label, box2, NULL));
+ IupSetAttribute(dlg, "TITLE", "IupLabel Test");
+// IupSetAttribute(dlg, "BACKGROUND", "0 0 128");
+// IupSetAttributeHandle(dlg, "BACKGROUND", image2);
+ IupSetCallback(dlg, "ENTERWINDOW_CB", enter_cb);
+
+ IupShow(dlg);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ LabelTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/list.c b/iup/test/list.c
new file mode 100755
index 0000000..5db582b
--- /dev/null
+++ b/iup/test/list.c
@@ -0,0 +1,366 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <iup.h>
+#include <iupkey.h>
+
+static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status)
+{
+ printf("BUTTON_CB(but=%c (%d), x=%d, y=%d [%s]) - [pos=%d]\n",(char)but,pressed,x,y, status, IupConvertXYToPos(ih, x, y));
+ return IUP_DEFAULT;
+}
+
+static int motion_cb(Ihandle *ih,int x,int y,char* status)
+{
+ printf("MOTION_CB(x=%d, y=%d [%s]) - [pos=%d]\n",x,y, status,IupConvertXYToPos(ih, x, y));
+ return IUP_DEFAULT;
+}
+
+static int multilist_cb (Ihandle *ih, char *s)
+{
+ printf("MULTISELECT_CB(%s)\n", s);
+ return IUP_DEFAULT;
+}
+
+static int list_cb (Ihandle *ih, char *t, int i, int v)
+{
+ printf("ACTION(%s - %d %d)\n", t, i, v);
+ return IUP_DEFAULT;
+}
+
+static int dropdown_cb(Ihandle *ih, int state)
+{
+ printf("DROPDOWN_CB(%d)\n", state);
+ return IUP_DEFAULT;
+}
+
+static int dblclick_cb(Ihandle *ih, int pos, char *text)
+{
+ printf("DBLCLICK_CB(%d - %s)\n", pos, text);
+ return IUP_DEFAULT;
+}
+
+static int edit_cb (Ihandle *ih, int c, char *after)
+{
+ printf("EDIT_CB(%d - %s)\n", c, after);
+ return IUP_DEFAULT;
+}
+
+static int caret_cb(Ihandle *ih, int lin, int col)
+{
+ printf("CARET_CB(%d, %d)\n", lin, col);
+ return IUP_DEFAULT;
+}
+
+static int btok_cb(Ihandle *ih)
+{
+ printf("Default Enter\n");
+ return IUP_DEFAULT;
+}
+
+static int btcancel_cb(Ihandle *ih)
+{
+ printf("Default Esc\n");
+ return IUP_DEFAULT;
+}
+
+static int selectedtext_cb(Ihandle *ih)
+{
+ Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetAttribute(text, "VALUE", IupGetAttribute(list, "SELECTEDTEXT"));
+ return IUP_DEFAULT;
+}
+
+static int selection_cb(Ihandle *ih)
+{
+ Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetAttribute(text, "VALUE", IupGetAttribute(list, "SELECTION"));
+ return IUP_DEFAULT;
+}
+
+static int getcaret_cb(Ihandle *ih)
+{
+ Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetAttribute(text, "VALUE", IupGetAttribute(list, "CARET"));
+ return IUP_DEFAULT;
+}
+
+static int getvalue_cb(Ihandle *ih)
+{
+ Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetAttribute(text, "VALUE", IupGetAttribute(list, "VALUE"));
+ return IUP_DEFAULT;
+}
+
+static int getcount_cb(Ihandle *ih)
+{
+ Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST");
+ printf("COUNT=%s\n", IupGetAttribute(list, "COUNT"));
+ return IUP_DEFAULT;
+}
+
+static int append_cb(Ihandle *ih)
+{
+ Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetAttribute(list, "APPEND", IupGetAttribute(text, "VALUE"));
+ return IUP_DEFAULT;
+}
+
+static int readonly_cb(Ihandle *ih)
+{
+ Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetAttribute(list, "READONLY", IupGetAttribute(text, "VALUE"));
+ return IUP_DEFAULT;
+}
+
+static int setvalue_cb(Ihandle *ih)
+{
+ Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetAttribute(list, "VALUE", IupGetAttribute(text, "VALUE"));
+ return IUP_DEFAULT;
+}
+
+static int insertitem_cb(Ihandle *ih)
+{
+ Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetAttribute(list, "INSERTITEM3", IupGetAttribute(text, "VALUE"));
+ return IUP_DEFAULT;
+}
+
+static int appenditem_cb(Ihandle *ih)
+{
+ Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetAttribute(list, "APPENDITEM", IupGetAttribute(text, "VALUE"));
+ return IUP_DEFAULT;
+}
+
+static int removeitem_cb(Ihandle *ih)
+{
+ Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetAttribute(list, "REMOVEITEM", IupGetAttribute(text, "VALUE"));
+ return IUP_DEFAULT;
+}
+
+static int topitem_cb(Ihandle *ih)
+{
+ Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetAttribute(list, "TOPITEM", IupGetAttribute(text, "VALUE"));
+ return IUP_DEFAULT;
+}
+
+static int showdropdown_cb(Ihandle *ih)
+{
+ Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST");
+ IupSetAttribute(list, "SHOWDROPDOWN", "YES");
+ return IUP_DEFAULT;
+}
+
+static void setactivelist(Ihandle* ih)
+{
+ Ihandle* dialog = IupGetDialog(ih);
+ Ihandle* label = (Ihandle*)IupGetAttribute(dialog, "_LABEL");
+ IupSetAttribute(dialog, "_ACTIVE_LIST", (char*)ih);
+ IupSetAttribute(label, "TITLE", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"));
+}
+
+static int getfocus_cb(Ihandle *ih)
+{
+ setactivelist(ih);
+ printf("GETFOCUS_CB(%s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"));
+ return IUP_DEFAULT;
+}
+
+static int killfocus_cb(Ihandle *ih)
+{
+ printf("KILLFOCUS_CB(%s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"));
+ return IUP_DEFAULT;
+}
+
+static int leavewindow_cb(Ihandle *ih)
+{
+ printf("LEAVEWINDOW_CB(%s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"));
+ return IUP_DEFAULT;
+}
+
+static int enterwindow_cb(Ihandle *ih)
+{
+ setactivelist(ih);
+ printf("ENTERWINDOW_CB(%s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"));
+ return IUP_DEFAULT;
+}
+
+char *iupKeyCodeToName(int code);
+
+static int k_any(Ihandle *ih, int c)
+{
+ if (iup_isprint(c))
+ printf("K_ANY(%s, %d = %s \'%c\')\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"), c, iupKeyCodeToName(c), (char)c);
+ else
+ printf("K_ANY(%s, %d = %s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"), c, iupKeyCodeToName(c));
+ return IUP_CONTINUE;
+}
+
+static int help_cb(Ihandle* ih)
+{
+ printf("HELP_CB(%s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"));
+ return IUP_DEFAULT;
+}
+
+static void set_callbacks(Ihandle* list)
+{
+ IupSetCallback(list, "ACTION", (Icallback)list_cb);
+ IupSetCallback(list, "DBLCLICK_CB", (Icallback)dblclick_cb);
+ IupSetCallback(list, "DROPDOWN_CB", (Icallback)dropdown_cb);
+ IupSetCallback(list, "EDIT_CB", (Icallback)edit_cb);
+ IupSetCallback(list, "CARET_CB", (Icallback)caret_cb);
+// IupSetCallback(list, "BUTTON_CB", (Icallback)button_cb);
+// IupSetCallback(list, "MOTION_CB", (Icallback)motion_cb);
+
+ //IupSetCallback(list, "GETFOCUS_CB", getfocus_cb);
+ //IupSetCallback(list, "KILLFOCUS_CB", killfocus_cb);
+
+ IupSetCallback(list, "ENTERWINDOW_CB", (Icallback)enterwindow_cb);
+ //IupSetCallback(list, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb);
+
+ //IupSetCallback(list, "K_ANY", (Icallback)k_any);
+ //IupSetCallback(list, "HELP_CB", (Icallback)help_cb);
+
+// IupSetAttribute(list, "DROPEXPAND", "NO");
+// IupSetAttribute(list, "AUTOHIDE", "NO");
+// IupSetAttribute(list, "SCROLLBAR", "NO");
+
+ IupSetAttribute(list, "VISIBLE_ITEMS", "3");
+// IupSetAttribute(list, "VISIBLECOLUMNS", "7");
+ IupSetAttribute(list, "VISIBLELINES", "4");
+}
+
+void ListTest(void)
+{
+ Ihandle *dlg, *list1, *list2, *list3, *list4, *text, *btok, *btcancel,
+ *box, *lists, *buttons1, *buttons2, *buttons3, *label;
+
+ list1 = IupList(NULL);
+ list2 = IupList(NULL);
+ list3 = IupList(NULL);
+ list4 = IupList(NULL);
+
+ IupSetAttributes(list1, "1=\"US$ 1000\", 2=\"US$ 2000\", 3=\"US$ 300.000.000\", 4=\"US$ 4000\","
+ "EDITBOX=YES, DROPDOWN=YES, TIP=Edit+Drop, VALUE=\"Edit Here\", NAME=list1");
+ IupSetAttributes(list2, "1=\"Banana\", 2=\"Apple\", 3=\"Orange\", 4=\"Strawberry\", 5=\"Grape\","
+ "DROPDOWN=YES, NAME=list2, TIP=Drop, VALUE=2, SORT=YES");
+ IupSetAttributes(list3, "1=\"Char A\", 2=\"Char B\", 3=\"Char CCCCC\", 4=\"Char D\", 5=\"Char E\", 6=\"Char F\","
+ "EDITBOX=YES, NAME=list3, TIP=Edit+List, VALUE=\"Edit Here\"");
+// IupSetAttributes(list4, "1=\"Number 1\", 2=\"Number 2\", 3=\"Number 3\", 4=\"Number 4\", 5=\"Number 5\", 6=\"Number 6\", 7=\"Number 7\","
+// "MULTIPLE=YES, NAME=list4, TIP=List, VALUE=+--++--");
+ IupSetAttributes(list4, "1=\"Number 3\", 2=\"Number 4\", 3=\"Number 2\", 4=\"Number 1\", 5=\"Number 6\", 6=\"Number 5\", 7=\"Number 7\","
+ "MULTIPLE=YES, NAME=list4, TIP=List, SORT=YES, VALUE=+--++--");
+
+ set_callbacks(list1);
+ set_callbacks(list2);
+ set_callbacks(list3);
+ set_callbacks(list4);
+
+ //IupSetAttributes(list2, "6=\"R$ 1000\", 7=\"R$ 2000\", 8=\"R$ 123456789\", 9=\"R$ 4000\", 10=\"R$ 5000\",");
+ //IupSetAttributes(list2, "11=\"R$ 1000\", 12=\"R$ 2000\", 13=\"R$ 123456789\", 14=\"R$ 4000\", 15=\"R$ 5000\",");
+ //IupSetAttributes(list2, "16=\"R$ 1000\", 17=\"R$ 2000\", 18=\"R$ 123456789\", 19=\"R$ 4000\", 20=\"R$ 5000\",");
+
+ IupSetCallback(list4, "MULTISELECT_CB", (Icallback)multilist_cb);
+
+// IupSetAttribute(list1, "READONLY", "YES");
+// IupSetAttribute(list3, "READONLY", "YES");
+// IupSetAttribute(list1, "PADDING", "10x10");
+// IupSetAttribute(list3, "PADDING", "10x10");
+
+// IupSetAttribute(list3, "SPACING", "10");
+// IupSetAttribute(list4, "SPACING", "10");
+
+ printf("COUNT(list1)=%s\n", IupGetAttribute(list1, "COUNT"));
+ printf("COUNT(list2)=%s\n", IupGetAttribute(list2, "COUNT"));
+ printf("COUNT(list3)=%s\n", IupGetAttribute(list3, "COUNT"));
+ printf("COUNT(list4)=%s\n", IupGetAttribute(list4, "COUNT"));
+
+ lists = IupHbox(
+ IupVbox(
+ IupSetAttributes(IupFrame(IupVbox(list1, NULL)), "TITLE=EDITBOX+DROPDOWN"),
+ IupSetAttributes(IupFrame(IupVbox(list2, NULL)), "TITLE=DROPDOWN"),
+ NULL),
+ IupSetAttributes(IupFrame(IupVbox(list3, NULL)), "TITLE=EDITBOX"),
+ IupSetAttributes(IupFrame(IupVbox(list4, NULL)), "TITLE=MULTIPLE"),
+ IupVbox(
+ btok = IupSetCallbacks(IupButton("Default Enter", NULL), "ACTION", btok_cb, NULL),
+ btcancel = IupSetCallbacks(IupButton("Default Esc", NULL), "ACTION", btcancel_cb, NULL),
+ NULL),
+ NULL);
+
+ text = IupText(NULL);
+ IupSetAttribute(text, "EXPAND", "HORIZONTAL");
+ IupSetAttribute(text, "NAME", "text");
+
+ buttons1 = IupHbox(
+ IupSetCallbacks(IupButton("Get(VALUE)", NULL), "ACTION", getvalue_cb, NULL),
+ IupSetCallbacks(IupButton("Set(VALUE)", NULL), "ACTION", setvalue_cb, NULL),
+ IupSetCallbacks(IupButton("Get(COUNT)", NULL), "ACTION", getcount_cb, NULL),
+ NULL);
+ buttons2 = IupHbox(
+ IupSetCallbacks(IupButton("INSERTITEM3", NULL), "ACTION", insertitem_cb, NULL),
+ IupSetCallbacks(IupButton("APPENDITEM", NULL), "ACTION", appenditem_cb, NULL),
+ IupSetCallbacks(IupButton("REMOVEITEM", NULL), "ACTION", removeitem_cb, NULL),
+ IupSetCallbacks(IupButton("SHOWDROPDOWN", NULL), "ACTION", showdropdown_cb, NULL),
+ IupSetCallbacks(IupButton("TOPITEM", NULL), "ACTION", topitem_cb, NULL),
+ NULL);
+ buttons3 = IupHbox(
+ IupSetCallbacks(IupButton("APPEND", NULL), "ACTION", append_cb, NULL),
+ IupSetCallbacks(IupButton("Get(CARET)", NULL), "ACTION", getcaret_cb, NULL),
+ IupSetCallbacks(IupButton("Set(READONLY)", NULL), "ACTION", readonly_cb, NULL),
+ IupSetCallbacks(IupButton("Get(SELECTEDTEXT)", NULL), "ACTION", selectedtext_cb, NULL),
+ IupSetCallbacks(IupButton("Get(SELECTION)", NULL), "ACTION", selection_cb, NULL),
+ NULL);
+
+ box = IupVbox(lists, IupHbox(IupLabel("Attrib. Value: "), text, NULL), buttons1, buttons2, buttons3, IupHbox(IupLabel("Current List: "), label = IupLabel(NULL), NULL), NULL);
+ IupSetAttributes(buttons1,"MARGIN=5x5, GAP=5");
+ IupSetAttributes(buttons2,"MARGIN=5x5, GAP=5");
+ IupSetAttributes(buttons3,"MARGIN=5x5, GAP=5");
+ IupSetAttributes(lists,"MARGIN=10x10, GAP=10");
+ IupSetAttribute(label,"EXPAND", "HORIZONTAL");
+
+ dlg = IupDialog(box);
+ IupSetAttribute(dlg, "TITLE", "IupList Test");
+ IupSetAttributeHandle(dlg, "DEFAULTENTER", btok);
+ IupSetAttributeHandle(dlg, "DEFAULTESC", btcancel);
+ IupSetAttribute(dlg, "_LABEL", (char*)label);
+
+// IupSetAttribute(box, "BGCOLOR", "92 92 255");
+// IupSetAttribute(dlg, "BGCOLOR", "92 92 255");
+// IupSetAttribute(dlg, "BACKGROUND", "200 10 80");
+// IupSetAttribute(dlg, "BGCOLOR", "173 177 194"); // Motif BGCOLOR for documentation
+
+// IupSetAttribute(dlg, "FONT", "Helvetica, 24");
+// IupSetAttribute(box, "FGCOLOR", "255 0 0");
+
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ ListTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/make_uname b/iup/test/make_uname
new file mode 100755
index 0000000..ae0ab49
--- /dev/null
+++ b/iup/test/make_uname
@@ -0,0 +1,4 @@
+#This builds all the libraries of the folder for 1 uname
+
+tecmake relink $1 $2 $3 $4 $5 $6 $7
+tecmake USE_GTK=Yes relink $1 $2 $3 $4 $5 $6 $7
diff --git a/iup/test/matrix.c b/iup/test/matrix.c
new file mode 100755
index 0000000..280ffdb
--- /dev/null
+++ b/iup/test/matrix.c
@@ -0,0 +1,115 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+
+#undef __IUPDEF_H
+#include "iup.h"
+#include "iupcontrols.h"
+
+static int dropcheck_cb(Ihandle *self, int lin, int col)
+{
+ if (lin == 3 && col == 1)
+ return IUP_DEFAULT;
+ return IUP_IGNORE;
+}
+
+static Ihandle* create_matrix(void)
+{
+ Ihandle* mat = IupMatrix(NULL);
+
+ IupSetAttribute(mat, "NUMCOL", "15");
+ IupSetAttribute(mat, "NUMLIN", "20");
+// IupSetAttribute(mat, "NUMCOL", "2");
+// IupSetAttribute(mat, "NUMLIN", "3");
+
+ IupSetAttribute(mat, "0:0", "Inflation");
+ IupSetAttribute(mat, "1:0", "Medicine\nPharma");
+ IupSetAttribute(mat, "2:0", "Food");
+ IupSetAttribute(mat, "3:0", "Energy");
+ IupSetAttribute(mat, "0:1", "January 2000");
+ IupSetAttribute(mat, "0:2", "February 2000");
+ IupSetAttribute(mat, "1:1", "5.6\n3.33");
+ IupSetAttribute(mat, "2:1", "2.2");
+ IupSetAttribute(mat, "3:1", "7.2");
+ IupSetAttribute(mat, "1:2", "4.5");
+ IupSetAttribute(mat, "2:2", "8.1");
+ IupSetAttribute(mat, "3:2", "3.4");
+ IupSetAttribute(mat, "3:3", "Font Test");
+ IupSetAttribute(mat, "WIDTH2", "90");
+ IupSetAttribute(mat, "HEIGHT2", "30");
+ IupSetAttribute(mat,"SORTSIGN2","DOWN");
+// IupSetAttribute(mat, "WIDTHDEF", "34");
+ IupSetAttribute(mat,"MULTILINE", "YES");
+ IupSetAttribute(mat,"RESIZEMATRIX", "YES");
+ IupSetAttribute(mat,"USETITLESIZE", "YES");
+ //IupSetAttribute(mat,"SCROLLBAR", "NO");
+ //IupSetAttribute(mat, "BGCOLOR1:2", "255 92 255");
+ //IupSetAttribute(mat, "BGCOLOR2:*", "92 92 255");
+ //IupSetAttribute(mat, "BGCOLOR*:3", "255 92 92");
+ //IupSetAttribute(mat, "FGCOLOR1:2", "255 0 0");
+ //IupSetAttribute(mat, "FGCOLOR2:*", "0 128 0");
+ //IupSetAttribute(mat, "FGCOLOR*:3", "0 0 255");
+ //IupSetAttribute(mat, "FONT1:2", "Helvetica, 24");
+ //IupSetAttribute(mat, "FONT2:*", "Courier, 14");
+ //IupSetAttribute(mat, "FONT*:3", "Times, Bold 14");
+ //IupSetAttribute(mat, "ALIGNMENT2", "ARIGHT");
+// IupSetAttribute(mat, "ACTIVE", "NO");
+
+ IupSetAttribute(mat,"MARKMODE","CELL");
+// IupSetAttribute(mat,"MARKMODE","LIN");
+// IupSetAttribute(mat,"MARKMULTIPLE","NO");
+ IupSetAttribute(mat,"MARKMULTIPLE","YES");
+// IupSetAttribute(mat,"MARKAREA","NOT_CONTINUOUS");
+ IupSetAttribute(mat,"MARK2:2","YES");
+ IupSetAttribute(mat,"MARK2:3","YES");
+ IupSetAttribute(mat,"MARK3:3","YES");
+
+
+// IupSetAttribute(mat,"MARKMODE","LINCOL");
+
+ //IupSetAttribute(mat, "NUMCOL_VISIBLE_LAST", "YES");
+ //IupSetAttribute(mat, "NUMLIN_VISIBLE_LAST", "YES");
+ IupSetAttribute(mat, "WIDTHDEF", "15");
+ IupSetAttribute(mat, "20:15", "The End");
+ IupSetAttribute(mat, "10:0", "Middle Line");
+ IupSetAttribute(mat, "15:0", "Middle Line");
+ IupSetAttribute(mat, "0:7", "Middle Column");
+ IupSetAttribute(mat, "0:11", "Middle Column");
+ IupSetAttribute(mat, "20:0", "Line Title Test");
+ IupSetAttribute(mat, "0:15", "Column Title Test");
+ IupSetAttribute(mat, "NUMCOL_VISIBLE", "6");
+ IupSetAttribute(mat, "NUMLIN_VISIBLE", "8");
+
+ IupSetCallback(mat, "DROPCHECK_CB", (Icallback)dropcheck_cb);
+
+ return mat;
+}
+
+void MatrixTest(void)
+{
+ Ihandle* dlg, *box;
+
+ box = IupVbox(create_matrix(), NULL);
+ IupSetAttribute(box, "MARGIN", "10x10");
+
+ dlg = IupDialog(box);
+ IupSetAttribute(dlg, "TITLE", "IupMatrix Simple Test");
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+ IupControlsOpen();
+
+ MatrixTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/matrix_cbmode.c b/iup/test/matrix_cbmode.c
new file mode 100755
index 0000000..0d0e17c
--- /dev/null
+++ b/iup/test/matrix_cbmode.c
@@ -0,0 +1,85 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+static char data[3][3][50] =
+{
+ {"1:1", "1:2", "1:3"},
+ {"2:1", "2:2", "2:3"},
+ {"3:1", "3:2", "3:3"},
+};
+
+
+static char* value_cb(Ihandle *self, int lin, int col)
+{
+ if (lin == 0 || col == 0)
+ return "Title";
+ return data[lin-1][col-1];
+}
+
+static int value_edit_cb(Ihandle *self, int lin, int col, char* newvalue)
+{
+ strcpy(data[lin-1][col-1], newvalue);
+ return IUP_DEFAULT;
+}
+
+static Ihandle* create_matrix(void)
+{
+ Ihandle* mat = IupMatrix(NULL);
+
+ IupSetAttribute(mat, "NUMCOL", "3");
+ IupSetAttribute(mat, "NUMLIN", "3");
+
+ IupSetAttribute(mat, "NUMCOL_VISIBLE", "3");
+ IupSetAttribute(mat, "NUMLIN_VISIBLE", "3");
+
+// IupSetAttribute(mat, "WIDTH2", "90");
+// IupSetAttribute(mat, "HEIGHT2", "30");
+// IupSetAttribute(mat, "WIDTHDEF", "34");
+// IupSetAttribute(mat,"RESIZEMATRIX", "YES");
+ IupSetAttribute(mat,"SCROLLBAR", "NO");
+ IupSetCallback(mat,"VALUE_CB",(Icallback)value_cb);
+ IupSetCallback(mat,"VALUE_EDIT_CB",(Icallback)value_edit_cb);
+
+// IupSetAttribute(mat, "HEIGHT0", "10");
+// IupSetAttribute(mat, "WIDTH0", "90");
+// IupSetAttribute(mat,"MARKMODE","LIN");
+// IupSetAttribute(mat,"MARKMULTIPLE","NO");
+
+ //IupSetAttribute(mat, "NUMCOL_VISIBLE_LAST", "YES");
+ //IupSetAttribute(mat, "NUMLIN_VISIBLE_LAST", "YES");
+// IupSetAttribute(mat, "WIDTHDEF", "15");
+
+ return mat;
+}
+
+void MatrixCbModeTest(void)
+{
+ Ihandle* dlg, *box;
+
+ box = IupVbox(create_matrix(), NULL);
+ IupSetAttribute(box, "MARGIN", "10x10");
+
+ dlg = IupDialog(box);
+ IupSetAttribute(dlg, "TITLE", "IupMatrix Simple Test");
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+ IupControlsOpen();
+
+ MatrixCbModeTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/matrix_cbs.c b/iup/test/matrix_cbs.c
new file mode 100755
index 0000000..1b7afb9
--- /dev/null
+++ b/iup/test/matrix_cbs.c
@@ -0,0 +1,341 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+#include <cd.h>
+
+static int leave(Ihandle *self, int lin, int col)
+{
+ printf("leaveitem_cb(%d, %d)\n", lin, col);
+ //if(lin == 3 && col ==2)
+ // return IUP_IGNORE; /* notice that this will lock the matrix in this cell */
+ return IUP_DEFAULT;
+}
+
+static char* value(Ihandle *self, int lin, int col)
+{
+ static char str[50];
+ sprintf(str, "%d-%d", lin, col);
+ return str;
+}
+
+static int enter(Ihandle *self, int lin, int col)
+{
+ printf("enteritem_cb(%d, %d)\n", lin, col);
+ if(lin == 2 && col == 2)
+ {
+ IupSetAttribute(IupGetHandle("mat1"), "REDRAW", "ALL");
+ IupSetAttribute(IupGetHandle("mat2"), "REDRAW", "ALL");
+ IupSetAttribute(IupGetHandle("mat3"), "REDRAW", "ALL");
+ IupSetAttribute(IupGetHandle("mat4"), "REDRAW", "ALL");
+ IupSetAttribute(IupGetHandle("mat5"), "REDRAW", "ALL");
+ IupSetAttribute(IupGetHandle("mat6"), "REDRAW", "ALL");
+ }
+ return IUP_DEFAULT;
+}
+
+static int dropselect(Ihandle *self, int lin, int col, Ihandle *drop, char *t, int i, int v)
+{
+ printf("dropselect_cb(%d, %d)\n", lin, col);
+ return IUP_DEFAULT;
+}
+
+int mdrop = 1;
+static int dropcheck(Ihandle *self, int lin, int col)
+{
+ if(lin == 1 && col == 1)
+ {
+ if (mdrop)
+ return IUP_DEFAULT;
+ else
+ return IUP_IGNORE;
+ }
+ return IUP_IGNORE;
+}
+
+static int click(Ihandle *self, int lin, int col)
+{
+ char* value = IupMatGetAttribute(self, "", lin, col);
+ if (!value) value = "NULL";
+ printf("click_cb(%d, %d)\n", lin, col);
+ printf(" VALUE%d:%d = %s\n", lin, col, value);
+ return IUP_DEFAULT;
+}
+
+static int drop(Ihandle *self, Ihandle *drop, int lin, int col)
+{
+ printf("drop_cb(%d, %d)\n", lin, col);
+ if(lin == 1 && col == 1 && mdrop)
+ {
+ IupSetAttribute(drop, "1", "A - Test of Very Big String for Dropdown!");
+ IupSetAttribute(drop, "2", "B");
+ IupSetAttribute(drop, "3", "C");
+ IupSetAttribute(drop, "4", "XXX");
+ IupSetAttribute(drop, "5", "5");
+ IupSetAttribute(drop, "6", "6");
+ IupSetAttribute(drop, "7", "7");
+ IupSetAttribute(drop, "8", NULL);
+ return IUP_DEFAULT;
+ }
+ return IUP_IGNORE;
+}
+
+static int edition(Ihandle *self, int lin, int col, int mode)
+{
+ printf("edition_cb(lin=%d, col=%d, mode=%d)\n", lin, col, mode);
+ if (mode==1)
+ {
+ IupSetAttribute(self, "CARET", "3");
+
+ if(lin == 3 && col == 2)
+ return IUP_IGNORE;
+ }
+
+ //if(lin == 1 && col == 1 && mode==0 && mdrop == 1)
+ //{
+ // mdrop = 0;
+ // IupSetAttribute(self, "EDIT_MODE", "NO");
+ // IupSetAttribute(self, "EDIT_MODE", "YES");
+ // return IUP_IGNORE;
+ //}
+
+ return IUP_DEFAULT;
+}
+
+static int drawcb(Ihandle *h, int lin, int col,int x1, int x2, int y1, int y2)
+{
+ if (lin < 4)
+ return IUP_IGNORE;
+
+ cdForeground(CD_RED);
+ cdLine(x1, y1, x2, y2);
+ cdLine(x1, y2, x2, y1);
+
+ {
+ char s[50];
+ sprintf(s, "%d:%d", lin, col);
+ cdTextAlignment(CD_CENTER);
+ cdText((x1+x2)/2, (y1+y2)/2, s);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int actioncb(Ihandle *h, int c, int lin, int col, int active, char* after)
+{
+ printf("action_cb(lin=%d, col=%d, active=%d, after=%s)\n", lin, col, active, after);
+ if (lin == 2 && col == 3 && active && after)
+ {
+ char str[100];
+ strcpy(str, after);
+ strcat(str, "xxx");
+ IupStoreAttribute(h,"VALUE", str);
+
+ IupSetAttribute(h,"CARET","1");
+
+ IupSetAttribute(h,"REDRAW","ALL");
+ }
+
+ return IUP_DEFAULT;
+}
+
+
+static Ihandle *create_mat(void)
+{
+ Ihandle *mat = IupMatrix(NULL);
+ static int mati = 1;
+ char name[30];
+
+ sprintf(name, "mat%d", mati);
+ mati++;
+
+ IupSetHandle(name, mat);
+
+ IupSetAttribute(mat,"NUMCOL","15");
+ IupSetAttribute(mat,"NUMLIN","18");
+
+ IupSetAttribute(mat,"NUMCOL_VISIBLE","5");
+ IupSetAttribute(mat,"NUMLIN_VISIBLE","8");
+
+// IupSetAttribute(mat,"EXPAND", "NO");
+// IupSetAttribute(mat,"SCROLLBAR", "NO");
+ IupSetAttribute(mat,"RESIZEMATRIX", "YES");
+
+ IupSetAttribute(mat,"MARKMODE", "CELL");
+// IupSetAttribute(mat,"MARKMODE", "LINCOL");
+ IupSetAttribute(mat,"MARKMULTIPLE", "YES");
+// IupSetAttribute(mat,"MARKAREA", "NOT_CONTINUOUS");
+ IupSetAttribute(mat, "MARKAREA", "CONTINUOUS");
+
+ IupSetAttribute(mat,"0:0","Inflation");
+ IupSetAttribute(mat,"1:0","Medicine ");
+ IupSetAttribute(mat,"2:0","Food");
+ IupSetAttribute(mat,"3:0","Energy");
+ IupSetAttribute(mat,"0:1","January 2000");
+ IupSetAttribute(mat,"0:2","February 2000");
+ IupSetAttribute(mat,"1:1","5.6");
+ IupSetAttribute(mat,"2:1","2.2");
+ IupSetAttribute(mat,"3:1","7.2");
+ IupSetAttribute(mat,"1:2","4.5");
+ IupSetAttribute(mat,"2:2","8.1");
+ IupSetAttribute(mat,"3:2","3.4 (RO)");
+
+// IupSetAttribute(mat,"BGCOLOR1:*","255 128 0");
+ IupSetAttribute(mat,"BGCOLOR2:1","255 128 0");
+ IupSetAttribute(mat,"FGCOLOR2:0","255 0 128");
+// IupSetAttribute(mat,"BGCOLOR0:*","255 0 128");
+ IupSetAttribute(mat,"FGCOLOR1:1","255 0 128");
+ IupSetAttribute(mat,"BGCOLOR3:*","255 128 0");
+ IupSetAttribute(mat,"BGCOLOR*:4","255 128 0");
+ //IupSetAttribute(mat,"FONT2:*", "Times New Roman:BOLD:8");
+ //IupSetAttribute(mat,"FONT*:2", "Courier::12");
+ IupSetAttribute(mat,"SORTSIGN1","UP");
+// IupSetAttribute(mat,"SORTSIGN2","DOWN");
+ IupSetAttribute(mat,"FRAMEVERTCOLOR2:2","255 255 255");
+
+// IupSetAttribute(mat,"MARKAREA","NOT_CONTINUOUS");
+// IupSetAttribute(mat,"MARKMULTIPLE","YES");
+
+ IupSetCallback(mat,"LEAVEITEM_CB",(Icallback)leave);
+ IupSetCallback(mat,"ENTERITEM_CB",(Icallback)enter);
+ IupSetCallback(mat,"DROPSELECT_CB",(Icallback)dropselect);
+ IupSetCallback(mat,"DROP_CB",(Icallback)drop);
+ IupSetCallback(mat,"DROPCHECK_CB",(Icallback)dropcheck);
+ IupSetCallback(mat,"EDITION_CB",(Icallback)edition);
+ IupSetCallback(mat,"CLICK_CB",(Icallback)click);
+ IupSetCallback(mat,"DRAW_CB",(Icallback)drawcb);
+ IupSetCallback(mat,"ACTION_CB",(Icallback)actioncb);
+
+// IupSetCallback(mat,"VALUE_CB",(Icallback)value);
+// IupSetAttribute(mat,"WIDTH0","24");
+// IupSetAttribute(mat,"HEIGHT0","8");
+
+// iupmaskMatSet(mat, IUPMASK_FLOAT, 0, 1, 2, 1) ;
+
+ return mat;
+}
+
+
+static int redraw(Ihandle *self)
+{
+ IupSetAttribute(IupGetHandle("mat1"),"REDRAW","ALL");
+ IupSetAttribute(IupGetHandle("mat2"),"REDRAW","ALL");
+ //IupSetAttribute(IupGetHandle("mat3"),"REDRAW","ALL");
+ //IupSetAttribute(IupGetHandle("mat4"),"REDRAW","ALL");
+ //IupSetAttribute(IupGetHandle("mat5"),"REDRAW","ALL");
+ //IupSetAttribute(IupGetHandle("mat6"),"REDRAW","ALL");
+
+ //Ihandle* mat = IupGetHandle("mat1");
+ //if (IupGetInt(mat, "VISIBLE"))
+ //{
+ // IupSetAttribute(mat,"VISIBLE","NO");
+ // IupStoreAttribute(mat, "OLD_SIZE", IupGetAttribute(mat, "RASTERSIZE"));
+ // IupSetAttribute(mat, "RASTERSIZE", "1x1");
+ //}
+ //else
+ //{
+ // IupStoreAttribute(mat, "RASTERSIZE", IupGetAttribute(mat, "OLD_SIZE"));
+ // IupSetAttribute(mat,"VISIBLE","YES");
+ //}
+
+ return IUP_DEFAULT;
+}
+
+static int removeline(Ihandle *self)
+{
+ IupSetAttribute(IupGetHandle("mat1"),"DELLIN","1");
+ return IUP_DEFAULT;
+}
+
+static int addline(Ihandle *self)
+{
+ IupSetAttribute(IupGetHandle("mat1"),"ADDLIN","0");
+ return IUP_DEFAULT;
+}
+
+static int removecol(Ihandle *self)
+{
+ IupSetAttribute(IupGetHandle("mat1"),"DELCOL","1");
+ return IUP_DEFAULT;
+}
+
+static int addcol(Ihandle *self)
+{
+ IupSetAttribute(IupGetHandle("mat1"),"ADDCOL","0");
+ return IUP_DEFAULT;
+}
+
+static int bt_cb(Ihandle *self)
+{
+ printf("DEFAULTENTER\n");
+ return IUP_DEFAULT;
+}
+
+static void createmenu(void)
+{
+ Ihandle* menu = IupMenu(
+ IupSubmenu("submenu", IupMenu(IupItem("item1","x"), IupItem("item2","x"), NULL)),
+ IupItem("remove line","removeline"),
+ IupItem("add line","addline"),
+ IupItem("remove col","removecol"),
+ IupItem("add col","addcol"),
+ IupItem("redraw","redraw"),
+ NULL);
+ IupSetHandle("mymenu", menu);
+}
+
+void MatrixCbsTest(void)
+{
+ Ihandle *dlg, *bt;
+
+ IupSetFunction("removeline", (Icallback)removeline);
+ IupSetFunction("addline", (Icallback)addline);
+ IupSetFunction("removecol", (Icallback)removecol);
+ IupSetFunction("addcol", (Icallback)addcol);
+ IupSetFunction("redraw", (Icallback)redraw);
+
+ createmenu();
+
+ bt = IupButton("Button", NULL);
+ IupSetCallback(bt, "ACTION", bt_cb);
+
+ dlg = IupDialog(
+// IupZbox(
+ IupTabs(
+ IupSetAttributes(
+ IupVbox((create_mat()), bt, IupText(""), IupLabel("Label Text"), IupVal("HORIZONTAL"),
+ NULL), "MARGIN=10x10, GAP=10, TABTITLE=Test1"),
+ IupSetAttributes(
+ IupVbox(IupFrame(create_mat()), IupText(""), IupLabel("Label Text"), IupVal("HORIZONTAL"),
+// NULL), "BGCOLOR=\"0 255 255\", MARGIN=10x10, GAP=10, TABTITLE=Test2,FONT=HELVETICA_ITALIC_14"),
+// NULL), "FONT=HELVETICA_NORMAL_12, BGCOLOR=\"0 255 255\", MARGIN=10x10, GAP=10, TABTITLE=Test2"),
+ NULL), "BGCOLOR=\"0 255 255\", MARGIN=10x10, GAP=10, TABTITLE=Test2"),
+ NULL));
+ IupSetAttribute(dlg,"TITLE", "IupMatrix");
+ IupSetAttribute(dlg,"MENU", "mymenu");
+ IupSetAttributeHandle(dlg,"DEFAULTENTER", bt);
+// IupSetAttribute(dlg,"BGCOLOR", "255 0 255");
+
+ //IupSetAttribute(dlg,"COMPOSITED", "YES");
+ //IupSetAttribute(dlg,"OPACITY", "192");
+
+ IupShowXY(dlg,IUP_CENTER,IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+ IupControlsOpen();
+
+ MatrixCbsTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/mdi.c b/iup/test/mdi.c
new file mode 100755
index 0000000..e483ba8
--- /dev/null
+++ b/iup/test/mdi.c
@@ -0,0 +1,150 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <iup.h>
+
+
+static int mdi_tilehoriz(Ihandle* ih)
+{
+ IupSetAttribute(IupGetDialog(ih), "MDIARRANGE", "TILEHORIZONTAL");
+ return IUP_DEFAULT;
+}
+
+static int mdi_tilevert(Ihandle* ih)
+{
+ IupSetAttribute(IupGetDialog(ih), "MDIARRANGE", "TILEVERTICAL");
+ return IUP_DEFAULT;
+}
+
+static int mdi_cascade(Ihandle* ih)
+{
+ IupSetAttribute(IupGetDialog(ih), "MDIARRANGE", "CASCADE");
+ return IUP_DEFAULT;
+}
+
+static int mdi_icon(Ihandle* ih)
+{
+ IupSetAttribute(IupGetDialog(ih), "MDIARRANGE", "ICON");
+ return IUP_DEFAULT;
+}
+
+static int mdi_next(Ihandle* ih)
+{
+ IupSetAttribute(IupGetDialog(ih), "MDIACTIVATE", "NEXT");
+ return IUP_DEFAULT;
+}
+
+static int mdi_previous(Ihandle* ih)
+{
+ IupSetAttribute(IupGetDialog(ih), "MDIACTIVATE", "PREVIOUS");
+ return IUP_DEFAULT;
+}
+
+static int mdi_closeall(Ihandle* ih)
+{
+ IupSetAttribute(IupGetDialog(ih), "MDICLOSEALL", NULL);
+ return IUP_DEFAULT;
+}
+
+static int mdi_activate(Ihandle* ih)
+{
+ printf("mdi_activate(%s)\n", IupGetName(ih));
+ return IUP_DEFAULT;
+}
+
+static int mdi_new(Ihandle* ih)
+{
+ static int id = 0;
+ Ihandle *box, *cnv, *dlg;
+
+ cnv = IupCanvas(NULL);
+ IupSetAttribute(cnv,"BGCOLOR","128 255 0");
+
+ box = IupVbox(cnv, NULL);
+ IupSetAttribute(box,"MARGIN","5x5");
+
+ dlg = IupDialog(box);
+ IupSetfAttribute(dlg,"TITLE","MDI Child (%d)", id); id++;
+ IupSetAttribute(dlg,"MDICHILD","YES");
+ IupSetAttribute(dlg,"PARENTDIALOG","mdiFrame");
+ IupSetCallback(dlg,"MDIACTIVATE_CB",(Icallback)mdi_activate);
+ IupSetAttribute(dlg,"RASTERSIZE","300x300");
+// IupSetAttribute(dlg, "PLACEMENT", "MAXIMIZED");
+
+ IupShow(dlg);
+
+ return IUP_DEFAULT;
+}
+
+static void createMenu(void)
+{
+ Ihandle* winmenu;
+ Ihandle* mnu = IupMenu(
+ IupSubmenu("MDI",IupMenu(
+ IupItem("New", "mdi_new"),
+ NULL)),
+ IupSubmenu("Window", winmenu = IupMenu(
+ IupItem("Tile Horizontal", "mdi_tilehoriz"),
+ IupItem("Tile Vertical", "mdi_tilevert"),
+ IupItem("Cascade", "mdi_cascade"),
+ IupItem("Icon Arrange", "mdi_icon"),
+ IupItem("Close All", "mdi_closeall"),
+ IupSeparator(),
+ IupItem("Next", "mdi_next"),
+ IupItem("Previous", "mdi_previous"),
+ NULL)),
+ NULL);
+ IupSetHandle("mnu",mnu);
+ IupSetHandle("mdiMenu",winmenu);
+
+ IupSetFunction("mdi_new", (Icallback)mdi_new);
+ IupSetFunction("mdi_tilehoriz", (Icallback)mdi_tilehoriz);
+ IupSetFunction("mdi_tilevert", (Icallback)mdi_tilevert);
+ IupSetFunction("mdi_cascade", (Icallback)mdi_cascade);
+ IupSetFunction("mdi_icon", (Icallback)mdi_icon);
+ IupSetFunction("mdi_next", (Icallback)mdi_next);
+ IupSetFunction("mdi_previous", (Icallback)mdi_previous);
+ IupSetFunction("mdi_closeall", (Icallback)mdi_closeall);
+}
+
+static Ihandle* createFrame(void)
+{
+ Ihandle *dlg, *cnv;
+ cnv = IupCanvas( NULL);
+ IupSetAttribute(cnv,"MDICLIENT","YES");
+ IupSetAttribute(cnv,"MDIMENU","mdiMenu");
+
+ dlg = IupDialog(cnv);
+ IupSetAttribute(dlg,"TITLE","MDI Frame");
+ IupSetAttribute(dlg,"MDIFRAME","YES");
+ IupSetAttribute(dlg,"RASTERSIZE","800x600");
+ IupSetAttribute(dlg,"MENU","mnu");
+ IupSetHandle("mdiFrame", dlg);
+
+ return dlg;
+}
+
+void MdiTest(void)
+{
+ Ihandle* dlg;
+
+ createMenu();
+
+ dlg = createFrame();
+// IupSetAttribute(dlg, "PLACEMENT", "MAXIMIZED");
+ IupShow(dlg);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ MdiTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/menu.c b/iup/test/menu.c
new file mode 100755
index 0000000..6f20b9e
--- /dev/null
+++ b/iup/test/menu.c
@@ -0,0 +1,396 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <iup.h>
+
+static Ihandle* load_image_Tecgraf(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 95, 108, 1, 90, 100, 117, 99, 123, 138, 166, 126, 137, 152, 181, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 105, 123, 147, 122, 137, 165, 255, 136, 152, 183, 255, 132, 149, 179, 250, 133, 149, 178, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 100, 115, 43, 111, 125, 150, 253, 140, 158, 190, 255, 135, 151, 182, 255, 132, 149, 179, 255, 131, 147, 177, 217, 153, 164, 188, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 113, 134, 148, 134, 151, 182, 255, 137, 154, 185, 255, 115, 129, 154, 252, 114, 128, 155, 255, 130, 146, 175, 255, 132, 147, 175, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 159, 162, 3, 108, 121, 145, 230, 144, 162, 195, 255, 137, 154, 185, 197, 74, 79, 86, 45, 41, 46, 55, 246, 120, 134, 162, 255, 129, 145, 174, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 101, 113, 48, 124, 139, 167, 255, 144, 161, 194, 255, 138, 155, 186, 67, 0, 0, 0, 0, 49, 54, 62, 150, 87, 98, 118, 255, 128, 144, 173, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 113, 132, 105, 137, 154, 185, 255, 139, 156, 188, 231, 143, 159, 187, 3, 0, 0, 0, 0, 64, 68, 76, 61, 70, 79, 95, 255, 127, 143, 172, 254, 134, 149, 175, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 121, 142, 153, 141, 159, 191, 255, 139, 156, 188, 164, 0, 0, 0, 0, 0, 0, 0, 0, 79, 82, 87, 3, 69, 77, 92, 241, 122, 137, 165, 255, 127, 142, 170, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 122, 146, 191, 145, 163, 196, 255, 139, 156, 188, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 86, 101, 190, 115, 129, 156, 255, 126, 141, 170, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 125, 149, 227, 150, 168, 201, 255, 141, 157, 188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 91, 107, 144, 113, 127, 153, 255, 125, 140, 169, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 165, 167, 2, 112, 125, 150, 252, 155, 173, 203, 255, 143, 159, 189, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 94, 110, 109, 114, 128, 155, 255, 125, 140, 168, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 167, 181, 1, 120, 130, 149, 33, 48, 53, 59, 69, 43, 46, 52, 100, 50, 54, 59, 137, 116, 130, 156, 255, 155, 171, 201, 255, 105, 118, 142, 155, 104, 117, 141, 151, 105, 118, 141, 151, 105, 118, 142, 151, 101, 113, 136, 185, 111, 124, 150, 255, 116, 130, 156, 220, 112, 125, 148, 95, 115, 127, 150, 67, 123, 134, 156, 33, 168, 176, 190, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 129, 147, 5, 109, 121, 142, 71, 106, 118, 140, 140, 105, 117, 140, 197, 107, 120, 144, 242, 120, 135, 162, 255, 123, 137, 163, 255, 44, 49, 58, 255, 28, 32, 39, 255, 125, 139, 164, 255, 150, 167, 197, 255, 138, 155, 186, 255, 131, 148, 178, 255, 125, 141, 170, 255, 119, 134, 162, 255, 114, 128, 154, 255, 108, 122, 147, 255, 104, 117, 141, 255, 102, 115, 138, 255, 103, 116, 139, 255, 107, 120, 145, 255, 111, 124, 149, 245, 113, 126, 151, 200, 113, 127, 152, 140, 116, 129, 154, 71, 122, 135, 158, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 118, 128, 145, 14, 106, 118, 140, 130, 104, 116, 139, 234, 105, 118, 142, 255, 128, 144, 173, 255, 147, 165, 199, 255, 157, 177, 213, 255, 150, 168, 202, 255, 140, 156, 187, 229, 41, 45, 52, 196, 39, 43, 51, 183, 130, 143, 168, 255, 144, 161, 192, 233, 109, 122, 145, 109, 105, 116, 138, 109, 99, 110, 130, 109, 92, 103, 123, 109, 91, 100, 117, 145, 97, 109, 131, 255, 95, 106, 128, 248, 74, 83, 97, 193, 64, 72, 85, 227, 56, 63, 75, 255, 55, 62, 75, 255, 65, 73, 88, 255, 90, 101, 121, 255, 111, 125, 150, 255, 114, 128, 154, 236, 116, 129, 155, 130, 127, 140, 165, 16, 0, 0, 0, 0,
+ 95, 101, 113, 22, 103, 115, 137, 220, 103, 116, 140, 255, 110, 123, 148, 255, 146, 165, 198, 255, 147, 165, 197, 232, 142, 158, 188, 147, 131, 144, 169, 78, 115, 123, 139, 20, 0, 0, 0, 0, 0, 0, 0, 0, 91, 97, 108, 68, 128, 142, 167, 255, 144, 162, 193, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 100, 107, 31, 120, 135, 163, 255, 133, 150, 180, 231, 0, 0, 0, 0, 0, 0, 0, 0, 86, 89, 93, 20, 50, 54, 61, 73, 37, 40, 46, 141, 33, 36, 42, 230, 46, 52, 63, 255, 107, 120, 144, 255, 116, 130, 157, 255, 118, 133, 159, 223, 132, 147, 174, 24,
+ 76, 83, 95, 114, 104, 117, 140, 255, 105, 117, 141, 255, 118, 133, 160, 253, 139, 155, 184, 116, 134, 143, 161, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 100, 110, 74, 122, 137, 163, 255, 143, 160, 191, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 114, 120, 31, 123, 138, 166, 255, 136, 153, 183, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 93, 97, 5, 42, 45, 51, 111, 86, 97, 117, 253, 118, 133, 160, 255, 119, 133, 161, 255, 133, 149, 180, 116,
+ 46, 50, 56, 109, 67, 76, 91, 255, 105, 118, 142, 255, 107, 120, 145, 254, 112, 125, 149, 131, 127, 139, 161, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 98, 109, 74, 116, 130, 156, 255, 142, 159, 190, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 122, 31, 128, 143, 172, 255, 141, 157, 185, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 137, 163, 7, 122, 136, 162, 122, 120, 135, 162, 254, 121, 136, 164, 255, 136, 152, 184, 255, 126, 141, 168, 116,
+ 71, 74, 79, 17, 31, 35, 41, 206, 42, 47, 57, 255, 77, 87, 105, 255, 103, 116, 140, 255, 110, 124, 149, 239, 112, 125, 150, 157, 115, 128, 153, 89, 122, 134, 158, 30, 147, 158, 177, 2, 0, 0, 0, 0, 81, 87, 96, 65, 109, 123, 148, 255, 141, 158, 190, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 103, 112, 31, 135, 151, 180, 255, 141, 156, 183, 231, 0, 0, 0, 0, 153, 164, 183, 1, 134, 147, 171, 30, 124, 138, 165, 84, 123, 138, 165, 154, 122, 137, 164, 235, 127, 143, 172, 255, 140, 157, 189, 255, 144, 162, 195, 255, 129, 144, 172, 218, 126, 138, 161, 22,
+ 0, 0, 0, 0, 64, 68, 73, 7, 39, 43, 49, 118, 32, 36, 42, 225, 30, 35, 42, 255, 50, 57, 68, 255, 72, 81, 97, 255, 91, 102, 123, 255, 105, 118, 142, 255, 113, 127, 152, 240, 115, 129, 155, 204, 111, 124, 149, 196, 111, 125, 150, 255, 126, 141, 170, 234, 119, 133, 159, 120, 120, 134, 160, 116, 121, 135, 161, 117, 121, 135, 162, 119, 116, 130, 155, 152, 127, 142, 170, 255, 125, 140, 168, 248, 123, 138, 166, 199, 130, 145, 173, 235, 140, 155, 183, 255, 143, 160, 190, 255, 143, 161, 193, 255, 147, 165, 199, 255, 145, 164, 197, 255, 132, 148, 177, 230, 127, 140, 166, 126, 124, 134, 151, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 141, 144, 3, 55, 58, 63, 58, 37, 40, 46, 126, 34, 38, 44, 184, 34, 38, 44, 235, 35, 39, 47, 254, 49, 55, 66, 255, 64, 72, 87, 255, 77, 87, 104, 255, 88, 98, 118, 255, 96, 108, 130, 255, 103, 116, 139, 255, 108, 122, 147, 255, 113, 127, 153, 255, 118, 133, 160, 255, 124, 140, 168, 255, 133, 148, 176, 255, 141, 156, 183, 255, 146, 161, 187, 255, 144, 159, 186, 255, 131, 146, 174, 254, 127, 141, 168, 237, 126, 141, 168, 188, 123, 137, 162, 131, 112, 123, 143, 61, 128, 132, 140, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 94, 98, 19, 64, 68, 73, 56, 53, 57, 65, 82, 62, 67, 76, 116, 66, 74, 89, 255, 95, 107, 129, 255, 80, 88, 103, 155, 81, 90, 105, 151, 86, 95, 112, 151, 95, 104, 122, 151, 98, 109, 128, 180, 124, 139, 166, 255, 109, 122, 146, 218, 100, 110, 128, 84, 96, 104, 118, 56, 105, 109, 117, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 2, 74, 83, 98, 252, 131, 147, 178, 255, 140, 155, 184, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 134, 157, 114, 151, 169, 203, 255, 123, 138, 165, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 76, 90, 224, 122, 137, 165, 255, 136, 152, 182, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 139, 165, 147, 146, 164, 198, 255, 122, 137, 165, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 69, 81, 191, 110, 124, 149, 255, 134, 151, 181, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 170, 193, 142, 160, 192, 255, 122, 137, 164, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 63, 74, 150, 94, 105, 127, 255, 133, 149, 179, 166, 0, 0, 0, 0, 0, 0, 0, 0, 115, 119, 128, 5, 130, 145, 174, 242, 137, 154, 186, 255, 125, 139, 166, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 58, 66, 102, 72, 81, 97, 255, 132, 148, 178, 236, 148, 161, 187, 5, 0, 0, 0, 0, 110, 121, 140, 64, 140, 157, 189, 255, 127, 142, 171, 254, 131, 144, 169, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 65, 71, 43, 47, 52, 63, 255, 127, 143, 172, 255, 132, 148, 177, 75, 0, 0, 0, 0, 121, 134, 158, 160, 139, 156, 188, 255, 123, 138, 165, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 1, 36, 39, 46, 227, 106, 119, 143, 255, 130, 145, 175, 203, 114, 125, 147, 51, 123, 138, 166, 247, 131, 147, 177, 255, 123, 138, 165, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 41, 47, 143, 68, 77, 93, 255, 128, 144, 174, 255, 126, 141, 170, 252, 129, 145, 174, 255, 123, 138, 166, 255, 127, 141, 167, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 68, 73, 40, 34, 38, 46, 250, 117, 131, 158, 255, 126, 142, 171, 255, 124, 140, 168, 255, 125, 139, 166, 214, 140, 152, 172, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 44, 50, 134, 58, 66, 79, 255, 123, 138, 166, 255, 123, 138, 166, 250, 127, 140, 165, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 1, 46, 50, 55, 83, 82, 89, 102, 123, 106, 116, 136, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(32, 32, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_LogoTecgraf(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 120, 143, 125, 132, 148, 178, 173, 133, 149, 178, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 110, 130, 48, 130, 147, 177, 254, 124, 139, 167, 254, 131, 147, 176, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 128, 153, 134, 142, 159, 191, 194, 47, 52, 61, 110, 114, 128, 154, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 172, 192, 140, 156, 188, 99, 65, 69, 76, 16, 97, 109, 131, 251, 129, 144, 172, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 147, 175, 232, 140, 157, 188, 43, 0, 0, 0, 0, 100, 112, 134, 211, 126, 141, 169, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 78, 88, 26, 48, 52, 57, 60, 135, 150, 178, 254, 108, 121, 145, 83, 105, 118, 142, 76, 106, 119, 143, 201, 118, 133, 159, 122, 117, 129, 152, 25, 168, 176, 190, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 118, 128, 145, 3, 104, 117, 140, 92, 114, 127, 152, 180, 131, 147, 177, 237, 133, 149, 178, 249, 38, 42, 50, 222, 137, 152, 180, 249, 126, 142, 170, 182, 114, 128, 154, 182, 104, 117, 140, 227, 95, 107, 128, 238, 83, 93, 112, 248, 84, 95, 113, 239, 104, 117, 141, 180, 115, 129, 155, 93, 127, 140, 165, 4,
+ 98, 109, 130, 153, 109, 123, 147, 254, 145, 163, 195, 153, 138, 154, 182, 56, 115, 123, 138, 5, 92, 99, 109, 35, 134, 149, 177, 230, 0, 0, 0, 0, 0, 0, 0, 0, 120, 133, 159, 143, 135, 151, 181, 115, 86, 89, 93, 5, 41, 45, 51, 54, 40, 45, 53, 150, 107, 120, 144, 254, 122, 137, 164, 154,
+ 51, 57, 66, 147, 83, 93, 112, 255, 108, 121, 145, 159, 113, 126, 151, 62, 123, 136, 159, 8, 87, 93, 103, 35, 125, 141, 169, 230, 0, 0, 0, 0, 0, 0, 0, 0, 129, 143, 169, 143, 140, 156, 184, 115, 134, 147, 172, 8, 124, 138, 165, 60, 124, 139, 167, 155, 131, 147, 177, 255, 131, 147, 176, 153,
+ 64, 68, 73, 2, 36, 39, 45, 86, 41, 46, 54, 173, 60, 67, 80, 232, 75, 84, 101, 251, 89, 100, 120, 228, 105, 118, 142, 250, 110, 123, 148, 187, 118, 132, 158, 187, 126, 141, 169, 229, 134, 149, 177, 239, 136, 152, 179, 250, 136, 152, 181, 234, 139, 156, 186, 175, 130, 145, 173, 90, 124, 134, 151, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 74, 79, 19, 60, 64, 73, 50, 92, 103, 124, 254, 86, 95, 111, 84, 90, 100, 117, 76, 126, 141, 168, 201, 113, 126, 150, 119, 99, 105, 117, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 105, 125, 231, 135, 151, 181, 46, 0, 0, 0, 0, 137, 154, 184, 212, 123, 137, 164, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 83, 98, 191, 133, 149, 179, 102, 111, 121, 139, 17, 134, 150, 180, 252, 126, 140, 166, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 48, 57, 132, 121, 136, 164, 197, 121, 135, 161, 115, 130, 146, 175, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 47, 52, 46, 87, 98, 118, 254, 126, 142, 170, 254, 124, 139, 166, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 57, 67, 118, 115, 128, 152, 170, 127, 140, 164, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_Test(void)
+{
+ unsigned char imgdata[] =
+ {
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,1,1,1,1,1,1,2,2,2,2,2,2,0,5,
+ 5,0,1,1,1,1,1,1,2,2,2,2,2,2,0,5,
+ 5,0,1,1,1,1,1,1,2,2,2,2,2,2,0,5,
+ 5,0,1,1,1,1,1,1,2,2,2,2,2,2,0,5,
+ 5,0,1,1,1,1,1,1,2,2,2,2,2,2,0,5,
+ 5,0,1,1,1,1,1,1,2,2,2,2,2,2,0,5,
+ 5,0,3,3,3,3,3,3,4,4,4,4,4,4,0,5,
+ 5,0,3,3,3,3,3,3,4,4,4,4,4,4,0,5,
+ 5,0,3,3,3,3,3,3,4,4,4,4,4,4,0,5,
+ 5,0,3,3,3,3,3,3,4,4,4,4,4,4,0,5,
+ 5,0,3,3,3,3,3,3,4,4,4,4,4,4,0,5,
+ 5,0,3,3,3,3,3,3,4,4,4,4,4,4,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ };
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+ IupSetAttribute(image, "0", "BGCOLOR");
+ IupSetAttribute(image, "1", "255 0 0");
+ IupSetAttribute(image, "2", "0 255 0");
+ IupSetAttribute(image, "3", "0 0 255");
+ IupSetAttribute(image, "4", "255 255 255");
+ IupSetAttribute(image, "5", "0 0 0");
+ return image;
+}
+
+static Ihandle* load_image_Test_pressed(void)
+{
+ static unsigned char imgdata[] =
+ {
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,5,1,1,1,1,1,2,2,2,2,2,5,0,5,
+ 5,0,1,5,1,1,1,1,2,2,2,2,5,2,0,5,
+ 5,0,1,1,5,1,1,1,2,2,2,5,2,2,0,5,
+ 5,0,1,1,1,5,1,1,2,2,5,2,2,2,0,5,
+ 5,0,1,1,1,1,5,1,2,5,2,2,2,2,0,5,
+ 5,0,1,1,1,1,1,5,5,2,2,2,2,2,0,5,
+ 5,0,3,3,3,3,3,5,5,4,4,4,4,4,0,5,
+ 5,0,3,3,3,3,5,3,4,5,4,4,4,4,0,5,
+ 5,0,3,3,3,5,3,3,4,4,5,4,4,4,0,5,
+ 5,0,3,3,5,3,3,3,4,4,4,5,4,4,0,5,
+ 5,0,3,5,3,3,3,3,4,4,4,4,5,4,0,5,
+ 5,0,5,3,3,3,3,3,4,4,4,4,4,5,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ };
+
+ Ihandle* image = IupImage(16, 16, imgdata);
+ IupSetAttribute(image, "0", "BGCOLOR");
+ IupSetAttribute(image, "1", "255 0 0");
+ IupSetAttribute(image, "2", "0 255 0");
+ IupSetAttribute(image, "3", "0 0 255");
+ IupSetAttribute(image, "4", "255 255 255");
+ IupSetAttribute(image, "5", "0 0 0");
+ return image;
+}
+
+static int item_add_cb(Ihandle* ih)
+{
+ Ihandle* item = IupItem("New Appended Item", "item_cb");
+ printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE"));
+ IupAppend(IupGetParent(ih), item); /* after the last item */
+ IupMap(item);
+ return IUP_DEFAULT;
+}
+
+static int item_insert_cb(Ihandle* ih)
+{
+ Ihandle* ref_item = IupGetChild(IupGetParent(ih), 4); /* before the first appended item, just after the separator */
+ printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE"));
+ if (ref_item)
+ {
+ Ihandle* item = IupItem("New Inserted Item", "item_cb");
+ IupInsert(IupGetParent(ih), ref_item, item);
+ IupMap(item);
+ }
+ return IUP_DEFAULT;
+}
+
+static int item_remove_cb(Ihandle* ih)
+{
+ Ihandle* item = IupGetNextChild(IupGetParent(ih), IupGetNextChild(IupGetParent(ih), ih)); /* the next after the separator */
+ printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE"));
+ if (item)
+ IupDestroy(item);
+ return IUP_DEFAULT;
+}
+
+static int item_image_cb(Ihandle* ih)
+{
+ printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE"));
+ ih = IupGetNextChild(IupGetParent(ih), ih);
+ if (IupGetAttributeHandle(ih, "IMAGE"))
+ IupSetAttribute(ih, "IMAGE", NULL);
+ else
+ IupSetAttribute(ih, "IMAGE", "image_test");
+ return IUP_DEFAULT;
+}
+
+static int item_active_cb(Ihandle* ih)
+{
+ printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE"));
+ ih = IupGetNextChild(IupGetParent(ih), ih);
+ if (IupGetInt(ih, "ACTIVE"))
+ IupSetAttribute(ih, "ACTIVE", "NO");
+ else
+ IupSetAttribute(ih, "ACTIVE", "YES");
+ return IUP_DEFAULT;
+}
+
+static int item_rename_cb(Ihandle* ih)
+{
+ printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE"));
+ ih = IupGetNextChild(IupGetParent(ih), ih);
+ IupSetAttribute(ih, "TITLE", "New Title");
+ return IUP_DEFAULT;
+}
+
+static int item_toggle_cb(Ihandle* ih)
+{
+ printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE"));
+ if (IupGetInt(ih, "VALUE"))
+ IupSetAttribute(ih, "VALUE", "OFF");
+ else
+ IupSetAttribute(ih, "VALUE", "ON");
+
+ return IUP_DEFAULT;
+}
+
+static int item_cb (Ihandle* ih)
+{
+ printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE"));
+ return IUP_DEFAULT;
+}
+
+static int item_close_cb (Ihandle* ih)
+{
+ printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE"));
+ return IUP_CLOSE;
+}
+
+static int item_help_cb (Ihandle* ih)
+{
+ printf("HELP_CB(%s)\n", IupGetAttribute(ih, "TITLE"));
+ return IUP_DEFAULT;
+}
+
+static int item_destroy_cb (Ihandle* ih)
+{
+ printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE"));
+ IupDestroy(IupGetDialog(ih));
+ return IUP_DEFAULT;
+}
+
+static int highlight_cb(Ihandle* ih)
+{
+ printf("HIGHLIGHT_CB(%s)\n", IupGetAttribute(ih, "TITLE"));
+ return IUP_DEFAULT;
+}
+
+static int open_cb(Ihandle* ih)
+{
+ printf("OPEN_CB(Menu of %s)\n", IupGetAttribute(IupGetParent(ih), "TITLE"));
+ return IUP_DEFAULT;
+}
+
+static int menuclose_cb(Ihandle* ih)
+{
+ printf("MENUCLOSE_CB(Menu of %s)\n", IupGetAttribute(IupGetParent(ih), "TITLE"));
+ return IUP_DEFAULT;
+}
+
+static void show_popup(void)
+{
+ Ihandle* menu_file = IupMenu(
+ IupSetAttributes(IupItem("Item with Image", "item_cb"), "IMAGE=image_tec"),
+ IupSetCallbacks(IupSetAttributes(IupItem("Toggle using VALUE", NULL), "VALUE=ON, KEY=K_V"), "ACTION", item_toggle_cb, "HIGHLIGHT_CB", highlight_cb, NULL),
+ IupSetAttributes(IupItem("Auto &Toggle", "item_cb"), "AUTOTOGGLE=YES, VALUE=OFF, IMAGE=image_test, IMPRESS=image_test_pressed"),
+ IupSeparator(),
+ IupSetCallbacks(IupItem("E&xit (Close)", NULL), "ACTION", item_close_cb, NULL),
+ NULL);
+ Ihandle* menu = IupMenu(
+ IupSetCallbacks(IupSetAttributes(IupSubmenu("Submenu", menu_file), "KEY=K_S, IMAGE=image_tec"), "HIGHLIGHT_CB", highlight_cb, NULL),
+ IupSetCallbacks(IupItem("Item", "item_cb"), "HIGHLIGHT_CB", highlight_cb, NULL),
+ IupSetCallbacks(IupSetAttributes(IupItem("Item", "item_cb"), "VALUE=ON"), "HIGHLIGHT_CB", highlight_cb, NULL),
+ IupSetCallbacks(IupSetAttributes(IupItem("Item", "item_cb"), "KEY=K_I, IMAGE=image_tec"), "HIGHLIGHT_CB", highlight_cb, NULL),
+ NULL);
+ IupSetCallbacks(menu_file, "OPEN_CB", open_cb, "MENUCLOSE_CB", menuclose_cb, NULL);
+ IupSetCallbacks(menu, "OPEN_CB", open_cb, "MENUCLOSE_CB", menuclose_cb, NULL);
+ IupPopup(menu, IUP_MOUSEPOS, IUP_MOUSEPOS);
+ IupDestroy(menu);
+}
+
+static int k_m(Ihandle *ih)
+{
+ (void)ih;
+ show_popup();
+ return IUP_DEFAULT;
+}
+
+static int button(Ihandle *ih,int but,int pressed,int x,int y,char* status)
+{
+ (void)x;
+ (void)y;
+ (void)status;
+ (void)ih;
+
+ if (but==IUP_BUTTON3 && pressed)
+ show_popup();
+
+ return IUP_DEFAULT;
+}
+
+static int killfocus(Ihandle *ih)
+{
+ (void)ih;
+ printf("KILLFOCUS(canvas)\n");
+ return IUP_DEFAULT;
+}
+
+static int getfocus(Ihandle *ih)
+{
+ (void)ih;
+ printf("GETFOCUS(canvas)\n");
+ return IUP_DEFAULT;
+}
+
+void MenuTest(void)
+{
+ Ihandle *dlg, *canvas, *menu,
+ *menu_file, *menu_edit, *menu_help,
+ *menu_create;
+
+ IupSetHandle("image_tec", load_image_LogoTecgraf());
+ IupSetHandle("image_test", load_image_Test());
+ IupSetHandle("image_test_pressed", load_image_Test_pressed());
+
+ /* Creates menu create */
+ menu_create = IupMenu(
+ IupItem("Line", "item_cb"),
+ IupItem("Circle", "item_cb"),
+ IupSetCallbacks(IupSubmenu("Triangle", IupSetAttributes(IupMenu(
+ IupSetCallbacks(IupSetAttributes(IupItem("Equilateral", "item_cb"), "VALUE=ON"), "HIGHLIGHT_CB", highlight_cb, NULL),
+ IupSetCallbacks(IupItem("Isoceles", "item_cb"), "HIGHLIGHT_CB", highlight_cb, NULL),
+ IupSetCallbacks(IupItem("Scalenus", "item_cb"), "HIGHLIGHT_CB", highlight_cb, NULL),
+ NULL), "RADIO=YES")), "HIGHLIGHT_CB", highlight_cb, NULL),
+ NULL);
+ IupSetCallbacks(menu_create, "OPEN_CB", open_cb, "MENUCLOSE_CB", menuclose_cb, NULL);
+// IupSetAttribute(menu_create, "BGCOLOR", "92 92 255");
+
+ /* Creates three menus that will be inside submenus */
+ menu_file = IupMenu(
+ IupSetAttributes(IupItem("Item with Image \tCtrl+M", "item_cb"), "IMAGE=image_tec"),
+ IupSetCallbacks(IupSetAttributes(IupItem("Toggle using &VALUE", NULL), "VALUE=ON, KEY=KcV"), "ACTION", item_toggle_cb, NULL),
+ IupSetAttributes(IupItem("Auto &Toggle Text", "item_cb"), "AUTOTOGGLE=YES, VALUE=OFF"),
+ IupSetAttributes(IupItem("Auto &Toggle Image", "item_cb"), "AUTOTOGGLE=YES, VALUE=OFF, IMAGE=image_test, IMPRESS=image_test_pressed"),
+ IupItem("Big Image", "item_cb"),
+ IupSeparator(),
+ IupSetCallbacks(IupItem("Exit (Destroy)", NULL), "ACTION", item_destroy_cb, NULL),
+ IupSetCallbacks(IupItem("E&xit (Close)", NULL), "ACTION", item_close_cb, NULL),
+ NULL);
+ menu_edit = IupMenu(
+ IupSetCallbacks(IupItem("Active Next", NULL), "ACTION", item_active_cb, NULL),
+ IupSetCallbacks(IupItem("Rename Next", NULL), "ACTION", item_rename_cb, NULL),
+ IupSetCallbacks(IupItem("Set Next Image", NULL), "ACTION", item_image_cb, NULL),
+ IupSetAttributes(IupItem("Item w/ Acc\tCtrl+A", "item_cb"), "IMAGE=dummy"),
+ IupSeparator(),
+ IupSetAttributes(IupSubmenu("Create", menu_create), "IMAGE=image_tec"),
+ NULL);
+ menu_help = IupMenu(
+ IupSetCallbacks(IupItem("Append", NULL), "ACTION", item_add_cb, "HELP_CB", item_help_cb, NULL),
+ IupSetCallbacks(IupItem("Insert", NULL), "ACTION", item_insert_cb, "HELP_CB", item_help_cb, NULL),
+ IupSetCallbacks(IupItem("Remove", NULL), "ACTION", item_remove_cb, "HELP_CB", item_help_cb, NULL),
+ IupSeparator(),
+ NULL);
+
+ IupSetAttributeHandle(IupGetChild(menu_file, 4), "TITLEIMAGE", load_image_Tecgraf());
+ IupSetCallbacks(menu_edit, "OPEN_CB", open_cb, "MENUCLOSE_CB", menuclose_cb, NULL);
+
+ /* Creates main menu with file menu */
+ menu = IupMenu(
+ IupSetCallbacks(IupSetAttributes(IupSubmenu("Submenu", menu_file), "KEY=K_S, IMAGE=image_tec"), "HIGHLIGHT_CB", highlight_cb, NULL),
+ IupSetCallbacks(IupSubmenu("&Edit", menu_edit), "HIGHLIGHT_CB", highlight_cb, NULL),
+ IupSubmenu("Help", menu_help),
+ IupSetCallbacks(IupSetAttributes(IupItem("Item", "item_cb"), "KEY=K_I, IMAGE=image_tec"), "HIGHLIGHT_CB", highlight_cb, NULL),
+ NULL);
+
+ /* Registers callbacks */
+ IupSetFunction("item_cb", item_cb);
+ //IupSetAttribute(menu, "BGCOLOR", "92 92 255");
+ //IupSetAttribute(menu, "BGCOLOR", "173 177 194"); // Motif BGCOLOR for documentation
+
+ canvas = IupCanvas(NULL);
+ IupSetCallback(canvas, "BUTTON_CB", (Icallback)button);
+ IupSetCallback(canvas, "K_m", (Icallback)k_m);
+// IupSetCallback(canvas, "KILLFOCUS_CB", killfocus);
+// IupSetCallback(canvas, "GETFOCUS_CB", getfocus);
+
+ dlg = IupDialog(canvas);
+ IupSetAttributeHandle(dlg, "MENU", menu);
+ IupSetAttributes(dlg, "TITLE=\"IupMenu Test\", SIZE=QUARTERxQUARTER");
+
+ /* Shows dlg in the center of the screen */
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ MenuTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/ole.cpp b/iup/test/ole.cpp
new file mode 100755
index 0000000..c3da5fc
--- /dev/null
+++ b/iup/test/ole.cpp
@@ -0,0 +1,108 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <windows.h>
+#include <exdisp.h>
+
+#include <iup.h>
+#include <iupole.h>
+
+
+#ifndef BIG_TEST
+static Ihandle *IupOleCreateBrowser(void)
+{
+ Ihandle *browser=IupOleControl("Shell.Explorer.2");
+ IupSetAttribute(browser,"DESIGNMODE", "NO");
+ return browser;
+}
+
+static WCHAR* Char2Wide(const char* str)
+{
+ if (str)
+ {
+ int n = strlen(str)+1;
+ WCHAR* wstr = (WCHAR*)malloc(n * sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, str, -1, wstr, n);
+ return wstr;
+ }
+ return NULL;
+}
+
+static IWebBrowser2 *IupOleGetWebBrowserInterface(Ihandle *browser)
+{
+ IWebBrowser2 *pweb = (IWebBrowser2*)IupGetAttribute(browser, "IUP_IWebBrowser2");
+ if (!pweb)
+ {
+ IUnknown *punk = (IUnknown*)IupGetAttribute(browser,"IUNKNOWN");
+ punk->QueryInterface(IID_IWebBrowser2, (void **) &pweb);
+ punk->Release();
+ IupSetAttribute(browser, "IUP_IWebBrowser2", (char*)pweb);
+ }
+ return pweb;
+}
+
+static void IupOleNavigate(Ihandle *browser,char *fname)
+{
+ IWebBrowser2 *pweb = IupOleGetWebBrowserInterface(browser);
+ WCHAR* url = Char2Wide(fname);
+ pweb->Navigate(url, NULL, NULL, NULL, NULL);
+ free(url);
+}
+
+static void IupOleClose(Ihandle* browser)
+{
+ IWebBrowser2 *pweb = IupOleGetWebBrowserInterface(browser);
+ pweb->Release();
+}
+
+static int load_cb(Ihandle* ih)
+{
+ Ihandle* txt = (Ihandle*)IupGetAttribute(ih, "MY_TEXT");
+ Ihandle* browser = (Ihandle*)IupGetAttribute(ih, "MY_BROWSER");
+ IupOleNavigate(browser, IupGetAttribute(txt, "VALUE"));
+ return IUP_DEFAULT;
+}
+
+static int close_cb(Ihandle* ih)
+{
+ Ihandle* browser = (Ihandle*)IupGetAttribute(ih, "MY_BROWSER");
+ IupOleClose(browser);
+ return IUP_DEFAULT;
+}
+
+void OleTest(void)
+{
+ Ihandle* txt, *bt;
+ Ihandle * browser = IupOleCreateBrowser();
+
+ // Creates a dlg containing the OLE control
+ Ihandle* dlg = IupDialog(IupVbox(IupHbox(txt = IupText(""), bt = IupButton("Load", NULL), NULL), browser, NULL));
+ IupSetAttribute(dlg, "MARGIN", "10x10");
+ IupSetAttribute(dlg, "GAP", "10");
+ IupSetAttribute(dlg, "TITLE", "IupOle");
+ IupSetAttribute(dlg, "MY_TEXT", (char*)txt);
+ IupSetAttribute(dlg, "MY_BROWSER", (char*)browser);
+ IupSetAttribute(txt, "EXPAND", "HORIZONTAL");
+// IupSetAttribute(txt, "VALUE", "d:/test.doc");
+ IupSetCallback(bt, "ACTION", (Icallback)load_cb);
+ IupSetCallback(dlg, "CLOSE_CB", (Icallback)close_cb);
+ IupSetAttributeHandle(dlg, "DEFAULTENTER", bt);
+
+ // Shows dlg
+ IupShow(dlg);
+}
+
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+ IupOleControlOpen();
+
+ OleTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/pplot.c b/iup/test/pplot.c
new file mode 100755
index 0000000..639aa34
--- /dev/null
+++ b/iup/test/pplot.c
@@ -0,0 +1,699 @@
+/*
+ * IupPPlot Test
+ * Description : Create all built-in plots.
+ * It is organised as two side-by-side panels:
+ * - left panel for current plot control
+ * - right panel containg tabbed plots
+ * Remark : depend on libs IUP, CD, IUP_PPLOT
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+
+#include "iup.h"
+#include "iupcontrols.h"
+#include "iup_pplot.h"
+
+#include <cd.h>
+#include <cdiup.h>
+#include <cdpdf.h>
+#include <cdgdiplus.h>
+
+
+#define MAXPLOT 6 /* room for examples */
+
+
+static Ihandle *plot[MAXPLOT] = {NULL}; /* PPlot controls */
+static Ihandle *dial1, *dial2, /* dials for zooming */
+ *tgg1, *tgg2, /* autoscale on|off toggles */
+ *tgg3, *tgg4, /* grid show|hide toggles */
+ *tgg5, /* legend show|hide toggle */
+ *tabs; /* tabbed control */
+
+static int delete_cb(Ihandle* ih, int index, int sample_index, float x, float y)
+{
+ printf("DELETE_CB(%d, %d, %g, %g)\n", index, sample_index, x, y);
+ return IUP_DEFAULT;
+}
+
+static int select_cb(Ihandle* ih, int index, int sample_index, float x, float y, int select)
+{
+ printf("SELECT_CB(%d, %d, %g, %g, %d)\n", index, sample_index, x, y, select);
+ return IUP_DEFAULT;
+}
+
+static int edit_cb(Ihandle* ih, int index, int sample_index, float x, float y, float *new_x, float *new_y)
+{
+ printf("EDIT_CB(%d, %d, %g, %g, %g, %g)\n", index, sample_index, x, y, *new_x, *new_y);
+ return IUP_DEFAULT;
+}
+
+static int postdraw_cb(Ihandle* ih, cdCanvas* cnv)
+{
+ int ix, iy;
+
+ IupPPlotTransform(ih, 0.003f, 0.02f, &ix, &iy);
+ cdCanvasFont(cnv, NULL, CD_BOLD, 10);
+ cdCanvasTextAlignment(cnv, CD_SOUTH);
+ cdCanvasText(cnv, ix, iy, "My Inline Legend");
+ printf("POSTDRAW_CB()\n");
+
+ return IUP_DEFAULT;
+}
+
+static int predraw_cb(Ihandle* ih, cdCanvas* cnv)
+{
+ printf("PREDRAW_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static void InitPlots(void)
+{
+ int theI;
+ float x, y, theFac;
+
+ /* PLOT 0 - MakeExamplePlot1 */
+ IupSetAttribute(plot[0], "TITLE", "AutoScale");
+ IupSetAttribute(plot[0], "MARGINTOP", "40");
+ IupSetAttribute(plot[0], "MARGINLEFT", "40");
+ IupSetAttribute(plot[0], "MARGINBOTTOM", "50");
+ IupSetAttribute(plot[0], "TITLEFONTSIZE", "16");
+ IupSetAttribute(plot[0], "LEGENDSHOW", "YES");
+ IupSetAttribute(plot[0], "AXS_XLABEL", "gnu (Foo)");
+ IupSetAttribute(plot[0], "AXS_YLABEL", "Space (m^3)");
+ IupSetAttribute(plot[0], "AXS_YFONTSIZE", "8");
+ IupSetAttribute(plot[0], "AXS_YTICKFONTSIZE", "8");
+ IupSetAttribute(plot[0], "AXS_XFONTSIZE", "10");
+ IupSetAttribute(plot[0], "AXS_YFONTSIZE", "10");
+ IupSetAttribute(plot[0], "AXS_XLABELCENTERED", "NO");
+ IupSetAttribute(plot[0], "AXS_YLABELCENTERED", "NO");
+
+// IupSetAttribute(plot[0], "USE_IMAGERGB", "YES");
+// IupSetAttribute(plot[0], "USE_GDI+", "YES");
+
+ theFac = (float)1.0/(100*100*100);
+ IupPPlotBegin(plot[0], 0);
+ for (theI=-100; theI<=100; theI++)
+ {
+ x = (float)(theI+50);
+ y = theFac*theI*theI*theI;
+ IupPPlotAdd(plot[0], x, y);
+ }
+ IupPPlotEnd(plot[0]);
+ IupSetAttribute(plot[0], "DS_LINEWIDTH", "3");
+ IupSetAttribute(plot[0], "DS_LEGEND", "Line");
+
+ theFac = (float)2.0/100;
+ IupPPlotBegin(plot[0], 0);
+ for (theI=-100; theI<=100; theI++)
+ {
+ x = (float)theI;
+ y = -theFac*theI;
+ IupPPlotAdd(plot[0], x, y);
+ }
+ IupPPlotEnd(plot[0]);
+ IupSetAttribute(plot[0], "DS_LEGEND", "Curve 1");
+
+ IupPPlotBegin(plot[0], 0);
+ for (theI=-100; theI<=100; theI++)
+ {
+ x = (float)(0.01*theI*theI-30);
+ y = (float)0.01*theI;
+ IupPPlotAdd(plot[0], x, y);
+ }
+ IupPPlotEnd(plot[0]);
+ IupSetAttribute(plot[0], "DS_LEGEND", "Curve 2");
+
+
+ /* PLOT 1 - MakeExamplePlot2 */
+ IupSetAttribute(plot[1], "TITLE", "No Autoscale+No CrossOrigin");
+ IupSetAttribute(plot[1], "TITLEFONTSIZE", "16");
+ IupSetAttribute(plot[1], "MARGINTOP", "40");
+ IupSetAttribute(plot[1], "MARGINLEFT", "65");
+ IupSetAttribute(plot[1], "MARGINBOTTOM", "60");
+ IupSetAttribute(plot[1], "BGCOLOR", "0 192 192");
+ IupSetAttribute(plot[1], "AXS_XLABEL", "Tg (X)");
+ IupSetAttribute(plot[1], "AXS_YLABEL", "Tg (Y)");
+ IupSetAttribute(plot[1], "AXS_XAUTOMIN", "NO");
+ IupSetAttribute(plot[1], "AXS_XAUTOMAX", "NO");
+ IupSetAttribute(plot[1], "AXS_YAUTOMIN", "NO");
+ IupSetAttribute(plot[1], "AXS_YAUTOMAX", "NO");
+ IupSetAttribute(plot[1], "AXS_XMIN", "10");
+ IupSetAttribute(plot[1], "AXS_XMAX", "60");
+ IupSetAttribute(plot[1], "AXS_YMIN", "-0.5");
+ IupSetAttribute(plot[1], "AXS_YMAX", "0.5");
+ IupSetAttribute(plot[1], "AXS_XCROSSORIGIN", "NO");
+ IupSetAttribute(plot[1], "AXS_YCROSSORIGIN", "NO");
+ IupSetAttribute(plot[1], "AXS_XFONTSTYLE", "BOLD");
+ IupSetAttribute(plot[1], "AXS_YFONTSTYLE", "BOLD");
+ IupSetAttribute(plot[1], "AXS_XREVERSE", "YES");
+ IupSetAttribute(plot[1], "GRIDCOLOR", "128 255 128");
+ IupSetAttribute(plot[1], "GRIDLINESTYLE", "DOTTED");
+ IupSetAttribute(plot[1], "GRID", "YES");
+ IupSetAttribute(plot[1], "LEGENDSHOW", "YES");
+
+ theFac = (float)1.0/(100*100*100);
+ IupPPlotBegin(plot[1], 0);
+ for (theI=0; theI<=100; theI++)
+ {
+ x = (float)(theI);
+ y = theFac*theI*theI*theI;
+ IupPPlotAdd(plot[1], x, y);
+ }
+ IupPPlotEnd(plot[1]);
+
+ theFac = (float)2.0/100;
+ IupPPlotBegin(plot[1], 0);
+ for (theI=0; theI<=100; theI++)
+ {
+ x = (float)(theI);
+ y = -theFac*theI;
+ IupPPlotAdd(plot[1], x, y);
+ }
+ IupPPlotEnd(plot[1]);
+
+ /* PLOT 2 - MakeExamplePlot4 */
+ IupSetAttribute(plot[2], "TITLE", "Log Scale");
+ IupSetAttribute(plot[2], "TITLEFONTSIZE", "16");
+ IupSetAttribute(plot[2], "MARGINTOP", "40");
+ IupSetAttribute(plot[2], "MARGINLEFT", "70");
+ IupSetAttribute(plot[2], "MARGINBOTTOM", "60");
+ IupSetAttribute(plot[2], "GRID", "YES");
+ IupSetAttribute(plot[2], "AXS_XSCALE", "LOG10");
+ IupSetAttribute(plot[2], "AXS_YSCALE", "LOG2");
+ IupSetAttribute(plot[2], "AXS_XLABEL", "Tg (X)");
+ IupSetAttribute(plot[2], "AXS_YLABEL", "Tg (Y)");
+ IupSetAttribute(plot[2], "AXS_XFONTSTYLE", "BOLD");
+ IupSetAttribute(plot[2], "AXS_YFONTSTYLE", "BOLD");
+
+ theFac = (float)100.0/(100*100*100);
+ IupPPlotBegin(plot[2], 0);
+ for (theI=0; theI<=100; theI++)
+ {
+ x = (float)(0.0001+theI*0.001);
+ y = (float)(0.01+theFac*theI*theI*theI);
+ IupPPlotAdd(plot[2], x, y);
+ }
+ IupPPlotEnd(plot[2]);
+ IupSetAttribute(plot[2], "DS_COLOR", "100 100 200");
+
+ /* PLOT 3 - MakeExamplePlot5 */
+ IupSetAttribute(plot[3], "TITLE", "Bar Mode");
+ IupSetAttribute(plot[3], "TITLEFONTSIZE", "16");
+ IupSetAttribute(plot[3], "MARGINTOP", "40");
+ IupSetAttribute(plot[3], "MARGINLEFT", "30");
+ IupSetAttribute(plot[3], "MARGINBOTTOM", "30");
+
+ {
+ const char * kLables[12] = {"jan","feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"};
+ const float kData[12] = {1,2,3,4,5,6,7,8,9,0,1,2};
+ IupPPlotBegin(plot[3], 1);
+ for (theI=0; theI<12; theI++)
+ IupPPlotAddStr(plot[3], kLables[theI], kData[theI]);
+ }
+ IupPPlotEnd(plot[3]);
+ IupSetAttribute(plot[3], "DS_COLOR", "100 100 200");
+ IupSetAttribute(plot[3], "DS_MODE", "BAR");
+
+ /* PLOT 4 - MakeExamplePlot6 */
+ IupSetAttribute(plot[4], "TITLE", "Marks Mode");
+ IupSetAttribute(plot[4], "TITLEFONTSIZE", "16");
+ IupSetAttribute(plot[4], "MARGINTOP", "40");
+ IupSetAttribute(plot[4], "MARGINLEFT", "45");
+ IupSetAttribute(plot[4], "MARGINBOTTOM", "40");
+ IupSetAttribute(plot[4], "AXS_XAUTOMIN", "NO");
+ IupSetAttribute(plot[4], "AXS_XAUTOMAX", "NO");
+ IupSetAttribute(plot[4], "AXS_YAUTOMIN", "NO");
+ IupSetAttribute(plot[4], "AXS_YAUTOMAX", "NO");
+ IupSetAttribute(plot[4], "AXS_XMIN", "0");
+ IupSetAttribute(plot[4], "AXS_XMAX", "0.011");
+ IupSetAttribute(plot[4], "AXS_YMIN", "0");
+ IupSetAttribute(plot[4], "AXS_YMAX", "0.22");
+ IupSetAttribute(plot[4], "AXS_XCROSSORIGIN", "NO");
+ IupSetAttribute(plot[4], "AXS_YCROSSORIGIN", "NO");
+ IupSetAttribute(plot[4], "AXS_XTICKFORMAT", "%1.3f");
+ IupSetAttribute(plot[4], "LEGENDSHOW", "YES");
+ IupSetAttribute(plot[4], "LEGENDPOS", "BOTTOMRIGHT");
+
+ theFac = (float)100.0/(100*100*100);
+ IupPPlotBegin(plot[4], 0);
+ for (theI=0; theI<=10; theI++)
+ {
+ x = (float)(0.0001+theI*0.001);
+ y = (float)(0.01+theFac*theI*theI);
+ IupPPlotAdd(plot[4], x, y);
+ }
+ IupPPlotEnd(plot[4]);
+ IupSetAttribute(plot[4], "DS_MODE", "MARKLINE");
+ IupSetAttribute(plot[4], "DS_SHOWVALUES", "YES");
+
+ IupPPlotBegin(plot[4], 0);
+ for (theI=0; theI<=10; theI++)
+ {
+ x = (float)(0.0001+theI*0.001);
+ y = (float)(0.2-theFac*theI*theI);
+ IupPPlotAdd(plot[4], x, y);
+ }
+ IupPPlotEnd(plot[4]);
+ IupSetAttribute(plot[4], "DS_MODE", "MARK");
+ IupSetAttribute(plot[4], "DS_MARKSTYLE", "HOLLOW_CIRCLE");
+
+ /* PLOT 5 - MakeExamplePlot8 */
+ IupSetAttribute(plot[5], "TITLE", "Data Selection and Editing");
+ IupSetAttribute(plot[5], "TITLEFONTSIZE", "16");
+ IupSetAttribute(plot[5], "MARGINTOP", "40");
+
+ theFac = (float)100.0/(100*100*100);
+ IupPPlotBegin(plot[5], 0);
+ for (theI=-10; theI<=10; theI++)
+ {
+ x = (float)(0.001*theI);
+ y = (float)(0.01+theFac*theI*theI*theI);
+ IupPPlotAdd(plot[5], x, y);
+ }
+ IupPPlotEnd(plot[5]);
+ IupSetAttribute(plot[5], "DS_COLOR", "100 100 200");
+ IupSetAttribute(plot[5], "DS_EDIT", "YES");
+ IupSetCallback(plot[5], "DELETE_CB", (Icallback)delete_cb);
+ IupSetCallback(plot[5], "SELECT_CB", (Icallback)select_cb);
+ IupSetCallback(plot[5], "POSTDRAW_CB", (Icallback)postdraw_cb);
+ IupSetCallback(plot[5], "PREDRAW_CB", (Icallback)predraw_cb);
+ IupSetCallback(plot[5], "EDIT_CB", (Icallback)edit_cb);
+
+}
+
+static int tabs_get_index(void)
+{
+ Ihandle *curr_tab = IupGetHandle(IupGetAttribute(tabs, "VALUE"));
+ char *ss = IupGetAttribute(curr_tab, "TABTITLE");
+ ss += 5; /* Skip "Plot " */
+ return atoi(ss);
+}
+
+/* Some processing required by current tab change: the controls at left
+ will be updated according to current plot props */
+static int tabs_tabchange_cb(Ihandle* self, Ihandle* new_tab)
+{
+ int ii=0;
+
+ char *ss = IupGetAttribute(new_tab, "TABTITLE");
+ ss += 5; /* Skip "Plot " */
+ ii = atoi(ss);
+
+ /* autoscaling X axis */
+ if (IupGetInt(plot[ii], "AXS_XAUTOMIN") && IupGetInt(plot[ii], "AXS_XAUTOMAX")) {
+ IupSetAttribute(tgg2, "VALUE", "ON");
+ IupSetAttribute(dial2, "ACTIVE", "NO");
+ }
+ else {
+ IupSetAttribute(tgg2, "VALUE", "OFF");
+ IupSetAttribute(dial2, "ACTIVE", "YES");
+ }
+ /* autoscaling Y axis */
+ if (IupGetInt(plot[ii], "AXS_YAUTOMIN") && IupGetInt(plot[ii], "AXS_YAUTOMAX")) {
+ IupSetAttribute(tgg1, "VALUE", "ON");
+ IupSetAttribute(dial1, "ACTIVE", "NO");
+ }
+ else {
+ IupSetAttribute(tgg1, "VALUE", "OFF");
+ IupSetAttribute(dial1, "ACTIVE", "YES");
+ }
+
+ /* grid */
+ if (IupGetInt(plot[ii], "GRID"))
+ {
+ IupSetAttribute(tgg3, "VALUE", "ON");
+ IupSetAttribute(tgg4, "VALUE", "ON");
+ }
+ else
+ {
+ /* X axis */
+ if (*IupGetAttribute(plot[ii], "GRID") == 'V')
+ IupSetAttribute(tgg3, "VALUE", "ON");
+ else
+ IupSetAttribute(tgg3, "VALUE", "OFF");
+ /* Y axis */
+ if (*IupGetAttribute(plot[ii], "GRID") == 'H')
+ IupSetAttribute(tgg4, "VALUE", "ON");
+ else
+ IupSetAttribute(tgg4, "VALUE", "OFF");
+ }
+
+ /* legend */
+ if (IupGetInt(plot[ii], "LEGENDSHOW"))
+ IupSetAttribute(tgg5, "VALUE", "ON");
+ else
+ IupSetAttribute(tgg5, "VALUE", "OFF");
+
+ return IUP_DEFAULT;
+}
+
+/* show/hide V grid */
+static int tgg3_cb(Ihandle *self, int v)
+{
+ int ii = tabs_get_index();
+
+ if (v)
+ {
+ if (IupGetInt(tgg4, "VALUE"))
+ IupSetAttribute(plot[ii], "GRID", "YES");
+ else
+ IupSetAttribute(plot[ii], "GRID", "VERTICAL");
+ }
+ else
+ {
+ if (!IupGetInt(tgg4, "VALUE"))
+ IupSetAttribute(plot[ii], "GRID", "NO");
+ else
+ IupSetAttribute(plot[ii], "GRID", "HORIZONTAL");
+ }
+
+ IupSetAttribute(plot[ii], "REDRAW", NULL);
+
+ return IUP_DEFAULT;
+}
+
+
+/* show/hide H grid */
+static int tgg4_cb(Ihandle *self, int v)
+{
+ int ii = tabs_get_index();
+
+ if (v)
+ {
+ if (IupGetInt(tgg3, "VALUE"))
+ IupSetAttribute(plot[ii], "GRID", "YES");
+ else
+ IupSetAttribute(plot[ii], "GRID", "HORIZONTAL");
+ }
+ else
+ {
+ if (!IupGetInt(tgg3, "VALUE"))
+ IupSetAttribute(plot[ii], "GRID", "NO");
+ else
+ IupSetAttribute(plot[ii], "GRID", "VERTICAL");
+ }
+
+ IupSetAttribute(plot[ii], "REDRAW", NULL);
+
+ return IUP_DEFAULT;
+}
+
+
+/* show/hide legend */
+static int tgg5_cb(Ihandle *self, int v)
+{
+ int ii = tabs_get_index();
+
+ if (v)
+ IupSetAttribute(plot[ii], "LEGENDSHOW", "YES");
+ else
+ IupSetAttribute(plot[ii], "LEGENDSHOW", "NO");
+
+ IupSetAttribute(plot[ii], "REDRAW", NULL);
+
+ return IUP_DEFAULT;
+}
+
+
+/* autoscale Y */
+static int tgg1_cb(Ihandle *self, int v)
+{
+ int ii = tabs_get_index();
+
+ if (v) {
+ IupSetAttribute(dial1, "ACTIVE", "NO");
+ IupSetAttribute(plot[ii], "AXS_YAUTOMIN", "YES");
+ IupSetAttribute(plot[ii], "AXS_YAUTOMAX", "YES");
+ }
+ else {
+ IupSetAttribute(dial1, "ACTIVE", "YES");
+ IupSetAttribute(plot[ii], "AXS_YAUTOMIN", "NO");
+ IupSetAttribute(plot[ii], "AXS_YAUTOMAX", "NO");
+ }
+
+ IupSetAttribute(plot[ii], "REDRAW", NULL);
+
+ return IUP_DEFAULT;
+}
+
+
+/* autoscale X */
+static int tgg2_cb(Ihandle *self, int v)
+{
+ int ii = tabs_get_index();
+
+ if (v) {
+ IupSetAttribute(dial2, "ACTIVE", "NO");
+ IupSetAttribute(plot[ii], "AXS_XAUTOMIN", "YES");
+ IupSetAttribute(plot[ii], "AXS_XAUTOMAX", "YES");
+ }
+ else {
+ IupSetAttribute(dial2, "ACTIVE", "YES");
+ IupSetAttribute(plot[ii], "AXS_XAUTOMIN", "NO");
+ IupSetAttribute(plot[ii], "AXS_XAUTOMAX", "NO");
+ }
+
+ IupSetAttribute(plot[ii], "REDRAW", NULL);
+
+ return IUP_DEFAULT;
+}
+
+
+/* Y zoom */
+static int dial1_btndown_cb(Ihandle *self, double angle)
+{
+ int ii = tabs_get_index();
+
+ IupStoreAttribute(plot[ii], "OLD_YMIN", IupGetAttribute(plot[ii], "AXS_YMIN"));
+ IupStoreAttribute(plot[ii], "OLD_YMAX", IupGetAttribute(plot[ii], "AXS_YMAX"));
+
+ return IUP_DEFAULT;
+}
+
+static int dial1_btnup_cb(Ihandle *self, double angle)
+{
+ int ii = tabs_get_index();
+ double x1, x2, xm;
+ char *ss;
+
+ x1 = IupGetFloat(plot[ii], "OLD_YMIN");
+ x2 = IupGetFloat(plot[ii], "OLD_YMAX");
+
+ ss = IupGetAttribute(plot[ii], "AXS_YMODE");
+ if ( ss && ss[3]=='2' ) {
+ /* LOG2: one circle will zoom 2 times */
+ xm = 4.0 * fabs(angle) / 3.141592;
+ if (angle>0.0) { x2 /= xm; x1 *= xm; }
+ else { x2 *= xm; x1 /= xm; }
+ }
+ if ( ss && ss[3]=='1' ) {
+ /* LOG10: one circle will zoom 10 times */
+ xm = 10.0 * fabs(angle) / 3.141592;
+ if (angle>0.0) { x2 /= xm; x1 *= xm; }
+ else { x2 *= xm; x1 /= xm; }
+ }
+ else {
+ /* LIN: one circle will zoom 2 times */
+ xm = (x1 + x2) / 2.0;
+ x1 = xm - (xm - x1)*(1.0-angle*1.0/3.141592);
+ x2 = xm + (x2 - xm)*(1.0-angle*1.0/3.141592);
+ }
+
+ if (x1<x2)
+ {
+ IupSetfAttribute(plot[ii], "AXS_YMIN", "%f", x1);
+ IupSetfAttribute(plot[ii], "AXS_YMAX", "%f", x2);
+ }
+
+ IupSetAttribute(plot[ii], "REDRAW", NULL);
+
+ return IUP_DEFAULT;
+}
+
+
+/* X zoom */
+static int dial2_btndown_cb(Ihandle *self, double angle)
+{
+ int ii = tabs_get_index();
+
+ IupStoreAttribute(plot[ii], "OLD_XMIN", IupGetAttribute(plot[ii], "AXS_XMIN"));
+ IupStoreAttribute(plot[ii], "OLD_XMAX", IupGetAttribute(plot[ii], "AXS_XMAX"));
+
+ return IUP_DEFAULT;
+}
+
+static int dial2_btnup_cb(Ihandle *self, double angle)
+{
+ int ii = tabs_get_index();
+ double x1, x2, xm;
+
+ x1 = IupGetFloat(plot[ii], "OLD_XMIN");
+ x2 = IupGetFloat(plot[ii], "OLD_XMAX");
+
+ xm = (x1 + x2) / 2.0;
+
+ x1 = xm - (xm - x1)*(1.0-angle*1.0/3.141592); /* one circle will zoom 2 times */
+ x2 = xm + (x2 - xm)*(1.0-angle*1.0/3.141592);
+
+ IupSetfAttribute(plot[ii], "AXS_XMIN", "%f", x1);
+ IupSetfAttribute(plot[ii], "AXS_XMAX", "%f", x2);
+
+ IupSetAttribute(plot[ii], "REDRAW", NULL);
+
+ return IUP_DEFAULT;
+}
+
+static int bt1_cb(Ihandle *self)
+{
+// int ii = tabs_get_index();
+// cdCanvas* cnv = cdCreateCanvas(CD_PDF, "pplot.pdf -o");
+// IupPPlotPaintTo(plot[ii], cnv);
+// cdKillCanvas(cnv);
+ return IUP_DEFAULT;
+}
+
+void PPlotTest(void)
+{
+ Ihandle *vboxr[MAXPLOT+1]; /* tabs containing the plots */
+ Ihandle *dlg, *vboxl, *hbox, *lbl1, *lbl2, *lbl3, *bt1,
+ *boxinfo, *boxdial1, *boxdial2, *f1, *f2;
+ int ii;
+
+ IupPPlotOpen(); /* init IupPPlot library */
+
+// cdInitGdiPlus();
+
+ /* create plots */
+ for (ii=0; ii<MAXPLOT; ii++)
+ plot[ii] = IupPPlot();
+
+ /* left panel: plot control
+ Y zooming */
+ dial1 = IupDial("VERTICAL");
+ lbl1 = IupLabel("+");
+ lbl2 = IupLabel("-");
+ boxinfo = IupVbox(lbl1, IupFill(), lbl2, NULL);
+ boxdial1 = IupHbox(boxinfo, dial1, NULL);
+
+ IupSetAttribute(boxdial1, "ALIGN", "ACENTER");
+ IupSetAttribute(boxinfo, "ALIGN", "ACENTER");
+ IupSetAttribute(boxinfo, "SIZE", "20x52");
+ IupSetAttribute(boxinfo, "GAP", "2");
+ IupSetAttribute(boxinfo, "MARGIN", "4");
+ IupSetAttribute(boxinfo, "EXPAND", "YES");
+ IupSetAttribute(lbl1, "EXPAND", "NO");
+ IupSetAttribute(lbl2, "EXPAND", "NO");
+
+ IupSetAttribute(dial1, "ACTIVE", "NO");
+ IupSetAttribute(dial1, "SIZE", "20x52");
+ IupSetCallback(dial1, "BUTTON_PRESS_CB", (Icallback)dial1_btndown_cb);
+ IupSetCallback(dial1, "MOUSEMOVE_CB", (Icallback)dial1_btnup_cb);
+ IupSetCallback(dial1, "BUTTON_RELEASE_CB", (Icallback)dial1_btnup_cb);
+
+ tgg1 = IupToggle("Y Autoscale", NULL);
+ IupSetCallback(tgg1, "ACTION", (Icallback)tgg1_cb);
+ IupSetAttribute(tgg1, "VALUE", "ON");
+
+ f1 = IupFrame( IupVbox(boxdial1, tgg1, NULL) );
+ IupSetAttribute(f1, "TITLE", "Y Zoom");
+
+ /* X zooming */
+ dial2 = IupDial("HORIZONTAL");
+ lbl1 = IupLabel("-");
+ lbl2 = IupLabel("+");
+ boxinfo = IupHbox(lbl1, IupFill(), lbl2, NULL);
+ boxdial2 = IupVbox(dial2, boxinfo, NULL);
+
+ IupSetAttribute(boxdial2, "ALIGN", "ACENTER");
+ IupSetAttribute(boxinfo, "ALIGN", "ACENTER");
+ IupSetAttribute(boxinfo, "SIZE", "64x16");
+ IupSetAttribute(boxinfo, "GAP", "2");
+ IupSetAttribute(boxinfo, "MARGIN", "4");
+ IupSetAttribute(boxinfo, "EXPAND", "HORIZONTAL");
+
+ IupSetAttribute(lbl1, "EXPAND", "NO");
+ IupSetAttribute(lbl2, "EXPAND", "NO");
+
+ IupSetAttribute(dial2, "ACTIVE", "NO");
+ IupSetAttribute(dial2, "SIZE", "64x16");
+ IupSetCallback(dial2, "BUTTON_PRESS_CB", (Icallback)dial2_btndown_cb);
+ IupSetCallback(dial2, "MOUSEMOVE_CB", (Icallback)dial2_btnup_cb);
+ IupSetCallback(dial2, "BUTTON_RELEASE_CB", (Icallback)dial2_btnup_cb);
+
+ tgg2 = IupToggle("X Autoscale", NULL);
+ IupSetCallback(tgg2, "ACTION", (Icallback)tgg2_cb);
+
+ f2 = IupFrame( IupVbox(boxdial2, tgg2, NULL) );
+ IupSetAttribute(f2, "TITLE", "X Zoom");
+
+ lbl1 = IupLabel("");
+ IupSetAttribute(lbl1, "SEPARATOR", "HORIZONTAL");
+
+ tgg3 = IupToggle("Vertical Grid", NULL);
+ IupSetCallback(tgg3, "ACTION", (Icallback)tgg3_cb);
+ tgg4 = IupToggle("Horizontal Grid", NULL);
+ IupSetCallback(tgg4, "ACTION", (Icallback)tgg4_cb);
+
+ lbl2 = IupLabel("");
+ IupSetAttribute(lbl2, "SEPARATOR", "HORIZONTAL");
+
+ tgg5 = IupToggle("Legend", NULL);
+ IupSetCallback(tgg5, "ACTION", (Icallback)tgg5_cb);
+
+ lbl3 = IupLabel("");
+ IupSetAttribute(lbl3, "SEPARATOR", "HORIZONTAL");
+
+ bt1 = IupButton("Export PDF", NULL);
+ IupSetCallback(bt1, "ACTION", (Icallback)bt1_cb);
+
+ vboxl = IupVbox(f1, f2, lbl1, tgg3, tgg4, lbl2, tgg5, lbl3, bt1, NULL);
+ IupSetAttribute(vboxl, "GAP", "4");
+ IupSetAttribute(vboxl, "EXPAND", "NO");
+
+ /* right panel: tabs with plots */
+ for (ii=0; ii<MAXPLOT; ii++) {
+ vboxr[ii] = IupVbox(plot[ii], NULL); /* each plot a tab */
+ IupSetfAttribute(vboxr[ii], "TABTITLE", "Plot %d", ii); /* name each tab */
+ IupSetHandle(IupGetAttribute(vboxr[ii], "TABTITLE"), vboxr[ii]);
+ }
+ vboxr[MAXPLOT] = NULL; /* mark end of vector */
+
+// tabs = IupZboxv(vboxr);
+// IupSetAttribute(tabs, "VALUE", "Plot 3");
+ tabs = IupTabsv(vboxr);
+ IupSetCallback(tabs, "TABCHANGE_CB", (Icallback)tabs_tabchange_cb);
+
+ hbox = IupHbox(vboxl, tabs, NULL);
+ IupSetAttribute(hbox, "MARGIN", "4x4");
+ IupSetAttribute(hbox, "GAP", "10");
+
+ dlg = IupDialog(hbox);
+ IupSetAttribute(dlg, "SIZE", "170x");
+ IupSetAttribute(dlg, "TITLE", "IupPPlot Example");
+
+ InitPlots(); /* It must be able to be done independent of dlg Mapping */
+
+ tabs_tabchange_cb(tabs, vboxr[0]);
+
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+ IupSetAttribute(dlg, "SIZE", NULL);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ PPlotTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/predialogs.c b/iup/test/predialogs.c
new file mode 100755
index 0000000..e7b36ea
--- /dev/null
+++ b/iup/test/predialogs.c
@@ -0,0 +1,472 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupkey.h"
+#include "iupcontrols.h"
+
+
+#ifdef WIN32
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0500
+#include <windows.h>
+static void drawTest(Ihandle* ih)
+{
+ RECT rect;
+ HDC hDC = (HDC)IupGetAttribute(ih, "PREVIEWDC");
+ int w = IupGetInt(ih, "PREVIEWWIDTH");
+ int h = IupGetInt(ih, "PREVIEWHEIGHT");
+
+ SetRect(&rect, 0, 0, w, h);
+ FillRect(hDC, &rect, GetStockObject(WHITE_BRUSH));
+
+ SelectObject(hDC, GetStockObject(DC_PEN));
+ SetDCPenColor(hDC, RGB(255, 0, 0));
+
+ MoveToEx(hDC, 0, 0, NULL);
+ LineTo(hDC, w-1, h-1);
+ MoveToEx(hDC, 0, h-1, NULL);
+ LineTo(hDC, w-1, 0);
+}
+#else
+#include <X11/Xlib.h>
+
+#define xCOLOR8TO16(_x) (_x*257) /* 65535/255 = 257 */
+static unsigned long xGetPixel(Display* dpy, unsigned char cr, unsigned char cg, unsigned char cb)
+{
+ XColor xc;
+ xc.red = xCOLOR8TO16(cr);
+ xc.green = xCOLOR8TO16(cg);
+ xc.blue = xCOLOR8TO16(cb);
+ xc.flags = DoRed | DoGreen | DoBlue;
+
+ XAllocColor(dpy, DefaultColormap(dpy, XDefaultScreen(dpy)), &xc);
+ return xc.pixel;
+}
+
+static void drawTest(Ihandle* ih)
+{
+ GC gc = (GC)IupGetAttribute(ih, "PREVIEWDC");
+ Display* dpy = (Display*)IupGetAttribute(ih, "XDISPLAY");
+ Drawable wnd = (Drawable)IupGetAttribute(ih, "XWINDOW");
+ int w = IupGetInt(ih, "PREVIEWWIDTH");
+ int h = IupGetInt(ih, "PREVIEWHEIGHT");
+
+ XSetForeground(dpy, gc, xGetPixel(dpy, 255, 255, 255));
+ XFillRectangle(dpy, wnd, gc, 0, 0, w, h);
+
+ XSetForeground(dpy, gc, xGetPixel(dpy, 255, 0, 0));
+
+ XDrawLine(dpy, wnd, gc, 0, 0, w-1, h-1);
+ XDrawLine(dpy, wnd, gc, 0, h-1, w-1, 0);
+}
+#endif
+
+#ifdef USE_OPENGL
+#include <GL/gl.h>
+#include "iupgl.h"
+
+static void drawTestGL(Ihandle* ih)
+{
+ Ihandle* glcanvas = IupGetAttributeHandle(ih, "PREVIEWGLCANVAS");
+ if (glcanvas)
+ {
+ int w = IupGetInt(ih, "PREVIEWWIDTH");
+ int h = IupGetInt(ih, "PREVIEWHEIGHT");
+
+ IupGLMakeCurrent(glcanvas);
+ glViewport(0,0,w,h);
+
+ glClearColor(1.0, 0.0, 1.0, 1.f); /* pink */
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glColor3f(1.0,0.0,0.0); /* red */
+ glBegin(GL_QUADS);
+ glVertex2f(0.9f,0.9f);
+ glVertex2f(0.9f,-0.9f);
+ glVertex2f(-0.9f,-0.9f);
+ glVertex2f(-0.9f,0.9f);
+ glEnd();
+
+ IupGLSwapBuffers(glcanvas);
+ }
+ else
+ drawTest(ih);
+}
+
+#endif
+
+static int close_cb(Ihandle *ih)
+{
+ printf("CLOSE_CB\n");
+ IupDestroy(ih);
+ return IUP_IGNORE;
+}
+
+static int help_cb(Ihandle* ih)
+{
+ (void)ih;
+ printf("HELP_CB\n");
+ return IUP_DEFAULT;
+}
+
+static int file_cb(Ihandle* ih, const char* filename, const char* status)
+{
+ (void)ih;
+ printf("FILE_CB(%s - %s)\n", status, filename);
+
+ if (strcmp(status, "PAINT")==0)
+ {
+ printf(" SIZE(%s x %s)\n", IupGetAttribute(ih, "PREVIEWWIDTH"), IupGetAttribute(ih, "PREVIEWHEIGHT"));
+#ifdef USE_OPENGL
+ drawTestGL(ih);
+#else
+ drawTest(ih);
+#endif
+ }
+ return IUP_DEFAULT;
+}
+
+static void new_message(char* type, char* buttons)
+{
+ Ihandle* dlg = IupMessageDlg();
+
+ if (strcmp(type, "ERROR")!=0)
+ IupSetAttribute(dlg, "PARENTDIALOG", "_MAIN_DIALOG_TEST_");
+ IupSetAttribute(dlg, "DIALOGTYPE", type);
+ IupSetAttribute(dlg, "TITLE", "IupMessageDlg Test");
+ IupSetAttribute(dlg, "BUTTONS", buttons);
+ IupSetAttribute(dlg, "VALUE", "Message Text\nSecond Line");
+ if (strcmp(type, "WARNING")==0)
+ IupSetAttribute(dlg, "BUTTONDEFAULT", "2");
+ if (strcmp(type, "INFORMATION")!=0)
+ IupSetCallback(dlg, "HELP_CB", (Icallback)help_cb);
+
+ IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT);
+
+ printf("BUTTONRESPONSE(%s)\n", IupGetAttribute(dlg, "BUTTONRESPONSE"));
+
+ IupDestroy(dlg);
+}
+
+static void new_color(void)
+{
+ Ihandle* dlg = IupColorDlg();
+
+ IupSetAttribute(dlg, "PARENTDIALOG", "_MAIN_DIALOG_TEST_");
+ IupSetAttribute(dlg, "VALUE", "128 0 255");
+ IupSetAttribute(dlg, "ALPHA", "142");
+ //IupSetAttribute(dlg, "COLORTABLE", ";;177 29 234;;;0 0 23;253 20 119");
+ IupSetAttribute(dlg, "SHOWHEX", "YES");
+ IupSetAttribute(dlg, "SHOWCOLORTABLE", "YES");
+ //IupSetAttribute(dlg, "SHOWALPHA", "YES");
+ IupSetAttribute(dlg, "TITLE", "IupColorDlg Test");
+ IupSetCallback(dlg, "HELP_CB", (Icallback)help_cb);
+
+ IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT);
+
+ if (IupGetInt(dlg, "STATUS"))
+ {
+ printf("OK\n");
+ printf(" VALUE(%s)\n", IupGetAttribute(dlg, "VALUE"));
+ printf(" COLORTABLE(%s)\n", IupGetAttribute(dlg, "COLORTABLE"));
+ }
+ else
+ printf("CANCEL\n");
+
+ IupDestroy(dlg);
+}
+
+static void new_font(void)
+{
+ Ihandle* dlg = IupFontDlg();
+
+ IupSetAttribute(dlg, "PARENTDIALOG", "_MAIN_DIALOG_TEST_");
+ IupSetAttribute(dlg, "COLOR", "128 0 255");
+ IupSetAttribute(dlg, "VALUE", "Times New Roman, Bold 20");
+ IupSetAttribute(dlg, "TITLE", "IupFontDlg Test");
+ IupSetCallback(dlg, "HELP_CB", (Icallback)help_cb);
+
+ IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT);
+
+ if (IupGetInt(dlg, "STATUS"))
+ {
+ printf("OK\n");
+ printf(" VALUE(%s)\n", IupGetAttribute(dlg, "VALUE"));
+ printf(" COLOR(%s)\n", IupGetAttribute(dlg, "COLOR"));
+ }
+ else
+ printf("CANCEL\n");
+
+ IupDestroy(dlg);
+}
+
+static void new_file(char* dialogtype, int preview)
+{
+ Ihandle *dlg = IupFileDlg();
+
+ IupSetAttribute(dlg, "PARENTDIALOG", "_MAIN_DIALOG_TEST_");
+ IupSetAttribute(dlg, "DIALOGTYPE", dialogtype);
+ IupSetAttribute(dlg, "TITLE", "IupFileDlg Test");
+ IupSetAttribute(dlg, "DIRECTORY", "/tecgraf/iup");
+ if (strcmp(dialogtype, "DIR")!=0)
+ {
+ IupSetAttributes(dlg, "FILTER = \"*.bmp\", FILTERINFO = \"Bitmap Files\"");
+ IupSetAttribute(dlg, "EXTFILTER", "Text files|*.txt;*.doc|Image files|*.jpg;*.bmp;*.gif|");
+// IupSetAttribute(dlg, "FILE", "/tecgraf/im/test.bmp");
+ IupSetAttribute(dlg, "FILE", "test.bmp");
+ }
+ IupSetCallback(dlg, "HELP_CB", (Icallback)help_cb);
+// IupSetAttributes(dlg, "FILE = \"\\tecgraf\\iup\\test.bmp\""); // OK
+// IupSetAttributes(dlg, "FILE = \"/tecgraf/iup/test.bmp\""); // OK
+// IupSetAttributes(dlg, "FILE = \"test.bmp\", DIRECTORY = \"/tecgraf/iup\""); // OK
+// IupSetAttributes(dlg, "FILE = \"test.bmp\", DIRECTORY = \"\\tecgraf\\iup\""); // OK
+// IupSetAttribute(dlg, "NOCHANGEDIR", "NO");
+// IupSetAttribute(dlg, "MULTIPLEFILES", "YES");
+
+ if (preview)
+ {
+ IupSetAttribute(dlg, "SHOWPREVIEW", "YES");
+ IupSetCallback(dlg, "FILE_CB", (Icallback)file_cb);
+
+#ifdef USE_OPENGL
+ if (preview==2)
+ {
+ Ihandle* glcanvas = IupGLCanvas(NULL);
+ IupSetAttribute(glcanvas, "BUFFER", "DOUBLE");
+ IupSetAttributeHandle(dlg, "PREVIEWGLCANVAS", glcanvas);
+ }
+#endif
+ }
+
+ IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT);
+
+ switch(IupGetInt(dlg, "STATUS"))
+ {
+ case 1:
+ printf("OK\n");
+ printf(" New file - VALUE(%s)\n", IupGetAttribute(dlg, "VALUE"));
+ break;
+ case 0 :
+ printf("OK\n");
+ printf(" File exists - VALUE(%s)\n", IupGetAttribute(dlg, "VALUE"));
+ break;
+ case -1 :
+ printf("CANCEL\n");
+ break;
+ }
+
+ IupDestroy(dlg);
+}
+
+static void new_alarm(void)
+{
+ int ret;
+ IupSetGlobal("PARENTDIALOG", "_MAIN_DIALOG_TEST_");
+ ret = IupAlarm ("IupAlarm Test", "Message Text\nSecond Line", "But 1", "Button 2", "B3");
+ IupSetGlobal("PARENTDIALOG", NULL);
+ //int ret = IupAlarm ("IupAlarm Test", "Message Text\nSecond Line\nVery long long long long long long long long long long long long text", "But 1", "Button 2", "B3");
+ printf("Button(%d)\n", ret);
+}
+
+static void new_gettext(void)
+{
+ int ret;
+ char text[1024] = "text first line\nsecond line";
+ IupSetGlobal("PARENTDIALOG", "_MAIN_DIALOG_TEST_");
+ ret = IupGetText("IupGetText Text", text);
+ IupSetGlobal("PARENTDIALOG", NULL);
+ if (ret)
+ {
+ printf("OK\n");
+ printf("Text(%s)\n", text);
+ }
+ else
+ printf("CANCEL\n");
+}
+
+static void new_getfile(void)
+{
+ int ret;
+ char filename[1024] = "*.*";
+ IupSetGlobal("PARENTDIALOG", "_MAIN_DIALOG_TEST_");
+ ret = IupGetFile(filename);
+ IupSetGlobal("PARENTDIALOG", NULL);
+ if (ret!=-1)
+ {
+ printf("OK\n");
+ if (ret == 0)
+ printf("File(%s)\n", filename);
+ else
+ printf("New File(%s)\n", filename);
+ }
+ else
+ printf("CANCEL\n");
+}
+
+static void new_list(void)
+{
+ int ret;
+ int size = 8 ;
+ int marks[8] = { 0,0,0,0,1,1,0,0 };
+ const char *options[] = {
+ "Blue" ,
+ "Red" ,
+ "Green" ,
+ "Yellow" ,
+ "Black" ,
+ "White" ,
+ "Gray" ,
+ "Brown" } ;
+
+ IupSetGlobal("PARENTDIALOG", "_MAIN_DIALOG_TEST_");
+ ret = IupListDialog(2,"IupListDialog Test",size,options,0,8,5,marks);
+ IupSetGlobal("PARENTDIALOG", NULL);
+
+ if (ret == -1)
+ {
+ printf("CANCEL\n");
+ }
+ else
+ {
+ int i;
+ char selection[80] = "";
+ printf("OK\n");
+
+ for(i = 0 ; i < size ; i++)
+ {
+ if(marks[i])
+ {
+ char temp[10];
+ sprintf(temp,"%s\n",options[i]);
+ strcat(selection,temp);
+ }
+ }
+
+ printf(" Options (%s)\n", selection);
+ }
+}
+
+static int k_any(Ihandle *ih, int c)
+{
+ switch(c)
+ {
+ case K_m:
+ IupSetGlobal("PARENTDIALOG", "_MAIN_DIALOG_TEST_");
+ IupMessage("IupMessage Test", "Message Text\nSecond Line.");
+ IupSetGlobal("PARENTDIALOG", NULL);
+ break;
+ case K_e:
+ new_message("ERROR", NULL);
+ break;
+ case K_i:
+ new_message("INFORMATION", NULL);
+ break;
+ case K_w:
+ new_message("WARNING", "OKCANCEL");
+ break;
+ case K_q:
+ new_message("QUESTION", "YESNO");
+ break;
+ case K_c:
+ new_color();
+ break;
+ case K_f:
+ new_font();
+ break;
+ case K_o:
+ new_file("OPEN", 0);
+ break;
+ case K_O:
+ new_file("OPEN", 1);
+ break;
+ case K_G:
+ new_file("OPEN", 2);
+ break;
+ case K_s:
+ new_file("SAVE", 0);
+ break;
+ case K_d:
+ new_file("DIR", 0);
+ break;
+ case K_a:
+ new_alarm();
+ break;
+ case K_g:
+ new_getfile();
+ break;
+ case K_t:
+ new_gettext();
+ break;
+ case K_l:
+ new_list();
+ break;
+ case K_ESC:
+ IupDestroy(ih);
+ return IUP_IGNORE;
+ }
+ return IUP_DEFAULT;
+}
+
+void PreDialogsTest(void)
+{
+ char* msg = "Press a key for a pre-defined dialog:\n"
+ "e = IupMessageDlg(ERROR)\n"
+ "i = IupMessageDlg(INFORMATION)\n"
+ "w = IupMessageDlg(WARNING)\n"
+ "q = IupMessageDlg(QUESTION)\n"
+ "--------------------\n"
+ "o = IupFileDlg(OPEN)\n"
+ "O = IupFileDlg(OPEN+PREVIEW)\n"
+ "G = IupFileDlg(OPEN+PREVIEW+OPENGL)\n"
+ "s = IupFileDlg(SAVE)\n"
+ "d = IupFileDlg(DIR)\n"
+ "--------------------\n"
+ "c = IupColorDlg\n"
+ "f = IupFontDlg\n"
+ "--------------------\n"
+ "m = IupMessage\n"
+ "a = IupAlarm\n"
+ "t = IupGetText\n"
+ "g = IupGetFile\n"
+ "l = IupListDialog\n"
+ "--------------------\n"
+ "Esc = quit";
+ Ihandle *dlg = IupDialog(IupVbox(IupLabel(msg), NULL));
+
+#ifdef USE_OPENGL
+ IupGLCanvasOpen();
+#endif
+
+ IupSetHandle("_MAIN_DIALOG_TEST_", dlg);
+
+ IupSetAttribute(dlg, "TITLE", "Pre-defined Dialogs Test");
+ IupSetAttribute(dlg, "MARGIN", "10x10");
+
+ IupSetCallback(dlg, "K_ANY", (Icallback)k_any);
+ IupSetCallback(dlg, "CLOSE_CB", (Icallback)close_cb);
+
+ IupShow(dlg);
+}
+
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+ IupControlsOpen();
+
+#ifdef USE_OPENGL
+ IupGLCanvasOpen();
+#endif
+
+ PreDialogsTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/progressbar.c b/iup/test/progressbar.c
new file mode 100755
index 0000000..26b8bfd
--- /dev/null
+++ b/iup/test/progressbar.c
@@ -0,0 +1,330 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupcontrols.h"
+
+static float increment = 0.01f;
+static Ihandle *progressbar1;
+static Ihandle *progressbar2;
+static Ihandle *btn_pause;
+static Ihandle *timer = NULL;
+
+static unsigned char pixmap_play[] =
+{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 };
+
+static unsigned char pixmap_restart[] =
+{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 };
+
+static unsigned char pixmap_rewind[] =
+{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 };
+
+static unsigned char pixmap_forward[] =
+{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 };
+
+static unsigned char pixmap_pause[] =
+{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+ ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 };
+
+static void createimg_s (void)
+{
+ Ihandle *img_restart, *img_play, *img_forward, *img_rewind, *img_pause;
+
+ img_restart = IupImage(22,22, pixmap_restart);
+ img_play = IupImage(22,22, pixmap_play);
+ img_forward = IupImage(22,22, pixmap_forward);
+ img_rewind = IupImage(22,22, pixmap_rewind);
+ img_pause = IupImage(22,22, pixmap_pause);
+
+ IupSetHandle ("img_restart", img_restart);
+ IupSetHandle ("img_play", img_play);
+ IupSetHandle ("img_forward", img_forward);
+ IupSetHandle ("img_rewind", img_rewind);
+ IupSetHandle ("img_pause", img_pause);
+
+ IupSetAttribute (img_restart, "1", "0 0 0");
+ IupSetAttribute (img_restart, "2", "BGCOLOR");
+ IupSetAttribute (img_play, "1", "0 0 0");
+ IupSetAttribute (img_play, "2", "BGCOLOR");
+ IupSetAttribute (img_forward, "1", "0 0 0");
+ IupSetAttribute (img_forward, "2", "BGCOLOR");
+ IupSetAttribute (img_rewind, "1", "0 0 0");
+ IupSetAttribute (img_rewind, "2", "BGCOLOR");
+ IupSetAttribute (img_pause, "1", "0 0 0");
+ IupSetAttribute (img_pause, "2", "BGCOLOR");
+}
+
+static int time_cb(void)
+{
+ float value = IupGetFloat(progressbar1, "VALUE");
+ value += increment;
+ if (value > 1) value = 0; /* start over */
+ IupSetfAttribute(progressbar1, "VALUE", "%f", (double)value);
+
+ value = IupGetFloat(progressbar2, "VALUE");
+ value += increment*50;
+ if (value > 50) value = 0; /* start over */
+ IupSetfAttribute(progressbar2, "VALUE", "%f", (double)value);
+ return IUP_DEFAULT;
+}
+
+static int btn_pause_cb(void)
+{
+ if (!IupGetInt(timer, "RUN"))
+ {
+ IupSetAttribute(timer, "RUN", "YES");
+ IupSetAttribute(btn_pause, "IMAGE", "img_pause");
+ }
+ else
+ {
+ IupSetAttribute(timer, "RUN", "NO");
+ IupSetAttribute(btn_pause, "IMAGE", "img_play");
+ }
+
+ return IUP_DEFAULT;
+}
+
+
+static int unmap_cb(Ihandle* ih)
+{
+ IupDestroy(timer);
+ timer = NULL;
+ return IUP_DEFAULT;
+}
+
+static int btn_restart_cb(void)
+{
+ IupSetAttribute(progressbar1, "VALUE", "0");
+ IupSetAttribute(progressbar2, "VALUE", "0");
+ return IUP_DEFAULT;
+}
+
+static int btn_accelerate_cb(void)
+{
+ increment *= 2;
+ return IUP_DEFAULT;
+}
+
+static int btn_decelerate_cb(void)
+{
+ increment /= 2;
+ return IUP_DEFAULT;
+}
+
+static int btn_show1_cb(void)
+{
+ if (!IupGetInt(progressbar1, "DASHED"))
+ IupSetAttribute(progressbar1, "DASHED", "YES");
+ else
+ IupSetAttribute(progressbar1, "DASHED", "NO");
+
+ return IUP_DEFAULT;
+}
+
+static int btn_show2_cb(void)
+{
+ if (!IupGetInt(progressbar1, "MARQUEE"))
+ IupSetAttribute(progressbar1, "MARQUEE", "YES");
+ else
+ IupSetAttribute(progressbar1, "MARQUEE", "NO");
+
+ return IUP_DEFAULT;
+}
+
+void ProgressbarTest(void)
+{
+ Ihandle *dlg, *vbox, *hbox;
+ Ihandle *btn_restart, *btn_accelerate, *btn_decelerate, *btn_show1, *btn_show2;
+
+ if (timer)
+ IupDestroy(timer);
+ timer = IupTimer();
+ IupSetCallback(timer, "ACTION_CB", (Icallback)time_cb);
+ IupSetAttribute(timer, "TIME", "100");
+
+ progressbar1 = IupProgressBar();
+ progressbar2 = IupProgressBar();
+
+ IupSetAttribute(progressbar1, "EXPAND", "YES");
+ //IupSetAttribute(progressbar1, "DASHED", "YES");
+ IupSetAttribute(progressbar1, "MARQUEE", "YES");
+
+ IupSetAttribute(progressbar2, "ORIENTATION", "VERTICAL");
+ IupSetAttribute(progressbar2, "BGCOLOR", "255 0 128");
+ IupSetAttribute(progressbar2, "FGCOLOR", "0 128 0");
+ IupSetAttribute(progressbar2, "RASTERSIZE", "30x100");
+ IupSetAttribute(progressbar2, "MAX", "50");
+ IupSetAttribute(progressbar2, "VALUE", "25");
+
+ btn_restart = IupButton(NULL, NULL);
+ btn_pause = IupButton(NULL, NULL);
+ btn_accelerate = IupButton(NULL, NULL);
+ btn_decelerate = IupButton(NULL, NULL);
+ btn_show1 = IupButton("Dashed", NULL);
+ btn_show2 = IupButton("Marquee", NULL);
+
+ createimg_s();
+
+ IupSetAttribute(btn_restart, "IMAGE", "img_restart");
+ IupSetAttribute(btn_restart, "TIP", "Restart" );
+ IupSetAttribute(btn_pause, "IMAGE", "img_pause");
+ IupSetAttribute(btn_pause, "TIP", "Play/Pause");
+ IupSetAttribute(btn_accelerate, "IMAGE", "img_forward");
+ IupSetAttribute(btn_accelerate, "TIP", "Accelerate");
+ IupSetAttribute(btn_decelerate, "IMAGE", "img_rewind");
+ IupSetAttribute(btn_decelerate, "TIP", "Decelerate");
+ IupSetAttribute(btn_show1, "TIP", "Dashed or Continuous");
+ IupSetAttribute(btn_show2, "TIP", "Marquee or Defined");
+
+ hbox = IupHbox
+ (
+ IupFill(),
+ btn_pause,
+ btn_restart,
+ btn_decelerate,
+ btn_accelerate,
+ btn_show1,
+ btn_show2,
+ IupFill(),
+ NULL
+ );
+
+ vbox = IupHbox(IupVbox(progressbar1, hbox, NULL), progressbar2, NULL);
+ IupSetAttribute(vbox, "MARGIN", "10x10");
+ IupSetAttribute(vbox, "GAP", "5");
+
+ dlg = IupDialog(vbox);
+
+ IupSetAttribute(dlg, "TITLE", "IupProgressBar Test");
+ IupSetCallback(dlg, "UNMAP_CB", (Icallback) unmap_cb);
+
+ IupSetCallback(btn_pause, "ACTION", (Icallback) btn_pause_cb);
+ IupSetCallback(btn_restart, "ACTION", (Icallback) btn_restart_cb);
+ IupSetCallback(btn_accelerate, "ACTION", (Icallback) btn_accelerate_cb);
+ IupSetCallback(btn_decelerate, "ACTION", (Icallback) btn_decelerate_cb);
+ IupSetCallback(btn_show1, "ACTION", (Icallback) btn_show1_cb);
+ IupSetCallback(btn_show2, "ACTION", (Icallback) btn_show2_cb);
+
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+
+ IupSetAttribute(timer, "RUN", "YES");
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ ProgressbarTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/sample.c b/iup/test/sample.c
new file mode 100755
index 0000000..e99617d
--- /dev/null
+++ b/iup/test/sample.c
@@ -0,0 +1,407 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <iup.h>
+
+static Ihandle* load_image_Tecgraf(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 95, 108, 1, 90, 100, 117, 99, 123, 138, 166, 126, 137, 152, 181, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 105, 123, 147, 122, 137, 165, 255, 136, 152, 183, 255, 132, 149, 179, 250, 133, 149, 178, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 100, 115, 43, 111, 125, 150, 253, 140, 158, 190, 255, 135, 151, 182, 255, 132, 149, 179, 255, 131, 147, 177, 217, 153, 164, 188, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 113, 134, 148, 134, 151, 182, 255, 137, 154, 185, 255, 115, 129, 154, 252, 114, 128, 155, 255, 130, 146, 175, 255, 132, 147, 175, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 159, 162, 3, 108, 121, 145, 230, 144, 162, 195, 255, 137, 154, 185, 197, 74, 79, 86, 45, 41, 46, 55, 246, 120, 134, 162, 255, 129, 145, 174, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 101, 113, 48, 124, 139, 167, 255, 144, 161, 194, 255, 138, 155, 186, 67, 0, 0, 0, 0, 49, 54, 62, 150, 87, 98, 118, 255, 128, 144, 173, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 113, 132, 105, 137, 154, 185, 255, 139, 156, 188, 231, 143, 159, 187, 3, 0, 0, 0, 0, 64, 68, 76, 61, 70, 79, 95, 255, 127, 143, 172, 254, 134, 149, 175, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 121, 142, 153, 141, 159, 191, 255, 139, 156, 188, 164, 0, 0, 0, 0, 0, 0, 0, 0, 79, 82, 87, 3, 69, 77, 92, 241, 122, 137, 165, 255, 127, 142, 170, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 122, 146, 191, 145, 163, 196, 255, 139, 156, 188, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 86, 101, 190, 115, 129, 156, 255, 126, 141, 170, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 125, 149, 227, 150, 168, 201, 255, 141, 157, 188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 91, 107, 144, 113, 127, 153, 255, 125, 140, 169, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 165, 167, 2, 112, 125, 150, 252, 155, 173, 203, 255, 143, 159, 189, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 94, 110, 109, 114, 128, 155, 255, 125, 140, 168, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 167, 181, 1, 120, 130, 149, 33, 48, 53, 59, 69, 43, 46, 52, 100, 50, 54, 59, 137, 116, 130, 156, 255, 155, 171, 201, 255, 105, 118, 142, 155, 104, 117, 141, 151, 105, 118, 141, 151, 105, 118, 142, 151, 101, 113, 136, 185, 111, 124, 150, 255, 116, 130, 156, 220, 112, 125, 148, 95, 115, 127, 150, 67, 123, 134, 156, 33, 168, 176, 190, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 129, 147, 5, 109, 121, 142, 71, 106, 118, 140, 140, 105, 117, 140, 197, 107, 120, 144, 242, 120, 135, 162, 255, 123, 137, 163, 255, 44, 49, 58, 255, 28, 32, 39, 255, 125, 139, 164, 255, 150, 167, 197, 255, 138, 155, 186, 255, 131, 148, 178, 255, 125, 141, 170, 255, 119, 134, 162, 255, 114, 128, 154, 255, 108, 122, 147, 255, 104, 117, 141, 255, 102, 115, 138, 255, 103, 116, 139, 255, 107, 120, 145, 255, 111, 124, 149, 245, 113, 126, 151, 200, 113, 127, 152, 140, 116, 129, 154, 71, 122, 135, 158, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 118, 128, 145, 14, 106, 118, 140, 130, 104, 116, 139, 234, 105, 118, 142, 255, 128, 144, 173, 255, 147, 165, 199, 255, 157, 177, 213, 255, 150, 168, 202, 255, 140, 156, 187, 229, 41, 45, 52, 196, 39, 43, 51, 183, 130, 143, 168, 255, 144, 161, 192, 233, 109, 122, 145, 109, 105, 116, 138, 109, 99, 110, 130, 109, 92, 103, 123, 109, 91, 100, 117, 145, 97, 109, 131, 255, 95, 106, 128, 248, 74, 83, 97, 193, 64, 72, 85, 227, 56, 63, 75, 255, 55, 62, 75, 255, 65, 73, 88, 255, 90, 101, 121, 255, 111, 125, 150, 255, 114, 128, 154, 236, 116, 129, 155, 130, 127, 140, 165, 16, 0, 0, 0, 0,
+ 95, 101, 113, 22, 103, 115, 137, 220, 103, 116, 140, 255, 110, 123, 148, 255, 146, 165, 198, 255, 147, 165, 197, 232, 142, 158, 188, 147, 131, 144, 169, 78, 115, 123, 139, 20, 0, 0, 0, 0, 0, 0, 0, 0, 91, 97, 108, 68, 128, 142, 167, 255, 144, 162, 193, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 100, 107, 31, 120, 135, 163, 255, 133, 150, 180, 231, 0, 0, 0, 0, 0, 0, 0, 0, 86, 89, 93, 20, 50, 54, 61, 73, 37, 40, 46, 141, 33, 36, 42, 230, 46, 52, 63, 255, 107, 120, 144, 255, 116, 130, 157, 255, 118, 133, 159, 223, 132, 147, 174, 24,
+ 76, 83, 95, 114, 104, 117, 140, 255, 105, 117, 141, 255, 118, 133, 160, 253, 139, 155, 184, 116, 134, 143, 161, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 100, 110, 74, 122, 137, 163, 255, 143, 160, 191, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 114, 120, 31, 123, 138, 166, 255, 136, 153, 183, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 93, 97, 5, 42, 45, 51, 111, 86, 97, 117, 253, 118, 133, 160, 255, 119, 133, 161, 255, 133, 149, 180, 116,
+ 46, 50, 56, 109, 67, 76, 91, 255, 105, 118, 142, 255, 107, 120, 145, 254, 112, 125, 149, 131, 127, 139, 161, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 98, 109, 74, 116, 130, 156, 255, 142, 159, 190, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 122, 31, 128, 143, 172, 255, 141, 157, 185, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 137, 163, 7, 122, 136, 162, 122, 120, 135, 162, 254, 121, 136, 164, 255, 136, 152, 184, 255, 126, 141, 168, 116,
+ 71, 74, 79, 17, 31, 35, 41, 206, 42, 47, 57, 255, 77, 87, 105, 255, 103, 116, 140, 255, 110, 124, 149, 239, 112, 125, 150, 157, 115, 128, 153, 89, 122, 134, 158, 30, 147, 158, 177, 2, 0, 0, 0, 0, 81, 87, 96, 65, 109, 123, 148, 255, 141, 158, 190, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 103, 112, 31, 135, 151, 180, 255, 141, 156, 183, 231, 0, 0, 0, 0, 153, 164, 183, 1, 134, 147, 171, 30, 124, 138, 165, 84, 123, 138, 165, 154, 122, 137, 164, 235, 127, 143, 172, 255, 140, 157, 189, 255, 144, 162, 195, 255, 129, 144, 172, 218, 126, 138, 161, 22,
+ 0, 0, 0, 0, 64, 68, 73, 7, 39, 43, 49, 118, 32, 36, 42, 225, 30, 35, 42, 255, 50, 57, 68, 255, 72, 81, 97, 255, 91, 102, 123, 255, 105, 118, 142, 255, 113, 127, 152, 240, 115, 129, 155, 204, 111, 124, 149, 196, 111, 125, 150, 255, 126, 141, 170, 234, 119, 133, 159, 120, 120, 134, 160, 116, 121, 135, 161, 117, 121, 135, 162, 119, 116, 130, 155, 152, 127, 142, 170, 255, 125, 140, 168, 248, 123, 138, 166, 199, 130, 145, 173, 235, 140, 155, 183, 255, 143, 160, 190, 255, 143, 161, 193, 255, 147, 165, 199, 255, 145, 164, 197, 255, 132, 148, 177, 230, 127, 140, 166, 126, 124, 134, 151, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 141, 144, 3, 55, 58, 63, 58, 37, 40, 46, 126, 34, 38, 44, 184, 34, 38, 44, 235, 35, 39, 47, 254, 49, 55, 66, 255, 64, 72, 87, 255, 77, 87, 104, 255, 88, 98, 118, 255, 96, 108, 130, 255, 103, 116, 139, 255, 108, 122, 147, 255, 113, 127, 153, 255, 118, 133, 160, 255, 124, 140, 168, 255, 133, 148, 176, 255, 141, 156, 183, 255, 146, 161, 187, 255, 144, 159, 186, 255, 131, 146, 174, 254, 127, 141, 168, 237, 126, 141, 168, 188, 123, 137, 162, 131, 112, 123, 143, 61, 128, 132, 140, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 94, 98, 19, 64, 68, 73, 56, 53, 57, 65, 82, 62, 67, 76, 116, 66, 74, 89, 255, 95, 107, 129, 255, 80, 88, 103, 155, 81, 90, 105, 151, 86, 95, 112, 151, 95, 104, 122, 151, 98, 109, 128, 180, 124, 139, 166, 255, 109, 122, 146, 218, 100, 110, 128, 84, 96, 104, 118, 56, 105, 109, 117, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 2, 74, 83, 98, 252, 131, 147, 178, 255, 140, 155, 184, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 134, 157, 114, 151, 169, 203, 255, 123, 138, 165, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 76, 90, 224, 122, 137, 165, 255, 136, 152, 182, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 139, 165, 147, 146, 164, 198, 255, 122, 137, 165, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 69, 81, 191, 110, 124, 149, 255, 134, 151, 181, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 170, 193, 142, 160, 192, 255, 122, 137, 164, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 63, 74, 150, 94, 105, 127, 255, 133, 149, 179, 166, 0, 0, 0, 0, 0, 0, 0, 0, 115, 119, 128, 5, 130, 145, 174, 242, 137, 154, 186, 255, 125, 139, 166, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 58, 66, 102, 72, 81, 97, 255, 132, 148, 178, 236, 148, 161, 187, 5, 0, 0, 0, 0, 110, 121, 140, 64, 140, 157, 189, 255, 127, 142, 171, 254, 131, 144, 169, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 65, 71, 43, 47, 52, 63, 255, 127, 143, 172, 255, 132, 148, 177, 75, 0, 0, 0, 0, 121, 134, 158, 160, 139, 156, 188, 255, 123, 138, 165, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 1, 36, 39, 46, 227, 106, 119, 143, 255, 130, 145, 175, 203, 114, 125, 147, 51, 123, 138, 166, 247, 131, 147, 177, 255, 123, 138, 165, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 41, 47, 143, 68, 77, 93, 255, 128, 144, 174, 255, 126, 141, 170, 252, 129, 145, 174, 255, 123, 138, 166, 255, 127, 141, 167, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 68, 73, 40, 34, 38, 46, 250, 117, 131, 158, 255, 126, 142, 171, 255, 124, 140, 168, 255, 125, 139, 166, 214, 140, 152, 172, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 44, 50, 134, 58, 66, 79, 255, 123, 138, 166, 255, 123, 138, 166, 250, 127, 140, 165, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 1, 46, 50, 55, 83, 82, 89, 102, 123, 106, 116, 136, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(32, 32, imgdata);
+ return image;
+}
+
+static Ihandle* load_image_LogoTecgraf(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 120, 143, 125, 132, 148, 178, 173, 133, 149, 178, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 110, 130, 48, 130, 147, 177, 254, 124, 139, 167, 254, 131, 147, 176, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 128, 153, 134, 142, 159, 191, 194, 47, 52, 61, 110, 114, 128, 154, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 172, 192, 140, 156, 188, 99, 65, 69, 76, 16, 97, 109, 131, 251, 129, 144, 172, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 147, 175, 232, 140, 157, 188, 43, 0, 0, 0, 0, 100, 112, 134, 211, 126, 141, 169, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 78, 88, 26, 48, 52, 57, 60, 135, 150, 178, 254, 108, 121, 145, 83, 105, 118, 142, 76, 106, 119, 143, 201, 118, 133, 159, 122, 117, 129, 152, 25, 168, 176, 190, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 118, 128, 145, 3, 104, 117, 140, 92, 114, 127, 152, 180, 131, 147, 177, 237, 133, 149, 178, 249, 38, 42, 50, 222, 137, 152, 180, 249, 126, 142, 170, 182, 114, 128, 154, 182, 104, 117, 140, 227, 95, 107, 128, 238, 83, 93, 112, 248, 84, 95, 113, 239, 104, 117, 141, 180, 115, 129, 155, 93, 127, 140, 165, 4,
+ 98, 109, 130, 153, 109, 123, 147, 254, 145, 163, 195, 153, 138, 154, 182, 56, 115, 123, 138, 5, 92, 99, 109, 35, 134, 149, 177, 230, 0, 0, 0, 0, 0, 0, 0, 0, 120, 133, 159, 143, 135, 151, 181, 115, 86, 89, 93, 5, 41, 45, 51, 54, 40, 45, 53, 150, 107, 120, 144, 254, 122, 137, 164, 154,
+ 51, 57, 66, 147, 83, 93, 112, 255, 108, 121, 145, 159, 113, 126, 151, 62, 123, 136, 159, 8, 87, 93, 103, 35, 125, 141, 169, 230, 0, 0, 0, 0, 0, 0, 0, 0, 129, 143, 169, 143, 140, 156, 184, 115, 134, 147, 172, 8, 124, 138, 165, 60, 124, 139, 167, 155, 131, 147, 177, 255, 131, 147, 176, 153,
+ 64, 68, 73, 2, 36, 39, 45, 86, 41, 46, 54, 173, 60, 67, 80, 232, 75, 84, 101, 251, 89, 100, 120, 228, 105, 118, 142, 250, 110, 123, 148, 187, 118, 132, 158, 187, 126, 141, 169, 229, 134, 149, 177, 239, 136, 152, 179, 250, 136, 152, 181, 234, 139, 156, 186, 175, 130, 145, 173, 90, 124, 134, 151, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 74, 79, 19, 60, 64, 73, 50, 92, 103, 124, 254, 86, 95, 111, 84, 90, 100, 117, 76, 126, 141, 168, 201, 113, 126, 150, 119, 99, 105, 117, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 105, 125, 231, 135, 151, 181, 46, 0, 0, 0, 0, 137, 154, 184, 212, 123, 137, 164, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 83, 98, 191, 133, 149, 179, 102, 111, 121, 139, 17, 134, 150, 180, 252, 126, 140, 166, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 48, 57, 132, 121, 136, 164, 197, 121, 135, 161, 115, 130, 146, 175, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 47, 52, 46, 87, 98, 118, 254, 126, 142, 170, 254, 124, 139, 166, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 57, 67, 118, 115, 128, 152, 170, 127, 140, 164, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+static unsigned char img_bits1[] =
+{
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1
+,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1
+,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1
+,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1
+,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1
+,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1
+,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1
+,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1
+,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+,2,2,2,0,2,0,2,0,2,2,0,2,2,2,0,0,0,2,2,2,0,0,2,0,2,2,0,0,0,2,2,2
+,2,2,2,0,2,0,0,2,0,0,2,0,2,0,2,2,2,0,2,0,2,2,0,0,2,0,2,2,2,0,2,2
+,2,2,2,0,2,0,2,2,0,2,2,0,2,2,2,2,2,0,2,0,2,2,2,0,2,0,2,2,2,0,2,2
+,2,2,2,0,2,0,2,2,0,2,2,0,2,2,0,0,0,0,2,0,2,2,2,0,2,0,0,0,0,0,2,2
+,2,2,2,0,2,0,2,2,0,2,2,0,2,0,2,2,2,0,2,0,2,2,2,0,2,0,2,2,2,2,2,2
+,2,2,2,0,2,0,2,2,0,2,2,0,2,0,2,2,2,0,2,0,2,2,0,0,2,0,2,2,2,0,2,2
+,2,2,2,0,2,0,2,2,0,2,2,0,2,2,0,0,0,0,2,2,0,0,2,0,2,2,0,0,0,2,2,2
+,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2
+,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,0,2,2,2,2,2,2,2,2
+,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,2,2,2,2,2,2,2,2,2
+,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1
+,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1
+,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1
+,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1
+,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
+,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
+,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
+,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
+};
+
+static unsigned char img_bits2[] =
+{
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2
+,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2
+,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2
+,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2
+,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2
+,2,2,2,2,2,2,2,2,2,2,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2
+,2,2,2,2,2,2,2,2,2,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2
+,2,2,2,2,2,2,2,2,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2
+,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
+,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
+,3,3,3,0,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
+,3,3,3,0,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
+,3,3,3,0,3,0,3,0,3,3,0,3,3,3,1,1,0,3,3,3,0,0,3,0,3,3,0,0,0,3,3,3
+,3,3,3,0,3,0,0,3,0,0,3,0,3,0,1,1,3,0,3,0,3,3,0,0,3,0,3,3,3,0,3,3
+,3,3,3,0,3,0,3,3,0,3,3,0,3,3,1,1,3,0,3,0,3,3,3,0,3,0,3,3,3,0,3,3
+,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
+,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
+,3,3,3,0,3,0,3,3,0,3,3,0,3,0,1,1,3,0,3,0,3,3,0,0,3,0,3,3,3,0,3,3
+,3,3,3,0,3,0,3,3,0,3,3,0,3,3,1,1,0,0,3,3,0,0,3,0,3,3,0,0,0,3,3,3
+,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3
+,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,0,3,3,3,0,3,3,3,3,3,3,3,3
+,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,0,0,0,3,3,3,3,3,3,3,3,3
+,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
+,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
+,2,2,2,2,2,2,2,3,3,3,3,3,3,3,1,1,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2
+,2,2,2,2,2,2,3,3,3,3,3,3,3,3,1,1,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2
+,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2
+,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+};
+
+static int valuechanged_cb(Ihandle *ih)
+{
+ printf("VALUECHANGED_CB(%s)=%s\n", IupGetClassName(ih), IupGetAttribute(ih, "VALUE"));
+ return IUP_DEFAULT;
+}
+
+static int getfocus_cb(Ihandle *ih)
+{
+ printf("GETFOCUS_CB(%s)\n", IupGetClassName(ih));
+ return IUP_DEFAULT;
+}
+
+static int killfocus_cb(Ihandle *ih)
+{
+ printf("KILLFOCUS_CB(%s)\n", IupGetClassName(ih));
+ return IUP_DEFAULT;
+}
+
+static int leavewindow_cb(Ihandle *ih)
+{
+ printf("LEAVEWINDOW_CB(%s)\n", IupGetClassName(ih));
+ return IUP_DEFAULT;
+}
+
+static int enterwindow_cb(Ihandle *ih)
+{
+ printf("ENTERWINDOW_CB(%s)\n", IupGetClassName(ih));
+ return IUP_DEFAULT;
+}
+
+char *iupKeyCodeToName(int code);
+
+static int k_any(Ihandle *ih, int c)
+{
+ if (iup_isprint(c))
+ printf("K_ANY(%s, %d = %s \'%c\')\n", IupGetClassName(ih), c, iupKeyCodeToName(c), (char)c);
+ else
+ printf("K_ANY(%s, %d = %s)\n", IupGetClassName(ih), c, iupKeyCodeToName(c));
+ return IUP_CONTINUE;
+}
+
+static int help_cb(Ihandle* ih)
+{
+ printf("HELP_CB(%s)\n", IupGetClassName(ih));
+ return IUP_DEFAULT;
+}
+
+static Ihandle* set_callbacks(Ihandle* ih)
+{
+ IupSetCallback(ih, "VALUECHANGED_CB", (Icallback)valuechanged_cb);
+
+// IupSetCallback(ih, "GETFOCUS_CB", (Icallback)getfocus_cb);
+// IupSetCallback(ih, "KILLFOCUS_CB", (Icallback)killfocus_cb);
+
+// IupSetCallback(ih, "ENTERWINDOW_CB", (Icallback)enterwindow_cb);
+// IupSetCallback(ih, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb);
+
+// IupSetCallback(ih, "K_ANY", (Icallback)k_any);
+// IupSetCallback(ih, "HELP_CB", (Icallback)help_cb);
+
+ return ih;
+}
+
+void SampleTest(void)
+{
+ Ihandle *mnu, *_hbox_1, *_cnv_1, *_vbox_1, *dlg, *img,
+ *_frm_1, *_frm_2, *_frm_3, *_frm_4, *_frm_5, *pbar, *val, *tabs,
+ *_list_1, *_list_2, *_list_3, *_text_1, *_ml_1, *tree;
+
+ //img = IupImage(32,32, img_bits1);
+ //IupSetHandle ("img1", img);
+ //IupSetAttribute (img, "0", "0 0 0");
+ //IupSetAttribute (img, "1", "BGCOLOR");
+ //IupSetAttribute (img, "2", "255 0 0");
+
+ img = load_image_Tecgraf();
+ IupSetHandle ("img1", img);
+
+ img = IupImage(32,32, img_bits2);
+ IupSetHandle ("img2", img);
+ IupSetAttribute (img, "0", "0 0 0");
+ IupSetAttribute (img, "1", "0 255 0");
+ IupSetAttribute (img, "2", "BGCOLOR");
+ IupSetAttribute (img, "3", "255 0 0");
+
+ mnu = IupMenu(
+ IupSubmenu("IupSubmenu 1", IupMenu(
+ IupSetAttributes(IupItem("IupItem 1 Checked", NULL), "VALUE=ON"),
+ IupSeparator(),
+ IupSetAttributes(IupItem("IupItem 2 Disabled", NULL), "ACTIVE=NO"),
+ NULL)),
+ IupItem("IupItem 3", NULL),
+ IupItem("IupItem 4", NULL),
+ NULL);
+ IupSetHandle("mnu",mnu);
+
+ _frm_1 = IupFrame(
+ IupVbox(
+ set_callbacks(IupSetAttributes(IupButton("Button Text", NULL), "PADDING=5x5")),
+ set_callbacks(IupSetAttributes(IupButton("Text", NULL), "IMAGE=img1, PADDING=5x5")),
+ set_callbacks(IupSetAttributes(IupButton(NULL, NULL), "IMAGE=img1")),
+ set_callbacks(IupSetAttributes(IupButton("", NULL), "IMAGE=img1,IMPRESS=img2")),
+ NULL));
+ IupSetAttribute(_frm_1,"TITLE","IupButton");
+
+ _frm_2 = IupFrame(
+ IupVbox(
+ IupLabel("Label Text"),
+ IupSetAttributes(IupLabel(NULL), "SEPARATOR=HORIZONTAL, MAXSIZE=150, NAME=SAMP_SEP"),
+ IupSetAttributes(IupLabel(NULL), "IMAGE=img1"),
+ NULL));
+ IupSetAttribute(_frm_2,"TITLE","IupLabel");
+
+ _frm_3 = IupFrame(
+ IupVbox(
+ set_callbacks(IupSetAttributes(IupToggle("Toggle Text", NULL), "VALUE=ON")),
+ set_callbacks(IupSetAttributes(IupToggle(NULL, NULL), "VALUE=ON,IMAGE=img1,IMPRESS=img2")),
+ set_callbacks(IupSetAttributes(IupToggle(NULL, NULL), "VALUE=ON,IMAGE=img1")),
+ IupSetAttributes(IupFrame(IupRadio(IupVbox(
+ set_callbacks(IupToggle("Toggle Text", NULL)),
+ set_callbacks(IupToggle("Toggle Text", NULL)),
+ NULL))), "TITLE=IupRadio"),
+ NULL));
+ IupSetAttribute(_frm_3,"TITLE","IupToggle");
+
+ _text_1 = IupText( NULL);
+ IupSetAttribute(_text_1,"VALUE","Single Line Text");
+ IupSetAttribute(_text_1,"SIZE","80x");
+
+ _ml_1 = IupMultiLine( NULL);
+ IupSetAttribute(_ml_1,"VALUE","Multiline Text\nSecond Line\nThird Line");
+ IupSetAttribute(_ml_1,"EXPAND","YES");
+ IupSetAttribute(_ml_1,"SIZE","80x40");
+
+ _frm_4 = IupFrame(IupVbox(
+ set_callbacks(_text_1),
+ set_callbacks(_ml_1),
+ NULL));
+ IupSetAttribute(_frm_4,"TITLE","IupText");
+
+ _list_1 = IupList( NULL);
+// IupSetAttribute(_list_1,"EXPAND","YES");
+ IupSetAttribute(_list_1,"VALUE","1");
+ IupSetAttribute(_list_1,"1","Item 1 Text");
+ IupSetAttribute(_list_1,"2","Item 2 Text");
+ IupSetAttribute(_list_1,"3","Item 3 Text");
+
+ _list_2 = IupList( NULL);
+ IupSetAttribute(_list_2,"DROPDOWN","YES");
+// IupSetAttribute(_list_2,"EXPAND","YES");
+ IupSetAttribute(_list_2,"VALUE","2");
+ IupSetAttribute(_list_2,"1","Item 1 Text");
+ IupSetAttribute(_list_2,"2","Item 2 Text");
+ IupSetAttribute(_list_2,"3","Item 3 Text");
+
+ _list_3 = IupList( NULL);
+ IupSetAttribute(_list_3,"EDITBOX","YES");
+// IupSetAttribute(_list_3,"EXPAND","YES");
+ IupSetAttribute(_list_3,"VALUE","3");
+ IupSetAttribute(_list_3,"1","Item 1 Text");
+ IupSetAttribute(_list_3,"2","Item 2 Text");
+ IupSetAttribute(_list_3,"3","Item 3 Text");
+
+ _frm_5 = IupFrame(IupVbox(
+ set_callbacks(_list_1),
+ set_callbacks(_list_2),
+ set_callbacks(_list_3),
+ NULL));
+ IupSetAttribute(_frm_5,"TITLE","IupList");
+
+ _hbox_1 = IupHbox(
+ _frm_1,
+ _frm_2,
+ _frm_3,
+ _frm_4,
+ _frm_5,
+ NULL);
+
+ val = IupVal(NULL);
+ set_callbacks(val);
+
+ pbar = IupProgressBar();
+ IupSetAttribute(pbar, "VALUE", "0.5");
+ set_callbacks(pbar);
+
+ tabs = IupTabs(IupVbox(NULL), IupVbox(NULL), IupVbox(NULL), NULL);
+ IupSetAttribute(tabs,"TABTITLE0","Tab Title 0");
+ IupSetAttribute(tabs,"TABTITLE1","Tab Title 1");
+ IupSetAttributeHandle(tabs,"TABIMAGE1", load_image_LogoTecgraf());
+ IupSetAttribute(tabs,"TABTITLE2","Tab Title 2");
+ IupSetAttribute(tabs,"RASTERSIZE","300x50");
+// IupSetAttribute(tabs,"PADDING","5x5");
+ set_callbacks(tabs);
+
+ tree = IupTree();
+ IupSetAttribute(tree, "SHOWRENAME", "YES");
+ IupSetAttribute(tree,"RASTERSIZE","100x150");
+ set_callbacks(tree);
+
+ _cnv_1 = IupCanvas(NULL);
+ IupSetAttribute(_cnv_1,"BGCOLOR","128 255 0");
+ IupSetAttribute(_cnv_1,"SCROLLBAR","YES");
+ IupSetAttribute(_cnv_1,"EXPAND","HORIZONTAL");
+ IupSetAttribute(_cnv_1,"RASTERSIZE","x100");
+// IupSetAttribute(_cnv_1,"CANFOCUS","NO");
+ set_callbacks(_cnv_1);
+
+ _vbox_1 = IupVbox(
+ _hbox_1,
+ IupHbox(IupSetAttributes(IupFrame(IupHbox(val, NULL)), "TITLE=IupVal"),
+ IupSetAttributes(IupFrame(IupHbox(pbar, NULL)), "TITLE=IupProgressBar"),
+ IupSetAttributes(IupFrame(IupHbox(tabs, NULL)), "TITLE=IupTabs"),
+ NULL),
+ IupHbox(IupSetAttributes(IupFrame(IupHbox(_cnv_1, NULL)), "TITLE=IupCanvas"),
+ IupSetAttributes(IupFrame(IupHbox(tree, NULL)), "TITLE=IupTree"),
+ NULL),
+ NULL);
+ IupSetAttribute(_vbox_1,"MARGIN","5x5");
+ IupSetAttribute(_vbox_1,"GAP","5");
+
+ dlg = IupDialog(_vbox_1);
+ IupSetHandle("dlg",dlg);
+ IupSetAttribute(dlg,"MENU","mnu");
+ IupSetAttribute(dlg,"TITLE","IupDialog Title");
+// IupSetAttribute(dlg,"COMPOSITED","YES"); /* Windows Only */
+// IupSetAttribute(dlg, "OPACITY", "192");
+
+// IupSetAttribute(dlg, "BGCOLOR", "173 177 194"); // Motif BGCOLOR for documentation
+// IupSetAttribute(_vbox_1, "BGCOLOR", "92 92 255");
+// IupSetAttribute(dlg, "BGCOLOR", "92 92 255");
+// IupSetAttribute(dlg, "BACKGROUND", "200 10 80");
+
+ //IupSetGlobal("DLGBGCOLOR", "92 92 255");
+ //IupSetGlobal("TXTFGCOLOR", "255 92 92");
+ //IupSetGlobal("TXTBGCOLOR", "92 92 255");
+
+// IupSetAttribute(dlg, "FONT", "Helvetica, 24");
+// IupSetAttribute(dlg, "FONT", "-*-helvetica-*-r-*-*-18-*-*-*-*-*-*-*");
+
+// IupSetAttribute(box, "FGCOLOR", "255 0 0");
+
+ IupMap(dlg);
+
+ IupSetAttribute(tree, "TITLE0", "Figures");
+ IupSetAttribute(tree, "ADDLEAF0", "Other"); /* new id=1 */
+ IupSetAttribute(tree, "ADDBRANCH1", "triangle"); /* new id=2 */
+ IupSetAttribute(tree, "ADDLEAF2", "equilateral"); /* ... */
+ IupSetAttribute(tree, "ADDLEAF3", "isoceles");
+ IupSetAttribute(tree, "ADDLEAF4", "scalenus");
+
+ IupShow(dlg);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ SampleTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/sbox.c b/iup/test/sbox.c
new file mode 100755
index 0000000..13b5582
--- /dev/null
+++ b/iup/test/sbox.c
@@ -0,0 +1,46 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+
+void SboxTest(void)
+{
+ Ihandle *dlg, *bt, *box, *lbl, *ml, *vbox;
+
+ bt = IupButton("Button", NULL);
+ //IupSetAttribute(bt, "EXPAND", "VERTICAL"); /* This is the only necessary EXPAND */
+ IupSetAttribute(bt, "EXPAND", "YES");
+
+ box = IupSbox(bt);
+ IupSetAttribute(box, "DIRECTION", "SOUTH"); /* place at the bottom of the button */
+// IupSetAttribute(box, "COLOR", "0 255 0");
+
+ ml = IupMultiLine(NULL);
+ IupSetAttribute(ml, "EXPAND", "YES");
+ IupSetAttribute(ml, "VISIBLELINES", "5");
+ vbox = IupVbox(box, ml, NULL);
+
+ lbl = IupLabel("Label");
+ IupSetAttribute(lbl, "EXPAND", "VERTICAL");
+
+ dlg = IupDialog(IupHbox(vbox, lbl, NULL));
+ IupSetAttribute(dlg, "TITLE", "IupSbox Example");
+ IupSetAttribute(dlg, "MARGIN", "10x10");
+ IupSetAttribute(dlg, "GAP", "10");
+
+ IupShow(dlg);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ SboxTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/scanf.c b/iup/test/scanf.c
new file mode 100755
index 0000000..2ea7663
--- /dev/null
+++ b/iup/test/scanf.c
@@ -0,0 +1,39 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+
+void ScanfTest(void)
+{
+ int ret;
+ int integer = 12;
+ float real = 1e-3f;
+ char text[300]="This is a vector of characters";
+ char *fmt =
+ {
+ "IupScanf Example\n"
+ "Text: %300.5%s\n"
+ "Real: %20.10%g\n"
+ "Integer: %20.10%d\n"
+ };
+
+// IupSetLanguage("ENGLISH");
+
+ ret = IupScanf(fmt, text, &real, &integer);
+ if (ret == -1)
+ IupMessage("IupScanf","Operation canceled");
+ else
+ IupMessagef("IupScanf","Text: %s\nReal: %f\nInteger: %d\nFields read successfully: %d",text,real,integer,ret);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ ScanfTest();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/spin.c b/iup/test/spin.c
new file mode 100755
index 0000000..63a3bbc
--- /dev/null
+++ b/iup/test/spin.c
@@ -0,0 +1,43 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "iup.h"
+
+
+static int spin_cb(Ihandle* ih, int inc)
+{
+ (void)ih;
+ /* does nothing, just print the call */
+ printf("SPIN_CB(%d)\n", inc);
+ return IUP_DEFAULT;
+}
+
+void SpinTest(void)
+{
+ Ihandle *dlg, *spinbox;
+
+ spinbox = IupSpinbox(IupSetAttributes(IupText(NULL), "SIZE=50x"));
+
+ IupSetCallback(spinbox, "SPIN_CB", (Icallback)spin_cb);
+
+ dlg = IupDialog(IupVbox(spinbox, NULL));
+ IupSetAttribute(dlg, "MARGIN", "10x10");
+
+ IupSetAttribute(dlg, "TITLE", "IupSpin Test");
+ IupShow(dlg);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ SpinTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/sysinfo.c b/iup/test/sysinfo.c
new file mode 100755
index 0000000..2f0d9c0
--- /dev/null
+++ b/iup/test/sysinfo.c
@@ -0,0 +1,60 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+
+void SysInfoTest(void)
+{
+ char* sysver;
+ int motif = 0;
+
+ printf("IUP System Info:\n");
+ printf(" Version: %s\n", IupVersion());
+ printf(" Copyright: %s\n", IUP_COPYRIGHT);
+ printf(" Driver: %s\n", IupGetGlobal("DRIVER"));
+ printf(" System: %s\n", IupGetGlobal("SYSTEM"));
+ printf(" System Version: %s\n\n", IupGetGlobal("SYSTEMVERSION"));
+ printf(" System Language: %s\n\n", IupGetGlobal("SYSTEMLANGUAGE"));
+
+ sysver = IupGetGlobal("MOTIFVERSION");
+ if (sysver)
+ {
+ printf(" Motif Version: %s\n", sysver);
+ printf(" Motif Number: %s\n", IupGetGlobal("MOTIFNUMBER"));
+ printf(" X Server Vendor: %s\n", IupGetGlobal("XSERVERVENDOR"));
+ printf(" X Vendor Release: %s\n\n", IupGetGlobal("XVENDORRELEASE"));
+ motif = 1;
+ }
+
+ sysver = IupGetGlobal("GTKVERSION");
+ if (sysver)
+ printf(" GTK Version: %s\n", sysver);
+
+ printf(" Screen Depth: %s\n", IupGetGlobal("SCREENDEPTH"));
+ printf(" Screen Size: %s\n", IupGetGlobal("SCREENSIZE"));
+ printf(" Full Screen Size: %s\n", IupGetGlobal("FULLSIZE"));
+ printf(" True Color Canvas: %s\n\n", IupGetGlobal("TRUECOLORCANVAS"));
+
+ if (!motif)
+ {
+ printf(" Virtual Screen: %s\n", IupGetGlobal("VIRTUALSCREEN"));
+ printf(" Monitors Info: %s\n", IupGetGlobal("MONITORSINFO"));
+ }
+
+ printf(" Computer Name: %s\n", IupGetGlobal("COMPUTERNAME"));
+ printf(" User Name: %s\n", IupGetGlobal("USERNAME"));
+ printf(" Default Font: %s\n", IupGetGlobal("DEFAULTFONT"));
+}
+
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ SysInfoTest();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/tabs.c b/iup/test/tabs.c
new file mode 100755
index 0000000..a069f01
--- /dev/null
+++ b/iup/test/tabs.c
@@ -0,0 +1,403 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupkey.h"
+
+static Ihandle* load_image_LogoTecgraf(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 120, 143, 125, 132, 148, 178, 173, 133, 149, 178, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 110, 130, 48, 130, 147, 177, 254, 124, 139, 167, 254, 131, 147, 176, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 128, 153, 134, 142, 159, 191, 194, 47, 52, 61, 110, 114, 128, 154, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 172, 192, 140, 156, 188, 99, 65, 69, 76, 16, 97, 109, 131, 251, 129, 144, 172, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 147, 175, 232, 140, 157, 188, 43, 0, 0, 0, 0, 100, 112, 134, 211, 126, 141, 169, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 78, 88, 26, 48, 52, 57, 60, 135, 150, 178, 254, 108, 121, 145, 83, 105, 118, 142, 76, 106, 119, 143, 201, 118, 133, 159, 122, 117, 129, 152, 25, 168, 176, 190, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 118, 128, 145, 3, 104, 117, 140, 92, 114, 127, 152, 180, 131, 147, 177, 237, 133, 149, 178, 249, 38, 42, 50, 222, 137, 152, 180, 249, 126, 142, 170, 182, 114, 128, 154, 182, 104, 117, 140, 227, 95, 107, 128, 238, 83, 93, 112, 248, 84, 95, 113, 239, 104, 117, 141, 180, 115, 129, 155, 93, 127, 140, 165, 4,
+ 98, 109, 130, 153, 109, 123, 147, 254, 145, 163, 195, 153, 138, 154, 182, 56, 115, 123, 138, 5, 92, 99, 109, 35, 134, 149, 177, 230, 0, 0, 0, 0, 0, 0, 0, 0, 120, 133, 159, 143, 135, 151, 181, 115, 86, 89, 93, 5, 41, 45, 51, 54, 40, 45, 53, 150, 107, 120, 144, 254, 122, 137, 164, 154,
+ 51, 57, 66, 147, 83, 93, 112, 255, 108, 121, 145, 159, 113, 126, 151, 62, 123, 136, 159, 8, 87, 93, 103, 35, 125, 141, 169, 230, 0, 0, 0, 0, 0, 0, 0, 0, 129, 143, 169, 143, 140, 156, 184, 115, 134, 147, 172, 8, 124, 138, 165, 60, 124, 139, 167, 155, 131, 147, 177, 255, 131, 147, 176, 153,
+ 64, 68, 73, 2, 36, 39, 45, 86, 41, 46, 54, 173, 60, 67, 80, 232, 75, 84, 101, 251, 89, 100, 120, 228, 105, 118, 142, 250, 110, 123, 148, 187, 118, 132, 158, 187, 126, 141, 169, 229, 134, 149, 177, 239, 136, 152, 179, 250, 136, 152, 181, 234, 139, 156, 186, 175, 130, 145, 173, 90, 124, 134, 151, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 74, 79, 19, 60, 64, 73, 50, 92, 103, 124, 254, 86, 95, 111, 84, 90, 100, 117, 76, 126, 141, 168, 201, 113, 126, 150, 119, 99, 105, 117, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 105, 125, 231, 135, 151, 181, 46, 0, 0, 0, 0, 137, 154, 184, 212, 123, 137, 164, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 83, 98, 191, 133, 149, 179, 102, 111, 121, 139, 17, 134, 150, 180, 252, 126, 140, 166, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 48, 57, 132, 121, 136, 164, 197, 121, 135, 161, 115, 130, 146, 175, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 47, 52, 46, 87, 98, 118, 254, 126, 142, 170, 254, 124, 139, 166, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 57, 67, 118, 115, 128, 152, 170, 127, 140, 164, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+#define TEST_IMAGE_SIZE 16
+
+static Ihandle* load_image_TestImage(void)
+{
+ unsigned char image_data_8 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] =
+ {
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5,
+ 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ };
+
+ Ihandle* image = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8);
+ IupSetAttribute(image, "0", "BGCOLOR");
+ IupSetAttribute(image, "1", "255 0 0");
+ IupSetAttribute(image, "2", "0 255 0");
+ IupSetAttribute(image, "3", "0 0 255");
+ IupSetAttribute(image, "4", "255 255 255");
+ IupSetAttribute(image, "5", "0 0 0");
+
+ return image;
+}
+
+static int cbChildButton(Ihandle* ih)
+{
+ printf("button(%s)\n", IupGetAttribute(ih, "TITLE"));
+ return IUP_DEFAULT;
+}
+
+static int cbValuePos(Ihandle* ih)
+{
+ Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS");
+ IupSetAttribute(tabs, "VALUEPOS", "0");
+// printf("VALUE=%s\n", IupGetAttribute(tabs, "VALUE"));
+ return IUP_DEFAULT;
+}
+
+static int cbType(Ihandle* ih, int v)
+{
+ if (v)
+ {
+ char* title = IupGetAttribute(ih, "TITLE");
+ Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS");
+
+ switch(*title)
+ {
+ case 'L':
+ IupSetAttribute(tabs, "TABTYPE", "LEFT");
+ break;
+ case 'R':
+ IupSetAttribute(tabs, "TABTYPE", "RIGHT");
+ break;
+ case 'T':
+ IupSetAttribute(tabs, "TABTYPE", "TOP");
+ break;
+ case 'B':
+ IupSetAttribute(tabs, "TABTYPE", "BOTTOM");
+ break;
+ }
+
+ IupSetAttribute(tabs, "UPDATE", NULL);
+ IupRefresh(tabs); /* update children layout */
+ }
+ return IUP_DEFAULT;
+}
+
+static int cbOrientation(Ihandle* ih, int v)
+{
+ if (v)
+ {
+ char* title = IupGetAttribute(ih, "TITLE");
+ Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS");
+
+ switch(*title)
+ {
+ case 'H':
+ IupSetAttribute(tabs, "TABORIENTATION", "HORIZONTAL");
+ break;
+ case 'V':
+ IupSetAttribute(tabs, "TABORIENTATION", "VERTICAL");
+ break;
+ }
+
+ IupSetAttribute(tabs, "UPDATE", NULL);
+ IupRefresh(tabs); /* update children layout */
+ }
+ return IUP_DEFAULT;
+}
+
+static int cbAddTab(Ihandle* ih)
+{
+ Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS");
+ Ihandle *vbox;
+
+ vbox = IupFrame(IupVbox(IupLabel("Label XXX"), IupButton("Button XXX", "cbChildButton"), NULL));
+ IupSetAttribute(vbox, "TABTITLE", "XXX");
+ IupSetAttribute(vbox, "TITLE", "TABS XXX");
+
+ IupAppend(tabs, vbox);
+ IupMap(vbox);
+
+ IupSetAttribute(tabs, "UPDATE", NULL);
+ IupRefresh(tabs); /* update children layout */
+
+ return IUP_DEFAULT;
+}
+
+static int cbInsertTab(Ihandle* ih)
+{
+ Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS");
+ Ihandle* ref_vbox = IupGetHandle(IupGetAttribute(tabs, "VALUE"));
+ Ihandle *vbox;
+
+ vbox = IupFrame(IupVbox(IupLabel("Label YYY"), IupButton("Button YYY", "cbChildButton"), NULL));
+ IupSetAttribute(vbox, "TABTITLE", "YYY");
+ IupSetAttribute(vbox, "TITLE", "TABS YYY");
+
+ IupInsert(tabs, ref_vbox, vbox);
+ IupMap(vbox);
+
+ IupSetAttribute(tabs, "UPDATE", NULL);
+ IupRefresh(tabs); /* update children layout */
+
+ return IUP_DEFAULT;
+}
+
+static int cbRemoveTab(Ihandle* ih)
+{
+ Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS");
+ Ihandle* vbox = IupGetHandle(IupGetAttribute(tabs, "VALUE"));
+
+ IupDestroy(vbox);
+
+ IupSetAttribute(tabs, "UPDATE", NULL);
+ IupRefresh(tabs); /* update children layout */
+
+ return IUP_DEFAULT;
+}
+
+static int cbTabChange(Ihandle* ih, Ihandle* new_tab, Ihandle* old_tab)
+{
+ printf("new Tab: %s, old Tab: %s\n", IupGetAttribute(new_tab, "TABTITLE"), IupGetAttribute(old_tab, "TABTITLE"));
+ return IUP_DEFAULT;
+}
+
+static int cbInactive(Ihandle *ih, int state)
+{
+ Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS");
+ IupSetAttribute(tabs, "ACTIVE", state? "NO": "YES");
+ IupSetAttribute(tabs, "UPDATE", NULL);
+ return IUP_DEFAULT;
+}
+
+char *iupKeyCodeToName(int code);
+
+static int k_any(Ihandle *ih, int c)
+{
+ if (iup_isprint(c))
+ printf("K_ANY(%d = %s \'%c\')\n", c, iupKeyCodeToName(c), (char)c);
+ else
+ printf("K_ANY(%d = %s)\n", c, iupKeyCodeToName(c));
+ printf(" MODKEYSTATE(%s)\n", IupGetGlobal("MODKEYSTATE"));
+ return IUP_DEFAULT;
+}
+
+static int getfocus_cb(Ihandle *ih)
+{
+ printf("GETFOCUS_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int help_cb(Ihandle* ih)
+{
+ printf("HELP_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int killfocus_cb(Ihandle *ih)
+{
+ printf("KILLFOCUS_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int leavewindow_cb(Ihandle *ih)
+{
+ printf("LEAVEWINDOW_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int enterwindow_cb(Ihandle *ih)
+{
+ printf("ENTERWINDOW_CB()\n");
+ return IUP_DEFAULT;
+}
+
+//#define IupFrame(_x) (_x)
+
+static Ihandle* CreateTabs(int tab)
+{
+ Ihandle *vboxA, *vboxB, *vboxG,
+ *vboxC, *vboxD,*vboxE, *vboxF, *vboxH, *vboxI,
+ *tabs;
+
+// if (tab) // to test Tabs inside Tabs
+ // vboxA = IupVbox(CreateTabs(0), NULL);
+// else
+ vboxA = IupFrame(IupVbox(IupFill(), IupLabel("Label AAA"), IupButton("Button AAA", "cbChildButton"), //NULL));
+ IupText(NULL), IupToggle("Button TTTT", "cbChildButton"),
+ IupVal(NULL), IupSetAttributes(IupProgressBar(), "VALUE=0.5"), NULL));
+ vboxB = IupFrame(IupVbox(IupLabel("Label BBB"), IupButton("Button BBB", "cbChildButton"), NULL));
+ vboxC = IupFrame(IupVbox(IupLabel("Label CCC"), IupButton("Button CCC", "cbChildButton"), NULL));
+ vboxD = IupFrame(IupVbox(IupLabel("Label DDD"), IupButton("Button DDD", "cbChildButton"), NULL));
+ vboxE = IupVbox(IupFill(), IupLabel("Label EEE"), IupButton("Button EEE", "cbChildButton"),
+ IupButton("Button EEE", "cbChildButton"), IupButton("Button EEE", "cbChildButton"), NULL);
+ vboxF = IupVbox(IupLabel("Label FFF"), IupButton("Button FFF", "cbChildButton"), NULL);
+ vboxG = IupVbox(IupLabel("Label GGG"), IupButton("Button GGG", "cbChildButton"), NULL);
+ vboxH = IupVbox(IupLabel("Label HHH"), IupButton("Button HHH", "cbChildButton"), NULL);
+ vboxI = IupVbox(IupLabel("Canvas"), IupCanvas(NULL), NULL);
+
+ IupSetAttribute(vboxA, "TABTITLE", "A");
+ IupSetAttributeHandle(vboxA, "TABIMAGE", load_image_LogoTecgraf());
+ IupSetAttribute(vboxB, "TABTITLE", "BB");
+// IupSetAttribute(vboxC, "TABTITLE", "CCC");
+ IupStoreAttribute(vboxC, "TABIMAGE", IupGetAttribute(vboxA, "TABIMAGE"));
+ IupSetAttribute(vboxD, "TABTITLE", "DDDD");
+ IupSetAttribute(vboxE, "TABTITLE", "EEEEE");
+ IupSetAttribute(vboxF, "TABTITLE", "FFFFFF");
+ IupSetAttribute(vboxG, "TABTITLE", "GGGGGGG");
+ IupSetAttribute(vboxH, "TABTITLE", "HHHHHHHH");
+ IupSetAttribute(vboxI, "TABTITLE", "Canvas");
+ IupSetAttribute(vboxA, "TITLE", "TABS A");
+ IupSetAttribute(vboxB, "TITLE", "TABS BB");
+ IupSetAttribute(vboxC, "TITLE", "TABS CCC");
+ IupSetAttribute(vboxC, "ACTIVE", "NO");
+ IupSetAttribute(vboxF, "TABSIZE", "100");
+ IupSetAttribute(vboxI, "BGCOLOR", "32 192 32");
+
+ tabs = IupTabs(vboxA, vboxB, vboxC, vboxD, vboxE, vboxF, vboxG, vboxH, vboxI, NULL);
+
+ IupSetCallback(tabs, "TABCHANGE_CB", (Icallback)cbTabChange);
+
+ //IupSetAttributeHandle(tabs, "TABIMAGE1", load_image_LogoTecgraf());
+ IupSetAttributeHandle(tabs, "TABIMAGE1", load_image_TestImage());
+
+
+ // In Windows, must be set before map
+// IupSetAttribute(tabs, "TABTYPE", "LEFT");
+// IupSetAttribute(tabs, "TABTYPE", "RIGHT");
+// IupSetAttribute(tabs, "TABTYPE", "BOTTOM");
+// IupSetAttribute(tabs, "TABORIENTATION", "VERTICAL");
+// IupSetAttribute(tabs, "MULTILINE", "YES");
+
+ IupSetAttribute(tabs, "MARGIN", "0x0"); /* for children */
+// IupSetAttribute(tabs, "EXPAND", "YES");
+ IupSetAttribute(tabs, "RASTERSIZE", "300x200"); /* initial size */
+// IupSetAttribute(tabs, "ALIGNMENT", "NW");
+// IupSetAttribute(tabs, "ALIGNMENT", "NORTH");
+// IupSetAttribute(tabs, "ALIGNMENT", "WEST");
+// IupSetAttribute(tabs, "ALIGNMENT", "EAST");
+// IupSetAttribute(tabs, "ALIGNMENT", "SOUTH");
+// IupSetAttribute(tabs, "ALIGNMENT", "SE");
+
+// IupSetAttribute(tabs, "BACKGROUND", "10 150 200");
+// IupSetAttribute(tabs, "BGCOLOR", "92 92 255");
+// IupSetAttribute(tabs, "FGCOLOR", "250 0 0");
+// IupSetAttribute(tabs, "FONT", "Helvetica, Italic 16");
+
+ IupSetAttribute(tabs, "TIP", "IupTabs Tip");
+// IupSetAttribute(tabs, "TIPFONT", "SYSTEM");
+// IupSetAttribute(tabs, "TIPBGCOLOR", "255 128 128");
+// IupSetAttribute(tabs, "TIPFGCOLOR", "0 92 255");
+
+ // Windows Only
+ //IupSetAttribute(tabs, "TIPBALLON", "YES");
+ //IupSetAttribute(tabs, "TIPBALLONTITLE", "Tip Title");
+ //IupSetAttribute(tabs, "TIPBALLONTITLEICON", "2");
+ //IupSetAttribute(tabs, "TIPDELAY", "5000");
+
+ //IupSetCallback(tabs, "K_ANY", (Icallback)k_any);
+ //IupSetCallback(tabs, "HELP_CB", (Icallback)help_cb);
+
+ //IupSetCallback(tabs, "GETFOCUS_CB", (Icallback)getfocus_cb);
+ //IupSetCallback(tabs, "KILLFOCUS_CB", (Icallback)killfocus_cb);
+ //IupSetCallback(tabs, "ENTERWINDOW_CB", (Icallback)enterwindow_cb);
+ //IupSetCallback(tabs, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb);
+
+ return tabs;
+}
+
+void TabsTest(void)
+{
+ Ihandle *box, *frm1, *frm2, *dlg, *tabs;
+
+ tabs = CreateTabs(1);
+
+ box = IupHbox(tabs,
+ frm1 = IupFrame(IupRadio(IupVbox(IupToggle("TOP", "cbType"),
+ IupToggle("LEFT", "cbType"),
+ IupToggle("BOTTOM", "cbType"),
+ IupToggle("RIGHT", "cbType"),
+ NULL))),
+ frm2 = IupFrame(IupRadio(IupVbox(IupToggle("HORIZONTAL", "cbOrientation"),
+ IupToggle("VERTICAL", "cbOrientation"),
+ NULL))),
+ IupVbox(IupSetAttributes(IupButton("Add Tab", "cbAddTab"), "TIP=\"Button Tip\""),
+ IupButton("Insert Tab", "cbInsertTab"),
+ IupButton("Remove Tab", "cbRemoveTab"),
+ IupToggle("Inactive", "cbInactive"),
+ IupButton("VALUEPOS=0", "cbValuePos"),
+ NULL),
+ NULL);
+
+ IupSetAttribute(frm1, "MARGIN", "5x5");
+ IupSetAttribute(frm2, "MARGIN", "5x5");
+ IupSetAttribute(frm1, "GAP", "0");
+ IupSetAttribute(frm2, "GAP", "0");
+ IupSetAttribute(frm1, "TITLE", "Type");
+ IupSetAttribute(frm2, "TITLE", "Orientation");
+
+ IupSetAttribute(box, "MARGIN", "10x10");
+ IupSetAttribute(box, "GAP", "10");
+ dlg = IupDialog(box);
+
+ IupSetAttribute(dlg, "TITLE", "IupTabs Test");
+ IupSetAttribute(dlg, "APP_TABS", (char*)tabs);
+// IupSetAttribute(box, "BGCOLOR", "92 92 255");
+// IupSetAttribute(dlg, "BGCOLOR", "92 92 255");
+// IupSetAttribute(dlg, "BACKGROUND", "200 10 80");
+// IupSetAttributeHandle(dlg, "BACKGROUND", load_image_LogoTecgraf());
+// IupSetAttribute(dlg, "FGCOLOR", "10 200 80");
+// IupSetAttribute(dlg, "BGCOLOR", "173 177 194"); // Motif BGCOLOR for documentation
+// IupSetAttribute(dlg,"COMPOSITED","NO");
+
+ IupMap(dlg);
+ IupSetAttribute(dlg, "SIZE", NULL);
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+
+ IupSetFunction("cbOrientation", (Icallback)cbOrientation);
+ IupSetFunction("cbType", (Icallback)cbType);
+ IupSetFunction("cbAddTab", (Icallback)cbAddTab);
+ IupSetFunction("cbInsertTab", (Icallback)cbInsertTab);
+ IupSetFunction("cbRemoveTab", (Icallback)cbRemoveTab);
+ IupSetFunction("cbInactive", (Icallback)cbInactive);
+ IupSetFunction("cbChildButton", (Icallback)cbChildButton);
+ IupSetFunction("cbValuePos", (Icallback)cbValuePos);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ TabsTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/tecgraf.bmp b/iup/test/tecgraf.bmp
new file mode 100755
index 0000000..e6dcbdd
--- /dev/null
+++ b/iup/test/tecgraf.bmp
Binary files differ
diff --git a/iup/test/text.c b/iup/test/text.c
new file mode 100755
index 0000000..f1c29a2
--- /dev/null
+++ b/iup/test/text.c
@@ -0,0 +1,433 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <iup.h>
+#include <iupkey.h>
+
+static void text2multiline (Ihandle* ih, char* attribute)
+{
+ Ihandle *mltline = IupGetDialogChild(ih, "mltline");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetAttribute (mltline, attribute, IupGetAttribute (text, "VALUE"));
+}
+
+static void multiline2text (Ihandle* ih, char* attribute)
+{
+ Ihandle *mltline = IupGetDialogChild(ih, "mltline");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetAttribute (text, "VALUE", IupGetAttribute(mltline, attribute));
+}
+
+static int btn_append_cb (Ihandle* ih)
+{
+ text2multiline(ih, "APPEND");
+ return IUP_DEFAULT;
+}
+
+static int btn_insert_cb (Ihandle* ih)
+{
+ text2multiline(ih, "INSERT");
+ return IUP_DEFAULT;
+}
+
+static int btn_clip_cb (Ihandle* ih)
+{
+ text2multiline(ih, "CLIPBOARD");
+ return IUP_DEFAULT;
+}
+
+int iupKeyNameToCode(const char *name);
+
+static int btn_key_cb (Ihandle* ih)
+{
+ Ihandle *mltline = IupGetDialogChild(ih, "mltline");
+ Ihandle *text = IupGetDialogChild(ih, "text");
+ IupSetFocus(mltline);
+ IupFlush();
+ IupSetfAttribute(NULL, "KEY", "%d", iupKeyNameToCode(IupGetAttribute(text, "VALUE")));
+ return IUP_DEFAULT;
+}
+
+static int btn_caret_cb (Ihandle* ih)
+{
+ Ihandle *opt = IupGetHandle("text2multi");
+ if (IupGetInt(opt, "VALUE"))
+ text2multiline(ih, "CARET");
+ else
+ multiline2text(ih, "CARET");
+ return IUP_DEFAULT;
+}
+
+static int btn_readonly_cb (Ihandle* ih)
+{
+ Ihandle *opt = IupGetHandle("text2multi");
+ if (IupGetInt(opt, "VALUE"))
+ text2multiline(ih, "READONLY");
+ else
+ multiline2text(ih, "READONLY");
+ return IUP_DEFAULT;
+}
+
+static int btn_selection_cb (Ihandle* ih)
+{
+ Ihandle *opt = IupGetHandle ("text2multi");
+ if (IupGetInt (opt, "VALUE"))
+ text2multiline (ih, "SELECTION");
+ else
+ multiline2text (ih, "SELECTION");
+ return IUP_DEFAULT;
+}
+
+static int btn_selectedtext_cb (Ihandle* ih)
+{
+ Ihandle *opt = IupGetHandle ("text2multi");
+ if (IupGetInt (opt, "VALUE"))
+ text2multiline (ih, "SELECTEDTEXT");
+ else
+ multiline2text (ih, "SELECTEDTEXT");
+ return IUP_DEFAULT;
+}
+
+static int btn_overwrite_cb (Ihandle* ih)
+{
+ Ihandle *opt = IupGetHandle ("text2multi");
+ if (IupGetInt (opt, "VALUE"))
+ text2multiline (ih, "OVERWRITE");
+ else
+ multiline2text (ih, "OVERWRITE");
+ return IUP_DEFAULT;
+}
+
+static int btn_active_cb(Ihandle *ih)
+{
+ Ihandle *opt = IupGetHandle ("text2multi");
+ if (IupGetInt (opt, "VALUE"))
+ text2multiline (ih, "ACTIVE");
+ else
+ multiline2text (ih, "ACTIVE");
+ return IUP_DEFAULT;
+}
+
+static int btn_remformat_cb(Ihandle *ih)
+{
+ text2multiline (ih, "REMOVEFORMATTING");
+ return IUP_DEFAULT;
+}
+
+static int btn_nc_cb (Ihandle* ih)
+{
+ Ihandle *opt = IupGetHandle ("text2multi");
+ if (IupGetInt (opt, "VALUE"))
+ text2multiline (ih, "NC");
+ else
+ multiline2text (ih, "NC");
+ return IUP_DEFAULT;
+}
+
+static int btn_value_cb (Ihandle* ih)
+{
+ Ihandle *opt = IupGetHandle ("text2multi");
+ if (IupGetInt (opt, "VALUE"))
+ text2multiline (ih, "VALUE");
+ else
+ multiline2text (ih, "VALUE");
+ return IUP_DEFAULT;
+}
+
+static int btn_tabsize_cb (Ihandle* ih)
+{
+ Ihandle *opt = IupGetHandle ("text2multi");
+ if (IupGetInt (opt, "VALUE"))
+ text2multiline (ih, "TABSIZE");
+ else
+ multiline2text (ih, "TABSIZE");
+ return IUP_DEFAULT;
+}
+
+static int k_f2(void)
+{
+ printf("K_F2\n");
+ return IUP_DEFAULT;
+}
+
+static int file_open(void)
+{
+ char filename[100] = "";
+ IupGetFile(filename); // test key after dlg in multiline
+ printf(filename);
+ return IUP_DEFAULT;
+}
+
+char *iupKeyCodeToName(int code);
+
+static int k_any(Ihandle *ih, int c)
+{
+ if (iup_isprint(c))
+ printf("K_ANY(%d = %s \'%c\')\n", c, iupKeyCodeToName(c), (char)c);
+ else
+ printf("K_ANY(%d = %s)\n", c, iupKeyCodeToName(c));
+ printf(" CARET(%s)\n", IupGetAttribute(ih, "CARET"));
+ if (c == K_cA)
+ return IUP_IGNORE; // Sound a beep in Windows
+ if (c == K_cP)
+ {
+ file_open();
+ return IUP_IGNORE; // Sound a beep in Windows
+ }
+ return IUP_CONTINUE;
+}
+
+static int action(Ihandle *ih, int c, char* after)
+{
+ if (iup_isprint(c))
+ printf("ACTION(%d = %s \'%c\', %s)\n", c, iupKeyCodeToName(c), (char)c, after);
+ else
+ printf("ACTION(%d = %s, %s)\n", c, iupKeyCodeToName(c), after);
+ if (c == K_i)
+ return IUP_IGNORE; // OK
+ if (c == K_cD)
+ return IUP_IGNORE; // Sound a beep in Windows
+ if (c == K_h)
+ return K_j;
+ return IUP_DEFAULT;
+}
+
+static int caret_cb(Ihandle *ih, int lin, int col, int pos)
+{
+ printf("CARET_CB(%d, %d - %d)\n", lin, col, pos);
+ printf(" CARET(%s - %s)\n", IupGetAttribute(ih, "CARET"), IupGetAttribute(ih, "CARETPOS"));
+ return IUP_DEFAULT;
+}
+
+static int getfocus_cb(void)
+{
+ printf("GETFOCUS_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int help_cb(void)
+{
+ printf("HELP_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int killfocus_cb(void)
+{
+ printf("KILLFOCUS_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int leavewindow_cb(void)
+{
+ printf("LEAVEWINDOW_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int enterwindow_cb(void)
+{
+ printf("ENTERWINDOW_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int btn_def_esc_cb(void)
+{
+ printf("DEFAULTESC\n");
+ return IUP_DEFAULT;
+}
+
+static int btn_def_enter_cb(void)
+{
+ printf("DEFAULTENTER\n");
+ return IUP_DEFAULT;
+}
+
+static int dropfiles_cb(Ihandle *ih, const char* filename, int num, int x, int y)
+{
+ printf("DROPFILES_CB(%s, %d, x=%d, y=%d)\n", filename, num, x, y);
+ return IUP_DEFAULT;
+}
+
+static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status)
+{
+ int lin, col, pos;
+ printf("BUTTON_CB(but=%c (%d), x=%d, y=%d [%s])\n",(char)but,pressed,x,y, status);
+ pos = IupConvertXYToPos(ih, x, y);
+ IupTextConvertPosToLinCol(ih, pos, &lin, &col);
+ printf(" (lin=%d, col=%d, pos=%d)\n", lin, col, pos);
+ return IUP_DEFAULT;
+}
+
+static int motion_cb(Ihandle *ih,int x,int y,char* status)
+{
+ int lin, col, pos;
+ printf("MOTION_CB(x=%d, y=%d [%s])\n",x,y, status);
+ pos = IupConvertXYToPos(ih, x, y);
+ IupTextConvertPosToLinCol(ih, pos, &lin, &col);
+ printf(" (lin=%d, col=%d, pos=%d)\n", lin, col, pos);
+ return IUP_DEFAULT;
+}
+
+void TextTest(void)
+{
+ int formatting = 0;
+ Ihandle *dlg, *mltline, *text, *opt, *btn_def_enter, *btn_def_esc, *btn_active, *btn_overwrite,
+ *btn_append, *btn_insert, *btn_caret, *btn_clip, *btn_key, *btn_readonly, *btn_tabsize,
+ *btn_selection, *btn_selectedtext, *btn_nc, *btn_value, *lbl, *formattag, *btn_remformat;
+
+// IupSetGlobal("UTF8AUTOCONVERT", "NO");
+
+ text = IupText (NULL);
+ IupSetAttribute(text, "EXPAND", "HORIZONTAL");
+// IupSetAttribute(text, "VALUE", "Single Line Text");
+ IupSetAttribute(text, "CUEBANNER", "Enter Attribute Value Here");
+ IupSetAttribute(text, "NAME", "text");
+ IupSetAttribute(text, "TIP", "Attribute Value");
+
+ opt = IupToggle("Set/Get", NULL);
+ IupSetAttribute (opt, "VALUE", "ON");
+ IupSetHandle ("text2multi", opt);
+
+ mltline = IupMultiLine(NULL);
+// mltline = IupText(NULL);
+// IupSetAttribute(mltline, "MULTILINE", "YES");
+ IupSetAttribute(mltline, "NAME", "mltline");
+
+ IupSetCallback(mltline, "DROPFILES_CB", (Icallback)dropfiles_cb);
+ IupSetCallback(mltline, "BUTTON_CB", (Icallback)button_cb);
+// IupSetCallback(mltline, "MOTION_CB", (Icallback)motion_cb);
+ IupSetCallback(mltline, "HELP_CB", (Icallback)help_cb);
+ IupSetCallback(mltline, "GETFOCUS_CB", (Icallback)getfocus_cb);
+ IupSetCallback(mltline, "KILLFOCUS_CB", (Icallback)killfocus_cb);
+ IupSetCallback(mltline, "ENTERWINDOW_CB", (Icallback)enterwindow_cb);
+ IupSetCallback(mltline, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb);
+ //IupSetCallback(mltline, "ACTION", (Icallback)action);
+ IupSetCallback(mltline, "K_ANY", (Icallback)k_any);
+ IupSetCallback(mltline, "K_F2", (Icallback)k_f2);
+ IupSetCallback(mltline, "CARET_CB", (Icallback)caret_cb);
+// IupSetAttribute(mltline, "WORDWRAP", "YES");
+// IupSetAttribute(mltline, "BORDER", "NO");
+// IupSetAttribute(mltline, "AUTOHIDE", "YES");
+// IupSetAttribute(mltline, "BGCOLOR", "255 0 128");
+// IupSetAttribute(mltline, "FGCOLOR", "0 128 192");
+// IupSetAttribute(mltline, "PADDING", "15x15");
+// IupSetAttribute(mltline, "VALUE", "First Line\nSecond Line Big Big Big\nThird Line\nmore\nmore\nçãáÑóé"); // UTF-8
+ IupSetAttribute(mltline, "VALUE", "First Line\nSecond Line Big Big Big\nThird Line\nmore\nmore\nηγυασι"); // Windows-1252
+ IupSetAttribute(mltline, "TIP", "First Line\nSecond Line\nThird Line");
+// IupSetAttribute(mltline, "FONT", "Helvetica, 14");
+// IupSetAttribute(mltline, "MASK", IUP_MASK_FLOAT);
+// IupSetAttribute(mltline, "FILTER", "UPPERCASE");
+// IupSetAttribute(mltline, "ALIGNMENT", "ACENTER");
+
+ /* Turns on multiline expand and text horizontal expand */
+ IupSetAttribute(mltline, "SIZE", "80x40");
+ IupSetAttribute(mltline, "EXPAND", "YES");
+
+ formatting = 0;
+ if (formatting) /* just to make easier to comment this section */
+ {
+ /* formatting before Map */
+ IupSetAttribute(mltline, "FORMATTING", "YES");
+
+ formattag = IupUser();
+ IupSetAttribute(formattag, "ALIGNMENT", "CENTER");
+ IupSetAttribute(formattag, "SPACEAFTER", "10");
+ IupSetAttribute(formattag, "FONTSIZE", "24");
+ IupSetAttribute(formattag, "SELECTION", "3,1:3,50");
+ IupSetAttribute(mltline, "ADDFORMATTAG_HANDLE", (char*)formattag);
+
+ formattag = IupUser();
+ IupSetAttribute(formattag, "BGCOLOR", "255 128 64");
+ IupSetAttribute(formattag, "UNDERLINE", "SINGLE");
+ IupSetAttribute(formattag, "WEIGHT", "BOLD");
+ IupSetAttribute(formattag, "SELECTION", "3,7:3,11");
+ IupSetAttribute(mltline, "ADDFORMATTAG_HANDLE", (char*)formattag);
+ }
+
+ /* Creates buttons */
+// btn_append = IupButton ("APPEND ηγυασι", NULL); // Windows-1252
+// btn_append = IupButton ("APPEND çãáÑóé", NULL); // UTF-8
+ btn_append = IupButton ("&APPEND", NULL);
+ btn_insert = IupButton ("INSERT", NULL);
+ btn_caret = IupButton ("CARET", NULL);
+ btn_readonly = IupButton ("READONLY", NULL);
+ btn_selection = IupButton ("SELECTION", NULL);
+ btn_selectedtext = IupButton ("SELECTEDTEXT", NULL);
+ btn_nc = IupButton ("NC", NULL);
+ btn_value = IupButton ("VALUE", NULL);
+ btn_tabsize = IupButton ("TABSIZE", NULL);
+ btn_clip = IupButton ("CLIPBOARD", NULL);
+ btn_key = IupButton ("KEY", NULL);
+ btn_def_enter = IupButton ("Default Enter", NULL);
+ btn_def_esc = IupButton ("Default Esc", NULL);
+ btn_active = IupButton("ACTIVE", NULL);
+ btn_remformat = IupButton("REMOVEFORMATTING", NULL);
+ btn_overwrite = IupButton("OVERWRITE", NULL);
+
+ IupSetAttribute(btn_append, "TIP", "First Line\nSecond Line\nThird Line");
+
+ /* Registers callbacks */
+ IupSetCallback(btn_append, "ACTION", (Icallback) btn_append_cb);
+ IupSetCallback(btn_insert, "ACTION", (Icallback) btn_insert_cb);
+ IupSetCallback(btn_caret, "ACTION", (Icallback) btn_caret_cb);
+ IupSetCallback(btn_readonly, "ACTION", (Icallback) btn_readonly_cb);
+ IupSetCallback(btn_selection, "ACTION", (Icallback) btn_selection_cb);
+ IupSetCallback(btn_selectedtext, "ACTION", (Icallback) btn_selectedtext_cb);
+ IupSetCallback(btn_nc, "ACTION", (Icallback) btn_nc_cb);
+ IupSetCallback(btn_value, "ACTION", (Icallback) btn_value_cb);
+ IupSetCallback(btn_tabsize, "ACTION", (Icallback) btn_tabsize_cb);
+ IupSetCallback(btn_clip, "ACTION", (Icallback) btn_clip_cb);
+ IupSetCallback(btn_key, "ACTION", (Icallback) btn_key_cb);
+ IupSetCallback(btn_def_enter, "ACTION", (Icallback) btn_def_enter_cb);
+ IupSetCallback(btn_def_esc, "ACTION", (Icallback) btn_def_esc_cb);
+ IupSetCallback(btn_active, "ACTION", (Icallback) btn_active_cb);
+ IupSetCallback(btn_remformat, "ACTION", (Icallback) btn_remformat_cb);
+ IupSetCallback(btn_overwrite, "ACTION", (Icallback) btn_overwrite_cb);
+
+ lbl = IupLabel("&Multiline:");
+ IupSetAttribute(lbl, "PADDING", "2x2");
+
+ /* Creates dlg */
+ dlg = IupDialog(IupVbox(lbl,
+ mltline,
+ IupHbox (text, opt, NULL),
+ IupHbox (btn_append, btn_insert, btn_caret, btn_readonly, btn_selection, NULL),
+ IupHbox (btn_selectedtext, btn_nc, btn_value, btn_tabsize, btn_clip, btn_key, NULL),
+ IupHbox (btn_def_enter, btn_def_esc, btn_active, btn_remformat, btn_overwrite, NULL),
+ NULL));
+ IupSetCallback(dlg, "K_cO", (Icallback)file_open);
+ IupSetAttribute(dlg, "TITLE", "IupText Test");
+ IupSetAttribute(dlg, "MARGIN", "10x10");
+ IupSetAttribute(dlg, "GAP", "5");
+ IupSetAttributeHandle(dlg, "DEFAULTENTER", btn_def_enter);
+ IupSetAttributeHandle(dlg, "DEFAULTESC", btn_def_esc);
+ IupSetAttribute(dlg, "SHRINK", "YES");
+
+ if (formatting) /* just to make easier to comment this section */
+ {
+ IupMap(dlg);
+ /* formatting after Map */
+
+ formattag = IupUser();
+ IupSetAttribute(formattag, "ITALIC", "YES");
+ IupSetAttribute(formattag, "STRIKEOUT", "YES");
+ IupSetAttribute(formattag, "SELECTION", "2,1:2,12");
+ IupSetAttribute(mltline, "ADDFORMATTAG_HANDLE", (char*)formattag);
+ }
+
+ /* Shows dlg in the center of the screen */
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ TextTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/text_spin.c b/iup/test/text_spin.c
new file mode 100755
index 0000000..114c1ed
--- /dev/null
+++ b/iup/test/text_spin.c
@@ -0,0 +1,74 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupkey.h"
+
+
+static int spin_cb(Ihandle* ih, int pos)
+{
+ (void)ih;
+ printf("SPIN_CB(%d)\n", pos);
+ if (!IupGetInt(ih, "SPINAUTO"))
+ IupSetfAttribute(ih, "VALUE", "%s(%d)", "Test", pos);
+ return IUP_DEFAULT;
+}
+
+static int action_cb(Ihandle* ih, int c, char* after)
+{
+ printf("ACTION(%d, %s)\n", c, after);
+ return IUP_DEFAULT;
+}
+
+static int setspinvalue(Ihandle* ih)
+{
+ IupSetAttribute(IupGetDialogChild(ih, "spin"), "SPINVALUE", "25");
+ return IUP_DEFAULT;
+}
+
+void TextSpinTest(void)
+{
+ Ihandle *dlg, *text;
+
+ text = IupText(NULL);
+ IupSetAttribute(text, "SIZE", "60x");
+// IupSetAttribute(text, "EXPAND", "HORIZONTAL");
+
+ IupSetAttribute(text, "SPIN", "YES");
+// IupSetAttribute(text, "SPINMIN", "10");
+// IupSetAttribute(text, "SPINMAX", "60");
+// IupSetAttribute(text, "SPININC", "5");
+// IupSetAttribute(text, "SPINWRAP", "YES");
+// IupSetAttribute(text, "SPINALIGN", "LEFT");
+// IupSetAttribute(text, "SPINVALUE", "25");
+// IupSetAttribute(text, "SPINAUTO", "NO");
+ IupSetAttribute(text, "NAME", "spin");
+
+ IupSetCallback(text, "SPIN_CB", (Icallback)spin_cb);
+ IupSetCallback(text, "ACTION", (Icallback)action_cb);
+
+ dlg = IupDialog(IupVbox(text, IupButton("SPINVALUE", "setspinvalue"), NULL));
+ IupSetAttribute(dlg, "GAP", "20");
+ IupSetAttribute(dlg, "MARGIN", "20x20");
+// IupSetAttribute(dlg, "BGCOLOR", "173 177 194"); // Motif BGCOLOR for documentation
+
+ IupSetFunction("setspinvalue", (Icallback)setspinvalue);
+
+ IupSetAttribute(dlg, "TITLE", "Text Spin Test");
+ IupShow(dlg);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ TextSpinTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/timer.c b/iup/test/timer.c
new file mode 100755
index 0000000..f570b63
--- /dev/null
+++ b/iup/test/timer.c
@@ -0,0 +1,70 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+
+static Ihandle *timer1, *timer2, *timer3;
+
+static int timer_cb(Ihandle *ih)
+{
+ if (ih == timer1)
+ printf("timer 1 called\n");
+
+ if (ih == timer2)
+ {
+ printf("timer 2 called and stopped\n");
+ IupSetAttribute(ih, "RUN", "NO");
+ }
+
+ if (ih == timer3)
+ {
+ printf("timer 3 called and CLOSE returned.\n");
+ IupDestroy(timer1);
+ IupDestroy(timer2);
+ IupDestroy(timer3);
+ return IUP_CLOSE;
+ }
+
+ return IUP_DEFAULT;
+}
+
+void TimerTest(void)
+{
+ Ihandle *dlg;
+
+ dlg = IupDialog(NULL);
+ IupSetAttribute(dlg, "TITLE", "IupTimer Test");
+ IupSetAttribute(dlg, "SIZE", "200x100");
+
+ IupShow(dlg);
+
+ timer1 = IupTimer();
+ timer2 = IupTimer();
+ timer3 = IupTimer();
+
+ IupSetAttribute(timer1, "TIME", "100");
+ IupSetAttribute(timer1, "RUN", "YES");
+ IupSetCallback(timer1, "ACTION_CB", (Icallback)timer_cb);
+
+ IupSetAttribute(timer2, "TIME", "400");
+ IupSetAttribute(timer2, "RUN", "YES");
+ IupSetCallback(timer2, "ACTION_CB", (Icallback)timer_cb);
+
+ IupSetAttribute(timer3, "TIME", "5000");
+ IupSetAttribute(timer3, "RUN", "YES");
+ IupSetCallback(timer3, "ACTION_CB", (Icallback)timer_cb);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ TimerTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/toggle.c b/iup/test/toggle.c
new file mode 100755
index 0000000..e504eb1
--- /dev/null
+++ b/iup/test/toggle.c
@@ -0,0 +1,306 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+
+#define TEST_IMAGE_SIZE 20
+
+static unsigned char image_data_32[16*16*4] = {
+ 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,
+ 255, 0, 255, 0, 183, 182, 245, 255, 183, 182, 245, 255, 179, 178, 243, 255, 174, 173, 241, 255, 168, 167, 238, 255, 162, 161, 234, 255, 155, 154, 231, 255, 148, 147, 228, 255, 143, 142, 224, 255, 136, 135, 221, 255, 129, 128, 218, 255, 123, 122, 214, 255, 117, 116, 211, 255, 112, 111, 209, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 179, 178, 243, 255, 190, 189, 255, 255, 147, 146, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 75, 88, 190, 255, 89, 88, 176, 255, 89, 88, 176, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 173, 172, 240, 255, 190, 189, 255, 255, 138, 137, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 63, 82, 184, 255, 51, 51, 103, 255, 86, 85, 170, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 167, 166, 237, 255, 190, 189, 255, 255, 129, 128, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 52, 77, 179, 255, 122, 121, 223, 255, 83, 82, 164, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 159, 158, 233, 255, 190, 189, 255, 255, 119, 118, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 40, 71, 173, 255, 114, 113, 215, 255, 80, 79, 159, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 152, 151, 229, 255, 190, 189, 255, 255, 110, 109, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 198, 209, 229, 255, 28, 65, 167, 255, 103, 103, 204, 255, 77, 77, 154, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 146, 145, 226, 255, 190, 189, 255, 255, 103, 102, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 198, 209, 229, 255, 189, 202, 225, 255, 17, 59, 161, 255, 92, 93, 194, 255, 74, 74, 148, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 139, 138, 223, 255, 188, 187, 255, 255, 183, 182, 255, 255, 96, 99, 201, 255, 86, 94, 196, 255, 75, 88, 190, 255, 63, 82, 184, 255, 52, 77, 179, 255, 40, 71, 173, 255, 28, 65, 167, 255, 17, 59, 161, 255, 92, 93, 193, 255, 84, 86, 186, 255, 71, 71, 143, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 132, 131, 219, 255, 180, 179, 255, 255, 174, 173, 255, 255, 164, 163, 252, 255, 143, 142, 244, 255, 135, 134, 236, 255, 129, 128, 230, 255, 122, 121, 223, 255, 114, 113, 215, 255, 108, 107, 209, 255, 92, 93, 193, 255, 84, 86, 186, 255, 76, 80, 178, 255, 68, 68, 137, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 124, 123, 215, 255, 170, 169, 255, 255, 160, 159, 251, 255, 148, 147, 245, 255, 75, 91, 113, 255, 75, 91, 113, 255, 75, 91, 113, 255, 75, 91, 113, 255, 82, 98, 118, 255, 91, 106, 125, 255, 84, 86, 186, 255, 76, 79, 178, 255, 68, 73, 170, 255, 65, 65, 131, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 118, 117, 212, 255, 160, 159, 255, 255, 145, 144, 245, 255, 135, 134, 236, 255, 75, 91, 113, 255, 0, 0, 0, 255, 52, 60, 71, 255, 206, 217, 233, 255, 212, 221, 236, 255, 103, 116, 133, 255, 67, 75, 174, 255, 68, 73, 170, 255, 60, 66, 163, 255, 62, 62, 125, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 112, 111, 209, 255, 154, 153, 255, 255, 135, 134, 236, 255, 129, 128, 230, 255, 75, 91, 113, 255, 52, 60, 71, 255, 104, 120, 141, 255, 216, 224, 237, 255, 224, 231, 241, 255, 115, 127, 143, 255, 53, 65, 163, 255, 60, 66, 162, 255, 53, 61, 156, 255, 60, 59, 120, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 108, 107, 207, 255, 143, 142, 243, 255, 129, 128, 230, 255, 36, 68, 170, 255, 33, 50, 71, 255, 171, 180, 195, 255, 179, 187, 198, 255, 188, 193, 202, 255, 196, 200, 206, 255, 72, 77, 86, 255, 51, 62, 158, 255, 54, 61, 156, 255, 49, 57, 152, 255, 57, 57, 114, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 108, 107, 207, 84, 101, 100, 195, 255, 86, 85, 170, 255, 83, 82, 164, 255, 80, 79, 159, 255, 77, 77, 154, 255, 74, 74, 148, 255, 71, 71, 143, 255, 68, 68, 137, 255, 65, 65, 131, 255, 60, 59, 120, 255, 60, 59, 120, 255, 57, 57, 114, 255, 55, 54, 110, 255, 255, 0, 255, 0,
+ 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0};
+
+static unsigned char image_data_8 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] =
+{
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+};
+
+static unsigned char image_data_8_pressed [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] =
+{
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,5,1,1,1,1,1,2,2,2,2,2,5,0,0,0,5,
+ 5,0,0,0,1,5,1,1,1,1,2,2,2,2,5,2,0,0,0,5,
+ 5,0,0,0,1,1,5,1,1,1,2,2,2,5,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,5,1,1,2,2,5,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,5,1,2,5,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,1,5,5,2,2,2,2,2,0,0,0,5,
+ 5,0,0,0,3,3,3,3,3,5,5,4,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,5,3,4,5,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,5,3,3,4,4,5,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,5,3,3,3,4,4,4,5,4,4,0,0,0,5,
+ 5,0,0,0,3,5,3,3,3,3,4,4,4,4,5,4,0,0,0,5,
+ 5,0,0,0,5,3,3,3,3,3,4,4,4,4,4,5,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+};
+
+static unsigned char image_data_8_inactive [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] =
+{
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,5,5,1,1,1,1,1,1,1,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5,
+ 5,0,0,0,5,5,1,1,1,1,1,1,1,5,5,5,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+};
+
+static void createimgs(void)
+{
+ Ihandle *image;
+
+ image = IupImageRGBA(16, 16, image_data_32);
+ IupSetHandle ("image2", image);
+
+ image = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8);
+ IupSetAttribute(image, "0", "BGCOLOR");
+ IupSetAttribute(image, "1", "255 0 0");
+ IupSetAttribute(image, "2", "0 255 0");
+ IupSetAttribute(image, "3", "0 0 255");
+ IupSetAttribute(image, "4", "255 255 255");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetHandle ("image1", image);
+
+ image = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8_inactive);
+ IupSetAttribute(image, "0", "BGCOLOR");
+ IupSetAttribute(image, "1", "255 0 0");
+ IupSetAttribute(image, "2", "0 255 0");
+ IupSetAttribute(image, "3", "0 0 255");
+ IupSetAttribute(image, "4", "255 255 255");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetHandle ("image1i", image);
+
+ image = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8_pressed);
+ IupSetAttribute(image, "0", "BGCOLOR");
+ IupSetAttribute(image, "1", "255 0 0");
+ IupSetAttribute(image, "2", "0 255 0");
+ IupSetAttribute(image, "3", "0 0 255");
+ IupSetAttribute(image, "4", "255 255 255");
+ IupSetAttribute(image, "5", "0 0 0");
+ IupSetHandle ("image1p", image);
+}
+
+static int togglecb(Ihandle *self, int v)
+{
+ if (v == 1) printf("Toggle %s - ON\n", IupGetAttribute(self, "NAME"));
+ else printf("Toggle %s - OFF\n", IupGetAttribute(self, "NAME"));
+ return IUP_DEFAULT;
+}
+
+static int toggle9cb(Ihandle *self, int v)
+{
+ Ihandle* ih = IupGetHandle("radio test");
+ if (v == 1) printf("Toggle 9 - ON\n");
+ else if (v == -1) printf("Toggle 9 - NOTDEF\n");
+ else printf("Toggle 9 - OFF\n");
+
+ if (v == 1)
+ IupSetAttribute(ih, "VALUE", "ON");
+ else
+ IupSetAttribute(ih, "VALUE", "OFF");
+
+ return IUP_DEFAULT;
+}
+
+static int toggle7cb(Ihandle *ih, int v)
+{
+ Ihandle* dlg = IupGetDialog(ih);
+ Ihandle* box = IupGetChild(dlg, 0);
+ if (v)
+ IupSetAttribute(box, "ACTIVE", "NO");
+ else
+ IupSetAttribute(box, "ACTIVE", "YES");
+ IupSetAttribute(ih, "ACTIVE", "YES");
+ return IUP_DEFAULT;
+}
+
+static int k_any(Ihandle *ih, int c)
+{
+ printf("K_ANY(%d)\n", c);
+ return IUP_DEFAULT;
+}
+
+static int getfocus_cb(Ihandle *ih)
+{
+ printf("GETFOCUS_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int help_cb(Ihandle* ih)
+{
+ printf("HELP_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int killfocus_cb(Ihandle *ih)
+{
+ printf("KILLFOCUS_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int leavewindow_cb(Ihandle *ih)
+{
+ printf("LEAVEWINDOW_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int enterwindow_cb(Ihandle *ih)
+{
+ printf("ENTERWINDOW_CB()\n");
+ return IUP_DEFAULT;
+}
+
+void ToggleTest(void)
+{
+ Ihandle *dlg, *box;
+ Ihandle *toggle1, *toggle2, *toggle3, *toggle4, *toggle5, *toggle6, *toggle7, *toggle8, *toggle9;
+
+ createimgs();
+
+ toggle1 = IupToggle(NULL, NULL);
+ toggle2 = IupToggle(NULL, NULL);
+ toggle3 = IupToggle("Text Toggle", NULL);
+// toggle4 = IupToggle("blue foreground color", NULL);
+ toggle4 = IupToggle("Radio &Text", NULL);
+ toggle5 = IupToggle("red background color", NULL);
+ toggle6 = IupToggle("multiple lines\nsecond line", NULL);
+ toggle7 = IupToggle("INACTIVE", NULL);
+ toggle8 = IupToggle("Courier 14 Bold font", NULL);
+ toggle9 = IupToggle("3 State", NULL);
+
+ IupSetHandle("radio test", toggle8);
+
+ IupSetCallback(toggle1, "ACTION", (Icallback)togglecb);
+ IupSetCallback(toggle2, "ACTION", (Icallback)togglecb);
+ IupSetCallback(toggle3, "ACTION", (Icallback)togglecb);
+ IupSetCallback(toggle4, "ACTION", (Icallback)togglecb);
+ IupSetCallback(toggle5, "ACTION", (Icallback)togglecb);
+ IupSetCallback(toggle6, "ACTION", (Icallback)togglecb);
+ IupSetCallback(toggle8, "ACTION", (Icallback)togglecb);
+ IupSetCallback(toggle7, "ACTION", (Icallback)toggle7cb);
+ IupSetCallback(toggle9, "ACTION", (Icallback)toggle9cb);
+
+ IupSetCallback(toggle3, "K_ANY", (Icallback)k_any);
+ IupSetCallback(toggle3, "HELP_CB", (Icallback)help_cb);
+ IupSetCallback(toggle3, "GETFOCUS_CB", (Icallback)getfocus_cb);
+ IupSetCallback(toggle3, "KILLFOCUS_CB", (Icallback)killfocus_cb);
+ IupSetCallback(toggle3, "ENTERWINDOW_CB", (Icallback)enterwindow_cb);
+ IupSetCallback(toggle3, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb);
+
+ IupSetAttribute(toggle1, "IMAGE", "image1");
+ IupSetAttribute(toggle1, "IMPRESS", "image1p");
+ IupSetAttribute(toggle1, "IMINACTIVE", "image1i");
+// IupSetAttribute(toggle1, "PADDING", "10x10");
+// IupSetAttribute(toggle1, "RASTERSIZE", "160x160");
+// IupSetAttribute(toggle2, "RASTERSIZE", "60x60");
+// IupSetAttribute(toggle1, "ALIGNMENT", "ARIGHT");
+// IupSetAttribute(toggle2, "ALIGNMENT", "ARIGHT");
+ IupSetAttribute(toggle2, "IMAGE", "image2");
+ IupSetAttribute(toggle1, "NAME", "1");
+ IupSetAttribute(toggle2, "NAME", "2");
+ IupSetAttribute(toggle3, "NAME", "3");
+ IupSetAttribute(toggle4, "NAME", "4");
+ IupSetAttribute(toggle5, "NAME", "5");
+ IupSetAttribute(toggle6, "NAME", "6");
+ IupSetAttribute(toggle8, "NAME", "8");
+// IupSetAttribute(toggle4, "FGCOLOR", "0 0 255");
+ IupSetAttribute(toggle5, "BGCOLOR", "255 0 0");
+ IupSetAttribute(toggle8, "FONT", "COURIER_BOLD_14");
+ IupSetAttribute(toggle9, "3STATE", "YES");
+ IupSetAttribute(toggle6, "TIP", "Toggle Tip");
+ IupSetAttribute(toggle7, "RIGHTBUTTON", "YES");
+ IupSetAttribute(toggle5, "RIGHTBUTTON", "YES");
+
+ /* Creating box that contains the toggles */
+ box = IupHbox(
+ IupVbox(
+ toggle1,
+ toggle2,
+ toggle3,
+ toggle7,
+ toggle9,
+ NULL),
+ IupFrame(IupRadio(IupVbox(
+ toggle4,
+ toggle5,
+ toggle6,
+ toggle8,
+ NULL))),
+ NULL);
+
+ IupSetAttribute(IupGetChild(box, 1), "TITLE", "Radio in a Frame");
+
+// IupSetAttribute(box, "BGCOLOR", "255 0 0");
+
+ /* Dialog */
+ dlg = IupDialog(box);
+ IupSetAttribute (dlg, "TITLE", "IupToggle Test");
+ IupSetAttributes(dlg, "MARGIN=5x5, GAP=5");
+
+ /* Associates a menu to the dlg */
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ ToggleTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/tray.c b/iup/test/tray.c
new file mode 100755
index 0000000..58b7daf
--- /dev/null
+++ b/iup/test/tray.c
@@ -0,0 +1,120 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+
+static unsigned char pixmap [ ] =
+{
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,1,2,3,3,3,3,3,3,3,2,1,0,0,0,
+ 0,0,2,1,2,3,3,3,3,3,2,1,2,0,0,0,
+ 0,0,3,2,1,2,3,3,3,2,1,2,3,0,0,0,
+ 0,0,3,3,2,1,2,3,2,1,2,3,3,0,0,0,
+ 0,0,3,3,3,2,1,2,1,2,3,3,3,0,0,0,
+ 0,0,3,3,3,3,2,1,2,3,3,3,3,0,0,0,
+ 0,0,3,3,3,2,1,2,1,2,3,3,3,0,0,0,
+ 0,0,3,3,2,1,2,3,2,1,2,3,3,0,0,0,
+ 0,0,3,2,1,2,3,3,3,2,1,2,3,0,0,0,
+ 0,0,2,1,2,3,3,3,3,3,2,1,2,0,0,0,
+ 0,0,1,2,3,3,3,3,3,3,3,2,1,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+};
+
+static int close(Ihandle* ih)
+{
+ IupDestroy((Ihandle*)IupGetAttribute(ih, "_DIALOG"));
+ return IUP_DEFAULT;
+// return IUP_CLOSE;
+}
+
+static int hide(Ihandle* ih)
+{
+ IupSetAttribute((Ihandle*)IupGetAttribute(ih, "_DIALOG"), "HIDETASKBAR", "YES");
+ return IUP_DEFAULT;
+}
+
+static int show(Ihandle* ih)
+{
+ IupSetAttribute((Ihandle*)IupGetAttribute(ih, "_DIALOG"), "HIDETASKBAR", "NO");
+ return IUP_DEFAULT;
+}
+
+static int showmenu(Ihandle* ih)
+{
+ Ihandle* menu = IupMenu(IupItem("Show", "show"), IupItem("Hide", "hide"), IupItem("Exit", "close"), NULL);
+ IupSetAttribute(menu, "_DIALOG", (char*)ih);
+ IupSetFunction("show", (Icallback) show);
+ IupSetFunction("hide", (Icallback) hide);
+ IupSetFunction("close", (Icallback) close);
+ IupPopup(menu, IUP_MOUSEPOS, IUP_MOUSEPOS);
+ IupDestroy(menu);
+ return IUP_DEFAULT;
+}
+
+static int k_esc(Ihandle* ih)
+{
+ IupDestroy(ih);
+ return IUP_DEFAULT;
+}
+
+static int close_cb(Ihandle* ih)
+{
+ IupSetAttribute(ih, "HIDETASKBAR", "YES");
+ return IUP_IGNORE;
+}
+
+static int trayclick(Ihandle *ih, int button, int pressed, int dclick)
+{
+printf("trayclick_cb(button=%d, pressed=%d, dclick=%d)\n", button, pressed, dclick);
+ if (button == 1 && pressed)
+ IupSetAttribute(ih, "HIDETASKBAR", "NO");
+ else if (button == 3 && pressed)
+ showmenu(ih);
+ return IUP_DEFAULT;
+}
+
+void TrayTest(void)
+{
+ Ihandle *dlg, *img;
+
+ img = IupImage(16, 16, pixmap);
+ IupSetAttribute(img, "0", "BGCOLOR");
+ IupSetAttribute(img, "1", "255 255 0");
+ IupSetAttribute(img, "2", "255 0 0");
+ IupSetAttribute(img, "3", "255 255 0");
+ IupSetHandle ("img", img);
+
+ dlg = IupDialog(NULL);
+
+ IupSetAttribute(dlg, "TITLE", "Tray Test");
+ IupSetAttribute(dlg, "TRAY", "YES");
+ IupSetAttribute(dlg, "TRAYTIP", "Tip at Tray");
+ IupSetAttribute(dlg, "TRAYIMAGE", "img");
+ IupSetAttribute(dlg, "SIZE", "100x100");
+ IupSetCallback(dlg, "TRAYCLICK_CB", (Icallback)trayclick);
+ IupSetCallback(dlg, "CLOSE_CB", (Icallback)close_cb);
+ IupSetCallback(dlg, "K_ESC", (Icallback)k_esc);
+
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+
+ /* start only the task bar icon */
+ IupSetAttribute(dlg, "HIDETASKBAR", "YES");
+}
+
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ TrayTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/tree.c b/iup/test/tree.c
new file mode 100755
index 0000000..009c97f
--- /dev/null
+++ b/iup/test/tree.c
@@ -0,0 +1,518 @@
+/*IupTree Example in C
+Creates a tree with some branches and leaves.
+Two callbacks are registered: one deletes marked nodes when the Del key is pressed,
+and the other, called when the right mouse button is pressed, opens a menu with options. */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "iup.h"
+#include "iupkey.h"
+
+
+static Ihandle* load_image_LogoTecgraf(void)
+{
+ unsigned char imgdata[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 120, 143, 125, 132, 148, 178, 173, 133, 149, 178, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 110, 130, 48, 130, 147, 177, 254, 124, 139, 167, 254, 131, 147, 176, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 128, 153, 134, 142, 159, 191, 194, 47, 52, 61, 110, 114, 128, 154, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 172, 192, 140, 156, 188, 99, 65, 69, 76, 16, 97, 109, 131, 251, 129, 144, 172, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 147, 175, 232, 140, 157, 188, 43, 0, 0, 0, 0, 100, 112, 134, 211, 126, 141, 169, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 78, 88, 26, 48, 52, 57, 60, 135, 150, 178, 254, 108, 121, 145, 83, 105, 118, 142, 76, 106, 119, 143, 201, 118, 133, 159, 122, 117, 129, 152, 25, 168, 176, 190, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 118, 128, 145, 3, 104, 117, 140, 92, 114, 127, 152, 180, 131, 147, 177, 237, 133, 149, 178, 249, 38, 42, 50, 222, 137, 152, 180, 249, 126, 142, 170, 182, 114, 128, 154, 182, 104, 117, 140, 227, 95, 107, 128, 238, 83, 93, 112, 248, 84, 95, 113, 239, 104, 117, 141, 180, 115, 129, 155, 93, 127, 140, 165, 4,
+ 98, 109, 130, 153, 109, 123, 147, 254, 145, 163, 195, 153, 138, 154, 182, 56, 115, 123, 138, 5, 92, 99, 109, 35, 134, 149, 177, 230, 0, 0, 0, 0, 0, 0, 0, 0, 120, 133, 159, 143, 135, 151, 181, 115, 86, 89, 93, 5, 41, 45, 51, 54, 40, 45, 53, 150, 107, 120, 144, 254, 122, 137, 164, 154,
+ 51, 57, 66, 147, 83, 93, 112, 255, 108, 121, 145, 159, 113, 126, 151, 62, 123, 136, 159, 8, 87, 93, 103, 35, 125, 141, 169, 230, 0, 0, 0, 0, 0, 0, 0, 0, 129, 143, 169, 143, 140, 156, 184, 115, 134, 147, 172, 8, 124, 138, 165, 60, 124, 139, 167, 155, 131, 147, 177, 255, 131, 147, 176, 153,
+ 64, 68, 73, 2, 36, 39, 45, 86, 41, 46, 54, 173, 60, 67, 80, 232, 75, 84, 101, 251, 89, 100, 120, 228, 105, 118, 142, 250, 110, 123, 148, 187, 118, 132, 158, 187, 126, 141, 169, 229, 134, 149, 177, 239, 136, 152, 179, 250, 136, 152, 181, 234, 139, 156, 186, 175, 130, 145, 173, 90, 124, 134, 151, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 74, 79, 19, 60, 64, 73, 50, 92, 103, 124, 254, 86, 95, 111, 84, 90, 100, 117, 76, 126, 141, 168, 201, 113, 126, 150, 119, 99, 105, 117, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 105, 125, 231, 135, 151, 181, 46, 0, 0, 0, 0, 137, 154, 184, 212, 123, 137, 164, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 83, 98, 191, 133, 149, 179, 102, 111, 121, 139, 17, 134, 150, 180, 252, 126, 140, 166, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 48, 57, 132, 121, 136, 164, 197, 121, 135, 161, 115, 130, 146, 175, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 47, 52, 46, 87, 98, 118, 254, 126, 142, 170, 254, 124, 139, 166, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 57, 67, 118, 115, 128, 152, 170, 127, 140, 164, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+ Ihandle* image = IupImageRGBA(16, 16, imgdata);
+ return image;
+}
+
+#define TEST_IMAGE_SIZE 16
+
+static Ihandle* load_image_TestImage(void)
+{
+ unsigned char image_data_8 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] =
+ {
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5,
+ 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5,
+ 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5,
+ 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
+ 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+ };
+
+ Ihandle* image = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8);
+ IupSetAttribute(image, "0", "BGCOLOR");
+ IupSetAttribute(image, "1", "255 0 0");
+ IupSetAttribute(image, "2", "0 255 0");
+ IupSetAttribute(image, "3", "0 0 255");
+ IupSetAttribute(image, "4", "255 255 255");
+ IupSetAttribute(image, "5", "0 0 0");
+
+ return image;
+}
+
+static int addleaf(void)
+{
+ char attr[50];
+ Ihandle* tree = IupGetHandle("tree");
+ int id = IupGetInt(tree, "VALUE");
+ sprintf(attr, "ADDLEAF%d", id);
+ IupSetAttribute(tree, attr, "");
+ return IUP_DEFAULT;
+}
+
+static int insertleaf(void)
+{
+ char attr[50];
+ Ihandle* tree = IupGetHandle("tree");
+ int id = IupGetInt(tree, "VALUE");
+ sprintf(attr, "INSERTLEAF%d", id);
+ IupSetAttribute(tree, attr, "");
+ return IUP_DEFAULT;
+}
+
+static int addbranch(void)
+{
+ char attr[50];
+ Ihandle* tree = IupGetHandle("tree");
+ int id = IupGetInt(tree, "VALUE");
+ sprintf(attr, "ADDBRANCH%d", id);
+ IupSetAttribute(tree, attr, "");
+ return IUP_DEFAULT;
+}
+
+static int insertbranch(void)
+{
+ char attr[50];
+ Ihandle* tree = IupGetHandle("tree");
+ int id = IupGetInt(tree, "VALUE");
+ sprintf(attr, "INSERTBRANCH%d", id);
+ IupSetAttribute(tree, attr, "");
+ return IUP_DEFAULT;
+}
+
+static int text_cb(Ihandle* ih, int c, char *after)
+{
+ if (c == K_ESC)
+ return IUP_CLOSE;
+
+ if (c == K_CR)
+ {
+ Ihandle *tree = IupGetHandle("tree");
+ IupSetAttribute(tree, "NAME", after);
+ return IUP_CLOSE;
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int removenode(void)
+{
+ Ihandle* tree = IupGetHandle("tree");
+ IupSetAttribute(tree, "DELNODE", "SELECTED");
+ return IUP_DEFAULT;
+}
+
+static int removechild(void)
+{
+ Ihandle* tree = IupGetHandle("tree");
+ IupSetAttribute(tree, "DELNODE", "CHILDREN");
+ return IUP_DEFAULT;
+}
+
+int renamenode(void)
+{
+ Ihandle* tree = IupGetHandle("tree");
+ IupSetAttribute(tree, "RENAME", "YES");
+ return IUP_DEFAULT;
+}
+
+static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status)
+{
+ printf("BUTTON_CB(but=%c (%d), x=%d, y=%d [%s]) - [id=%d]\n",(char)but,pressed,x,y, status, IupConvertXYToPos(ih, x, y));
+ return IUP_DEFAULT;
+}
+
+static int motion_cb(Ihandle *ih,int x,int y,char* status)
+{
+ printf("MOTION_CB(x=%d, y=%d [%s]) - [id=%d]\n",x,y, status,IupConvertXYToPos(ih, x, y));
+ return IUP_DEFAULT;
+}
+
+static int showrename_cb(Ihandle* ih, int id)
+{
+ (void)ih;
+ printf("SHOWRENAME_CB(%d)\n", id);
+ return IUP_DEFAULT;
+}
+
+static int selection_cb(Ihandle *ih, int id, int status)
+{
+ (void)ih;
+ printf("SELECTION_CB(%d, %d)\n", id, status);
+ return IUP_DEFAULT;
+}
+
+static int multiselection_cb(Ihandle *ih, int* ids, int n)
+{
+ int i;
+ (void)ih;
+ printf("MULTISELECTION_CB(");
+ for (i = 0; i < n; i++)
+ printf("%d, ", ids[i]);
+ printf("n=%d)\n", n);
+ return IUP_DEFAULT;
+}
+
+static int executeleaf_cb(Ihandle* ih, int id)
+{
+ printf("EXECUTELEAF_CB (%d)\n", id);
+ return IUP_DEFAULT;
+}
+
+static int renamenode_cb(Ihandle* ih, int id, char* title)
+{
+ printf("RENAMENODE_CB (%d=%s)\n", id, title);
+ return IUP_DEFAULT;
+}
+
+static int rename_cb(Ihandle* ih, int id, char* title)
+{
+ printf("RENAME_CB (%d=%s)\n", id, title);
+ if (strcmp(title, "fool") == 0)
+ return IUP_IGNORE;
+ return IUP_DEFAULT;
+}
+
+static int branchopen_cb(Ihandle* ih, int id)
+{
+ printf("BRANCHOPEN_CB (%d)\n", id);
+// if (id == 6)
+// return IUP_IGNORE;
+ return IUP_DEFAULT;
+}
+
+static int branchclose_cb(Ihandle* ih, int id)
+{
+ printf("BRANCHCLOSE_CB (%d)\n", id);
+// if (id == 6)
+// return IUP_IGNORE;
+ return IUP_DEFAULT;
+}
+
+static int dragdrop_cb(Ihandle* ih, int drag_id, int drop_id, int shift, int control)
+{
+ printf("DRAGDROP_CB (%d)->(%d)\n", drag_id, drop_id);
+ return IUP_CONTINUE;
+// return IUP_DEFAULT;
+}
+
+static int getfocus_cb(Ihandle* ih)
+{
+ printf("GETFOCUS_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int killfocus_cb(Ihandle* ih)
+{
+ printf("KILLFOCUS_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int leavewindow_cb(Ihandle *ih)
+{
+ printf("LEAVEWINDOW_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int enterwindow_cb(Ihandle* ih)
+{
+ printf("ENTERWINDOW_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int k_any_cb(Ihandle* ih, int c)
+{
+ if (c == K_DEL)
+ IupSetAttribute(ih, "DELNODE", "MARKED");
+ if (iup_isprint(c))
+ printf("K_ANY(%s, %d = %s \'%c\')\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"), c, iupKeyCodeToName(c), (char)c);
+ else
+ printf("K_ANY(%s, %d = %s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"), c, iupKeyCodeToName(c));
+ return IUP_CONTINUE;
+}
+
+static int help_cb(Ihandle* ih)
+{
+ printf("HELP_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int selectnode(Ihandle* ih)
+{
+ Ihandle* tree = IupGetHandle("tree");
+ IupSetAttribute(tree, "VALUE", IupGetAttribute(ih, "TITLE"));
+ return IUP_DEFAULT;
+}
+
+static int nodeinfo(Ihandle* ih)
+{
+ char attr[50], *kind;
+ Ihandle* tree = IupGetHandle("tree");
+ int branch = 0, id = IupGetInt(tree, "VALUE");
+ printf("\nTree Info:\n");
+ printf(" TOTALCOUNT=%s\n", IupGetAttribute(tree, "COUNT"));
+ printf("Node Info:\n");
+ printf(" ID=%d\n", id);
+ printf(" TITLE=%s\n", IupGetAttribute(tree, "TITLE"));
+ printf(" DEPTH=%s\n", IupGetAttribute(tree, "DEPTH"));
+ sprintf(attr, "KIND%d", id);
+ kind = IupGetAttribute(tree, "KIND");
+ printf(" KIND=%s\n", kind);
+ if (strcmp(kind, "BRANCH")==0) branch = 1;
+ if (branch)
+ printf(" STATE=%s\n", IupGetAttribute(tree, "STATE"));
+ printf(" IMAGE=%s\n", IupGetAttribute(tree, "IMAGE"));
+ if (branch)
+ printf(" IMAGEBRANCHEXPANDED=%s\n", IupGetAttribute(tree, "IMAGEBRANCHEXPANDED"));
+ printf(" MARKED=%s\n", IupGetAttribute(tree, "MARKED"));
+ printf(" COLOR=%s\n", IupGetAttribute(tree, "COLOR"));
+ printf(" PARENT=%s\n", IupGetAttribute(tree, "PARENT"));
+ printf(" COUNT=%s\n", IupGetAttribute(tree, "CHILDCOUNT"));
+ printf(" USERDATA=%p\n", IupGetAttribute(tree, "USERDATA"));
+ return IUP_DEFAULT;
+}
+
+static int rightclick_cb(Ihandle* ih, int id)
+{
+ Ihandle *popup_menu;
+ char attr[50];
+
+ popup_menu = IupMenu(
+ IupItem ("Node Info","nodeinfo"),
+ IupItem ("Rename Node","renamenode"),
+ IupSeparator(),
+ IupItem ("Add Leaf","addleaf"),
+ IupItem ("Add Branch","addbranch"),
+ IupItem ("Insert Leaf","insertleaf"),
+ IupItem ("Insert Branch","insertbranch"),
+ IupItem ("Remove Node","removenode"),
+ IupItem ("Remove Children","removechild"),
+ IupSubmenu("Focus", IupMenu(
+ IupItem ("ROOT", "selectnode"),
+ IupItem ("LAST", "selectnode"),
+ IupItem ("PGUP", "selectnode"),
+ IupItem ("PGDN", "selectnode"),
+ IupItem ("NEXT", "selectnode"),
+ IupItem ("PREVIOUS", "selectnode"),
+ NULL)),
+ IupSubmenu("Mark", IupMenu(
+ IupItem ("INVERT", "selectnode"),
+ IupItem ("BLOCK", "selectnode"),
+ IupItem ("CLEARALL", "selectnode"),
+ IupItem ("MARKALL", "selectnode"),
+ IupItem ("INVERTALL", "selectnode"),
+ NULL)),
+ NULL);
+
+ IupSetFunction("nodeinfo", (Icallback) nodeinfo);
+ IupSetFunction("selectnode", (Icallback) selectnode);
+ IupSetFunction("addleaf", (Icallback) addleaf);
+ IupSetFunction("addbranch", (Icallback) addbranch);
+ IupSetFunction("insertleaf", (Icallback) insertleaf);
+ IupSetFunction("insertbranch", (Icallback) insertbranch);
+ IupSetFunction("removenode", (Icallback) removenode);
+ IupSetFunction("removechild", (Icallback) removechild);
+ IupSetFunction("renamenode", (Icallback) renamenode);
+
+// sprintf(attr, "%d", id);
+// IupSetAttribute(ih, "VALUE", attr);
+ IupPopup(popup_menu, IUP_MOUSEPOS, IUP_MOUSEPOS);
+
+ IupDestroy(popup_menu);
+
+ return IUP_DEFAULT;
+}
+
+static int active(Ihandle *ih)
+{
+ Ihandle* tree = IupGetHandle("tree");
+ if (IupGetInt(tree, "ACTIVE"))
+ IupSetAttribute(tree, "ACTIVE", "NO");
+ else
+ IupSetAttribute(tree, "ACTIVE", "YES");
+ return IUP_DEFAULT;
+}
+
+static int next(Ihandle *ih)
+{
+ Ihandle* tree = IupGetHandle("tree");
+ IupSetAttribute(tree, "VALUE", "NEXT");
+ //IupSetAttribute(tree, "TOPITEM", "8");
+ return IUP_DEFAULT;
+}
+
+static int prev(Ihandle *ih)
+{
+ Ihandle* tree = IupGetHandle("tree");
+ IupSetAttribute(tree, "VALUE", "PREVIOUS");
+ return IUP_DEFAULT;
+}
+
+/* Initializes IupTree and registers callbacks */
+static void init_tree(void)
+{
+ Ihandle* tree = IupTree();
+
+ IupSetCallback(tree, "EXECUTELEAF_CB", (Icallback) executeleaf_cb);
+ IupSetCallback(tree, "RENAMENODE_CB", (Icallback) renamenode_cb);
+ IupSetCallback(tree, "RENAME_CB", (Icallback) rename_cb);
+ IupSetCallback(tree, "BRANCHCLOSE_CB", (Icallback) branchclose_cb);
+ IupSetCallback(tree, "BRANCHOPEN_CB", (Icallback) branchopen_cb);
+ IupSetCallback(tree, "DRAGDROP_CB", (Icallback) dragdrop_cb);
+ IupSetCallback(tree, "RIGHTCLICK_CB", (Icallback) rightclick_cb);
+ IupSetCallback(tree, "K_ANY", (Icallback) k_any_cb);
+ IupSetCallback(tree, "SHOWRENAME_CB", (Icallback) showrename_cb);
+ IupSetCallback(tree, "SELECTION_CB", (Icallback) selection_cb);
+ IupSetCallback(tree, "MULTISELECTION_CB", (Icallback) multiselection_cb);
+ IupSetCallback(tree, "GETFOCUS_CB", (Icallback) getfocus_cb);
+ IupSetCallback(tree, "KILLFOCUS_CB", (Icallback) killfocus_cb);
+ //IupSetCallback(tree, "ENTERWINDOW_CB", (Icallback) enterwindow_cb);
+ //IupSetCallback(tree, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb);
+ //IupSetCallback(tree, "BUTTON_CB", (Icallback)button_cb);
+ //IupSetCallback(tree, "MOTION_CB", (Icallback)motion_cb);
+
+ IupSetCallback(tree, "HELP_CB", (Icallback)help_cb);
+
+// IupSetAttribute(tree, "FONT", "COURIER_NORMAL_14");
+// IupSetAttribute(tree, "FGCOLOR", "255 0 0");
+// IupSetAttribute(tree, "SPACING", "10");
+// IupSetAttribute(tree, "BGCOLOR", "255 255 255");
+
+ IupSetAttribute(tree, "MARKMODE", "MULTIPLE");
+ //IupSetAttribute(tree, "SHOWDRAGDROP", "YES");
+ IupSetAttribute(tree, "SHOWRENAME", "YES");
+ //IupSetAttribute(tree, "AUTODRAGDROP", "YES"); /* Gtk Only */
+
+ //IupSetAttribute(tree, "ADDEXPANDED", "NO");
+// IupSetAttribute(tree, "HIDELINES", "YES");
+// IupSetAttribute(tree, "HIDEBUTTONS", "YES");
+// IupSetAttribute(tree, "INDENTATION", "40");
+
+ IupSetHandle("tree", tree);
+}
+
+/* Initializes the dlg */
+static void init_dlg(void)
+{
+ Ihandle* butactv, *butnext, *butprev, *butmenu;
+ Ihandle* tree = IupGetHandle("tree");
+ Ihandle* box = IupHbox(tree, IupVbox(butactv = IupButton("Active", NULL),
+ butnext = IupButton("Next", NULL),
+ butprev = IupButton("Prev", NULL),
+ butmenu = IupButton("Menu", NULL),
+ NULL), NULL);
+ Ihandle* dlg = IupDialog(box) ;
+ IupSetAttribute(dlg, "TITLE", "IupTree");
+ IupSetAttribute(box, "MARGIN", "10x10");
+ IupSetAttribute(box, "GAP", "10");
+// IupSetAttribute(box, "BGCOLOR", "92 92 255");
+// IupSetAttribute(dlg, "BGCOLOR", "92 92 255");
+// IupSetAttribute(dlg, "BACKGROUND", "200 10 80");
+// IupSetAttribute(dlg, "BGCOLOR", "173 177 194"); // Motif BGCOLOR for documentation
+ IupSetCallback(butactv, "ACTION", active);
+ IupSetCallback(butnext, "ACTION", next);
+ IupSetCallback(butprev, "ACTION", prev);
+ IupSetCallback(butmenu, "ACTION", (Icallback)rightclick_cb);
+
+ IupSetHandle("dlg", dlg);
+}
+
+static void init_tree_nodes(void)
+{
+ Ihandle* tree = IupGetHandle("tree");
+
+#if 0
+ /* create from bottom to top */
+ /* the current node is the ROOT */
+ //IupSetAttribute(tree, "VALUE", "0");
+ IupSetAttribute(tree, "TITLE", "Figures"); /* title of the root, id=0 */
+ IupSetAttribute(tree, "ADDBRANCH", "3D"); /* 3D=1 */
+ IupSetAttribute(tree, "ADDBRANCH", "2D"); /* add to the root, so it will be before "3D", now 2D=1, 3D=2 */
+ IupSetAttribute(tree, "ADDBRANCH", "parallelogram"); /* id=1 */
+ IupSetAttribute(tree, "ADDLEAF1", "diamond");
+ IupSetAttribute(tree, "ADDLEAF1", "square");
+ IupSetAttribute(tree, "ADDBRANCH", "triangle");
+ IupSetAttribute(tree, "ADDLEAF1", "scalenus");
+ IupSetAttribute(tree, "ADDLEAF1", "isoceles");
+ IupSetAttribute(tree, "ADDLEAF1", "equilateral");
+ IupSetAttribute(tree, "ADDLEAF", "Other (ηγι)");
+#else
+ /* create from top to bottom */
+ IupSetAttribute(tree, "TITLE0", "Figures");
+ IupSetAttribute(tree, "ADDLEAF0", "Other"); /* new id=1 */
+ IupSetAttribute(tree, "ADDBRANCH1", "triangle"); /* new id=2 */
+ IupSetAttribute(tree, "ADDLEAF2", "equilateral"); /* ... */
+ IupSetAttribute(tree, "ADDLEAF3", "isoceles");
+ IupSetAttribute(tree, "ADDLEAF4", "scalenus");
+ IupSetAttribute(tree, "INSERTBRANCH2","parallelogram"); /* same depth as id=2, new id=6 */
+ IupSetAttribute(tree, "ADDLEAF6", "square");
+ IupSetAttribute(tree, "ADDLEAF7", "diamond");
+ IupSetAttribute(tree, "INSERTBRANCH6","2D"); /* new id=9 */
+ IupSetAttribute(tree, "INSERTBRANCH9","3D");
+#endif
+
+ IupSetAttribute(tree, "VALUE", "6");
+ IupSetAttribute(tree, "RASTERSIZE", NULL); /* remove the minimum size limitation */
+ IupSetAttribute(tree, "COLOR8", "92 92 255");
+ IupSetAttribute(tree, "TITLEFONT8", "Courier, 14");
+ IupSetAttributeHandle(tree, "IMAGE8", load_image_LogoTecgraf());
+ IupSetAttributeHandle(tree, "IMAGE7", load_image_TestImage());
+ IupSetAttribute(tree, "IMAGE6", IupGetAttribute(tree, "IMAGE8"));
+}
+
+void TreeTest(void)
+{
+ Ihandle* dlg;
+
+ init_tree(); /* Initializes IupTree */
+ init_dlg(); /* Initializes the dlg */
+ dlg = IupGetHandle("dlg"); /* Retrieves the dlg handle */
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER); /* Displays the dlg */
+ init_tree_nodes(); /* Initializes attributes, can be done here or anywhere */
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+ IupControlsOpen();
+
+ TreeTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/val.c b/iup/test/val.c
new file mode 100755
index 0000000..2f0b500
--- /dev/null
+++ b/iup/test/val.c
@@ -0,0 +1,199 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "iup.h"
+#include "iupkey.h"
+
+
+static Ihandle *lbl_h=NULL, *lbl_v=NULL;
+
+static void print_value(Ihandle *ih, double a)
+{
+ char *type = IupGetAttribute(ih, "TYPE");
+
+ switch(type[0])
+ {
+ case 'V':
+ IupSetfAttribute(lbl_v, "TITLE", "VALUE=%.2f", a);
+ break;
+ case 'H':
+ IupSetfAttribute(lbl_h, "TITLE", "VALUE=%.2f", a);
+ break;
+ }
+}
+
+static int mousemove(Ihandle *ih, double a)
+{
+ printf("mousemove %.2f\n", a);
+ print_value(ih, a);
+ return IUP_DEFAULT;
+}
+
+static int button_press(Ihandle *ih, double a)
+{
+ char *type = IupGetAttribute(ih, "TYPE");
+
+ printf("button_press %.2f\n", a);
+
+ switch(type[0])
+ {
+ case 'V':
+ IupSetAttribute(lbl_v, "FGCOLOR", "255 0 0");
+ break;
+
+ case 'H':
+ IupSetAttribute(lbl_h, "FGCOLOR", "255 0 0");
+ break;
+ }
+
+ print_value(ih, a);
+
+ return IUP_DEFAULT;
+}
+
+static int button_release(Ihandle *ih, double a)
+{
+ char *type = IupGetAttribute(ih, "TYPE");
+
+ printf("button_release %.2f\n", a);
+
+ switch(type[0])
+ {
+ case 'V':
+ IupSetAttribute(lbl_v, "FGCOLOR", "0 0 0");
+ break;
+
+ case 'H':
+ IupSetAttribute(lbl_h, "FGCOLOR", "0 0 0");
+ break;
+ }
+
+ print_value(ih, a);
+
+ return IUP_DEFAULT;
+}
+
+char *iupKeyCodeToName(int code);
+
+static int k_any(Ihandle *ih, int c)
+{
+ if (iup_isprint(c))
+ printf("K_ANY(%d = %s \'%c\')\n", c, iupKeyCodeToName(c), (char)c);
+ else
+ printf("K_ANY(%d = %s)\n", c, iupKeyCodeToName(c));
+ return IUP_CONTINUE;
+}
+
+static int getfocus_cb(Ihandle *ih)
+{
+ printf("GETFOCUS_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int help_cb(Ihandle* ih)
+{
+ printf("HELP_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int killfocus_cb(Ihandle *ih)
+{
+ printf("KILLFOCUS_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int leavewindow_cb(Ihandle *ih)
+{
+ printf("LEAVEWINDOW_CB()\n");
+ return IUP_DEFAULT;
+}
+
+static int enterwindow_cb(Ihandle *ih)
+{
+ printf("ENTERWINDOW_CB()\n");
+ return IUP_DEFAULT;
+}
+
+void ValTest(void)
+{
+ Ihandle *dlg, *val_h, *val_v;
+
+// IupOldValOpen();
+
+ lbl_v = IupLabel("VALUE=");
+ IupSetAttribute(lbl_v, "SIZE", "70x");
+
+ lbl_h = IupLabel("VALUE=");
+ IupSetAttribute(lbl_h, "SIZE", "70x");
+
+ val_v = IupVal("VERTICAL");
+ IupSetAttribute(val_v, "MAX", "10.0");
+ IupSetAttribute(val_v, "STEP", ".02");
+ IupSetAttribute(val_v, "PAGESTEP", ".2");
+ IupSetAttribute(val_v, "SHOWTICKS", "5");
+// IupSetAttribute(val_v, "TICKSPOS", "REVERSE");
+ IupSetCallback(val_v, "HELP_CB", (Icallback)help_cb);
+ IupSetCallback(val_v, "GETFOCUS_CB", (Icallback)getfocus_cb);
+ IupSetCallback(val_v, "KILLFOCUS_CB", (Icallback)killfocus_cb);
+ IupSetCallback(val_v, "ENTERWINDOW_CB", (Icallback)enterwindow_cb);
+ IupSetCallback(val_v, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb);
+ IupSetCallback(val_v, "K_ANY", (Icallback)k_any);
+// IupSetAttribute(val_v, "INVERTED", "NO");
+ IupSetAttribute(val_v, "EXPAND", "VERTICAL");
+
+ val_h = IupVal("HORIZONTAL");
+ IupSetAttribute(val_h, "MAX", "100.0");
+ IupSetAttribute(val_h, "SHOWTICKS", "10");
+ IupSetAttribute(val_h, "TICKSPOS", "BOTH"); /* Windows Only */
+// IupSetAttribute(val_h, "INVERTED", "YES");
+ IupSetAttribute(val_h, "EXPAND", "HORIZONTAL");
+
+ dlg = IupDialog
+ (
+ IupHbox
+ (
+ IupSetAttributes(IupHbox
+ (
+ val_v,
+ lbl_v,
+ NULL
+ ), "ALIGNMENT=ACENTER"),
+ IupSetAttributes(IupVbox
+ (
+ val_h,
+ lbl_h,
+ NULL
+ ), "ALIGNMENT=ACENTER"),
+ NULL
+ )
+ );
+
+ IupSetCallback(val_v, "BUTTON_PRESS_CB", (Icallback) button_press);
+ IupSetCallback(val_v, "BUTTON_RELEASE_CB", (Icallback) button_release);
+ IupSetCallback(val_v, "MOUSEMOVE_CB", (Icallback) mousemove);
+
+ IupSetCallback(val_h, "BUTTON_PRESS_CB", (Icallback) button_press);
+ IupSetCallback(val_h, "BUTTON_RELEASE_CB", (Icallback) button_release);
+ IupSetCallback(val_h, "MOUSEMOVE_CB", (Icallback) mousemove);
+
+ IupSetAttribute(dlg, "TITLE", "IupVal Test");
+// IupSetAttribute(IupGetChild(dlg, 0), "BGCOLOR", "50 50 255");
+// IupSetAttribute(IupGetChild(dlg, 0), "ACTIVE", "NO");
+ IupSetAttribute(dlg, "MARGIN", "10x10");
+ IupShowXY(dlg,IUP_CENTER,IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ ValTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/vbox.c b/iup/test/vbox.c
new file mode 100755
index 0000000..3040ea6
--- /dev/null
+++ b/iup/test/vbox.c
@@ -0,0 +1,122 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <iup.h>
+
+void VboxTest(void)
+{
+ /* IUP identifiers */
+ Ihandle *dlg;
+ Ihandle *fr1, *fr2, *fr3;
+ Ihandle *btn_11, *btn_12, *btn_13;
+ Ihandle *btn_21, *btn_22, *btn_23;
+ Ihandle *btn_31, *btn_32, *btn_33;
+ Ihandle *vbox_1, *vbox_2, *vbox_3;
+
+ /* Creates frame 1 */
+ fr1 = IupFrame
+ (
+ vbox_1 = IupVbox
+ (
+ IupFill(),
+ btn_11=IupButton("1", NULL),
+ btn_12=IupButton("2", NULL),
+ btn_13=IupButton("3", NULL),
+ IupFill(),
+ NULL
+ )
+ );
+
+ IupSetAttribute(fr1, "TITLE", "ALIGNMENT=ALEFT");
+ IupSetAttribute(btn_11, "SIZE", "20x10");
+ IupSetAttribute(btn_12, "SIZE", "30x20");
+ IupSetAttribute(btn_13, "SIZE", "40x30");
+ IupSetAttribute(vbox_1, "ALIGNMENT", "ALEFT");
+// IupSetAttribute(vbox_1, "MARGIN", "20x20");
+// IupSetAttribute(vbox_1, "GAP", "10");
+ IupSetAttribute(vbox_1, "HOMOGENEOUS", "YES");
+ IupSetAttribute(vbox_1, "EXPANDCHILDREN", "YES");
+// IupSetAttribute(btn_12, "VISIBLE", "NO");
+// IupSetAttribute(btn_12, "FLOATING", "YES");
+
+ /* Creates frame 2 */
+ fr2 = IupFrame
+ (
+ vbox_2 = IupVbox
+ (
+ IupFill(),
+ btn_21 = IupButton ("1", NULL),
+ btn_22 = IupButton ("2", NULL),
+ btn_23 = IupButton ("3", NULL),
+ IupFill(),
+ NULL
+ )
+ );
+
+ IupSetAttribute(fr2, "TITLE", "ALIGNMENT=ACENTER");
+ IupSetAttribute(btn_21, "SIZE", "20x30");
+ IupSetAttribute(btn_22, "SIZE", "30x30");
+ IupSetAttribute(btn_23, "SIZE", "40x30");
+ IupSetAttribute(vbox_2, "ALIGNMENT", "ACENTER");
+
+ /* Creates frame 3 */
+ fr3 = IupFrame
+ (
+ vbox_3 = IupVbox
+ (
+ IupFill (),
+ btn_31=IupButton ("1", NULL),
+ btn_32=IupButton ("2", NULL),
+ btn_33=IupButton ("3", NULL),
+ IupFill (),
+ NULL
+ )
+ );
+
+ IupSetAttribute(fr3, "TITLE", "ALIGNMENT=ARIGHT");
+ IupSetAttribute(btn_31, "SIZE", "20x30");
+ IupSetAttribute(btn_32, "SIZE", "30x30");
+ IupSetAttribute(btn_33, "SIZE", "40x30");
+ IupSetAttribute(vbox_3, "ALIGNMENT", "ARIGHT");
+
+ dlg = IupDialog
+ (
+ IupHbox
+ (
+ fr1,
+ IupFill (),
+ fr2,
+ IupFill (),
+ fr3,
+ IupFill (),
+ NULL
+ )
+ );
+
+ IupSetAttribute(dlg, "TITLE", "IupVbox Test"); /* Sets dlg's title */
+ IupSetAttribute(dlg, "MARGIN", "10x10");
+ IupSetAttribute(dlg, "GAP", "10");
+ IupSetAttribute(fr1, "MARGIN", "0x0"); /* avoid attribute propagation */
+ IupSetAttribute(fr2, "MARGIN", "0x0");
+ IupSetAttribute(fr3, "MARGIN", "0x0");
+ IupSetAttribute(fr1, "GAP", "0");
+ IupSetAttribute(fr2, "GAP", "0");
+ IupSetAttribute(fr3, "GAP", "0");
+
+ /* Shows dlg in the center of the screen */
+ IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ VboxTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif
diff --git a/iup/test/zbox.c b/iup/test/zbox.c
new file mode 100755
index 0000000..0451277
--- /dev/null
+++ b/iup/test/zbox.c
@@ -0,0 +1,98 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include "iup.h"
+
+static int list_cb (Ihandle *h, char *t, int o, int selected)
+{
+ if (selected == 1)
+ {
+ Ihandle* zbox = IupGetHandle ("zbox");
+ IupSetAttribute (zbox, "VALUE", t);
+ }
+
+ return IUP_DEFAULT;
+}
+
+void ZboxTest(void)
+{
+ Ihandle *dlg;
+ Ihandle *frm;
+ Ihandle *zbox;
+ Ihandle *text;
+ Ihandle *list;
+ Ihandle *lbl;
+ Ihandle *btn;
+ Ihandle *frame;
+
+ frame = IupFrame(IupSetAttributes(IupList(NULL), "DROPDOWN=YES, 1=Test, 2=XXX, VALUE=1"));
+ IupSetAttribute (frame, "TITLE", "List");
+
+ text = IupText("");
+
+ IupSetAttributes (text, "EXPAND = YES, VALUE = \"Enter your text here\"");
+
+ /* Creates a label */
+ lbl = IupLabel("This element is a label");
+
+ /* Creatas a button */
+ btn = IupButton ("This button does nothing", "");
+
+ /* Creates handles for manipulating the zbox VALUE */
+ IupSetHandle ("frame", frame);
+ IupSetHandle ("text", text);
+ IupSetHandle ("lbl", lbl);
+ IupSetHandle ("btn", btn);
+
+ /* Creates zbox with four elements */
+ zbox = IupZbox (frame, text, lbl, btn, NULL);
+
+ /* Associates handle "zbox" with zbox */
+ IupSetHandle ("zbox", zbox);
+
+ /* Sets zbox alignment */
+ IupSetAttribute (zbox, "ALIGNMENT", "ACENTER");
+ IupSetAttribute (zbox, "VALUE", "text");
+
+ /* Creates frame */
+ frm = IupFrame
+ (
+ IupHbox
+ (
+ list = IupList(NULL),
+ NULL
+ )
+ ),
+
+ /* Creates dialog */
+ dlg = IupDialog
+ (
+ IupVbox
+ (
+ frm,
+ zbox,
+ NULL
+ )
+ );
+
+ IupSetAttributes (list, "1 = frame, 2 = text, 3 = lbl, 4 = btn, VALUE=2");
+ IupSetAttribute (frm, "TITLE", "Select an element");
+ IupSetAttributes (dlg, "MARGIN=10x10, GAP=10, TITLE = \"IupZbox Example\"");
+ IupSetCallback (list, "ACTION", (Icallback) list_cb);
+
+ IupShowXY (dlg, IUP_CENTER, IUP_CENTER );
+}
+
+#ifndef BIG_TEST
+int main(int argc, char* argv[])
+{
+ IupOpen(&argc, &argv);
+
+ ZboxTest();
+
+ IupMainLoop();
+
+ IupClose();
+
+ return EXIT_SUCCESS;
+}
+#endif